From 1e64116ff9409753adec514f96994a8cc4ecc92e Mon Sep 17 00:00:00 2001 From: vjurenka Date: Mon, 9 Feb 2015 22:40:11 +0100 Subject: [PATCH] finished BWAPI4 conversion --- BWAPI4.exp | Bin 0 -> 242966 bytes bwapi4/BulletType.java | 6 + bwapi4/DamageType.java | 6 + bwapi4/Error.java | 6 + bwapi4/ExplosionType.java | 6 + bwapi4/Game.java | 6 + bwapi4/GameType.java | 6 + bwapi4/Mirror.java | 2 +- bwapi4/Player.java | 6 + bwapi4/PlayerType.java | 18 + bwapi4/Race.java | 36 + bwapi4/Region.java | 6 + bwapi4/TechType.java | 66 + bwapi4/UnitCommand.java | 111 +- bwapi4/UnitCommandType.java | 6 + bwapi4/UnitSizeType.java | 6 + bwapi4/UnitType.java | 438 ++ bwapi4/UpgradeType.java | 90 + bwapi4/WeaponType.java | 144 + bwmirror_v2_0.jar | Bin 0 -> 360796 bytes c4/impl.cpp | 3573 ++++++++++++----- compiled4/bwapi4/BulletType.class | Bin 1843 -> 1984 bytes compiled4/bwapi4/DamageType.class | Bin 1019 -> 1160 bytes compiled4/bwapi4/Error.class | Bin 1624 -> 1765 bytes compiled4/bwapi4/ExplosionType.class | Bin 1421 -> 1562 bytes compiled4/bwapi4/Game.class | Bin 26869 -> 27066 bytes compiled4/bwapi4/GameType.class | Bin 1201 -> 1342 bytes compiled4/bwapi4/Mirror.class | Bin 3240 -> 3236 bytes compiled4/bwapi4/Player.class | Bin 7381 -> 7607 bytes compiled4/bwapi4/PlayerType.class | Bin 1114 -> 1466 bytes compiled4/bwapi4/Race.class | Bin 953 -> 1645 bytes compiled4/bwapi4/Region.class | Bin 2385 -> 2623 bytes compiled4/bwapi4/TechType.class | Bin 1664 -> 2993 bytes compiled4/bwapi4/UnitCommand.class | Bin 2489 -> 4160 bytes compiled4/bwapi4/UnitCommandType.class | Bin 1863 -> 2004 bytes compiled4/bwapi4/UnitSizeType.class | Bin 997 -> 1138 bytes compiled4/bwapi4/UnitType.class | Bin 7050 -> 14688 bytes compiled4/bwapi4/UpgradeType.class | Bin 2308 -> 3894 bytes compiled4/bwapi4/WeaponType.class | Bin 3825 -> 6621 bytes concat_header4.h | 1560 +++++++ headers4/bwapi4_BulletType.h | 8 + headers4/bwapi4_DamageType.h | 8 + headers4/bwapi4_Error.h | 8 + headers4/bwapi4_ExplosionType.h | 8 + headers4/bwapi4_Game.h | 8 + headers4/bwapi4_GameType.h | 8 + headers4/bwapi4_Player.h | 8 + headers4/bwapi4_PlayerType.h | 24 + headers4/bwapi4_Race.h | 48 + headers4/bwapi4_Region.h | 8 + headers4/bwapi4_TechType.h | 88 + headers4/bwapi4_UnitCommand.h | 424 ++ headers4/bwapi4_UnitCommandType.h | 8 + headers4/bwapi4_UnitSizeType.h | 8 + headers4/bwapi4_UnitType.h | 584 +++ headers4/bwapi4_UpgradeType.h | 120 + headers4/bwapi4_WeaponType.h | 192 + manual-bwapi4/Mirror.java | 2 +- manual-bwapi4/UnitCommand.java | 109 +- .../generator/CJavaPipeline.class | Bin 9621 -> 9623 bytes .../generator/JavaContext.class | Bin 7633 -> 7762 bytes .../InvokeGenerator/generator/c/Bind.class | Bin 13074 -> 13551 bytes .../generator/ccalls/CallImplementer.class | Bin 16870 -> 17074 bytes .../InvokeGenerator/impl/CApiParser$1.class | Bin 855 -> 855 bytes .../InvokeGenerator/impl/CApiParser.class | Bin 12263 -> 12640 bytes .../InvokeGenerator/impl/Function.class | Bin 3131 -> 3143 bytes .../test/FunctionRegexTest.class | Bin 1438 -> 1462 bytes .../InvokeGenerator/test/api/TestBot1$1.class | Bin 3542 -> 3687 bytes .../InvokeGenerator/test/api/TestBot1.class | Bin 827 -> 833 bytes .../InvokeGenerator/util/PointerTest.class | Bin 1507 -> 1558 bytes src/generator/CJavaPipeline.java | 2 +- src/generator/JavaContext.java | 22 +- src/generator/c/Bind.java | 96 +- src/generator/ccalls/CallImplementer.java | 17 +- src/impl/CApiParser.java | 42 +- src/impl/Function.java | 1 + src/test/FunctionRegexTest.java | 8 +- src/test/api/TestBot1.java | 26 +- src/util/PointerTest.java | 4 +- 79 files changed, 6806 insertions(+), 1181 deletions(-) create mode 100644 BWAPI4.exp create mode 100644 bwmirror_v2_0.jar diff --git a/BWAPI4.exp b/BWAPI4.exp new file mode 100644 index 0000000000000000000000000000000000000000..d42d5d30148355a59f809c9d3b4bd7f2b0681d82 GIT binary patch literal 242966 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 a{S;B1M!>sn%3UXR0_Lg}uN90I{Qm*{8Qt{& literal 0 HcmV?d00001 diff --git a/bwapi4/BulletType.java b/bwapi4/BulletType.java index ce5d01c..0dc217d 100644 --- a/bwapi4/BulletType.java +++ b/bwapi4/BulletType.java @@ -9,6 +9,10 @@ import java.util.List; public class BulletType { + public String toString() { + return toString_native(pointer); + } + public static BulletType Melee; public static BulletType Fusion_Cutter_Hit; @@ -104,5 +108,7 @@ public class BulletType { private long pointer; + private native String toString_native(long pointer); + } diff --git a/bwapi4/DamageType.java b/bwapi4/DamageType.java index 58498c7..135d2ea 100644 --- a/bwapi4/DamageType.java +++ b/bwapi4/DamageType.java @@ -9,6 +9,10 @@ import java.util.List; public class DamageType { + public String toString() { + return toString_native(pointer); + } + public static DamageType Independent; public static DamageType Explosive; @@ -44,5 +48,7 @@ public class DamageType { private long pointer; + private native String toString_native(long pointer); + } diff --git a/bwapi4/Error.java b/bwapi4/Error.java index de2a934..29412a9 100644 --- a/bwapi4/Error.java +++ b/bwapi4/Error.java @@ -9,6 +9,10 @@ import java.util.List; public class Error { + public String toString() { + return toString_native(pointer); + } + public static Error Unit_Does_Not_Exist; public static Error Unit_Not_Visible; @@ -86,5 +90,7 @@ public class Error { private long pointer; + private native String toString_native(long pointer); + } diff --git a/bwapi4/ExplosionType.java b/bwapi4/ExplosionType.java index b7afe26..7fdca74 100644 --- a/bwapi4/ExplosionType.java +++ b/bwapi4/ExplosionType.java @@ -9,6 +9,10 @@ import java.util.List; public class ExplosionType { + public String toString() { + return toString_native(pointer); + } + public static ExplosionType None; public static ExplosionType Normal; @@ -80,5 +84,7 @@ public class ExplosionType { private long pointer; + private native String toString_native(long pointer); + } diff --git a/bwapi4/Game.java b/bwapi4/Game.java index 8a339d5..196543b 100644 --- a/bwapi4/Game.java +++ b/bwapi4/Game.java @@ -813,6 +813,10 @@ public class Game { return countdownTimer_native(pointer); } + public List getAllRegions() { + return getAllRegions_native(pointer); + } + public Region getRegionAt(int x, int y) { return getRegionAt_native(pointer, x, y); } @@ -1292,6 +1296,8 @@ public class Game { private native int countdownTimer_native(long pointer); + private native List getAllRegions_native(long pointer); + private native Region getRegionAt_native(long pointer, int x, int y); private native Region getRegionAt_native(long pointer, Position position); diff --git a/bwapi4/GameType.java b/bwapi4/GameType.java index 76e3eb9..5cc745d 100644 --- a/bwapi4/GameType.java +++ b/bwapi4/GameType.java @@ -9,6 +9,10 @@ import java.util.List; public class GameType { + public String toString() { + return toString_native(pointer); + } + public static GameType Melee; public static GameType Free_For_All; @@ -60,5 +64,7 @@ public class GameType { private long pointer; + private native String toString_native(long pointer); + } diff --git a/bwapi4/Mirror.java b/bwapi4/Mirror.java index 93d4543..59235f0 100644 --- a/bwapi4/Mirror.java +++ b/bwapi4/Mirror.java @@ -60,7 +60,7 @@ public class Mirror { static { String arch = System.getProperty("os.arch"); - String dllNames[] = {"BWAPI4.dll", "gmp-vc90-mt", "mpfr-vc90-mt"}; + String dllNames[] = {"BWAPI4", "gmp-vc90-mt", "mpfr-vc90-mt"}; if(!arch.equals("x86")){ throw new UnsupportedOperationException("BWMirror API supports only x86 architecture."); } diff --git a/bwapi4/Player.java b/bwapi4/Player.java index f72e97d..ba47b47 100644 --- a/bwapi4/Player.java +++ b/bwapi4/Player.java @@ -17,6 +17,10 @@ public class Player { return getName_native(pointer); } + public List getUnits() { + return getUnits_native(pointer); + } + public Race getRace() { return getRace_native(pointer); } @@ -274,6 +278,8 @@ public class Player { private native String getName_native(long pointer); + private native List getUnits_native(long pointer); + private native Race getRace_native(long pointer); private native PlayerType getType_native(long pointer); diff --git a/bwapi4/PlayerType.java b/bwapi4/PlayerType.java index 285c771..ef247f6 100644 --- a/bwapi4/PlayerType.java +++ b/bwapi4/PlayerType.java @@ -9,6 +9,18 @@ import java.util.List; public class PlayerType { + public String toString() { + return toString_native(pointer); + } + + public boolean isLobbyType() { + return isLobbyType_native(pointer); + } + + public boolean isGameType() { + return isGameType_native(pointer); + } + public static PlayerType None; public static PlayerType Computer; @@ -52,5 +64,11 @@ public class PlayerType { private long pointer; + private native String toString_native(long pointer); + + private native boolean isLobbyType_native(long pointer); + + private native boolean isGameType_native(long pointer); + } diff --git a/bwapi4/Race.java b/bwapi4/Race.java index 759e5d4..578a3ae 100644 --- a/bwapi4/Race.java +++ b/bwapi4/Race.java @@ -9,6 +9,30 @@ import java.util.List; public class Race { + public String toString() { + return toString_native(pointer); + } + + public UnitType getWorker() { + return getWorker_native(pointer); + } + + public UnitType getCenter() { + return getCenter_native(pointer); + } + + public UnitType getRefinery() { + return getRefinery_native(pointer); + } + + public UnitType getTransport() { + return getTransport_native(pointer); + } + + public UnitType getSupplyProvider() { + return getSupplyProvider_native(pointer); + } + public static Race Zerg; public static Race Terran; @@ -42,5 +66,17 @@ public class Race { private long pointer; + private native String toString_native(long pointer); + + private native UnitType getWorker_native(long pointer); + + private native UnitType getCenter_native(long pointer); + + private native UnitType getRefinery_native(long pointer); + + private native UnitType getTransport_native(long pointer); + + private native UnitType getSupplyProvider_native(long pointer); + } diff --git a/bwapi4/Region.java b/bwapi4/Region.java index bf086ae..ecda2f3 100644 --- a/bwapi4/Region.java +++ b/bwapi4/Region.java @@ -35,6 +35,10 @@ public class Region extends CenteredObject return isAccessible_native(pointer); } + public List getNeighbors() { + return getNeighbors_native(pointer); + } + public int getBoundsLeft() { return getBoundsLeft_native(pointer); } @@ -96,6 +100,8 @@ public class Region extends CenteredObject private native boolean isAccessible_native(long pointer); + private native List getNeighbors_native(long pointer); + private native int getBoundsLeft_native(long pointer); private native int getBoundsTop_native(long pointer); diff --git a/bwapi4/TechType.java b/bwapi4/TechType.java index 7272b99..8cff9e5 100644 --- a/bwapi4/TechType.java +++ b/bwapi4/TechType.java @@ -9,6 +9,50 @@ import java.util.List; public class TechType { + public String toString() { + return toString_native(pointer); + } + + public Race getRace() { + return getRace_native(pointer); + } + + public int mineralPrice() { + return mineralPrice_native(pointer); + } + + public int gasPrice() { + return gasPrice_native(pointer); + } + + public int researchTime() { + return researchTime_native(pointer); + } + + public int energyCost() { + return energyCost_native(pointer); + } + + public UnitType whatResearches() { + return whatResearches_native(pointer); + } + + public WeaponType getWeapon() { + return getWeapon_native(pointer); + } + + public boolean targetsUnit() { + return targetsUnit_native(pointer); + } + + public boolean targetsPosition() { + return targetsPosition_native(pointer); + } + + public Order getOrder() { + return getOrder_native(pointer); + } + public static TechType Stim_Packs; public static TechType Lockdown; @@ -102,5 +146,27 @@ public class TechType { private long pointer; + private native String toString_native(long pointer); + + private native Race getRace_native(long pointer); + + private native int mineralPrice_native(long pointer); + + private native int gasPrice_native(long pointer); + + private native int researchTime_native(long pointer); + + private native int energyCost_native(long pointer); + + private native UnitType whatResearches_native(long pointer); + + private native WeaponType getWeapon_native(long pointer); + + private native boolean targetsUnit_native(long pointer); + + private native boolean targetsPosition_native(long pointer); + + private native Order getOrder_native(long pointer); + } diff --git a/bwapi4/UnitCommand.java b/bwapi4/UnitCommand.java index bfbd96b..00b3d2f 100644 --- a/bwapi4/UnitCommand.java +++ b/bwapi4/UnitCommand.java @@ -1,11 +1,114 @@ package bwapi4; -import bwapi.UnitCommandType; - -import java.lang.Override; public class UnitCommand { + public static native UnitCommand attack(Unit unit, PositionOrUnit target); + + public static native UnitCommand attack(Unit unit, PositionOrUnit target, boolean shiftQueueCommand); + + public static native UnitCommand build(Unit unit, TilePosition target, UnitType type); + + public static native UnitCommand buildAddon(Unit unit, UnitType type); + + public static native UnitCommand train(Unit unit, UnitType type); + + public static native UnitCommand morph(Unit unit, UnitType type); + + public static native UnitCommand research(Unit unit, TechType tech); + + public static native UnitCommand upgrade(Unit unit, UpgradeType upgrade); + + public static native UnitCommand setRallyPoint(Unit unit, PositionOrUnit target); + + public static native UnitCommand move(Unit unit, Position target); + + public static native UnitCommand move(Unit unit, Position target, boolean shiftQueueCommand); + + public static native UnitCommand patrol(Unit unit, Position target); + + public static native UnitCommand patrol(Unit unit, Position target, boolean shiftQueueCommand); + + public static native UnitCommand holdPosition(Unit unit); + + public static native UnitCommand holdPosition(Unit unit, boolean shiftQueueCommand); + + public static native UnitCommand stop(Unit unit); + + public static native UnitCommand stop(Unit unit, boolean shiftQueueCommand); + + public static native UnitCommand follow(Unit unit, Unit target); + + public static native UnitCommand follow(Unit unit, Unit target, boolean shiftQueueCommand); + + public static native UnitCommand gather(Unit unit, Unit target); + + public static native UnitCommand gather(Unit unit, Unit target, boolean shiftQueueCommand); + + public static native UnitCommand returnCargo(Unit unit); + + public static native UnitCommand returnCargo(Unit unit, boolean shiftQueueCommand); + + public static native UnitCommand repair(Unit unit, Unit target); + + public static native UnitCommand repair(Unit unit, Unit target, boolean shiftQueueCommand); + + public static native UnitCommand burrow(Unit unit); + + public static native UnitCommand unburrow(Unit unit); + + public static native UnitCommand cloak(Unit unit); + + public static native UnitCommand decloak(Unit unit); + + public static native UnitCommand siege(Unit unit); + + public static native UnitCommand unsiege(Unit unit); + + public static native UnitCommand lift(Unit unit); + + public static native UnitCommand land(Unit unit, TilePosition target); + + public static native UnitCommand load(Unit unit, Unit target); + + public static native UnitCommand load(Unit unit, Unit target, boolean shiftQueueCommand); + + public static native UnitCommand unload(Unit unit, Unit target); + + public static native UnitCommand unloadAll(Unit unit); + + public static native UnitCommand unloadAll(Unit unit, boolean shiftQueueCommand); + + public static native UnitCommand unloadAll(Unit unit, Position target); + + public static native UnitCommand unloadAll(Unit unit, Position target, boolean shiftQueueCommand); + + public static native UnitCommand rightClick(Unit unit, PositionOrUnit target); + + public static native UnitCommand rightClick(Unit unit, PositionOrUnit target, boolean shiftQueueCommand); + + public static native UnitCommand haltConstruction(Unit unit); + + public static native UnitCommand cancelConstruction(Unit unit); + + public static native UnitCommand cancelAddon(Unit unit); + + public static native UnitCommand cancelTrain(Unit unit); + + public static native UnitCommand cancelTrain(Unit unit, int slot); + + public static native UnitCommand cancelMorph(Unit unit); + + public static native UnitCommand cancelResearch(Unit unit); + + public static native UnitCommand cancelUpgrade(Unit unit); + + public static native UnitCommand useTech(Unit unit, TechType tech); + + public static native UnitCommand useTech(Unit unit, TechType tech, PositionOrUnit target); + + public static native UnitCommand placeCOP(Unit unit, TilePosition target); + private Unit unit; private UnitCommandType unitCommandType; @@ -16,7 +119,7 @@ public class UnitCommand { private int extra; - public UnitCommand(Unit unit, UnitCommandType unitCommandType, Unit target, int x, int y, int extra) { + private UnitCommand(Unit unit, UnitCommandType unitCommandType, Unit target, int x, int y, int extra) { this.unit = unit; this.unitCommandType = unitCommandType; this.target = target; diff --git a/bwapi4/UnitCommandType.java b/bwapi4/UnitCommandType.java index 0ccb3fb..e407700 100644 --- a/bwapi4/UnitCommandType.java +++ b/bwapi4/UnitCommandType.java @@ -9,6 +9,10 @@ import java.util.List; public class UnitCommandType { + public String toString() { + return toString_native(pointer); + } + public static UnitCommandType Attack_Move; public static UnitCommandType Attack_Unit; @@ -122,5 +126,7 @@ public class UnitCommandType { private long pointer; + private native String toString_native(long pointer); + } diff --git a/bwapi4/UnitSizeType.java b/bwapi4/UnitSizeType.java index 740aee7..7633b99 100644 --- a/bwapi4/UnitSizeType.java +++ b/bwapi4/UnitSizeType.java @@ -9,6 +9,10 @@ import java.util.List; public class UnitSizeType { + public String toString() { + return toString_native(pointer); + } + public static UnitSizeType Independent; public static UnitSizeType Small; @@ -42,5 +46,7 @@ public class UnitSizeType { private long pointer; + private native String toString_native(long pointer); + } diff --git a/bwapi4/UnitType.java b/bwapi4/UnitType.java index 6e8cfc6..ae0acc8 100644 --- a/bwapi4/UnitType.java +++ b/bwapi4/UnitType.java @@ -9,6 +9,298 @@ import java.util.List; public class UnitType { + public String toString() { + return toString_native(pointer); + } + + public Race getRace() { + return getRace_native(pointer); + } + + public TechType requiredTech() { + return requiredTech_native(pointer); + } + + public TechType cloakingTech() { + return cloakingTech_native(pointer); + } + + public UpgradeType armorUpgrade() { + return armorUpgrade_native(pointer); + } + + public int maxHitPoints() { + return maxHitPoints_native(pointer); + } + + public int maxShields() { + return maxShields_native(pointer); + } + + public int maxEnergy() { + return maxEnergy_native(pointer); + } + + public int armor() { + return armor_native(pointer); + } + + public int mineralPrice() { + return mineralPrice_native(pointer); + } + + public int gasPrice() { + return gasPrice_native(pointer); + } + + public int buildTime() { + return buildTime_native(pointer); + } + + public int supplyRequired() { + return supplyRequired_native(pointer); + } + + public int supplyProvided() { + return supplyProvided_native(pointer); + } + + public int spaceRequired() { + return spaceRequired_native(pointer); + } + + public int spaceProvided() { + return spaceProvided_native(pointer); + } + + public int buildScore() { + return buildScore_native(pointer); + } + + public int destroyScore() { + return destroyScore_native(pointer); + } + + public UnitSizeType size() { + return size_native(pointer); + } + + public int tileWidth() { + return tileWidth_native(pointer); + } + + public int tileHeight() { + return tileHeight_native(pointer); + } + + public TilePosition tileSize() { + return tileSize_native(pointer); + } + + public int dimensionLeft() { + return dimensionLeft_native(pointer); + } + + public int dimensionUp() { + return dimensionUp_native(pointer); + } + + public int dimensionRight() { + return dimensionRight_native(pointer); + } + + public int dimensionDown() { + return dimensionDown_native(pointer); + } + + public int width() { + return width_native(pointer); + } + + public int height() { + return height_native(pointer); + } + + public int seekRange() { + return seekRange_native(pointer); + } + + public int sightRange() { + return sightRange_native(pointer); + } + + public WeaponType groundWeapon() { + return groundWeapon_native(pointer); + } + + public int maxGroundHits() { + return maxGroundHits_native(pointer); + } + + public WeaponType airWeapon() { + return airWeapon_native(pointer); + } + + public int maxAirHits() { + return maxAirHits_native(pointer); + } + + public double topSpeed() { + return topSpeed_native(pointer); + } + + public int acceleration() { + return acceleration_native(pointer); + } + + public int haltDistance() { + return haltDistance_native(pointer); + } + + public int turnRadius() { + return turnRadius_native(pointer); + } + + public boolean canProduce() { + return canProduce_native(pointer); + } + + public boolean canAttack() { + return canAttack_native(pointer); + } + + public boolean canMove() { + return canMove_native(pointer); + } + + public boolean isFlyer() { + return isFlyer_native(pointer); + } + + public boolean regeneratesHP() { + return regeneratesHP_native(pointer); + } + + public boolean isSpellcaster() { + return isSpellcaster_native(pointer); + } + + public boolean hasPermanentCloak() { + return hasPermanentCloak_native(pointer); + } + + public boolean isInvincible() { + return isInvincible_native(pointer); + } + + public boolean isOrganic() { + return isOrganic_native(pointer); + } + + public boolean isMechanical() { + return isMechanical_native(pointer); + } + + public boolean isRobotic() { + return isRobotic_native(pointer); + } + + public boolean isDetector() { + return isDetector_native(pointer); + } + + public boolean isResourceContainer() { + return isResourceContainer_native(pointer); + } + + public boolean isResourceDepot() { + return isResourceDepot_native(pointer); + } + + public boolean isRefinery() { + return isRefinery_native(pointer); + } + + public boolean isWorker() { + return isWorker_native(pointer); + } + + public boolean requiresPsi() { + return requiresPsi_native(pointer); + } + + public boolean requiresCreep() { + return requiresCreep_native(pointer); + } + + public boolean isTwoUnitsInOneEgg() { + return isTwoUnitsInOneEgg_native(pointer); + } + + public boolean isBurrowable() { + return isBurrowable_native(pointer); + } + + public boolean isCloakable() { + return isCloakable_native(pointer); + } + + public boolean isBuilding() { + return isBuilding_native(pointer); + } + + public boolean isAddon() { + return isAddon_native(pointer); + } + + public boolean isFlyingBuilding() { + return isFlyingBuilding_native(pointer); + } + + public boolean isNeutral() { + return isNeutral_native(pointer); + } + + public boolean isHero() { + return isHero_native(pointer); + } + + public boolean isPowerup() { + return isPowerup_native(pointer); + } + + public boolean isBeacon() { + return isBeacon_native(pointer); + } + + public boolean isFlagBeacon() { + return isFlagBeacon_native(pointer); + } + + public boolean isSpecialBuilding() { + return isSpecialBuilding_native(pointer); + } + + public boolean isSpell() { + return isSpell_native(pointer); + } + + public boolean producesLarva() { + return producesLarva_native(pointer); + } + + public boolean isMineralField() { + return isMineralField_native(pointer); + } + + public boolean isCritter() { + return isCritter_native(pointer); + } + + public boolean canBuildAddon() { + return canBuildAddon_native(pointer); + } + public static UnitType Terran_Marine; public static UnitType Terran_Ghost; @@ -452,5 +744,151 @@ public class UnitType { private long pointer; + private native String toString_native(long pointer); + + private native Race getRace_native(long pointer); + + private native TechType requiredTech_native(long pointer); + + private native TechType cloakingTech_native(long pointer); + + private native UpgradeType armorUpgrade_native(long pointer); + + private native int maxHitPoints_native(long pointer); + + private native int maxShields_native(long pointer); + + private native int maxEnergy_native(long pointer); + + private native int armor_native(long pointer); + + private native int mineralPrice_native(long pointer); + + private native int gasPrice_native(long pointer); + + private native int buildTime_native(long pointer); + + private native int supplyRequired_native(long pointer); + + private native int supplyProvided_native(long pointer); + + private native int spaceRequired_native(long pointer); + + private native int spaceProvided_native(long pointer); + + private native int buildScore_native(long pointer); + + private native int destroyScore_native(long pointer); + + private native UnitSizeType size_native(long pointer); + + private native int tileWidth_native(long pointer); + + private native int tileHeight_native(long pointer); + + private native TilePosition tileSize_native(long pointer); + + private native int dimensionLeft_native(long pointer); + + private native int dimensionUp_native(long pointer); + + private native int dimensionRight_native(long pointer); + + private native int dimensionDown_native(long pointer); + + private native int width_native(long pointer); + + private native int height_native(long pointer); + + private native int seekRange_native(long pointer); + + private native int sightRange_native(long pointer); + + private native WeaponType groundWeapon_native(long pointer); + + private native int maxGroundHits_native(long pointer); + + private native WeaponType airWeapon_native(long pointer); + + private native int maxAirHits_native(long pointer); + + private native double topSpeed_native(long pointer); + + private native int acceleration_native(long pointer); + + private native int haltDistance_native(long pointer); + + private native int turnRadius_native(long pointer); + + private native boolean canProduce_native(long pointer); + + private native boolean canAttack_native(long pointer); + + private native boolean canMove_native(long pointer); + + private native boolean isFlyer_native(long pointer); + + private native boolean regeneratesHP_native(long pointer); + + private native boolean isSpellcaster_native(long pointer); + + private native boolean hasPermanentCloak_native(long pointer); + + private native boolean isInvincible_native(long pointer); + + private native boolean isOrganic_native(long pointer); + + private native boolean isMechanical_native(long pointer); + + private native boolean isRobotic_native(long pointer); + + private native boolean isDetector_native(long pointer); + + private native boolean isResourceContainer_native(long pointer); + + private native boolean isResourceDepot_native(long pointer); + + private native boolean isRefinery_native(long pointer); + + private native boolean isWorker_native(long pointer); + + private native boolean requiresPsi_native(long pointer); + + private native boolean requiresCreep_native(long pointer); + + private native boolean isTwoUnitsInOneEgg_native(long pointer); + + private native boolean isBurrowable_native(long pointer); + + private native boolean isCloakable_native(long pointer); + + private native boolean isBuilding_native(long pointer); + + private native boolean isAddon_native(long pointer); + + private native boolean isFlyingBuilding_native(long pointer); + + private native boolean isNeutral_native(long pointer); + + private native boolean isHero_native(long pointer); + + private native boolean isPowerup_native(long pointer); + + private native boolean isBeacon_native(long pointer); + + private native boolean isFlagBeacon_native(long pointer); + + private native boolean isSpecialBuilding_native(long pointer); + + private native boolean isSpell_native(long pointer); + + private native boolean producesLarva_native(long pointer); + + private native boolean isMineralField_native(long pointer); + + private native boolean isCritter_native(long pointer); + + private native boolean canBuildAddon_native(long pointer); + } diff --git a/bwapi4/UpgradeType.java b/bwapi4/UpgradeType.java index 02b0eff..0d1e163 100644 --- a/bwapi4/UpgradeType.java +++ b/bwapi4/UpgradeType.java @@ -9,6 +9,66 @@ import java.util.List; public class UpgradeType { + public String toString() { + return toString_native(pointer); + } + + public Race getRace() { + return getRace_native(pointer); + } + + public int mineralPrice() { + return mineralPrice_native(pointer); + } + + public int mineralPrice(int level) { + return mineralPrice_native(pointer, level); + } + + public int mineralPriceFactor() { + return mineralPriceFactor_native(pointer); + } + + public int gasPrice() { + return gasPrice_native(pointer); + } + + public int gasPrice(int level) { + return gasPrice_native(pointer, level); + } + + public int gasPriceFactor() { + return gasPriceFactor_native(pointer); + } + + public int upgradeTime() { + return upgradeTime_native(pointer); + } + + public int upgradeTime(int level) { + return upgradeTime_native(pointer, level); + } + + public int upgradeTimeFactor() { + return upgradeTimeFactor_native(pointer); + } + + public int maxRepeats() { + return maxRepeats_native(pointer); + } + + public UnitType whatUpgrades() { + return whatUpgrades_native(pointer); + } + + public UnitType whatsRequired() { + return whatsRequired_native(pointer); + } + + public UnitType whatsRequired(int level) { + return whatsRequired_native(pointer, level); + } + public static UpgradeType Terran_Infantry_Armor; public static UpgradeType Terran_Vehicle_Plating; @@ -136,5 +196,35 @@ public class UpgradeType { private long pointer; + private native String toString_native(long pointer); + + private native Race getRace_native(long pointer); + + private native int mineralPrice_native(long pointer); + + private native int mineralPrice_native(long pointer, int level); + + private native int mineralPriceFactor_native(long pointer); + + private native int gasPrice_native(long pointer); + + private native int gasPrice_native(long pointer, int level); + + private native int gasPriceFactor_native(long pointer); + + private native int upgradeTime_native(long pointer); + + private native int upgradeTime_native(long pointer, int level); + + private native int upgradeTimeFactor_native(long pointer); + + private native int maxRepeats_native(long pointer); + + private native UnitType whatUpgrades_native(long pointer); + + private native UnitType whatsRequired_native(long pointer); + + private native UnitType whatsRequired_native(long pointer, int level); + } diff --git a/bwapi4/WeaponType.java b/bwapi4/WeaponType.java index 51348ae..edc5079 100644 --- a/bwapi4/WeaponType.java +++ b/bwapi4/WeaponType.java @@ -9,6 +9,102 @@ import java.util.List; public class WeaponType { + public String toString() { + return toString_native(pointer); + } + + public TechType getTech() { + return getTech_native(pointer); + } + + public UnitType whatUses() { + return whatUses_native(pointer); + } + + public int damageAmount() { + return damageAmount_native(pointer); + } + + public int damageBonus() { + return damageBonus_native(pointer); + } + + public int damageCooldown() { + return damageCooldown_native(pointer); + } + + public int damageFactor() { + return damageFactor_native(pointer); + } + + public UpgradeType upgradeType() { + return upgradeType_native(pointer); + } + + public DamageType damageType() { + return damageType_native(pointer); + } + + public ExplosionType explosionType() { + return explosionType_native(pointer); + } + + public int minRange() { + return minRange_native(pointer); + } + + public int maxRange() { + return maxRange_native(pointer); + } + + public int innerSplashRadius() { + return innerSplashRadius_native(pointer); + } + + public int medianSplashRadius() { + return medianSplashRadius_native(pointer); + } + + public int outerSplashRadius() { + return outerSplashRadius_native(pointer); + } + + public boolean targetsAir() { + return targetsAir_native(pointer); + } + + public boolean targetsGround() { + return targetsGround_native(pointer); + } + + public boolean targetsMechanical() { + return targetsMechanical_native(pointer); + } + + public boolean targetsOrganic() { + return targetsOrganic_native(pointer); + } + + public boolean targetsNonBuilding() { + return targetsNonBuilding_native(pointer); + } + + public boolean targetsNonRobotic() { + return targetsNonRobotic_native(pointer); + } + + public boolean targetsTerrain() { + return targetsTerrain_native(pointer); + } + + public boolean targetsOrgOrMech() { + return targetsOrgOrMech_native(pointer); + } + + public boolean targetsOwn() { + return targetsOwn_native(pointer); + } + public static WeaponType Gauss_Rifle; public static WeaponType Gauss_Rifle_Jim_Raynor; @@ -234,5 +330,53 @@ public class WeaponType { private long pointer; + private native String toString_native(long pointer); + + private native TechType getTech_native(long pointer); + + private native UnitType whatUses_native(long pointer); + + private native int damageAmount_native(long pointer); + + private native int damageBonus_native(long pointer); + + private native int damageCooldown_native(long pointer); + + private native int damageFactor_native(long pointer); + + private native UpgradeType upgradeType_native(long pointer); + + private native DamageType damageType_native(long pointer); + + private native ExplosionType explosionType_native(long pointer); + + private native int minRange_native(long pointer); + + private native int maxRange_native(long pointer); + + private native int innerSplashRadius_native(long pointer); + + private native int medianSplashRadius_native(long pointer); + + private native int outerSplashRadius_native(long pointer); + + private native boolean targetsAir_native(long pointer); + + private native boolean targetsGround_native(long pointer); + + private native boolean targetsMechanical_native(long pointer); + + private native boolean targetsOrganic_native(long pointer); + + private native boolean targetsNonBuilding_native(long pointer); + + private native boolean targetsNonRobotic_native(long pointer); + + private native boolean targetsTerrain_native(long pointer); + + private native boolean targetsOrgOrMech_native(long pointer); + + private native boolean targetsOwn_native(long pointer); + } diff --git a/bwmirror_v2_0.jar b/bwmirror_v2_0.jar new file mode 100644 index 0000000000000000000000000000000000000000..a3702664b4992ca5c5cee00a6e4b89ca051f2873 GIT binary patch literal 360796 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%0Dq6tz=swG7RA;t6D=2FFMg$pJ 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

W15EKh}?COgKMUWmn6`} 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 U-on921OL{6u}IenXvJ{<2m4*D*Z=?k literal 0 HcmV?d00001 diff --git a/c4/impl.cpp b/c4/impl.cpp index 76f0df8..cd5a67f 100644 --- a/c4/impl.cpp +++ b/c4/impl.cpp @@ -1,4 +1,4 @@ -#include "../concat_header.h" +#include "../concat_header4.h" #include #include #include @@ -85,12 +85,12 @@ UnitCommand convertUnitCommand(JNIEnv * env, jobject obj){ jclass clz = FindCach Unit unit = (Unit)env->GetLongField(unitObj, FindCachedField(env, env->GetObjectClass(unitObj), "pointer", "J")); jobject targetObj = env->CallObjectMethod(obj, FindCachedMethod(env, clz, "getTarget", "()Lbwapi4/Unit;")); Unit target = (Unit)env->GetLongField(targetObj, FindCachedField(env, env->GetObjectClass(targetObj), "pointer", "J")); - jobject typeObj = env->CallObjectMethod(obj, FindCachedMethod(env, clz, "getType", "()Lbwapi4/UnitCommandType;")); - UnitCommandType type = (UnitCommandType)env->GetIntField(typeObj, FindCachedField(env, env->GetObjectClass(typeObj), "value", "I")); + jobject typeObj = env->CallObjectMethod(obj, FindCachedMethod(env, clz, "getUnitCommandType", "()Lbwapi4/UnitCommandType;")); + UnitCommandType type = *(UnitCommandType*)env->GetLongField(typeObj, FindCachedField(env, env->GetObjectClass(typeObj), "pointer", "J")); int extra = (int)env->GetIntField(obj, FindCachedField(env, clz, "extra", "I")); - jobject posObj = env->CallObjectMethod(obj, FindCachedMethod(env, clz, "getPosition", "()Lbwapi4/Position;")); - Position position((int)env->GetIntField(posObj, FindCachedField(env, env->GetObjectClass(posObj), "x", "I")), (int)env->GetIntField(posObj, FindCachedField(env, env->GetObjectClass(posObj), "y", "I"))); - return UnitCommand(unit, UnitCommandType(type), target, position.x, position.y, extra); + int x = (int)env->GetIntField(obj, FindCachedField(env, clz, "x", "I")); + int y = (int)env->GetIntField(obj, FindCachedField(env, clz, "y", "I")); + return UnitCommand(unit, type, target, x, y, extra); } @@ -135,7 +135,7 @@ return env->CallStaticObjectMethod(retcls, mid, resptr); JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Bullet x_bullet = (Bullet)pointer; Position cresult = x_bullet->getPosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -162,7 +162,7 @@ return env->CallStaticObjectMethod(retcls, mid, resptr); JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getTargetPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Bullet x_bullet = (Bullet)pointer; Position cresult = x_bullet->getTargetPosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -180,6 +180,10 @@ Bullet x_bullet = (Bullet)pointer; Player player = (Player)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); return x_bullet->isVisible(player); } +JNIEXPORT jstring JNICALL Java_bwapi4_BulletType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +BulletType* x_bulletType = (BulletType*)pointer; +return env->NewStringUTF(x_bulletType->toString().c_str()); +} JNIEXPORT jboolean JNICALL Java_bwapi4_Client_isConnected_1native(JNIEnv * env, jobject obj, jlong pointer){ Client* x_client = (Client*)pointer; return x_client->isConnected(); @@ -196,10 +200,18 @@ JNIEXPORT void JNICALL Java_bwapi4_Client_update_1native(JNIEnv * env, jobject o Client* x_client = (Client*)pointer; x_client->update(); } +JNIEXPORT jstring JNICALL Java_bwapi4_DamageType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +DamageType* x_damageType = (DamageType*)pointer; +return env->NewStringUTF(x_damageType->toString().c_str()); +} +JNIEXPORT jstring JNICALL Java_bwapi4_Error_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +Error* x_error = (Error*)pointer; +return env->NewStringUTF(x_error->toString().c_str()); +} JNIEXPORT jobject JNICALL Java_bwapi4_Event_getPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Event* x_evt = (Event*)pointer; Position cresult = x_evt->getPosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -226,6 +238,10 @@ JNIEXPORT jboolean JNICALL Java_bwapi4_Event_isWinner_1native(JNIEnv * env, jobj Event* x_evt = (Event*)pointer; return x_evt->isWinner(); } +JNIEXPORT jstring JNICALL Java_bwapi4_ExplosionType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +ExplosionType* x_explosionType = (ExplosionType*)pointer; +return env->NewStringUTF(x_explosionType->toString().c_str()); +} JNIEXPORT jint JNICALL Java_bwapi4_Force_getID_1native(JNIEnv * env, jobject obj, jlong pointer){ Force x_force = (Force)pointer; return x_force->getID(); @@ -479,7 +495,7 @@ return x_game->getAverageFPS(); JNIEXPORT jobject JNICALL Java_bwapi4_Game_getMousePosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Game* x_game = (Game*)pointer; Position cresult = x_game->getMousePosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -497,7 +513,7 @@ return x_game->getKeyState(key); JNIEXPORT jobject JNICALL Java_bwapi4_Game_getScreenPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Game* x_game = (Game*)pointer; Position cresult = x_game->getScreenPosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -541,8 +557,8 @@ return x_game->setLastError(); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setLastError_1native__JLbwapi4_Error_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_e){ Game* x_game = (Game*)pointer; -Error e = (Error)env->GetLongField(p_e, FindCachedField(env, env->GetObjectClass(p_e), "pointer", "J")); -return x_game->setLastError(e); +Error* e = (Error*)env->GetLongField(p_e, FindCachedField(env, env->GetObjectClass(p_e), "pointer", "J")); +return x_game->setLastError(*e); } JNIEXPORT jint JNICALL Java_bwapi4_Game_mapWidth_1native(JNIEnv * env, jobject obj, jlong pointer){ Game* x_game = (Game*)pointer; @@ -637,8 +653,8 @@ return x_game->hasPowerPrecise(x, y); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JIILbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jobject p_unitType){ Game* x_game = (Game*)pointer; -UnitType unitType = (UnitType)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); -return x_game->hasPowerPrecise(x, y, unitType); +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPowerPrecise(x, y, *unitType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position){ Game* x_game = (Game*)pointer; @@ -648,8 +664,8 @@ return x_game->hasPowerPrecise(position); JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JLbwapi4_Position_2Lbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jobject p_unitType){ Game* x_game = (Game*)pointer; Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); -UnitType unitType = (UnitType)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); -return x_game->hasPowerPrecise(position, unitType); +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPowerPrecise(position, *unitType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY){ Game* x_game = (Game*)pointer; @@ -657,8 +673,8 @@ return x_game->hasPower(tileX, tileY); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIILbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY, jobject p_unitType){ Game* x_game = (Game*)pointer; -UnitType unitType = (UnitType)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); -return x_game->hasPower(tileX, tileY, unitType); +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPower(tileX, tileY, *unitType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position){ Game* x_game = (Game*)pointer; @@ -668,8 +684,8 @@ return x_game->hasPower(position); JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jobject p_unitType){ Game* x_game = (Game*)pointer; TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); -UnitType unitType = (UnitType)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); -return x_game->hasPower(position, unitType); +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPower(position, *unitType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIIII(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY, jint tileWidth, jint tileHeight){ Game* x_game = (Game*)pointer; @@ -677,8 +693,8 @@ return x_game->hasPower(tileX, tileY, tileWidth, tileHeight); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIIIILbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY, jint tileWidth, jint tileHeight, jobject p_unitType){ Game* x_game = (Game*)pointer; -UnitType unitType = (UnitType)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); -return x_game->hasPower(tileX, tileY, tileWidth, tileHeight, unitType); +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPower(tileX, tileY, tileWidth, tileHeight, *unitType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2II(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jint tileWidth, jint tileHeight){ Game* x_game = (Game*)pointer; @@ -688,73 +704,73 @@ return x_game->hasPower(position, tileWidth, tileHeight); JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2IILbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jint tileWidth, jint tileHeight, jobject p_unitType){ Game* x_game = (Game*)pointer; TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); -UnitType unitType = (UnitType)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); -return x_game->hasPower(position, tileWidth, tileHeight, unitType); +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPower(position, tileWidth, tileHeight, *unitType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2Lbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jobject p_type, jobject p_builder){ Game* x_game = (Game*)pointer; TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); Unit builder = (Unit)env->GetLongField(p_builder, FindCachedField(env, env->GetObjectClass(p_builder), "pointer", "J")); -return x_game->canBuildHere(position, type, builder); +return x_game->canBuildHere(position, *type, builder); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jobject p_type){ Game* x_game = (Game*)pointer; TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_game->canBuildHere(position, type); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_game->canBuildHere(position, *type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2Lbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jobject p_type, jobject p_builder, jboolean checkExplored){ Game* x_game = (Game*)pointer; TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); Unit builder = (Unit)env->GetLongField(p_builder, FindCachedField(env, env->GetObjectClass(p_builder), "pointer", "J")); -return x_game->canBuildHere(position, type, builder, (bool)checkExplored); +return x_game->canBuildHere(position, *type, builder, (bool)checkExplored); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canMake_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Game* x_game = (Game*)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_game->canMake(type); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_game->canMake(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canMake_1native__JLbwapi4_UnitType_2Lbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_builder){ Game* x_game = (Game*)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); Unit builder = (Unit)env->GetLongField(p_builder, FindCachedField(env, env->GetObjectClass(p_builder), "pointer", "J")); -return x_game->canMake(type, builder); +return x_game->canMake(*type, builder); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_unit){ Game* x_game = (Game*)pointer; -TechType type = (TechType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +TechType* type = (TechType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_game->canResearch(type, unit); +return x_game->canResearch(*type, unit); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Game* x_game = (Game*)pointer; -TechType type = (TechType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_game->canResearch(type); +TechType* type = (TechType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_game->canResearch(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_unit, jboolean checkCanIssueCommandType){ Game* x_game = (Game*)pointer; -TechType type = (TechType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +TechType* type = (TechType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_game->canResearch(type, unit, (bool)checkCanIssueCommandType); +return x_game->canResearch(*type, unit, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2Lbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_unit){ Game* x_game = (Game*)pointer; -UpgradeType type = (UpgradeType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UpgradeType* type = (UpgradeType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_game->canUpgrade(type, unit); +return x_game->canUpgrade(*type, unit); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Game* x_game = (Game*)pointer; -UpgradeType type = (UpgradeType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_game->canUpgrade(type); +UpgradeType* type = (UpgradeType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_game->canUpgrade(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2Lbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_unit, jboolean checkCanIssueCommandType){ Game* x_game = (Game*)pointer; -UpgradeType type = (UpgradeType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UpgradeType* type = (UpgradeType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_game->canUpgrade(type, unit, (bool)checkCanIssueCommandType); +return x_game->canUpgrade(*type, unit, (bool)checkCanIssueCommandType); } JNIEXPORT void JNICALL Java_bwapi4_Game_printf_1native(JNIEnv * env, jobject obj, jlong pointer, jstring cstr_format){ Game* x_game = (Game*)pointer; @@ -1458,6 +1474,21 @@ JNIEXPORT jint JNICALL Java_bwapi4_Game_countdownTimer_1native(JNIEnv * env, job Game* x_game = (Game*)pointer; return x_game->countdownTimer(); } +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getAllRegions_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +Regionset cresult = x_game->getAllRegions(); +jclass listCls = FindCachedClass(env, "java/util/ArrayList"); +jmethodID listConsID = FindCachedMethod(env, listCls, "", "()V"); +jobject result = env->NewObject(listCls, listConsID); +jmethodID addMethodID = FindCachedMethod(env, listCls, "add", "(Ljava/lang/Object;)Z"); +jclass elemClass = FindCachedClass(env, "bwapi4/Region"); +jmethodID getMethodID = FindCachedMethodStatic(env, elemClass, "get", "(J)Lbwapi4/Region;"); +for(Regionset::const_iterator it = cresult.begin(); it != cresult.end(); it++ ){const Region elem_ptr = *it; +jobject elem = env->CallStaticObjectMethod(elemClass, getMethodID, (long)elem_ptr) ; +env->CallVoidMethod(result, addMethodID, elem); +} +return result; +} JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegionAt_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y){ Game* x_game = (Game*)pointer; jlong resptr = (jlong)x_game->getRegionAt(x, y); @@ -1487,75 +1518,79 @@ return x_game->setRevealAll((bool)reveal); } JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2I(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_desiredPosition, jint maxRange){ Game* x_game = (Game*)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); TilePosition desiredPosition((int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "x", "I")), (int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "y", "I"))); -TilePosition cresult = x_game->getBuildLocation(type, desiredPosition, maxRange); -jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +TilePosition cresult = x_game->getBuildLocation(*type, desiredPosition, maxRange); +jclass retcls = FindCachedClass(env, "bwapi4/TilePosition"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; } JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_desiredPosition){ Game* x_game = (Game*)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); TilePosition desiredPosition((int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "x", "I")), (int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "y", "I"))); -TilePosition cresult = x_game->getBuildLocation(type, desiredPosition); -jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +TilePosition cresult = x_game->getBuildLocation(*type, desiredPosition); +jclass retcls = FindCachedClass(env, "bwapi4/TilePosition"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; } JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2IZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_desiredPosition, jint maxRange, jboolean creep){ Game* x_game = (Game*)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); TilePosition desiredPosition((int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "x", "I")), (int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "y", "I"))); -TilePosition cresult = x_game->getBuildLocation(type, desiredPosition, maxRange, (bool)creep); -jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +TilePosition cresult = x_game->getBuildLocation(*type, desiredPosition, maxRange, (bool)creep); +jclass retcls = FindCachedClass(env, "bwapi4/TilePosition"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; } JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_fromType, jobject p_toType, jobject p_fromPlayer){ Game* x_game = (Game*)pointer; -UnitType fromType = (UnitType)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); -UnitType toType = (UnitType)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); Player fromPlayer = (Player)env->GetLongField(p_fromPlayer, FindCachedField(env, env->GetObjectClass(p_fromPlayer), "pointer", "J")); -return x_game->getDamageFrom(fromType, toType, fromPlayer); +return x_game->getDamageFrom(*fromType, *toType, fromPlayer); } JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_fromType, jobject p_toType){ Game* x_game = (Game*)pointer; -UnitType fromType = (UnitType)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); -UnitType toType = (UnitType)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); -return x_game->getDamageFrom(fromType, toType); +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +return x_game->getDamageFrom(*fromType, *toType); } JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2Lbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_fromType, jobject p_toType, jobject p_fromPlayer, jobject p_toPlayer){ Game* x_game = (Game*)pointer; -UnitType fromType = (UnitType)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); -UnitType toType = (UnitType)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); Player fromPlayer = (Player)env->GetLongField(p_fromPlayer, FindCachedField(env, env->GetObjectClass(p_fromPlayer), "pointer", "J")); Player toPlayer = (Player)env->GetLongField(p_toPlayer, FindCachedField(env, env->GetObjectClass(p_toPlayer), "pointer", "J")); -return x_game->getDamageFrom(fromType, toType, fromPlayer, toPlayer); +return x_game->getDamageFrom(*fromType, *toType, fromPlayer, toPlayer); } JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_toType, jobject p_fromType, jobject p_toPlayer){ Game* x_game = (Game*)pointer; -UnitType toType = (UnitType)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); -UnitType fromType = (UnitType)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); Player toPlayer = (Player)env->GetLongField(p_toPlayer, FindCachedField(env, env->GetObjectClass(p_toPlayer), "pointer", "J")); -return x_game->getDamageTo(toType, fromType, toPlayer); +return x_game->getDamageTo(*toType, *fromType, toPlayer); } JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_toType, jobject p_fromType){ Game* x_game = (Game*)pointer; -UnitType toType = (UnitType)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); -UnitType fromType = (UnitType)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); -return x_game->getDamageTo(toType, fromType); +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +return x_game->getDamageTo(*toType, *fromType); } JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2Lbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_toType, jobject p_fromType, jobject p_toPlayer, jobject p_fromPlayer){ Game* x_game = (Game*)pointer; -UnitType toType = (UnitType)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); -UnitType fromType = (UnitType)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); Player toPlayer = (Player)env->GetLongField(p_toPlayer, FindCachedField(env, env->GetObjectClass(p_toPlayer), "pointer", "J")); Player fromPlayer = (Player)env->GetLongField(p_fromPlayer, FindCachedField(env, env->GetObjectClass(p_fromPlayer), "pointer", "J")); -return x_game->getDamageTo(toType, fromType, toPlayer, fromPlayer); +return x_game->getDamageTo(*toType, *fromType, toPlayer, fromPlayer); +} +JNIEXPORT jstring JNICALL Java_bwapi4_GameType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +GameType* x_gameType = (GameType*)pointer; +return env->NewStringUTF(x_gameType->toString().c_str()); } JNIEXPORT jint JNICALL Java_bwapi4_Player_getID_1native(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; @@ -1565,6 +1600,21 @@ JNIEXPORT jstring JNICALL Java_bwapi4_Player_getName_1native(JNIEnv * env, jobje Player x_player = (Player)pointer; return env->NewStringUTF(x_player->getName().c_str()); } +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getUnits_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player x_player = (Player)pointer; +Unitset cresult = x_player->getUnits(); +jclass listCls = FindCachedClass(env, "java/util/ArrayList"); +jmethodID listConsID = FindCachedMethod(env, listCls, "", "()V"); +jobject result = env->NewObject(listCls, listConsID); +jmethodID addMethodID = FindCachedMethod(env, listCls, "add", "(Ljava/lang/Object;)Z"); +jclass elemClass = FindCachedClass(env, "bwapi4/Unit"); +jmethodID getMethodID = FindCachedMethodStatic(env, elemClass, "get", "(J)Lbwapi4/Unit;"); +for(Unitset::const_iterator it = cresult.begin(); it != cresult.end(); it++ ){const Unit elem_ptr = *it; +jobject elem = env->CallStaticObjectMethod(elemClass, getMethodID, (long)elem_ptr) ; +env->CallVoidMethod(result, addMethodID, elem); +} +return result; +} JNIEXPORT jobject JNICALL Java_bwapi4_Player_getRace_1native(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; jlong resptr = (jlong)tableRace.find(x_player->getRace())->second; @@ -1574,7 +1624,7 @@ return env->CallStaticObjectMethod(retcls, mid, resptr); } JNIEXPORT jobject JNICALL Java_bwapi4_Player_getType_1native(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; -jlong resptr = (jlong)x_player->getType(); +jlong resptr = (jlong)tablePlayerType.find(x_player->getType())->second; jclass retcls = FindCachedClass(env, "bwapi4/PlayerType"); jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/PlayerType;"); return env->CallStaticObjectMethod(retcls, mid, resptr); @@ -1603,7 +1653,7 @@ return x_player->isNeutral(); JNIEXPORT jobject JNICALL Java_bwapi4_Player_getStartLocation_1native(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; TilePosition cresult = x_player->getStartLocation(); -jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jclass retcls = FindCachedClass(env, "bwapi4/TilePosition"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -1666,8 +1716,8 @@ return x_player->supplyTotal(); } JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyTotal_1native__JLbwapi4_Race_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_race){ Player x_player = (Player)pointer; -Race race = (Race)env->GetLongField(p_race, FindCachedField(env, env->GetObjectClass(p_race), "pointer", "J")); -return x_player->supplyTotal(race); +Race* race = (Race*)env->GetLongField(p_race, FindCachedField(env, env->GetObjectClass(p_race), "pointer", "J")); +return x_player->supplyTotal(*race); } JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyUsed_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; @@ -1675,8 +1725,8 @@ return x_player->supplyUsed(); } JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyUsed_1native__JLbwapi4_Race_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_race){ Player x_player = (Player)pointer; -Race race = (Race)env->GetLongField(p_race, FindCachedField(env, env->GetObjectClass(p_race), "pointer", "J")); -return x_player->supplyUsed(race); +Race* race = (Race*)env->GetLongField(p_race, FindCachedField(env, env->GetObjectClass(p_race), "pointer", "J")); +return x_player->supplyUsed(*race); } JNIEXPORT jint JNICALL Java_bwapi4_Player_allUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; @@ -1684,8 +1734,8 @@ return x_player->allUnitCount(); } JNIEXPORT jint JNICALL Java_bwapi4_Player_allUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->allUnitCount(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->allUnitCount(*unit); } JNIEXPORT jint JNICALL Java_bwapi4_Player_visibleUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; @@ -1693,8 +1743,8 @@ return x_player->visibleUnitCount(); } JNIEXPORT jint JNICALL Java_bwapi4_Player_visibleUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->visibleUnitCount(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->visibleUnitCount(*unit); } JNIEXPORT jint JNICALL Java_bwapi4_Player_completedUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; @@ -1702,8 +1752,8 @@ return x_player->completedUnitCount(); } JNIEXPORT jint JNICALL Java_bwapi4_Player_completedUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->completedUnitCount(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->completedUnitCount(*unit); } JNIEXPORT jint JNICALL Java_bwapi4_Player_incompleteUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; @@ -1711,8 +1761,8 @@ return x_player->incompleteUnitCount(); } JNIEXPORT jint JNICALL Java_bwapi4_Player_incompleteUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->incompleteUnitCount(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->incompleteUnitCount(*unit); } JNIEXPORT jint JNICALL Java_bwapi4_Player_deadUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; @@ -1720,8 +1770,8 @@ return x_player->deadUnitCount(); } JNIEXPORT jint JNICALL Java_bwapi4_Player_deadUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->deadUnitCount(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->deadUnitCount(*unit); } JNIEXPORT jint JNICALL Java_bwapi4_Player_killedUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; @@ -1729,28 +1779,28 @@ return x_player->killedUnitCount(); } JNIEXPORT jint JNICALL Java_bwapi4_Player_killedUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->killedUnitCount(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->killedUnitCount(*unit); } JNIEXPORT jint JNICALL Java_bwapi4_Player_getUpgradeLevel_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_upgrade){ Player x_player = (Player)pointer; -UpgradeType upgrade = (UpgradeType)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); -return x_player->getUpgradeLevel(upgrade); +UpgradeType* upgrade = (UpgradeType*)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); +return x_player->getUpgradeLevel(*upgrade); } JNIEXPORT jboolean JNICALL Java_bwapi4_Player_hasResearched_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Player x_player = (Player)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_player->hasResearched(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_player->hasResearched(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isResearching_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Player x_player = (Player)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_player->isResearching(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_player->isResearching(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isUpgrading_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_upgrade){ Player x_player = (Player)pointer; -UpgradeType upgrade = (UpgradeType)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); -return x_player->isUpgrading(upgrade); +UpgradeType* upgrade = (UpgradeType*)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); +return x_player->isUpgrading(*upgrade); } JNIEXPORT jobject JNICALL Java_bwapi4_Player_getColor_1native(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; @@ -1766,38 +1816,38 @@ return x_player->getTextColor(); } JNIEXPORT jint JNICALL Java_bwapi4_Player_maxEnergy_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->maxEnergy(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->maxEnergy(*unit); } JNIEXPORT jdouble JNICALL Java_bwapi4_Player_topSpeed_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->topSpeed(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->topSpeed(*unit); } JNIEXPORT jint JNICALL Java_bwapi4_Player_weaponMaxRange_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_weapon){ Player x_player = (Player)pointer; -WeaponType weapon = (WeaponType)env->GetLongField(p_weapon, FindCachedField(env, env->GetObjectClass(p_weapon), "pointer", "J")); -return x_player->weaponMaxRange(weapon); +WeaponType* weapon = (WeaponType*)env->GetLongField(p_weapon, FindCachedField(env, env->GetObjectClass(p_weapon), "pointer", "J")); +return x_player->weaponMaxRange(*weapon); } JNIEXPORT jint JNICALL Java_bwapi4_Player_sightRange_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->sightRange(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->sightRange(*unit); } JNIEXPORT jint JNICALL Java_bwapi4_Player_weaponDamageCooldown_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->weaponDamageCooldown(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->weaponDamageCooldown(*unit); } JNIEXPORT jint JNICALL Java_bwapi4_Player_armor_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->armor(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->armor(*unit); } JNIEXPORT jint JNICALL Java_bwapi4_Player_damage_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_wpn){ Player x_player = (Player)pointer; -WeaponType wpn = (WeaponType)env->GetLongField(p_wpn, FindCachedField(env, env->GetObjectClass(p_wpn), "pointer", "J")); -return x_player->damage(wpn); +WeaponType* wpn = (WeaponType*)env->GetLongField(p_wpn, FindCachedField(env, env->GetObjectClass(p_wpn), "pointer", "J")); +return x_player->damage(*wpn); } JNIEXPORT jint JNICALL Java_bwapi4_Player_getUnitScore_1native(JNIEnv * env, jobject obj, jlong pointer){ Player x_player = (Player)pointer; @@ -1825,18 +1875,18 @@ return x_player->isObserver(); } JNIEXPORT jint JNICALL Java_bwapi4_Player_getMaxUpgradeLevel_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_upgrade){ Player x_player = (Player)pointer; -UpgradeType upgrade = (UpgradeType)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); -return x_player->getMaxUpgradeLevel(upgrade); +UpgradeType* upgrade = (UpgradeType*)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); +return x_player->getMaxUpgradeLevel(*upgrade); } JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isResearchAvailable_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Player x_player = (Player)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_player->isResearchAvailable(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_player->isResearchAvailable(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isUnitAvailable_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ Player x_player = (Player)pointer; -UnitType unit = (UnitType)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); -return x_player->isUnitAvailable(unit); +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->isUnitAvailable(*unit); } JNIEXPORT jobject JNICALL Java_bwapi4_Playerset_getUnits_1native(JNIEnv * env, jobject obj, jlong pointer){ Playerset* x_playerset = (Playerset*)pointer; @@ -1865,6 +1915,18 @@ JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__JZZ(JNIEnv * e Playerset* x_playerset = (Playerset*)pointer; x_playerset->setAlliance((bool)allies, (bool)alliedVictory); } +JNIEXPORT jstring JNICALL Java_bwapi4_PlayerType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +PlayerType* x_playerType = (PlayerType*)pointer; +return env->NewStringUTF(x_playerType->toString().c_str()); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_PlayerType_isLobbyType_1native(JNIEnv * env, jobject obj, jlong pointer){ +PlayerType* x_playerType = (PlayerType*)pointer; +return x_playerType->isLobbyType(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_PlayerType_isGameType_1native(JNIEnv * env, jobject obj, jlong pointer){ +PlayerType* x_playerType = (PlayerType*)pointer; +return x_playerType->isGameType(); +} JNIEXPORT jboolean JNICALL Java_bwapi4_Position_isValid(JNIEnv * env, jobject obj){ Position x_position((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); return x_position.isValid(); @@ -1872,7 +1934,7 @@ return x_position.isValid(); JNIEXPORT jobject JNICALL Java_bwapi4_Position_makeValid(JNIEnv * env, jobject obj){ Position x_position((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); Position cresult = x_position.makeValid(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -1891,6 +1953,45 @@ JNIEXPORT jdouble JNICALL Java_bwapi4_Position_getLength(JNIEnv * env, jobject o Position x_position((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); return x_position.getLength(); } +JNIEXPORT jstring JNICALL Java_bwapi4_Race_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +Race* x_race = (Race*)pointer; +return env->NewStringUTF(x_race->toString().c_str()); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getWorker_1native(JNIEnv * env, jobject obj, jlong pointer){ +Race* x_race = (Race*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_race->getWorker())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getCenter_1native(JNIEnv * env, jobject obj, jlong pointer){ +Race* x_race = (Race*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_race->getCenter())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getRefinery_1native(JNIEnv * env, jobject obj, jlong pointer){ +Race* x_race = (Race*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_race->getRefinery())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getTransport_1native(JNIEnv * env, jobject obj, jlong pointer){ +Race* x_race = (Race*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_race->getTransport())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getSupplyProvider_1native(JNIEnv * env, jobject obj, jlong pointer){ +Race* x_race = (Race*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_race->getSupplyProvider())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} JNIEXPORT jint JNICALL Java_bwapi4_Region_getID_1native(JNIEnv * env, jobject obj, jlong pointer){ Region x_region = (Region)pointer; return x_region->getID(); @@ -1902,7 +2003,7 @@ return x_region->getRegionGroupID(); JNIEXPORT jobject JNICALL Java_bwapi4_Region_getCenter_1native(JNIEnv * env, jobject obj, jlong pointer){ Region x_region = (Region)pointer; Position cresult = x_region->getCenter(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -1919,6 +2020,21 @@ JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isAccessible_1native(JNIEnv * env, Region x_region = (Region)pointer; return x_region->isAccessible(); } +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getNeighbors_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region x_region = (Region)pointer; +Regionset cresult = x_region->getNeighbors(); +jclass listCls = FindCachedClass(env, "java/util/ArrayList"); +jmethodID listConsID = FindCachedMethod(env, listCls, "", "()V"); +jobject result = env->NewObject(listCls, listConsID); +jmethodID addMethodID = FindCachedMethod(env, listCls, "add", "(Ljava/lang/Object;)Z"); +jclass elemClass = FindCachedClass(env, "bwapi4/Region"); +jmethodID getMethodID = FindCachedMethodStatic(env, elemClass, "get", "(J)Lbwapi4/Region;"); +for(Regionset::const_iterator it = cresult.begin(); it != cresult.end(); it++ ){const Region elem_ptr = *it; +jobject elem = env->CallStaticObjectMethod(elemClass, getMethodID, (long)elem_ptr) ; +env->CallVoidMethod(result, addMethodID, elem); +} +return result; +} JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsLeft_1native(JNIEnv * env, jobject obj, jlong pointer){ Region x_region = (Region)pointer; return x_region->getBoundsLeft(); @@ -1957,11 +2073,67 @@ return x_region->getDistance(other); JNIEXPORT jobject JNICALL Java_bwapi4_Regionset_getCenter_1native(JNIEnv * env, jobject obj, jlong pointer){ Regionset* x_regionset = (Regionset*)pointer; Position cresult = x_regionset->getCenter(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; } +JNIEXPORT jstring JNICALL Java_bwapi4_TechType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +return env->NewStringUTF(x_techType->toString().c_str()); +} +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_getRace_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +jlong resptr = (jlong)tableRace.find(x_techType->getRace())->second; +jclass retcls = FindCachedClass(env, "bwapi4/Race"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Race;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_TechType_mineralPrice_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +return x_techType->mineralPrice(); +} +JNIEXPORT jint JNICALL Java_bwapi4_TechType_gasPrice_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +return x_techType->gasPrice(); +} +JNIEXPORT jint JNICALL Java_bwapi4_TechType_researchTime_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +return x_techType->researchTime(); +} +JNIEXPORT jint JNICALL Java_bwapi4_TechType_energyCost_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +return x_techType->energyCost(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_whatResearches_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_techType->whatResearches())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_getWeapon_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +jlong resptr = (jlong)tableWeaponType.find(x_techType->getWeapon())->second; +jclass retcls = FindCachedClass(env, "bwapi4/WeaponType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/WeaponType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_TechType_targetsUnit_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +return x_techType->targetsUnit(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_TechType_targetsPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +return x_techType->targetsPosition(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_getOrder_1native(JNIEnv * env, jobject obj, jlong pointer){ +TechType* x_techType = (TechType*)pointer; +jlong resptr = (jlong)tableOrder.find(x_techType->getOrder())->second; +jclass retcls = FindCachedClass(env, "bwapi4/Order"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Order;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} JNIEXPORT jboolean JNICALL Java_bwapi4_TilePosition_isValid(JNIEnv * env, jobject obj){ TilePosition x_tilePosition((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); return x_tilePosition.isValid(); @@ -1969,7 +2141,7 @@ return x_tilePosition.isValid(); JNIEXPORT jobject JNICALL Java_bwapi4_TilePosition_makeValid(JNIEnv * env, jobject obj){ TilePosition x_tilePosition((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); TilePosition cresult = x_tilePosition.makeValid(); -jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jclass retcls = FindCachedClass(env, "bwapi4/TilePosition"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -2012,7 +2184,7 @@ return env->CallStaticObjectMethod(retcls, mid, resptr); JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; Position cresult = x_unit->getPosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -2020,7 +2192,7 @@ return result; JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTilePosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; TilePosition cresult = x_unit->getTilePosition(); -jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jclass retcls = FindCachedClass(env, "bwapi4/TilePosition"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -2099,7 +2271,12 @@ Unit x_unit = (Unit)pointer; UnitCommand cresult = x_unit->getLastCommand(); jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); -jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()), env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), cresult.getType()), env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()), cresult.getTargetPosition().x , cresult.getTargetPosition().y , resolveUnitCommandExtra(cresult)); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); return result; } JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLastAttackingPlayer_1native(JNIEnv * env, jobject obj, jlong pointer){ @@ -2119,7 +2296,7 @@ return env->CallStaticObjectMethod(retcls, mid, resptr); JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; Position cresult = x_unit->getInitialPosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -2127,7 +2304,7 @@ return result; JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialTilePosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; TilePosition cresult = x_unit->getInitialTilePosition(); -jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jclass retcls = FindCachedClass(env, "bwapi4/TilePosition"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -2270,7 +2447,7 @@ return env->CallStaticObjectMethod(retcls, mid, resptr); JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTargetPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; Position cresult = x_unit->getTargetPosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -2299,7 +2476,7 @@ return env->CallStaticObjectMethod(retcls, mid, resptr); JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrderTargetPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; Position cresult = x_unit->getOrderTargetPosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -2307,7 +2484,7 @@ return result; JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRallyPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; Position cresult = x_unit->getRallyPosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -2653,19 +2830,19 @@ return x_unit->attack(target, (bool)shiftQueueCommand); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_build_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Unit x_unit = (Unit)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unit->build(type); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->build(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_build_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_target){ Unit x_unit = (Unit)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); -return x_unit->build(type, target); +return x_unit->build(*type, target); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_buildAddon_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Unit x_unit = (Unit)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unit->buildAddon(type); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->buildAddon(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_train_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; @@ -2673,23 +2850,23 @@ return x_unit->train(); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_train_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Unit x_unit = (Unit)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unit->train(type); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->train(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_morph_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Unit x_unit = (Unit)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unit->morph(type); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->morph(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_research_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->research(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->research(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_upgrade_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_upgrade){ Unit x_unit = (Unit)pointer; -UpgradeType upgrade = (UpgradeType)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); -return x_unit->upgrade(upgrade); +UpgradeType* upgrade = (UpgradeType*)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); +return x_unit->upgrade(*upgrade); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_setRallyPoint_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ Unit x_unit = (Unit)pointer; @@ -2880,14 +3057,14 @@ return x_unit->cancelUpgrade(); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_useTech_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->useTech(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->useTech(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_useTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); PositionOrUnit target(convertPositionOrUnit(env, p_target )); -return x_unit->useTech(tech, target); +return x_unit->useTech(*tech, target); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_placeCOP_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ Unit x_unit = (Unit)pointer; @@ -2978,28 +3155,28 @@ return x_unit->canCommandGrouped((bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandType_1native__JLbwapi4_UnitCommandType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_ct){ Unit x_unit = (Unit)pointer; -UnitCommandType ct = (UnitCommandType)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); -return x_unit->canIssueCommandType(ct); +UnitCommandType* ct = (UnitCommandType*)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); +return x_unit->canIssueCommandType(*ct); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandType_1native__JLbwapi4_UnitCommandType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_ct, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -UnitCommandType ct = (UnitCommandType)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); -return x_unit->canIssueCommandType(ct, (bool)checkCommandibility); +UnitCommandType* ct = (UnitCommandType*)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); +return x_unit->canIssueCommandType(*ct, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_ct, jboolean checkCommandibilityGrouped){ Unit x_unit = (Unit)pointer; -UnitCommandType ct = (UnitCommandType)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); -return x_unit->canIssueCommandTypeGrouped(ct, (bool)checkCommandibilityGrouped); +UnitCommandType* ct = (UnitCommandType*)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); +return x_unit->canIssueCommandTypeGrouped(*ct, (bool)checkCommandibilityGrouped); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_ct){ Unit x_unit = (Unit)pointer; -UnitCommandType ct = (UnitCommandType)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); -return x_unit->canIssueCommandTypeGrouped(ct); +UnitCommandType* ct = (UnitCommandType*)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); +return x_unit->canIssueCommandTypeGrouped(*ct); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_ct, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -UnitCommandType ct = (UnitCommandType)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); -return x_unit->canIssueCommandTypeGrouped(ct, (bool)checkCommandibilityGrouped, (bool)checkCommandibility); +UnitCommandType* ct = (UnitCommandType*)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); +return x_unit->canIssueCommandTypeGrouped(*ct, (bool)checkCommandibilityGrouped, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTargetUnit_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ Unit x_unit = (Unit)pointer; @@ -3171,42 +3348,42 @@ return x_unit->canBuild((bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canBuild(uType, (bool)checkCanIssueCommandType); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuild(*uType, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canBuild(uType); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuild(*uType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canBuild(uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuild(*uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jobject p_tilePos, jboolean checkTargetUnitType, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); TilePosition tilePos((int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "x", "I")), (int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "y", "I"))); -return x_unit->canBuild(uType, tilePos, (bool)checkTargetUnitType, (bool)checkCanIssueCommandType); +return x_unit->canBuild(*uType, tilePos, (bool)checkTargetUnitType, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jobject p_tilePos, jboolean checkTargetUnitType){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); TilePosition tilePos((int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "x", "I")), (int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "y", "I"))); -return x_unit->canBuild(uType, tilePos, (bool)checkTargetUnitType); +return x_unit->canBuild(*uType, tilePos, (bool)checkTargetUnitType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jobject p_tilePos){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); TilePosition tilePos((int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "x", "I")), (int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "y", "I"))); -return x_unit->canBuild(uType, tilePos); +return x_unit->canBuild(*uType, tilePos); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jobject p_tilePos, jboolean checkTargetUnitType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); TilePosition tilePos((int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "x", "I")), (int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "y", "I"))); -return x_unit->canBuild(uType, tilePos, (bool)checkTargetUnitType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +return x_unit->canBuild(*uType, tilePos, (bool)checkTargetUnitType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; @@ -3218,18 +3395,18 @@ return x_unit->canBuildAddon((bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canBuildAddon(uType, (bool)checkCanIssueCommandType); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuildAddon(*uType, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canBuildAddon(uType); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuildAddon(*uType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canBuildAddon(uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuildAddon(*uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; @@ -3241,18 +3418,18 @@ return x_unit->canTrain((bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canTrain(uType, (bool)checkCanIssueCommandType); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canTrain(*uType, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canTrain(uType); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canTrain(*uType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canTrain(uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canTrain(*uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; @@ -3264,18 +3441,18 @@ return x_unit->canMorph((bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canMorph(uType, (bool)checkCanIssueCommandType); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canMorph(*uType, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canMorph(uType); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canMorph(*uType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -UnitType uType = (UnitType)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); -return x_unit->canMorph(uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canMorph(*uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; @@ -3287,13 +3464,13 @@ return x_unit->canResearch((bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Unit x_unit = (Unit)pointer; -TechType type = (TechType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unit->canResearch(type); +TechType* type = (TechType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->canResearch(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JLbwapi4_TechType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -TechType type = (TechType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unit->canResearch(type, (bool)checkCanIssueCommandType); +TechType* type = (TechType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->canResearch(*type, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; @@ -3305,13 +3482,13 @@ return x_unit->canUpgrade((bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JLbwapi4_UpgradeType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Unit x_unit = (Unit)pointer; -UpgradeType type = (UpgradeType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unit->canUpgrade(type); +UpgradeType* type = (UpgradeType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->canUpgrade(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JLbwapi4_UpgradeType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -UpgradeType type = (UpgradeType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unit->canUpgrade(type, (bool)checkCanIssueCommandType); +UpgradeType* type = (UpgradeType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->canUpgrade(*type, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; @@ -3955,152 +4132,152 @@ return x_unit->canUseTechWithOrWithoutTarget((bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechWithOrWithoutTarget(tech, (bool)checkCanIssueCommandType); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithOrWithoutTarget(*tech, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechWithOrWithoutTarget(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithOrWithoutTarget(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechWithOrWithoutTarget(tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithOrWithoutTarget(*tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkCanTargetUnit, jboolean checkTargetsType, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); PositionOrUnit target(convertPositionOrUnit(env, p_target )); -return x_unit->canUseTech(tech, target, (bool)checkCanTargetUnit, (bool)checkTargetsType, (bool)checkCanIssueCommandType); +return x_unit->canUseTech(*tech, target, (bool)checkCanTargetUnit, (bool)checkTargetsType, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkCanTargetUnit, jboolean checkTargetsType){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); PositionOrUnit target(convertPositionOrUnit(env, p_target )); -return x_unit->canUseTech(tech, target, (bool)checkCanTargetUnit, (bool)checkTargetsType); +return x_unit->canUseTech(*tech, target, (bool)checkCanTargetUnit, (bool)checkTargetsType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkCanTargetUnit){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); PositionOrUnit target(convertPositionOrUnit(env, p_target )); -return x_unit->canUseTech(tech, target, (bool)checkCanTargetUnit); +return x_unit->canUseTech(*tech, target, (bool)checkCanTargetUnit); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); PositionOrUnit target(convertPositionOrUnit(env, p_target )); -return x_unit->canUseTech(tech, target); +return x_unit->canUseTech(*tech, target); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTech(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTech(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkCanTargetUnit, jboolean checkTargetsType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); PositionOrUnit target(convertPositionOrUnit(env, p_target )); -return x_unit->canUseTech(tech, target, (bool)checkCanTargetUnit, (bool)checkTargetsType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +return x_unit->canUseTech(*tech, target, (bool)checkCanTargetUnit, (bool)checkTargetsType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechWithoutTarget(tech, (bool)checkCanIssueCommandType); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithoutTarget(*tech, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechWithoutTarget(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithoutTarget(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechWithoutTarget(tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithoutTarget(*tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechUnit(tech, (bool)checkCanIssueCommandType); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechUnit(*tech, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechUnit(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechUnit(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechUnit(tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechUnit(*tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkTargetsUnits, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); Unit targetUnit = (Unit)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); -return x_unit->canUseTechUnit(tech, targetUnit, (bool)checkCanTargetUnit, (bool)checkTargetsUnits, (bool)checkCanIssueCommandType); +return x_unit->canUseTechUnit(*tech, targetUnit, (bool)checkCanTargetUnit, (bool)checkTargetsUnits, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkTargetsUnits){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); Unit targetUnit = (Unit)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); -return x_unit->canUseTechUnit(tech, targetUnit, (bool)checkCanTargetUnit, (bool)checkTargetsUnits); +return x_unit->canUseTechUnit(*tech, targetUnit, (bool)checkCanTargetUnit, (bool)checkTargetsUnits); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_targetUnit, jboolean checkCanTargetUnit){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); Unit targetUnit = (Unit)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); -return x_unit->canUseTechUnit(tech, targetUnit, (bool)checkCanTargetUnit); +return x_unit->canUseTechUnit(*tech, targetUnit, (bool)checkCanTargetUnit); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_targetUnit){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); Unit targetUnit = (Unit)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); -return x_unit->canUseTechUnit(tech, targetUnit); +return x_unit->canUseTechUnit(*tech, targetUnit); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkTargetsUnits, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); Unit targetUnit = (Unit)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); -return x_unit->canUseTechUnit(tech, targetUnit, (bool)checkCanTargetUnit, (bool)checkTargetsUnits, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +return x_unit->canUseTechUnit(*tech, targetUnit, (bool)checkCanTargetUnit, (bool)checkTargetsUnits, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechPosition(tech, (bool)checkCanIssueCommandType); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechPosition(*tech, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechPosition(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechPosition(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unit->canUseTechPosition(tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechPosition(*tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkTargetsPositions, jboolean checkCanIssueCommandType){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); -return x_unit->canUseTechPosition(tech, target, (bool)checkTargetsPositions, (bool)checkCanIssueCommandType); +return x_unit->canUseTechPosition(*tech, target, (bool)checkTargetsPositions, (bool)checkCanIssueCommandType); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkTargetsPositions){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); -return x_unit->canUseTechPosition(tech, target, (bool)checkTargetsPositions); +return x_unit->canUseTechPosition(*tech, target, (bool)checkTargetsPositions); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); -return x_unit->canUseTechPosition(tech, target); +return x_unit->canUseTechPosition(*tech, target); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkTargetsPositions, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ Unit x_unit = (Unit)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); -return x_unit->canUseTechPosition(tech, target, (bool)checkTargetsPositions, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +return x_unit->canUseTechPosition(*tech, target, (bool)checkTargetsPositions, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__J(JNIEnv * env, jobject obj, jlong pointer){ Unit x_unit = (Unit)pointer; @@ -4125,10 +4302,735 @@ Unit x_unit = (Unit)pointer; TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); return x_unit->canPlaceCOP(target, (bool)checkCanIssueCommandType, (bool)checkCommandibility); } +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_attack__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +PositionOrUnit target(convertPositionOrUnit(env, p_target )); +UnitCommand cresult = UnitCommand::attack(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_attack__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +PositionOrUnit target(convertPositionOrUnit(env, p_target )); +UnitCommand cresult = UnitCommand::attack(unit, target, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_build(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target, jobject p_type){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitCommand cresult = UnitCommand::build(unit, target, *type); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_buildAddon(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_type){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitCommand cresult = UnitCommand::buildAddon(unit, *type); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_train(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_type){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitCommand cresult = UnitCommand::train(unit, *type); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_morph(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_type){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitCommand cresult = UnitCommand::morph(unit, *type); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_research(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_tech){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +UnitCommand cresult = UnitCommand::research(unit, *tech); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_upgrade(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_upgrade){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UpgradeType* upgrade = (UpgradeType*)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); +UnitCommand cresult = UnitCommand::upgrade(unit, *upgrade); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_setRallyPoint(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +PositionOrUnit target(convertPositionOrUnit(env, p_target )); +UnitCommand cresult = UnitCommand::setRallyPoint(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_move__Lbwapi4_Unit_2Lbwapi4_Position_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +UnitCommand cresult = UnitCommand::move(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_move__Lbwapi4_Unit_2Lbwapi4_Position_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +UnitCommand cresult = UnitCommand::move(unit, target, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_patrol__Lbwapi4_Unit_2Lbwapi4_Position_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +UnitCommand cresult = UnitCommand::patrol(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_patrol__Lbwapi4_Unit_2Lbwapi4_Position_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +UnitCommand cresult = UnitCommand::patrol(unit, target, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_holdPosition__Lbwapi4_Unit_2(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::holdPosition(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_holdPosition__Lbwapi4_Unit_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::holdPosition(unit, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_stop__Lbwapi4_Unit_2(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::stop(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_stop__Lbwapi4_Unit_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::stop(unit, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_follow__Lbwapi4_Unit_2Lbwapi4_Unit_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Unit target = (Unit)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +UnitCommand cresult = UnitCommand::follow(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_follow__Lbwapi4_Unit_2Lbwapi4_Unit_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Unit target = (Unit)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +UnitCommand cresult = UnitCommand::follow(unit, target, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_gather__Lbwapi4_Unit_2Lbwapi4_Unit_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Unit target = (Unit)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +UnitCommand cresult = UnitCommand::gather(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_gather__Lbwapi4_Unit_2Lbwapi4_Unit_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Unit target = (Unit)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +UnitCommand cresult = UnitCommand::gather(unit, target, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_returnCargo__Lbwapi4_Unit_2(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::returnCargo(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_returnCargo__Lbwapi4_Unit_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::returnCargo(unit, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_repair__Lbwapi4_Unit_2Lbwapi4_Unit_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Unit target = (Unit)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +UnitCommand cresult = UnitCommand::repair(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_repair__Lbwapi4_Unit_2Lbwapi4_Unit_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Unit target = (Unit)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +UnitCommand cresult = UnitCommand::repair(unit, target, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_burrow(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::burrow(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unburrow(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::unburrow(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cloak(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::cloak(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_decloak(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::decloak(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_siege(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::siege(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unsiege(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::unsiege(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_lift(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::lift(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_land(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +UnitCommand cresult = UnitCommand::land(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_load__Lbwapi4_Unit_2Lbwapi4_Unit_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Unit target = (Unit)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +UnitCommand cresult = UnitCommand::load(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_load__Lbwapi4_Unit_2Lbwapi4_Unit_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Unit target = (Unit)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +UnitCommand cresult = UnitCommand::load(unit, target, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unload(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Unit target = (Unit)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +UnitCommand cresult = UnitCommand::unload(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::unloadAll(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::unloadAll(unit, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2Lbwapi4_Position_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +UnitCommand cresult = UnitCommand::unloadAll(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2Lbwapi4_Position_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +UnitCommand cresult = UnitCommand::unloadAll(unit, target, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_rightClick__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +PositionOrUnit target(convertPositionOrUnit(env, p_target )); +UnitCommand cresult = UnitCommand::rightClick(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_rightClick__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2Z(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target, jboolean shiftQueueCommand){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +PositionOrUnit target(convertPositionOrUnit(env, p_target )); +UnitCommand cresult = UnitCommand::rightClick(unit, target, (bool)shiftQueueCommand); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_haltConstruction(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::haltConstruction(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelConstruction(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::cancelConstruction(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelAddon(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::cancelAddon(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelTrain__Lbwapi4_Unit_2(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::cancelTrain(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelTrain__Lbwapi4_Unit_2I(JNIEnv * env, jclass jclz, jobject p_unit, jint slot){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::cancelTrain(unit, slot); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelMorph(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::cancelMorph(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelResearch(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::cancelResearch(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelUpgrade(JNIEnv * env, jclass jclz, jobject p_unit){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +UnitCommand cresult = UnitCommand::cancelUpgrade(unit); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_useTech__Lbwapi4_Unit_2Lbwapi4_TechType_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_tech){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +UnitCommand cresult = UnitCommand::useTech(unit, *tech); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_useTech__Lbwapi4_Unit_2Lbwapi4_TechType_2Lbwapi4_PositionOrUnit_2(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_tech, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +PositionOrUnit target(convertPositionOrUnit(env, p_target )); +UnitCommand cresult = UnitCommand::useTech(unit, *tech, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_placeCOP(JNIEnv * env, jclass jclz, jobject p_unit, jobject p_target){ +Unit unit = (Unit)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +UnitCommand cresult = UnitCommand::placeCOP(unit, target); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommand"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(Lbwapi4/Unit;Lbwapi4/UnitCommandType;Lbwapi4/Unit;III)V"); +jobject result = env->NewObject(retcls, retConsID, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getUnit()) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/UnitCommandType"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/UnitCommandType"), "get", "(J)Lbwapi4/UnitCommandType;"), (jlong)tableUnitCommandType.find(cresult.getType().getID())->second ) +, env->CallStaticObjectMethod(FindCachedClass(env, "bwapi4/Unit"), FindCachedMethodStatic(env, FindCachedClass(env, "bwapi4/Unit"), "get", "(J)Lbwapi4/Unit;"), cresult.getTarget()) +, cresult.getTargetPosition().x +, cresult.getTargetPosition().y +, resolveUnitCommandExtra(cresult)); +return result; +} +JNIEXPORT jstring JNICALL Java_bwapi4_UnitCommandType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitCommandType* x_unitCommandType = (UnitCommandType*)pointer; +return env->NewStringUTF(x_unitCommandType->toString().c_str()); +} JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ Unitset* x_unitset = (Unitset*)pointer; Position cresult = x_unitset->getPosition(); -jclass retcls = FindCachedClass(env, "bwapi/Position"); +jclass retcls = FindCachedClass(env, "bwapi4/Position"); jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); return result; @@ -4195,29 +5097,29 @@ return x_unitset->attack(target, (bool)shiftQueueCommand); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_build_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Unitset* x_unitset = (Unitset*)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unitset->build(type); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unitset->build(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_build_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_target){ Unitset* x_unitset = (Unitset*)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); -return x_unitset->build(type, target); +return x_unitset->build(*type, target); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_buildAddon_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Unitset* x_unitset = (Unitset*)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unitset->buildAddon(type); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unitset->buildAddon(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_train_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Unitset* x_unitset = (Unitset*)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unitset->train(type); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unitset->train(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_morph_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ Unitset* x_unitset = (Unitset*)pointer; -UnitType type = (UnitType)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); -return x_unitset->morph(type); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unitset->morph(*type); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_setRallyPoint_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ Unitset* x_unitset = (Unitset*)pointer; @@ -4398,14 +5300,407 @@ return x_unitset->cancelUpgrade(); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ Unitset* x_unitset = (Unitset*)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); -return x_unitset->useTech(tech); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unitset->useTech(*tech); } JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target){ Unitset* x_unitset = (Unitset*)pointer; -TechType tech = (TechType)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); PositionOrUnit target(convertPositionOrUnit(env, p_target )); -return x_unitset->useTech(tech, target); +return x_unitset->useTech(*tech, target); +} +JNIEXPORT jstring JNICALL Java_bwapi4_UnitSizeType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitSizeType* x_unitSizeType = (UnitSizeType*)pointer; +return env->NewStringUTF(x_unitSizeType->toString().c_str()); +} +JNIEXPORT jstring JNICALL Java_bwapi4_UnitType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return env->NewStringUTF(x_unitType->toString().c_str()); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_getRace_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +jlong resptr = (jlong)tableRace.find(x_unitType->getRace())->second; +jclass retcls = FindCachedClass(env, "bwapi4/Race"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Race;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_requiredTech_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +jlong resptr = (jlong)tableTechType.find(x_unitType->requiredTech())->second; +jclass retcls = FindCachedClass(env, "bwapi4/TechType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/TechType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_cloakingTech_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +jlong resptr = (jlong)tableTechType.find(x_unitType->cloakingTech())->second; +jclass retcls = FindCachedClass(env, "bwapi4/TechType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/TechType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_armorUpgrade_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +jlong resptr = (jlong)tableUpgradeType.find(x_unitType->armorUpgrade())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UpgradeType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UpgradeType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxHitPoints_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->maxHitPoints(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxShields_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->maxShields(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxEnergy_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->maxEnergy(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_armor_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->armor(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_mineralPrice_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->mineralPrice(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_gasPrice_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->gasPrice(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_buildTime_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->buildTime(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_supplyRequired_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->supplyRequired(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_supplyProvided_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->supplyProvided(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_spaceRequired_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->spaceRequired(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_spaceProvided_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->spaceProvided(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_buildScore_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->buildScore(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_destroyScore_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->destroyScore(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_size_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +jlong resptr = (jlong)x_unitType->size(); +jclass retcls = FindCachedClass(env, "bwapi4/UnitSizeType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitSizeType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_tileWidth_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->tileWidth(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_tileHeight_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->tileHeight(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_tileSize_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +TilePosition cresult = x_unitType->tileSize(); +jclass retcls = FindCachedClass(env, "bwapi4/TilePosition"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x, cresult.y); +return result; +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionLeft_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->dimensionLeft(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionUp_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->dimensionUp(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionRight_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->dimensionRight(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionDown_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->dimensionDown(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_width_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->width(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_height_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->height(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_seekRange_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->seekRange(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_sightRange_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->sightRange(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_groundWeapon_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +jlong resptr = (jlong)tableWeaponType.find(x_unitType->groundWeapon())->second; +jclass retcls = FindCachedClass(env, "bwapi4/WeaponType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/WeaponType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxGroundHits_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->maxGroundHits(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_airWeapon_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +jlong resptr = (jlong)tableWeaponType.find(x_unitType->airWeapon())->second; +jclass retcls = FindCachedClass(env, "bwapi4/WeaponType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/WeaponType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxAirHits_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->maxAirHits(); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_UnitType_topSpeed_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->topSpeed(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_acceleration_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->acceleration(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_haltDistance_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->haltDistance(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_turnRadius_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->turnRadius(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canProduce_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->canProduce(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canAttack_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->canAttack(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canMove_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->canMove(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isFlyer_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isFlyer(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_regeneratesHP_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->regeneratesHP(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isSpellcaster_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isSpellcaster(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_hasPermanentCloak_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->hasPermanentCloak(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isInvincible_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isInvincible(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isOrganic_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isOrganic(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isMechanical_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isMechanical(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isRobotic_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isRobotic(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isDetector_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isDetector(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isResourceContainer_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isResourceContainer(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isResourceDepot_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isResourceDepot(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isRefinery_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isRefinery(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isWorker_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isWorker(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_requiresPsi_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->requiresPsi(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_requiresCreep_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->requiresCreep(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isTwoUnitsInOneEgg_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isTwoUnitsInOneEgg(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isBurrowable_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isBurrowable(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isCloakable_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isCloakable(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isBuilding_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isBuilding(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isAddon_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isAddon(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isFlyingBuilding_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isFlyingBuilding(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isNeutral_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isNeutral(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isHero_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isHero(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isPowerup_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isPowerup(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isBeacon_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isBeacon(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isFlagBeacon_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isFlagBeacon(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isSpecialBuilding_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isSpecialBuilding(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isSpell_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isSpell(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_producesLarva_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->producesLarva(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isMineralField_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isMineralField(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isCritter_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->isCritter(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canBuildAddon_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitType* x_unitType = (UnitType*)pointer; +return x_unitType->canBuildAddon(); +} +JNIEXPORT jstring JNICALL Java_bwapi4_UpgradeType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return env->NewStringUTF(x_upgradeType->toString().c_str()); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_getRace_1native(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +jlong resptr = (jlong)tableRace.find(x_upgradeType->getRace())->second; +jclass retcls = FindCachedClass(env, "bwapi4/Race"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Race;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_mineralPrice_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return x_upgradeType->mineralPrice(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_mineralPrice_1native__JI(JNIEnv * env, jobject obj, jlong pointer, jint level){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return x_upgradeType->mineralPrice(level); +} +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_mineralPriceFactor_1native(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return x_upgradeType->mineralPriceFactor(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_gasPrice_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return x_upgradeType->gasPrice(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_gasPrice_1native__JI(JNIEnv * env, jobject obj, jlong pointer, jint level){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return x_upgradeType->gasPrice(level); +} +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_gasPriceFactor_1native(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return x_upgradeType->gasPriceFactor(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_upgradeTime_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return x_upgradeType->upgradeTime(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_upgradeTime_1native__JI(JNIEnv * env, jobject obj, jlong pointer, jint level){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return x_upgradeType->upgradeTime(level); +} +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_upgradeTimeFactor_1native(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return x_upgradeType->upgradeTimeFactor(); +} +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_maxRepeats_1native(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +return x_upgradeType->maxRepeats(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_whatUpgrades_1native(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_upgradeType->whatUpgrades())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_whatsRequired_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_upgradeType->whatsRequired())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_whatsRequired_1native__JI(JNIEnv * env, jobject obj, jlong pointer, jint level){ +UpgradeType* x_upgradeType = (UpgradeType*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_upgradeType->whatsRequired(level))->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); } JNIEXPORT jboolean JNICALL Java_bwapi4_WalkPosition_isValid(JNIEnv * env, jobject obj){ WalkPosition x_walkPosition((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); @@ -4433,6 +5728,117 @@ JNIEXPORT jdouble JNICALL Java_bwapi4_WalkPosition_getLength(JNIEnv * env, jobje WalkPosition x_walkPosition((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); return x_walkPosition.getLength(); } +JNIEXPORT jstring JNICALL Java_bwapi4_WeaponType_toString_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return env->NewStringUTF(x_weaponType->toString().c_str()); +} +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_getTech_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +jlong resptr = (jlong)tableTechType.find(x_weaponType->getTech())->second; +jclass retcls = FindCachedClass(env, "bwapi4/TechType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/TechType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_whatUses_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_weaponType->whatUses())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageAmount_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->damageAmount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageBonus_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->damageBonus(); +} +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageCooldown_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->damageCooldown(); +} +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageFactor_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->damageFactor(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_upgradeType_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +jlong resptr = (jlong)tableUpgradeType.find(x_weaponType->upgradeType())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UpgradeType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UpgradeType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_damageType_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +jlong resptr = (jlong)x_weaponType->damageType(); +jclass retcls = FindCachedClass(env, "bwapi4/DamageType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/DamageType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_explosionType_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +jlong resptr = (jlong)x_weaponType->explosionType(); +jclass retcls = FindCachedClass(env, "bwapi4/ExplosionType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/ExplosionType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_minRange_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->minRange(); +} +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_maxRange_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->maxRange(); +} +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_innerSplashRadius_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->innerSplashRadius(); +} +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_medianSplashRadius_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->medianSplashRadius(); +} +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_outerSplashRadius_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->outerSplashRadius(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsAir_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->targetsAir(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsGround_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->targetsGround(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsMechanical_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->targetsMechanical(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsOrganic_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->targetsOrganic(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsNonBuilding_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->targetsNonBuilding(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsNonRobotic_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->targetsNonRobotic(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsTerrain_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->targetsTerrain(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsOrgOrMech_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->targetsOrgOrMech(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsOwn_1native(JNIEnv * env, jobject obj, jlong pointer){ +WeaponType* x_weaponType = (WeaponType*)pointer; +return x_weaponType->targetsOwn(); +} void reconnect() { while (!BWAPIClient.connect()) { @@ -4452,1564 +5858,1565 @@ void println(const char * text){ flushPrint("\n"); } -JNIEXPORT void JNICALL Java_bwapi_Mirror_startGame(JNIEnv * env, jobject obj){ +JNIEXPORT void JNICALL Java_bwapi4_Mirror_startGame(JNIEnv * env, jobject obj){ jclass cls; jmethodID getId; -cls = env->FindClass("Lbwapi/BulletType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/BulletType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Melee", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Melee)); +cls = env->FindClass("Lbwapi4/BulletType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/BulletType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Melee", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Melee)); tableBulletType.insert(std::pair(BulletTypes::Melee.getID(), &BulletTypes::Melee)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fusion_Cutter_Hit", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Fusion_Cutter_Hit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fusion_Cutter_Hit", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Fusion_Cutter_Hit)); tableBulletType.insert(std::pair(BulletTypes::Fusion_Cutter_Hit.getID(), &BulletTypes::Fusion_Cutter_Hit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gauss_Rifle_Hit", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Gauss_Rifle_Hit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gauss_Rifle_Hit", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Gauss_Rifle_Hit)); tableBulletType.insert(std::pair(BulletTypes::Gauss_Rifle_Hit.getID(), &BulletTypes::Gauss_Rifle_Hit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle_Hit", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::C_10_Canister_Rifle_Hit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle_Hit", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::C_10_Canister_Rifle_Hit)); tableBulletType.insert(std::pair(BulletTypes::C_10_Canister_Rifle_Hit.getID(), &BulletTypes::C_10_Canister_Rifle_Hit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gemini_Missiles", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Gemini_Missiles)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gemini_Missiles", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Gemini_Missiles)); tableBulletType.insert(std::pair(BulletTypes::Gemini_Missiles.getID(), &BulletTypes::Gemini_Missiles)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fragmentation_Grenade", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Fragmentation_Grenade)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fragmentation_Grenade", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Fragmentation_Grenade)); tableBulletType.insert(std::pair(BulletTypes::Fragmentation_Grenade.getID(), &BulletTypes::Fragmentation_Grenade)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Longbolt_Missile", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Longbolt_Missile)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Longbolt_Missile", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Longbolt_Missile)); tableBulletType.insert(std::pair(BulletTypes::Longbolt_Missile.getID(), &BulletTypes::Longbolt_Missile)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATS_ATA_Laser_Battery", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::ATS_ATA_Laser_Battery)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATS_ATA_Laser_Battery", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::ATS_ATA_Laser_Battery)); tableBulletType.insert(std::pair(BulletTypes::ATS_ATA_Laser_Battery.getID(), &BulletTypes::ATS_ATA_Laser_Battery)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burst_Lasers", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Burst_Lasers)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burst_Lasers", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Burst_Lasers)); tableBulletType.insert(std::pair(BulletTypes::Burst_Lasers.getID(), &BulletTypes::Burst_Lasers)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Arclite_Shock_Cannon_Hit", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Arclite_Shock_Cannon_Hit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Arclite_Shock_Cannon_Hit", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Arclite_Shock_Cannon_Hit)); tableBulletType.insert(std::pair(BulletTypes::Arclite_Shock_Cannon_Hit.getID(), &BulletTypes::Arclite_Shock_Cannon_Hit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EMP_Missile", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::EMP_Missile)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EMP_Missile", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::EMP_Missile)); tableBulletType.insert(std::pair(BulletTypes::EMP_Missile.getID(), &BulletTypes::EMP_Missile)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dual_Photon_Blasters_Hit", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Dual_Photon_Blasters_Hit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dual_Photon_Blasters_Hit", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Dual_Photon_Blasters_Hit)); tableBulletType.insert(std::pair(BulletTypes::Dual_Photon_Blasters_Hit.getID(), &BulletTypes::Dual_Photon_Blasters_Hit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Particle_Beam_Hit", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Particle_Beam_Hit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Particle_Beam_Hit", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Particle_Beam_Hit)); tableBulletType.insert(std::pair(BulletTypes::Particle_Beam_Hit.getID(), &BulletTypes::Particle_Beam_Hit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Anti_Matter_Missile", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Anti_Matter_Missile)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Anti_Matter_Missile", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Anti_Matter_Missile)); tableBulletType.insert(std::pair(BulletTypes::Anti_Matter_Missile.getID(), &BulletTypes::Anti_Matter_Missile)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Pulse_Cannon", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Pulse_Cannon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Pulse_Cannon", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Pulse_Cannon)); tableBulletType.insert(std::pair(BulletTypes::Pulse_Cannon.getID(), &BulletTypes::Pulse_Cannon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Shockwave_Hit", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Psionic_Shockwave_Hit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Shockwave_Hit", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Psionic_Shockwave_Hit)); tableBulletType.insert(std::pair(BulletTypes::Psionic_Shockwave_Hit.getID(), &BulletTypes::Psionic_Shockwave_Hit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Storm", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Psionic_Storm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Storm", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Psionic_Storm)); tableBulletType.insert(std::pair(BulletTypes::Psionic_Storm.getID(), &BulletTypes::Psionic_Storm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yamato_Gun", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Yamato_Gun)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yamato_Gun", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Yamato_Gun)); tableBulletType.insert(std::pair(BulletTypes::Yamato_Gun.getID(), &BulletTypes::Yamato_Gun)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Phase_Disruptor", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Phase_Disruptor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Phase_Disruptor", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Phase_Disruptor)); tableBulletType.insert(std::pair(BulletTypes::Phase_Disruptor.getID(), &BulletTypes::Phase_Disruptor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "STA_STS_Cannon_Overlay", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::STA_STS_Cannon_Overlay)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "STA_STS_Cannon_Overlay", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::STA_STS_Cannon_Overlay)); tableBulletType.insert(std::pair(BulletTypes::STA_STS_Cannon_Overlay.getID(), &BulletTypes::STA_STS_Cannon_Overlay)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Sunken_Colony_Tentacle", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Sunken_Colony_Tentacle)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Sunken_Colony_Tentacle", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Sunken_Colony_Tentacle)); tableBulletType.insert(std::pair(BulletTypes::Sunken_Colony_Tentacle.getID(), &BulletTypes::Sunken_Colony_Tentacle)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Acid_Spore", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Acid_Spore)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Acid_Spore", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Acid_Spore)); tableBulletType.insert(std::pair(BulletTypes::Acid_Spore.getID(), &BulletTypes::Acid_Spore)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Glave_Wurm", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Glave_Wurm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Glave_Wurm", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Glave_Wurm)); tableBulletType.insert(std::pair(BulletTypes::Glave_Wurm.getID(), &BulletTypes::Glave_Wurm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Seeker_Spores", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Seeker_Spores)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Seeker_Spores", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Seeker_Spores)); tableBulletType.insert(std::pair(BulletTypes::Seeker_Spores.getID(), &BulletTypes::Seeker_Spores)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Queen_Spell_Carrier", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Queen_Spell_Carrier)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Queen_Spell_Carrier", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Queen_Spell_Carrier)); tableBulletType.insert(std::pair(BulletTypes::Queen_Spell_Carrier.getID(), &BulletTypes::Queen_Spell_Carrier)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Plague_Cloud", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Plague_Cloud)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Plague_Cloud", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Plague_Cloud)); tableBulletType.insert(std::pair(BulletTypes::Plague_Cloud.getID(), &BulletTypes::Plague_Cloud)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Consume", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Consume)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Consume", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Consume)); tableBulletType.insert(std::pair(BulletTypes::Consume.getID(), &BulletTypes::Consume)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ensnare", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Ensnare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ensnare", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Ensnare)); tableBulletType.insert(std::pair(BulletTypes::Ensnare.getID(), &BulletTypes::Ensnare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Needle_Spine_Hit", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Needle_Spine_Hit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Needle_Spine_Hit", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Needle_Spine_Hit)); tableBulletType.insert(std::pair(BulletTypes::Needle_Spine_Hit.getID(), &BulletTypes::Needle_Spine_Hit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Invisible", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Invisible)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Invisible", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Invisible)); tableBulletType.insert(std::pair(BulletTypes::Invisible.getID(), &BulletTypes::Invisible)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Optical_Flare_Grenade", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Optical_Flare_Grenade)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Optical_Flare_Grenade", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Optical_Flare_Grenade)); tableBulletType.insert(std::pair(BulletTypes::Optical_Flare_Grenade.getID(), &BulletTypes::Optical_Flare_Grenade)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Halo_Rockets", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Halo_Rockets)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Halo_Rockets", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Halo_Rockets)); tableBulletType.insert(std::pair(BulletTypes::Halo_Rockets.getID(), &BulletTypes::Halo_Rockets)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Subterranean_Spines", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Subterranean_Spines)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Subterranean_Spines", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Subterranean_Spines)); tableBulletType.insert(std::pair(BulletTypes::Subterranean_Spines.getID(), &BulletTypes::Subterranean_Spines)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Corrosive_Acid_Shot", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Corrosive_Acid_Shot)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Corrosive_Acid_Shot", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Corrosive_Acid_Shot)); tableBulletType.insert(std::pair(BulletTypes::Corrosive_Acid_Shot.getID(), &BulletTypes::Corrosive_Acid_Shot)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Neutron_Flare", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Neutron_Flare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Neutron_Flare", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Neutron_Flare)); tableBulletType.insert(std::pair(BulletTypes::Neutron_Flare.getID(), &BulletTypes::Neutron_Flare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::None)); tableBulletType.insert(std::pair(BulletTypes::None.getID(), &BulletTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/BulletType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&BulletTypes::Unknown)); tableBulletType.insert(std::pair(BulletTypes::Unknown.getID(), &BulletTypes::Unknown)); -cls = env->FindClass("Lbwapi/Color;"); +cls = env->FindClass("Lbwapi4/Color;"); getId = env->GetMethodID(cls,"", "(III)V"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Red", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Red.red(), Colors::Red.green(), Colors::Red.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Blue", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Blue.red(), Colors::Blue.green(), Colors::Blue.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Teal", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Teal.red(), Colors::Teal.green(), Colors::Teal.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Purple", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Purple.red(), Colors::Purple.green(), Colors::Purple.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Orange", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Orange.red(), Colors::Orange.green(), Colors::Orange.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Brown", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Brown.red(), Colors::Brown.green(), Colors::Brown.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "White", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::White.red(), Colors::White.green(), Colors::White.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yellow", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Yellow.red(), Colors::Yellow.green(), Colors::Yellow.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Green", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Green.red(), Colors::Green.green(), Colors::Green.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cyan", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Cyan.red(), Colors::Cyan.green(), Colors::Cyan.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Black", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Black.red(), Colors::Black.green(), Colors::Black.blue())); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Grey", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Grey.red(), Colors::Grey.green(), Colors::Grey.blue())); -cls = env->FindClass("Lbwapi/DamageType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/DamageType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Independent", "Lbwapi/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Independent)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Red", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Red.red(), Colors::Red.green(), Colors::Red.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Blue", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Blue.red(), Colors::Blue.green(), Colors::Blue.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Teal", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Teal.red(), Colors::Teal.green(), Colors::Teal.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Purple", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Purple.red(), Colors::Purple.green(), Colors::Purple.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Orange", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Orange.red(), Colors::Orange.green(), Colors::Orange.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Brown", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Brown.red(), Colors::Brown.green(), Colors::Brown.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "White", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::White.red(), Colors::White.green(), Colors::White.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yellow", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Yellow.red(), Colors::Yellow.green(), Colors::Yellow.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Green", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Green.red(), Colors::Green.green(), Colors::Green.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cyan", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Cyan.red(), Colors::Cyan.green(), Colors::Cyan.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Black", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Black.red(), Colors::Black.green(), Colors::Black.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Grey", "Lbwapi4/Color;"), env->NewObject(cls, getId, Colors::Grey.red(), Colors::Grey.green(), Colors::Grey.blue())); +cls = env->FindClass("Lbwapi4/DamageType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/DamageType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Independent", "Lbwapi4/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Independent)); tableDamageType.insert(std::pair(DamageTypes::Independent.getID(), &DamageTypes::Independent)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Explosive", "Lbwapi/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Explosive)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Explosive", "Lbwapi4/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Explosive)); tableDamageType.insert(std::pair(DamageTypes::Explosive.getID(), &DamageTypes::Explosive)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Concussive", "Lbwapi/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Concussive)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Concussive", "Lbwapi4/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Concussive)); tableDamageType.insert(std::pair(DamageTypes::Concussive.getID(), &DamageTypes::Concussive)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Normal", "Lbwapi/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Normal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Normal", "Lbwapi4/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Normal)); tableDamageType.insert(std::pair(DamageTypes::Normal.getID(), &DamageTypes::Normal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ignore_Armor", "Lbwapi/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Ignore_Armor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ignore_Armor", "Lbwapi4/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Ignore_Armor)); tableDamageType.insert(std::pair(DamageTypes::Ignore_Armor.getID(), &DamageTypes::Ignore_Armor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::None)); tableDamageType.insert(std::pair(DamageTypes::None.getID(), &DamageTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/DamageType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&DamageTypes::Unknown)); tableDamageType.insert(std::pair(DamageTypes::Unknown.getID(), &DamageTypes::Unknown)); -cls = env->FindClass("Lbwapi/Error;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/Error;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unit_Does_Not_Exist", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unit_Does_Not_Exist)); +cls = env->FindClass("Lbwapi4/Error;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/Error;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unit_Does_Not_Exist", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unit_Does_Not_Exist)); tableError.insert(std::pair(Errors::Unit_Does_Not_Exist.getID(), &Errors::Unit_Does_Not_Exist)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unit_Not_Visible", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unit_Not_Visible)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unit_Not_Visible", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unit_Not_Visible)); tableError.insert(std::pair(Errors::Unit_Not_Visible.getID(), &Errors::Unit_Not_Visible)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unit_Not_Owned", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unit_Not_Owned)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unit_Not_Owned", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unit_Not_Owned)); tableError.insert(std::pair(Errors::Unit_Not_Owned.getID(), &Errors::Unit_Not_Owned)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unit_Busy", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unit_Busy)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unit_Busy", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unit_Busy)); tableError.insert(std::pair(Errors::Unit_Busy.getID(), &Errors::Unit_Busy)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Incompatible_UnitType", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Incompatible_UnitType)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Incompatible_UnitType", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Incompatible_UnitType)); tableError.insert(std::pair(Errors::Incompatible_UnitType.getID(), &Errors::Incompatible_UnitType)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Incompatible_TechType", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Incompatible_TechType)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Incompatible_TechType", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Incompatible_TechType)); tableError.insert(std::pair(Errors::Incompatible_TechType.getID(), &Errors::Incompatible_TechType)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Incompatible_State", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Incompatible_State)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Incompatible_State", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Incompatible_State)); tableError.insert(std::pair(Errors::Incompatible_State.getID(), &Errors::Incompatible_State)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Already_Researched", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Already_Researched)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Already_Researched", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Already_Researched)); tableError.insert(std::pair(Errors::Already_Researched.getID(), &Errors::Already_Researched)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fully_Upgraded", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Fully_Upgraded)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fully_Upgraded", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Fully_Upgraded)); tableError.insert(std::pair(Errors::Fully_Upgraded.getID(), &Errors::Fully_Upgraded)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Currently_Researching", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Currently_Researching)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Currently_Researching", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Currently_Researching)); tableError.insert(std::pair(Errors::Currently_Researching.getID(), &Errors::Currently_Researching)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Currently_Upgrading", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Currently_Upgrading)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Currently_Upgrading", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Currently_Upgrading)); tableError.insert(std::pair(Errors::Currently_Upgrading.getID(), &Errors::Currently_Upgrading)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Minerals", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Minerals)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Minerals", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Minerals)); tableError.insert(std::pair(Errors::Insufficient_Minerals.getID(), &Errors::Insufficient_Minerals)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Gas", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Gas)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Gas", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Gas)); tableError.insert(std::pair(Errors::Insufficient_Gas.getID(), &Errors::Insufficient_Gas)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Supply", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Supply)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Supply", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Supply)); tableError.insert(std::pair(Errors::Insufficient_Supply.getID(), &Errors::Insufficient_Supply)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Energy", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Energy)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Energy", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Energy)); tableError.insert(std::pair(Errors::Insufficient_Energy.getID(), &Errors::Insufficient_Energy)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Tech", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Tech)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Tech", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Tech)); tableError.insert(std::pair(Errors::Insufficient_Tech.getID(), &Errors::Insufficient_Tech)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Ammo", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Ammo)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Ammo", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Ammo)); tableError.insert(std::pair(Errors::Insufficient_Ammo.getID(), &Errors::Insufficient_Ammo)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Space", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Space)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Insufficient_Space", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Insufficient_Space)); tableError.insert(std::pair(Errors::Insufficient_Space.getID(), &Errors::Insufficient_Space)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Invalid_Tile_Position", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Invalid_Tile_Position)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Invalid_Tile_Position", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Invalid_Tile_Position)); tableError.insert(std::pair(Errors::Invalid_Tile_Position.getID(), &Errors::Invalid_Tile_Position)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unbuildable_Location", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unbuildable_Location)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unbuildable_Location", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unbuildable_Location)); tableError.insert(std::pair(Errors::Unbuildable_Location.getID(), &Errors::Unbuildable_Location)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unreachable_Location", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unreachable_Location)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unreachable_Location", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unreachable_Location)); tableError.insert(std::pair(Errors::Unreachable_Location.getID(), &Errors::Unreachable_Location)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Out_Of_Range", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Out_Of_Range)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Out_Of_Range", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Out_Of_Range)); tableError.insert(std::pair(Errors::Out_Of_Range.getID(), &Errors::Out_Of_Range)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unable_To_Hit", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unable_To_Hit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unable_To_Hit", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unable_To_Hit)); tableError.insert(std::pair(Errors::Unable_To_Hit.getID(), &Errors::Unable_To_Hit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Access_Denied", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Access_Denied)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Access_Denied", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Access_Denied)); tableError.insert(std::pair(Errors::Access_Denied.getID(), &Errors::Access_Denied)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "File_Not_Found", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::File_Not_Found)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "File_Not_Found", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::File_Not_Found)); tableError.insert(std::pair(Errors::File_Not_Found.getID(), &Errors::File_Not_Found)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Invalid_Parameter", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Invalid_Parameter)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Invalid_Parameter", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Invalid_Parameter)); tableError.insert(std::pair(Errors::Invalid_Parameter.getID(), &Errors::Invalid_Parameter)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::None)); tableError.insert(std::pair(Errors::None.getID(), &Errors::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/Error;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Errors::Unknown)); tableError.insert(std::pair(Errors::Unknown.getID(), &Errors::Unknown)); -cls = env->FindClass("Lbwapi/ExplosionType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/ExplosionType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::None)); +cls = env->FindClass("Lbwapi4/ExplosionType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/ExplosionType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::None)); tableExplosionType.insert(std::pair(ExplosionTypes::None.getID(), &ExplosionTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Normal", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Normal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Normal", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Normal)); tableExplosionType.insert(std::pair(ExplosionTypes::Normal.getID(), &ExplosionTypes::Normal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Radial_Splash", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Radial_Splash)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Radial_Splash", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Radial_Splash)); tableExplosionType.insert(std::pair(ExplosionTypes::Radial_Splash.getID(), &ExplosionTypes::Radial_Splash)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Enemy_Splash", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Enemy_Splash)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Enemy_Splash", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Enemy_Splash)); tableExplosionType.insert(std::pair(ExplosionTypes::Enemy_Splash.getID(), &ExplosionTypes::Enemy_Splash)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Lockdown", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Lockdown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Lockdown", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Lockdown)); tableExplosionType.insert(std::pair(ExplosionTypes::Lockdown.getID(), &ExplosionTypes::Lockdown)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Nuclear_Missile", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Nuclear_Missile)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Nuclear_Missile", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Nuclear_Missile)); tableExplosionType.insert(std::pair(ExplosionTypes::Nuclear_Missile.getID(), &ExplosionTypes::Nuclear_Missile)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Parasite", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Parasite)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Parasite", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Parasite)); tableExplosionType.insert(std::pair(ExplosionTypes::Parasite.getID(), &ExplosionTypes::Parasite)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Broodlings", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Broodlings)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Broodlings", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Broodlings)); tableExplosionType.insert(std::pair(ExplosionTypes::Broodlings.getID(), &ExplosionTypes::Broodlings)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EMP_Shockwave", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::EMP_Shockwave)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EMP_Shockwave", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::EMP_Shockwave)); tableExplosionType.insert(std::pair(ExplosionTypes::EMP_Shockwave.getID(), &ExplosionTypes::EMP_Shockwave)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Irradiate", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Irradiate)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Irradiate", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Irradiate)); tableExplosionType.insert(std::pair(ExplosionTypes::Irradiate.getID(), &ExplosionTypes::Irradiate)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ensnare", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Ensnare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ensnare", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Ensnare)); tableExplosionType.insert(std::pair(ExplosionTypes::Ensnare.getID(), &ExplosionTypes::Ensnare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Plague", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Plague)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Plague", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Plague)); tableExplosionType.insert(std::pair(ExplosionTypes::Plague.getID(), &ExplosionTypes::Plague)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stasis_Field", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Stasis_Field)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stasis_Field", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Stasis_Field)); tableExplosionType.insert(std::pair(ExplosionTypes::Stasis_Field.getID(), &ExplosionTypes::Stasis_Field)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dark_Swarm", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Dark_Swarm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dark_Swarm", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Dark_Swarm)); tableExplosionType.insert(std::pair(ExplosionTypes::Dark_Swarm.getID(), &ExplosionTypes::Dark_Swarm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Consume", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Consume)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Consume", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Consume)); tableExplosionType.insert(std::pair(ExplosionTypes::Consume.getID(), &ExplosionTypes::Consume)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yamato_Gun", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Yamato_Gun)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yamato_Gun", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Yamato_Gun)); tableExplosionType.insert(std::pair(ExplosionTypes::Yamato_Gun.getID(), &ExplosionTypes::Yamato_Gun)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Restoration", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Restoration)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Restoration", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Restoration)); tableExplosionType.insert(std::pair(ExplosionTypes::Restoration.getID(), &ExplosionTypes::Restoration)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Disruption_Web", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Disruption_Web)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Disruption_Web", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Disruption_Web)); tableExplosionType.insert(std::pair(ExplosionTypes::Disruption_Web.getID(), &ExplosionTypes::Disruption_Web)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Corrosive_Acid", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Corrosive_Acid)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Corrosive_Acid", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Corrosive_Acid)); tableExplosionType.insert(std::pair(ExplosionTypes::Corrosive_Acid.getID(), &ExplosionTypes::Corrosive_Acid)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Mind_Control", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Mind_Control)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Mind_Control", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Mind_Control)); tableExplosionType.insert(std::pair(ExplosionTypes::Mind_Control.getID(), &ExplosionTypes::Mind_Control)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Feedback", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Feedback)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Feedback", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Feedback)); tableExplosionType.insert(std::pair(ExplosionTypes::Feedback.getID(), &ExplosionTypes::Feedback)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Optical_Flare", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Optical_Flare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Optical_Flare", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Optical_Flare)); tableExplosionType.insert(std::pair(ExplosionTypes::Optical_Flare.getID(), &ExplosionTypes::Optical_Flare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Maelstrom", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Maelstrom)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Maelstrom", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Maelstrom)); tableExplosionType.insert(std::pair(ExplosionTypes::Maelstrom.getID(), &ExplosionTypes::Maelstrom)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Air_Splash", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Air_Splash)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Air_Splash", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Air_Splash)); tableExplosionType.insert(std::pair(ExplosionTypes::Air_Splash.getID(), &ExplosionTypes::Air_Splash)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/ExplosionType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&ExplosionTypes::Unknown)); tableExplosionType.insert(std::pair(ExplosionTypes::Unknown.getID(), &ExplosionTypes::Unknown)); -cls = env->FindClass("Lbwapi/GameType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/GameType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Melee", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Melee)); +cls = env->FindClass("Lbwapi4/GameType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/GameType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Melee", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Melee)); tableGameType.insert(std::pair(GameTypes::Melee.getID(), &GameTypes::Melee)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Free_For_All", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Free_For_All)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Free_For_All", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Free_For_All)); tableGameType.insert(std::pair(GameTypes::Free_For_All.getID(), &GameTypes::Free_For_All)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "One_on_One", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::One_on_One)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "One_on_One", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::One_on_One)); tableGameType.insert(std::pair(GameTypes::One_on_One.getID(), &GameTypes::One_on_One)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Capture_The_Flag", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Capture_The_Flag)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Capture_The_Flag", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Capture_The_Flag)); tableGameType.insert(std::pair(GameTypes::Capture_The_Flag.getID(), &GameTypes::Capture_The_Flag)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Greed", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Greed)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Greed", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Greed)); tableGameType.insert(std::pair(GameTypes::Greed.getID(), &GameTypes::Greed)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Slaughter", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Slaughter)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Slaughter", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Slaughter)); tableGameType.insert(std::pair(GameTypes::Slaughter.getID(), &GameTypes::Slaughter)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Sudden_Death", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Sudden_Death)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Sudden_Death", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Sudden_Death)); tableGameType.insert(std::pair(GameTypes::Sudden_Death.getID(), &GameTypes::Sudden_Death)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ladder", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Ladder)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ladder", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Ladder)); tableGameType.insert(std::pair(GameTypes::Ladder.getID(), &GameTypes::Ladder)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Use_Map_Settings", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Use_Map_Settings)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Use_Map_Settings", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Use_Map_Settings)); tableGameType.insert(std::pair(GameTypes::Use_Map_Settings.getID(), &GameTypes::Use_Map_Settings)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Team_Melee", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Team_Melee)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Team_Melee", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Team_Melee)); tableGameType.insert(std::pair(GameTypes::Team_Melee.getID(), &GameTypes::Team_Melee)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Team_Free_For_All", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Team_Free_For_All)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Team_Free_For_All", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Team_Free_For_All)); tableGameType.insert(std::pair(GameTypes::Team_Free_For_All.getID(), &GameTypes::Team_Free_For_All)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Team_Capture_The_Flag", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Team_Capture_The_Flag)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Team_Capture_The_Flag", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Team_Capture_The_Flag)); tableGameType.insert(std::pair(GameTypes::Team_Capture_The_Flag.getID(), &GameTypes::Team_Capture_The_Flag)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Top_vs_Bottom", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Top_vs_Bottom)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Top_vs_Bottom", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Top_vs_Bottom)); tableGameType.insert(std::pair(GameTypes::Top_vs_Bottom.getID(), &GameTypes::Top_vs_Bottom)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::None)); tableGameType.insert(std::pair(GameTypes::None.getID(), &GameTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/GameType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&GameTypes::Unknown)); tableGameType.insert(std::pair(GameTypes::Unknown.getID(), &GameTypes::Unknown)); -cls = env->FindClass("Lbwapi/Order;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/Order;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Die", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Die)); +cls = env->FindClass("Lbwapi4/Order;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/Order;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Die", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Die)); tableOrder.insert(std::pair(Orders::Die.getID(), &Orders::Die)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stop", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Stop)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stop", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Stop)); tableOrder.insert(std::pair(Orders::Stop.getID(), &Orders::Stop)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Guard", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Guard)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Guard", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Guard)); tableOrder.insert(std::pair(Orders::Guard.getID(), &Orders::Guard)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PlayerGuard", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PlayerGuard)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PlayerGuard", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PlayerGuard)); tableOrder.insert(std::pair(Orders::PlayerGuard.getID(), &Orders::PlayerGuard)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "TurretGuard", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::TurretGuard)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "TurretGuard", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::TurretGuard)); tableOrder.insert(std::pair(Orders::TurretGuard.getID(), &Orders::TurretGuard)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "BunkerGuard", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::BunkerGuard)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "BunkerGuard", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::BunkerGuard)); tableOrder.insert(std::pair(Orders::BunkerGuard.getID(), &Orders::BunkerGuard)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Move", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Move)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Move", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Move)); tableOrder.insert(std::pair(Orders::Move.getID(), &Orders::Move)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AttackUnit", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::AttackUnit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AttackUnit", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::AttackUnit)); tableOrder.insert(std::pair(Orders::AttackUnit.getID(), &Orders::AttackUnit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AttackTile", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::AttackTile)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AttackTile", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::AttackTile)); tableOrder.insert(std::pair(Orders::AttackTile.getID(), &Orders::AttackTile)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hover", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Hover)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hover", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Hover)); tableOrder.insert(std::pair(Orders::Hover.getID(), &Orders::Hover)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AttackMove", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::AttackMove)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AttackMove", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::AttackMove)); tableOrder.insert(std::pair(Orders::AttackMove.getID(), &Orders::AttackMove)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "InfestedCommandCenter", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::InfestedCommandCenter)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "InfestedCommandCenter", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::InfestedCommandCenter)); tableOrder.insert(std::pair(Orders::InfestedCommandCenter.getID(), &Orders::InfestedCommandCenter)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "UnusedNothing", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::UnusedNothing)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "UnusedNothing", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::UnusedNothing)); tableOrder.insert(std::pair(Orders::UnusedNothing.getID(), &Orders::UnusedNothing)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "UnusedPowerup", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::UnusedPowerup)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "UnusedPowerup", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::UnusedPowerup)); tableOrder.insert(std::pair(Orders::UnusedPowerup.getID(), &Orders::UnusedPowerup)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "TowerGuard", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::TowerGuard)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "TowerGuard", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::TowerGuard)); tableOrder.insert(std::pair(Orders::TowerGuard.getID(), &Orders::TowerGuard)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "VultureMine", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::VultureMine)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "VultureMine", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::VultureMine)); tableOrder.insert(std::pair(Orders::VultureMine.getID(), &Orders::VultureMine)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Nothing", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Nothing)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Nothing", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Nothing)); tableOrder.insert(std::pair(Orders::Nothing.getID(), &Orders::Nothing)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastInfestation", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastInfestation)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastInfestation", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastInfestation)); tableOrder.insert(std::pair(Orders::CastInfestation.getID(), &Orders::CastInfestation)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "InfestingCommandCenter", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::InfestingCommandCenter)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "InfestingCommandCenter", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::InfestingCommandCenter)); tableOrder.insert(std::pair(Orders::InfestingCommandCenter.getID(), &Orders::InfestingCommandCenter)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PlaceBuilding", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PlaceBuilding)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PlaceBuilding", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PlaceBuilding)); tableOrder.insert(std::pair(Orders::PlaceBuilding.getID(), &Orders::PlaceBuilding)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CreateProtossBuilding", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CreateProtossBuilding)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CreateProtossBuilding", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CreateProtossBuilding)); tableOrder.insert(std::pair(Orders::CreateProtossBuilding.getID(), &Orders::CreateProtossBuilding)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ConstructingBuilding", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ConstructingBuilding)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ConstructingBuilding", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ConstructingBuilding)); tableOrder.insert(std::pair(Orders::ConstructingBuilding.getID(), &Orders::ConstructingBuilding)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Repair", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Repair)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Repair", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Repair)); tableOrder.insert(std::pair(Orders::Repair.getID(), &Orders::Repair)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PlaceAddon", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PlaceAddon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PlaceAddon", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PlaceAddon)); tableOrder.insert(std::pair(Orders::PlaceAddon.getID(), &Orders::PlaceAddon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "BuildAddon", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::BuildAddon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "BuildAddon", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::BuildAddon)); tableOrder.insert(std::pair(Orders::BuildAddon.getID(), &Orders::BuildAddon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Train", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Train)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Train", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Train)); tableOrder.insert(std::pair(Orders::Train.getID(), &Orders::Train)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RallyPointUnit", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RallyPointUnit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RallyPointUnit", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RallyPointUnit)); tableOrder.insert(std::pair(Orders::RallyPointUnit.getID(), &Orders::RallyPointUnit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RallyPointTile", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RallyPointTile)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RallyPointTile", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RallyPointTile)); tableOrder.insert(std::pair(Orders::RallyPointTile.getID(), &Orders::RallyPointTile)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ZergBirth", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ZergBirth)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ZergBirth", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ZergBirth)); tableOrder.insert(std::pair(Orders::ZergBirth.getID(), &Orders::ZergBirth)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ZergUnitMorph", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ZergUnitMorph)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ZergUnitMorph", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ZergUnitMorph)); tableOrder.insert(std::pair(Orders::ZergUnitMorph.getID(), &Orders::ZergUnitMorph)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ZergBuildingMorph", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ZergBuildingMorph)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ZergBuildingMorph", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ZergBuildingMorph)); tableOrder.insert(std::pair(Orders::ZergBuildingMorph.getID(), &Orders::ZergBuildingMorph)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "IncompleteBuilding", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::IncompleteBuilding)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "IncompleteBuilding", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::IncompleteBuilding)); tableOrder.insert(std::pair(Orders::IncompleteBuilding.getID(), &Orders::IncompleteBuilding)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "BuildNydusExit", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::BuildNydusExit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "BuildNydusExit", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::BuildNydusExit)); tableOrder.insert(std::pair(Orders::BuildNydusExit.getID(), &Orders::BuildNydusExit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EnterNydusCanal", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::EnterNydusCanal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EnterNydusCanal", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::EnterNydusCanal)); tableOrder.insert(std::pair(Orders::EnterNydusCanal.getID(), &Orders::EnterNydusCanal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Follow", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Follow)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Follow", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Follow)); tableOrder.insert(std::pair(Orders::Follow.getID(), &Orders::Follow)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Carrier", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Carrier)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Carrier", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Carrier)); tableOrder.insert(std::pair(Orders::Carrier.getID(), &Orders::Carrier)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ReaverCarrierMove", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ReaverCarrierMove)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ReaverCarrierMove", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ReaverCarrierMove)); tableOrder.insert(std::pair(Orders::ReaverCarrierMove.getID(), &Orders::ReaverCarrierMove)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CarrierIgnore2", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CarrierIgnore2)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CarrierIgnore2", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CarrierIgnore2)); tableOrder.insert(std::pair(Orders::CarrierIgnore2.getID(), &Orders::CarrierIgnore2)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Reaver", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Reaver)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Reaver", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Reaver)); tableOrder.insert(std::pair(Orders::Reaver.getID(), &Orders::Reaver)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "TrainFighter", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::TrainFighter)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "TrainFighter", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::TrainFighter)); tableOrder.insert(std::pair(Orders::TrainFighter.getID(), &Orders::TrainFighter)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "InterceptorAttack", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::InterceptorAttack)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "InterceptorAttack", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::InterceptorAttack)); tableOrder.insert(std::pair(Orders::InterceptorAttack.getID(), &Orders::InterceptorAttack)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ScarabAttack", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ScarabAttack)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ScarabAttack", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ScarabAttack)); tableOrder.insert(std::pair(Orders::ScarabAttack.getID(), &Orders::ScarabAttack)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RechargeShieldsUnit", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RechargeShieldsUnit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RechargeShieldsUnit", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RechargeShieldsUnit)); tableOrder.insert(std::pair(Orders::RechargeShieldsUnit.getID(), &Orders::RechargeShieldsUnit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RechargeShieldsBattery", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RechargeShieldsBattery)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RechargeShieldsBattery", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RechargeShieldsBattery)); tableOrder.insert(std::pair(Orders::RechargeShieldsBattery.getID(), &Orders::RechargeShieldsBattery)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ShieldBattery", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ShieldBattery)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ShieldBattery", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ShieldBattery)); tableOrder.insert(std::pair(Orders::ShieldBattery.getID(), &Orders::ShieldBattery)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "InterceptorReturn", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::InterceptorReturn)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "InterceptorReturn", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::InterceptorReturn)); tableOrder.insert(std::pair(Orders::InterceptorReturn.getID(), &Orders::InterceptorReturn)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "BuildingLand", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::BuildingLand)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "BuildingLand", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::BuildingLand)); tableOrder.insert(std::pair(Orders::BuildingLand.getID(), &Orders::BuildingLand)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "BuildingLiftOff", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::BuildingLiftOff)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "BuildingLiftOff", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::BuildingLiftOff)); tableOrder.insert(std::pair(Orders::BuildingLiftOff.getID(), &Orders::BuildingLiftOff)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "DroneLiftOff", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::DroneLiftOff)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "DroneLiftOff", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::DroneLiftOff)); tableOrder.insert(std::pair(Orders::DroneLiftOff.getID(), &Orders::DroneLiftOff)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "LiftingOff", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::LiftingOff)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "LiftingOff", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::LiftingOff)); tableOrder.insert(std::pair(Orders::LiftingOff.getID(), &Orders::LiftingOff)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ResearchTech", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ResearchTech)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ResearchTech", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ResearchTech)); tableOrder.insert(std::pair(Orders::ResearchTech.getID(), &Orders::ResearchTech)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Upgrade", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Upgrade)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Upgrade", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Upgrade)); tableOrder.insert(std::pair(Orders::Upgrade.getID(), &Orders::Upgrade)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Larva", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Larva)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Larva", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Larva)); tableOrder.insert(std::pair(Orders::Larva.getID(), &Orders::Larva)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "SpawningLarva", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::SpawningLarva)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "SpawningLarva", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::SpawningLarva)); tableOrder.insert(std::pair(Orders::SpawningLarva.getID(), &Orders::SpawningLarva)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Harvest1", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Harvest1)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Harvest1", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Harvest1)); tableOrder.insert(std::pair(Orders::Harvest1.getID(), &Orders::Harvest1)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Harvest2", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Harvest2)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Harvest2", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Harvest2)); tableOrder.insert(std::pair(Orders::Harvest2.getID(), &Orders::Harvest2)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MoveToGas", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MoveToGas)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MoveToGas", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MoveToGas)); tableOrder.insert(std::pair(Orders::MoveToGas.getID(), &Orders::MoveToGas)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "WaitForGas", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::WaitForGas)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "WaitForGas", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::WaitForGas)); tableOrder.insert(std::pair(Orders::WaitForGas.getID(), &Orders::WaitForGas)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HarvestGas", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HarvestGas)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HarvestGas", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HarvestGas)); tableOrder.insert(std::pair(Orders::HarvestGas.getID(), &Orders::HarvestGas)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ReturnGas", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ReturnGas)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ReturnGas", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ReturnGas)); tableOrder.insert(std::pair(Orders::ReturnGas.getID(), &Orders::ReturnGas)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MoveToMinerals", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MoveToMinerals)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MoveToMinerals", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MoveToMinerals)); tableOrder.insert(std::pair(Orders::MoveToMinerals.getID(), &Orders::MoveToMinerals)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "WaitForMinerals", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::WaitForMinerals)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "WaitForMinerals", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::WaitForMinerals)); tableOrder.insert(std::pair(Orders::WaitForMinerals.getID(), &Orders::WaitForMinerals)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MiningMinerals", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MiningMinerals)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MiningMinerals", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MiningMinerals)); tableOrder.insert(std::pair(Orders::MiningMinerals.getID(), &Orders::MiningMinerals)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Harvest3", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Harvest3)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Harvest3", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Harvest3)); tableOrder.insert(std::pair(Orders::Harvest3.getID(), &Orders::Harvest3)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Harvest4", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Harvest4)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Harvest4", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Harvest4)); tableOrder.insert(std::pair(Orders::Harvest4.getID(), &Orders::Harvest4)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ReturnMinerals", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ReturnMinerals)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ReturnMinerals", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ReturnMinerals)); tableOrder.insert(std::pair(Orders::ReturnMinerals.getID(), &Orders::ReturnMinerals)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Interrupted", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Interrupted)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Interrupted", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Interrupted)); tableOrder.insert(std::pair(Orders::Interrupted.getID(), &Orders::Interrupted)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EnterTransport", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::EnterTransport)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EnterTransport", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::EnterTransport)); tableOrder.insert(std::pair(Orders::EnterTransport.getID(), &Orders::EnterTransport)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PickupIdle", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PickupIdle)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PickupIdle", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PickupIdle)); tableOrder.insert(std::pair(Orders::PickupIdle.getID(), &Orders::PickupIdle)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PickupTransport", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PickupTransport)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PickupTransport", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PickupTransport)); tableOrder.insert(std::pair(Orders::PickupTransport.getID(), &Orders::PickupTransport)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PickupBunker", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PickupBunker)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PickupBunker", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PickupBunker)); tableOrder.insert(std::pair(Orders::PickupBunker.getID(), &Orders::PickupBunker)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Pickup4", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Pickup4)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Pickup4", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Pickup4)); tableOrder.insert(std::pair(Orders::Pickup4.getID(), &Orders::Pickup4)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PowerupIdle", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PowerupIdle)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PowerupIdle", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PowerupIdle)); tableOrder.insert(std::pair(Orders::PowerupIdle.getID(), &Orders::PowerupIdle)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Sieging", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Sieging)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Sieging", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Sieging)); tableOrder.insert(std::pair(Orders::Sieging.getID(), &Orders::Sieging)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unsieging", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Unsieging)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unsieging", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Unsieging)); tableOrder.insert(std::pair(Orders::Unsieging.getID(), &Orders::Unsieging)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "InitCreepGrowth", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::InitCreepGrowth)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "InitCreepGrowth", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::InitCreepGrowth)); tableOrder.insert(std::pair(Orders::InitCreepGrowth.getID(), &Orders::InitCreepGrowth)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "SpreadCreep", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::SpreadCreep)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "SpreadCreep", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::SpreadCreep)); tableOrder.insert(std::pair(Orders::SpreadCreep.getID(), &Orders::SpreadCreep)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "StoppingCreepGrowth", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::StoppingCreepGrowth)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "StoppingCreepGrowth", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::StoppingCreepGrowth)); tableOrder.insert(std::pair(Orders::StoppingCreepGrowth.getID(), &Orders::StoppingCreepGrowth)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "GuardianAspect", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::GuardianAspect)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "GuardianAspect", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::GuardianAspect)); tableOrder.insert(std::pair(Orders::GuardianAspect.getID(), &Orders::GuardianAspect)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ArchonWarp", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ArchonWarp)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ArchonWarp", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ArchonWarp)); tableOrder.insert(std::pair(Orders::ArchonWarp.getID(), &Orders::ArchonWarp)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CompletingArchonSummon", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CompletingArchonSummon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CompletingArchonSummon", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CompletingArchonSummon)); tableOrder.insert(std::pair(Orders::CompletingArchonSummon.getID(), &Orders::CompletingArchonSummon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HoldPosition", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HoldPosition)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HoldPosition", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HoldPosition)); tableOrder.insert(std::pair(Orders::HoldPosition.getID(), &Orders::HoldPosition)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cloak", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Cloak)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cloak", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Cloak)); tableOrder.insert(std::pair(Orders::Cloak.getID(), &Orders::Cloak)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Decloak", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Decloak)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Decloak", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Decloak)); tableOrder.insert(std::pair(Orders::Decloak.getID(), &Orders::Decloak)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unload", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Unload)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unload", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Unload)); tableOrder.insert(std::pair(Orders::Unload.getID(), &Orders::Unload)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MoveUnload", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MoveUnload)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MoveUnload", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MoveUnload)); tableOrder.insert(std::pair(Orders::MoveUnload.getID(), &Orders::MoveUnload)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "FireYamatoGun", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::FireYamatoGun)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "FireYamatoGun", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::FireYamatoGun)); tableOrder.insert(std::pair(Orders::FireYamatoGun.getID(), &Orders::FireYamatoGun)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastLockdown", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastLockdown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastLockdown", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastLockdown)); tableOrder.insert(std::pair(Orders::CastLockdown.getID(), &Orders::CastLockdown)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burrowing", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Burrowing)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burrowing", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Burrowing)); tableOrder.insert(std::pair(Orders::Burrowing.getID(), &Orders::Burrowing)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burrowed", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Burrowed)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burrowed", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Burrowed)); tableOrder.insert(std::pair(Orders::Burrowed.getID(), &Orders::Burrowed)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unburrowing", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Unburrowing)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unburrowing", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Unburrowing)); tableOrder.insert(std::pair(Orders::Unburrowing.getID(), &Orders::Unburrowing)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastDarkSwarm", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastDarkSwarm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastDarkSwarm", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastDarkSwarm)); tableOrder.insert(std::pair(Orders::CastDarkSwarm.getID(), &Orders::CastDarkSwarm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastParasite", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastParasite)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastParasite", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastParasite)); tableOrder.insert(std::pair(Orders::CastParasite.getID(), &Orders::CastParasite)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastSpawnBroodlings", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastSpawnBroodlings)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastSpawnBroodlings", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastSpawnBroodlings)); tableOrder.insert(std::pair(Orders::CastSpawnBroodlings.getID(), &Orders::CastSpawnBroodlings)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastEMPShockwave", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastEMPShockwave)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastEMPShockwave", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastEMPShockwave)); tableOrder.insert(std::pair(Orders::CastEMPShockwave.getID(), &Orders::CastEMPShockwave)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukeWait", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukeWait)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukeWait", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukeWait)); tableOrder.insert(std::pair(Orders::NukeWait.getID(), &Orders::NukeWait)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukeTrain", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukeTrain)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukeTrain", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukeTrain)); tableOrder.insert(std::pair(Orders::NukeTrain.getID(), &Orders::NukeTrain)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukeLaunch", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukeLaunch)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukeLaunch", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukeLaunch)); tableOrder.insert(std::pair(Orders::NukeLaunch.getID(), &Orders::NukeLaunch)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukePaint", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukePaint)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukePaint", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukePaint)); tableOrder.insert(std::pair(Orders::NukePaint.getID(), &Orders::NukePaint)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukeUnit", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukeUnit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukeUnit", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukeUnit)); tableOrder.insert(std::pair(Orders::NukeUnit.getID(), &Orders::NukeUnit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastNuclearStrike", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastNuclearStrike)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastNuclearStrike", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastNuclearStrike)); tableOrder.insert(std::pair(Orders::CastNuclearStrike.getID(), &Orders::CastNuclearStrike)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukeTrack", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukeTrack)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "NukeTrack", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::NukeTrack)); tableOrder.insert(std::pair(Orders::NukeTrack.getID(), &Orders::NukeTrack)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CloakNearbyUnits", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CloakNearbyUnits)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CloakNearbyUnits", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CloakNearbyUnits)); tableOrder.insert(std::pair(Orders::CloakNearbyUnits.getID(), &Orders::CloakNearbyUnits)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PlaceMine", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PlaceMine)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PlaceMine", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::PlaceMine)); tableOrder.insert(std::pair(Orders::PlaceMine.getID(), &Orders::PlaceMine)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RightClickAction", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RightClickAction)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RightClickAction", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RightClickAction)); tableOrder.insert(std::pair(Orders::RightClickAction.getID(), &Orders::RightClickAction)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastRecall", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastRecall)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastRecall", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastRecall)); tableOrder.insert(std::pair(Orders::CastRecall.getID(), &Orders::CastRecall)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Teleport", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Teleport)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Teleport", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Teleport)); tableOrder.insert(std::pair(Orders::Teleport.getID(), &Orders::Teleport)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastScannerSweep", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastScannerSweep)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastScannerSweep", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastScannerSweep)); tableOrder.insert(std::pair(Orders::CastScannerSweep.getID(), &Orders::CastScannerSweep)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Scanner", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Scanner)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Scanner", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Scanner)); tableOrder.insert(std::pair(Orders::Scanner.getID(), &Orders::Scanner)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastDefensiveMatrix", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastDefensiveMatrix)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastDefensiveMatrix", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastDefensiveMatrix)); tableOrder.insert(std::pair(Orders::CastDefensiveMatrix.getID(), &Orders::CastDefensiveMatrix)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastPsionicStorm", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastPsionicStorm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastPsionicStorm", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastPsionicStorm)); tableOrder.insert(std::pair(Orders::CastPsionicStorm.getID(), &Orders::CastPsionicStorm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastIrradiate", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastIrradiate)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastIrradiate", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastIrradiate)); tableOrder.insert(std::pair(Orders::CastIrradiate.getID(), &Orders::CastIrradiate)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastPlague", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastPlague)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastPlague", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastPlague)); tableOrder.insert(std::pair(Orders::CastPlague.getID(), &Orders::CastPlague)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastConsume", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastConsume)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastConsume", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastConsume)); tableOrder.insert(std::pair(Orders::CastConsume.getID(), &Orders::CastConsume)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastEnsnare", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastEnsnare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastEnsnare", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastEnsnare)); tableOrder.insert(std::pair(Orders::CastEnsnare.getID(), &Orders::CastEnsnare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastStasisField", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastStasisField)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastStasisField", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastStasisField)); tableOrder.insert(std::pair(Orders::CastStasisField.getID(), &Orders::CastStasisField)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastHallucination", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastHallucination)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastHallucination", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastHallucination)); tableOrder.insert(std::pair(Orders::CastHallucination.getID(), &Orders::CastHallucination)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hallucination2", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Hallucination2)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hallucination2", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Hallucination2)); tableOrder.insert(std::pair(Orders::Hallucination2.getID(), &Orders::Hallucination2)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ResetCollision", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ResetCollision)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ResetCollision", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ResetCollision)); tableOrder.insert(std::pair(Orders::ResetCollision.getID(), &Orders::ResetCollision)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Patrol", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Patrol)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Patrol", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Patrol)); tableOrder.insert(std::pair(Orders::Patrol.getID(), &Orders::Patrol)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CTFCOPInit", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CTFCOPInit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CTFCOPInit", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CTFCOPInit)); tableOrder.insert(std::pair(Orders::CTFCOPInit.getID(), &Orders::CTFCOPInit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CTFCOPStarted", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CTFCOPStarted)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CTFCOPStarted", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CTFCOPStarted)); tableOrder.insert(std::pair(Orders::CTFCOPStarted.getID(), &Orders::CTFCOPStarted)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CTFCOP2", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CTFCOP2)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CTFCOP2", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CTFCOP2)); tableOrder.insert(std::pair(Orders::CTFCOP2.getID(), &Orders::CTFCOP2)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ComputerAI", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ComputerAI)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ComputerAI", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ComputerAI)); tableOrder.insert(std::pair(Orders::ComputerAI.getID(), &Orders::ComputerAI)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AtkMoveEP", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::AtkMoveEP)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AtkMoveEP", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::AtkMoveEP)); tableOrder.insert(std::pair(Orders::AtkMoveEP.getID(), &Orders::AtkMoveEP)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HarassMove", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HarassMove)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HarassMove", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HarassMove)); tableOrder.insert(std::pair(Orders::HarassMove.getID(), &Orders::HarassMove)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AIPatrol", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::AIPatrol)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AIPatrol", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::AIPatrol)); tableOrder.insert(std::pair(Orders::AIPatrol.getID(), &Orders::AIPatrol)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "GuardPost", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::GuardPost)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "GuardPost", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::GuardPost)); tableOrder.insert(std::pair(Orders::GuardPost.getID(), &Orders::GuardPost)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RescuePassive", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RescuePassive)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RescuePassive", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RescuePassive)); tableOrder.insert(std::pair(Orders::RescuePassive.getID(), &Orders::RescuePassive)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Neutral", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Neutral)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Neutral", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Neutral)); tableOrder.insert(std::pair(Orders::Neutral.getID(), &Orders::Neutral)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ComputerReturn", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ComputerReturn)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ComputerReturn", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::ComputerReturn)); tableOrder.insert(std::pair(Orders::ComputerReturn.getID(), &Orders::ComputerReturn)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "SelfDestructing", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::SelfDestructing)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "SelfDestructing", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::SelfDestructing)); tableOrder.insert(std::pair(Orders::SelfDestructing.getID(), &Orders::SelfDestructing)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Critter)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Critter)); tableOrder.insert(std::pair(Orders::Critter.getID(), &Orders::Critter)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HiddenGun", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HiddenGun)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HiddenGun", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HiddenGun)); tableOrder.insert(std::pair(Orders::HiddenGun.getID(), &Orders::HiddenGun)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "OpenDoor", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::OpenDoor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "OpenDoor", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::OpenDoor)); tableOrder.insert(std::pair(Orders::OpenDoor.getID(), &Orders::OpenDoor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CloseDoor", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CloseDoor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CloseDoor", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CloseDoor)); tableOrder.insert(std::pair(Orders::CloseDoor.getID(), &Orders::CloseDoor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HideTrap", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HideTrap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HideTrap", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HideTrap)); tableOrder.insert(std::pair(Orders::HideTrap.getID(), &Orders::HideTrap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RevealTrap", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RevealTrap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RevealTrap", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::RevealTrap)); tableOrder.insert(std::pair(Orders::RevealTrap.getID(), &Orders::RevealTrap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EnableDoodad", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::EnableDoodad)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EnableDoodad", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::EnableDoodad)); tableOrder.insert(std::pair(Orders::EnableDoodad.getID(), &Orders::EnableDoodad)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "DisableDoodad", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::DisableDoodad)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "DisableDoodad", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::DisableDoodad)); tableOrder.insert(std::pair(Orders::DisableDoodad.getID(), &Orders::DisableDoodad)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "WarpIn", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::WarpIn)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "WarpIn", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::WarpIn)); tableOrder.insert(std::pair(Orders::WarpIn.getID(), &Orders::WarpIn)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Medic", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Medic)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Medic", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Medic)); tableOrder.insert(std::pair(Orders::Medic.getID(), &Orders::Medic)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MedicHeal", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MedicHeal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MedicHeal", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MedicHeal)); tableOrder.insert(std::pair(Orders::MedicHeal.getID(), &Orders::MedicHeal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HealMove", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HealMove)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "HealMove", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::HealMove)); tableOrder.insert(std::pair(Orders::HealMove.getID(), &Orders::HealMove)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MedicHealToIdle", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MedicHealToIdle)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "MedicHealToIdle", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::MedicHealToIdle)); tableOrder.insert(std::pair(Orders::MedicHealToIdle.getID(), &Orders::MedicHealToIdle)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastRestoration", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastRestoration)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastRestoration", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastRestoration)); tableOrder.insert(std::pair(Orders::CastRestoration.getID(), &Orders::CastRestoration)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastDisruptionWeb", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastDisruptionWeb)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastDisruptionWeb", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastDisruptionWeb)); tableOrder.insert(std::pair(Orders::CastDisruptionWeb.getID(), &Orders::CastDisruptionWeb)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastMindControl", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastMindControl)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastMindControl", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastMindControl)); tableOrder.insert(std::pair(Orders::CastMindControl.getID(), &Orders::CastMindControl)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "DarkArchonMeld", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::DarkArchonMeld)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "DarkArchonMeld", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::DarkArchonMeld)); tableOrder.insert(std::pair(Orders::DarkArchonMeld.getID(), &Orders::DarkArchonMeld)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastFeedback", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastFeedback)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastFeedback", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastFeedback)); tableOrder.insert(std::pair(Orders::CastFeedback.getID(), &Orders::CastFeedback)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastOpticalFlare", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastOpticalFlare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastOpticalFlare", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastOpticalFlare)); tableOrder.insert(std::pair(Orders::CastOpticalFlare.getID(), &Orders::CastOpticalFlare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastMaelstrom", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastMaelstrom)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "CastMaelstrom", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::CastMaelstrom)); tableOrder.insert(std::pair(Orders::CastMaelstrom.getID(), &Orders::CastMaelstrom)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "JunkYardDog", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::JunkYardDog)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "JunkYardDog", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::JunkYardDog)); tableOrder.insert(std::pair(Orders::JunkYardDog.getID(), &Orders::JunkYardDog)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fatal", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Fatal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fatal", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Fatal)); tableOrder.insert(std::pair(Orders::Fatal.getID(), &Orders::Fatal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::None)); tableOrder.insert(std::pair(Orders::None.getID(), &Orders::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/Order;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Orders::Unknown)); tableOrder.insert(std::pair(Orders::Unknown.getID(), &Orders::Unknown)); -cls = env->FindClass("Lbwapi/PlayerType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/PlayerType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::None)); +cls = env->FindClass("Lbwapi4/PlayerType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/PlayerType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::None)); tablePlayerType.insert(std::pair(PlayerTypes::None.getID(), &PlayerTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Computer", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::Computer)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Computer", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::Computer)); tablePlayerType.insert(std::pair(PlayerTypes::Computer.getID(), &PlayerTypes::Computer)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Player", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::Player)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Player", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::Player)); tablePlayerType.insert(std::pair(PlayerTypes::Player.getID(), &PlayerTypes::Player)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RescuePassive", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::RescuePassive)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "RescuePassive", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::RescuePassive)); tablePlayerType.insert(std::pair(PlayerTypes::RescuePassive.getID(), &PlayerTypes::RescuePassive)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EitherPreferComputer", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::EitherPreferComputer)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EitherPreferComputer", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::EitherPreferComputer)); tablePlayerType.insert(std::pair(PlayerTypes::EitherPreferComputer.getID(), &PlayerTypes::EitherPreferComputer)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EitherPreferHuman", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::EitherPreferHuman)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EitherPreferHuman", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::EitherPreferHuman)); tablePlayerType.insert(std::pair(PlayerTypes::EitherPreferHuman.getID(), &PlayerTypes::EitherPreferHuman)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Neutral", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::Neutral)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Neutral", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::Neutral)); tablePlayerType.insert(std::pair(PlayerTypes::Neutral.getID(), &PlayerTypes::Neutral)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Closed", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::Closed)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Closed", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::Closed)); tablePlayerType.insert(std::pair(PlayerTypes::Closed.getID(), &PlayerTypes::Closed)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PlayerLeft", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::PlayerLeft)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "PlayerLeft", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::PlayerLeft)); tablePlayerType.insert(std::pair(PlayerTypes::PlayerLeft.getID(), &PlayerTypes::PlayerLeft)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ComputerLeft", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::ComputerLeft)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ComputerLeft", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::ComputerLeft)); tablePlayerType.insert(std::pair(PlayerTypes::ComputerLeft.getID(), &PlayerTypes::ComputerLeft)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/PlayerType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&PlayerTypes::Unknown)); tablePlayerType.insert(std::pair(PlayerTypes::Unknown.getID(), &PlayerTypes::Unknown)); -cls = env->FindClass("Lbwapi/Race;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/Race;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg", "Lbwapi/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::Zerg)); +cls = env->FindClass("Lbwapi4/Race;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/Race;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg", "Lbwapi4/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::Zerg)); tableRace.insert(std::pair(Races::Zerg.getID(), &Races::Zerg)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran", "Lbwapi/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::Terran)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran", "Lbwapi4/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::Terran)); tableRace.insert(std::pair(Races::Terran.getID(), &Races::Terran)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss", "Lbwapi/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::Protoss)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss", "Lbwapi4/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::Protoss)); tableRace.insert(std::pair(Races::Protoss.getID(), &Races::Protoss)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Random", "Lbwapi/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::Random)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Random", "Lbwapi4/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::Random)); tableRace.insert(std::pair(Races::Random.getID(), &Races::Random)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::None)); tableRace.insert(std::pair(Races::None.getID(), &Races::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/Race;"), env->CallStaticObjectMethod(cls, getId, (jlong)&Races::Unknown)); tableRace.insert(std::pair(Races::Unknown.getID(), &Races::Unknown)); -cls = env->FindClass("Lbwapi/TechType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/TechType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stim_Packs", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Stim_Packs)); +cls = env->FindClass("Lbwapi4/TechType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/TechType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stim_Packs", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Stim_Packs)); tableTechType.insert(std::pair(TechTypes::Stim_Packs.getID(), &TechTypes::Stim_Packs)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Lockdown", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Lockdown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Lockdown", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Lockdown)); tableTechType.insert(std::pair(TechTypes::Lockdown.getID(), &TechTypes::Lockdown)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EMP_Shockwave", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::EMP_Shockwave)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EMP_Shockwave", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::EMP_Shockwave)); tableTechType.insert(std::pair(TechTypes::EMP_Shockwave.getID(), &TechTypes::EMP_Shockwave)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spider_Mines", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Spider_Mines)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spider_Mines", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Spider_Mines)); tableTechType.insert(std::pair(TechTypes::Spider_Mines.getID(), &TechTypes::Spider_Mines)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Scanner_Sweep", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Scanner_Sweep)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Scanner_Sweep", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Scanner_Sweep)); tableTechType.insert(std::pair(TechTypes::Scanner_Sweep.getID(), &TechTypes::Scanner_Sweep)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Tank_Siege_Mode", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Tank_Siege_Mode)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Tank_Siege_Mode", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Tank_Siege_Mode)); tableTechType.insert(std::pair(TechTypes::Tank_Siege_Mode.getID(), &TechTypes::Tank_Siege_Mode)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Defensive_Matrix", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Defensive_Matrix)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Defensive_Matrix", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Defensive_Matrix)); tableTechType.insert(std::pair(TechTypes::Defensive_Matrix.getID(), &TechTypes::Defensive_Matrix)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Irradiate", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Irradiate)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Irradiate", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Irradiate)); tableTechType.insert(std::pair(TechTypes::Irradiate.getID(), &TechTypes::Irradiate)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yamato_Gun", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Yamato_Gun)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yamato_Gun", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Yamato_Gun)); tableTechType.insert(std::pair(TechTypes::Yamato_Gun.getID(), &TechTypes::Yamato_Gun)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cloaking_Field", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Cloaking_Field)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cloaking_Field", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Cloaking_Field)); tableTechType.insert(std::pair(TechTypes::Cloaking_Field.getID(), &TechTypes::Cloaking_Field)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Personnel_Cloaking", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Personnel_Cloaking)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Personnel_Cloaking", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Personnel_Cloaking)); tableTechType.insert(std::pair(TechTypes::Personnel_Cloaking.getID(), &TechTypes::Personnel_Cloaking)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burrowing", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Burrowing)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burrowing", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Burrowing)); tableTechType.insert(std::pair(TechTypes::Burrowing.getID(), &TechTypes::Burrowing)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Infestation", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Infestation)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Infestation", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Infestation)); tableTechType.insert(std::pair(TechTypes::Infestation.getID(), &TechTypes::Infestation)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spawn_Broodlings", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Spawn_Broodlings)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spawn_Broodlings", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Spawn_Broodlings)); tableTechType.insert(std::pair(TechTypes::Spawn_Broodlings.getID(), &TechTypes::Spawn_Broodlings)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dark_Swarm", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Dark_Swarm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dark_Swarm", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Dark_Swarm)); tableTechType.insert(std::pair(TechTypes::Dark_Swarm.getID(), &TechTypes::Dark_Swarm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Plague", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Plague)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Plague", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Plague)); tableTechType.insert(std::pair(TechTypes::Plague.getID(), &TechTypes::Plague)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Consume", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Consume)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Consume", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Consume)); tableTechType.insert(std::pair(TechTypes::Consume.getID(), &TechTypes::Consume)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ensnare", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Ensnare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ensnare", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Ensnare)); tableTechType.insert(std::pair(TechTypes::Ensnare.getID(), &TechTypes::Ensnare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Parasite", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Parasite)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Parasite", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Parasite)); tableTechType.insert(std::pair(TechTypes::Parasite.getID(), &TechTypes::Parasite)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Storm", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Psionic_Storm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Storm", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Psionic_Storm)); tableTechType.insert(std::pair(TechTypes::Psionic_Storm.getID(), &TechTypes::Psionic_Storm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hallucination", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Hallucination)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hallucination", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Hallucination)); tableTechType.insert(std::pair(TechTypes::Hallucination.getID(), &TechTypes::Hallucination)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Recall", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Recall)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Recall", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Recall)); tableTechType.insert(std::pair(TechTypes::Recall.getID(), &TechTypes::Recall)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stasis_Field", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Stasis_Field)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stasis_Field", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Stasis_Field)); tableTechType.insert(std::pair(TechTypes::Stasis_Field.getID(), &TechTypes::Stasis_Field)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Archon_Warp", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Archon_Warp)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Archon_Warp", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Archon_Warp)); tableTechType.insert(std::pair(TechTypes::Archon_Warp.getID(), &TechTypes::Archon_Warp)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Restoration", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Restoration)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Restoration", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Restoration)); tableTechType.insert(std::pair(TechTypes::Restoration.getID(), &TechTypes::Restoration)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Disruption_Web", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Disruption_Web)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Disruption_Web", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Disruption_Web)); tableTechType.insert(std::pair(TechTypes::Disruption_Web.getID(), &TechTypes::Disruption_Web)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Mind_Control", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Mind_Control)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Mind_Control", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Mind_Control)); tableTechType.insert(std::pair(TechTypes::Mind_Control.getID(), &TechTypes::Mind_Control)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dark_Archon_Meld", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Dark_Archon_Meld)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dark_Archon_Meld", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Dark_Archon_Meld)); tableTechType.insert(std::pair(TechTypes::Dark_Archon_Meld.getID(), &TechTypes::Dark_Archon_Meld)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Feedback", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Feedback)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Feedback", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Feedback)); tableTechType.insert(std::pair(TechTypes::Feedback.getID(), &TechTypes::Feedback)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Optical_Flare", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Optical_Flare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Optical_Flare", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Optical_Flare)); tableTechType.insert(std::pair(TechTypes::Optical_Flare.getID(), &TechTypes::Optical_Flare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Maelstrom", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Maelstrom)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Maelstrom", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Maelstrom)); tableTechType.insert(std::pair(TechTypes::Maelstrom.getID(), &TechTypes::Maelstrom)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Lurker_Aspect", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Lurker_Aspect)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Lurker_Aspect", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Lurker_Aspect)); tableTechType.insert(std::pair(TechTypes::Lurker_Aspect.getID(), &TechTypes::Lurker_Aspect)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Healing", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Healing)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Healing", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Healing)); tableTechType.insert(std::pair(TechTypes::Healing.getID(), &TechTypes::Healing)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::None)); tableTechType.insert(std::pair(TechTypes::None.getID(), &TechTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Nuclear_Strike", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Nuclear_Strike)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Nuclear_Strike", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Nuclear_Strike)); tableTechType.insert(std::pair(TechTypes::Nuclear_Strike.getID(), &TechTypes::Nuclear_Strike)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/TechType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&TechTypes::Unknown)); tableTechType.insert(std::pair(TechTypes::Unknown.getID(), &TechTypes::Unknown)); -cls = env->FindClass("Lbwapi/UnitCommandType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/UnitCommandType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Attack_Move", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Attack_Move)); +cls = env->FindClass("Lbwapi4/UnitCommandType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/UnitCommandType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Attack_Move", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Attack_Move)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Attack_Move.getID(), &UnitCommandTypes::Attack_Move)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Attack_Unit", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Attack_Unit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Attack_Unit", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Attack_Unit)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Attack_Unit.getID(), &UnitCommandTypes::Attack_Unit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Build", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Build)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Build", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Build)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Build.getID(), &UnitCommandTypes::Build)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Build_Addon", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Build_Addon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Build_Addon", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Build_Addon)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Build_Addon.getID(), &UnitCommandTypes::Build_Addon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Train", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Train)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Train", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Train)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Train.getID(), &UnitCommandTypes::Train)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Morph", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Morph)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Morph", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Morph)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Morph.getID(), &UnitCommandTypes::Morph)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Research", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Research)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Research", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Research)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Research.getID(), &UnitCommandTypes::Research)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Upgrade", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Upgrade)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Upgrade", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Upgrade)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Upgrade.getID(), &UnitCommandTypes::Upgrade)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Set_Rally_Position", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Set_Rally_Position)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Set_Rally_Position", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Set_Rally_Position)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Set_Rally_Position.getID(), &UnitCommandTypes::Set_Rally_Position)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Set_Rally_Unit", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Set_Rally_Unit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Set_Rally_Unit", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Set_Rally_Unit)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Set_Rally_Unit.getID(), &UnitCommandTypes::Set_Rally_Unit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Move", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Move)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Move", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Move)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Move.getID(), &UnitCommandTypes::Move)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Patrol", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Patrol)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Patrol", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Patrol)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Patrol.getID(), &UnitCommandTypes::Patrol)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hold_Position", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Hold_Position)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hold_Position", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Hold_Position)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Hold_Position.getID(), &UnitCommandTypes::Hold_Position)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stop", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Stop)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stop", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Stop)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Stop.getID(), &UnitCommandTypes::Stop)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Follow", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Follow)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Follow", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Follow)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Follow.getID(), &UnitCommandTypes::Follow)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gather", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Gather)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gather", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Gather)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Gather.getID(), &UnitCommandTypes::Gather)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Return_Cargo", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Return_Cargo)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Return_Cargo", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Return_Cargo)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Return_Cargo.getID(), &UnitCommandTypes::Return_Cargo)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Repair", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Repair)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Repair", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Repair)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Repair.getID(), &UnitCommandTypes::Repair)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burrow", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Burrow)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burrow", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Burrow)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Burrow.getID(), &UnitCommandTypes::Burrow)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unburrow", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unburrow)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unburrow", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unburrow)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Unburrow.getID(), &UnitCommandTypes::Unburrow)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cloak", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cloak)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cloak", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cloak)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Cloak.getID(), &UnitCommandTypes::Cloak)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Decloak", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Decloak)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Decloak", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Decloak)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Decloak.getID(), &UnitCommandTypes::Decloak)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Siege", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Siege)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Siege", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Siege)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Siege.getID(), &UnitCommandTypes::Siege)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unsiege", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unsiege)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unsiege", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unsiege)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Unsiege.getID(), &UnitCommandTypes::Unsiege)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Lift", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Lift)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Lift", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Lift)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Lift.getID(), &UnitCommandTypes::Lift)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Land", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Land)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Land", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Land)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Land.getID(), &UnitCommandTypes::Land)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Load", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Load)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Load", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Load)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Load.getID(), &UnitCommandTypes::Load)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unload", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unload)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unload", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unload)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Unload.getID(), &UnitCommandTypes::Unload)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unload_All", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unload_All)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unload_All", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unload_All)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Unload_All.getID(), &UnitCommandTypes::Unload_All)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unload_All_Position", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unload_All_Position)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unload_All_Position", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unload_All_Position)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Unload_All_Position.getID(), &UnitCommandTypes::Unload_All_Position)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Right_Click_Position", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Right_Click_Position)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Right_Click_Position", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Right_Click_Position)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Right_Click_Position.getID(), &UnitCommandTypes::Right_Click_Position)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Right_Click_Unit", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Right_Click_Unit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Right_Click_Unit", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Right_Click_Unit)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Right_Click_Unit.getID(), &UnitCommandTypes::Right_Click_Unit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Halt_Construction", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Halt_Construction)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Halt_Construction", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Halt_Construction)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Halt_Construction.getID(), &UnitCommandTypes::Halt_Construction)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Construction", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Construction)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Construction", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Construction)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Cancel_Construction.getID(), &UnitCommandTypes::Cancel_Construction)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Addon", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Addon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Addon", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Addon)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Cancel_Addon.getID(), &UnitCommandTypes::Cancel_Addon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Train", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Train)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Train", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Train)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Cancel_Train.getID(), &UnitCommandTypes::Cancel_Train)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Train_Slot", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Train_Slot)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Train_Slot", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Train_Slot)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Cancel_Train_Slot.getID(), &UnitCommandTypes::Cancel_Train_Slot)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Morph", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Morph)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Morph", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Morph)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Cancel_Morph.getID(), &UnitCommandTypes::Cancel_Morph)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Research", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Research)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Research", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Research)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Cancel_Research.getID(), &UnitCommandTypes::Cancel_Research)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Upgrade", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Upgrade)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cancel_Upgrade", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Cancel_Upgrade)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Cancel_Upgrade.getID(), &UnitCommandTypes::Cancel_Upgrade)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Use_Tech", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Use_Tech)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Use_Tech", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Use_Tech)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Use_Tech.getID(), &UnitCommandTypes::Use_Tech)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Use_Tech_Position", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Use_Tech_Position)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Use_Tech_Position", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Use_Tech_Position)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Use_Tech_Position.getID(), &UnitCommandTypes::Use_Tech_Position)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Use_Tech_Unit", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Use_Tech_Unit)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Use_Tech_Unit", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Use_Tech_Unit)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Use_Tech_Unit.getID(), &UnitCommandTypes::Use_Tech_Unit)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Place_COP", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Place_COP)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Place_COP", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Place_COP)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Place_COP.getID(), &UnitCommandTypes::Place_COP)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::None)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::None.getID(), &UnitCommandTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/UnitCommandType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitCommandTypes::Unknown)); tableUnitCommandType.insert(std::pair(UnitCommandTypes::Unknown.getID(), &UnitCommandTypes::Unknown)); -cls = env->FindClass("Lbwapi/UnitSizeType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/UnitSizeType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Independent", "Lbwapi/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::Independent)); +cls = env->FindClass("Lbwapi4/UnitSizeType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/UnitSizeType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Independent", "Lbwapi4/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::Independent)); tableUnitSizeType.insert(std::pair(UnitSizeTypes::Independent.getID(), &UnitSizeTypes::Independent)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Small", "Lbwapi/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::Small)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Small", "Lbwapi4/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::Small)); tableUnitSizeType.insert(std::pair(UnitSizeTypes::Small.getID(), &UnitSizeTypes::Small)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Medium", "Lbwapi/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::Medium)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Medium", "Lbwapi4/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::Medium)); tableUnitSizeType.insert(std::pair(UnitSizeTypes::Medium.getID(), &UnitSizeTypes::Medium)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Large", "Lbwapi/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::Large)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Large", "Lbwapi4/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::Large)); tableUnitSizeType.insert(std::pair(UnitSizeTypes::Large.getID(), &UnitSizeTypes::Large)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::None)); tableUnitSizeType.insert(std::pair(UnitSizeTypes::None.getID(), &UnitSizeTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/UnitSizeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitSizeTypes::Unknown)); tableUnitSizeType.insert(std::pair(UnitSizeTypes::Unknown.getID(), &UnitSizeTypes::Unknown)); -cls = env->FindClass("Lbwapi/UnitType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/UnitType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Marine", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Marine)); +cls = env->FindClass("Lbwapi4/UnitType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/UnitType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Marine", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Marine)); tableUnitType.insert(std::pair(UnitTypes::Terran_Marine.getID(), &UnitTypes::Terran_Marine)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Ghost", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Ghost)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Ghost", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Ghost)); tableUnitType.insert(std::pair(UnitTypes::Terran_Ghost.getID(), &UnitTypes::Terran_Ghost)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Vulture", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Vulture)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Vulture", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Vulture)); tableUnitType.insert(std::pair(UnitTypes::Terran_Vulture.getID(), &UnitTypes::Terran_Vulture)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Goliath", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Goliath)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Goliath", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Goliath)); tableUnitType.insert(std::pair(UnitTypes::Terran_Goliath.getID(), &UnitTypes::Terran_Goliath)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Siege_Tank_Tank_Mode", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Siege_Tank_Tank_Mode)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Siege_Tank_Tank_Mode", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Siege_Tank_Tank_Mode)); tableUnitType.insert(std::pair(UnitTypes::Terran_Siege_Tank_Tank_Mode.getID(), &UnitTypes::Terran_Siege_Tank_Tank_Mode)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_SCV", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_SCV)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_SCV", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_SCV)); tableUnitType.insert(std::pair(UnitTypes::Terran_SCV.getID(), &UnitTypes::Terran_SCV)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Wraith", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Wraith)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Wraith", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Wraith)); tableUnitType.insert(std::pair(UnitTypes::Terran_Wraith.getID(), &UnitTypes::Terran_Wraith)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Science_Vessel", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Science_Vessel)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Science_Vessel", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Science_Vessel)); tableUnitType.insert(std::pair(UnitTypes::Terran_Science_Vessel.getID(), &UnitTypes::Terran_Science_Vessel)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Gui_Montag", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Gui_Montag)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Gui_Montag", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Gui_Montag)); tableUnitType.insert(std::pair(UnitTypes::Hero_Gui_Montag.getID(), &UnitTypes::Hero_Gui_Montag)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Dropship", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Dropship)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Dropship", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Dropship)); tableUnitType.insert(std::pair(UnitTypes::Terran_Dropship.getID(), &UnitTypes::Terran_Dropship)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Battlecruiser", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Battlecruiser)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Battlecruiser", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Battlecruiser)); tableUnitType.insert(std::pair(UnitTypes::Terran_Battlecruiser.getID(), &UnitTypes::Terran_Battlecruiser)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Vulture_Spider_Mine", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Vulture_Spider_Mine)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Vulture_Spider_Mine", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Vulture_Spider_Mine)); tableUnitType.insert(std::pair(UnitTypes::Terran_Vulture_Spider_Mine.getID(), &UnitTypes::Terran_Vulture_Spider_Mine)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Nuclear_Missile", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Nuclear_Missile)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Nuclear_Missile", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Nuclear_Missile)); tableUnitType.insert(std::pair(UnitTypes::Terran_Nuclear_Missile.getID(), &UnitTypes::Terran_Nuclear_Missile)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Civilian", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Civilian)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Civilian", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Civilian)); tableUnitType.insert(std::pair(UnitTypes::Terran_Civilian.getID(), &UnitTypes::Terran_Civilian)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Sarah_Kerrigan", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Sarah_Kerrigan)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Sarah_Kerrigan", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Sarah_Kerrigan)); tableUnitType.insert(std::pair(UnitTypes::Hero_Sarah_Kerrigan.getID(), &UnitTypes::Hero_Sarah_Kerrigan)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Alan_Schezar", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Alan_Schezar)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Alan_Schezar", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Alan_Schezar)); tableUnitType.insert(std::pair(UnitTypes::Hero_Alan_Schezar.getID(), &UnitTypes::Hero_Alan_Schezar)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Jim_Raynor_Vulture", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Jim_Raynor_Vulture)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Jim_Raynor_Vulture", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Jim_Raynor_Vulture)); tableUnitType.insert(std::pair(UnitTypes::Hero_Jim_Raynor_Vulture.getID(), &UnitTypes::Hero_Jim_Raynor_Vulture)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Jim_Raynor_Marine", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Jim_Raynor_Marine)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Jim_Raynor_Marine", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Jim_Raynor_Marine)); tableUnitType.insert(std::pair(UnitTypes::Hero_Jim_Raynor_Marine.getID(), &UnitTypes::Hero_Jim_Raynor_Marine)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Tom_Kazansky", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Tom_Kazansky)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Tom_Kazansky", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Tom_Kazansky)); tableUnitType.insert(std::pair(UnitTypes::Hero_Tom_Kazansky.getID(), &UnitTypes::Hero_Tom_Kazansky)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Magellan", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Magellan)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Magellan", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Magellan)); tableUnitType.insert(std::pair(UnitTypes::Hero_Magellan.getID(), &UnitTypes::Hero_Magellan)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Edmund_Duke_Tank_Mode", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Edmund_Duke_Tank_Mode)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Edmund_Duke_Tank_Mode", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Edmund_Duke_Tank_Mode)); tableUnitType.insert(std::pair(UnitTypes::Hero_Edmund_Duke_Tank_Mode.getID(), &UnitTypes::Hero_Edmund_Duke_Tank_Mode)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Edmund_Duke_Siege_Mode", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Edmund_Duke_Siege_Mode)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Edmund_Duke_Siege_Mode", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Edmund_Duke_Siege_Mode)); tableUnitType.insert(std::pair(UnitTypes::Hero_Edmund_Duke_Siege_Mode.getID(), &UnitTypes::Hero_Edmund_Duke_Siege_Mode)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Arcturus_Mengsk", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Arcturus_Mengsk)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Arcturus_Mengsk", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Arcturus_Mengsk)); tableUnitType.insert(std::pair(UnitTypes::Hero_Arcturus_Mengsk.getID(), &UnitTypes::Hero_Arcturus_Mengsk)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Hyperion", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Hyperion)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Hyperion", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Hyperion)); tableUnitType.insert(std::pair(UnitTypes::Hero_Hyperion.getID(), &UnitTypes::Hero_Hyperion)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Norad_II", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Norad_II)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Norad_II", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Norad_II)); tableUnitType.insert(std::pair(UnitTypes::Hero_Norad_II.getID(), &UnitTypes::Hero_Norad_II)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Siege_Tank_Siege_Mode", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Siege_Tank_Siege_Mode)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Siege_Tank_Siege_Mode", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Siege_Tank_Siege_Mode)); tableUnitType.insert(std::pair(UnitTypes::Terran_Siege_Tank_Siege_Mode.getID(), &UnitTypes::Terran_Siege_Tank_Siege_Mode)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Firebat", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Firebat)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Firebat", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Firebat)); tableUnitType.insert(std::pair(UnitTypes::Terran_Firebat.getID(), &UnitTypes::Terran_Firebat)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spell_Scanner_Sweep", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Spell_Scanner_Sweep)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spell_Scanner_Sweep", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Spell_Scanner_Sweep)); tableUnitType.insert(std::pair(UnitTypes::Spell_Scanner_Sweep.getID(), &UnitTypes::Spell_Scanner_Sweep)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Medic", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Medic)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Medic", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Medic)); tableUnitType.insert(std::pair(UnitTypes::Terran_Medic.getID(), &UnitTypes::Terran_Medic)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Larva", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Larva)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Larva", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Larva)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Larva.getID(), &UnitTypes::Zerg_Larva)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Egg", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Egg)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Egg", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Egg)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Egg.getID(), &UnitTypes::Zerg_Egg)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Zergling", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Zergling)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Zergling", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Zergling)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Zergling.getID(), &UnitTypes::Zerg_Zergling)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Hydralisk", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Hydralisk)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Hydralisk", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Hydralisk)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Hydralisk.getID(), &UnitTypes::Zerg_Hydralisk)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Ultralisk", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Ultralisk)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Ultralisk", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Ultralisk)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Ultralisk.getID(), &UnitTypes::Zerg_Ultralisk)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Broodling", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Broodling)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Broodling", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Broodling)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Broodling.getID(), &UnitTypes::Zerg_Broodling)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Drone", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Drone)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Drone", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Drone)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Drone.getID(), &UnitTypes::Zerg_Drone)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Overlord", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Overlord)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Overlord", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Overlord)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Overlord.getID(), &UnitTypes::Zerg_Overlord)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Mutalisk", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Mutalisk)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Mutalisk", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Mutalisk)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Mutalisk.getID(), &UnitTypes::Zerg_Mutalisk)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Guardian", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Guardian)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Guardian", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Guardian)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Guardian.getID(), &UnitTypes::Zerg_Guardian)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Queen", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Queen)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Queen", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Queen)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Queen.getID(), &UnitTypes::Zerg_Queen)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Defiler", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Defiler)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Defiler", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Defiler)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Defiler.getID(), &UnitTypes::Zerg_Defiler)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Scourge", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Scourge)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Scourge", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Scourge)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Scourge.getID(), &UnitTypes::Zerg_Scourge)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Torrasque", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Torrasque)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Torrasque", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Torrasque)); tableUnitType.insert(std::pair(UnitTypes::Hero_Torrasque.getID(), &UnitTypes::Hero_Torrasque)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Matriarch", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Matriarch)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Matriarch", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Matriarch)); tableUnitType.insert(std::pair(UnitTypes::Hero_Matriarch.getID(), &UnitTypes::Hero_Matriarch)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Infested_Terran", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Infested_Terran)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Infested_Terran", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Infested_Terran)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Infested_Terran.getID(), &UnitTypes::Zerg_Infested_Terran)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Infested_Kerrigan", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Infested_Kerrigan)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Infested_Kerrigan", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Infested_Kerrigan)); tableUnitType.insert(std::pair(UnitTypes::Hero_Infested_Kerrigan.getID(), &UnitTypes::Hero_Infested_Kerrigan)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Unclean_One", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Unclean_One)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Unclean_One", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Unclean_One)); tableUnitType.insert(std::pair(UnitTypes::Hero_Unclean_One.getID(), &UnitTypes::Hero_Unclean_One)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Hunter_Killer", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Hunter_Killer)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Hunter_Killer", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Hunter_Killer)); tableUnitType.insert(std::pair(UnitTypes::Hero_Hunter_Killer.getID(), &UnitTypes::Hero_Hunter_Killer)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Devouring_One", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Devouring_One)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Devouring_One", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Devouring_One)); tableUnitType.insert(std::pair(UnitTypes::Hero_Devouring_One.getID(), &UnitTypes::Hero_Devouring_One)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Kukulza_Mutalisk", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Kukulza_Mutalisk)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Kukulza_Mutalisk", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Kukulza_Mutalisk)); tableUnitType.insert(std::pair(UnitTypes::Hero_Kukulza_Mutalisk.getID(), &UnitTypes::Hero_Kukulza_Mutalisk)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Kukulza_Guardian", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Kukulza_Guardian)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Kukulza_Guardian", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Kukulza_Guardian)); tableUnitType.insert(std::pair(UnitTypes::Hero_Kukulza_Guardian.getID(), &UnitTypes::Hero_Kukulza_Guardian)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Yggdrasill", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Yggdrasill)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Yggdrasill", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Yggdrasill)); tableUnitType.insert(std::pair(UnitTypes::Hero_Yggdrasill.getID(), &UnitTypes::Hero_Yggdrasill)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Valkyrie", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Valkyrie)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Valkyrie", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Valkyrie)); tableUnitType.insert(std::pair(UnitTypes::Terran_Valkyrie.getID(), &UnitTypes::Terran_Valkyrie)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Cocoon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Cocoon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Cocoon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Cocoon)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Cocoon.getID(), &UnitTypes::Zerg_Cocoon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Corsair", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Corsair)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Corsair", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Corsair)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Corsair.getID(), &UnitTypes::Protoss_Corsair)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Dark_Templar", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Dark_Templar)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Dark_Templar", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Dark_Templar)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Dark_Templar.getID(), &UnitTypes::Protoss_Dark_Templar)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Devourer", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Devourer)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Devourer", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Devourer)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Devourer.getID(), &UnitTypes::Zerg_Devourer)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Dark_Archon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Dark_Archon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Dark_Archon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Dark_Archon)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Dark_Archon.getID(), &UnitTypes::Protoss_Dark_Archon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Probe", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Probe)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Probe", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Probe)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Probe.getID(), &UnitTypes::Protoss_Probe)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Zealot", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Zealot)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Zealot", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Zealot)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Zealot.getID(), &UnitTypes::Protoss_Zealot)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Dragoon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Dragoon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Dragoon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Dragoon)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Dragoon.getID(), &UnitTypes::Protoss_Dragoon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_High_Templar", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_High_Templar)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_High_Templar", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_High_Templar)); tableUnitType.insert(std::pair(UnitTypes::Protoss_High_Templar.getID(), &UnitTypes::Protoss_High_Templar)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Archon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Archon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Archon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Archon)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Archon.getID(), &UnitTypes::Protoss_Archon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Shuttle", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Shuttle)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Shuttle", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Shuttle)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Shuttle.getID(), &UnitTypes::Protoss_Shuttle)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Scout", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Scout)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Scout", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Scout)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Scout.getID(), &UnitTypes::Protoss_Scout)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Arbiter", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Arbiter)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Arbiter", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Arbiter)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Arbiter.getID(), &UnitTypes::Protoss_Arbiter)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Carrier", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Carrier)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Carrier", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Carrier)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Carrier.getID(), &UnitTypes::Protoss_Carrier)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Interceptor", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Interceptor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Interceptor", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Interceptor)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Interceptor.getID(), &UnitTypes::Protoss_Interceptor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Dark_Templar", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Dark_Templar)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Dark_Templar", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Dark_Templar)); tableUnitType.insert(std::pair(UnitTypes::Hero_Dark_Templar.getID(), &UnitTypes::Hero_Dark_Templar)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Zeratul", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Zeratul)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Zeratul", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Zeratul)); tableUnitType.insert(std::pair(UnitTypes::Hero_Zeratul.getID(), &UnitTypes::Hero_Zeratul)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Tassadar_Zeratul_Archon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Tassadar_Zeratul_Archon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Tassadar_Zeratul_Archon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Tassadar_Zeratul_Archon)); tableUnitType.insert(std::pair(UnitTypes::Hero_Tassadar_Zeratul_Archon.getID(), &UnitTypes::Hero_Tassadar_Zeratul_Archon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Fenix_Zealot", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Fenix_Zealot)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Fenix_Zealot", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Fenix_Zealot)); tableUnitType.insert(std::pair(UnitTypes::Hero_Fenix_Zealot.getID(), &UnitTypes::Hero_Fenix_Zealot)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Fenix_Dragoon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Fenix_Dragoon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Fenix_Dragoon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Fenix_Dragoon)); tableUnitType.insert(std::pair(UnitTypes::Hero_Fenix_Dragoon.getID(), &UnitTypes::Hero_Fenix_Dragoon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Tassadar", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Tassadar)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Tassadar", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Tassadar)); tableUnitType.insert(std::pair(UnitTypes::Hero_Tassadar.getID(), &UnitTypes::Hero_Tassadar)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Mojo", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Mojo)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Mojo", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Mojo)); tableUnitType.insert(std::pair(UnitTypes::Hero_Mojo.getID(), &UnitTypes::Hero_Mojo)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Warbringer", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Warbringer)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Warbringer", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Warbringer)); tableUnitType.insert(std::pair(UnitTypes::Hero_Warbringer.getID(), &UnitTypes::Hero_Warbringer)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Gantrithor", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Gantrithor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Gantrithor", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Gantrithor)); tableUnitType.insert(std::pair(UnitTypes::Hero_Gantrithor.getID(), &UnitTypes::Hero_Gantrithor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Reaver", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Reaver)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Reaver", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Reaver)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Reaver.getID(), &UnitTypes::Protoss_Reaver)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Observer", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Observer)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Observer", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Observer)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Observer.getID(), &UnitTypes::Protoss_Observer)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Scarab", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Scarab)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Scarab", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Scarab)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Scarab.getID(), &UnitTypes::Protoss_Scarab)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Danimoth", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Danimoth)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Danimoth", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Danimoth)); tableUnitType.insert(std::pair(UnitTypes::Hero_Danimoth.getID(), &UnitTypes::Hero_Danimoth)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Aldaris", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Aldaris)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Aldaris", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Aldaris)); tableUnitType.insert(std::pair(UnitTypes::Hero_Aldaris.getID(), &UnitTypes::Hero_Aldaris)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Artanis", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Artanis)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Artanis", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Artanis)); tableUnitType.insert(std::pair(UnitTypes::Hero_Artanis.getID(), &UnitTypes::Hero_Artanis)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Rhynadon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Rhynadon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Rhynadon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Rhynadon)); tableUnitType.insert(std::pair(UnitTypes::Critter_Rhynadon.getID(), &UnitTypes::Critter_Rhynadon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Bengalaas", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Bengalaas)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Bengalaas", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Bengalaas)); tableUnitType.insert(std::pair(UnitTypes::Critter_Bengalaas.getID(), &UnitTypes::Critter_Bengalaas)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Cargo_Ship", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Cargo_Ship)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Cargo_Ship", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Cargo_Ship)); tableUnitType.insert(std::pair(UnitTypes::Special_Cargo_Ship.getID(), &UnitTypes::Special_Cargo_Ship)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Mercenary_Gunship", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Mercenary_Gunship)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Mercenary_Gunship", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Mercenary_Gunship)); tableUnitType.insert(std::pair(UnitTypes::Special_Mercenary_Gunship.getID(), &UnitTypes::Special_Mercenary_Gunship)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Scantid", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Scantid)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Scantid", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Scantid)); tableUnitType.insert(std::pair(UnitTypes::Critter_Scantid.getID(), &UnitTypes::Critter_Scantid)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Kakaru", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Kakaru)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Kakaru", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Kakaru)); tableUnitType.insert(std::pair(UnitTypes::Critter_Kakaru.getID(), &UnitTypes::Critter_Kakaru)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Ragnasaur", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Ragnasaur)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Ragnasaur", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Ragnasaur)); tableUnitType.insert(std::pair(UnitTypes::Critter_Ragnasaur.getID(), &UnitTypes::Critter_Ragnasaur)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Ursadon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Ursadon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Critter_Ursadon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Critter_Ursadon)); tableUnitType.insert(std::pair(UnitTypes::Critter_Ursadon.getID(), &UnitTypes::Critter_Ursadon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Lurker_Egg", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Lurker_Egg)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Lurker_Egg", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Lurker_Egg)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Lurker_Egg.getID(), &UnitTypes::Zerg_Lurker_Egg)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Raszagal", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Raszagal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Raszagal", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Raszagal)); tableUnitType.insert(std::pair(UnitTypes::Hero_Raszagal.getID(), &UnitTypes::Hero_Raszagal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Samir_Duran", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Samir_Duran)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Samir_Duran", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Samir_Duran)); tableUnitType.insert(std::pair(UnitTypes::Hero_Samir_Duran.getID(), &UnitTypes::Hero_Samir_Duran)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Alexei_Stukov", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Alexei_Stukov)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Alexei_Stukov", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Alexei_Stukov)); tableUnitType.insert(std::pair(UnitTypes::Hero_Alexei_Stukov.getID(), &UnitTypes::Hero_Alexei_Stukov)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Map_Revealer", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Map_Revealer)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Map_Revealer", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Map_Revealer)); tableUnitType.insert(std::pair(UnitTypes::Special_Map_Revealer.getID(), &UnitTypes::Special_Map_Revealer)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Gerard_DuGalle", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Gerard_DuGalle)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Gerard_DuGalle", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Gerard_DuGalle)); tableUnitType.insert(std::pair(UnitTypes::Hero_Gerard_DuGalle.getID(), &UnitTypes::Hero_Gerard_DuGalle)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Lurker", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Lurker)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Lurker", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Lurker)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Lurker.getID(), &UnitTypes::Zerg_Lurker)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Infested_Duran", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Infested_Duran)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hero_Infested_Duran", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Hero_Infested_Duran)); tableUnitType.insert(std::pair(UnitTypes::Hero_Infested_Duran.getID(), &UnitTypes::Hero_Infested_Duran)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spell_Disruption_Web", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Spell_Disruption_Web)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spell_Disruption_Web", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Spell_Disruption_Web)); tableUnitType.insert(std::pair(UnitTypes::Spell_Disruption_Web.getID(), &UnitTypes::Spell_Disruption_Web)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Command_Center", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Command_Center)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Command_Center", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Command_Center)); tableUnitType.insert(std::pair(UnitTypes::Terran_Command_Center.getID(), &UnitTypes::Terran_Command_Center)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Comsat_Station", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Comsat_Station)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Comsat_Station", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Comsat_Station)); tableUnitType.insert(std::pair(UnitTypes::Terran_Comsat_Station.getID(), &UnitTypes::Terran_Comsat_Station)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Nuclear_Silo", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Nuclear_Silo)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Nuclear_Silo", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Nuclear_Silo)); tableUnitType.insert(std::pair(UnitTypes::Terran_Nuclear_Silo.getID(), &UnitTypes::Terran_Nuclear_Silo)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Supply_Depot", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Supply_Depot)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Supply_Depot", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Supply_Depot)); tableUnitType.insert(std::pair(UnitTypes::Terran_Supply_Depot.getID(), &UnitTypes::Terran_Supply_Depot)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Refinery", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Refinery)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Refinery", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Refinery)); tableUnitType.insert(std::pair(UnitTypes::Terran_Refinery.getID(), &UnitTypes::Terran_Refinery)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Barracks", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Barracks)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Barracks", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Barracks)); tableUnitType.insert(std::pair(UnitTypes::Terran_Barracks.getID(), &UnitTypes::Terran_Barracks)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Academy", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Academy)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Academy", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Academy)); tableUnitType.insert(std::pair(UnitTypes::Terran_Academy.getID(), &UnitTypes::Terran_Academy)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Factory", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Factory)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Factory", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Factory)); tableUnitType.insert(std::pair(UnitTypes::Terran_Factory.getID(), &UnitTypes::Terran_Factory)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Starport", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Starport)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Starport", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Starport)); tableUnitType.insert(std::pair(UnitTypes::Terran_Starport.getID(), &UnitTypes::Terran_Starport)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Control_Tower", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Control_Tower)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Control_Tower", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Control_Tower)); tableUnitType.insert(std::pair(UnitTypes::Terran_Control_Tower.getID(), &UnitTypes::Terran_Control_Tower)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Science_Facility", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Science_Facility)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Science_Facility", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Science_Facility)); tableUnitType.insert(std::pair(UnitTypes::Terran_Science_Facility.getID(), &UnitTypes::Terran_Science_Facility)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Covert_Ops", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Covert_Ops)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Covert_Ops", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Covert_Ops)); tableUnitType.insert(std::pair(UnitTypes::Terran_Covert_Ops.getID(), &UnitTypes::Terran_Covert_Ops)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Physics_Lab", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Physics_Lab)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Physics_Lab", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Physics_Lab)); tableUnitType.insert(std::pair(UnitTypes::Terran_Physics_Lab.getID(), &UnitTypes::Terran_Physics_Lab)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Machine_Shop", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Machine_Shop)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Machine_Shop", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Machine_Shop)); tableUnitType.insert(std::pair(UnitTypes::Terran_Machine_Shop.getID(), &UnitTypes::Terran_Machine_Shop)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Engineering_Bay", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Engineering_Bay)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Engineering_Bay", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Engineering_Bay)); tableUnitType.insert(std::pair(UnitTypes::Terran_Engineering_Bay.getID(), &UnitTypes::Terran_Engineering_Bay)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Armory", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Armory)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Armory", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Armory)); tableUnitType.insert(std::pair(UnitTypes::Terran_Armory.getID(), &UnitTypes::Terran_Armory)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Missile_Turret", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Missile_Turret)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Missile_Turret", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Missile_Turret)); tableUnitType.insert(std::pair(UnitTypes::Terran_Missile_Turret.getID(), &UnitTypes::Terran_Missile_Turret)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Bunker", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Bunker)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Bunker", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Terran_Bunker)); tableUnitType.insert(std::pair(UnitTypes::Terran_Bunker.getID(), &UnitTypes::Terran_Bunker)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Crashed_Norad_II", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Crashed_Norad_II)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Crashed_Norad_II", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Crashed_Norad_II)); tableUnitType.insert(std::pair(UnitTypes::Special_Crashed_Norad_II.getID(), &UnitTypes::Special_Crashed_Norad_II)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Ion_Cannon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Ion_Cannon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Ion_Cannon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Ion_Cannon)); tableUnitType.insert(std::pair(UnitTypes::Special_Ion_Cannon.getID(), &UnitTypes::Special_Ion_Cannon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Uraj_Crystal", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Uraj_Crystal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Uraj_Crystal", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Uraj_Crystal)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Uraj_Crystal.getID(), &UnitTypes::Powerup_Uraj_Crystal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Khalis_Crystal", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Khalis_Crystal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Khalis_Crystal", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Khalis_Crystal)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Khalis_Crystal.getID(), &UnitTypes::Powerup_Khalis_Crystal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Infested_Command_Center", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Infested_Command_Center)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Infested_Command_Center", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Infested_Command_Center)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Infested_Command_Center.getID(), &UnitTypes::Zerg_Infested_Command_Center)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Hatchery", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Hatchery)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Hatchery", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Hatchery)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Hatchery.getID(), &UnitTypes::Zerg_Hatchery)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Lair", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Lair)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Lair", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Lair)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Lair.getID(), &UnitTypes::Zerg_Lair)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Hive", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Hive)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Hive", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Hive)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Hive.getID(), &UnitTypes::Zerg_Hive)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Nydus_Canal", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Nydus_Canal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Nydus_Canal", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Nydus_Canal)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Nydus_Canal.getID(), &UnitTypes::Zerg_Nydus_Canal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Hydralisk_Den", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Hydralisk_Den)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Hydralisk_Den", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Hydralisk_Den)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Hydralisk_Den.getID(), &UnitTypes::Zerg_Hydralisk_Den)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Defiler_Mound", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Defiler_Mound)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Defiler_Mound", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Defiler_Mound)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Defiler_Mound.getID(), &UnitTypes::Zerg_Defiler_Mound)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Greater_Spire", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Greater_Spire)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Greater_Spire", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Greater_Spire)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Greater_Spire.getID(), &UnitTypes::Zerg_Greater_Spire)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Queens_Nest", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Queens_Nest)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Queens_Nest", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Queens_Nest)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Queens_Nest.getID(), &UnitTypes::Zerg_Queens_Nest)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Evolution_Chamber", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Evolution_Chamber)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Evolution_Chamber", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Evolution_Chamber)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Evolution_Chamber.getID(), &UnitTypes::Zerg_Evolution_Chamber)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Ultralisk_Cavern", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Ultralisk_Cavern)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Ultralisk_Cavern", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Ultralisk_Cavern)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Ultralisk_Cavern.getID(), &UnitTypes::Zerg_Ultralisk_Cavern)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Spire", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Spire)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Spire", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Spire)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Spire.getID(), &UnitTypes::Zerg_Spire)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Spawning_Pool", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Spawning_Pool)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Spawning_Pool", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Spawning_Pool)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Spawning_Pool.getID(), &UnitTypes::Zerg_Spawning_Pool)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Creep_Colony", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Creep_Colony)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Creep_Colony", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Creep_Colony)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Creep_Colony.getID(), &UnitTypes::Zerg_Creep_Colony)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Spore_Colony", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Spore_Colony)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Spore_Colony", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Spore_Colony)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Spore_Colony.getID(), &UnitTypes::Zerg_Spore_Colony)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Sunken_Colony", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Sunken_Colony)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Sunken_Colony", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Sunken_Colony)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Sunken_Colony.getID(), &UnitTypes::Zerg_Sunken_Colony)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Overmind_With_Shell", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Overmind_With_Shell)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Overmind_With_Shell", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Overmind_With_Shell)); tableUnitType.insert(std::pair(UnitTypes::Special_Overmind_With_Shell.getID(), &UnitTypes::Special_Overmind_With_Shell)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Overmind", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Overmind)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Overmind", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Overmind)); tableUnitType.insert(std::pair(UnitTypes::Special_Overmind.getID(), &UnitTypes::Special_Overmind)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Extractor", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Extractor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Extractor", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Zerg_Extractor)); tableUnitType.insert(std::pair(UnitTypes::Zerg_Extractor.getID(), &UnitTypes::Zerg_Extractor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Mature_Chrysalis", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Mature_Chrysalis)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Mature_Chrysalis", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Mature_Chrysalis)); tableUnitType.insert(std::pair(UnitTypes::Special_Mature_Chrysalis.getID(), &UnitTypes::Special_Mature_Chrysalis)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Cerebrate", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Cerebrate)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Cerebrate", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Cerebrate)); tableUnitType.insert(std::pair(UnitTypes::Special_Cerebrate.getID(), &UnitTypes::Special_Cerebrate)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Cerebrate_Daggoth", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Cerebrate_Daggoth)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Cerebrate_Daggoth", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Cerebrate_Daggoth)); tableUnitType.insert(std::pair(UnitTypes::Special_Cerebrate_Daggoth.getID(), &UnitTypes::Special_Cerebrate_Daggoth)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Nexus", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Nexus)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Nexus", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Nexus)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Nexus.getID(), &UnitTypes::Protoss_Nexus)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Robotics_Facility", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Robotics_Facility)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Robotics_Facility", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Robotics_Facility)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Robotics_Facility.getID(), &UnitTypes::Protoss_Robotics_Facility)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Pylon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Pylon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Pylon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Pylon)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Pylon.getID(), &UnitTypes::Protoss_Pylon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Assimilator", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Assimilator)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Assimilator", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Assimilator)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Assimilator.getID(), &UnitTypes::Protoss_Assimilator)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Observatory", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Observatory)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Observatory", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Observatory)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Observatory.getID(), &UnitTypes::Protoss_Observatory)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Gateway", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Gateway)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Gateway", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Gateway)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Gateway.getID(), &UnitTypes::Protoss_Gateway)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Photon_Cannon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Photon_Cannon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Photon_Cannon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Photon_Cannon)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Photon_Cannon.getID(), &UnitTypes::Protoss_Photon_Cannon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Citadel_of_Adun", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Citadel_of_Adun)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Citadel_of_Adun", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Citadel_of_Adun)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Citadel_of_Adun.getID(), &UnitTypes::Protoss_Citadel_of_Adun)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Cybernetics_Core", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Cybernetics_Core)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Cybernetics_Core", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Cybernetics_Core)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Cybernetics_Core.getID(), &UnitTypes::Protoss_Cybernetics_Core)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Templar_Archives", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Templar_Archives)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Templar_Archives", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Templar_Archives)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Templar_Archives.getID(), &UnitTypes::Protoss_Templar_Archives)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Forge", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Forge)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Forge", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Forge)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Forge.getID(), &UnitTypes::Protoss_Forge)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Stargate", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Stargate)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Stargate", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Stargate)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Stargate.getID(), &UnitTypes::Protoss_Stargate)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Stasis_Cell_Prison", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Stasis_Cell_Prison)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Stasis_Cell_Prison", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Stasis_Cell_Prison)); tableUnitType.insert(std::pair(UnitTypes::Special_Stasis_Cell_Prison.getID(), &UnitTypes::Special_Stasis_Cell_Prison)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Fleet_Beacon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Fleet_Beacon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Fleet_Beacon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Fleet_Beacon)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Fleet_Beacon.getID(), &UnitTypes::Protoss_Fleet_Beacon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Arbiter_Tribunal", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Arbiter_Tribunal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Arbiter_Tribunal", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Arbiter_Tribunal)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Arbiter_Tribunal.getID(), &UnitTypes::Protoss_Arbiter_Tribunal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Robotics_Support_Bay", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Robotics_Support_Bay)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Robotics_Support_Bay", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Robotics_Support_Bay)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Robotics_Support_Bay.getID(), &UnitTypes::Protoss_Robotics_Support_Bay)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Shield_Battery", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Shield_Battery)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Shield_Battery", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Protoss_Shield_Battery)); tableUnitType.insert(std::pair(UnitTypes::Protoss_Shield_Battery.getID(), &UnitTypes::Protoss_Shield_Battery)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Khaydarin_Crystal_Form", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Khaydarin_Crystal_Form)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Khaydarin_Crystal_Form", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Khaydarin_Crystal_Form)); tableUnitType.insert(std::pair(UnitTypes::Special_Khaydarin_Crystal_Form.getID(), &UnitTypes::Special_Khaydarin_Crystal_Form)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Protoss_Temple", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Protoss_Temple)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Protoss_Temple", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Protoss_Temple)); tableUnitType.insert(std::pair(UnitTypes::Special_Protoss_Temple.getID(), &UnitTypes::Special_Protoss_Temple)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_XelNaga_Temple", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_XelNaga_Temple)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_XelNaga_Temple", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_XelNaga_Temple)); tableUnitType.insert(std::pair(UnitTypes::Special_XelNaga_Temple.getID(), &UnitTypes::Special_XelNaga_Temple)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Resource_Mineral_Field", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Resource_Mineral_Field)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Resource_Mineral_Field", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Resource_Mineral_Field)); tableUnitType.insert(std::pair(UnitTypes::Resource_Mineral_Field.getID(), &UnitTypes::Resource_Mineral_Field)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Resource_Mineral_Field_Type_2", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Resource_Mineral_Field_Type_2)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Resource_Mineral_Field_Type_2", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Resource_Mineral_Field_Type_2)); tableUnitType.insert(std::pair(UnitTypes::Resource_Mineral_Field_Type_2.getID(), &UnitTypes::Resource_Mineral_Field_Type_2)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Resource_Mineral_Field_Type_3", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Resource_Mineral_Field_Type_3)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Resource_Mineral_Field_Type_3", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Resource_Mineral_Field_Type_3)); tableUnitType.insert(std::pair(UnitTypes::Resource_Mineral_Field_Type_3.getID(), &UnitTypes::Resource_Mineral_Field_Type_3)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Independant_Starport", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Independant_Starport)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Independant_Starport", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Independant_Starport)); tableUnitType.insert(std::pair(UnitTypes::Special_Independant_Starport.getID(), &UnitTypes::Special_Independant_Starport)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Resource_Vespene_Geyser", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Resource_Vespene_Geyser)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Resource_Vespene_Geyser", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Resource_Vespene_Geyser)); tableUnitType.insert(std::pair(UnitTypes::Resource_Vespene_Geyser.getID(), &UnitTypes::Resource_Vespene_Geyser)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Warp_Gate", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Warp_Gate)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Warp_Gate", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Warp_Gate)); tableUnitType.insert(std::pair(UnitTypes::Special_Warp_Gate.getID(), &UnitTypes::Special_Warp_Gate)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Psi_Disrupter", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Psi_Disrupter)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Psi_Disrupter", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Psi_Disrupter)); tableUnitType.insert(std::pair(UnitTypes::Special_Psi_Disrupter.getID(), &UnitTypes::Special_Psi_Disrupter)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Zerg_Beacon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Zerg_Beacon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Zerg_Beacon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Zerg_Beacon)); tableUnitType.insert(std::pair(UnitTypes::Special_Zerg_Beacon.getID(), &UnitTypes::Special_Zerg_Beacon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Terran_Beacon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Terran_Beacon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Terran_Beacon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Terran_Beacon)); tableUnitType.insert(std::pair(UnitTypes::Special_Terran_Beacon.getID(), &UnitTypes::Special_Terran_Beacon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Protoss_Beacon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Protoss_Beacon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Protoss_Beacon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Protoss_Beacon)); tableUnitType.insert(std::pair(UnitTypes::Special_Protoss_Beacon.getID(), &UnitTypes::Special_Protoss_Beacon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Zerg_Flag_Beacon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Zerg_Flag_Beacon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Zerg_Flag_Beacon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Zerg_Flag_Beacon)); tableUnitType.insert(std::pair(UnitTypes::Special_Zerg_Flag_Beacon.getID(), &UnitTypes::Special_Zerg_Flag_Beacon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Terran_Flag_Beacon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Terran_Flag_Beacon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Terran_Flag_Beacon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Terran_Flag_Beacon)); tableUnitType.insert(std::pair(UnitTypes::Special_Terran_Flag_Beacon.getID(), &UnitTypes::Special_Terran_Flag_Beacon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Protoss_Flag_Beacon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Protoss_Flag_Beacon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Protoss_Flag_Beacon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Protoss_Flag_Beacon)); tableUnitType.insert(std::pair(UnitTypes::Special_Protoss_Flag_Beacon.getID(), &UnitTypes::Special_Protoss_Flag_Beacon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Power_Generator", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Power_Generator)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Power_Generator", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Power_Generator)); tableUnitType.insert(std::pair(UnitTypes::Special_Power_Generator.getID(), &UnitTypes::Special_Power_Generator)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Overmind_Cocoon", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Overmind_Cocoon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Overmind_Cocoon", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Overmind_Cocoon)); tableUnitType.insert(std::pair(UnitTypes::Special_Overmind_Cocoon.getID(), &UnitTypes::Special_Overmind_Cocoon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spell_Dark_Swarm", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Spell_Dark_Swarm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spell_Dark_Swarm", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Spell_Dark_Swarm)); tableUnitType.insert(std::pair(UnitTypes::Spell_Dark_Swarm.getID(), &UnitTypes::Spell_Dark_Swarm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Floor_Missile_Trap", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Floor_Missile_Trap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Floor_Missile_Trap", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Floor_Missile_Trap)); tableUnitType.insert(std::pair(UnitTypes::Special_Floor_Missile_Trap.getID(), &UnitTypes::Special_Floor_Missile_Trap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Floor_Hatch", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Floor_Hatch)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Floor_Hatch", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Floor_Hatch)); tableUnitType.insert(std::pair(UnitTypes::Special_Floor_Hatch.getID(), &UnitTypes::Special_Floor_Hatch)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Upper_Level_Door", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Upper_Level_Door)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Upper_Level_Door", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Upper_Level_Door)); tableUnitType.insert(std::pair(UnitTypes::Special_Upper_Level_Door.getID(), &UnitTypes::Special_Upper_Level_Door)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Right_Upper_Level_Door", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Right_Upper_Level_Door)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Right_Upper_Level_Door", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Right_Upper_Level_Door)); tableUnitType.insert(std::pair(UnitTypes::Special_Right_Upper_Level_Door.getID(), &UnitTypes::Special_Right_Upper_Level_Door)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Pit_Door", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Pit_Door)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Pit_Door", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Pit_Door)); tableUnitType.insert(std::pair(UnitTypes::Special_Pit_Door.getID(), &UnitTypes::Special_Pit_Door)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Right_Pit_Door", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Right_Pit_Door)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Right_Pit_Door", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Right_Pit_Door)); tableUnitType.insert(std::pair(UnitTypes::Special_Right_Pit_Door.getID(), &UnitTypes::Special_Right_Pit_Door)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Floor_Gun_Trap", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Floor_Gun_Trap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Floor_Gun_Trap", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Floor_Gun_Trap)); tableUnitType.insert(std::pair(UnitTypes::Special_Floor_Gun_Trap.getID(), &UnitTypes::Special_Floor_Gun_Trap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Wall_Missile_Trap", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Wall_Missile_Trap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Wall_Missile_Trap", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Wall_Missile_Trap)); tableUnitType.insert(std::pair(UnitTypes::Special_Wall_Missile_Trap.getID(), &UnitTypes::Special_Wall_Missile_Trap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Wall_Flame_Trap", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Wall_Flame_Trap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Wall_Flame_Trap", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Wall_Flame_Trap)); tableUnitType.insert(std::pair(UnitTypes::Special_Wall_Flame_Trap.getID(), &UnitTypes::Special_Wall_Flame_Trap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Right_Wall_Missile_Trap", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Right_Wall_Missile_Trap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Right_Wall_Missile_Trap", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Right_Wall_Missile_Trap)); tableUnitType.insert(std::pair(UnitTypes::Special_Right_Wall_Missile_Trap.getID(), &UnitTypes::Special_Right_Wall_Missile_Trap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Right_Wall_Flame_Trap", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Right_Wall_Flame_Trap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Right_Wall_Flame_Trap", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Right_Wall_Flame_Trap)); tableUnitType.insert(std::pair(UnitTypes::Special_Right_Wall_Flame_Trap.getID(), &UnitTypes::Special_Right_Wall_Flame_Trap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Start_Location", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Start_Location)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Special_Start_Location", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Special_Start_Location)); tableUnitType.insert(std::pair(UnitTypes::Special_Start_Location.getID(), &UnitTypes::Special_Start_Location)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Flag", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Flag)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Flag", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Flag)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Flag.getID(), &UnitTypes::Powerup_Flag)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Young_Chrysalis", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Young_Chrysalis)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Young_Chrysalis", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Young_Chrysalis)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Young_Chrysalis.getID(), &UnitTypes::Powerup_Young_Chrysalis)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Psi_Emitter", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Psi_Emitter)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Psi_Emitter", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Psi_Emitter)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Psi_Emitter.getID(), &UnitTypes::Powerup_Psi_Emitter)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Data_Disk", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Data_Disk)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Data_Disk", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Data_Disk)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Data_Disk.getID(), &UnitTypes::Powerup_Data_Disk)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Khaydarin_Crystal", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Khaydarin_Crystal)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Khaydarin_Crystal", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Khaydarin_Crystal)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Khaydarin_Crystal.getID(), &UnitTypes::Powerup_Khaydarin_Crystal)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Mineral_Cluster_Type_1", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Mineral_Cluster_Type_1)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Mineral_Cluster_Type_1", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Mineral_Cluster_Type_1)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Mineral_Cluster_Type_1.getID(), &UnitTypes::Powerup_Mineral_Cluster_Type_1)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Mineral_Cluster_Type_2", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Mineral_Cluster_Type_2)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Mineral_Cluster_Type_2", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Mineral_Cluster_Type_2)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Mineral_Cluster_Type_2.getID(), &UnitTypes::Powerup_Mineral_Cluster_Type_2)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Protoss_Gas_Orb_Type_1", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Protoss_Gas_Orb_Type_1)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Protoss_Gas_Orb_Type_1", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Protoss_Gas_Orb_Type_1)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Protoss_Gas_Orb_Type_1.getID(), &UnitTypes::Powerup_Protoss_Gas_Orb_Type_1)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Protoss_Gas_Orb_Type_2", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Protoss_Gas_Orb_Type_2)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Protoss_Gas_Orb_Type_2", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Protoss_Gas_Orb_Type_2)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Protoss_Gas_Orb_Type_2.getID(), &UnitTypes::Powerup_Protoss_Gas_Orb_Type_2)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Zerg_Gas_Sac_Type_1", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Zerg_Gas_Sac_Type_1)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Zerg_Gas_Sac_Type_1", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Zerg_Gas_Sac_Type_1)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Zerg_Gas_Sac_Type_1.getID(), &UnitTypes::Powerup_Zerg_Gas_Sac_Type_1)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Zerg_Gas_Sac_Type_2", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Zerg_Gas_Sac_Type_2)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Zerg_Gas_Sac_Type_2", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Zerg_Gas_Sac_Type_2)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Zerg_Gas_Sac_Type_2.getID(), &UnitTypes::Powerup_Zerg_Gas_Sac_Type_2)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Terran_Gas_Tank_Type_1", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Terran_Gas_Tank_Type_1)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Terran_Gas_Tank_Type_1", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Terran_Gas_Tank_Type_1)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Terran_Gas_Tank_Type_1.getID(), &UnitTypes::Powerup_Terran_Gas_Tank_Type_1)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Terran_Gas_Tank_Type_2", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Terran_Gas_Tank_Type_2)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Powerup_Terran_Gas_Tank_Type_2", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Powerup_Terran_Gas_Tank_Type_2)); tableUnitType.insert(std::pair(UnitTypes::Powerup_Terran_Gas_Tank_Type_2.getID(), &UnitTypes::Powerup_Terran_Gas_Tank_Type_2)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::None)); tableUnitType.insert(std::pair(UnitTypes::None.getID(), &UnitTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AllUnits", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::AllUnits)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "AllUnits", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::AllUnits)); tableUnitType.insert(std::pair(UnitTypes::AllUnits.getID(), &UnitTypes::AllUnits)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Men", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Men)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Men", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Men)); tableUnitType.insert(std::pair(UnitTypes::Men.getID(), &UnitTypes::Men)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Buildings", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Buildings)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Buildings", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Buildings)); tableUnitType.insert(std::pair(UnitTypes::Buildings.getID(), &UnitTypes::Buildings)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Factories", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Factories)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Factories", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Factories)); tableUnitType.insert(std::pair(UnitTypes::Factories.getID(), &UnitTypes::Factories)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/UnitType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UnitTypes::Unknown)); tableUnitType.insert(std::pair(UnitTypes::Unknown.getID(), &UnitTypes::Unknown)); -cls = env->FindClass("Lbwapi/UpgradeType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/UpgradeType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Infantry_Armor", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Infantry_Armor)); +cls = env->FindClass("Lbwapi4/UpgradeType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/UpgradeType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Infantry_Armor", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Infantry_Armor)); tableUpgradeType.insert(std::pair(UpgradeTypes::Terran_Infantry_Armor.getID(), &UpgradeTypes::Terran_Infantry_Armor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Vehicle_Plating", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Vehicle_Plating)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Vehicle_Plating", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Vehicle_Plating)); tableUpgradeType.insert(std::pair(UpgradeTypes::Terran_Vehicle_Plating.getID(), &UpgradeTypes::Terran_Vehicle_Plating)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Ship_Plating", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Ship_Plating)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Ship_Plating", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Ship_Plating)); tableUpgradeType.insert(std::pair(UpgradeTypes::Terran_Ship_Plating.getID(), &UpgradeTypes::Terran_Ship_Plating)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Carapace", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Zerg_Carapace)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Carapace", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Zerg_Carapace)); tableUpgradeType.insert(std::pair(UpgradeTypes::Zerg_Carapace.getID(), &UpgradeTypes::Zerg_Carapace)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Flyer_Carapace", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Zerg_Flyer_Carapace)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Flyer_Carapace", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Zerg_Flyer_Carapace)); tableUpgradeType.insert(std::pair(UpgradeTypes::Zerg_Flyer_Carapace.getID(), &UpgradeTypes::Zerg_Flyer_Carapace)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Ground_Armor", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Protoss_Ground_Armor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Ground_Armor", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Protoss_Ground_Armor)); tableUpgradeType.insert(std::pair(UpgradeTypes::Protoss_Ground_Armor.getID(), &UpgradeTypes::Protoss_Ground_Armor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Air_Armor", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Protoss_Air_Armor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Air_Armor", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Protoss_Air_Armor)); tableUpgradeType.insert(std::pair(UpgradeTypes::Protoss_Air_Armor.getID(), &UpgradeTypes::Protoss_Air_Armor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Infantry_Weapons", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Infantry_Weapons)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Infantry_Weapons", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Infantry_Weapons)); tableUpgradeType.insert(std::pair(UpgradeTypes::Terran_Infantry_Weapons.getID(), &UpgradeTypes::Terran_Infantry_Weapons)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Vehicle_Weapons", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Vehicle_Weapons)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Vehicle_Weapons", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Vehicle_Weapons)); tableUpgradeType.insert(std::pair(UpgradeTypes::Terran_Vehicle_Weapons.getID(), &UpgradeTypes::Terran_Vehicle_Weapons)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Ship_Weapons", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Ship_Weapons)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Terran_Ship_Weapons", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Terran_Ship_Weapons)); tableUpgradeType.insert(std::pair(UpgradeTypes::Terran_Ship_Weapons.getID(), &UpgradeTypes::Terran_Ship_Weapons)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Melee_Attacks", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Zerg_Melee_Attacks)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Melee_Attacks", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Zerg_Melee_Attacks)); tableUpgradeType.insert(std::pair(UpgradeTypes::Zerg_Melee_Attacks.getID(), &UpgradeTypes::Zerg_Melee_Attacks)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Missile_Attacks", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Zerg_Missile_Attacks)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Missile_Attacks", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Zerg_Missile_Attacks)); tableUpgradeType.insert(std::pair(UpgradeTypes::Zerg_Missile_Attacks.getID(), &UpgradeTypes::Zerg_Missile_Attacks)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Flyer_Attacks", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Zerg_Flyer_Attacks)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Zerg_Flyer_Attacks", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Zerg_Flyer_Attacks)); tableUpgradeType.insert(std::pair(UpgradeTypes::Zerg_Flyer_Attacks.getID(), &UpgradeTypes::Zerg_Flyer_Attacks)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Ground_Weapons", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Protoss_Ground_Weapons)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Ground_Weapons", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Protoss_Ground_Weapons)); tableUpgradeType.insert(std::pair(UpgradeTypes::Protoss_Ground_Weapons.getID(), &UpgradeTypes::Protoss_Ground_Weapons)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Air_Weapons", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Protoss_Air_Weapons)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Air_Weapons", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Protoss_Air_Weapons)); tableUpgradeType.insert(std::pair(UpgradeTypes::Protoss_Air_Weapons.getID(), &UpgradeTypes::Protoss_Air_Weapons)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Plasma_Shields", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Protoss_Plasma_Shields)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Protoss_Plasma_Shields", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Protoss_Plasma_Shields)); tableUpgradeType.insert(std::pair(UpgradeTypes::Protoss_Plasma_Shields.getID(), &UpgradeTypes::Protoss_Plasma_Shields)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "U_238_Shells", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::U_238_Shells)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "U_238_Shells", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::U_238_Shells)); tableUpgradeType.insert(std::pair(UpgradeTypes::U_238_Shells.getID(), &UpgradeTypes::U_238_Shells)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ion_Thrusters", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Ion_Thrusters)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ion_Thrusters", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Ion_Thrusters)); tableUpgradeType.insert(std::pair(UpgradeTypes::Ion_Thrusters.getID(), &UpgradeTypes::Ion_Thrusters)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Titan_Reactor", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Titan_Reactor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Titan_Reactor", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Titan_Reactor)); tableUpgradeType.insert(std::pair(UpgradeTypes::Titan_Reactor.getID(), &UpgradeTypes::Titan_Reactor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ocular_Implants", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Ocular_Implants)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ocular_Implants", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Ocular_Implants)); tableUpgradeType.insert(std::pair(UpgradeTypes::Ocular_Implants.getID(), &UpgradeTypes::Ocular_Implants)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Moebius_Reactor", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Moebius_Reactor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Moebius_Reactor", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Moebius_Reactor)); tableUpgradeType.insert(std::pair(UpgradeTypes::Moebius_Reactor.getID(), &UpgradeTypes::Moebius_Reactor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Apollo_Reactor", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Apollo_Reactor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Apollo_Reactor", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Apollo_Reactor)); tableUpgradeType.insert(std::pair(UpgradeTypes::Apollo_Reactor.getID(), &UpgradeTypes::Apollo_Reactor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Colossus_Reactor", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Colossus_Reactor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Colossus_Reactor", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Colossus_Reactor)); tableUpgradeType.insert(std::pair(UpgradeTypes::Colossus_Reactor.getID(), &UpgradeTypes::Colossus_Reactor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ventral_Sacs", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Ventral_Sacs)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ventral_Sacs", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Ventral_Sacs)); tableUpgradeType.insert(std::pair(UpgradeTypes::Ventral_Sacs.getID(), &UpgradeTypes::Ventral_Sacs)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Antennae", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Antennae)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Antennae", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Antennae)); tableUpgradeType.insert(std::pair(UpgradeTypes::Antennae.getID(), &UpgradeTypes::Antennae)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Pneumatized_Carapace", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Pneumatized_Carapace)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Pneumatized_Carapace", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Pneumatized_Carapace)); tableUpgradeType.insert(std::pair(UpgradeTypes::Pneumatized_Carapace.getID(), &UpgradeTypes::Pneumatized_Carapace)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Metabolic_Boost", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Metabolic_Boost)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Metabolic_Boost", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Metabolic_Boost)); tableUpgradeType.insert(std::pair(UpgradeTypes::Metabolic_Boost.getID(), &UpgradeTypes::Metabolic_Boost)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Adrenal_Glands", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Adrenal_Glands)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Adrenal_Glands", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Adrenal_Glands)); tableUpgradeType.insert(std::pair(UpgradeTypes::Adrenal_Glands.getID(), &UpgradeTypes::Adrenal_Glands)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Muscular_Augments", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Muscular_Augments)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Muscular_Augments", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Muscular_Augments)); tableUpgradeType.insert(std::pair(UpgradeTypes::Muscular_Augments.getID(), &UpgradeTypes::Muscular_Augments)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Grooved_Spines", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Grooved_Spines)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Grooved_Spines", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Grooved_Spines)); tableUpgradeType.insert(std::pair(UpgradeTypes::Grooved_Spines.getID(), &UpgradeTypes::Grooved_Spines)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gamete_Meiosis", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Gamete_Meiosis)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gamete_Meiosis", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Gamete_Meiosis)); tableUpgradeType.insert(std::pair(UpgradeTypes::Gamete_Meiosis.getID(), &UpgradeTypes::Gamete_Meiosis)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Metasynaptic_Node", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Metasynaptic_Node)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Metasynaptic_Node", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Metasynaptic_Node)); tableUpgradeType.insert(std::pair(UpgradeTypes::Metasynaptic_Node.getID(), &UpgradeTypes::Metasynaptic_Node)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Singularity_Charge", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Singularity_Charge)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Singularity_Charge", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Singularity_Charge)); tableUpgradeType.insert(std::pair(UpgradeTypes::Singularity_Charge.getID(), &UpgradeTypes::Singularity_Charge)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Leg_Enhancements", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Leg_Enhancements)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Leg_Enhancements", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Leg_Enhancements)); tableUpgradeType.insert(std::pair(UpgradeTypes::Leg_Enhancements.getID(), &UpgradeTypes::Leg_Enhancements)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Scarab_Damage", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Scarab_Damage)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Scarab_Damage", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Scarab_Damage)); tableUpgradeType.insert(std::pair(UpgradeTypes::Scarab_Damage.getID(), &UpgradeTypes::Scarab_Damage)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Reaver_Capacity", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Reaver_Capacity)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Reaver_Capacity", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Reaver_Capacity)); tableUpgradeType.insert(std::pair(UpgradeTypes::Reaver_Capacity.getID(), &UpgradeTypes::Reaver_Capacity)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gravitic_Drive", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Gravitic_Drive)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gravitic_Drive", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Gravitic_Drive)); tableUpgradeType.insert(std::pair(UpgradeTypes::Gravitic_Drive.getID(), &UpgradeTypes::Gravitic_Drive)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Sensor_Array", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Sensor_Array)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Sensor_Array", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Sensor_Array)); tableUpgradeType.insert(std::pair(UpgradeTypes::Sensor_Array.getID(), &UpgradeTypes::Sensor_Array)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gravitic_Boosters", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Gravitic_Boosters)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gravitic_Boosters", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Gravitic_Boosters)); tableUpgradeType.insert(std::pair(UpgradeTypes::Gravitic_Boosters.getID(), &UpgradeTypes::Gravitic_Boosters)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Khaydarin_Amulet", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Khaydarin_Amulet)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Khaydarin_Amulet", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Khaydarin_Amulet)); tableUpgradeType.insert(std::pair(UpgradeTypes::Khaydarin_Amulet.getID(), &UpgradeTypes::Khaydarin_Amulet)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Apial_Sensors", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Apial_Sensors)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Apial_Sensors", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Apial_Sensors)); tableUpgradeType.insert(std::pair(UpgradeTypes::Apial_Sensors.getID(), &UpgradeTypes::Apial_Sensors)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gravitic_Thrusters", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Gravitic_Thrusters)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gravitic_Thrusters", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Gravitic_Thrusters)); tableUpgradeType.insert(std::pair(UpgradeTypes::Gravitic_Thrusters.getID(), &UpgradeTypes::Gravitic_Thrusters)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Carrier_Capacity", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Carrier_Capacity)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Carrier_Capacity", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Carrier_Capacity)); tableUpgradeType.insert(std::pair(UpgradeTypes::Carrier_Capacity.getID(), &UpgradeTypes::Carrier_Capacity)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Khaydarin_Core", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Khaydarin_Core)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Khaydarin_Core", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Khaydarin_Core)); tableUpgradeType.insert(std::pair(UpgradeTypes::Khaydarin_Core.getID(), &UpgradeTypes::Khaydarin_Core)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Argus_Jewel", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Argus_Jewel)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Argus_Jewel", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Argus_Jewel)); tableUpgradeType.insert(std::pair(UpgradeTypes::Argus_Jewel.getID(), &UpgradeTypes::Argus_Jewel)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Argus_Talisman", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Argus_Talisman)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Argus_Talisman", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Argus_Talisman)); tableUpgradeType.insert(std::pair(UpgradeTypes::Argus_Talisman.getID(), &UpgradeTypes::Argus_Talisman)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Caduceus_Reactor", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Caduceus_Reactor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Caduceus_Reactor", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Caduceus_Reactor)); tableUpgradeType.insert(std::pair(UpgradeTypes::Caduceus_Reactor.getID(), &UpgradeTypes::Caduceus_Reactor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Chitinous_Plating", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Chitinous_Plating)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Chitinous_Plating", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Chitinous_Plating)); tableUpgradeType.insert(std::pair(UpgradeTypes::Chitinous_Plating.getID(), &UpgradeTypes::Chitinous_Plating)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Anabolic_Synthesis", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Anabolic_Synthesis)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Anabolic_Synthesis", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Anabolic_Synthesis)); tableUpgradeType.insert(std::pair(UpgradeTypes::Anabolic_Synthesis.getID(), &UpgradeTypes::Anabolic_Synthesis)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Charon_Boosters", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Charon_Boosters)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Charon_Boosters", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Charon_Boosters)); tableUpgradeType.insert(std::pair(UpgradeTypes::Charon_Boosters.getID(), &UpgradeTypes::Charon_Boosters)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Upgrade_60", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Upgrade_60)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Upgrade_60", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Upgrade_60)); tableUpgradeType.insert(std::pair(UpgradeTypes::Upgrade_60.getID(), &UpgradeTypes::Upgrade_60)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::None)); tableUpgradeType.insert(std::pair(UpgradeTypes::None.getID(), &UpgradeTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/UpgradeType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&UpgradeTypes::Unknown)); tableUpgradeType.insert(std::pair(UpgradeTypes::Unknown.getID(), &UpgradeTypes::Unknown)); -cls = env->FindClass("Lbwapi/WeaponType;"); -getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi/WeaponType;"); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gauss_Rifle", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Gauss_Rifle)); +cls = env->FindClass("Lbwapi4/WeaponType;"); +getId = env->GetStaticMethodID(cls, "get", "(J)Lbwapi4/WeaponType;"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gauss_Rifle", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Gauss_Rifle)); tableWeaponType.insert(std::pair(WeaponTypes::Gauss_Rifle.getID(), &WeaponTypes::Gauss_Rifle)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gauss_Rifle_Jim_Raynor", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Gauss_Rifle_Jim_Raynor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gauss_Rifle_Jim_Raynor", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Gauss_Rifle_Jim_Raynor)); tableWeaponType.insert(std::pair(WeaponTypes::Gauss_Rifle_Jim_Raynor.getID(), &WeaponTypes::Gauss_Rifle_Jim_Raynor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::C_10_Canister_Rifle)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::C_10_Canister_Rifle)); tableWeaponType.insert(std::pair(WeaponTypes::C_10_Canister_Rifle.getID(), &WeaponTypes::C_10_Canister_Rifle)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle_Sarah_Kerrigan", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::C_10_Canister_Rifle_Sarah_Kerrigan)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle_Sarah_Kerrigan", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::C_10_Canister_Rifle_Sarah_Kerrigan)); tableWeaponType.insert(std::pair(WeaponTypes::C_10_Canister_Rifle_Sarah_Kerrigan.getID(), &WeaponTypes::C_10_Canister_Rifle_Sarah_Kerrigan)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle_Samir_Duran", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::C_10_Canister_Rifle_Samir_Duran)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle_Samir_Duran", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::C_10_Canister_Rifle_Samir_Duran)); tableWeaponType.insert(std::pair(WeaponTypes::C_10_Canister_Rifle_Samir_Duran.getID(), &WeaponTypes::C_10_Canister_Rifle_Samir_Duran)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle_Infested_Duran", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::C_10_Canister_Rifle_Infested_Duran)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle_Infested_Duran", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::C_10_Canister_Rifle_Infested_Duran)); tableWeaponType.insert(std::pair(WeaponTypes::C_10_Canister_Rifle_Infested_Duran.getID(), &WeaponTypes::C_10_Canister_Rifle_Infested_Duran)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle_Alexei_Stukov", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::C_10_Canister_Rifle_Alexei_Stukov)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "C_10_Canister_Rifle_Alexei_Stukov", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::C_10_Canister_Rifle_Alexei_Stukov)); tableWeaponType.insert(std::pair(WeaponTypes::C_10_Canister_Rifle_Alexei_Stukov.getID(), &WeaponTypes::C_10_Canister_Rifle_Alexei_Stukov)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fragmentation_Grenade", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Fragmentation_Grenade)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fragmentation_Grenade", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Fragmentation_Grenade)); tableWeaponType.insert(std::pair(WeaponTypes::Fragmentation_Grenade.getID(), &WeaponTypes::Fragmentation_Grenade)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fragmentation_Grenade_Jim_Raynor", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Fragmentation_Grenade_Jim_Raynor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fragmentation_Grenade_Jim_Raynor", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Fragmentation_Grenade_Jim_Raynor)); tableWeaponType.insert(std::pair(WeaponTypes::Fragmentation_Grenade_Jim_Raynor.getID(), &WeaponTypes::Fragmentation_Grenade_Jim_Raynor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spider_Mines", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Spider_Mines)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spider_Mines", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Spider_Mines)); tableWeaponType.insert(std::pair(WeaponTypes::Spider_Mines.getID(), &WeaponTypes::Spider_Mines)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Twin_Autocannons", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Twin_Autocannons)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Twin_Autocannons", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Twin_Autocannons)); tableWeaponType.insert(std::pair(WeaponTypes::Twin_Autocannons.getID(), &WeaponTypes::Twin_Autocannons)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Twin_Autocannons_Alan_Schezar", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Twin_Autocannons_Alan_Schezar)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Twin_Autocannons_Alan_Schezar", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Twin_Autocannons_Alan_Schezar)); tableWeaponType.insert(std::pair(WeaponTypes::Twin_Autocannons_Alan_Schezar.getID(), &WeaponTypes::Twin_Autocannons_Alan_Schezar)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hellfire_Missile_Pack", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Hellfire_Missile_Pack)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hellfire_Missile_Pack", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Hellfire_Missile_Pack)); tableWeaponType.insert(std::pair(WeaponTypes::Hellfire_Missile_Pack.getID(), &WeaponTypes::Hellfire_Missile_Pack)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hellfire_Missile_Pack_Alan_Schezar", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Hellfire_Missile_Pack_Alan_Schezar)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hellfire_Missile_Pack_Alan_Schezar", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Hellfire_Missile_Pack_Alan_Schezar)); tableWeaponType.insert(std::pair(WeaponTypes::Hellfire_Missile_Pack_Alan_Schezar.getID(), &WeaponTypes::Hellfire_Missile_Pack_Alan_Schezar)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Arclite_Cannon", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Arclite_Cannon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Arclite_Cannon", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Arclite_Cannon)); tableWeaponType.insert(std::pair(WeaponTypes::Arclite_Cannon.getID(), &WeaponTypes::Arclite_Cannon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Arclite_Cannon_Edmund_Duke", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Arclite_Cannon_Edmund_Duke)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Arclite_Cannon_Edmund_Duke", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Arclite_Cannon_Edmund_Duke)); tableWeaponType.insert(std::pair(WeaponTypes::Arclite_Cannon_Edmund_Duke.getID(), &WeaponTypes::Arclite_Cannon_Edmund_Duke)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fusion_Cutter", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Fusion_Cutter)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Fusion_Cutter", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Fusion_Cutter)); tableWeaponType.insert(std::pair(WeaponTypes::Fusion_Cutter.getID(), &WeaponTypes::Fusion_Cutter)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gemini_Missiles", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Gemini_Missiles)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gemini_Missiles", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Gemini_Missiles)); tableWeaponType.insert(std::pair(WeaponTypes::Gemini_Missiles.getID(), &WeaponTypes::Gemini_Missiles)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gemini_Missiles_Tom_Kazansky", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Gemini_Missiles_Tom_Kazansky)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Gemini_Missiles_Tom_Kazansky", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Gemini_Missiles_Tom_Kazansky)); tableWeaponType.insert(std::pair(WeaponTypes::Gemini_Missiles_Tom_Kazansky.getID(), &WeaponTypes::Gemini_Missiles_Tom_Kazansky)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burst_Lasers", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Burst_Lasers)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burst_Lasers", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Burst_Lasers)); tableWeaponType.insert(std::pair(WeaponTypes::Burst_Lasers.getID(), &WeaponTypes::Burst_Lasers)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burst_Lasers_Tom_Kazansky", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Burst_Lasers_Tom_Kazansky)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Burst_Lasers_Tom_Kazansky", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Burst_Lasers_Tom_Kazansky)); tableWeaponType.insert(std::pair(WeaponTypes::Burst_Lasers_Tom_Kazansky.getID(), &WeaponTypes::Burst_Lasers_Tom_Kazansky)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATS_Laser_Battery", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATS_Laser_Battery)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATS_Laser_Battery", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATS_Laser_Battery)); tableWeaponType.insert(std::pair(WeaponTypes::ATS_Laser_Battery.getID(), &WeaponTypes::ATS_Laser_Battery)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATS_Laser_Battery_Hero", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATS_Laser_Battery_Hero)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATS_Laser_Battery_Hero", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATS_Laser_Battery_Hero)); tableWeaponType.insert(std::pair(WeaponTypes::ATS_Laser_Battery_Hero.getID(), &WeaponTypes::ATS_Laser_Battery_Hero)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATS_Laser_Battery_Hyperion", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATS_Laser_Battery_Hyperion)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATS_Laser_Battery_Hyperion", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATS_Laser_Battery_Hyperion)); tableWeaponType.insert(std::pair(WeaponTypes::ATS_Laser_Battery_Hyperion.getID(), &WeaponTypes::ATS_Laser_Battery_Hyperion)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATA_Laser_Battery", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATA_Laser_Battery)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATA_Laser_Battery", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATA_Laser_Battery)); tableWeaponType.insert(std::pair(WeaponTypes::ATA_Laser_Battery.getID(), &WeaponTypes::ATA_Laser_Battery)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATA_Laser_Battery_Hero", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATA_Laser_Battery_Hero)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATA_Laser_Battery_Hero", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATA_Laser_Battery_Hero)); tableWeaponType.insert(std::pair(WeaponTypes::ATA_Laser_Battery_Hero.getID(), &WeaponTypes::ATA_Laser_Battery_Hero)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATA_Laser_Battery_Hyperion", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATA_Laser_Battery_Hyperion)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "ATA_Laser_Battery_Hyperion", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::ATA_Laser_Battery_Hyperion)); tableWeaponType.insert(std::pair(WeaponTypes::ATA_Laser_Battery_Hyperion.getID(), &WeaponTypes::ATA_Laser_Battery_Hyperion)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Flame_Thrower", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Flame_Thrower)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Flame_Thrower", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Flame_Thrower)); tableWeaponType.insert(std::pair(WeaponTypes::Flame_Thrower.getID(), &WeaponTypes::Flame_Thrower)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Flame_Thrower_Gui_Montag", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Flame_Thrower_Gui_Montag)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Flame_Thrower_Gui_Montag", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Flame_Thrower_Gui_Montag)); tableWeaponType.insert(std::pair(WeaponTypes::Flame_Thrower_Gui_Montag.getID(), &WeaponTypes::Flame_Thrower_Gui_Montag)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Arclite_Shock_Cannon", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Arclite_Shock_Cannon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Arclite_Shock_Cannon", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Arclite_Shock_Cannon)); tableWeaponType.insert(std::pair(WeaponTypes::Arclite_Shock_Cannon.getID(), &WeaponTypes::Arclite_Shock_Cannon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Arclite_Shock_Cannon_Edmund_Duke", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Arclite_Shock_Cannon_Edmund_Duke)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Arclite_Shock_Cannon_Edmund_Duke", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Arclite_Shock_Cannon_Edmund_Duke)); tableWeaponType.insert(std::pair(WeaponTypes::Arclite_Shock_Cannon_Edmund_Duke.getID(), &WeaponTypes::Arclite_Shock_Cannon_Edmund_Duke)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Longbolt_Missile", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Longbolt_Missile)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Longbolt_Missile", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Longbolt_Missile)); tableWeaponType.insert(std::pair(WeaponTypes::Longbolt_Missile.getID(), &WeaponTypes::Longbolt_Missile)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Claws", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Claws)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Claws", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Claws)); tableWeaponType.insert(std::pair(WeaponTypes::Claws.getID(), &WeaponTypes::Claws)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Claws_Devouring_One", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Claws_Devouring_One)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Claws_Devouring_One", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Claws_Devouring_One)); tableWeaponType.insert(std::pair(WeaponTypes::Claws_Devouring_One.getID(), &WeaponTypes::Claws_Devouring_One)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Claws_Infested_Kerrigan", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Claws_Infested_Kerrigan)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Claws_Infested_Kerrigan", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Claws_Infested_Kerrigan)); tableWeaponType.insert(std::pair(WeaponTypes::Claws_Infested_Kerrigan.getID(), &WeaponTypes::Claws_Infested_Kerrigan)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Needle_Spines", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Needle_Spines)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Needle_Spines", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Needle_Spines)); tableWeaponType.insert(std::pair(WeaponTypes::Needle_Spines.getID(), &WeaponTypes::Needle_Spines)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Needle_Spines_Hunter_Killer", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Needle_Spines_Hunter_Killer)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Needle_Spines_Hunter_Killer", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Needle_Spines_Hunter_Killer)); tableWeaponType.insert(std::pair(WeaponTypes::Needle_Spines_Hunter_Killer.getID(), &WeaponTypes::Needle_Spines_Hunter_Killer)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Kaiser_Blades", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Kaiser_Blades)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Kaiser_Blades", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Kaiser_Blades)); tableWeaponType.insert(std::pair(WeaponTypes::Kaiser_Blades.getID(), &WeaponTypes::Kaiser_Blades)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Kaiser_Blades_Torrasque", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Kaiser_Blades_Torrasque)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Kaiser_Blades_Torrasque", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Kaiser_Blades_Torrasque)); tableWeaponType.insert(std::pair(WeaponTypes::Kaiser_Blades_Torrasque.getID(), &WeaponTypes::Kaiser_Blades_Torrasque)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Toxic_Spores", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Toxic_Spores)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Toxic_Spores", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Toxic_Spores)); tableWeaponType.insert(std::pair(WeaponTypes::Toxic_Spores.getID(), &WeaponTypes::Toxic_Spores)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spines", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Spines)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spines", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Spines)); tableWeaponType.insert(std::pair(WeaponTypes::Spines.getID(), &WeaponTypes::Spines)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Acid_Spore", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Acid_Spore)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Acid_Spore", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Acid_Spore)); tableWeaponType.insert(std::pair(WeaponTypes::Acid_Spore.getID(), &WeaponTypes::Acid_Spore)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Acid_Spore_Kukulza", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Acid_Spore_Kukulza)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Acid_Spore_Kukulza", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Acid_Spore_Kukulza)); tableWeaponType.insert(std::pair(WeaponTypes::Acid_Spore_Kukulza.getID(), &WeaponTypes::Acid_Spore_Kukulza)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Glave_Wurm", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Glave_Wurm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Glave_Wurm", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Glave_Wurm)); tableWeaponType.insert(std::pair(WeaponTypes::Glave_Wurm.getID(), &WeaponTypes::Glave_Wurm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Glave_Wurm_Kukulza", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Glave_Wurm_Kukulza)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Glave_Wurm_Kukulza", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Glave_Wurm_Kukulza)); tableWeaponType.insert(std::pair(WeaponTypes::Glave_Wurm_Kukulza.getID(), &WeaponTypes::Glave_Wurm_Kukulza)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Seeker_Spores", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Seeker_Spores)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Seeker_Spores", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Seeker_Spores)); tableWeaponType.insert(std::pair(WeaponTypes::Seeker_Spores.getID(), &WeaponTypes::Seeker_Spores)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Subterranean_Tentacle", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Subterranean_Tentacle)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Subterranean_Tentacle", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Subterranean_Tentacle)); tableWeaponType.insert(std::pair(WeaponTypes::Subterranean_Tentacle.getID(), &WeaponTypes::Subterranean_Tentacle)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Suicide_Infested_Terran", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Suicide_Infested_Terran)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Suicide_Infested_Terran", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Suicide_Infested_Terran)); tableWeaponType.insert(std::pair(WeaponTypes::Suicide_Infested_Terran.getID(), &WeaponTypes::Suicide_Infested_Terran)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Suicide_Scourge", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Suicide_Scourge)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Suicide_Scourge", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Suicide_Scourge)); tableWeaponType.insert(std::pair(WeaponTypes::Suicide_Scourge.getID(), &WeaponTypes::Suicide_Scourge)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Particle_Beam", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Particle_Beam)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Particle_Beam", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Particle_Beam)); tableWeaponType.insert(std::pair(WeaponTypes::Particle_Beam.getID(), &WeaponTypes::Particle_Beam)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psi_Blades", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psi_Blades)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psi_Blades", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psi_Blades)); tableWeaponType.insert(std::pair(WeaponTypes::Psi_Blades.getID(), &WeaponTypes::Psi_Blades)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psi_Blades_Fenix", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psi_Blades_Fenix)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psi_Blades_Fenix", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psi_Blades_Fenix)); tableWeaponType.insert(std::pair(WeaponTypes::Psi_Blades_Fenix.getID(), &WeaponTypes::Psi_Blades_Fenix)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Phase_Disruptor", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Phase_Disruptor)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Phase_Disruptor", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Phase_Disruptor)); tableWeaponType.insert(std::pair(WeaponTypes::Phase_Disruptor.getID(), &WeaponTypes::Phase_Disruptor)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Phase_Disruptor_Fenix", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Phase_Disruptor_Fenix)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Phase_Disruptor_Fenix", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Phase_Disruptor_Fenix)); tableWeaponType.insert(std::pair(WeaponTypes::Phase_Disruptor_Fenix.getID(), &WeaponTypes::Phase_Disruptor_Fenix)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psi_Assault", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psi_Assault)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psi_Assault", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psi_Assault)); tableWeaponType.insert(std::pair(WeaponTypes::Psi_Assault.getID(), &WeaponTypes::Psi_Assault)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Shockwave", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psionic_Shockwave)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Shockwave", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psionic_Shockwave)); tableWeaponType.insert(std::pair(WeaponTypes::Psionic_Shockwave.getID(), &WeaponTypes::Psionic_Shockwave)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Shockwave_TZ_Archon", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psionic_Shockwave_TZ_Archon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Shockwave_TZ_Archon", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psionic_Shockwave_TZ_Archon)); tableWeaponType.insert(std::pair(WeaponTypes::Psionic_Shockwave_TZ_Archon.getID(), &WeaponTypes::Psionic_Shockwave_TZ_Archon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dual_Photon_Blasters", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Dual_Photon_Blasters)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dual_Photon_Blasters", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Dual_Photon_Blasters)); tableWeaponType.insert(std::pair(WeaponTypes::Dual_Photon_Blasters.getID(), &WeaponTypes::Dual_Photon_Blasters)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dual_Photon_Blasters_Mojo", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Dual_Photon_Blasters_Mojo)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dual_Photon_Blasters_Mojo", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Dual_Photon_Blasters_Mojo)); tableWeaponType.insert(std::pair(WeaponTypes::Dual_Photon_Blasters_Mojo.getID(), &WeaponTypes::Dual_Photon_Blasters_Mojo)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dual_Photon_Blasters_Artanis", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Dual_Photon_Blasters_Artanis)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dual_Photon_Blasters_Artanis", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Dual_Photon_Blasters_Artanis)); tableWeaponType.insert(std::pair(WeaponTypes::Dual_Photon_Blasters_Artanis.getID(), &WeaponTypes::Dual_Photon_Blasters_Artanis)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Anti_Matter_Missiles", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Anti_Matter_Missiles)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Anti_Matter_Missiles", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Anti_Matter_Missiles)); tableWeaponType.insert(std::pair(WeaponTypes::Anti_Matter_Missiles.getID(), &WeaponTypes::Anti_Matter_Missiles)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Anti_Matter_Missiles_Mojo", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Anti_Matter_Missiles_Mojo)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Anti_Matter_Missiles_Mojo", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Anti_Matter_Missiles_Mojo)); tableWeaponType.insert(std::pair(WeaponTypes::Anti_Matter_Missiles_Mojo.getID(), &WeaponTypes::Anti_Matter_Missiles_Mojo)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Anti_Matter_Missiles_Artanis", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Anti_Matter_Missiles_Artanis)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Anti_Matter_Missiles_Artanis", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Anti_Matter_Missiles_Artanis)); tableWeaponType.insert(std::pair(WeaponTypes::Anti_Matter_Missiles_Artanis.getID(), &WeaponTypes::Anti_Matter_Missiles_Artanis)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Phase_Disruptor_Cannon", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Phase_Disruptor_Cannon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Phase_Disruptor_Cannon", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Phase_Disruptor_Cannon)); tableWeaponType.insert(std::pair(WeaponTypes::Phase_Disruptor_Cannon.getID(), &WeaponTypes::Phase_Disruptor_Cannon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Phase_Disruptor_Cannon_Danimoth", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Phase_Disruptor_Cannon_Danimoth)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Phase_Disruptor_Cannon_Danimoth", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Phase_Disruptor_Cannon_Danimoth)); tableWeaponType.insert(std::pair(WeaponTypes::Phase_Disruptor_Cannon_Danimoth.getID(), &WeaponTypes::Phase_Disruptor_Cannon_Danimoth)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Pulse_Cannon", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Pulse_Cannon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Pulse_Cannon", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Pulse_Cannon)); tableWeaponType.insert(std::pair(WeaponTypes::Pulse_Cannon.getID(), &WeaponTypes::Pulse_Cannon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "STS_Photon_Cannon", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::STS_Photon_Cannon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "STS_Photon_Cannon", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::STS_Photon_Cannon)); tableWeaponType.insert(std::pair(WeaponTypes::STS_Photon_Cannon.getID(), &WeaponTypes::STS_Photon_Cannon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "STA_Photon_Cannon", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::STA_Photon_Cannon)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "STA_Photon_Cannon", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::STA_Photon_Cannon)); tableWeaponType.insert(std::pair(WeaponTypes::STA_Photon_Cannon.getID(), &WeaponTypes::STA_Photon_Cannon)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Scarab", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Scarab)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Scarab", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Scarab)); tableWeaponType.insert(std::pair(WeaponTypes::Scarab.getID(), &WeaponTypes::Scarab)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Neutron_Flare", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Neutron_Flare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Neutron_Flare", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Neutron_Flare)); tableWeaponType.insert(std::pair(WeaponTypes::Neutron_Flare.getID(), &WeaponTypes::Neutron_Flare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Halo_Rockets", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Halo_Rockets)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Halo_Rockets", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Halo_Rockets)); tableWeaponType.insert(std::pair(WeaponTypes::Halo_Rockets.getID(), &WeaponTypes::Halo_Rockets)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Corrosive_Acid", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Corrosive_Acid)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Corrosive_Acid", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Corrosive_Acid)); tableWeaponType.insert(std::pair(WeaponTypes::Corrosive_Acid.getID(), &WeaponTypes::Corrosive_Acid)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Subterranean_Spines", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Subterranean_Spines)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Subterranean_Spines", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Subterranean_Spines)); tableWeaponType.insert(std::pair(WeaponTypes::Subterranean_Spines.getID(), &WeaponTypes::Subterranean_Spines)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Warp_Blades", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Warp_Blades)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Warp_Blades", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Warp_Blades)); tableWeaponType.insert(std::pair(WeaponTypes::Warp_Blades.getID(), &WeaponTypes::Warp_Blades)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Warp_Blades_Hero", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Warp_Blades_Hero)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Warp_Blades_Hero", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Warp_Blades_Hero)); tableWeaponType.insert(std::pair(WeaponTypes::Warp_Blades_Hero.getID(), &WeaponTypes::Warp_Blades_Hero)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Warp_Blades_Zeratul", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Warp_Blades_Zeratul)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Warp_Blades_Zeratul", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Warp_Blades_Zeratul)); tableWeaponType.insert(std::pair(WeaponTypes::Warp_Blades_Zeratul.getID(), &WeaponTypes::Warp_Blades_Zeratul)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Independant_Laser_Battery", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Independant_Laser_Battery)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Independant_Laser_Battery", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Independant_Laser_Battery)); tableWeaponType.insert(std::pair(WeaponTypes::Independant_Laser_Battery.getID(), &WeaponTypes::Independant_Laser_Battery)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Twin_Autocannons_Floor_Trap", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Twin_Autocannons_Floor_Trap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Twin_Autocannons_Floor_Trap", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Twin_Autocannons_Floor_Trap)); tableWeaponType.insert(std::pair(WeaponTypes::Twin_Autocannons_Floor_Trap.getID(), &WeaponTypes::Twin_Autocannons_Floor_Trap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hellfire_Missile_Pack_Wall_Trap", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Hellfire_Missile_Pack_Wall_Trap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hellfire_Missile_Pack_Wall_Trap", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Hellfire_Missile_Pack_Wall_Trap)); tableWeaponType.insert(std::pair(WeaponTypes::Hellfire_Missile_Pack_Wall_Trap.getID(), &WeaponTypes::Hellfire_Missile_Pack_Wall_Trap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Flame_Thrower_Wall_Trap", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Flame_Thrower_Wall_Trap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Flame_Thrower_Wall_Trap", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Flame_Thrower_Wall_Trap)); tableWeaponType.insert(std::pair(WeaponTypes::Flame_Thrower_Wall_Trap.getID(), &WeaponTypes::Flame_Thrower_Wall_Trap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hellfire_Missile_Pack_Floor_Trap", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Hellfire_Missile_Pack_Floor_Trap)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Hellfire_Missile_Pack_Floor_Trap", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Hellfire_Missile_Pack_Floor_Trap)); tableWeaponType.insert(std::pair(WeaponTypes::Hellfire_Missile_Pack_Floor_Trap.getID(), &WeaponTypes::Hellfire_Missile_Pack_Floor_Trap)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yamato_Gun", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Yamato_Gun)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yamato_Gun", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Yamato_Gun)); tableWeaponType.insert(std::pair(WeaponTypes::Yamato_Gun.getID(), &WeaponTypes::Yamato_Gun)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Nuclear_Strike", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Nuclear_Strike)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Nuclear_Strike", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Nuclear_Strike)); tableWeaponType.insert(std::pair(WeaponTypes::Nuclear_Strike.getID(), &WeaponTypes::Nuclear_Strike)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Lockdown", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Lockdown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Lockdown", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Lockdown)); tableWeaponType.insert(std::pair(WeaponTypes::Lockdown.getID(), &WeaponTypes::Lockdown)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EMP_Shockwave", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::EMP_Shockwave)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "EMP_Shockwave", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::EMP_Shockwave)); tableWeaponType.insert(std::pair(WeaponTypes::EMP_Shockwave.getID(), &WeaponTypes::EMP_Shockwave)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Irradiate", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Irradiate)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Irradiate", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Irradiate)); tableWeaponType.insert(std::pair(WeaponTypes::Irradiate.getID(), &WeaponTypes::Irradiate)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Parasite", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Parasite)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Parasite", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Parasite)); tableWeaponType.insert(std::pair(WeaponTypes::Parasite.getID(), &WeaponTypes::Parasite)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spawn_Broodlings", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Spawn_Broodlings)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Spawn_Broodlings", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Spawn_Broodlings)); tableWeaponType.insert(std::pair(WeaponTypes::Spawn_Broodlings.getID(), &WeaponTypes::Spawn_Broodlings)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ensnare", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Ensnare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Ensnare", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Ensnare)); tableWeaponType.insert(std::pair(WeaponTypes::Ensnare.getID(), &WeaponTypes::Ensnare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dark_Swarm", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Dark_Swarm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Dark_Swarm", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Dark_Swarm)); tableWeaponType.insert(std::pair(WeaponTypes::Dark_Swarm.getID(), &WeaponTypes::Dark_Swarm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Plague", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Plague)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Plague", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Plague)); tableWeaponType.insert(std::pair(WeaponTypes::Plague.getID(), &WeaponTypes::Plague)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Consume", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Consume)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Consume", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Consume)); tableWeaponType.insert(std::pair(WeaponTypes::Consume.getID(), &WeaponTypes::Consume)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stasis_Field", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Stasis_Field)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Stasis_Field", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Stasis_Field)); tableWeaponType.insert(std::pair(WeaponTypes::Stasis_Field.getID(), &WeaponTypes::Stasis_Field)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Storm", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psionic_Storm)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Psionic_Storm", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Psionic_Storm)); tableWeaponType.insert(std::pair(WeaponTypes::Psionic_Storm.getID(), &WeaponTypes::Psionic_Storm)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Disruption_Web", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Disruption_Web)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Disruption_Web", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Disruption_Web)); tableWeaponType.insert(std::pair(WeaponTypes::Disruption_Web.getID(), &WeaponTypes::Disruption_Web)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Restoration", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Restoration)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Restoration", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Restoration)); tableWeaponType.insert(std::pair(WeaponTypes::Restoration.getID(), &WeaponTypes::Restoration)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Mind_Control", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Mind_Control)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Mind_Control", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Mind_Control)); tableWeaponType.insert(std::pair(WeaponTypes::Mind_Control.getID(), &WeaponTypes::Mind_Control)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Feedback", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Feedback)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Feedback", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Feedback)); tableWeaponType.insert(std::pair(WeaponTypes::Feedback.getID(), &WeaponTypes::Feedback)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Optical_Flare", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Optical_Flare)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Optical_Flare", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Optical_Flare)); tableWeaponType.insert(std::pair(WeaponTypes::Optical_Flare.getID(), &WeaponTypes::Optical_Flare)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Maelstrom", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Maelstrom)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Maelstrom", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Maelstrom)); tableWeaponType.insert(std::pair(WeaponTypes::Maelstrom.getID(), &WeaponTypes::Maelstrom)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::None)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "None", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::None)); tableWeaponType.insert(std::pair(WeaponTypes::None.getID(), &WeaponTypes::None)); -env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Unknown)); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Unknown", "Lbwapi4/WeaponType;"), env->CallStaticObjectMethod(cls, getId, (jlong)&WeaponTypes::Unknown)); tableWeaponType.insert(std::pair(WeaponTypes::Unknown.getID(), &WeaponTypes::Unknown)); println("Connecting to Broodwar..."); reconnect(); println("Connection successful, starting match..."); cls = env->GetObjectClass(obj); - jclass gamecls = env->FindClass("Lbwapi/Game;"); - jclass unitCls = env->FindClass("Lbwapi/Unit;"); - jclass playerCls = env->FindClass("Lbwapi/Player;"); - jclass posCls = env->FindClass("Lbwapi/Position;"); - jobject moduleObj = env->GetObjectField(obj, env->GetFieldID(cls, "module", "Lbwapi/AIModule;")); + jclass gamecls = env->FindClass("Lbwapi4/Game;"); + jclass unitCls = env->FindClass("Lbwapi4/Unit;"); + jclass playerCls = env->FindClass("Lbwapi4/Player;"); + jclass posCls = env->FindClass("Lbwapi4/Position;"); + jobject moduleObj = env->GetObjectField(obj, env->GetFieldID(cls, "module", "Lbwapi4/AIModule;")); jclass moduleCls = env->GetObjectClass(moduleObj); - env->SetObjectField(obj, env->GetFieldID(cls, "game", "Lbwapi/Game;"), env->CallStaticObjectMethod(gamecls, env->GetStaticMethodID(gamecls, "get", "(J)Lbwapi/Game;"), (long)&Broodwar)); + env->SetObjectField(obj, env->GetFieldID(cls, "game", "Lbwapi4/Game;"), env->CallStaticObjectMethod(gamecls, env->GetStaticMethodID(gamecls, "get", "(J)Lbwapi4/Game;"), (long)BroodwarPtr)); jmethodID updateMethodID = env->GetMethodID(env->GetObjectClass(obj), "update", "()V"); jmethodID matchStartCallback = env->GetMethodID(moduleCls, "onStart", "()V"); jmethodID matchEndCallback = env->GetMethodID(moduleCls, "onEnd", "(Z)V"); jmethodID matchFrameCallback = env->GetMethodID(moduleCls, "onFrame", "()V"); jmethodID sendTextCallback = env->GetMethodID(moduleCls, "onSendText", "(Ljava/lang/String;)V"); - jmethodID receiveTextCallback = env->GetMethodID(moduleCls, "onReceiveText", "(Lbwapi/Player;Ljava/lang/String;)V"); - jmethodID playerLeftCallback = env->GetMethodID(moduleCls, "onPlayerLeft", "(Lbwapi/Player;)V"); - jmethodID nukeDetectCallback = env->GetMethodID(moduleCls, "onNukeDetect", "(Lbwapi/Position;)V"); - jmethodID unitDiscoverCallback = env->GetMethodID(moduleCls, "onUnitDiscover", "(Lbwapi/Unit;)V"); - jmethodID unitEvadeCallback = env->GetMethodID(moduleCls, "onUnitEvade", "(Lbwapi/Unit;)V"); - jmethodID unitShowCallback = env->GetMethodID(moduleCls, "onUnitShow", "(Lbwapi/Unit;)V"); - jmethodID unitHideCallback = env->GetMethodID(moduleCls, "onUnitHide", "(Lbwapi/Unit;)V"); - jmethodID unitCreateCallback = env->GetMethodID(moduleCls, "onUnitCreate", "(Lbwapi/Unit;)V"); - jmethodID unitDestroyCallback = env->GetMethodID(moduleCls, "onUnitDestroy", "(Lbwapi/Unit;)V"); - jmethodID unitMorphCallback = env->GetMethodID(moduleCls, "onUnitMorph", "(Lbwapi/Unit;)V"); - jmethodID unitRenegadeCallback = env->GetMethodID(moduleCls, "onUnitRenegade", "(Lbwapi/Unit;)V"); + jmethodID receiveTextCallback = env->GetMethodID(moduleCls, "onReceiveText", "(Lbwapi4/Player;Ljava/lang/String;)V"); + jmethodID playerLeftCallback = env->GetMethodID(moduleCls, "onPlayerLeft", "(Lbwapi4/Player;)V"); + jmethodID nukeDetectCallback = env->GetMethodID(moduleCls, "onNukeDetect", "(Lbwapi4/Position;)V"); + jmethodID unitDiscoverCallback = env->GetMethodID(moduleCls, "onUnitDiscover", "(Lbwapi4/Unit;)V"); + jmethodID unitEvadeCallback = env->GetMethodID(moduleCls, "onUnitEvade", "(Lbwapi4/Unit;)V"); + jmethodID unitShowCallback = env->GetMethodID(moduleCls, "onUnitShow", "(Lbwapi4/Unit;)V"); + jmethodID unitHideCallback = env->GetMethodID(moduleCls, "onUnitHide", "(Lbwapi4/Unit;)V"); + jmethodID unitCreateCallback = env->GetMethodID(moduleCls, "onUnitCreate", "(Lbwapi4/Unit;)V"); + jmethodID unitDestroyCallback = env->GetMethodID(moduleCls, "onUnitDestroy", "(Lbwapi4/Unit;)V"); + jmethodID unitMorphCallback = env->GetMethodID(moduleCls, "onUnitMorph", "(Lbwapi4/Unit;)V"); + jmethodID unitRenegadeCallback = env->GetMethodID(moduleCls, "onUnitRenegade", "(Lbwapi4/Unit;)V"); jmethodID saveGameCallback = env->GetMethodID(moduleCls, "onSaveGame", "(Ljava/lang/String;)V"); - jmethodID unitCompleteCallback = env->GetMethodID(moduleCls, "onUnitComplete", "(Lbwapi/Unit;)V"); - jmethodID playerDroppedCallback = env->GetMethodID(moduleCls, "onPlayerDropped", "(Lbwapi/Player;)V"); + jmethodID unitCompleteCallback = env->GetMethodID(moduleCls, "onUnitComplete", "(Lbwapi4/Unit;)V"); + jmethodID playerDroppedCallback = env->GetMethodID(moduleCls, "onPlayerDropped", "(Lbwapi4/Player;)V"); while (true) { - println("Waiting...");while ( !Broodwar->isInGame() ) + println("Waiting..."); +while ( !Broodwar->isInGame() ) { BWAPI::BWAPIClient.update(); if (!BWAPI::BWAPIClient.isConnected()) @@ -6041,43 +7448,43 @@ println("Connecting to Broodwar..."); env->CallVoidMethod(moduleObj, sendTextCallback, env->NewStringUTF(it->getText().c_str())); break; case EventType::ReceiveText: - env->CallVoidMethod(moduleObj, receiveTextCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, "get", "(J)Lbwapi/Player;"), (jlong)it->getPlayer()), env->NewStringUTF(it->getText().c_str())); + env->CallVoidMethod(moduleObj, receiveTextCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, "get", "(J)Lbwapi4/Player;"), (jlong)it->getPlayer()), env->NewStringUTF(it->getText().c_str())); break; case EventType::PlayerLeft: - env->CallVoidMethod(moduleObj, playerLeftCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, "get", "(J)Lbwapi/Player;"), (jlong)it->getPlayer())); + env->CallVoidMethod(moduleObj, playerLeftCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, "get", "(J)Lbwapi4/Player;"), (jlong)it->getPlayer())); break; case EventType::NukeDetect: env->CallVoidMethod(moduleObj, nukeDetectCallback, env->NewObject(posCls, env->GetMethodID(posCls,"", "(II)V"), it->getPosition().x, it->getPosition().y)); break; case EventType::UnitDiscover: - env->CallVoidMethod(moduleObj, unitDiscoverCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + env->CallVoidMethod(moduleObj, unitDiscoverCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi4/Unit;"), (jlong)it->getUnit())); break; case EventType::UnitEvade: - env->CallVoidMethod(moduleObj, unitEvadeCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + env->CallVoidMethod(moduleObj, unitEvadeCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi4/Unit;"), (jlong)it->getUnit())); break; case EventType::UnitShow: - env->CallVoidMethod(moduleObj, unitShowCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + env->CallVoidMethod(moduleObj, unitShowCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi4/Unit;"), (jlong)it->getUnit())); break; case EventType::UnitHide: - env->CallVoidMethod(moduleObj, unitHideCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + env->CallVoidMethod(moduleObj, unitHideCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi4/Unit;"), (jlong)it->getUnit())); break; case EventType::UnitCreate: - env->CallVoidMethod(moduleObj, unitCreateCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + env->CallVoidMethod(moduleObj, unitCreateCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi4/Unit;"), (jlong)it->getUnit())); break; case EventType::UnitDestroy: - env->CallVoidMethod(moduleObj, unitDestroyCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + env->CallVoidMethod(moduleObj, unitDestroyCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi4/Unit;"), (jlong)it->getUnit())); break; case EventType::UnitMorph: - env->CallVoidMethod(moduleObj, unitMorphCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + env->CallVoidMethod(moduleObj, unitMorphCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi4/Unit;"), (jlong)it->getUnit())); break; case EventType::UnitRenegade: - env->CallVoidMethod(moduleObj, unitRenegadeCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + env->CallVoidMethod(moduleObj, unitRenegadeCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi4/Unit;"), (jlong)it->getUnit())); break; case EventType::SaveGame: env->CallVoidMethod(moduleObj, saveGameCallback, env->NewStringUTF(it->getText().c_str())); break; case EventType::UnitComplete: - env->CallVoidMethod(moduleObj, unitCompleteCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + env->CallVoidMethod(moduleObj, unitCompleteCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi4/Unit;"), (jlong)it->getUnit())); break; } @@ -6087,7 +7494,7 @@ println("Connecting to Broodwar..."); println("Reconnecting..."); reconnect(); } -println("Match ended."); } - } + } +println("Match ended."); } } diff --git a/compiled4/bwapi4/BulletType.class b/compiled4/bwapi4/BulletType.class index 2ce8d19775ff769d81d75f3ee00ac0911cea7d83..91351c9bc302f6b7b504ca779f61ae3dde73c859 100644 GIT binary patch delta 885 zcmZY7-%}D%6bJC{?jpM^D`cse8EB@$N|9zi5hOKB14SUk63?OMr-RV^ovqbUi# zsm&L*gmBKO+6z0cOZIlbDpe@rA9t#bo1u!>Tzt9yUKtr)q`E&Fu2(JB*`>M;O8>uc zy`hX|uj7V+DNGwkW5%GPjHy^Qu!6@biUua|L_%BXjkV>BB`0?(727Sm-Lge>#=t6` z)_Z+FYbu=?7(xK82+=5jFnfY+V^6ZD*mkyq?PO20UF;dQn?1|+2y66%=Qt2yqiiqR z$DU{V*$eCdJID^PF*eSc>@b@kYvRNgIdF+hvX|KrcGOcBZyFM=(%X`8jlT3p(71(S zH*t%eDVp^`p%LwFnx7ywA%CEWgmHTMy+kW5Oe3A)dXwrEO6q14iW&V3Y47iXke6A5 z56`IEb-IBQ$clCKcmB?rFY*N~`|!&+gqlx$NB05LVx$Qz{}Em?v5$a)m4s+P_F9P0 zl?F=G%5!M2(S?`jK^X&hMW@@qZOR59YrkNsn3QC3%_yYd4raLFe%eZW27?FCi%kR@ S@cnD~_>8MmdzWft-1`l~Vr!BB delta 740 zcmYMyTTjzq7{Kv=543AnH}Qy|ornn3>6C+_LuBKig7b(h(?kP`$r56?7#ObhA;y&- z!7FevbCMYDOuYBo7~|9BNo>;h_q?aRPoMTM-Av_w{r&y}7^CcyWX{83K5iC#?r}fK z0~TGDd>MHdcS8lU^33IVz!b{{-D@9LH>=~h;?~B-dTn`Ub3I^^TLCXvX>8lS>yD%ZLvmig z5s5rfYFa(2cB{wKcAECs+v=;snJvH7fIg|{iuZz zWxitWOV1!LZK^XH5raKPK4g>C%TNiFIeF>>^5B{hd8C|PkIk< zDq#z^q?6e;35#-ePd1vJGeTU6U&~MRh6JnhuqK6m%OLM0`}a)CtcO`l{2_9=D{E#b dXbJ=JjQC0(;8j}qO|1XPJF*DM(iTON*?-^^NKpU) diff --git a/compiled4/bwapi4/DamageType.class b/compiled4/bwapi4/DamageType.class index 4b1278114ffdd341c93b4fe8e2751e4e6f0a48a7..2003c260dc418db8c7acdf5fee59f22f62a584a7 100644 GIT binary patch delta 638 zcmZvaOHUI~6vuye`nWUG0R+JZXdfcbP6sL!R4hUlu8gcS8dhdZnr2WdF%yidZrz%? z@>Ad|6-kUc6Zb~Hi^h0vJH`z&x##si=bryLGr#l;r}^#Ar_Vs0EeB226%n|2EE;#o zrN*Tk%dBYX23s}Gn&z^L%cADW%f^qQ9Y47pKaDzV#bmj1Yd72vYmdTCyEcqAdPOxe zn%#&xQM{>0mv2_?_SV&MwXPWZS9-q_#?gLDF(vRZS3FcJ&9h8<%rWm#pzJZlDa}=n zb*^a|9wjyu;}4#Nd(mp`M)){vx9&XOYnkk#$8|P)Kh^iHmf^sWcZAV_HJ0cTi5^e% zM50e7dUBv$(-*~QskJyGM`($ik=P99M4lI~L`p2_NpUYQq%0wY94&HQxGi8)k-2=Cr7GJFGYn@gpv>i_ss9(viB;hM delta 501 zcmXYtOHUI~7>1uSQ|5H0!&N{nbc&Q-7zzl8Kp@7%9TCIAXxIUvizZwWf@`*HNnQCX zxP(;17pTQknjQ%|bULZ6WCj@Og2 zH)UVS{*(hLA9NTbYcLFJ*5RQ(?UwJ#(;`(y6~&5OF^JokxOjtesmM?`6?!_Q0vRdv zDH4dqbnrykWNi-b{g$lD`}&0j9SX7$ zR(4#kTp~+Z8Y|LOrMyW^?-MhovX7JfLu`4Xo^f^l*Iv>;l9Ri`-)a+F JniHZ!`5)GXIL-h7 diff --git a/compiled4/bwapi4/Error.class b/compiled4/bwapi4/Error.class index 47fcf2f5d4052f167ed2805ab1e5b48c2121d22a..b89fa53d6e8c77beedd604d6d4779466816a683f 100644 GIT binary patch delta 825 zcmZXS+fEZv6o$W<9;O|p-~kj7i->4D6e|jNC?J9;g%-h9lq*vrA!D$Zrs8Fvz^i(t zF99A>k;Hgs;=PG4;9ID1O-vzWKBnX<_3WL}xsNOiMNt$5{igZ4x+_o%d0N^g|P>*@V$ z#vnMo`EbpkE$5Zj7M?y{U8@vJs~eIDk9lRUIw6k4TynYo(@YJ_ito>c56Y#gwsIpUeOxdM8uI%<%lLJp^BChOFo>cZK zPbvG9rCt%Ft;Tz zq(vay6k@VcUQq3>*aM>3Zi9f^^A2O@ufMga%o8LhRpzB!pZZMK9@a{{K_stYYL{q$dnx};X7f&QX-im?yDbr+Kqp1Ixl2FG zqTlDTs8P(w4_u2YhUvG8q#}$l?q6j{fH|62C2R~oduA^5L|{i3ttoe+!3wcjY= BXEp!; delta 662 zcmYMyTTc@~6u|NS?v~x|b|~IOzy+)nSPS(6h!nY(3Q_?>Fg)s8Uz9W?#`wU8s88@E zipEqVF}#uZZsI%PQ$UPoo0G7~&TnSU%%0h^d)E5b6n_8v`3rc$tAG>*AD79vc^)vu zbcz{fJ>~+LnU4nx9>oBkg2&>)%)Xs=CoAtOJ5v^kf#t!?+PU3X%Q}%YSNrS?jpZ3P z3^8mNB=RU3Ua;h`Y$V@H3-j*d+wICozF4h(s2cJ-G^|jrojQMZT{#VelFHC3J)gAN zre0C6s@K%(>J9a#dP}{nwySs44z)9OR}yyV#9cL1yVV}GSG}iZ)cb0mnpOMNfu=!R z8!R5kOWNe*mV!xs9O+6)B=kr^k&GQNh#FW?_jl|A8Cg7*HrEpFz+hA0pK6dgV{?KEx&;Wrdp-EG#J8>Xg2TF(Yi;3!nNyU0@)SU47zhd-*Ld zsONusOYM|QC*yN|;D_@9(M&b_pgk=MQx$>!KdFxbFZ8!J1qMm}&k}W6EKeb4;}S00 zxPVz3XOK~-+E~G=Ld~Wo)~JBT&%LH!$X8x8w;IpMiPq4#bjxxuXBgBA$Q3VI8S4|r}R-KofOBr z6dxhYa=VDQqwgU)f8&!qrGhAysGDVa4KpZkUPxY@S9HwRJBW$hH;6hP5Zgms;xkmM zmivO?eW(qm3!}zrZVzSz4|BRE*{jK+2M1KCwiOttVF+s&p-Y^^I_-8BMN&;j;|E-Y oi$dzBK`sMVFw3P(&{FzK?8DmVBJmc{4pRR%U8dL)#YoKk0({G1bpQYW delta 609 zcmYMyOHUI~6u|NS+$rV!^(X>fveg1DR{)R zmBg?kam9vjLkMS@lQ_xT-#PcTXYRQ(zrvsS)qf9v{sJG^3&^wVTwoDf1=mwTHZfQpi{8Y1zJOIP+zH&>T7kXYmoJg#f&s#n3Y=&Lt0DOkB#R}t z#ZnNru;Q`bm~%-j-pN?#E^UxwQ?|E7AV>E;`(t|2Gtji7Hn|QxhHIRI4h%T}JZ`F}sK~=^@(XjLgDC{`} diff --git a/compiled4/bwapi4/Game.class b/compiled4/bwapi4/Game.class index f746ca9a5bc85bafaf70d996fa5db725f777629f..2778543180723b561b049d8350a10d8c6ebf2cf3 100644 GIT binary patch literal 27066 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 Pg%XYEiTj~*-3R^$#DSjG literal 26869 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 diff --git a/compiled4/bwapi4/GameType.class b/compiled4/bwapi4/GameType.class index 115094144d0327b9fdb685fed1386314514deeba..590290e44ff0766ab05705838a594de11a00a4e8 100644 GIT binary patch delta 684 zcmZvaT~8B16o#MKEuG!%QbYj}uz)DGOLfb)(pvD7#E3T-4OeDO8nQ+!F%8D6{)pcC zBdkiwM?$Q|W&)x~mt5on6aO3qA{970OQ@syNGp6SdH-d2aqXHx$>pY|9^?yTfk%>4%Sm{=SD delta 582 zcmYL`OHUJF6o#K~rp$DvBeh-;bwE%qLunCcxhfbJBu3mwG%VXVizb4^V2rE&h`Ms^ z51<-TE(vjG;@+J<#TegdzQjr9d(JuUIp=#Pa~^hswV!`a&w&LVg%qd+cvQ1vF62J* z1qq8jwNRCMmMr-!hXho7R=S(d&7`;9+HV~`G~}k9OurBwzj>7!iceen>9cox&GhX~ zqxm}R{5Dln>(rgOl`&=_M!6Gli`zb{5o@gbJcyV;dy38Xjf2)=b*r(L?tC~%BgPny z*kH5s+4wEw5Q#w;Zy(VL5DhGh>@DvyCCv zd5zX30^J{i-%jFlpxwRn6vVaq#gI z1Lo)pZhTDcgaL=|ckf+8Fb@^VB twyer3Q&Iz*{2vmZX|*KGSPSD?kv)Yog54hBSKR;JOP;#u_m)M6*?;N?LEZoW diff --git a/compiled4/bwapi4/Mirror.class b/compiled4/bwapi4/Mirror.class index 6cbb1f720c36da60795e763ee12342f417027234..76430cf3ce322d237eabf689ef334dcca67bfb68 100644 GIT binary patch delta 20 ccmZ1>xkPfqD<*a}r*OvrPm|4GnKp9*08F_DH2?qr delta 24 gcmZ1?xk7ToD<*C(r*OvrPZPbAoSe-cnKp9*0BV~EqW}N^ diff --git a/compiled4/bwapi4/Player.class b/compiled4/bwapi4/Player.class index 12c4102aec26c8a5353c7294e27129879c98e0f4..582beec2c8623c4077fdbdefc5448bb428242679 100644 GIT binary patch literal 7607 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 Z!=6dncr%?DZp~8N_5#q~;I;~S@_#R07>)n{ diff --git a/compiled4/bwapi4/PlayerType.class b/compiled4/bwapi4/PlayerType.class index b7f6982a8b8538a532485d8ca3fd19842aae4709..e90d431d2c2b1fa583f3684ac856cdb817dacddd 100644 GIT binary patch literal 1466 zcma)6X-^YT6g{tnPG=aFswi$nTuVjkf@>=-2%;7w;u8I0ru9(<%S?d+*HmpP#<~IE`r?I?fqf&a35uS}q#sK~XtM z1})G#5?G2=Q?U~9SZ+-lgPh1t5bBE5Sn4OtXOkGo5a zFp!==s_78uzAOD|C}%C-x0iWy+k_n~NN?7Y^U`bKGwsJy;gaPDXfrYlJgZK&@w)5F zrvgTkwk+oZ0dxI&bF1BVo;mJwUes;J4=krDeSzNcqP1)l!oaQRt>M~Eq*L6Y?7*E1Jlm;JU2eFIqIpVu$GH2H(R$0a zBWJ>;3M*z+>OASP{jyuBtf&GCBy+=$snPatSWB{blq%Vd9gLA8cWd|oAvHNo}~&rD{FSj+rw# zW6lk|s+_cywBFWe99O|i3}T;&<0zOofs-aqsU?R|6T7iT!=#BDn9^|5L>{ba=C27; z=wTDLQKq-m)hWwgpkjf(mZm$EMOkH`dRj-SpX}VSRS)Hzd5-Y!RfyWn0=9S~&cnI3 zN;O%F?Zu0a*ccAJ!1+z!|3!cyzHdEzOS@@%(Z?qpnb>ZL?bg_Ci*0{wx5suzYzJby zGq$@TYp6OyU@y57$nwvIL~#V8@2BSgcSA_>iP7`<_YkW{yyiyWAlFpn=;nF|hq-PB zPrmvCo+0qaKj9sJ!uy#PyBxFUnM{&|Mt&8Y`N0nmZ#L+ABF{;5aFBF<+zgJ*(fD4# zQ+4l5R)6slo#ORdq_Q8OeL^~cuh6GQzG2rI^heoM7}K$Hf?&39xu;)J9L9*r|QKx*~tT7&s$ U72WTUYDsDqxIpL`LJ~Op3(SHpAOHXW delta 513 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 b`H$#I9^e+Lc)zgDo44ghupr|@(d5w?3VTME diff --git a/compiled4/bwapi4/UnitCommand.class b/compiled4/bwapi4/UnitCommand.class index 2cc5489af013d9c2f6b093f185f81d3364c8336b..d8888f133c0ff11b332b74cac44ebed775359b0a 100644 GIT binary patch literal 4160 zcmb7H|92c!75~ice93M$-Mlb!AC zZog1K5Q+#W3WB!s9Vb|100TcJXO)-FXFeqMUHy!dv7+An5}wF^SNK%efQpX z-+gzsAN}*)4*=YXOKEJt=@dF~hT$QGvkVV2Ji_p33SYuw439H>nc)cwPo|NRG+Z0Eh^>&ZS+Rp@hrDQ~>2Hw!&S)^4 z)0M!cMY~e5^ABp+-WB)I7YQSN*{!&K@jxI#cSm}bR2T};_djhOud~~jth(NmhQZ~% zjJci@rBTa^iA3xpZ!x)eo@2LAyIv&TI zeBo+YS=G{XU{BF~-Bu?hxqdYtO=YJtYJ1+95#KG+t?D!WNpe^xqgvtW)M?xDdDOPm zyEC(7R|4PDkSX}yRAjE_2%M7blG>cC1_9^OP%TERk@tL?o{=@>D9$Lm&NN+& zRV^w`_uONAVII9&4Yx0!*`jW*Q$C$ykq5I{luSx8{T|&%I&h~8l>yJ?N8MVmJ$k0a zawVwd`59|ik++L^$6KsyluGqnlr$#0f5}}9*2zh28kSF`Svnl8J(wn`I2852RV_RG zS~T2Krw-9mif%dTv8zv_hLUIJoq+=*RGu9!4T+s~D;*nQ;=M(ISl>4|IM{ud?rOm2 z*V;1V7M=aonMo%YvnM^iRhp=5NNZh-Dniq6g<6Y^VGY+UHjAy%juh<}Q&XBf=RBW0 zC%d|7S~ul*Ko8p`6}hcu8&yO@`-1aGNnSf@mhq<2uxi0NzCb$~-15PyQ+24hDEK(l z&^b}Hy)yag8ai&Dw0o&{r+W`f9(VGUzV31QV9}<6T`tHvrE`8Y$UA#!VpH?Q3cQ6k zXK)l3GPnUZX7Fij%-|;Gy3n0LmZ1mT7QUOoE4=n9!)pw$VUFcKVbMF!#fOf3_oJ{F~d(d?uyulSKV0#0m>Ovah%S$ zv?!u*)Hv7t=RR&S>ZtvGk%+NJe)IGpF$_{8+_n>yUO=6fW`rqiX; z98pua>28|B6H##}N={DBy=ror`_xFwjEa#q5zVwwHPiGVF;dcp#7LPCqojR7h`C-l z$^&LXOqiIuHLm6)v7UZGZJ?i8CK7z-#3lIJ1*Mx8lrCRTx_?2b1&Hp_QrLvefS_9h z?ZwT4-h$5vdaI&a72Sr<3jJ-kUC_^|{oBze?pN|2 z3<&)m+$rc?O1?|UdzJlOWxr3Y?^Ek{tMx%eKd}L^ozHL(BHeBaz)Sk7Rc9JoIdbJ`W??Va&tKc9`?9eoB@a@`M}EK==@J zoJ9%`({JiW(2hs3ntl>@;xX!($H{UEj*4?VQH^#O*`FhEspiHM$|nhrVVaOrikl{v znm$cNg=M|!OHH36Qy0gT*X?vrPN0nvNd62BvuGgBnoG=)G9k{?j3n_dAdMH%f|u|h zNl9oew9mtg@>7H%{M;%1q(ZEcTslOPS|0{O;duSH1Wt0|*D&^L7p3KF&jFzRb-=f$dwcW*9Y(94h zCsgc@RsBM8LG^15@x0{PLY$M_iV$Zd*B;`8rc&$z2zsM{;XIte4!UYW2RpR`0d5Xr)!_JS_bp^yFM}>7BlVm+>xrSKb$gOF{n! z{ikg=wS&f=1$Dwt=!Dz=Z)SUDVd!%`AENUDjO1L;FVQ*70XEU!>#QNcAi;Gi#i6bjO;7 zv#b?!=ub37KBgZPf2N7~7YyUCxEFt;Y4vxJ`(~JJyS0DOITMsVO%&qk^$I?rX@?h! LbefaAj8p#xS1Hyv delta 944 zcmZ9KO-~b16o%j1)=sA#CK}Pwu(%-1pAhb3Zq|uY2<4*N2Y)4&jj-A@u6l zgHyz5qK`O3oF&fbIFAg`Ph21_Y8Y_Cz@UapZd7BClS9O1Vwe~qvcxEHg%~5o^_cJ~ zhZDp#Vv?95avJjds%c_I!|dA2i004aS8_{*weNAgt57VIQwmA5#$Ipg&XOM3-%@#P zK6QRmd2>LE*`v5_u4+xuIRiHkHc%jL67vWvc&)fZ+dyf#P%e~;2BKInziN$ri*$-a ziC7|T5x0qDqDov`fOu#|Tme@K-3Cse!_2sLIepfaZ;GxC<#9vFhB0BQ zne`;&ZPJVoT*5jyP!AnGIn@TK{0N{?x)4A!c8Y%xack8lPs2P{Ii&)23)`iglDAoL zcE^FYu)mUl!j`&MszfDZo9fuEHj8=~9ZWUTMkvgXYS@JlxaIr3vRhIrJCs+XBRFcQ z&y3-HTWULk5|R*+sspy5Ppo6;+;m&aSXJ~Nzf=5_1gHP{%hT8!|?;_?zH^6l8A0=LB9I+C>ONCBOHT@v;pA?Q_~ zLc0u^GfnTD>2Bxo^v>dv%BU05*Ysc>%&I?y?9_i$8}Sh zX%iOG&hUnb8O-`{6B!+IPVSa7xUJ)k2@`1@ch?i&)NyaQG+kaP6c-gVN21Ax+0|@( zDO+5OZ$}dfT%)Chyn;ZoP|QzOmUH=)bT+pn5zk2`w@~U(*JPmJqO_hyqDdyom9pHHa!qokU593O zyo0j-x8C2#l;FZ6IrU?CddI35=ftvvor!%R#>5{dak8cxZrVig5xc(ht`_Ri$dR0nPT>A~3`EWM? delta 796 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 delta 2165 zcmYM$2Y6Fe7{>AUBx%y50TfpSOhrT>)>Z{Xwu%!eILfG#R-#6s)LKLoydt=8TU@ws z<1W+^+Da)nP~4;LffK=j;sg=>Zus{x&y({z=RNm~jFX$S)$;}nUbC&KMN(gv6H}fx zMHSYse(_sOzw3`Y{i(kq+8ncFi{JP=qOCDSwJD;1>KD0q=U(9<>B@A?FsD%Ok$uJ) zBc@JDIdvM9u1t-dHl-p}U0Pl-IaNC=zbK&1wG#@82kBdFjO%NC6W3aO5z)4|{&k8t z7uN%d67;ipSc-r8BBhaT~BM?t(5iv0Qbc1xEJ=oy|E|mgT1gf_Q53XYkK}GE+p6w zi?A5?#{=*{?2G-dKOTew@L(K>gK)4q*!s4CAp}El7!Jon@K8JqN8sUj1RjY;;n8>u zj>Kc-ZU4+i5tQI)9D~Q<@puBBh^06d$KiOKfMs|Rp6pRM1y9A(@N}GrqEd#wl2dQ?Uxq!)iPqYj7G~fYb3poPif@*VDxWGjSGPg6;3nrLGyf;!Sun*5Z7;1#iXM@OHcd7x?<;|4xFt z@NT>Z@5P09AKs4-;Dh)OK8%mxB777dGqdOaae^oCNqh>Q#yVV#ORyfF!3JE48C-^q z*wlXhn+cx9<=BENuoYM0Dtr!~#~1KLT#YZ`%ebcf{J%o*D!zuV;~V%UzJ+h&JNPcP z;d}T#et;k1NA2J4j|o1(Pw_MSJZsFq#mVVQ`_&BSD|^~~&+0*|*t6QRAVwpmX$_c1d z;gZ7D>e8%mSt6rI37v(F$_;9KVV%t$$gYu4#MWq1*flHHEmyv4Q8%|jJzcB)HCUw| x?8>MDxm%Tt4Aqay)lb^U7JAqm{v)qh(XxzU^$PyK`LJCiS8wIdc1b|L{09ge<9z@C diff --git a/compiled4/bwapi4/UpgradeType.class b/compiled4/bwapi4/UpgradeType.class index d50b2e4cca17bd315963d0ee61007df7ca54f41b..483413889d1afea53cf62654b5f7b3ade128502d 100644 GIT binary patch literal 3894 zcma)9`EwM<6@DuLE3HOaom@6@0D~n3TedMa7>vD$OR^RetptWRnY4DB-GSMe^&Ao+ z@twqHZitVZwv+f5|3KnH1}fNHDV56Cy>DkngSINA()*@gfBpLPJG!NR|M%u? zBHBwIchV63Bm?nNC0750u?1&&#PVZYid#FA{*30A5u2Vj^)?INJHqtfMLS3P3 zQ&Xt1z%2v_DsGFxk}JWE|M?IWX;urxBMpg%r$oLi`)EPN*SG(H=1T_In0Ru#7TVxtBlQx%tIWlaiI z-NsTy1RP`x2b#{!J66DVX15~wv+}vn@?=RJelj{kjJDyBg*Atj?^B~^a1fk1MVl~a z9GEw1m@TMV3(3+k!VQlsHX>{ybGq7x)N-9#ovkR+Jsi-8*c;o213M58UPM&hA+qa7 zrgVh2#7XrSMbvB~x{+q6p-C|NV}Xvyn`6oZzpt5uh&~X{MWh{!ohugX!Bshl*a+8} zx#>7mv^hJdFC-^Za6_*skK>&{)5a3>fC{!j^K{0b8a-!_N4`M;g-R?Mw4}Z+*9C^l z>g!5fVE9Az^&=&orxy%*u`XUR=pwyh(06DyO@B7%1Ntyc9~orRUr^$AzSD|+$)LZ| z-%!HMzCJ1Z3d#lkHVfkP!bMqBcX?B#IvO3fDC|(4zMzVFRSD^a$A#Fmt8MNciIrL1 z>cM#Bu?l5f3$fq+HR%7B0osngW47Wir^l$1?xMT#)k)hJhZ*l-{1)SO#vP118SiD> z#kiaCKE@HoQN}UGZ!_*;yr1y_#&O0686RSNm~k)TBaHhPA7y-uaX;e$#>W{CG9F@l zg7GlplZ;O><`|DKPB0#2JjQsO@dV>Z#!1F0#-|yl8S{*%7*8|KXw0a>r4$vAt2Ua$ zFS-NY+o3y4&p@8jqjr2Dn`2|2QEG+Su49m*^N<_#L^tGj=~>9N==#Vv3owJ)Ze2z>(Mixqq4rhm9;_{+}~AR z7eK4l?HlgA`aZ2sUH=F54}VDmH)ybpzNVr4o^NRDEgCvEyh0oEJh|rvZEB~pdz4FU zx>1HHjqjUim|N6A|HMCex6y%L(Jt87OaCGVvz^q|@gEvXlbdQ&FBF=rO+8W?@lG)= zYQ$@$5f2t)U5{r=kMVLb*7bP5^cYW=M!aGg@sKgT1Q$B!WqO5AzEk%ZQP(Znd~Sud Vd`kVzkkuRiQ&3;UvNrnh{{RXcXd?gs delta 891 zcmYMzZBNrs6bJBs+tIsr1$3e!YC#c!Iz<_X%EX8HfXGl}fCHa4SI829hg!mFd$VpsF$9F2HHq>(cLso_s}M~m+qtcX)`@QTj;^i zKo&g2z+vjrR@z37(4(}S9-|%fIPIiew3~YLgcyWhoM7N2JwK>!873}EI85w!t@j^Lr)_+K;eJJA8+AHY!sf4R{+6Wk=ssS--;?wY`ez6Ii~gOU`+4j?{O~}6{+p!D zbYDUvjXFk^UoPv@<`K)#Xyy3qf-0Fiw$B)<tOT`+Au z?R!p6*|uZDwIS}()0VRJOm5CNsSu*xF~hQsn6802%4O3s^eL5_$L<>XV=s55-JE55 z28S4*)99RfhrTCY^lc8tJoeK$;+J`YL%xU8(5QRVD4Mnzei(~gAM@y0r>O5&CzV~E zKcP`-(09w8KCa4!3-;RD#~8IIoy}B;`k>;^;q}#veEOK-I=t#QSs#P4Tr5^2%#?00 zQ_NSLY0*G5Q|E}KiiVz@bDag=|C+jIebh%N9H^k6(W)?xnK>snABA^QBX@m}mybJk zVb-y{FsvFa8?w{_;#Fi~KE9aBI>*f%rgdBXI=aci`q z`k?Rk=Y8v>(kMAeazk53q4o6*$I`CHMUsVQdyrv}GNFQa#zyXN#)f0jjH}~&4{OE7#sm5=R#J4l zIS6ISw-Ctig`N!3R5n}VOUHe!nH-AwEDr8~;d?GZgG6&#cw@?P^l1dw@UW?_A!yPm zn@|*s4GB^wmQa=*Gs-Ph&%5SHl73~a>#*S}&$ke=y>{Lx8FpUTQnIR*Xx*ZsJYqSH zt7lzR!qwBb^v)>D5=LKr<)|6i)cD=n>63?4QF#vP4HVRMz=yCE62@~)F4Aq|2v6Qw zz*y&=iK$vGw(mtAS)aDfK zy}XXeaLNdI+XxEQY;b*bPL`0eNDevr_6cQJWzaC`(gO|`zQjR$-VQd}ZrWw&KgZRm zd;F+6rndW@X>FfSC3F|<8M9#HOj$uY>PL4~9&w=-wsYOx*`PhS5>q5fj>*Lm4b46* z({ni5HrM$rTWhAMc)?#f1;)mD=^r9>>Q4)cca2LV@?nX%i=dP#lH;#Wm_8 zKoDe)JWn9Ts7p{30wlgk7oDP+!w1CyT@CuCl@E?Kd=t)TXV!rlt8WH(jfoUnUY%;v zNvp^H?=BPi1meUc|1Av*ZZlQZq^n7|jLeo-Oi?$@8EltsBZ5b-b zqF=7ezBQ$_YWShsQ@wS@P|A?PC=S&mot!;t)<*< zJ*&c4cwo%-B;`F^BzPBlTMVvkX z`i)KLE93O5L4RLU`l>knAn5OJO7D%+4}t!Hru5Zu`n8~+YD({m(-r79HKnhK(+$vX zZc1Mpr<Z6U|4{!K+BhMD+is^#OK4^rCrL|C z%lavSPh3Tv0MRrCh`upEw2lFydnBSZ`ZnDw5j+ne;D0*K(&j^F=-gXqT{ZMUjn_E6zXM7O GefNK>foa45 delta 1285 zcmX}s*-sNu6bA5bTIjUXp%qs|DJmjRtH|aC;({wu+z_mLE2C7Qtyo0dMp0aGEiU1& z00}`PG5TcUI}b)lG%oSgcVj$*Uu@F*JNMk)xu=;qGg0;{r}F)uSFZt-;kgDkdR%be zhBe&Oa0|EHxP!YYdNs-1vnKadJka1mkBWzbL*vc@M^!WyO;#&NE37SQ6l&tlh5~P0 zG-lLyv_*{ehH#|SNWFEJD7~p+PibWrx^;BooQ^X{s(7U1F;Xh}bX>v{1(}h~a3We> z++>6k@mNDw!qCx$^E#g5S*qVVZaSn+phb$%ks*-_9_po2XeOOXr_t$j2AxS~(JVTf zX45&ArW`nzi5%*qxpW?#PZ!WUx{&76MYMnx(jw}oi$&A=#{njm(51APE~6#1l$OzQ zT0xi76?7$CMOV{GWXSnaKot{fXf<6+*U|NK1FfMO=_b0FZlPQ0Hd;%!!~A#8>zD}A zdb)$|q`T;Dx`#HwJL|Uy+4x(sbXEk015&uKHiY$GQ@tSDE^}lKZfoT8$ diff --git a/concat_header4.h b/concat_header4.h index 32387fc..2ccfc4e 100644 --- a/concat_header4.h +++ b/concat_header4.h @@ -185,6 +185,14 @@ extern "C" { #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_BulletType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_BulletType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -283,6 +291,14 @@ extern "C" { #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_DamageType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_DamageType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -305,6 +321,14 @@ extern "C" { #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_Error + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Error_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -367,6 +391,14 @@ JNIEXPORT jboolean JNICALL Java_bwapi4_Event_isWinner_1native #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_ExplosionType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_ExplosionType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -2040,6 +2072,14 @@ JNIEXPORT void JNICALL Java_bwapi4_Game_setCommandOptimizationLevel_1native JNIEXPORT jint JNICALL Java_bwapi4_Game_countdownTimer_1native (JNIEnv *, jobject, jlong); +/* + * Class: bwapi4_Game + * Method: getAllRegions_native + * Signature: (J)Ljava/util/List; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getAllRegions_1native + (JNIEnv *, jobject, jlong); + /* * Class: bwapi4_Game * Method: getRegionAt_native @@ -2163,6 +2203,14 @@ JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2 #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_GameType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_GameType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -2312,6 +2360,14 @@ JNIEXPORT jint JNICALL Java_bwapi4_Player_getID_1native JNIEXPORT jstring JNICALL Java_bwapi4_Player_getName_1native (JNIEnv *, jobject, jlong); +/* + * Class: bwapi4_Player + * Method: getUnits_native + * Signature: (J)Ljava/util/List; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getUnits_1native + (JNIEnv *, jobject, jlong); + /* * Class: bwapi4_Player * Method: getRace_native @@ -2830,6 +2886,30 @@ JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__JZZ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_PlayerType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_PlayerType_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PlayerType + * Method: isLobbyType_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_PlayerType_isLobbyType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PlayerType + * Method: isGameType_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_PlayerType_isGameType_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -2957,6 +3037,54 @@ extern "C" { #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_Race + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Race_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Race + * Method: getWorker_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getWorker_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Race + * Method: getCenter_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getCenter_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Race + * Method: getRefinery_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getRefinery_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Race + * Method: getTransport_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getTransport_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Race + * Method: getSupplyProvider_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getSupplyProvider_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -3016,6 +3144,14 @@ JNIEXPORT jint JNICALL Java_bwapi4_Region_getDefensePriority_1native JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isAccessible_1native (JNIEnv *, jobject, jlong); +/* + * Class: bwapi4_Region + * Method: getNeighbors_native + * Signature: (J)Ljava/util/List; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getNeighbors_1native + (JNIEnv *, jobject, jlong); + /* * Class: bwapi4_Region * Method: getBoundsLeft_native @@ -3102,6 +3238,94 @@ JNIEXPORT jobject JNICALL Java_bwapi4_Regionset_getCenter_1native #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_TechType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_TechType_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: getRace_native + * Signature: (J)Lbwapi4/Race; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_getRace_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: mineralPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_TechType_mineralPrice_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: gasPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_TechType_gasPrice_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: researchTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_TechType_researchTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: energyCost_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_TechType_energyCost_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: whatResearches_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_whatResearches_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: getWeapon_native + * Signature: (J)Lbwapi4/WeaponType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_getWeapon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: targetsUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_TechType_targetsUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: targetsPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_TechType_targetsPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: getOrder_native + * Signature: (J)Lbwapi4/Order; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_getOrder_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -6810,6 +7034,430 @@ JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePo #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_UnitCommand + * Method: attack + * Signature: (Lbwapi4/Unit;Lbwapi4/PositionOrUnit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_attack__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: attack + * Signature: (Lbwapi4/Unit;Lbwapi4/PositionOrUnit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_attack__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: build + * Signature: (Lbwapi4/Unit;Lbwapi4/TilePosition;Lbwapi4/UnitType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_build + (JNIEnv *, jclass, jobject, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: buildAddon + * Signature: (Lbwapi4/Unit;Lbwapi4/UnitType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_buildAddon + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: train + * Signature: (Lbwapi4/Unit;Lbwapi4/UnitType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_train + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: morph + * Signature: (Lbwapi4/Unit;Lbwapi4/UnitType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_morph + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: research + * Signature: (Lbwapi4/Unit;Lbwapi4/TechType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_research + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: upgrade + * Signature: (Lbwapi4/Unit;Lbwapi4/UpgradeType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_upgrade + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: setRallyPoint + * Signature: (Lbwapi4/Unit;Lbwapi4/PositionOrUnit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_setRallyPoint + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: move + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_move__Lbwapi4_Unit_2Lbwapi4_Position_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: move + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_move__Lbwapi4_Unit_2Lbwapi4_Position_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: patrol + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_patrol__Lbwapi4_Unit_2Lbwapi4_Position_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: patrol + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_patrol__Lbwapi4_Unit_2Lbwapi4_Position_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: holdPosition + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_holdPosition__Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: holdPosition + * Signature: (Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_holdPosition__Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: stop + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_stop__Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: stop + * Signature: (Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_stop__Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: follow + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_follow__Lbwapi4_Unit_2Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: follow + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_follow__Lbwapi4_Unit_2Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: gather + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_gather__Lbwapi4_Unit_2Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: gather + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_gather__Lbwapi4_Unit_2Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: returnCargo + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_returnCargo__Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: returnCargo + * Signature: (Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_returnCargo__Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: repair + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_repair__Lbwapi4_Unit_2Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: repair + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_repair__Lbwapi4_Unit_2Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: burrow + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_burrow + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: unburrow + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unburrow + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cloak + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cloak + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: decloak + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_decloak + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: siege + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_siege + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: unsiege + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unsiege + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: lift + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_lift + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: land + * Signature: (Lbwapi4/Unit;Lbwapi4/TilePosition;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_land + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: load + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_load__Lbwapi4_Unit_2Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: load + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_load__Lbwapi4_Unit_2Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: unload + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unload + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: unloadAll + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: unloadAll + * Signature: (Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: unloadAll + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2Lbwapi4_Position_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: unloadAll + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2Lbwapi4_Position_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: rightClick + * Signature: (Lbwapi4/Unit;Lbwapi4/PositionOrUnit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_rightClick__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: rightClick + * Signature: (Lbwapi4/Unit;Lbwapi4/PositionOrUnit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_rightClick__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: haltConstruction + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_haltConstruction + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelConstruction + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelConstruction + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelAddon + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelAddon + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelTrain + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelTrain__Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelTrain + * Signature: (Lbwapi4/Unit;I)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelTrain__Lbwapi4_Unit_2I + (JNIEnv *, jclass, jobject, jint); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelMorph + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelMorph + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelResearch + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelResearch + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelUpgrade + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelUpgrade + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: useTech + * Signature: (Lbwapi4/Unit;Lbwapi4/TechType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_useTech__Lbwapi4_Unit_2Lbwapi4_TechType_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: useTech + * Signature: (Lbwapi4/Unit;Lbwapi4/TechType;Lbwapi4/PositionOrUnit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_useTech__Lbwapi4_Unit_2Lbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jclass, jobject, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: placeCOP + * Signature: (Lbwapi4/Unit;Lbwapi4/TilePosition;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_placeCOP + (JNIEnv *, jclass, jobject, jobject); + #ifdef __cplusplus } #endif @@ -6821,6 +7469,14 @@ extern "C" { #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_UnitCommandType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_UnitCommandType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -7286,6 +7942,14 @@ JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechTyp #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_UnitSizeType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_UnitSizeType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -7297,6 +7961,590 @@ extern "C" { #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_UnitType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_UnitType_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: getRace_native + * Signature: (J)Lbwapi4/Race; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_getRace_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: requiredTech_native + * Signature: (J)Lbwapi4/TechType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_requiredTech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: cloakingTech_native + * Signature: (J)Lbwapi4/TechType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_cloakingTech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: armorUpgrade_native + * Signature: (J)Lbwapi4/UpgradeType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_armorUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: maxHitPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxHitPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: maxShields_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxShields_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: maxEnergy_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxEnergy_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: armor_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_armor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: mineralPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_mineralPrice_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: gasPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_gasPrice_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: buildTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_buildTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: supplyRequired_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_supplyRequired_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: supplyProvided_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_supplyProvided_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: spaceRequired_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_spaceRequired_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: spaceProvided_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_spaceProvided_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: buildScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_buildScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: destroyScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_destroyScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: size_native + * Signature: (J)Lbwapi4/UnitSizeType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_size_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: tileWidth_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_tileWidth_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: tileHeight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_tileHeight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: tileSize_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_tileSize_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: dimensionLeft_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionLeft_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: dimensionUp_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionUp_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: dimensionRight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionRight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: dimensionDown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionDown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: width_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_width_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: height_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_height_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: seekRange_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_seekRange_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: sightRange_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_sightRange_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: groundWeapon_native + * Signature: (J)Lbwapi4/WeaponType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_groundWeapon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: maxGroundHits_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxGroundHits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: airWeapon_native + * Signature: (J)Lbwapi4/WeaponType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_airWeapon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: maxAirHits_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxAirHits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: topSpeed_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_UnitType_topSpeed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: acceleration_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_acceleration_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: haltDistance_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_haltDistance_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: turnRadius_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_turnRadius_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: canProduce_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canProduce_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: canAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canAttack_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: canMove_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canMove_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isFlyer_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isFlyer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: regeneratesHP_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_regeneratesHP_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isSpellcaster_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isSpellcaster_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: hasPermanentCloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_hasPermanentCloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isInvincible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isInvincible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isOrganic_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isOrganic_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isMechanical_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isMechanical_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isRobotic_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isRobotic_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isDetector_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isDetector_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isResourceContainer_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isResourceContainer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isResourceDepot_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isResourceDepot_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isRefinery_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isRefinery_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isWorker_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isWorker_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: requiresPsi_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_requiresPsi_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: requiresCreep_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_requiresCreep_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isTwoUnitsInOneEgg_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isTwoUnitsInOneEgg_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isBurrowable_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isBurrowable_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isCloakable_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isCloakable_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isBuilding_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isBuilding_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isFlyingBuilding_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isFlyingBuilding_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isNeutral_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isNeutral_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isHero_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isHero_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isPowerup_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isPowerup_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isBeacon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isBeacon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isFlagBeacon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isFlagBeacon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isSpecialBuilding_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isSpecialBuilding_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isSpell_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isSpell_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: producesLarva_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_producesLarva_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isMineralField_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isMineralField_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isCritter_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isCritter_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: canBuildAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canBuildAddon_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif @@ -7308,6 +8556,126 @@ extern "C" { #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_UpgradeType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_UpgradeType_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: getRace_native + * Signature: (J)Lbwapi4/Race; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_getRace_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: mineralPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_mineralPrice_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: mineralPrice_native + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_mineralPrice_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_UpgradeType + * Method: mineralPriceFactor_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_mineralPriceFactor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: gasPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_gasPrice_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: gasPrice_native + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_gasPrice_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_UpgradeType + * Method: gasPriceFactor_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_gasPriceFactor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: upgradeTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_upgradeTime_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: upgradeTime_native + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_upgradeTime_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_UpgradeType + * Method: upgradeTimeFactor_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_upgradeTimeFactor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: maxRepeats_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_maxRepeats_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: whatUpgrades_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_whatUpgrades_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: whatsRequired_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_whatsRequired_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: whatsRequired_native + * Signature: (JI)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_whatsRequired_1native__JI + (JNIEnv *, jobject, jlong, jint); + #ifdef __cplusplus } #endif @@ -7443,6 +8811,198 @@ JNIEXPORT jdouble JNICALL Java_bwapi4_WalkPosition_getLength #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_WeaponType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_WeaponType_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: getTech_native + * Signature: (J)Lbwapi4/TechType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_getTech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: whatUses_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_whatUses_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: damageAmount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageAmount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: damageBonus_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageBonus_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: damageCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: damageFactor_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageFactor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: upgradeType_native + * Signature: (J)Lbwapi4/UpgradeType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_upgradeType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: damageType_native + * Signature: (J)Lbwapi4/DamageType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_damageType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: explosionType_native + * Signature: (J)Lbwapi4/ExplosionType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_explosionType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: minRange_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_minRange_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: maxRange_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_maxRange_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: innerSplashRadius_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_innerSplashRadius_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: medianSplashRadius_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_medianSplashRadius_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: outerSplashRadius_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_outerSplashRadius_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsAir_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsAir_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsGround_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsGround_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsMechanical_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsMechanical_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsOrganic_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsOrganic_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsNonBuilding_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsNonBuilding_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsNonRobotic_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsNonRobotic_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsTerrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsTerrain_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsOrgOrMech_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsOrgOrMech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsOwn_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsOwn_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_BulletType.h b/headers4/bwapi4_BulletType.h index 91de9e2..23c31fb 100644 --- a/headers4/bwapi4_BulletType.h +++ b/headers4/bwapi4_BulletType.h @@ -7,6 +7,14 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_BulletType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_BulletType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_DamageType.h b/headers4/bwapi4_DamageType.h index cf0d066..4f5df27 100644 --- a/headers4/bwapi4_DamageType.h +++ b/headers4/bwapi4_DamageType.h @@ -7,6 +7,14 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_DamageType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_DamageType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_Error.h b/headers4/bwapi4_Error.h index d715edf..21c2a35 100644 --- a/headers4/bwapi4_Error.h +++ b/headers4/bwapi4_Error.h @@ -7,6 +7,14 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_Error + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Error_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_ExplosionType.h b/headers4/bwapi4_ExplosionType.h index 9517002..65398b0 100644 --- a/headers4/bwapi4_ExplosionType.h +++ b/headers4/bwapi4_ExplosionType.h @@ -7,6 +7,14 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_ExplosionType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_ExplosionType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_Game.h b/headers4/bwapi4_Game.h index b7cdf38..07d283b 100644 --- a/headers4/bwapi4_Game.h +++ b/headers4/bwapi4_Game.h @@ -1615,6 +1615,14 @@ JNIEXPORT void JNICALL Java_bwapi4_Game_setCommandOptimizationLevel_1native JNIEXPORT jint JNICALL Java_bwapi4_Game_countdownTimer_1native (JNIEnv *, jobject, jlong); +/* + * Class: bwapi4_Game + * Method: getAllRegions_native + * Signature: (J)Ljava/util/List; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getAllRegions_1native + (JNIEnv *, jobject, jlong); + /* * Class: bwapi4_Game * Method: getRegionAt_native diff --git a/headers4/bwapi4_GameType.h b/headers4/bwapi4_GameType.h index 3a0a18e..c9963cf 100644 --- a/headers4/bwapi4_GameType.h +++ b/headers4/bwapi4_GameType.h @@ -7,6 +7,14 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_GameType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_GameType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_Player.h b/headers4/bwapi4_Player.h index 361040f..92d42ac 100644 --- a/headers4/bwapi4_Player.h +++ b/headers4/bwapi4_Player.h @@ -23,6 +23,14 @@ JNIEXPORT jint JNICALL Java_bwapi4_Player_getID_1native JNIEXPORT jstring JNICALL Java_bwapi4_Player_getName_1native (JNIEnv *, jobject, jlong); +/* + * Class: bwapi4_Player + * Method: getUnits_native + * Signature: (J)Ljava/util/List; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getUnits_1native + (JNIEnv *, jobject, jlong); + /* * Class: bwapi4_Player * Method: getRace_native diff --git a/headers4/bwapi4_PlayerType.h b/headers4/bwapi4_PlayerType.h index 7a56deb..ebc6546 100644 --- a/headers4/bwapi4_PlayerType.h +++ b/headers4/bwapi4_PlayerType.h @@ -7,6 +7,30 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_PlayerType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_PlayerType_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PlayerType + * Method: isLobbyType_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_PlayerType_isLobbyType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PlayerType + * Method: isGameType_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_PlayerType_isGameType_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_Race.h b/headers4/bwapi4_Race.h index 7a8433f..1e946d6 100644 --- a/headers4/bwapi4_Race.h +++ b/headers4/bwapi4_Race.h @@ -7,6 +7,54 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_Race + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Race_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Race + * Method: getWorker_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getWorker_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Race + * Method: getCenter_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getCenter_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Race + * Method: getRefinery_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getRefinery_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Race + * Method: getTransport_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getTransport_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Race + * Method: getSupplyProvider_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Race_getSupplyProvider_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_Region.h b/headers4/bwapi4_Region.h index d28b736..fab9b36 100644 --- a/headers4/bwapi4_Region.h +++ b/headers4/bwapi4_Region.h @@ -55,6 +55,14 @@ JNIEXPORT jint JNICALL Java_bwapi4_Region_getDefensePriority_1native JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isAccessible_1native (JNIEnv *, jobject, jlong); +/* + * Class: bwapi4_Region + * Method: getNeighbors_native + * Signature: (J)Ljava/util/List; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getNeighbors_1native + (JNIEnv *, jobject, jlong); + /* * Class: bwapi4_Region * Method: getBoundsLeft_native diff --git a/headers4/bwapi4_TechType.h b/headers4/bwapi4_TechType.h index c7dd387..0b5a12f 100644 --- a/headers4/bwapi4_TechType.h +++ b/headers4/bwapi4_TechType.h @@ -7,6 +7,94 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_TechType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_TechType_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: getRace_native + * Signature: (J)Lbwapi4/Race; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_getRace_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: mineralPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_TechType_mineralPrice_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: gasPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_TechType_gasPrice_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: researchTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_TechType_researchTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: energyCost_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_TechType_energyCost_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: whatResearches_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_whatResearches_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: getWeapon_native + * Signature: (J)Lbwapi4/WeaponType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_getWeapon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: targetsUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_TechType_targetsUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: targetsPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_TechType_targetsPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_TechType + * Method: getOrder_native + * Signature: (J)Lbwapi4/Order; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TechType_getOrder_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_UnitCommand.h b/headers4/bwapi4_UnitCommand.h index 9ecc053..39b7937 100644 --- a/headers4/bwapi4_UnitCommand.h +++ b/headers4/bwapi4_UnitCommand.h @@ -7,6 +7,430 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_UnitCommand + * Method: attack + * Signature: (Lbwapi4/Unit;Lbwapi4/PositionOrUnit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_attack__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: attack + * Signature: (Lbwapi4/Unit;Lbwapi4/PositionOrUnit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_attack__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: build + * Signature: (Lbwapi4/Unit;Lbwapi4/TilePosition;Lbwapi4/UnitType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_build + (JNIEnv *, jclass, jobject, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: buildAddon + * Signature: (Lbwapi4/Unit;Lbwapi4/UnitType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_buildAddon + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: train + * Signature: (Lbwapi4/Unit;Lbwapi4/UnitType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_train + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: morph + * Signature: (Lbwapi4/Unit;Lbwapi4/UnitType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_morph + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: research + * Signature: (Lbwapi4/Unit;Lbwapi4/TechType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_research + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: upgrade + * Signature: (Lbwapi4/Unit;Lbwapi4/UpgradeType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_upgrade + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: setRallyPoint + * Signature: (Lbwapi4/Unit;Lbwapi4/PositionOrUnit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_setRallyPoint + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: move + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_move__Lbwapi4_Unit_2Lbwapi4_Position_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: move + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_move__Lbwapi4_Unit_2Lbwapi4_Position_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: patrol + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_patrol__Lbwapi4_Unit_2Lbwapi4_Position_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: patrol + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_patrol__Lbwapi4_Unit_2Lbwapi4_Position_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: holdPosition + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_holdPosition__Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: holdPosition + * Signature: (Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_holdPosition__Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: stop + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_stop__Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: stop + * Signature: (Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_stop__Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: follow + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_follow__Lbwapi4_Unit_2Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: follow + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_follow__Lbwapi4_Unit_2Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: gather + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_gather__Lbwapi4_Unit_2Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: gather + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_gather__Lbwapi4_Unit_2Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: returnCargo + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_returnCargo__Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: returnCargo + * Signature: (Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_returnCargo__Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: repair + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_repair__Lbwapi4_Unit_2Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: repair + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_repair__Lbwapi4_Unit_2Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: burrow + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_burrow + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: unburrow + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unburrow + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cloak + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cloak + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: decloak + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_decloak + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: siege + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_siege + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: unsiege + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unsiege + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: lift + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_lift + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: land + * Signature: (Lbwapi4/Unit;Lbwapi4/TilePosition;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_land + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: load + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_load__Lbwapi4_Unit_2Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: load + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_load__Lbwapi4_Unit_2Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: unload + * Signature: (Lbwapi4/Unit;Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unload + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: unloadAll + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: unloadAll + * Signature: (Lbwapi4/Unit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2Z + (JNIEnv *, jclass, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: unloadAll + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2Lbwapi4_Position_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: unloadAll + * Signature: (Lbwapi4/Unit;Lbwapi4/Position;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_unloadAll__Lbwapi4_Unit_2Lbwapi4_Position_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: rightClick + * Signature: (Lbwapi4/Unit;Lbwapi4/PositionOrUnit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_rightClick__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: rightClick + * Signature: (Lbwapi4/Unit;Lbwapi4/PositionOrUnit;Z)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_rightClick__Lbwapi4_Unit_2Lbwapi4_PositionOrUnit_2Z + (JNIEnv *, jclass, jobject, jobject, jboolean); + +/* + * Class: bwapi4_UnitCommand + * Method: haltConstruction + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_haltConstruction + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelConstruction + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelConstruction + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelAddon + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelAddon + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelTrain + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelTrain__Lbwapi4_Unit_2 + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelTrain + * Signature: (Lbwapi4/Unit;I)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelTrain__Lbwapi4_Unit_2I + (JNIEnv *, jclass, jobject, jint); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelMorph + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelMorph + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelResearch + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelResearch + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: cancelUpgrade + * Signature: (Lbwapi4/Unit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_cancelUpgrade + (JNIEnv *, jclass, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: useTech + * Signature: (Lbwapi4/Unit;Lbwapi4/TechType;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_useTech__Lbwapi4_Unit_2Lbwapi4_TechType_2 + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: useTech + * Signature: (Lbwapi4/Unit;Lbwapi4/TechType;Lbwapi4/PositionOrUnit;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_useTech__Lbwapi4_Unit_2Lbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jclass, jobject, jobject, jobject); + +/* + * Class: bwapi4_UnitCommand + * Method: placeCOP + * Signature: (Lbwapi4/Unit;Lbwapi4/TilePosition;)Lbwapi4/UnitCommand; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_placeCOP + (JNIEnv *, jclass, jobject, jobject); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_UnitCommandType.h b/headers4/bwapi4_UnitCommandType.h index fefaf49..138dd36 100644 --- a/headers4/bwapi4_UnitCommandType.h +++ b/headers4/bwapi4_UnitCommandType.h @@ -7,6 +7,14 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_UnitCommandType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_UnitCommandType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_UnitSizeType.h b/headers4/bwapi4_UnitSizeType.h index a6cbe83..73d3a9f 100644 --- a/headers4/bwapi4_UnitSizeType.h +++ b/headers4/bwapi4_UnitSizeType.h @@ -7,6 +7,14 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_UnitSizeType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_UnitSizeType_toString_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_UnitType.h b/headers4/bwapi4_UnitType.h index 5c79932..9e9daf0 100644 --- a/headers4/bwapi4_UnitType.h +++ b/headers4/bwapi4_UnitType.h @@ -7,6 +7,590 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_UnitType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_UnitType_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: getRace_native + * Signature: (J)Lbwapi4/Race; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_getRace_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: requiredTech_native + * Signature: (J)Lbwapi4/TechType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_requiredTech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: cloakingTech_native + * Signature: (J)Lbwapi4/TechType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_cloakingTech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: armorUpgrade_native + * Signature: (J)Lbwapi4/UpgradeType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_armorUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: maxHitPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxHitPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: maxShields_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxShields_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: maxEnergy_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxEnergy_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: armor_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_armor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: mineralPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_mineralPrice_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: gasPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_gasPrice_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: buildTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_buildTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: supplyRequired_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_supplyRequired_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: supplyProvided_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_supplyProvided_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: spaceRequired_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_spaceRequired_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: spaceProvided_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_spaceProvided_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: buildScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_buildScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: destroyScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_destroyScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: size_native + * Signature: (J)Lbwapi4/UnitSizeType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_size_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: tileWidth_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_tileWidth_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: tileHeight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_tileHeight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: tileSize_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_tileSize_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: dimensionLeft_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionLeft_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: dimensionUp_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionUp_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: dimensionRight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionRight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: dimensionDown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_dimensionDown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: width_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_width_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: height_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_height_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: seekRange_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_seekRange_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: sightRange_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_sightRange_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: groundWeapon_native + * Signature: (J)Lbwapi4/WeaponType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_groundWeapon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: maxGroundHits_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxGroundHits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: airWeapon_native + * Signature: (J)Lbwapi4/WeaponType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitType_airWeapon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: maxAirHits_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_maxAirHits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: topSpeed_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_UnitType_topSpeed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: acceleration_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_acceleration_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: haltDistance_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_haltDistance_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: turnRadius_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UnitType_turnRadius_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: canProduce_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canProduce_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: canAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canAttack_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: canMove_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canMove_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isFlyer_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isFlyer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: regeneratesHP_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_regeneratesHP_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isSpellcaster_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isSpellcaster_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: hasPermanentCloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_hasPermanentCloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isInvincible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isInvincible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isOrganic_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isOrganic_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isMechanical_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isMechanical_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isRobotic_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isRobotic_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isDetector_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isDetector_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isResourceContainer_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isResourceContainer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isResourceDepot_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isResourceDepot_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isRefinery_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isRefinery_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isWorker_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isWorker_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: requiresPsi_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_requiresPsi_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: requiresCreep_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_requiresCreep_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isTwoUnitsInOneEgg_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isTwoUnitsInOneEgg_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isBurrowable_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isBurrowable_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isCloakable_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isCloakable_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isBuilding_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isBuilding_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isFlyingBuilding_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isFlyingBuilding_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isNeutral_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isNeutral_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isHero_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isHero_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isPowerup_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isPowerup_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isBeacon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isBeacon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isFlagBeacon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isFlagBeacon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isSpecialBuilding_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isSpecialBuilding_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isSpell_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isSpell_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: producesLarva_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_producesLarva_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isMineralField_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isMineralField_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: isCritter_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_isCritter_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UnitType + * Method: canBuildAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_UnitType_canBuildAddon_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_UpgradeType.h b/headers4/bwapi4_UpgradeType.h index a312670..96b4629 100644 --- a/headers4/bwapi4_UpgradeType.h +++ b/headers4/bwapi4_UpgradeType.h @@ -7,6 +7,126 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_UpgradeType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_UpgradeType_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: getRace_native + * Signature: (J)Lbwapi4/Race; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_getRace_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: mineralPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_mineralPrice_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: mineralPrice_native + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_mineralPrice_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_UpgradeType + * Method: mineralPriceFactor_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_mineralPriceFactor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: gasPrice_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_gasPrice_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: gasPrice_native + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_gasPrice_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_UpgradeType + * Method: gasPriceFactor_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_gasPriceFactor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: upgradeTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_upgradeTime_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: upgradeTime_native + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_upgradeTime_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_UpgradeType + * Method: upgradeTimeFactor_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_upgradeTimeFactor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: maxRepeats_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_UpgradeType_maxRepeats_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: whatUpgrades_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_whatUpgrades_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: whatsRequired_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_whatsRequired_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_UpgradeType + * Method: whatsRequired_native + * Signature: (JI)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UpgradeType_whatsRequired_1native__JI + (JNIEnv *, jobject, jlong, jint); + #ifdef __cplusplus } #endif diff --git a/headers4/bwapi4_WeaponType.h b/headers4/bwapi4_WeaponType.h index 5d88862..7f26899 100644 --- a/headers4/bwapi4_WeaponType.h +++ b/headers4/bwapi4_WeaponType.h @@ -7,6 +7,198 @@ #ifdef __cplusplus extern "C" { #endif +/* + * Class: bwapi4_WeaponType + * Method: toString_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_WeaponType_toString_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: getTech_native + * Signature: (J)Lbwapi4/TechType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_getTech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: whatUses_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_whatUses_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: damageAmount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageAmount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: damageBonus_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageBonus_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: damageCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: damageFactor_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_damageFactor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: upgradeType_native + * Signature: (J)Lbwapi4/UpgradeType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_upgradeType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: damageType_native + * Signature: (J)Lbwapi4/DamageType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_damageType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: explosionType_native + * Signature: (J)Lbwapi4/ExplosionType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WeaponType_explosionType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: minRange_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_minRange_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: maxRange_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_maxRange_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: innerSplashRadius_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_innerSplashRadius_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: medianSplashRadius_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_medianSplashRadius_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: outerSplashRadius_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WeaponType_outerSplashRadius_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsAir_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsAir_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsGround_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsGround_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsMechanical_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsMechanical_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsOrganic_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsOrganic_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsNonBuilding_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsNonBuilding_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsNonRobotic_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsNonRobotic_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsTerrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsTerrain_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsOrgOrMech_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsOrgOrMech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_WeaponType + * Method: targetsOwn_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WeaponType_targetsOwn_1native + (JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif diff --git a/manual-bwapi4/Mirror.java b/manual-bwapi4/Mirror.java index 93d4543..59235f0 100644 --- a/manual-bwapi4/Mirror.java +++ b/manual-bwapi4/Mirror.java @@ -60,7 +60,7 @@ public class Mirror { static { String arch = System.getProperty("os.arch"); - String dllNames[] = {"BWAPI4.dll", "gmp-vc90-mt", "mpfr-vc90-mt"}; + String dllNames[] = {"BWAPI4", "gmp-vc90-mt", "mpfr-vc90-mt"}; if(!arch.equals("x86")){ throw new UnsupportedOperationException("BWMirror API supports only x86 architecture."); } diff --git a/manual-bwapi4/UnitCommand.java b/manual-bwapi4/UnitCommand.java index 6764feb..00b3d2f 100644 --- a/manual-bwapi4/UnitCommand.java +++ b/manual-bwapi4/UnitCommand.java @@ -1,11 +1,114 @@ package bwapi4; -import bwapi.UnitCommandType; - -import java.lang.Override; public class UnitCommand { + public static native UnitCommand attack(Unit unit, PositionOrUnit target); + + public static native UnitCommand attack(Unit unit, PositionOrUnit target, boolean shiftQueueCommand); + + public static native UnitCommand build(Unit unit, TilePosition target, UnitType type); + + public static native UnitCommand buildAddon(Unit unit, UnitType type); + + public static native UnitCommand train(Unit unit, UnitType type); + + public static native UnitCommand morph(Unit unit, UnitType type); + + public static native UnitCommand research(Unit unit, TechType tech); + + public static native UnitCommand upgrade(Unit unit, UpgradeType upgrade); + + public static native UnitCommand setRallyPoint(Unit unit, PositionOrUnit target); + + public static native UnitCommand move(Unit unit, Position target); + + public static native UnitCommand move(Unit unit, Position target, boolean shiftQueueCommand); + + public static native UnitCommand patrol(Unit unit, Position target); + + public static native UnitCommand patrol(Unit unit, Position target, boolean shiftQueueCommand); + + public static native UnitCommand holdPosition(Unit unit); + + public static native UnitCommand holdPosition(Unit unit, boolean shiftQueueCommand); + + public static native UnitCommand stop(Unit unit); + + public static native UnitCommand stop(Unit unit, boolean shiftQueueCommand); + + public static native UnitCommand follow(Unit unit, Unit target); + + public static native UnitCommand follow(Unit unit, Unit target, boolean shiftQueueCommand); + + public static native UnitCommand gather(Unit unit, Unit target); + + public static native UnitCommand gather(Unit unit, Unit target, boolean shiftQueueCommand); + + public static native UnitCommand returnCargo(Unit unit); + + public static native UnitCommand returnCargo(Unit unit, boolean shiftQueueCommand); + + public static native UnitCommand repair(Unit unit, Unit target); + + public static native UnitCommand repair(Unit unit, Unit target, boolean shiftQueueCommand); + + public static native UnitCommand burrow(Unit unit); + + public static native UnitCommand unburrow(Unit unit); + + public static native UnitCommand cloak(Unit unit); + + public static native UnitCommand decloak(Unit unit); + + public static native UnitCommand siege(Unit unit); + + public static native UnitCommand unsiege(Unit unit); + + public static native UnitCommand lift(Unit unit); + + public static native UnitCommand land(Unit unit, TilePosition target); + + public static native UnitCommand load(Unit unit, Unit target); + + public static native UnitCommand load(Unit unit, Unit target, boolean shiftQueueCommand); + + public static native UnitCommand unload(Unit unit, Unit target); + + public static native UnitCommand unloadAll(Unit unit); + + public static native UnitCommand unloadAll(Unit unit, boolean shiftQueueCommand); + + public static native UnitCommand unloadAll(Unit unit, Position target); + + public static native UnitCommand unloadAll(Unit unit, Position target, boolean shiftQueueCommand); + + public static native UnitCommand rightClick(Unit unit, PositionOrUnit target); + + public static native UnitCommand rightClick(Unit unit, PositionOrUnit target, boolean shiftQueueCommand); + + public static native UnitCommand haltConstruction(Unit unit); + + public static native UnitCommand cancelConstruction(Unit unit); + + public static native UnitCommand cancelAddon(Unit unit); + + public static native UnitCommand cancelTrain(Unit unit); + + public static native UnitCommand cancelTrain(Unit unit, int slot); + + public static native UnitCommand cancelMorph(Unit unit); + + public static native UnitCommand cancelResearch(Unit unit); + + public static native UnitCommand cancelUpgrade(Unit unit); + + public static native UnitCommand useTech(Unit unit, TechType tech); + + public static native UnitCommand useTech(Unit unit, TechType tech, PositionOrUnit target); + + public static native UnitCommand placeCOP(Unit unit, TilePosition target); + private Unit unit; private UnitCommandType unitCommandType; diff --git a/out/production/InvokeGenerator/generator/CJavaPipeline.class b/out/production/InvokeGenerator/generator/CJavaPipeline.class index 6d08f683ba494f38790d46c1572c812e355c6e89..d9ceadebf1f7f3d5ef367daf507e0bc8ec5e1d09 100644 GIT binary patch delta 234 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 MEa-VS(?_5AKLlt09smFU literal 7633 zcmbVR33OD~dH(OLSEDBo4}<^%;e2T zh{SE}X06jEUDC$HS=ux$iHU2{8sP+zxJ{a-?%s4s>o%_2xJ|mGO}8|)N%Q^p-Zy$9 zjnB#H_`LV-fA9VGRrvYue)_XSv`d_d(W7)DN}q{QfNs>$BlOuQeNNJIl73y%Z%F#Q zq%TPNO-Wyr^jk6d68$z`dS24+Ncvq#zbEPUCH;YkzRKa=$5 zlD;D8FL?VeCB4AkzmoLVlD;bGMM-}n=_TI#TS*q}S<>ILF#jOw>yo}9=^rKi zlcax^^e>XW8KW@$DZFKCQ7?tX7aOEl#oyKZYLsG)6gDr{ zO0f>qL=(T(OVKRF1}Qd5u}O+sq-c?1vlO>VahnvaQf!f;Eh=u0(KI9!TN&q$nAj$^ zOA(hMAw@fHbx4tvqEm{L6kSs6km61$c1p2JirrG&B}KOscS~`P6!%Ke6BWHtu}4t- zOnN>&Ru~w&P;>;X9b&L+uAI$v-JdQ^A4?Z|1=Wpar}F9YoQoUxuDr2FZ{^bYsjkto zo6S%4uH5MZo!ERjH|H>?lAuN(p`mQ4jPtF_wrUV&G7Xc3e5stymkp&lCqFmqQB^EP z90;2?TlEv?%jtn!x>RDe^~Ln$x%8BCJUt6-?3IEFitNeev*kWP!Fb}7pwK`egR85D zvU%tD-0Xzoj-@AZ3b`4C70+S9D@?~d%m0UID zl!yH?tcxdVNwF=ya<}G1cTjqWe|toj6ADK%h)y5q6;;nWiJS%3JFCm;yR_d zTp2lyD9DzE3t6b)3aUxu46K_io$`DPS+XVQZCnM}WU=g;K&!)Y*mcfk7X(?b$U(SJ zVFH{t7S%3_O%{q54rQHO24+1{L->_uTDeoxa1}<{a#1&ZUb9@oEZJ)(CT5(;GO`1i zVd91ZyjXNH8t0zxOP-qC*JWpmIcL_%mzCZ+WDy>0{H6F6bW5#!1Gz#8c?M&#iE}wf znJwfIq%66zxjQ$B*n`{^^Z^`sT-HubJCo=7PwyWd+%@4MV4O0nTX&YttZfj&^exomrMCb<9ry|aVqq8>XrZk! zQ1yYQ)46j?U>N$bA}uUVPtOQcMWM+#`&~DEVNa$ohulN1uJSNWxF?alg2F0T5t0lJ z6lQ1B`Ak&owM3uTXVKf~9gu;Kv?Jx1GdZo7^(Tu{ZaSmt6taILJqeX#r=4`Mph^lz zpKvpr1@bV8h(-z@blrk$(T_3R`eTK;lG8s|F0)U9N1Y4En2Gc0Vs>|G3{@aCnthX# z;*b}#$?Ojl3T`HgDys;Z!$!W{)5F($di4Eu)fe@)MUOGx@WFY6lSS`hAT}^vIOh~O zV^PvZoGBF`tE%mXv>z_yE=;kUR)4zW456g4S1kH*MNvs-(NEC3VTxRVLoPhSUrXF4 zI64&h(2V}f7qS_UoG27>P8uZTOl29-odKsaCDkJ=(JuxpaX=gdmEp0Gs5oSa!vd)m zohhii6BH=E0i|?#@bu4RbIShf<6xU`^7Ea2hn@0ZzO2eb+!FVTL5qHw-Y2Ld*?K6O z&kUpy@ELuK`^i=hNoTm~4so=DM6$I_b&xhJ2HO&eUP~NdI-%CRt+*f(7G0vpEpb!~ zL9%#l0g#7GXu%_rY(*{PoeSO$R7-F#;LU7iX;?MjwHCDN7s|CoC~69)O6iPvO;w`K@j4e4)no6xOb4>f*)8d+QlODVr8q9$xY59 z-mKHd3T69}>rduObH!r8EjyVLMQ*GJ(t`_=PEps8=%nsc7G0&Mqhiz&W8x&(#}jz5 z9RsNaix%0HffUj)l5(94AIj8}>o|E{MpF|QPk6Q41js--mqR}-XD4->9COOkg-m=Y zqIBRWOScK?Rid}SsY^FBiYB7%y>wQMeMbem4God~8$Xg5(&a(hgejxCq;Sk8j3*%K zA$8=l;s2Mt7JeC_*O0__tJfzKyHE+$z#@*NUAz_Cyaane8c(DapiJ$P3pm-7Y=uh; zxp~JIu?H8*ZW_VXRCBtjYBbto-jj?NqB(%eU@1}Bdp2B#oQC8%oV^G;W?FjIo=v|1C1tShIpd8HlZ z6HdX-8pFxTQN&bJln7Zactu)HWBAu|FNWYjbQ4T*Zn<(Aa6>8{M0ietk>ZInv;}{J zJ&Hd*qxdTh!vzU?E1&?q4G+3{1%4-BbmJ-*U9t*BqpX6_^QvI9J$Zj-Y7pq;qjmy866MV(b4g+El0;AcHQWB)Q*jgOS^t_ zyfI>1ct`Dq(PwGZRa)KNSf{ZX8EXw=*^IT8u^Jd_ox*BTSnKhYcC*Ia(B2r)xEmRF z6XV{(xGjvknQ?E`H*aeX>5Huz-qLPFZDYjS8F4Ek-oc35^quYPcKj+O+Ml72-EMa* zQu4G~ciO4Sy36jWtasRVR@OW1UA+FJ^2<---9xMJzLi3>8vm`KgR~YtY@*B5OxI~6 zy+|$eGTlbsqE@;|TSOhTi6**TY@x06Gr+X8#p%8Dvw#Hs9K8>3c!Rp|g*PY+;SyJ{ z2oN)jsLkz5$Z*;c^5X{iA>0n&_NERyvPiq%PgaK=#o{7G?D!RrVo*_BMM2!`Ae)j9 zJf$eF*Vu+K=+H$3jG*`9W{3iI0P82{1BP3l;TCD{fMJ)6!~YyXv=b8U@==Xcs784D z0u4bQBv0~lz+ris*(Y$$UC&YYSn`V$OPW$@hQ5SIX42hO#>Gx8oETGAal^FXrJ!$acHe@Xf+(z@(~Jd3f{-|`e=pQJ|lKL z7;MlCmWw{%BV1o0Twf9Wmnt#W3DO*MLHnNN5qDS-QQ-=yy@qh=9HJzGd)zfEQ{1ay}<~dhV#`xr08Y;vm2y zp5_>M3Mxe4-`o9O+3KeAbee;go%|U#R-WQAQ#P`8dkF0OT_uQEmpJNR!Zw#p%y+{ke z?(ijY0ZWyt(;ZO;5r4zCBtoi>lM7AQ6a3s zMuXajHUgt5{3N6xaSOlkV_mwIJ+pw{i{~4-7x2t<2v+IDquiqwhZ$n$Rd3(V+k<$q z&t4n*$oF^cC|_I2WT^J`v06lrV^fKE0t>%T!^;os2iQeAOSe%S)}z!wW2lm+#BO>} zxb%>?NEz`>nh8WH7igut3c_|&NraadgjiixLCAX?j;M=ReFCeXDoZWYn7T+oXb|bGx7ilc?&?22wC#USw zi}bplkTEz%?OuBvuOy!KjiF@cH9CW(NhGb~dPUoXR3+$Hrp+`@aavG1?bdufooL9@ z2`i%$R$8YZ4brbbyO7dOl6aLi>w^0fJ#92O1A1KPTiQF4Mo5$NEFr{Nqz9L$_`^yP zUFusZlC)GLX)%%rx>6}G51aDRjbz{Aug9ibUZfT;C|?i8s^a{BF^v6#Oa9k=@)7jH zN72vT;wv`Y6-m13lgiJgPi|u0{c1&$vqlo`47DYR*l)P9lIJ_X^PTX;V?Lh#4pGgM zd-JbV`h%~nAv8vo_l9@-NY-j=&v?RPIt*}7i_IO!0)6n1DS>E3s2QdPK5lB@!=?s4 zW@=#G)WC;K4ID8w@Ica(wll%LOLQ`63g1u&(BY&hi+y20_a;rz+YtfOku)W)EedFJ z(iFgT642_TscwW)-FEtlJ#odJtdyt>f&iXM;A17o>(}c*bFoT_)CMvc@7`(O9 zghf-7!PT8!B*^YiQ%JYDZlx^7YJ9gZd(HrUk5>!w@GKW1yMWiTRODr4?~Ro`fBUE$ zyH%GXs0#XFhJFMu z#g%8Dnt`ob#MATzdWODD*F=)8i!amXRlKRfEMD;94J#dQ2o1WX+MW*Y`kQos!+RC~ p>f<|izk+|$6!dJRYWb(y?X{=cFZm+eKh=Ip6<|T1hBE_n{d+a{)3yKr diff --git a/out/production/InvokeGenerator/generator/c/Bind.class b/out/production/InvokeGenerator/generator/c/Bind.class index f83096e77a1cb8025358712f59654254633089ec..cabbe5b69242273876cc8f4da2a1de970b5994ac 100644 GIT binary patch literal 13551 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 delta 4234 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 F^j{~?*_!|W diff --git a/out/production/InvokeGenerator/impl/CApiParser$1.class b/out/production/InvokeGenerator/impl/CApiParser$1.class index 262690343c57a103be1047fe30eb706f118b4225..ae463d93c7441998f9e895837516bdd51b283fa6 100644 GIT binary patch delta 19 bcmcc4cAag*CMHJR$(xyc84V^gGKT>GM-c`9 delta 19 bcmcc4cAag*CMHJV$(xyc8O0_uGKT>GMR5hp diff --git a/out/production/InvokeGenerator/impl/CApiParser.class b/out/production/InvokeGenerator/impl/CApiParser.class index f0727a8433d05772734c40151043b91baaa38022..f7bfeec641d6183091b586c27643936bf09a10c4 100644 GIT binary patch literal 12640 zcma)D31F1f@t=9SoA2Armk>52upqb)BzJ-#0xp*!1PmkrlK_T8SdtB_B%8RqL9lAo zTCG}b)v5)LdQ{Mg7Lf!H#jE1cR;|4cTWhuVW$mF><^P-a?PfP5_%Al^oHuXY%)B|? zetr3q$Bz=x47J5WFY(zX*SqOkywv1nQa6~~=;0<_E}a!poMUjahdg|?bXp83n zvUrvBS4(lO6m6NjhSz#{9j`a}JgGOByiw|)!J9nfuQK^+>3qTDYoxwbHo4B^FPeP4$v2q%C6m8w@{Pia zn>>6oe?^L0Jai7r%Y4BYhY87s^^4Fxe+vIypzSrdY z-28RE-{jpU@A2>h{GiF-F!>>q_nQ2$$&Z-)O_TST{HV$MO@7Se119&IJYe!clMe~f z!zMp2bRIGJ36q~R`KZZHnf$cL&zStI%sglEw@iNC7W(nB}%uS5sd zO6yI7f9;{$_$`Bfes5PPG*&~YqOl&M(npp>B;9y+R=9)4T7q{t8eLkiPSZq(3x<$*+0CS;*3LuDB% zn<=BFwzjUNg~_UqL_*Qpu3#({iWzDYle-}t3AMz7@esg*?d_phjA>j$xVyKjvbLr- zydoHlg`!h!1ap{j+WVr>P$b?I><-0xgY8)6Z8$%;Em+wVjBKuKiATec&4BYPUfEQ; zp}B5J-MLIzwLOtoJQ#_u3U>8jMfPHQW2EE6W2R%d!0ZdFN$+b zIbnKkLwjZIq7;TX^JRn0T|JwEU0Mj>lYrqfZnpHqG7~iZ4kg z$to&NCn`I3!hBXyYFa4C?2Yz_-Uua3l|{qVq4>mYrw(cz2yk}kg;~(T_N|S<-UP`R z;aJPoa4%EdNEp|ETZw(sxHWksP*6JvBK#KtFOPPFBf&0+PkISnXPp3PbO+<@TSC#1 z6sFOhnq#OO2q8hqVkntt3RA&|gy>t91Oh2WFuJ*QM=!W0ExA&-3i!)QV`1I)_E4`N z1-t`LxFc)RrUx&as~2k84Q>Xb(W%1JPz03^b_Kc_lCfuTU3EMZ}Q&rT! z9%3??T!IX>+61*2XOjgg7xr~_hN7X4=1{OB6b0_lG3ahDY+;g_SOa%J8PQOzuPY7# zb?TF552DZqWy)_Da($s4iTiNM2|Uoo#kL$`Rwj%ztq(dMO6nCirgCBO5$nLs7-|et zRYGq=zXX&5Rk znzkT0u&$`6qNI48CRJ|-Y*+-Ur=vATlWC|tOXaJv7X6CewCLCLCT_oWw%T>oM5DnS z!heh2qThg9DYeHXSa@NuH*6dB7+9soS@c`_okhQ=A6fJVdL2q(DW4jT>usqC>J;d7 zWr?LGs!7mPG)|=tnZ};z+86ePyP)Bg@~g?%aqgyQ<$PUO{GrBCQiAw5?kF)-ouwA5B}|i(PQkD3Sg6Ba?$;pxXh_cEF9M2UL!E7@dNmIG zlg)A3jvnw14fhfVc~LMPECI12;2NAx!Y|QoL=~Nj>l^BrP8|VKX8ePI#Unrr-8Kd55t+jEz>tir#HsnzqU?pC zSUfesG}4YkVN#2Ep2dsQIpA?SG7^MyVhoz4Xh|A=on;NigqCU*7wAnI{#Yy-Qo-3< zYNc4@47r*W(93*nO@;+4Se~2^KWj%Yvgax(R$J;^b&5s*qJLZLV5gkd%Bz&#=k?s+IPZO^IV=}@kEAO9CZRP)9IUfdb<4KSY0I4 zy`yMFS8zut>hIN6nZFr^tf$-G9V)g7^Uw27pJS=bY6+~S$So&j-|ZU$A)T;ABJ)NH za^l2b3YGNIY3XbtI~lTr%~4!4y{QJaV>c^Z{P5|ixO@c6gPF0>-qYQy9_T@-GMm$PAG&R<@304y- zDFJVN{fIQ@6^%UZLChJACy7KJw^^t~)(^xPI7_fgTtr>dB8X>m2=6)K!YgZ+A|zfB z?hV=5v>A?R%RED`6#lg=tA|;4*Dh~rY2C1>ZZQo0a=0FMZ9`2t>Ry5bIs%eFFb+2e%-db1NT8E7dsC;*Cd*eV1J9s=2u7jiL3{8Ya5KPesYtyhL0VUhWh=rgsAR+zrDxq$m zCp`F8<*@@EJHByB>^k&T?TE!g&`U=s3NMjJ++kx^K=^T}XDBF{rX92o9ma_eRYu}n z5z&_rfF;uaYl_wgfv#9@R~Y;#9N|pGBcxCWC1LLn#w1kJh=yQ?#F{Qj$1vnVr156R zcsh3nuUO)2Lo*MY?aXxa3FtJ$CmoSPj&!);YXuTdESjNsB5IB5V;Ok2va|Zp2?~0B^wIZGGyMQ< zMHw`Xen>wW?Ee`3pQQDFivG{i`aehi7is-BfCXtaN|K~i*T`E@D@js;_if#N2YsZY zx{Zuf*GNiHX95O^J<30$cOyB`B3e>%5Lu~L^&^Y)I{V30;>|cjMn9P)B?ri*o9>b$ z56Nv%rekG?fBW zNptbve5#>(`YWI;n*{nB{T)4~cj+Gq@+wgac`guYH)}$?V4K99<{+U?Z z2xtZ9(Iurqlu4^yt9)hQ~oN#3;U$VH1m;S!B7-(HkJh~=7*Fy|7a*{B_7fdrsd zQ%VPDOaoARU!ZGCy?FzazmqO6^^P5&aXV@35%Pgw;{i0mdkTsHn%Ge4our{=fQ5S2 zdn#s1^p_N55Q`4&PaAPzS zEV@hO(7kFr-KQpjTDiUYzNjh5`-0Ygw848HbK@w#YIb2|U`ml?SzgQGL1pFU=4Qbr z;2|k-QGbrRB)2>W4OqC7T+Y2E-dfFC-CUGv+9Jy?@z!ba>*>X*=_RS=*{PmAY!5q3U-w8Ew!z$D_Ld}=%q}Aw; zo?n(RK+BHN)G|ZYqsvUxIXQ=@Vg4Si0dI^!s!gywVJKhxza^E9eah!nbt5n}}Ge zL1`XT^kd9BFgpgycpUVD`lP7QvPJENni7kNl+$OC<71j(uwu`L*g{EOYcs%I35I9E zoIfRY)7zr2t&8{J_-2Y7u6vJAE9~aVrt-2J;XyyGLMuzRR+k^3)!uWpbVrp-#|d-N zPcpvB+m^(rduw!W+J0J_G_~tsoMesIsP!mdkO$~I-lxGgXmEGA7YtmbM}or;Y&r=7 zZI-I^qV{2nI!>}kgNKHJcb*)4wRjd-)5*h5zBx(!7Mu9h-taKQ=YJaFt;4{(J`KG4 ze+Eyevsn&7MapurA;x2lC+$YS>2rE}2BU7fnu+c|3KDq`18*kcmG_FYm+h zT{KF!w`o+fe4eAOyZ=8VK9931km>Wdssh#?d%biqX!$a|7iu}>`ZDeIb`w6m0P~sN z9eQSromRaH%-|R2lPLGC-FGGLyRh zS*-MBq5u~(A-2j?`mBUfo#x$waZBz~z)G&VOjcQmRdTS)HH#(+>`7s+&@k1|@73PV z*$SI>ge!qfrfj78{&_zi$lSyCf)x8^50ZfmF@jji>&tWq^@UE{rpZEQg6ecoT#k`I zGrjiJHoP14!LQQf8Q!aP?+dz@ZY8cs5jez3fS7BC0bh4=;H!rLfAQqN*AD}};pD(y z8V3C3lL14OzfQ%XrrsO%s)^wJO-JbFHmDhHKt|O;`pN*^vU(5Yr_UUuTkTOxxHN!Z zVBeMa2k;*T3Et>-c%XaWaUX`yeFeVjHTbNz;F}!G>_R!3om_=hHM{vN_HYAd z^0{pBd7Q)NWA-}s^7Wj@J2{^p=dt_*kLMS80{?+e;Xm=I{2qQac%KXK&Cpck=F^my zr>Qb7RMlLhW^sv{&t>?1ryLK;m1-4Nsf|2CUCh<$Ql71@;4{@#JV)KdbJhJkPd&r) z)pLB7dWmb)>s+gTg2(A!@?!OSUZURTr4Gf*9J$=+n8;0z3SRD5$}1cV-0axMEsm|+ z>bRU&J8t1~9Xq+raSyL?9OU(mXZSqF^Sr_FbKc~5huaE|8JBEHyJ#g{m1_;TkmzQWnUpLee3tDIeYjdL4c>%54scV5XiIKRL*I&b2eoR9I% z&VIht`4r#ge3QTGe2Z^){+aJ^W$~S^QGB<{$M?7be6MRR-|t$?yIq@kk1Na%xi03t zu3PyL*Mt0+YcKC}J;IN=9^?J4exBw!!UL`+`H+q_ZlG*+g`<#N2pu!kRgMDAK+AGH zLIxXbVr+>c0-521GF9fdhBGniR{4(mAv+Ics0og{ISY}Bp(Z)*=n(H=5*$Zt$5R!~z(6Zy0v91Tw;+QL_BKu>iMId8vZdS$Uit37D{KR4% zM^NK7c#Oe$_MC3y8&DZUu^-Vm^gp6W=ofxWr|QYPso9yn@w2PXD43Bkdfe!7Sy^TJ z-v{JfXzoasnOhsP|>>51s^Y5~FRs4SJFQ)f1Xr4k8m*Xg1RiC1hqLOa{a z993mb-0WRV<*Bqe9|(w_AQwMLP4OZCmskuf_^Ay0;RWm@6cukVcrqCv+W4o)mD0tzIKrA z4mce%GkkD2_p}9E$5cm&&vlUQ4H!P;PNlmk!--imXYQt(^D=hP4SN2*fax=j(d7sk zk>!r|nbH`buj}o7CW633uyFi=vcq&g(@v@eNX}u}jW;6GegH^wMtfj4eF!oiKy8Ny zdyYrSu=GK^N_8BjZzy`29vZTG&+*1`jd~YVXqxugG$AM(y6oY@^hjz`Im_(b^q>!s z`xuE+dJ!t%Fy3!!ujRK}2u1RJrb9?7l$k>9?o4@Z@tJsT3Ahnz?xH$C!>J*;AB)yL zaCjGGq4lWdbzvfamH^4SAHgvyi3@%11N4~BV>2PiLATAp1Db*&w7(OX|f%5nzn#?a#0e^?8`4yVQuhK$f(M$Pz z)XcBbN@UZU_=m{Ue?&d}V`St%K^Fc~WZ=I*w*3a(#J{53`Ayo(zs5J!Z_#&QD`UDQg!GGq-{5LM?%k<=|J9i+`*#_#K$A_m#TWez-G^0sRe|cqS0_i+Y3dm@O+Bj$ z)iG71Ey)0q>GSDxaF$*&ku(;tA5PfhTWNwey&j$gK2L^WHaU#9j450|Zk&4=Pn9v1 zg%t+F#HvmTXp3XgQaICTTqxP2I>1GE=v0)a_Hr>=4ysnya|xHif-O*2XuIX2S?XFY z<8ru$y^vG|;0*OFWoTz2FLy5{EuDIiD|tF>+UbzHAK3H`T$S8`XOJU-;~nfT3GRiI z_c0Y1T#f&ILb(Q?L3|tuwW;m*OnU;OF#XtXmiUAUaUo}ZNd6fg(Om5xFfzMf3@pE% zgu?*BGe4lLa@`7iKogbVgy7(4W)cvMwcmDm4v58%rXUao7)*15%|vabN9br9o^hWV zpr;$ln#zyPgnf18x$>O%QlLB!X$tbI0eWU9WtB+dSwwuN=+<*`BaYE1+$+mx*cakT z7w@aPAsj$hANrZ{HiiLBs)+e}uk;=Z5Fu zKaU-x`x^Jt3j_3G>XF!s@x+#^1r#;4JBh)D5U3St&f le!M>OV$3LBg2z0f@qm9BzY~1>ta0>R)UTkH|5pY6{T~X(b`t?wiR>Nbvtz-n+}W=br7J z<-U3Tz{C59XtHW`(~~^cl*4nS(`fJ_ zlNY-wk580-lRTQ`(UQYUc&VG0@ku5xm-opgpCa#8gHLtSaGooV(@b6=@6$~VnY>cw z+vL%1a#-H0OkQpB8fix4afZof$~$UuM>ajfohEmg+->q%CdXtT?#AW`lY6AI*5tG0 zz0TzI^4?(bIr9FV$>(O%Q+%FKdcMgQNasS6FOv7gg8veezi;xTCSPXqyJO@2VIZ8!Nr zA#jJuzcBeBlXsfjYw|9WcbmLNW*#{5w(oQfd9( z;5XcKBfn|zTW-3UfA8i$@Y^Q;(cpIs{*#+-<#*k53%@6iKZ{o0m&ad(i4Vj$F3F*L z_(PNbDkE>p$lv7gk-;Ae;NK1YB!}+hf0+DFv9AwI{+G$08vL1?9>i{VVCZuJ{dW%k z$Hw`E!T;l?-Tb8x^OZcl7J&cC;~Rs&l{f7CfT-Xggs;d@Y$(N)Rb5k4+uY1#)pd4; zV>QuGJRXi4%E6RfAL$G?CqjuZz(Q?p;dq>BSbe0UJ6cs!-5psRip9gRaW;Y(O!;j+ zu~@h>(HQCo$GbyqSmvoeBeXVD6%BQ+u4+!iBAu%N=bpc$v1Ub6?Sk5qnDXY^trg8J z)h%^3Ot3b}t?BBFCqkWxrJ-m~*nzX^WGYNSHr2K)X=+^2vV3u^OqrlPHPu+%pvQ7E z5HGH7s%~f&$UM+k+qk4*#nS5fCABFEa#rxWClQHO#low@>#CAd zAUr4B+0)SnX|;#jqM=wQ5dpEloUyPz5>Eg=yE(GDGnD9wK@wvRnVwnSR#h`EjbX-Y z*j*jh;CylCEQw&pryiOh-}-t+Mu18kD`^a?qJr69N4Nhbk7E=B*AV7G#oS`Aaj2%8MT|pX*Og z3ne+-u`aP2p@gZ*KhPXX58ZZLpVff?XH+lDg%!4)*%0bZlAINZH=h~lW-1yC$~p+wu7aBMJxX|She7z$Q9BuUA9 z7@1fKQ^}x&=u?#f0x3o)wz_3~H>4&lIZ`+p_+OME!rFCh;ch_+cn6?xMo!6??mKX< zZkTBYq#26E#)(kFop`AT9+sYp+n}kg-Gfb-ax`qJVN7!F`zVByhhH(2%U~xwVw%yE zbusw{Wwfm-1p%tfPB3P(X|7G0C8&U~Gk{V?G(RFXoWdIEs*-^jrH33WVC7ZdF1!{R z!~xx~!4{sQExJKa+wM!oWq(nzJ)dLGh&f;)TMRGh`$l}Hi5l2LTqcuCkm0RX!Yqc_ zWP!@LJ*!rQW8wCuaHu^T1MY%2Y_}V}FeOZ^VHj;zEFABNCZM2In$x^K6q-?{;`)Ba z7uJzH4@Vv%1MOUF&mnGQ#9-5!(b+K4ED2o7fXhcxgD_(#c+^Qr-5pNKgSsyh#uN|F zi-3JooTIow7)H`2Q>b98?E>NwF5?DI2g4nq2u?<^e-QK44h_Z)A-U602c71wo>*I0 zM1wujGnL{MEqb5+!bBGRie6yac$&X89w_y%jl>c?p=jxx*0{e-LQHGCbdDd9CJ|}V zP5<0w)r;$b!P4(xw7nFKIetH!+)P>DH#w*E?6TGXkOWF+1M-yCvs(kFmX(%{$52^c zx7F{j43xH(`mt7TCfm+xjZd5*jeteJ7SbjrNdwAK*#rOq|HO6J_mqhh$5vO&4^^xZ z+_L19*76yrTJ(E*!BE+ja;qGR-k>)vdW+t~+1H^~2d?T^EVN#vZ_yvNjrb|xd+O9}@z);gIb*u_9jY)+8 zpY~kgc3*{0gZN@$;l<|%Yo&&oVX2wQg6w2taN6DlxuKE00E(R#N`xSjqXxm%H{FNN zP_ryGTV$BC1er}uS4T&vvz=+eAgeO~`qqO7ErG#l*Ham=&bBonu$>jx87hPXDb_?I z5NKWJsxCOgL3Y(vIYs2{Ytx{<2w?k=T566u4i?Z_ZmDWDS6VPjM`dLtMCHTrX$ZB& zx_ko=ixrAvfV|FiEc?PWBXR|dP9=r)%B>T~@ zc0n_33qWF;*M9;wA_l}X5O2z~bYdcw<(ywv54uMWkX40GW_*2srGr59-!={F7OO$* zfKM3QCe!ojMR{|>@kDxpX|Nsp!=xAUEQ@EW`H*uPN($s-a;_K1C)@4#(QfH|; ziD90U?~cb)IT50@rA`p1nk6T#at#Ep9m9ZZ1Itqr5-9ByMD|=Lk9tcrsCSQ=pp31{4K7w&@h8zOSbo9!uuBa~(uk8$XtoJXD zhSrB;zHa?0_cg)cbanVT!lgE0zFEGBaB!z69K@NTnEbRawvPd{aL5+P+89N`p%Z;Y zPAZaS6r9QWq2CUv1U*l0s)6n7%F5I);%+)~9t3k=?P|1jb#&{@sbbJ1J-y4JHSnMn z7gXVZo(`$UY^lsBJsD>ho)x+tit;fnHJc{{B@-?$fea8HazrLMHE>ML;j?1+?LTZC$1P_A$hksa?@2`>rj zl z+=N=RPzLI&o15(cQ(s-^xva%Y=GMz)iLtn;ZfSK3+++6QrbR8aH7&KkX27I7x)ba5 zW)R!t!wWT|GO#tBDqca;Du@T+VRfvlryFw9$vw`sNMfKC>x3(W5Zu>@Kq0J5StXMd zh~GcR+6-(dK*{>E;$avDNXWcJN*WdDi6pOwVDxqxVrLyr$s+roo%QiV7}nT>2!u9a5XMUfsdtd_!1W>XNSdY*3&SPJW!k(<4E@eVh5-AG zXR4s@v?T@5zfgbxj?F}$gw8;G*b!lJFy;oX6-eBNXsP2qrzNJ@GH}Ucm*53S3R0D# zz!#>+k_EJknowH1_)sVxA{Tw=i?D3qnjZ;A+i|iyDQDB?Ey1KSu7i;SaB}MV8EKzs z2^M|t11wqaYt_*xTzHZYjSU4y6q$}(y@+2L>Ob^~V1`hMON6*28FD#Ln&v}B#7OZ* zkerb+f)v*No00yob??^b#?>jJBdz z(Em+F|F`JBn$dp^{ns=4zr!ljl^P#PO8rJvsd1r%1l~XD_B+6hVo|qIFX}f+M!a(X zgQ6SH574`foM;g(3hYA7=utaS<9VDr$rbQq?Ia@*c!*rP$=pfV(lm6_9oS1b%Xg8r zlXB6_TkaXMi}H6;LBO$-JOSQGg%9ctKg2UYZajx#n+a%DQa&9+#WW3qnoi{uL~AC^ zquEr4zkda!Ws^gHqmR&I`k4NnB((}}A=L#!3bv!6NH)mQgVh;}U44r`p?@S7Hvn1z zx*$*{gg!*MWqW9-qGf4H^GNQVYsp3PLFEFCu-IOdM2O{DsBrp{i`l3hQ$Yeyt0T*L z;k1Cd@EN+Y%v0P;M{J@C%RIw+$-9Y;*h|A9vk?F~(lZi|UK&+j<{7P_CPR#R*5kuW znO;0bPmXb&-b-U;O^Lk*!rexD27~XVafiZPFVyU(E9K=m3Uq9y^Zs819h0Oda57d3 zR!x`VJ4hNo=!*UXm3hYZ(u7U4Mr;Jg(DQ4miy(>8UJ7g`Q}lx=hzUY7c2N2DGEW7j z`Z|@FovO^v#B^r|9lgD5H%-#3(DY2!8w1}IbdE`NrlK<~)tQdYv8hfFof*257uZ2F zchamKB+#?_#^&^m9oIKjog9O_0Y7uAFfety5Ch9{Xmfp$CZk;sD{G)4YNS!Lh$hjA zG=rMxOlqNxw3N2eGJ1ecf+IN@NA?stK&SE;I-LU);woz6nH1()TE!<&gq!IMUPe(q zojSOky10Y7`7Da@28#1})Wet2TE2?b^L6w+zKPD|&2%B(Nf+@px`emWrTh?G&X3X+ z`~+Ri&(k&hqI^W78~Bg3k>A7TvybT}{tTbbzMxHfkT$CK9Y)2IrcbB}j`dse$KjS|VPRn|ya6tJlE?EcoFF;dp+GOq-9#?u zeF0C67OQT~OE+zG6Q6I_~RJ#C#lPqHSc*-IPuDl85et zo4TJyLiD2vI-_4eRlRUeyWpN4hC|p37xfs_^f=V?B%Ml6(F%Gd!|#MN+oaiclbP*y z7rOBWtfBNuGWt0jp$q%2f{D0c!ART86%7c6nAWE!SN=V?}ws$Y3WeMJrdgmQ_4NOFbv0R_fkz-5bAyPEI+}Q{Z|qwM;xvD;{vS zy*NhOHTY>7JiEfPLJ$kO(+4039R|T}TDgfP=|yb=7PTK{kp>SB0AF=@@MRJ=;48;e zVC^y|+~iKOIbWS3evM81GEZax;xi6|IB8gB1rVNDo}UMS?sq(DH-b*D(-ZBbj-boy z3TAn;_DwY$Q_Ui?$hgC?$(vPVP6}pwv-JVZ+UB@Wnng0=>6ArouiG)n)1^tl^h%6( zBe-p*F&SDpD@|8QAs!XX!GB9Hk74;{8lu~AjcS_Lz0bAf|3cz*J0}Hmyl&T|pta3j zFI@~;-W*RtOR~_LW4C)uXnP#yb3AMH%uqdpc2B<1H+8n2nxv=D?#WNC%HU?*KyH9@ zy$

Xq9UI$H|yyLob~Z%t=}2_ps8Ng9oIb39*%0<+YM(KgzQPXr)%2E32&J zDq-wAEuxVEdsvwBHOv&TBF_c3NoBBbA+X7mjZ~iy&qcwUZF~nvxmbhuk%0{{g0SrI z<~W3UzZ3R8R_IJpoe65EJp({P1N2jvoMR`({;z_;|N6RlRE}-H2Pl*Yx{!$B*Rg*yOlP zzqdGN%iB4}d8U3xoqFE6$@#SI?{|Kt-=DiC%iB&>_&1b*FMk&)`Fp5m-lro_HH<>l zFdm7_L_~-nqQHEl>Bl2QZ=p}92if-7hzA!V23&!dcO#-+FQUh8M2+VW9X>{U_ynQg zD>}f#=^!7;4)(K?r?88U<1C)fZf@cnjw*!)H-HzHXG_-nC5mxf~yBD%3)*R1G{4SE5I& zR-UX@@)Wg(r>YoFQx|biUClGpZ9GeD!`<(0o}*snOVZsk;4ldqxpD8 z3D-Hw_yk8aH#in@qhk>-a)i0b(Z$V`UgP)~M;tpi>Ue}Z z9KYhT9ItWA@izB3KIFBIFL*tQuMJKopXO(0L?ZO`iGSd{ldpF^#Wy(j^Nr4z`6lP5e6#a&zQvWrx4L}%W7lN9(>0a1 zxTf>%u33DCYYrE?YI&<`0pG3T`n8m&EXM>oh+H5?<%1_e%W_R8gP9fO@GFi^=*CHI z?sZ(jF3e{07RO!Ck(09cE^uZbCouSK@M)rD@C@;5XL z{cmU#`V+pT(Ry;oxV#+i@aa>IDVdyAFsxu$Zf?2$^A&mK8eH%dnFm1`ehHCAN+1K3 zrQBF2leEhO1g2kACKa779{gpJaQ5h0Ook-nHSDFEmzO&xl{;~4f7Do!u1Sl5fcQRg z@y}@(-%q3Y0jj`Bm8>dYqfW_#s*>^;P5H2MCz7QKQn2=7$c^Pj93!aIokBNCX?1}v zu#*)yNYIsdBPiYE*{ppEvZ=jv%ksT+>+-T)blWcaanR|Qn&m|-`N{I2Yri@&;C1by zEkVPJ@}zt#WjQe`mC9DySd_JyuGRCm2TiZJpDsjZh7z*CYf7V+?$FzNO(adpOyJ<% z<$LH(rcE>jAO(Bqr?`YM?dm!s(%c27=tVBK6>mHCZ#&poj-}gh+ta>>?p8>w@9DRC z+rfqkje0XxYMOp#(}bL;|FV1c(0%Dmg_r4DDdcrYiisqo19A;I z9YT^{X8byqnR1`uHF2L2%uaEx8@+VD=DggSZL=o31h-Oa|6Q=gv7d_M<#|A>BRk;P zj*@mSJqWxqzKeDY!2Ju2yCQ{KU!=$eQ??>aOG?+5A-5_xr7gQ@ zE}pnM;$F(-T~x$-XbeA0CHx3Y;e9lXAEUYaIGuoEvx$F6OZX{T$xowz-H*cc85F9| z()s)x3ey+pI{r0^(3kMj%$K3sSLiuJqZjy9`iNhnPxuXd%6bz~mEb22wMXH@k&~nfeRmBdQ_IRE^S*jg+@B_|J8{oUezsqIS1u6fdE`aO;@HA!6st?%o4qTqvfh)+7#PJUH zm+G#E3csZigDdgx02Lazlfc!$NHVooooG*B6b_jUK3Y6AKy!1C{hEA}zoD7hYr|bn zf-v+HoH)=;{)%!dbZg32G*SshWn(0uDX=d#`52IjZ-pQaPLaofX%i$ZFWXDIm*Wm| zPcJ>(P~KRvZz_DAtH@R4yn})jMW_o<(Dc&YO}Mg@#v@3v;0MuqRIGhJ4Z)eo^%}OZ zU*h6z2cMP^@#)&Sk@aLlZiSGK7j{3K%G3xtMvbId(9>Ksni?_QqDr*pn?TeoDuAXT zcPgPWE#oX2LbZsY(;?+Ts@5^oNyRi<$56QySf0`fE$3rJD=3xgIfxZX>qjm}ZM-R6 zlt^GGCj2%G0S%&`fq!;zL|B~oH4Xa`VMAXDLvmN}Or8Z4kQ|*33CewE@m|`8O8YUy zw8wYR?F~EViC+3;`c~8f_6a|pG4XquA*vK+7tkz%kig=8-`1hee^8eyD^SG{|nq<7pnjO diff --git a/out/production/InvokeGenerator/impl/Function.class b/out/production/InvokeGenerator/impl/Function.class index ddfd08e68aeed56fbadcedfcfed512d131f37c1e..aa69493e99f133b8f4eea21a9965c7d814ff5c16 100644 GIT binary patch delta 250 zcmXAiO-n*y5QU#txF33ngt&ESrKM6DYHH;|!<0xDg7iTUEn3vV;7Tj&2e@!Q+Yp2n zK^q~1pndK7O%2AtVdgn=X1;=-VD@H5heWg>FLOKH%FeMquyQjc5q4GAu~ieeB#E;@ zz$PiJ9nzH4S^ZB_rlONeM&eG;=KB0O;u>HN60=895AB#-gB4Db{&U9 zJ>9^ksb-5yj=ATAN7_8oVWRyDT^UC|mrhyXj2!2>cOl)_lev=bSk2rlUIpHkb&JKF U{CaD0?G;Ra!KcbY_~x&QzG delta 242 zcmX>uv0GxpYBtU+1|}e6U{IU9g-z9b1CYhUUf5`zSTGJ^^b z8iD1&Iv9)@On^KN2D!;H>;{aQlNEV{CnvCLGU|a@bJXRrktZOc L6ceBPkvj|kgsUpi diff --git a/out/production/InvokeGenerator/test/FunctionRegexTest.class b/out/production/InvokeGenerator/test/FunctionRegexTest.class index 0c589f4a798aad3c646199f5d72171c26cecd237..42f361496e9e2af21790d533b21cb5e5c6422f0a 100644 GIT binary patch delta 298 zcmbQoy^VXrE=I;#lXo-9vK5ykmSiSRzRc*ZrLCc6A01O3qZO;I8Ka@0r==OAsS#7G zm7JefT%u_YV%o+O8vt38ZJ2^0BNV^@Vt_(uUS^4Ner|4JUW!6dYC&RVkp@Uep%h5y zfMpd*5{uGPft;lL{2YbijLfu>z|z#xRG2PXg|x(+;#5uR%@3HCFnR|tFflMPFfd4I zZD(NA5@OoQz^o<2vXy}q$lk%gwv~Z>BT$x!K?+C;F|YthULYyRzy;(9Fo-Zn14Vcs uCQQD_;>s%yl#u|+O9G+vWM$SUMLD2|Jd!$Y22}<%pe{xRbs)*apaB4WX+p06 delta 254 zcmdnSJ&$|CE=I=o$-5b4CqHI%QqqWyDUZ>L)z*yB(9qM;jM3E4h$&9a&nqs`w2vva zjVU&m?9UVw6sQ0MWtl}KrHMHTW%-#Y3Moa2S78U|_AV`4`g?M&BR?CI&_Z1_l|e?F@`sLQGp3 zn6-phwlc74X>DO(-oe1Om4SUDP@aiF3P=huumDMJAj!|b#UKELLJZPC5gv#clV7s9 f@`?gw#25q_#2F+RBqv+5MzP8OMPw(>VwC{^KbAXk diff --git a/out/production/InvokeGenerator/test/api/TestBot1$1.class b/out/production/InvokeGenerator/test/api/TestBot1$1.class index 32c54c4f50ff0367c578384c6c3a6d8b19929420..5c6a354af1392b05d5b8c38ac1fd799daedb5291 100644 GIT binary patch literal 3687 zcmaJ^d3;n?75?rdGjB4yB*Q=mQ?|5(k_1AaK%oiJlCYRI2}lA6R`F%#kvy1rZ~Ep9 z5L~KOTi3d4qiC&5qjhbB0a|Uf(yDd0?)$#frB(l;zgGOtn>SeqKf{lE&pr3v@9gKk zdHlZ*JOp4Z{!@kZI3&YR4A)|~3KkA)I1)n`!%<{p&c?6|wor}?xfpJN8%17bFNOk+ zR^b?q$2g3{Z~`xr;pJ6$1zsuCtyOpxUMjm}=vUuYx zya{ifg}2~N8Q!YlZF2DK8r~7bJ4KIoMe*(`ya(?U{#`+7v;SZT1zigQh!R3}(nl^f)Oa zv)6DfSqIEYk*)v*z1y};w<}}h^CmfUGo>|(KDuM?p+a4*X?O&UHMq9zNGHu!=GKM|W*6+ENJ=9sSGHFv3tfqmfBfUn>cdj4*G3FJMT*Jqi zSj>ffr{Jc{?Un?jx*X*GXoYqmq8HEL{rN1q z@Z<=Eoz-y;4`_H$#~1KL9S`AQ4P!dKgfHvZhetGgMaOwOs^c+yRm0bGd>xPL_y)eo zut{>`$SQI(Br6y^s~x0;8HLdNUd*JI^9<}tIg ztdQgnt8Qj0E6kpONyoSaoAop$q$5Pka>FUGFzQNqXE|-Vm~ zILGHrw}5>hC-!7$d)?(MV5caDz0@*!gPNC|TRW+FP_6MGF55H4P}?@UK>tQ#b#npE@8S>H@d{^SIa6Z=Em$1HwIqJ4EH`%Xg+9 zpom#{#*(+>lEM`eJ^7M@e%qz7eST(&8+RKiUYO!WVGyuJboLPgrR%Bm%$N#bj4&mS zusbHok@tJI)P#UdmVj{Ra4Tr);*20wE^YSOu#xYhNq$TYFbuZ8n4VfeT9!g6eV!`R zQlA0#*In$Sp5@Tt^^>8SxEfGkc;_m(uyS$R@_(?5qb(5 zs%Y390ca1^pVPadq9UG-r^hju^6FNMV_p&UE8?+utZeCgTDr1`B&Wm`C3->G>VdpH>`qOo)$l8gi=5<>YWmbGhR7oQxv z_$Xxs$0mW!PXH}z54Q@EI6iST)se+=Su}C6&)*tH^S!7ePD}ind!Q%7m3KeJ;O-6l*t4Fao8F>tK$*^$NaEfrc>m;;fv^_F* z@x1KL74}(N)2@+Vo~+$Bc5$P)G}+2jiPxOPx*`@zC@cIVv>8I+Du!|?s`)!$0hV*s zgdVhDFIMtb%PRVEHBMp;?#4QLb3H#+HsEPy{snX>9h+1wHmkL`UTww=Y7e%k{n)B* z#tvoRMs*lBDHnaJfPQs52K+R+lSwm5sW&kbHQa_IrS-BLj!}LecJk+rLEVH`N!+Wk zi|3+h5$_65BW4sYz;05tNTHv*5$ZKg^c}o=AHU=LyOM4}Dn`|<*h72xvZ)jN0^G@} z*sIpyh1gF&9H1_J&@WPKSi_4n+^pfn8eXE|An+Wn^j8NjVE!`*Jqv!M9efsj8eaMw nmU8r$8%R8Z3LdzCI*vp&h#JBmHI&YfhKWv6G3v0MGynbvSq-7m literal 3542 zcmaJ^d3Y697608VZ(d#|$s-W(L9sysBw-1QLJ5l{fwZqADJ2Q9ae+xPBm?tip7Z7r zQneMO)vDFvj(dwXtxIcTc|g%tt)SN3T6eAczV-93_G`u8nVD>c&-Z<~_uO;O{hj^Z z$>aZd_z?gb@N^kA;h+pd30#HYGFUjI;cx<_7>>i1Ig`M0I6}EHWD|Hbyf|_R_{hs} zL^vY}9K~oEZo+F49A2Bi>u|FSx0K=aI40B^WO!p7#}lZ-t#RBY^P7bE<~VK_?6=6` zt>t(d?kLCG@eUd8)Nn!s->KnUqUhamyhkj0ZyfI{!~1bkHa{TL2ZjBi1gQ@T^$`L4 zs4PDw%e!Q_JC0Kcd>o(9aF2#Dg~SoVuFF`S=Xwg2?foN0)@teq)>{-}{;-v+TdOd) z-8XZ7lWcaAXmR~@vc1)EEPuN~UHxVDXM#2CQz&V52Tg^lcFQq4^O=6r>o)pra;n?i z0mI&Bc$TaqW{D_QfP$WO9MfyHja<$or)IXYIx$CgogUiL>Y0WwYU(2kgt;ZqpC?7R z>3jvvb-H}R<3@44NO9ff85ts!nU0wmmE#IUR-MAU_Cv-IqbcuOc2n9nJ;QfBi9^;l zM$Ksf+!L(1Q|_2~-!tqGqjJD@>4D!t|H)3|f8a}P#Gq_)2K@f=9rZ8xo=18qr zT&v>&d{)PU7#HeuIv&Dl4Fw%%a8_Z_>hQP2G3-&%T$?en5l_Q89S@88^D>+f&7art z1w5kRQ5|2zmvnp?k7>A9$5(JcM=vgF_^OVt;p;jc$2W9*6BihMNrXTfIa>2AoMw(| zSCjlUzN6#2_#VU3F&bE#YfgxZXLWoZPiXjojwkU$#!knN@M9f6!B1H@VS9wx)$ubt z!Sf+c5-f)PTtN~47x*QKgodYd{0hI;@f$p*C$5h1K=5s&q@k zEY?)vYD1>qJ(?90>l>yurtpY61Md3%L*@Wm`TxMheK%|kHY@R_xe+uB5$6WHnGUe& zv*M0T*K0240I!9z{t@43YU%CXL1}tD$YvvDNcrAG^P}Pj?@n&euQ2qLlYT{QT@|LR z%{GRbb~$;*wyY;-dTA#s5uOtTVRD-`#|gI2u=7;IJ1WiGnvUF*BExHJ#|#91~?8^}8(bR^00h zDod!n#sGO!j>?+Ql>!}{iLe*c6M0rn1U*5N&}?3GQVD@naM4Od3)oB!gJMNDu)_Qq z2d3T3+OU!9q|rg#`WPxFSj;SqsI0;;OC!^S8C5V*ceJyLc6Rd$-NVb$w_L_cbcbP{ z&KHA2t^kGwp6D~Zq5bWKCpT^~IyAA(1My7wE>L|ay3=zV#?Fo zZRrzL<&j5x{=~+Eu9q=_nowAAnXYNMO#h*l-&$Ak+p8#$&cE0y7 zCAAqvDCS(%xbieqSlDPW7wiM^E4Ul+v73YeoiD4WE+K z;u3wJ4*d`y!zsVS&>E)BH?ycHzsOoMjFEvKYSKeSIZkN}sDjDtOreZClVh1ec=;JP d7z7w37~&aZ7!oG$WAb55X5eB-nat0u0|0}gE6xA_ delta 146 zcmX@ewwrCjN_IY2(PC^=*5OIA+Pv88M(wtOlMg|oPpOVz# z5`Ca@{SY9-DZj+f8mi1Uv#2P)$XYXuk%13l%rizg4k-4}0Gxv=tN;K2 diff --git a/out/production/InvokeGenerator/util/PointerTest.class b/out/production/InvokeGenerator/util/PointerTest.class index c00cec3f54c730390cd16b2b8c137795b389b457..0f082cc9c5eee4c56a8e3aa535adfb6eb4b21b1e 100644 GIT binary patch delta 843 zcmZvZ+fEZv6o$V&Go6`EhtntrMG*y2N3jTqc;ZkjiXtLY#6b;dv>_ORrXq<~eFj5f z0x!Ug7a$2#jXr=E#&_^N)HS7QFSyw2@b7>9YwfjvCf>P)Z@)f$1$ubmaERVGOTr$g76T4(dTj-eF%;vVk9mXy0 zT1+VFQZvJoW4&`@6PfhX=VW|!uZ!E%0KX+HIOVewfmufXL2GYaLqJS22ENyloS z^)-snRQ7335liRuFY*?%E{}M;{Z{K%g(lenD49W~5Pw86jibaQmf^&<3X&8r9f^J$$1$kdSMD{+9LT|Qq7{PWRnskCiX-31+lsC?+;TLq6&Vk w`Gwk0_v(Vs==Z!JjCluw(DV)lq2<*Fq3tyUMH;u!qMue3E3A>MTQH5DKkQ#;;{X5v delta 754 zcmZvaOKuZE5Qe{=8Be#zofrn}01inY;gLx~9zX)&kr3Ws0>K32B_Jdumaz9BEFqZ- zWW&NCl4C${09Ncc0QUf@#|FIcNK@7I*I$2CP0w5VGxzM#eNGM}ZuLQcXn zhO-fQ79&BHBF=GMvm9ZVH(YT3qT!PBmmOn8vue0vSTkHTT#LBQ4b4r>t?gGYRj@4i z`VTcTRbtpO!~xB1%N_12{MRquSjvoBPB5vtXIbaIVyOPqA1W%aJYYki63as>mZOZ< zpL>f&^T@KvMq$*1D$M< ziK7;|*otW}(Cn8?+6*=@vHi<-MA7T4GbmnGm%)eSgN&rZ6g&OgFw$S1G6_>MkK1q! zy{Vc0Eup8GN$s>8a_jxjzM%YFr~X~t5<%KyRDU5~_2WI2Y7p valueTypes = Arrays.asList("Position", "TilePosition", "WalkPosition", "Color", "BWTA::RectangleArray", "PositionOrUnit", "Point", "UnitCommand"); - private List constantTypes = Arrays.asList("UnitType", "TechType", "UpgradeType", "Race", "UnitCommand", "WeaponType", "Order", "GameType", "Error"); + private List constantTypes = Arrays.asList("UnitType", "TechType", "UpgradeType", "Race", "UnitCommand", "WeaponType", "Order", "GameType", "Error", "PlayerType", "UnitCommandType"); private List enumTypes = Arrays.asList("MouseButton", "Key", "bwapi4.Text.Size.Enum", "bwapi4.CoordinateType.Enum", "Text::Size::Enum", "CoordinateType::Enum"); @@ -27,6 +27,8 @@ public class JavaContext { private String packageName = "bwapi"; + + public JavaContext() { javaToCType.put("long", "jlong"); javaToCType.put("int", "jint"); @@ -40,7 +42,7 @@ public class JavaContext { } public String getPackageName(String javaRetType) { - if (javaRetType.equals("Position") || javaRetType.equals("TilePosition")) { + if (packageName.equals("bwta") && (javaRetType.equals("Position") || javaRetType.equals("TilePosition"))) { return "bwapi"; } return packageName; @@ -52,11 +54,11 @@ public class JavaContext { public String toCType(String javaType) { String result = javaToCType.get(javaType); - return result != null ? result : "PTR"; + return result != null ? result : "REF"; } - public boolean isPointer(String javaType) { - return javaType.equals("PTR"); + public boolean isReference(String javaType) { + return javaType.equals("REF"); } public boolean isValueType(String javaType) { @@ -185,11 +187,11 @@ public class JavaContext { ", " + fieldName + ".blue()"; case "UnitCommand": return - ", env->CallStaticObjectMethod(FindCachedClass(env, \"" + packageName + "/Unit\"), FindCachedMethodStatic(env, FindCachedClass(env, \"" + packageName + "/Unit\"), \"get\", \"(J)Lbwapi4/Unit;\"), " +fieldName+ ".getUnit())" + - ", env->CallStaticObjectMethod(FindCachedClass(env, \"" + packageName + "/UnitCommandType\"), FindCachedMethodStatic(env, FindCachedClass(env, \"" + packageName + "/UnitCommandType\"), \"get\", \"(J)Lbwapi4/UnitCommandType;\"), "+fieldName+".getType())" + - ", env->CallStaticObjectMethod(FindCachedClass(env, \"" + packageName + "/Unit\"), FindCachedMethodStatic(env, FindCachedClass(env, \"" + packageName + "/Unit\"), \"get\", \"(J)Lbwapi4/Unit;\"), "+fieldName+".getTarget())" + - ", "+ fieldName +".getTargetPosition().x " + - ", "+ fieldName +".getTargetPosition().y " + + ", env->CallStaticObjectMethod(FindCachedClass(env, \"" + packageName + "/Unit\"), FindCachedMethodStatic(env, FindCachedClass(env, \"" + packageName + "/Unit\"), \"get\", \"(J)Lbwapi4/Unit;\"), " +fieldName+ ".getUnit())\n" + + ", env->CallStaticObjectMethod(FindCachedClass(env, \"" + packageName + "/UnitCommandType\"), FindCachedMethodStatic(env, FindCachedClass(env, \"" + packageName + "/UnitCommandType\"), \"get\", \"(J)Lbwapi4/UnitCommandType;\"), (jlong)tableUnitCommandType.find("+fieldName+".getType().getID())->second )\n" + + ", env->CallStaticObjectMethod(FindCachedClass(env, \"" + packageName + "/Unit\"), FindCachedMethodStatic(env, FindCachedClass(env, \"" + packageName + "/Unit\"), \"get\", \"(J)Lbwapi4/Unit;\"), "+fieldName+".getTarget())\n" + + ", "+ fieldName +".getTargetPosition().x \n" + + ", "+ fieldName +".getTargetPosition().y \n" + ", resolveUnitCommandExtra("+fieldName+")"; default: throw new UnsupportedOperationException(); diff --git a/src/generator/c/Bind.java b/src/generator/c/Bind.java index 436ec44..065999f 100644 --- a/src/generator/c/Bind.java +++ b/src/generator/c/Bind.java @@ -27,6 +27,12 @@ public class Bind { this.out = out; } + private JavaContext context; + + public Bind(JavaContext context) { + this.context = context; + } + private void implementBWAPIInit() { out.println("println(\"Attempting to init BWAPI...\");"); out.println("\t\tBWAPI_init();"); @@ -48,7 +54,7 @@ public class Bind { " }\n" + "\n"); } else { - out.println("\t\t\t\tprintln(\"Waiting...\");" + + out.println("\t\t\t\tprintln(\"Waiting...\");\n" + "while ( !Broodwar->isInGame() )\n" + " {\n" + " BWAPI::BWAPIClient.update();\n" + @@ -68,14 +74,14 @@ public class Bind { "\t\tprintln(\"Connection successful, starting match...\");\n" + "\n" + "\t\tcls = env->GetObjectClass(obj);\n" + - "\t\tjclass gamecls = env->FindClass(\"Lbwapi/Game;\");\n" + - "\t\tjclass unitCls = env->FindClass(\"Lbwapi/Unit;\");\n" + - "\t\tjclass playerCls = env->FindClass(\"Lbwapi/Player;\");\n" + - "\t\tjclass posCls = env->FindClass(\"Lbwapi/Position;\");\n" + - "\t\tjobject moduleObj = env->GetObjectField(obj, env->GetFieldID(cls, \"module\", \"Lbwapi/AIModule;\"));\n" + + "\t\tjclass gamecls = env->FindClass(\"L" + context.getPackageName() + "/Game;\");\n" + + "\t\tjclass unitCls = env->FindClass(\"L" + context.getPackageName() + "/Unit;\");\n" + + "\t\tjclass playerCls = env->FindClass(\"L" + context.getPackageName() + "/Player;\");\n" + + "\t\tjclass posCls = env->FindClass(\"L" + context.getPackageName() + "/Position;\");\n" + + "\t\tjobject moduleObj = env->GetObjectField(obj, env->GetFieldID(cls, \"module\", \"L" + context.getPackageName() + "/AIModule;\"));\n" + "\t\tjclass moduleCls = env->GetObjectClass(moduleObj);\n" + - "\t\tenv->SetObjectField(obj, env->GetFieldID(cls, \"game\", \"Lbwapi/Game;\"), " + - "env->CallStaticObjectMethod(gamecls, env->GetStaticMethodID(gamecls, \"get\", \"(J)Lbwapi/Game;\"), (long)" + (CJavaPipeline.isBWAPI3() ? "" : "&") + "Broodwar));\n" + + "\t\tenv->SetObjectField(obj, env->GetFieldID(cls, \"game\", \"L" + context.getPackageName() + "/Game;\"), " + + "env->CallStaticObjectMethod(gamecls, env->GetStaticMethodID(gamecls, \"get\", \"(J)L" + context.getPackageName() + "/Game;\"), (long)Broodwar" + (CJavaPipeline.isBWAPI3() ? "" : "Ptr")+"));\n" + "\n" + "\t\tjmethodID updateMethodID = env->GetMethodID(env->GetObjectClass(obj), \"update\", \"()V\");"); @@ -83,20 +89,20 @@ public class Bind { "\t\tjmethodID matchEndCallback = env->GetMethodID(moduleCls, \"onEnd\", \"(Z)V\");\n" + "\t\tjmethodID matchFrameCallback = env->GetMethodID(moduleCls, \"onFrame\", \"()V\");\n" + "\t\tjmethodID sendTextCallback = env->GetMethodID(moduleCls, \"onSendText\", \"(Ljava/lang/String;)V\");\n" + - "\t\tjmethodID receiveTextCallback = env->GetMethodID(moduleCls, \"onReceiveText\", \"(Lbwapi/Player;Ljava/lang/String;)V\");\n" + - "\t\tjmethodID playerLeftCallback = env->GetMethodID(moduleCls, \"onPlayerLeft\", \"(Lbwapi/Player;)V\");\n" + - "\t\tjmethodID nukeDetectCallback = env->GetMethodID(moduleCls, \"onNukeDetect\", \"(Lbwapi/Position;)V\");\n" + - "\t\tjmethodID unitDiscoverCallback = env->GetMethodID(moduleCls, \"onUnitDiscover\", \"(Lbwapi/Unit;)V\");\n" + - "\t\tjmethodID unitEvadeCallback = env->GetMethodID(moduleCls, \"onUnitEvade\", \"(Lbwapi/Unit;)V\");\n" + - "\t\tjmethodID unitShowCallback = env->GetMethodID(moduleCls, \"onUnitShow\", \"(Lbwapi/Unit;)V\");\n" + - "\t\tjmethodID unitHideCallback = env->GetMethodID(moduleCls, \"onUnitHide\", \"(Lbwapi/Unit;)V\");\n" + - "\t\tjmethodID unitCreateCallback = env->GetMethodID(moduleCls, \"onUnitCreate\", \"(Lbwapi/Unit;)V\");\n" + - "\t\tjmethodID unitDestroyCallback = env->GetMethodID(moduleCls, \"onUnitDestroy\", \"(Lbwapi/Unit;)V\");\n" + - "\t\tjmethodID unitMorphCallback = env->GetMethodID(moduleCls, \"onUnitMorph\", \"(Lbwapi/Unit;)V\");\n" + - "\t\tjmethodID unitRenegadeCallback = env->GetMethodID(moduleCls, \"onUnitRenegade\", \"(Lbwapi/Unit;)V\");\n" + + "\t\tjmethodID receiveTextCallback = env->GetMethodID(moduleCls, \"onReceiveText\", \"(L" + context.getPackageName() + "/Player;Ljava/lang/String;)V\");\n" + + "\t\tjmethodID playerLeftCallback = env->GetMethodID(moduleCls, \"onPlayerLeft\", \"(L" + context.getPackageName() + "/Player;)V\");\n" + + "\t\tjmethodID nukeDetectCallback = env->GetMethodID(moduleCls, \"onNukeDetect\", \"(L" + context.getPackageName() + "/Position;)V\");\n" + + "\t\tjmethodID unitDiscoverCallback = env->GetMethodID(moduleCls, \"onUnitDiscover\", \"(L" + context.getPackageName() + "/Unit;)V\");\n" + + "\t\tjmethodID unitEvadeCallback = env->GetMethodID(moduleCls, \"onUnitEvade\", \"(L" + context.getPackageName() + "/Unit;)V\");\n" + + "\t\tjmethodID unitShowCallback = env->GetMethodID(moduleCls, \"onUnitShow\", \"(L" + context.getPackageName() + "/Unit;)V\");\n" + + "\t\tjmethodID unitHideCallback = env->GetMethodID(moduleCls, \"onUnitHide\", \"(L" + context.getPackageName() + "/Unit;)V\");\n" + + "\t\tjmethodID unitCreateCallback = env->GetMethodID(moduleCls, \"onUnitCreate\", \"(L" + context.getPackageName() + "/Unit;)V\");\n" + + "\t\tjmethodID unitDestroyCallback = env->GetMethodID(moduleCls, \"onUnitDestroy\", \"(L" + context.getPackageName() + "/Unit;)V\");\n" + + "\t\tjmethodID unitMorphCallback = env->GetMethodID(moduleCls, \"onUnitMorph\", \"(L" + context.getPackageName() + "/Unit;)V\");\n" + + "\t\tjmethodID unitRenegadeCallback = env->GetMethodID(moduleCls, \"onUnitRenegade\", \"(L" + context.getPackageName() + "/Unit;)V\");\n" + "\t\tjmethodID saveGameCallback = env->GetMethodID(moduleCls, \"onSaveGame\", \"(Ljava/lang/String;)V\");\n" + - "\t\tjmethodID unitCompleteCallback = env->GetMethodID(moduleCls, \"onUnitComplete\", \"(Lbwapi/Unit;)V\");\n" + - "\t\tjmethodID playerDroppedCallback = env->GetMethodID(moduleCls, \"onPlayerDropped\", \"(Lbwapi/Player;)V\");"); + "\t\tjmethodID unitCompleteCallback = env->GetMethodID(moduleCls, \"onUnitComplete\", \"(L" + context.getPackageName() + "/Unit;)V\");\n" + + "\t\tjmethodID playerDroppedCallback = env->GetMethodID(moduleCls, \"onPlayerDropped\", \"(L" + context.getPackageName() + "/Player;)V\");"); out.println("\t\twhile (true) {\n"); implementConnectionRoutine(); @@ -111,12 +117,12 @@ public class Bind { "\t\t\t\t\t switch (it->getType()) {\n" + "\t\t\t\t\t\t case EventType::MatchStart:\n" + - ( CJavaPipeline.isBWAPI3()? - "\t\t\t\t\t\t\t BWTA::BWTA_Result::regions.clear();\n" + - "\t\t\t\t\t\t\t BWTA::BWTA_Result::baselocations.clear();\n" + - "\t\t\t\t\t\t\t BWTA::BWTA_Result::startlocations.clear();\n" + - "\t\t\t\t\t\t\t BWTA::BWTA_Result::chokepoints.clear();\n" + - "\t\t\t\t\t\t\t BWTA::BWTA_Result::unwalkablePolygons.clear();\n" : "" ) + + (CJavaPipeline.isBWAPI3() ? + "\t\t\t\t\t\t\t BWTA::BWTA_Result::regions.clear();\n" + + "\t\t\t\t\t\t\t BWTA::BWTA_Result::baselocations.clear();\n" + + "\t\t\t\t\t\t\t BWTA::BWTA_Result::startlocations.clear();\n" + + "\t\t\t\t\t\t\t BWTA::BWTA_Result::chokepoints.clear();\n" + + "\t\t\t\t\t\t\t BWTA::BWTA_Result::unwalkablePolygons.clear();\n" : "") + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, matchStartCallback);\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::MatchEnd:\n" + @@ -129,47 +135,47 @@ public class Bind { "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, sendTextCallback, env->NewStringUTF(it->getText().c_str()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::ReceiveText:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, receiveTextCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, \"get\", \"(J)Lbwapi/Player;\"), (jlong)it->getPlayer()), env->NewStringUTF(it->getText().c_str()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, receiveTextCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, \"get\", \"(J)L" + context.getPackageName() + "/Player;\"), (jlong)it->getPlayer()), env->NewStringUTF(it->getText().c_str()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::PlayerLeft:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, playerLeftCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, \"get\", \"(J)Lbwapi/Player;\"), (jlong)it->getPlayer()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, playerLeftCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, \"get\", \"(J)L" + context.getPackageName() + "/Player;\"), (jlong)it->getPlayer()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::NukeDetect:\n" + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, nukeDetectCallback, env->NewObject(posCls, env->GetMethodID(posCls,\"\", \"(II)V\"), it->getPosition().x" + checkBWAPI3brackets() + ", it->getPosition().y" + checkBWAPI3brackets() + "));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::UnitDiscover:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitDiscoverCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)Lbwapi/Unit;\"), (jlong)it->getUnit()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitDiscoverCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)L" + context.getPackageName() + "/Unit;\"), (jlong)it->getUnit()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::UnitEvade:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitEvadeCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)Lbwapi/Unit;\"), (jlong)it->getUnit()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitEvadeCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)L" + context.getPackageName() + "/Unit;\"), (jlong)it->getUnit()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::UnitShow:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitShowCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)Lbwapi/Unit;\"), (jlong)it->getUnit()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitShowCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)L" + context.getPackageName() + "/Unit;\"), (jlong)it->getUnit()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::UnitHide:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitHideCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)Lbwapi/Unit;\"), (jlong)it->getUnit()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitHideCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)L" + context.getPackageName() + "/Unit;\"), (jlong)it->getUnit()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::UnitCreate:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitCreateCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)Lbwapi/Unit;\"), (jlong)it->getUnit()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitCreateCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)L" + context.getPackageName() + "/Unit;\"), (jlong)it->getUnit()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::UnitDestroy:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitDestroyCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)Lbwapi/Unit;\"), (jlong)it->getUnit()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitDestroyCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)L" + context.getPackageName() + "/Unit;\"), (jlong)it->getUnit()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::UnitMorph:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitMorphCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)Lbwapi/Unit;\"), (jlong)it->getUnit()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitMorphCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)L" + context.getPackageName() + "/Unit;\"), (jlong)it->getUnit()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::UnitRenegade:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitRenegadeCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)Lbwapi/Unit;\"), (jlong)it->getUnit()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitRenegadeCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)L" + context.getPackageName() + "/Unit;\"), (jlong)it->getUnit()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::SaveGame:\n" + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, saveGameCallback, env->NewStringUTF(it->getText().c_str()));\n" + "\t\t\t\t\t\t break;\n" + "\t\t\t\t\t\t case EventType::UnitComplete:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitCompleteCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)Lbwapi/Unit;\"), (jlong)it->getUnit()));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, unitCompleteCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, \"get\", \"(J)L" + context.getPackageName() + "/Unit;\"), (jlong)it->getUnit()));\n" + "\t\t\t\t\t\t break;\n" + (CJavaPipeline.isBWAPI3() ? "\t\t\t\t\t\t case EventType::PlayerDropped:\n" + - "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, playerDroppedCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, \"get\", \"(J)Lbwapi/Player;\")));\n" + + "\t\t\t\t\t\t\t env->CallVoidMethod(moduleObj, playerDroppedCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, \"get\", \"(J)L" + context.getPackageName() + "/Player;\")));\n" + "\t\t\t\t\t\t break;\n" : "") + "\n" + @@ -181,8 +187,8 @@ public class Bind { "\t\t\t\t\t\tprintln(\"Reconnecting...\");\n" + "\t\t\t\t\t\treconnect();\n" + "\t\t\t\t}\n" + - (CJavaPipeline.isBWAPI3() ? "" : "println(\"Match ended.\");") + "\t\t\t}\n" + + (CJavaPipeline.isBWAPI3() ? "" : "println(\"Match ended.\");") + "\t\t}"); } @@ -222,7 +228,7 @@ public class Bind { private void implementMirrorInit(List declarationList) { implementHelpers(); - out.println("JNIEXPORT void JNICALL Java_bwapi_Mirror_startGame(JNIEnv * env, jobject obj){"); + out.println("JNIEXPORT void JNICALL Java_" + context.getPackageName() + "_Mirror_startGame(JNIEnv * env, jobject obj){"); if (CJavaPipeline.isBWAPI3()) { implementBWAPIInit(); } @@ -247,11 +253,11 @@ public class Bind { for (Field field : cClass.getFields()) { if (field.getDeclType().equals(DeclarationType.VARIABLE)) { if (!printedIntro) { - out.println("cls = env->FindClass(\"Lbwapi/" + cClass.getName() + ";\");"); + out.println("cls = env->FindClass(\"L" + context.getPackageName() + "/" + cClass.getName() + ";\");"); if (cClass.getName().equals("Color")) { out.println("getId = env->GetMethodID(cls,\"\", \"(III)V\");"); } else { - out.println("getId = env->GetStaticMethodID(cls, \"get\", \"(J)Lbwapi/" + cClass.getName() + ";\");"); + out.println("getId = env->GetStaticMethodID(cls, \"get\", \"(J)L" + context.getPackageName() + "/" + cClass.getName() + ";\");"); } printedIntro = true; } @@ -267,14 +273,14 @@ public class Bind { if (cClass.getName().equals("Color")) { out.println( "env->SetStaticObjectField(cls, " + - "env->GetStaticFieldID(cls, \"" + classVariable.getName() + "\", \"Lbwapi/" + classVariable.getType() + ";\"), " + + "env->GetStaticFieldID(cls, \"" + classVariable.getName() + "\", \"L" + context.getPackageName() + "/" + classVariable.getType() + ";\"), " + "env->NewObject(cls, getId, " + cValue + ".red(), " + cValue + ".green(), " + cValue + ".blue())" + ");"); return; } out.println( "env->SetStaticObjectField(cls, " + - "env->GetStaticFieldID(cls, \"" + classVariable.getName() + "\", \"Lbwapi/" + classVariable.getType() + ";\"), " + + "env->GetStaticFieldID(cls, \"" + classVariable.getName() + "\", \"L" + context.getPackageName() + "/" + classVariable.getType() + ";\"), " + "env->CallStaticObjectMethod(cls, getId, (jlong)&" + cValue + ")" + ");"); if (cClass.getName().equals("Position") || cClass.getName().equals("TilePosition") || cClass.getName().equals("WalkPosition") || cClass.getName().equals("Point")) { diff --git a/src/generator/ccalls/CallImplementer.java b/src/generator/ccalls/CallImplementer.java index 77dc72e..ab01240 100644 --- a/src/generator/ccalls/CallImplementer.java +++ b/src/generator/ccalls/CallImplementer.java @@ -50,7 +50,7 @@ public class CallImplementer { public void setOut(PrintStream out) { this.out = out; - out.print("#include \"../concat_header.h\"\n" + + out.print("#include \"../concat_header" + (CJavaPipeline.isBWAPI3() ? "" : "4")+ ".h\"\n" + "#include \n" + "#include \n" + (CJavaPipeline.isBWAPI3() ? "#include \n" : "#include \n" + "#include \n") + @@ -72,7 +72,7 @@ public class CallImplementer { private void implementAccessObjectsParams(List params) { for (Param param : params) { - if (javaContext.isPointer(param.first)) { + if (javaContext.isReference(param.first)) { if (javaContext.isValueType(param.third)) { out.println(javaContext.copyJavaObjectToC(param.third, param.second)); continue; @@ -113,7 +113,7 @@ public class CallImplementer { private void implementMethodParams(List params) { for (Param param : params) { - if (javaContext.isPointer(param.first)) { + if (javaContext.isReference(param.first)) { out.print("," + SPACE + javaContext.ptrCType() + SPACE + javaContext.ptrPrefix() + param.second); } else { out.print("," + SPACE + param.first + SPACE + param.second); @@ -419,14 +419,15 @@ public class CallImplementer { "\tjobject targetObj = env->CallObjectMethod(obj, FindCachedMethod(env, clz, \"getTarget\", \"()L" + javaContext.getPackageName() + "/Unit;\"));\n" + "\tUnit target = (Unit)env->GetLongField(targetObj, FindCachedField(env, env->GetObjectClass(targetObj), \"pointer\", \"J\"));\n" + - "\tjobject typeObj = env->CallObjectMethod(obj, FindCachedMethod(env, clz, \"getType\", \"()L" + javaContext.getPackageName() + "/UnitCommandType;\"));\n" + - "\tUnitCommandType type = (UnitCommandType)env->GetIntField(typeObj, FindCachedField(env, env->GetObjectClass(typeObj), \"value\", \"I\"));\n" + + "\tjobject typeObj = env->CallObjectMethod(obj, FindCachedMethod(env, clz, \"getUnitCommandType\", \"()L" + javaContext.getPackageName() + "/UnitCommandType;\"));\n" + + "\tUnitCommandType type = *(UnitCommandType*)env->GetLongField(typeObj, FindCachedField(env, env->GetObjectClass(typeObj), \"pointer\", \"J\"));\n" + "\tint extra = (int)env->GetIntField(obj, FindCachedField(env, clz, \"extra\", \"I\"));\n" + - "\tjobject posObj = env->CallObjectMethod(obj, FindCachedMethod(env, clz, \"getPosition\", \"()L" + javaContext.getPackageName() + "/Position;\"));\n" + - "\t" + javaContext.copyJavaObjectToC("Position", "position", "posObj") + "\n" + - "\treturn UnitCommand(unit, UnitCommandType(type), target, position.x, position.y, extra);\n" + + "\tint x = (int)env->GetIntField(obj, FindCachedField(env, clz, \"x\", \"I\"));\n" + + "\tint y = (int)env->GetIntField(obj, FindCachedField(env, clz, \"y\", \"I\"));\n" + + + "\treturn UnitCommand(unit, type, target, x, y, extra);\n" + "}\n\n"); out.println("int resolveUnitCommandExtra(UnitCommand& command){\n" + diff --git a/src/impl/CApiParser.java b/src/impl/CApiParser.java index ec26525..69bef13 100644 --- a/src/impl/CApiParser.java +++ b/src/impl/CApiParser.java @@ -42,8 +42,8 @@ public class CApiParser { //String FUNC_REGEX = "^(\\s*)(virtual)?\\s([\\w\\*]+)\\s([\\w\\*]+)\\((.*)\\)(\\s=\\s0;)?"; //String FUNC_REGEX = "^(\\s*)(virtual)?\\s(BWAPI::)?([\\w\\*]+)\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s=\\s0;)?"; //String FUNC_REGEX = "^(\\s*)(virtual)?\\s((BWAPI)|(std)::)?([\\w\\*]+)\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s=\\s0;)?"; - // 1 2 3 4 56 7 89 10 11 12 13 14,15 15,17 - String FUNC_REGEX = "^(\\s*)(virtual)?\\s(const\\s)?(static\\s)?((BWAPI::)|(std)::)?((set<(\\s*(BWAPI::)?\\w+\\*?\\s*)>)|([\\w\\*]+))&?\\s+([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s=\\s0;)?\\s*"; + // 1 2 3 4 56 7 89 10 11 12 13 14,15 15,17 + public static final String FUNC_REGEX = "^(\\s*)(virtual)?\\s(const\\s)?(static\\s)?((BWAPI::)|(std)::)?((set<(\\s*(BWAPI::)?\\w+\\*?\\s*)>)|([\\w\\*]+))&?\\s+(&?[\\w\\*]+)\\((.*)\\)(\\s*const)?(\\s*=\\s0)?(;)?\\s*"; static final int F_REGEX_STATIC = 4; static final int F_REGEX_RETURN_TYPE = 8; @@ -102,9 +102,7 @@ public class CApiParser { currentNamespace = line; } - if (line.endsWith("Types")) { - return LineState.END; - } + if (line.equals("Errors")) { return LineState.END; } @@ -114,10 +112,15 @@ public class CApiParser { if (line.equals("Orders")) { return LineState.END; } - if (line.equals("Races")) { - return LineState.END; - } + if(CJavaPipeline.isBWAPI3()) { + if (line.endsWith("Types")) { + return LineState.END; + } + if (line.equals("Races")) { + return LineState.END; + } + } return LineState.SKIP; } @@ -230,6 +233,9 @@ public class CApiParser { Function function = new Function(); function.returnType = matcher.group(F_REGEX_RETURN_TYPE); function.name = matcher.group(F_REGEX_NAME); + if(function.name.startsWith("&")){ + function.name = function.name.substring(1); + } if (function.returnType.equals("operator")) { return null; } @@ -268,6 +274,16 @@ public class CApiParser { return null; } + if(function.name.equals("maxUnitWidth")){ + System.err.println("function skipped - BWAPI4 (" + function.name + ")"); + return null; + } + + if(function.name.equals("maxUnitHeight")){ + System.err.println("function skipped - BWAPI4 (" + function.name + ")"); + return null; + } + if(matcher.group(F_REGEX_STATIC) != null){ function.setStatic(true); } @@ -482,6 +498,16 @@ public class CApiParser { clazzName = clazzName.substring(0, clazzName.length() - "Interface".length()); } Clazz clz = new Clazz(clazzName); + + if(!CJavaPipeline.isBWAPI3()){ + if(clazzName.endsWith("Type") || clazzName.equals("Error") || clazzName.equals("Race")){ + Function function = new Function(); + function.name = "toString"; + function.returnType = "string"; + clz.fields.add(function); + } + } + if (javadoc != null) { clz.setJavadoc(javadoc); javadoc = null; diff --git a/src/impl/Function.java b/src/impl/Function.java index 2812e33..423be29 100644 --- a/src/impl/Function.java +++ b/src/impl/Function.java @@ -33,6 +33,7 @@ public class Function implements Method { f.name = name; f.returnType = returnType; f.args.addAll(args); + f.isStatic = isStatic; return f; } diff --git a/src/test/FunctionRegexTest.java b/src/test/FunctionRegexTest.java index 6d5a24c..0affd14 100644 --- a/src/test/FunctionRegexTest.java +++ b/src/test/FunctionRegexTest.java @@ -1,5 +1,7 @@ package test; +import impl.CApiParser; + import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -12,13 +14,13 @@ public class FunctionRegexTest { // 1 2 3 4 56 7 89 10 11 12,13 14,15 //String FUNC_REGEX = "^(\\s*)(virtual)?\\s(const\\s)?((BWAPI::)|(std::))?((set<(\\w+\\*?)>)|([\\w\\*]+))&?\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s*=\\s*0;)?"; - String FUNC_REGEX = "^(\\s*)(virtual)?\\s(const\\s)?((BWAPI::)|(std)::)?((set<(\\s*(BWAPI::)?\\w+\\*?\\s*)>)|([\\w\\*]+))&?\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s=\\s0;)?\\s*"; + String FUNC_REGEX = "^(\\s*)(virtual)?\\s(const\\s)?(static\\s)?((BWAPI::)|(std)::)?((set<(\\s*(BWAPI::)?\\w+\\*?\\s*)>)|([\\w\\*]+))&?\\s+(&?[\\w\\*]+)\\((.*)\\)(\\s*const)?(\\s*=\\s0)?(;)?\\s*"; String ENUM_VALUE_REGEX = "^(\\s*)(\\w+)(\\s*=\\s*(0x)?([0-9A-Fa-f]+))?\\s*[\\,;]"; - Pattern funcPattern = Pattern.compile(FUNC_REGEX); + Pattern funcPattern = Pattern.compile(CApiParser.FUNC_REGEX); public void run() { - Matcher matcher = funcPattern.matcher(" virtual void drawText(int ctype, int x, int y, const char *format, ...) = 0; "); + Matcher matcher = funcPattern.matcher(" static UnitCommand repair(Unit unit, Unit target, bool shiftQueueCommand = false);"); if (matcher.matches()) { System.out.println("match"); } diff --git a/src/test/api/TestBot1.java b/src/test/api/TestBot1.java index 7b108ca..5840754 100644 --- a/src/test/api/TestBot1.java +++ b/src/test/api/TestBot1.java @@ -1,7 +1,6 @@ package test.api; import bwapi4.*; -import bwapi4.Text.Size.*; import bwapi4.Text.Size.Enum; /** @@ -35,17 +34,17 @@ public class TestBot1 { Game game = mirror.getGame(); Player self = game.self(); - game.drawBoxScreen(0, 0, 100,100,Color.Red,true); + game.drawBoxScreen(0, 0, 100, 100, Color.Red, true); - game.setTextSize(Enum.Small); + game.setTextSize(Enum.Large); game.drawTextScreen(10, 10, "Playing as " + self.getName() + " - " + self.getRace()); StringBuilder units = new StringBuilder("My units:\n"); - /* - for(Player player : game.getPlayers()){ - System.out.println(player.getName()); - for(Unit enemyUnit: player.()){ - System.out.println(enemyUnit.getType()); + + for (Player player : game.getPlayers()) { + // System.out.println(player.getName()); + for (Unit enemyUnit : player.getUnits()) { + // System.out.println(enemyUnit.getType()); } } @@ -62,7 +61,7 @@ public class TestBot1 { for (Unit neutralUnit : game.neutral().getUnits()) { if (neutralUnit.getType().isMineralField()) { - if (closestMineral == null || myUnit.getDistance(neutralUnit) < myUnit.getDistance(closestMineral)) { + if (closestMineral == null || myUnit.distanceTo(neutralUnit) < myUnit.distanceTo(closestMineral)) { closestMineral = neutralUnit; } } @@ -70,15 +69,18 @@ public class TestBot1 { if (closestMineral != null) { - myUnit.gather(closestMineral, false); + //myUnit.gather(closestMineral, false); + //game.issueCommand(UnitCommand.gather(myUnit, closestMineral, false)); + UnitCommand uc = UnitCommand.gather(myUnit, closestMineral); + myUnit.issueCommand(uc); } } } - */ //draw my units on screen - game.drawTextScreen(10, 25, Utils.formatText("hello world", Utils.Blue)); + //game.drawTextScreen(10, 25, Utils.formatText("hello world", Utils.Blue)); + game.drawTextScreen(10, 25, Utils.formatText(units.toString(), Utils.Blue)); } }); /* diff --git a/src/util/PointerTest.java b/src/util/PointerTest.java index 76c2aa8..a90bc35 100644 --- a/src/util/PointerTest.java +++ b/src/util/PointerTest.java @@ -12,10 +12,10 @@ import java.util.List; */ public class PointerTest { - private static final List BWAPI4_INTERFACES = Arrays.asList("Client", "Game", "AIModule" ,"Event"); + private static final List BWAPI4_INTERFACES = Arrays.asList("Client", "Game", "AIModule" ,"Event", "Race", "Error"); private static boolean testCls(String cls){ - return BWAPI4_INTERFACES.contains(cls) || cls.endsWith("set"); + return BWAPI4_INTERFACES.contains(cls) || cls.endsWith("set") || cls.endsWith("Type"); } public static String test(String cls) {

YvP2MQCP zCygm*1TA57f#Z40IG3w^UUo*6)AKBT6Cls`;8dRX*&?Fc0JMbH1)lAFwy!|=*kY5l4pl}EXu=(u+1%UD z-shHsd7dR~0ton?H)(=40l9pTo0Z62;7GS>2MXW~ybUqs0FYYjCLqEK_dp@!^B39W zBp|lWJ|o?+P3OvdwumU-1+js3fhSzEE#yiVdm1q*7H?L5wn(`B1lf;%K2ajYeV{d; z2lSsiwt-wq6VLu@wuxNI&!_W6(Hz7E*#!>mopq+L*ud))S$+y)1MdQl@Xk6_I9wy} ziY?a$v3+(`(kp9U!L^b1noIExXf5CY9e>;0pX>1X{LuIq+^Amry$1oNd<-5`uWsB& z{V9A5&Q!0|-V1HQH`FIMHqMLhkkDM=Ute zP4i^#b6oyu=2&uIr=@f--VozKMOlvj=b z3UwUCB53bll<*w%+>%A~8(gIH9BlhNh3GfAXyG~dxI~AjcVHd!siuCS4lS^6UCq1O zb;u4aaBQ8;yQ{nJ4$XMeyqSCLe;p2Pc-_31dtLI84{mtdJe7M5AGipp_gcSH@Z#w^ z>|f=(bf)6--1gYP%lp%bmRE7bb z0)?Zv*nZd5#pk;{A5|&GYhHsQ5?(+;*_?;=9n^ z{t!H+m0NDY1TGWtUgIgwcA>o+%yM1xDl)aBy`#?ZTth1|b)dbE{^Gu-Qmp^n=ktsA z8cVVMa~~rk*EOf2V>?>!bw1ZMlHyZz;9v4O5~w1ukwPdFun}XZPk(hk8p;;Io{4$Xi ziicPo!A+zJM@p;;PfElF`y_aYEirhBWe%azz5rTfOo*wZ4j>@K4{j~x4~`=R4xT9` z3a%|h2L6^f3gst-2JS7T3Jxj73La3>0U%x&6hc{8=oczU0|-mmf{P|{K!uaoBfv|p z<6uWMbAHD?H8O%3(%JW05+up!F`eY06kLu z{Q~4x{lsBVh@|3Bh-BdK_`*=QT+!%wT;cF6*XS&3{my2Q0L!F8s65GV9Ivl5%-5(a zz<#>%Z{YPLWC-1WSe9!_mi7J(sY-xn5;K$ni77&NL@ev|SC*}Q$#Dp9%fu+CUnD8; zdP0Q$sPP_$TTNdBBX@W0Th`?QkX<2Sxl_b*Vk4^S)qD`^bSMojQFfXwfJgY0%3I+mKa4R4pq6B~ux6IWSGz-m~?B?Bd7JR%lb z1jJ#2{oH^uG{G+sOHRaW!q%}G$$U^O5li-n!wdjA4wElnD@zc5H=*^Oi#$CbA+t!1 zi2ETfU@?q;8;No^J{G4XM96MJ@*Ij1Ghr%0Pm<4OLi3!8GBr^irzK3tX+rTFi&8yq z8K)&LU^$F?>rJ+jOckpo*=sZmbt_KBk<5hC80Ggna^`?e!j8m{-GuHr3uR+`HEvCz z*LYarHc;Y%beqkD^En;Gcf2ibO}5u`Sm0Kl4BmSoGUR}U3^AoVj!UH1a#;D+pDaF! z2>S;8xe#S+A|ci*{dFz!c!E`;TPTlxkK#55r9SaE&MU6lXc+H+N}?Nw>r2sIA5nx| zP|W>yItijlA)y6cWCZ$LA`BwB2nKanl@j8z5sq5KgA%xhkUSSe%MQd+c#0CVqdpd+ zC_f6+gSfjDah9lP5`0`J7H*7)6{$>NC3S>_2@V_9d12VvSB4Q1D+&c6TW8eu$e1|| zy>Jf}`1Pr?Ibn{7corNUX(sY<5vkPDIqh`OWId<}7k;-S-hygA2%1}nlF5`gd4o{U zEzA8kn2=0p`KB$|lWMDra4ZKO;R-U7#Ql5tq>ufIvC z3Ju4_$6-3)d*{B7Bh(^#7tW9fvf;pr^vnr1Bfl1wB7b9uFgjtOhSx_DFXS~6Iw8Tv z_5q6)RU9msi}}uV&jJqv7gA`vY^kKyXYF2N3qWtDT#k~YaDD1l^Yfm zlLM(s<_LHp;~Z)om)r%6TN?WwNUx!I!+1!%!yrkF4AfPOUMs1gUc{flAxR5Q472&Q z%5>bd%QTM{#gVWV`w?|F<{eKrp)2B6u0ZS?szCG`oa;Mdy)3-vS`cGX3yY@mfG?f zF*=ykU8z%dVyIXC{)Q>7&+?0=oWri~wrfJ^R{_Ui(LVP(%aBtBZE3P{q45uep{7@l znB%F2{=iJ0$gCNUY6n5L_Q-FZv$tvpSWjsQwpt_p;bIwX z2&!6(-=mokpa`8(RuhLC!qGXc9aw;|PAMbbMKA1h-NfD7PUj~=xcAkj@LCwUK&qZ_ z<>d`WI=sBHo8i8#w1*U3^0O5+)AMNfMPs#fCEn#m(3gAKlU}xZGV?xx7b!uVyIuTEM*Tc5I!>g(VsejBqE4CHQ{t>+l?{ll z{(*qVOYZL1^9EbVQxHBV8HrC!t5shDTL!a&wSpmR8a!&wPg=of)mJnIL4eFwcm^X3 z?f#6%EkfYquU;wI7h=;M@<-(-G{j>OOM;CjZx50FwXs)5}}`18*mnaQRH35;eB7Gch)` z{a12;z5*{|u+Zmg;`kX@R8MUfhsp_ploWkzSkzk(9(bJ)=3JMy*B2ynz2*g)BmdhY z^St^O@P63BeyM&cFMa<54HT%m5diU{x+P26!Me^n2WJ_}RB$~#GIH5z+_@it|C_eS zQ<2FE&*6pKw-2`l8d-Cb8Tn$|!IJtYwv2MC3`|@iS`Io{v zsT{({*uJ+2|D-;oCO?D~e0FB)^YcHW>WM#({`-XR@7x{_$%zqag|JmY3{z&t!GM{?-y;OD7I9r2 ztGE$H#&)I7Ob1$GxjARs%B2O34IiKQOCtWw2O`Bwm-WTylD-#Xpcku_zD;HCZK z7~;hyk+7^Oxnoy&i{ zf|A>H$1rUAB*)Sw4}@E`t9Jz`{QJV8+3**x)e$1t{p2?{DQ^&>pdrncaHWvy6W}5l z_~P3A|2WW5AfIemfWGT4))CnDtjNW+9|=wC&?pJ))v@OO5(BpEF&<8~X8zLQwRp%X zP8V`lptBf_(0$Pxi$_u&X`77S0I4_QWchBkOBa-|qLjLbw-L1YEEa>OHz|7;-xyEz zY{^h8{32G2Ia1wT7xp(dEZ{1MO?&J(+WAAsdivXlnPOC%muZ`y9-2=0{u_ZZ+V`T< z`2$Se-x!{``e3_C!s}g^X6H-GlcOEIFl|9w$KvJ0M&10a`{X(1GD||7f8pJXYx@Vi z8`zu>>e!K$r+D-%cYG+`?foPRq$n_cpheym*8IVKV(cAjhW8^v!tugRK+bvIPv7qZvuR=|gwT8k zUIBJ#mJ1|5W`c*xG2qncfv6+Bs&H+bDuL!~o7oQ;#&u5#Y>9H?<6*GeDTl2IQx!>i zfTYBnkyrRSsv?P}<|RnRE_Qaz#jvB;0b}xeZcd2D1|gFr0zP)G?$Dv;#}Z zpW79^DTdwR93L9Lw9)MNBrl)~kEsQ1X?z;%d=1f>1wv<2XDwYGVGBMhmKQS#rk2jr ztqW}vp;(@{6*oG*?(?^B+^*vm>B?vn*5x7eE|V22hv@55m%phawYd&?G)ib$tK!1f z{#`0{BOLS!C7Y*F;wPNQyM7V1^c7NHvy&*7X-3h_d)u}yoP7c&{Ib1`>-O7W#Fq+a z6lm+|jsQml!RkENvL#jz-E(dSkd8yyvEkA3fMh(ymL{QG_Wa1a&!7`8Tdq=(0BdIR zo-!c)x$FpE1!N;yS6Ls$rbodFJIcq`o1DrH~?J!MHzKAgSP_)L9=gtDSORgb&ozYYb<` z6j~M0wGFc8++r@K0pY2ZjPihhm6&!;4tXIqjC>(wRm_n$G-__Z0?xwfk{?(y%erz! zL}#8YKl$p5l@ojbz7PVaKdhZd_WFwmmslmjlhD>osap|Hjg26po*Vpwb?%v$#eRB> zz$;PYRpTHvIzZ9^2hw4-s3t$!1x$i7ZOV5r!5Gjl+?-N@jQ=yOr<;i<5^_vwd5HyZ z29KGnx}Gd7j|m6>#r#n;a)vs#C(P#)CmW!*xs#Z^nklNw*THJeFjL+pqR;FPyDTl* z#G;=mDD2zx#0`Y|%hG;A?6;p%f260cpsB4V=eMQaLmncVDunQOR%+A1HmjW~OdTQ- zzMuQ2Z6b)CCw7Fky&J0Wo7r56L*Cqa%N|Fdb2ee(*T8$^bST*no&Kv_7As1_@>WOu zL$fo^*5@%QLzP6IvfwNkCale>%#$*3I9He_R;x;bGV02T6~CMe`7v$*>)7JD?7zzy z)nv37M^j^kl|7f#cu=G?Dqd}ESG#>|Em!+}&7}3INX41wWZ#`2)L(^G_pp8UlwA^v z5pdEyg8iLQIf>y?@^>%2PopJ_ZUcq|g&eZu5 zRM(JK# zHfG!lyoz6p8IE8Z3`j_1iyY!rB)1EjENasyt-T5^Dg3lA9fo$biwcNhK-KkzfvDq( zi5ccjl|B(+d!ou*(Vb90#U9`-5Zx19mG*nWjY>#OoDyVwhQ5W(M*)mzVQT)gqVvh> z@t{M}?BfjiGqXQ8v`mK~{$Aya5%|FNK`S1X-9wvF5s=>||8Vr8y?YcaF`ZelgjgJ) zb99z7ZO+Pakrq$3wWLI0FUq~TTCjUn(JzQR+{fkoF7Nj~#PP(W(SWVFPk%g(hds?VDMC*4|lQu2Dc z@&bAT^=x-J9_4=Y20-@bK4k|(Sdjb434>c?HDF{}Efh^aICK7FX%E((miCegXWWmC zZDN6kgmpoc!$}X;I56j_r?((ls2b`F=o8KzycLn<>z?VT5SiwtsR zjX!ak^U?eYkR52dA^3XS#nMZK?q@ja4I^lzlwkV@+p{J(cNb9}T0UjtE&PZpr$BII zj?c)Jd#fHtLT4(++$yJ-hJk7kPRC#yOHg8wFkI-@Bqsd&n%eIZ0{q)_t0wPOow3&F z=|qQ(^q!_khzaO~yd3QF%lseQTfC$FWzwR3<~(&4om6ba{r;&8qr|yfJRAaCEYrv` zdGkjt?S+}HH_odoGaZCDifC1$ot0e?IDQ1VRNs92(kLPsq&E+S!t}B>&~$Wy(vRAG zr|+sui4wk1XsxBrbiobwx!b&p zk2m?a_2?|!+l_hX&ZK{ClT$sIkOVI2X9ZfLoGFdSUsAAa&~2=4gSVX5A5v#=s{|aM z^_7cKEdy7gBD=+-1ZO~@|7P>pSV^gQ2SZWM!Spxny<g{4Z$g?8dAR(8{g`P}hf2W*r@7cy%? z=VtG`ICW(Qa{ut;nT7`*&D@GsPYa|D-?Q}>-89(jS=^F1lhHUk_NEN{jAMwx4qh8w zF*(nu-9PcR7#=H4C_6}4Y$33QFQaG_7yP-4?B^KrYBIsUBz&RIrTm2;7}(jUuEx{I z_)M)hX447c--!aN_Q+rv3(seePw_YD1mXx5!I~4&PZd_3TjKA?w>4m^+FQi>$utxe zPs^@OsIxu1%8brID%~34$aa0b5W?h}Mfe%fL_-X#R{GnQm3rAczNJf4wXqsiqO})RHa0h%aPrM2bQLj&|;fHg;F?+DJyqeT>Wge9}T7LHL zbiaELr(1b!sBOHNS*ZtwLuj3Usx^-c1#(nxAUc#fmO%7O1^jg@Dvy#t*vq~3@hPp? z4lc(2GQ{k7DUgM<_q6^R0AVGEMA$Oa{1aLL_iL^Gl#zb5l@!C!BP}jdbQ=-b($<$7 z0w-wPMj{5U91Y1Eq33&!vk~jSRl4iGZV&PuhO?!3XlSe9b)%}hWHceFWHkA3*xtgxN5&K(B7qa#%!`{@BFO3d;{F3M z97Ng?gFZpMHR9VI^88~uIQ2}$Zq}H$C4xr$5jhGpVlUQAon$LGfBt>GGJl++B8^nV z8vVi*{etS`fK@CpBa$?O`Xz(r!%@X%yX?)ASzbe7&!6YUGiOxrn)p2q=O|><%xuCX zt8%Y&838rkq~dI#FxLlN2XfzqE!I+S~F0 ztIPa<1gn>de}!;~`A16VyXE_wwCy>ZAwj49D};vnQ|Sxir@1ZpU(M}*s;!cDbayou zad&fbboiIebyv~tL)r8XDUijRHIx zpy=%?CN4wOK1#xXbdIlvMa93Om2&B(GK~|aB}8}O^@YC?IgEQ)*Otb@3z!Nx@HH5k z`93}pV);C#NG(i5h<>-R5r!WkwK3yAXj%>0fTvfCYAT%>yvvzL^qM!6f&HlqZ`yg2 zk8WIjlYAcz7jG;0@EN3Xovm7;A%$+~s>gQgak3)NJ?%VPStwg|1L};P)R!&U)w_Yd zmwbk`CV4)A$F9&lq|e>TCf~9ZW?K0Aq{V{?LsRWqwkpYRV5i+Nj`cpMH?ID=vlL_@ z^l7(v;%|vGpSvZ&Sz#Z4IEW1S^BF}xL|grkkQl;dwEiKS&eVi!g1wAvk5VU+6; z8hMoW$B9ug8I%{VkXx{)qMjIb1~W`Jjmav^b9w84fawl=;o~rNozvxxT9)oK3`Z))?bLz zq5SA?xxqe371_dPhZ1ue_~^jUt&R%@_p!b=N90Ln3UnUvCkUHO=(}7W zc>lPEDcvv${}i`~{;vV8{{){`bTRvXRe}ARa)eYD%*h+9o9pY|CPV4g zUFcW770WH|txWIw-|riCu4HjlTZRZhWl&k@s(@p+|4!w*;~x`%oTV|8c@z#$-i3 zJk84OBfw2jbA~)%=XYs@ti*)Ya$LMS`ooJOX!Z_{~lHr zN^xGdm*!%st1V;gq^XI#Fi>vwfkLN+;{ED=>4SULcU!j#ACo*?w!CL>>7tve`|Jk2yv1riS5*%DNq`c8QX1Uc$IKt|h6X9JMlCcoQp_RBFb;&}zt} zg7TMzDg_i_S{51|*0x?0B~ZVKXGcM>#pc@;>KzoO{P_*IjHv3D4nCctCJx~;IiR(3 zvqg?osKD zEk9!>%1p)}rK<(o@E-YZg>Qp=GZHdR8UD8{q$*7zzx>^v(8IFapVH9DH; z5F1sLr{oz8C4@;j+Y}j1Q8g2^;XkJ`?8v(C2rAMNzYl_Gu9#KR&4eja$BCdg4x6o4 zOpkogG%PTstRpIFzb(3sq_mj zR|Zm~@-AYqY`WPI)pYn|EwV%}?ET2Cb9*?l!&Vjgsk6Q*KW>kb9kxxLHXI(~&{*B7 z+c%0!tCg?bBN;Yp^tz_81Ps3Nrfqi4(zmI0(y#?lZcEVGTUx`u4I{nrqMg}%q&SPmO}X6Tm; zL!B-wIA`a2{*%8OEK*CTJvk9ij4#vTZNE(wC4v6UordS9rXQQ)Sfx2m!*3s^e?Llv zfWkx_WcLiO*#6s?!_+Mib2LE#yp>3y9I z!RlWPson|M!RzM?b_Cmo|0LAYQ4g@sLGmjB&W+%JU;M90+hL$~FtLMi?Lr*E5wHQw zKY})lpt~VJL5|SdUwhH~u$~;Q`FDH=9syU-f?ooV{l58Ozal>wUz6=f4kQ4Gpas7M zpuVC%Szoj6SPskr5`yxf`@RIAyrMptUn^hJ?Pw0v0}=p+(0yM6&|Wd0?5}xuJO{1- z+t7hVna3(j_&26DM96}LfmI(%gaw!wUbxSY(kbLf*B2AjgPGlLFwQ}~1UFo7nBK#g zSRucH$GI^Uyu@Eo&rO)ERyR45d=HeF5A*``;N|qtLRLrSzTPxr*AWCt0DVN^>lO4c zGI60246%NHb>4k4_a)yl5izrhslxWKAw8#$(#`2?pYav~9@598D5&xoGr1AJFfnJM z^r31ytLqKHfXFdkIbB2#H0q;YF_`BB|9)5Ia=rK61U(%5OTswjs?zMwrGg$@+FED_gVu@G zmo0%UkSrb_GKQlXIv+9;x*ED29K)$FTxn?rX;CmKI<=A-ItB&?)UiTg2We2ZGe_QrOan(u~rC(gM<7rAeewq?x5dOG3rSXeemNXs9ZQE6FQK zD=8~UDk*S8RU}!`&G09@l3~cvq$!h@QsgMP6G{MPuoG&@chY4^a#S5bB}pYwCEQ?i zzv1HxmI3^&`#5t-H|oq%ut)bVWVd|k1g*j4;d?MwWt#<=&ICN zx44~0Y1mydL+^EF%izKvh3alBh|4A*HM{-30j$*ZUiu8?Z2w$Yh=?;gNA>IeZk+AB zD#c<{jeUTG?O+KV0vs(0ayE6RU9lwheGq`Ng+J6)H#YJoTsh4?vt!=$G}D;q{GM9=i}kz=Mp3ON7r?$HK=*HL zh0e55M{da&onPpxkuBhqzNN-EE4P_aKD*I#Q5%!fWT^T6mkrq=rF%?0Osl$4AAen* zTh~PeD9a;9ICnd+-Wtc&eyjuvUxGCk!D6W;r7U-_H1dZ+MB~VuelZc16^x2q>SS#B8?kvuNcAsis54z-pX{U|Hc84X^lFc{etV2i?Z zSB6TJCZ#ph(<)o9KaZ{B8yzEst93Q!Yt?B!&uQDH>YM>a`b6?PRv<|mE;ly329v0+ z%$wc-uNNz1-hwl$25lqzg1|48=E%xGcdy3{sb@l5`G}`KnrJ+)c|)08_jshjQ^9)< zKQ@;#FYE&zIN2lN_C0PlgOQydHUu|g#BG89Cb{Tk=5*Y)je!>@n$JL#L^#RzVjLM; z?Zjz>*&kX$&*h6~-FOQcKMWZkb0CAWYq~w>eJH`zif7G`e8dgw=sw3S=9N5IJoon# z*ec35tq8(J=va@9*1wmR*gelaEE23VC&vhb**$m-^P z#Rdd*R*Kwp1ZWu8Pqu&Y$+*P?RKsey9h)~}aq&s)_L-=PS7NrQR3`@vjnpw@2WJqpR+%o1b)Y+$<# zA2_vi9%0#yexK%Zg=Zira{npq)4$e#ovf_^J+qKsf0b#V?>)-%mK7V~!;ZqHQm;hy zQn{*v(V$M0vAH}3PKh@>WPmr!KlMOsEAs2SPh>RctsGnc|23fawSD2y^aBsdo*R2m z`?5o!)$%IJxmbVQ7B7FK=4}<;yOpRa+5H6}IRsi%;_!f-glhIrI*DXG40mVWudk*b z`Na+jjPZ)W-FWZ9qFOF}Gb04-t?^k1mv$DrRrGbcE_n%ZN zz-rZv>HuAO84|Q$XRxJM#R@MiShgY$^D7oS5q{y{{%4f?;A!T)vE!3Pa^(DCBn-i= zlBUDjjND%jtrZjsID9QPiBb1!G;DK+lmv1V*5x_!?{&hQH7h&WPSsG`!H%|0c)+>= z&s|?!;MeWd9cZU=D9-^T_BH9Ba2~c!oWSA%!pTdDjtsLpJ zJMs^{CX-ovD}@xN^2&6Wrt(4|Sv%#pjL~=oyHHVkCc9A4ct*Q?=A>u2l+!$tJvBlh z4JopDg&ve&S3n7ddymk3kU(3)XcUzoHuBr+`QV0yre8lG^G-d5w;}G)Y|7x+wn8A;e#Ys^!W~rL%Q!tIdRjT+>IT=O zN}RgGw68y^!L9mzuVlLQj(2*nR>83Ke#z=T4K)nDzBD=@)QIBo~%_ASr^9D|atWtJWqzDiDoA5VDI{@9YB?;+rzk(kIJ!i(s{*(&UZ zGxI||d`Lk@|)QXH~ggWzWO_wXFPJ*Z=p1zMosBNxJ@jah=m_MeNzv{%( zbqOjS)r)QxUi1o&3Jy4%KdPF&`z#rMZp~kz{yA)TO!rH^knBMesOqLC(&`{Bc`Yxe%_Y|J~z;_&z)^(jJ05GG&c#`W-Bu`ob~ zKOfHg-FWGI`IRp-5dDGGCZKm(F#NCf!zx4^ z{;^VD!7$du)0L8=+Fr)^(^Lf~&4+sP+jRMJ&MNR||vD;4p!TtPu-FEAFSH^hJS%wOx-W!W? z%Pvs3?D^xs!kd#e;@0eXmt|hi4RoQu>f1Lrx0un)7h`QkyBuj>&IlxBq%bZq6!ZoY zY7>g@>DJ$q(gxWypzgFF{c<%hU7`&ljzpfIrV3*y1rkL)<@2^i{Tbi-UU{`fv#ILG zrl=He-X~PMgKyo+rEW+kRl8$u-4dv;Fiv|&2~hSg(M|)B2$4^PleVZ9L`nJS7hc5w z21zA&ordu7(@si?KmVZKr${d!6Mt@}&PP5(EAmrGRgAu+Q5K+>EEj)nrru}BDEFE_ zJS8I?IcHS78J$w?zQ4V9zQH&6ETL{Q%oCtF%SS!MNfKaK&qvu8pj&7n^;amFjk$+x z{B=CsZGe6^Aj=Z4ND9nmii*sh+{Z0AAg14D1ET{0WIZE9vzeE+@06Z~0{>0f@EG}f z&k@X*FKwTEw*T2p#Qcx7$A7tr|Dp7zw&8&Kscr}@1061FZ@au@b&7!;BU7#3pi@1{ zwv@FbyN<=W6RA1|=vUegd^*rv(rw`QzdCQ0sg-PUTS()4PM~;-u+$>i9@=+ zR%j_%FD&S#9woD7sNa*2701w~J5fYdYiT&ikJiajRTGz!#>NKYfqfmS`kke|WDDm1 ztZ%O^9$($ys;l;f8zYhgHa)zfyER_@dl5 ze-SLFJm;tgujsMMi+T*H-Q*6VeRb5+G4va|@o|N6tRFw=M57=Aknn6?Ko07*YWR&9 z5TGt4PRHYVNodFNui&Ka)Jc?eDt5sj;gbO;k7MdND_z_<-u33)w5xRweOfBESxd;1 zFqa{)?`xY8K3a%Pr9#PW<&^mSH%0ARdsK!xmq z_PJ^?f?XRrQy5_xbk;9{cO780t46hu@FfYA6=Y(;EA!wc623#l3KP|t=>7DK^w=V^ z5y~&Oz_^YK=v>A~EgiYKyCUT1vIi%IhvrO*W+o^dpi+Zfrk69LilZM5wbc`$co7(i z`Ud;)6^!sTs59wrRFY`L#ynIop2K(dphPT1)t7jwpJM2+m+*(#=7M)}1m$)xKGN^y zrQaDSg2q1Zq#;=c$?{!oAuE3F?KvFQ@^-0MB3s#?iG`?Pf*mYsR1;aKitfw#CLc z$#Nl}X(-k4HEy{mT##GTN!{8UNvDS^kpw<#U`r_yFC%_414;D}PU1{GUP6L^JT}mZ zrJVZ{+^6nOzn4K#PFpSz%``YrdCO+4NoD6#RA3Uk_UgYN!H)7TFH1dUy+Q3v?aFNg zf(<#H_mDo-vo(;_=ujR_Y}PFmD)}vV@fe|m%kZ^v8tYSKhio$HtJbNU)UH2hn$vB0 zlN_95%%MScJHHh|mJi{oRhoMaJmcCGOBPIcU1)RanbXv57Z&Yb)Y~+4)iNQIp9jfS ztX}q4y6w7DFg6-PjLXKiX@OLwB-&>jj2t;a790&{v)aSE`t!% z91JKd!fJk%R@g}{$x!Q8a+=E44==^w5C-5F0^g4Z>>;kCR*tDs(W(d{y`rb(IK_IP4~ zL2E`yVfF^L{!)a^fx~IW9~paGbJdao>)oRfygLdEi=*H}6AXXnWo4+1P4q&XDBsP@ z6o|i{j@>r8Mzr6G-8R-vHk!)}ik?&Q5AQb+pi11&2anndE+;DCA71`S{w(I$_(W)e z6Gg!Yfw)*!BozMV8`Qh7Vy}VZ>;mB%RgW!yPySD?!yg9Z{FNnG8I6_gSK!0h7y*jt z++mCcD#9tHG$3zomvcw*MJTs%Db4FrN&$&i^u+8p8kUX!=j< z7D|rR4sQRR)uJ;0k6Foq>!R0hMb}wcURkdy?NW=0>ixk%9ybgT5+|K4;osE{rFl}+ za6)x&DYt~hCh+t%Ak`UUE)Qu-3d0I)ay^>npGwHz?gej8@a3=rwl)SaK$=5tRB325 z)W+u_5MjXaVuHSz{TZT;wFR@D6-4 zn4hYK(miDy!U`E2%AnUf`$n%igHz)>spAFOr)6Yqr*{sp?NB<{^gjICB#bb+D*O2L z%a^+Uf*<_vlkk6{#VR?vTDw{Q-?iB|b$eAbP4oZD^4U#0;pEuGi3|SYJXesn z_pc7lz>mAJPg%{up)cWyx1u8m9W~Ta&^yAD5wRtlhsh5l$3seeTW_gK9tNc%tofvvbcA?W|1HsXj+xfLa>>Xvzzp1y-T*U#g45y&0#~1 zbP6I)B4*j9_V!}4Ol(7OvBn|2#-10N@Q;$q>Q+g1w){%X$K2ecnCJIb4IJArNuT+w zjHt&0hT3*fvCDYb>dT+bPTjR!#jR#`s(U*`p6v?~X7AG}UhE*kB(r_(FlI zpP;rU4|%_8zVe9!!%%kNn?u!^qhe_P4}0GjTv^++8{5{zwr$(CGqJ6mOl;ekI1@~4 z+qONiot(U?_o-9gdFuQ=b$;x7uUd6i?X^~|-F;o%S9cFGBPf61a%QFgGTFIno9`%L03Aw9t;w(E zOZxH(^_%F%9)FmjWnD93+>pIBY-?g@zKwsTg6eLcGWCZ_1;{)^Wyv%~&&MK1t-6fo zAKBo<$pN}O*B(Fw+(LW^%u=uTm#ALzoqObPqVR=9B_4MoV$S7-;r3@v&}MY=JEL53UWx2OFEcm?IOpds&ZXeU7IrG9pBM3@Kol2O~`Rx z!S$!?&e-O2w_Ps>^@S!z6dnBpWWrqrqt`Y)+-#$Y){wc2K_4tr3@41@(q)-NL2|Dl zUHS^2HVJ=jJ0~k0#m;5rgJN1rhDbfgMcIuZAtn@3P(7}W&~=Z!qSgl-MLWevlqIeL zHip7|@6H;sWNL#smV43V2i3eRb7+*Q8|E0Mc|Ldo8D@?GE7?CV#bfg9VhD(noRh9o zkKOm=-<};?L}VeFN0jT{bjFa+)E=BR=ocWbA(${m72B`myOB%2!eytVHg|Nh7uq^& z2oA*ytb#|8nohC|tKG$j*sSyS>*@s7&BN^O5dy+J2jRwV z#Ycd?P%Ijaf{Omw4lp!0Z6Rf)piXXjR-vu)Mi#gU?}{@oSF?gT|1d=9im-6?&bvL()he@=^(q_Q18;D)T9CyhfyAem zGoDP@6%%#X5eq{SheAT}O3sVUm@c!n$-P?Qq)dUQ?#1%0ib)S&;d%$_xDCneIZg@X zCvjg(@ay)fkQB*`H~}oC(Y3Lqh%fB+_2SnBlWUV*{!2}xF|GWH@MW$SzCQow2m6<9 zvHy9n3QlTvmj7}0s{azy%w1e06*c%IAtDzMjyA%g2^g@7o3Jub2?x$^uQkR@?Ee0> zrgz_T1-c&$DTjt4_vSIvzhyelQzvND({J-IIoWZP<$Y-WTfpD{4Q?BTKAq7q$AtR_ zEV**?GH47oHf>BoII~T74VO7~{jj@8h;GBjsAZc5O+|f2Pn=~Fx7~50Psqpn?2UfJ z=%8GxLlf3ZB}u<>G}>ij4ory8!u>$s_d@zW3HgmeSvxWpoGHxg#??gh7_N{&SJ^Jr zy)=t$Ipiv8ch8EXt0kF+1JKAH8!twQb`-@Wzh+S(=FVNPLp+eV^h1q?%d2=8vLlY3 zCPtNg^;nP5P&#HK0z;ZFrH_8R_7@3KPs)g6c&cI*x1K@fP-MioQ+yZ4?M1xounTir zw>_lnYDRYLE!cvI4DcWa+2IhKiRJwgQ_-8wMA~3*Wf8lFs|@&L$YY>V&ORk>S~7=1 zh$YHEl^V^X4CzCIF4@m6GfAcP|CC882-PiRU>2r<49|}>7C2XrFNR^%-UP4nCwzo1 zYY4cbuV*lO1-)~R;1YDi;vT?bRUV1!1-h1?L{Mf&d6gj zq1N@oT4#E84bskJwBD(NWWigfU@Ci<{bQgp<~KzW=*T9iX2xQ}?{|pSug15aTR}OS zja`8Zg9+d*sDV7%kLt6l+bOr>ROV^NxV>XaI|@%;Ne0u2!sD7dnjZ52=pX zAN;Y7w)QvJInTk48SOpda3{{n@g*N1|F92POR`ITU(~PcZ$&nL87i*))$jPgcYRuTQUYY1(Hr zuUXCHT|RWB!BkjLr&mfI0Q->~Xscbd0~Mwf5NBPYH&mbIpi$pN{Is3)7DDAc5vP@w z!ero8XT^!_%Ql6|X3;#>SVvU-$Mg#rB$&0Pp9j)vF&9Vu7|LkYXI=CRucOOzOwGp` z2t02FIbSc92^RLtT(!xtX3k@>yeWnzN6J3;r$-`{$cxUzG0L2)%GoeH*VjLTO?=l` zkQp_#V_vbtb{BQEJs=*PuZp0cj;4DQc~sB|CXf?(?CgL@kOC5cwtFArMF3S3jOH2%2aApuU z^0pJJnzwbq=M}OTWzy5;G4kDKD^SN9?b@?#XkGzmwr<(+jct>C?CV32y@D4zZSs$9 z>?%;sF#+_W)?|w#hn(dxJ%&JCCTfgVsM^qO1P&0)u;`q^^ySb<*W(^-FP>{*$G8$GV9rIy@`*S8gA&X*a`GSm(_=V0=p6PNdpy0DK zlRe0{khCq4p^B}wwUAXnBPl#4aM`@fMi3b-d>d0+&$a*4 z$ksOGAF~>_!Rt(x5AvaFuC`P171M75`<{<{m(G)(QwMy{x0eR~pbnrV&~STuq(%zc z;oTG8IgNf0!ehud`e=tzcNwMYJl@Y2os>U85=^*Al3^?5{3lyTR`V-n} zd8&inSB^Ew0i)X2X<*phxbvbivNBzk)kH1ZOL)EnGJ)MFayuv2JAkqCFg^Rbxykt@ ze^2Y-p-nyA9jk5W8KlrW)Av-d}l2e9uSk}!gHoP!Gv2J40%MI_>RaS#L%|OnL@OUM^Ni0@LtHlp? zi9RwosCOYU&>4s9iq?o2R`vQGa2lRP-4y_{s=;R* z;-etpoXKWYCB@*P)-OB%xw$|q*`aFcEBR*Ynbl{>8nlk(A|%Tw_1Hefk$=( znwVmhU#bfnh^IVx>|@7`M$1&q%qm0ImGtB6k!cN1$sZT>d7liRX}ekYd%41JQc_S) zgBu&TZ%jLHIX}FixBnN6s`%ROsy_nL?FGd3ntFkOFTK|j@Jb5EDZF^QZ=3YJ8cQyB zJdnh0Ahokel#=E@P}hrk*iw-TNGkpH&Nd1*V4gauDEYAX2R% zWJ!}-thTw8iGIe$$7B*kEH8Hp(tW za9YI4!AlzXDrS;-s*_SknO*VGjCQ-h)K!X3s)Fw2Bj-LG;r8)Ze>%V^_*v5R1y&CB1^#=eT1@e;X1epAxY&rM^ zYj_dN5%avSdDjS-6_Ff&gN8!axFTsZ>ulR2ONrlT7Kh4iLw~4mZ3JGGwh3t<$-u>s zYZ=kp2O$`pAt1egZGE5}P%iZ&-TpE7hyR;)w?-5Bf}4l`4sw0HjZi>9$NyWV;V*Dg z<-3u?KW8HSO(T!LkgWf1|7$A`Ta~Yvs$Ugt8*EkcE^I_zkvf1}OB=(K+L)>DIF!sh zji0W0hMR`5J?%ZwPm}f-2_mS%{%X!NABK!UN^p*q2J?>Vh zH-o_4QK6?j&{aUVc`6(6iMq&mR)KVa4^b_M%dRx-@JUiEXsaZ$(J*_#(Fi6%3^&g)PLC+k21@9jk4fx+|r~VHKXJX$^u0CU0|L^#jQlZ+iIOoNB6~(*0u;pqMdc5`vsF5mlPODWb=kPe< zvD_`X?ZewFXI2w7?iop>13@x!8h9MBqj4mDMCk;{7jr!j_uCwQvdsrp8(NSE+!=07 z;ho4lI#WA>9Wb$Ai={ z9$+T5ksX(*h`*#WGj!WHW1>tNwafIKJ9U$9$i1SO^w)LshcF9{&eyVb&q0EWFiZ5J znz39R2M4rbu(r#A`Noe#*I@}T9N^)W!Y7b#rnbOe!vZd^+Q|kTepJ#vyrB_@tVidT zc&+nr!cbj9Z(hcIC>Tl_&d7zKI8}38IH_*gJ>HwIYE#izXLsQ zZ4O3%tjYZu<6qq+NDZzQdj!|1@&t~XMB2mJ6Vk5V0}=>7 z_S>-4kR*awQ?W)#4c$hz#!+u^%7nt@fX0(o&nu0r40eLjvkeN1tOa(1l1dLOI$?Dn zO=)(7%_uAIU5!P;H&I!cO;j6%wZ^DYWQbl|Q4k4|br4u%&-SIoQTP3ytu8cnP>nji z{xqk5%hCQ48CEqj`Tm#WoVt!Pniv{?V$c~`U1m@mC1p>TAqr@GW`PhIiZF_MA{#DL z&)720+6o*`x|W4`-8Q(Gpb-7bc4Ai#9h^(JfOgKa1ltJB-Fr)dQcojja>s z7oHNH=hv;RPr?F`JH4pZk;uL$8xVFgc554I8~WcZ{f8#(xi!y86Bdqt3dh=ejvQYC zt6Zj2UD$+|JkGfhJ0qr-99P9tNnAtuHTd07R(p2Rx}J@M zZ%YhlZCNw$b>#O^OY&8l$*NY0A0fzCu)jtlDRqqFtn)^Dv@0oAE)qUUIh4Ix;X@Q1 zjG1V3R9lRJ{z0`$%q0|}!A#UukiDaFcvS2=?c6W~{VQ2*vn~9Rgbb$$edP~lYl)PrA2K{xnW)jzvaBq8nD9BWU7KOa3Z5%>Vq`Y+c zRKD!6Awo`=rR=KF@7nsfMnr{4dbNiL${y%0(g`4mjD%i<1+s`iI?v71nRfW0@tJ%4NyMlZ~PSJid-=FA(l9 zc*OcjHQxh7{)Kuur-mhGAZW2C-?EgUR`p9Sm)Zqem zCe9;`*2-vX`#Z&&EXcX<=koUt*Z(Hn)(`nVXT5?mJ8 zVJvDSUYTGwhlu*O$EUT&R)Ta5~Zi9 zYb)r(P#R10m#O1bespK!f@olR{c)|DbX(f5B5TmP|Ksy6bUJ@oUT$Fau)xHjW@N30 z&R!H{b;qV!*t*%Gl%&1r`f86x;Wb{b=Bc<*_ZHJ?HkFi!;r`vYkoi^1HhZ%GmAgaY z^7IZEo7-11ZLF4QWq(Cdd$CNAhFi-;sDv0dQ{9zYrb>S3I2vkW{sgxbJ%5cmyO3wN zJ|8}2O8uo}J^0E~(yp_)S;xAUeyqjJ?n7<@Wz#y#W^Q2V z`=w#I<5F$@P)VM0S(JxFuHdHu?ljPc&;3s9o_@rP${lN`alPISLhux&kNS>$@H>n< zm5=-mp!W#5v%n#@_Z>z8y|eNP(E9@hk&3tSDy&xn zt+V{9w08-uv&w8WJ}jZ(&nb*7IdbSbS&#Eq~RRv zS`fZ1?;reSu2I(fA)FJDn#*Y)RIhfXbl;kl;=35}7vN=Z?zx~U4svI(bAX2MOsJ6k zK?=5hN&i)qfmEBp0YzVO#k}~^wD!`B`q6i(XYjOx1(NsLOaDB&)s9@sl}}t({=6!T zm&DdN691W)(D{z}E_t0fE607{`}*14;f@*xE>Qt7Lwmx8Otd1Mm3bNQQn_KhiDlvw=mbGAz|)pqP)L|Fwl1c#KI`K_RAB` z#jW1vuHzc%eyLneCADu6?w~I#dxXS(fc^vd9P-Tk4E)Ln*TVh_fd9|P=c_dHKY@5v zGY^-)0X=_#>i^vNU%X?Rq@|-Gfi?6AsznaV81xMoeI}%ITc0NEEKFRm*SP!_-!^g~ z({dcZW$U=J$uDU0zJPCWwZwOID0B0!!2KQS9jfDe?$MV;8`J6fGkeS1{BV3cJyGD} z{h0#@(vb#?z{!YqPaFv|(1R&zZ`j!}xEcn>*C>HlL!Ip<-5LjUJQL@~xN9`gp$tyn zcq*HCTJ`rRW`hMRlg?ttgy+^l&Rh6sm2nO>d6unNN#?CZ&ORRrlfagIrV$?vlZfY> zL9N4AoVjsCR^@R-HuE$B%W-Cb#WWMY0;Z`q)jho1IzoPpX%$a*wmMy1r7$wg#Vp)( zkqwrM3E@Y{Dvu5cBF-~?w}_QMVZw9sx-n~*k7t_nz>00$v9?o~gSiVb>V#&l;Aunt zI+r5ChG`Ewwz>qZVW+(wn|P)@ZY><^^0cm=gKpE!5xN;MQ^HKGQN66gNtl@g_?DKy zObsXjtYaWPOUABtafJw3vusxmdkR##m3OX?knA@$o+8Nv$PWJ@j`|D5TAvV=TNG&) z*z2Nmq61}~&vKHc1;tgH_{?SXTQ1*7)hPgkyekRVt5~svDELC<)-9E@@Ulz z&Cl2pZWNS!6bv+H5fs(j74q&WjYT|a!xm05eA$`NMXBq(x|Vha*YX*9c^rvjXfJ3u z?AXRW?ancaX$5+&Fax|@;mt`dm&S_^g+`^**NPT?s+Wm~mxV*2Dq{n01w0u$C!x*j z1MdZ#Q(IHPl%3tFFo)NjN}NyB5v)1Uy#q^lsfEXV;gm025S$QPA)Fyx;+*1KgPihC zQO;SroD=c;oPA6^Oe0JKjwvP?Bm+!+Ok+$#OjC{s6ll~0daNCf17}V#DeAbFKHo*i zF{@f5!L>hjLLWUSPb(|$Y#ui8za_sc*gx2DAH6)zL3(C=L}qT_DQGF^N@%CF<#mc_Eod$1j%bhQrkIol8E_dVe3*yd zp?0`<5rZR5&qY6i`AP|t+z=18;;GsNvE#grtS$|E8n=Y@9NCmX4R$G>E_)tLA%n$q ze}B^s*S)9k6Wm@K${_#F$_+?bcR?IIp#z%fzes6=BGO?wX&B0sRFG625cZo(^WBYpx>&V zitQKrFBV`GD_w?7!@%PCcBS@_@2JT37+c1|#mens?F&J2$sUZnZOKABH$sB8Jkd<9yU^Dg#jEp?m&jYz#>GPIGVN>gY2w$u zyRUM;EKvjq{if&B&96mvL*+VFi2X$0Eawch`(q;nOmO5Xo|vxj=S)}oz2$DJRjD42 zyJ*gDk>rZr@u^i#0Fa5&kbM2hmgo8G$?U4-6pFv%1qaN9hecomVytk9c8zd}{^VyX z?&SYaJTbz|9~H?m;Kp*7g;+ z;u?Gz)KdZ-7-$-;*1m}2$Zm;Uiq@>Fx%JG~Ah|q|f$yw74-(i@=NRA{FFX8SqKl)f zqn3{M=hIU}AY2c$P#_U8U@>ei>|CnyCQ22xY>RlPF4D*m-5 ztizmG+po!m_!#a44+P4z_4Yj9?$J&BfWLK#X_!(;0C26O^`k*+};!!`b+3RFxc=uPR>Fqg?OX4yLet7@8B%$s`Q zsFt(RpxBQ$b6A+tC%^+?#~-9mO&1r1Gu~pLS3>gggK9#VgIi78^Mu-XA7UD2;0=4f zcb7tv;Da%t9`=SXJ`#*eGoqbNqzA?hA+&?k{cYtHB0opTxR#|~Azxfc7^y%qvOr2H zs^I5ccCTixowVMuNZlV}0;yB9v&;Q)L3FCLpNW#QmsPX-J#RYA-||2HS@ka5ulpkY zMfTADmhAndcd4qSjoE*4%l}TysjVsFN+9tS!nUEnLPaqG!;yE29tTF5m<&<&V;Pf( z>Eh9|PfpO(B3th#6aPBf*SJY&;yvk+2kFnJPUbD5-rAQw7{9=PAS$`3nPcJO^KDgl z9RGNqvhM=*AXqbkGb9Rv;!o+*1Apv=G87spNYdikSM@0%W+;)F{jP;TV^q28N5Mak z5qQtYhU-*IWr2vs3s*=03)2YJ-}LtTtrJ!8_aaM&jUBA$ZSaxTLVJon$Jn4%k=?5K zKn5}ttp@Fn5Ztfcqn>uqL9!Kgr|L7Muy^~p$5VGMee7c=WF6AC(-~U7UD}lP(oYiG zu-&y5e<^bt)Jn71B3qn@mZ{5*v0FtkQB21((aq(cLk<3336~3DHCSOMZMMW7i!K2# zY^=f@oiBAWo2W`xm&y}hcZ8crPY6$;fAJ zdd!p`hbLuIdM8||-ojM)PmKPSWCjB8sl=Ek?c(sbjMy;LFQN>!b) zah*tX{R&nqvArrPnrUwzZ)Ne)9b!9c&PXBnOT#$Urj!HuK3aR8fe+a}63)IOkj{P2 z^3G|bzMv3yN1;B-K{Ul%vQFhI%|2F_02W)2#JnXoG{yNVBIT%4ISTp&LZ?v-%Tx-g z#R|1PV}YN>B|OJ2DxNcmVey&|U5#xDZUWx%9MwjZJ`-rBi1oS%DWCo4$j$3j`z30X zCJjBjc8yG*1_+Fk6efV`c#zymTnm1!uXdFojAz5h3STxyGX(EHpQ@3Nu5@Dt9{je7u6G=7zN>`H)vPW0!7`NZaRrN@;fB$9R!{1i8z2;R~H z%aF(uF$HSw6VFH$U=?+Yjjoj(bVhKX0Eu|P=?Gd3%i#K&-7jSF4@shw=)WvcaMG3rt{T!%S1M^{<^;J-fN*5KqMtb^sqL>{FvOD3#l^vH zB370Bv_=yv88)0F5PbZv6i*aS$3Kb}yzY)q>im<2(lgb{l*jvgF5EB1_b1mk-rr+$ z{Xws|`K1UWc(~mZqxQt{+PJHBece(#Ts4f4xS6?_aj++0?P#U+etPWglcM0(b#`B|jtw__fb8>?^U-pfR%yNWw=K&S zKgH#8Nc}a24J}m3GoFsBHW|NB?_)RbUy7uoRn90?Dvh{FYpx}h1Z@}bf(b4I@5D77 z3|tBB*@kT!DAV6NycKb1FSv$4Am}2#QJeT5#?L?S=J|2qL!=_3J2co z-Y)#Q>4~9ZynlL2w5G10Va#s$pkQs?;4gUTGn;b1eAEuLE9nI-@K<4bIObgXeLyi8 zuJWDRuh0w)gn?el};n~ zUM%B<%=^Q+(wo=bzwU2iYK0(YY*$O$#A0=%-y4#Ts3EFu>pc1d;R&E+J6jV1);w(T z0M-zTS4^3%pmk|1j8o{{#?nRuCI>@+s&EBj0oaegiEtw&yU=X1zIzZc6e z9uabz?*XeGdw27Vnet6-Zj0INU*X-ssf81(a%i6D~wG9)Z(zS=z|=g*9U`q>~e7psT2_nr2H}ZdS8NLa91$iTg(2aQ9lSCl(_W_pG=#@R`-HDA62}YqVD7k?*Qh zB4w(y#j4t6Msg~ns(*xetLDR$3zezais!{tSRiZnq!rQ}osoQ{PR5E^A+HmqyUfYQ zgJ!XdN@O?YlRFFU>eE>hrKi#ctM|k2PLj*SUhizn2VNxC*nT0-RSmpi)ms0KWok1| zu+9?flmT;+M?vv5g>p&MfEwX9KPy4{guB8}=GDb9jey849bW*fYQC%=labEd?*$JkU^|3Ljm!~rGKveEM^&!YafT7$pzds4GAa`F_nwE3E9 z{vUf`efHz+{T>(K-E2(+I}{Xy-k@7o6LG3lxf2rL z8W|4{Zihpu$+&|>36tix9BX>);u82P(jrS~6MAW8cp6SPvq_lnu);L(#(8U;M z)TVqHbZ*sgFYfmKnp~29*5SJk8NXCvm)Ljg_7*27cm{RMCU9418{lG8@)Wh!H|ea< z@E~H(;kR+)rC>^9C~EB;-%YHbCrZn>67};nLO9_TPmxf?`3F&(y5hci9qOZQEE{Ro zM~R<`WfN1R8SY$Kt&z#B;K(3d68w6jBXlN6-4Sj@1{W^+I&vEJ^R?!Kfig^HlhX;MA@v@W2<>8S*AB<(n`KjOPkw+qUt+;htKVV}%F@d`9OEYu*)Uy1&SWpz%*BYjj zyx}zNe#t}>BOvVDN$49Gj@Bt+pX6_Ng7y-?0+_)fAEOxlzRW;Ck)R3-39;lEp)VM+ zpXzz!2!5)$I~7L(qEo`$rO1pm$=J@TS|bkQYNlX>4`=8b$evK;EWzx@f8u(N_>UKf zjLlgS^b3+2{jD@-MXb;r|^c;@M4G!8wAZVnN8VET6l$9!)Vh~{@KoO+M z_8e)D5ha0BO3+G2r(q$bvC-AK;a6j0L&WQBX=(F3I@qHxxI3CElKb)dCC_b2A{XfW z>)TY@29gJ-1!o0G0nPxL z0AO@m0%-Hlry;&W(n3}OWg%!nKM`%ib;kk;K)iuDkZ+d&a)Bp7vfw!(ubjIXfQ~>W zLEliWXu7GptAV?K-!L5bx7`6-pdUcZKn_IP#N7h`86bbKH)sc{ZRYM=V1M8@bO)|& znC>kge@I>EC&=wwfIn~*$Q!N$+cr+ORd)m66le+54rm>!8QOtm8>9OdU=8RK*agTA zaviuCwFbfgbK9<)56}Sc27Uy-faC>wV%Qey76F6;#{%Jl^FnAsY9e~z)d1HZUx95) zb*lhMfTw_RzzUjSP`Ebv!30Jsh08ITXeGV~MP75KJHw+5gZcnhc#{0!u5G0zwX77210 z2r>_do)GvLf zf$u6c{xJXl>DCW|3`fel^9aT%k$37QaqGj!q%k)_#mNCOgq8Jx}J88D6fe@xf*_ zB04-p{w^W9tT?2$?jI@das7JYg#@neXT8O;Ye6LSP6b6=bMq;a+Dxb4X^L@XZCOgR zncA%OWoZuQ*%{>bV$zH6n9j#Ait1pMBXL|~GWq%DRu`>2D70%Yw5|PGiD5 zayrGcJIcimFOJQ2Vp@HAMltl{EEOXj2%Q5p*4hsjWp#>MsCq}ttmF~r<1J+&+kXQv z>8ID}Gk99cfX^2v7T{(7M48M*Pu!C|J%F0>oLH zJlxZAEj4EkEfp;7tgZDA)p$t?Uke~LW7RmaD|Hg2IOy%}JtWwQ>fmYkHs4&VoxK-j z9i|kWyc%0N25=L~u!Q8YCa{Yf>?z;R-Up*FX&B40R`bCQZf9#`K&qG66M z5)%4;EZmYG(AzvQ%F4dT-o$Z|e;MpqHAP!xZ8=#?HKj5?*2cdvyO>p^TVGqnpDagL z0QYr3R>zs0U6{&kmU1E+Rh4gw` z>-C(;dQ$bq{!eAAoikB+cDKVNIJg=RS|hqCOZq1L7z~ricy&&W-ls|>g+DXPEXBCn zY6fWLNEYVHbAh#w>oV`L()3TwGzxU^+X>CB6ARY(D^(8r<*T9Rx>8hqR|)hkCmYIa z*b{Y{^C^BUuxPU=+uqB}t|aS2nwR_@Q^^VEF7~B5lPh+0^7UnTZePk^y`>0~@;teUXSJ;L z{s}}G?#=3~euZlwzH|2R*Do$MGjjmVW#HmwYNRDqEuE@Y=@sQigUeb z0Umc}xmF>1=wE3@C+a74qnh%HGt);Ko9fNRUwOl`4$_Og7%ZW3Tr;crLRr;)OvSe0 zL9(;7ZeAF9oFn`#F|vtzy~I}_*QATrn`XBd;b}0RK;*Upks`+f-_jv zp;2<0du+5mBj0Y(q;>di&~)i! z$TWQkm$!2sck27Wi>FQTLS{k&^`XQJnnwz0a^}F|L;dFkeZ}bGpOBo)0&&D7-5^vU zl}JMdSAlYFPfJSt6)v7?NC-O)6?AOIg%G8AC+uQ<1=*BCS|6HEI*@x&?+Y@NKdQ&y zK;)Gw>_u2Se0e;61zSh4mMR?C%vm%I(6aKS$=uzd^76_jQ@LrcZC|yNq*#D znxD05vIc82pnQu~!9B(Tj@YuR6L8qj8N|0xT&0|2>Etb;`i|r6PK@h@IgzuAy}+OS ztE7qiWQ?BNF*!(e>Q=$3Z{CiJ^IT5 z+r|7S6w=zZSNiCT(W?iX7TOt_TybO$-vz3?4B1l_Ji?UL!9l9 zoQ3EnX0v6sr-log>C~M&8_7|+Pt=s~CpaLW;+|F@#MJ774e-W2^^uuB+5xBdX>-fZ zs4=K`H}xrPct|&8%%qm4A=c6Yxrs4kwwf|N0g}1)?yFR0z{^$deUf>kXZ7d&&)oeh ztKxunsXHgOYH-mPaSQqLP3jeOjw0b(Y3k9$CBJ$u_-A0k{rLB&nvjzFfaRscIPFIDO4=p zz?P-!v<|;-iA>9vpNe6t8GJWF1h1dcmuFQYKof`yI6F}Ess^yNV!JM|U-BNiF>qJAW`XXx)&A}hyIyiBxv+_OC5ii1-Qs6gz3uHG zy7Eekuk;}B^3r1VM&dagJKf|Y;B2@s1KydAImdC^k-w*xakSP_y-J~t#hUgjWn1MX z?=5$hge|1A^!53j$6xbt4C3Ik^CA^-_%@x-!00G|0p8yQanZWO{<5<1nBqxtOW0tS z#Mgvi|NVDQuluv%!;NoFY-QH4#>;Tt!L#ONYU_v*VV8V+IYyajX6g~`N5HZYVBr3orZ z`{+t++7M#^Y6%_291Q+vns^Q8`?NSCqfiiut{&wyvK>yWdysW;jYRX3-yI3B=nkRe zRg_CaaF9+KYK>l38D$kdjy5kC$@1utssY<`5b&IiycyClivu zvkw=6N?SE4;-OX7C1zri-cp#a$0<_%%s(1GnZh9I`yEWLgx`P^su)ZHc^X<}lCCV3 zfe3MJ(XQKJYEWq4K$@3?v23TfJEz989omWL7Vq=sqbkE8+PEU;-TqN|d0|Hfi?Ct< z*$uH$PlORhe_H@%Jd9+1x2j?yW-iR^X32=5sPjy@;qU~<=(beBvYMh@ry9fo+6YVt zJn%0?>UR9sQ1i&@kc%f9tope~JMh?0f^!)B6T)M3-ZtI`^z~L}C|ax*Mban>`mjm~ zK0Ov^1Iw=|dx2yq(Xrre3CF2OP$Xp7@(=~}>Iekr^P6l^)o2WYddG*x4LuS=RMKzR zv19Ha2{;YM~S@Kj6(8L@2t9F#=uk$IiBr6hsLI1t-V6CSf(E>Io=}dyY8Zy`uaQM9Fy-MHnSR;5+3`np z?A4*H1%_8FTg*m6)A~Z-{N87q-dd(+LvI2&<58DtoGzcA6;hk9`eC8shb(9q_qUH! z4%H4N5@+d0VoHyqw*{r%hMxIjd`;uGR6L=Q?-y$41B%LXG>;LjB`IPLj3kd27k+u} z_>bFdvX%BfYs&P3OTS8QQOnX(dU6BZ1{kAyBo=<&XWjeEUf4cLt@@t-{<(pu@qP|0 z<(;ROQxCcFBk=*r`}-`uIikWUIsh5qd*++yMmDSlhzBSEW&l>*egGywE#UneG~pq@ zO>UMSYUIbcNWuf>`my5rG2{AoUOQIcB2?f|&=??D5IpEKxHOPba9MCX@HB`tgf!qZ zXigkPSVmk%NC!AWdPDq+*Kgi_vsHDNr02oIJQxmm+aBG}Zq+}1iML7XFWVj-6CNIc zDM&6Mhh=~BCF%RrP^&VScIg0fKw5${dGON+nh2V} zoZo6tu0*=A0R+H)a8J60-#yooVX4M+eZKcph@s7$S1OGjfe7|@7B8S5LY_g z&wwppKg1`{ZIJF@KqL?*C_V5S@)bpQ5nv3+AL0%CN~8M#Km+6t`u5F%Y?}b!?{)Qc zrRY^3wg%bt)ji5BgZf|J4b`B!x%Kwl3(Q4ycl=44vF)$%k3cscupUTPNZUr; zBmfEE*p<_S2e0pyp@VzPtAIfGQY+AmTHuN0um@Yw*c`!=L_i6Ug7=l|tRIHP6mSk? zJD{_}uq&cL^#smI}dmFxc0l<;?K(5Fh@EbZwF3$$U43#oda3v~Z>qfBY z()RURcbn8JAL1r(dv3jepa8#MY$Ko@e4p+i6tDom>6Vc4rh#b;{JpRV!RSc~a0;}-ZEbw68w^IxZqq+VeaJAs~I zUuC*o0o6bTpkKB7h)?X6mmr>)!)=0_;5YPf?uCXNFmC@`PC+P&VOiI~pHLjW31Vte z)+idDtT@q9P&OC-a~UPD(rtP5 z6_92CTd5M}$*-3#2h@Uq+ol#~)eTz2{~nW=k+2hGofNeIFxhVT29&3ZprNKfFzdKA&% z!0jnrLWSMGmOsJ!aG+*blzonD>us%|dDhr5+SH1Q0f8{%X5fdvL7cS$TJQn_k@KRu z!J@8i_`xb6=7IR-xnBXl5r<#B6d|T@lAFs#^~qK>!XMNMe3QRBqr;R7mVva4j;;Oc z7T&R-Mqg6QzZM$$qu~K6Kpk8Os}TCt z;H#|0(NlcjG5n*Q6=%7Yxxg3^97-WN%OE7X6z2=gP3Ku^QqR?>7M~OuWAd;hEUGNdLAxu?emg^u zYF?ctRQJ^w+|1{QfOl8#( zt(9YCqcFushBt?Rprun=Fid50JLCpDRN>k?JgK#sYHhjn$is^0TTLAXU$>~EFlb!s zQHcvdYOXa!XvSCZxfEkaYo1$ut6!r(|CB(FjZtTklAC&;X$a)u3@ z&*cyLsak-YvsamX2l?WKgIBtIhg}EJ^g?tLzhcQ|Jv+2Z>RjmYy!k0zK+g6ZOt#mW zmqecX&Yg6&*OHe)o_j~YjKt~uD{%*IN$f%yqNtaIolbhk6M=#t9#nZ>zj7@vOJw3vKp`>d#b%7v1bt`dJyS4*3$d zu)EDHzbtuQ^4V917b)(BxtFZtK9d-~DwA5f5dKz@#nfAc#WIFU1~NbFqovb%4P)mQ zN3S39zP7$3)35)FueSh-Blz}(6A11ebc1_vcbA~Sb#W5hoh7(C1cw9-5G=U669^8$ z7k7tUSm15$y;bl3zN+t5bxof>eY&S-_Dr9ho<6^GE!U)7)%R-(*Ipq z^U<8s<<|TC8zL@NDgwZnR4yo@)CfF+xku|>S~@KEfU729H0ziwo;Eu*@1anPvwfqJ zT`l|IqPEBp*1|f&D)@w;svdQNmkWw6^~O7dkIOoHU8neb{4m4bPaxTJ^ia>v&pX+4 z@KEow-^b#_otyb=Q@R-i*9WX@Q??le_Xqaub(vy4cfZKed&0v<*9S7ybNZQKmj^>t z4!lE4p{LiX97KnY?hpOh>qff%XsLG*75%8&!voF^&ZT2VdVO=)pTq znI*_JrJrGR_w!Z-F!S4>m)YZpiz^o|y0zVHZWqZtXsaz!1#}n|0|pQOh9;gf&Xl?S ztFZ)I-tN%@0)@-;eA@FM&xWV3T&btbFqUWX17MPMnmkaG21Y;)9=RuPSt1tS(Ywp{ z^)1WLIl`Z<#FS2L|LSN<_>y+5#lBi>G!yPM3#q2oA3WP5kdJ zFKM1ca;wE2A#ak!3;u}|FwGqQS53d%1A-d7F$^`iE9t*#=w=e(jhBWK2@i+iV?5qY zm3z3%t$uod5GI2V%Iv$vO<8BucRWrPhs$DaQUy&OZ!e2vAH0PqK~KEN&thtkKnauL zpn}=0#VOoFMt5P@Ll(^wN-lQy^QYu|um|L}UiN|JpOjJY;=fuUnn13y{u&AS;R8FE2*(Hnei+1KTbw%=b@Lr^*8B24j!MDwJr7HQe7QOvRHA$T_&b0ZHg z2IVROhYnp%5=jnKbFqh?-z2Y3z>DgHhwT4~bjcvHvi`c4YQ-rxcpvA{H@fgfFM-MH z{~Dx#C4=zrRsJ^%(-en2dA|G8Fv)i^-h9iWzM4hg~HswHkkyW^EW+ zDJIVyhNeescgbNf*TZ(t=&q7_uEL@ZL~gg;dob7Rptgw@to{BB zAnD8Zffx4u{wxXFXWHl>@%{dsmpakj?(Kkj99D@dvKWN=x3-DGQ~aAGkTsTY)>|3sgQUGq%Q`XJ#ZzWPuw zZaQ5c7*xLXB2AJ1p%p>&(S4WPcnDe*!LhM9W&C>b$rt?UDSUQowSW=l4^RlO{=~6+ z2b_f3l6S2>v$h~mz<|-GFXUzYy+Hbzm&rqyiy-!ynjH^8NH^Z$%jUnF=QcfoIe4 zLzgR#6um3Y-0qK`!#$4%lPX(M4Jadwv}gcAwd4~Ad=~sfGZN@AtMUWgQu*2 z@uf(y8$Rme7p3BjvBQg7`25rCDje|i;quK+LDh?kcWI^ z?twBF+xEq6*}f(9x|#Hus8Fvlg0*MkB?or0J_vPzyd*HLUnmT=4dEMp{WC*4H+)$1 z&_Y?)-nzahe-0?tBRVd;wyeuH?@U+{Gq!J@eqj83T6td5z=qu*Y+;|3;7Fbqlst)= zcl;@9;?QH@Y?lnJ$Tb}zxH?SKMvgQM?JBtTfBW1W4Wv9SZ3o2OCSV&D$SRz?u8ub8 zo%g3YdvWXJE^3b40wvjF@fspUK2lfn3>*-?J&SCW51&qoe8j8P_)Ivk1xmYCAb&Q+ zytgza@Q<(`D08PQvz)3mEUwx2a3IwkKaU?40vJWuZ!ao6t@l7vF<<;#%>>+#PDq`Y zzFoZ0%XA_fAQl__r(W{DuA+l{we~GaAWw zqy{vvcu`*$$C(QRrL*Rm6QbX3@m0H*PBU{7)wsvk$47_~IlF|rt2Pgo`=nm$Ws!Rj z@{i}V5I5mB$A-3N&DN#2nB=!N3j+M3MXa7zaua_KP+GXJZ{3Wm-d-7Zj}z7AwP^i( z5mOs>0;{z`&)uKx`hm0@u{bS5Sn@JWTt+Q@?DA5)763O;CD4ldE>K>jPq`pYMYB9y$(rct{{5?D!{-Fj6U4tGaIb(}-4G9;>J$;XwIPFLa9h zSuDKZ&r}QX-CO&?-nG%gC5xZw`)BTx8xD~Bn9k=A)((5Zfy7jx+cR;0w|ah5P0J8} zk!#TNVKx8k6W`*plLysEP=;M#hI7l%zP!w{B8*)R@|OuF@N%OwdvgjlT(S{mQrmEn z_pa^t(a05N9fG3ulax*UYLWIXdZ$`2nD|;y3=@u$99!_lrMAXL@u+T49YJtOO_c6l z-}PCtKg0jTEu30j>clnVniaEKGO^tS%YlZ9*nc&Bwl2~~|IAfj5?~K;OKf)!Co6h) zCpZe-{wD@)eTA|TsW3ow?fx3u3ny_zY!3x7*RVfBTvZ=t^@V5c0zjkyhl+Hm_4QG4 zkdPqXG~2((Tm^vyd&+qNn0qWPXJ1dcMs%ye>j0Z($F-(#f(kBFYwGlmm?Q5xSvQ1* zeVH}mmAzj$nj-p|O{I8N#rNep=QkF*@8N=Eb!cAyHkc{hUDyjdalD8(>blN#>7DLW zBD&xbk3&-BzAaL2Jr?lJj16SmBeeJ_iYjgp2UD;zE@Y=yA2#sCy=#laZGa8r(9`?X zyhuGvR~de4bu7=MI?gJN?by4(`@`AY>5Ko($hMl&GAq{EFt`lRje=Zj~Kov zUJU?w_4IETgG1G>OaY< z4L@%RwLbI<0aily2aggrJx(z4Gb#%PAn4?wBm+l@J8*_+Qf0vebPcP!2S2-y&+jdk zFWS6Y_{XAm@4uJl0&O5j8Gkg5QF1~_1~s#X4wuL}m=b3^CWjX`>FfMJ9g^n2ixlH0 zmC50uP3yXcA|cAhkc{0UTUYTWByhBoJ%5>{-bIYDn1trHT1Fq8pZNt$8cPHnEP7Lk zgiI%BrUaGy3h0DQZ)!&8uX&KrMM4$_kDyry;gr3{ZnrRv;J$=SEckhTNSe!BM8Lbz z`KHDV6Bvw4E@0JQBu8TAx4#TUs#w2px81*5LIE{Nnk&>AoN!4PeX9j5vE63^-fR4h z0QQ(&UL#e^e;PrKE#TB(jSKly3&BJ5jMyUK)raK<_myt4!|$jNVz^kZ(G}BWC^CE? z&ASr!wGd6j#xW+vAa#q&dgP;k{vd^XWYDUlxx_{FlI8yptCpa3NfY>uVhjcdYh;k; zA=pP3h-m1MVfnIOhN2v?6uqma2VF^4@x%HyV%R~iq|Ci9@&%h){2e+gX>x|Em$1c{hcBI;YM5JVDwg>XUu zB6-Fo5&bQnABM1D05N}a+cBNgU4OBSdSpF|cqxJ*k@(G2K!6F77Ycr9fNZ^KTst7lLHWly5Q;&MlU%fVD4Z z(e0XBrM9A~2h~|xmY4#Vu-{9RZ(0;xd>8eG{RoMT?^EC|D9~}KQ-vrxU`teNe$77G zZQY9`GCsj?in+b6M}Ne0_|`#CP`HY15v(cy-H4DuPNd4?&f1{tK^OX&zf z+HisOgv3_$@wcwP2L6k1)rJNmdFPg!=JSCpdh^WSRw1~+(1npS4?(MUioK;#UM3$M z();Y1U5!N`9R zUf2aO|3&a)7mWRP71jz|2d9xpRw7Q}I=B-O>)4MC*Fl%w!F=;bxDGaNR&&Cp22g?v zj9sQU(Px0TMsO+r(yjA}M_kMSnVzZlElb=1@9#3<0(F)UWB8BMwrSCS5w0)xkLbP# zhxgLHY0-R90_XfU0q1o5>&3!7i8mnD6;9H-uLkDW;4P0l6QU%+RuV!F%OQu2&k?%b}Z94B@u(N|kdevEl&g;N)OBSgeK=w*egJcCW=;;+TY&t-vdjm+2KOS#@vS2`f)sc6$?y^5Lm<@Y1)mi$xnKx@kI<|LSvj_ZpzZ}=bkpaL z&6<=8v_%oC#Pv>B&_O1pxHuuSPE&#+%e9kyFOC`e+56!2-q3bapU)}=0_zT9!Vs_H zI+35AmrI=s4?^=e!^l7D77939`uzg1iF7y29cwLzb+$JsVseZyhb)uc7Tw2NTAJXa z3_Q?d$E7pcSv=BV$IR1V*L~n5t@FunwkX2)DkmB~$2r&=yd-!de^=xYmXVS&TvmMOM6f}TRFcxHKSZ$&?^CFe#rs!6Ai`jep*Fv>+YoU*zh-ZO%DN=A!Q z2!k)_#!)Doil+VbecR|R+USmO$(SOVyMsr^m@JyIW0j(%xR8>oe8rS9tEk2(6uP65 zqL7*^=f*!OM3+b{l(8df_u_p5m0wuKh%;8)9ZnHV*tw)r|HF!UC7Z&i`OvpWEr>Z?;MbLP+Qz_D&gZO3z66x(FcoE;&$AhjzJx+!{J zs!?DHEWLAV1gP~OKo|7kDj=ns7V4i8^v?J7D29@$?3G1IMiPv6R3f<}ZO5AKMdgZv z?nU{^Ek!R0Mn2k|+L5v&q4+$T@xpz@qWrSb^>@Vnz_(+_)N!Zr&XcZ2;0jrJL(xy* z;{!tqe6jbfZ)IRk^2_%J;gc1mb@QFPw64?{`yX9=cP8@ds)y~&fjGbW#qJDg&r5DP z)4CEN_joTLmhOTvz_+WHlz^li89D$16m?WVN!+G}$4zX$IseE%cZNKwIrywS_@NP= zk{`O0hpy4U5=vLhDe8|`q_hPkH|}%=j8KI5bBw!K`7YU0|7B44P9+_X7Aia{plGUk zrAjN1yv{JQBI}o<=uB|vNYklW+?@6I`YT80bGKu+%#{i4#`UfU-G;ywB3U=iC(&jN zF{2;(@I_xbz0{x7(Bx#J=;rjBroStSdt(xGt=U#sqlxjbup9C3e&V;*q)Ihir)leI zyDO)Zbc-p*a#uXG-uTXpho{AUUJtt>iq-V3F+2P6ASpkfh8S=On9`B3qes`x0L2oC7ePvMUyWlI&M@0!NZ|- zWN9v6y*qgW`qQr{w;MB-E|3Uu#Yy3#`z^YyC$8uRds9LH@g%9(atfh=+{A4lB%6w{K$Cttkf2iat4%z(SS+tx}zX+0~|CUuFKfy zjnEk}rnS@=G3K?{nNHXZc8a}HHO=8XP#T60&iL4tHq*(xmNOH`v=%wD;|$(ch+`}A zAT4>+Yy*@$YPAKuKgIlZBdm}Y_o=+`x70Lr&GB@dAwpJY1s2_-&D&&-mm9d3ahuv6BbB4(dhqV%LX&&EhO=JVRuJK&s5q1fnSqvjw*{i=+pH+zOa_Rq|d!5 zlNGRlb&^eq=CyV+&fm3u-C;>ths4u$CTmYIDJK@*d{Ry<_24V1WbOo%+>e*!aixJG zW-Q}Z3w$04&R;15Bo7gp1K*X{Gnu4*NL{O-7SY|Nu-fUJq^28A7M)97_a~K@l7>c- z3gsV>szbNS^U=~Ig0C1MPy!_?wJX$=R7I-KJ61CVDi5hjLBDvyt=LD)=@Pl!$Zp;L zB{A>WgVvmg{r3xlS!WX$0=rA*$Er{=`)xGJ1%hV%#PxxuiFB^*xOn&}v=wttnE5c_F8D~dFb0@3+c11|ngSwN;5kJdkC$kwe?Fur4N#?%c zUvk4v2%|-#8%o+7RHGQj-lP|_{A{86);=vcEz~89wtZFLgrRm^2)o@ULvpJGy{YL- zVV?o4@2Oex^|@!Wm6AT1w!wzT-fer^<8R1p!8%mpOROtRjI|)H6bd%?>X=K^7JtMF z=~>jK8ih?u?3Po6e_xA0%-e*p%YCM7*Rb>;^OnRdPz1_bDl4C;E%OM4w^Y_Xaa*nt zjBoR;d}6i^IrF!QpT{nmITP&u#2U1J`(7Rt(4AGk_>+p-wKIZP_r5JP)rMazfYbJ~ zVEs%X7>zU%y;Q(FndJ1<)5C$cMyNR@lMjO!F9s5iXKaLLo(`9C-?yA*jHaBmJv7fn z3Uj7`hm8iGhDkfij!z<=u>#%wNt-AucRmM}g#V~XnEG+CoT}DtfMvhu6(9^i_8ckQ z9V$NFyC9% zyf0xqVH9A*YwVp}dGpAiDKp8XrF-5aWjBSKLuF#nJlmN1t8JpItD17|&@`jo@vymm zVFA3;vWu0ojlHi<;3+$?_jR&Dn<>)w$YB19c%^%F+(-H+M6{&(~c>yhzbtmRU;C0B0j zwFLz6>#&PBd~;(Ab?=|}YR>%lEg{gIcSI1UXyWeNZuZsEB8E1E!gJt)hQmL4%Q`~u zZ9oKb#5QIPH!O7vh*`s>!UN0MlEAESU-j)?uYW7LW65NJGq1lwI4vkFXgkrl=uz0z zWB0UU z@8+X1!@;iIlkiVHkI-*=Oi*-sV03(p6MlojsF-pWdS{F&`vISFm;7i>`jd@yx188U zVLq@j|DO3lL9Rxt0XY3yu9>9`D>TGO@41OJNJd$WrM);NN86KL$E3gF*?hhm&$?S? z`k1KmyNWZRhxTaD#~TJY?~3QMf!`qsuAm0Xb~EXI!OJ4L@aXsI9a!wsVxf{2gP0-F z={$c3P9HGiWZStyH44ReLodj!%BkgAFtNg#rH83yUC0BqHWK((gTrr>R)hOJY|h}@ zlGup$DGJFnX)lQp7{{EXrF}WJoKz;v$$s*6CUWwW>2)sLP)n2hryUBjq%~HZ+^X`b zd=GB9@Gvv<2+QE3RfN1L^ucHMA!|+|3|o*srchy#FnHTHH9w<1FpMxN7s#tr?TU`E zA$KC55(i1aOvX)ap7tm#wk8_qgCk;d{hsFIl@e-5=mC4hq=!GYTQqmZ?!_>%Gb+0U zMAN#v>KhR}(#M?6)`^%V{Px_h)f;?PzMaZ&1&dRq8&@XMrsV8zC+++VI7wd(01%|u z-`8om*+LYRoq`j^NAnIXi*|?~^jTZ$13W%BB`21oh_oAD3+-l;s8dh+`x2Tz3Epga z)Ox7{`+0mK*I8c(2IaoJNWL^U&Okc;*h}d^XxYuTNeI@oIByQm?x$TbV@n(ok#T-=tGFzRS!n!*W! zS7lCUQHMmW`mBi)v)k^LvWgN_YV~W?M%jb;-b<##Qd7Q^sjX(NUD?m%=+>}Pb5Gj( zeTRL2;j$rdtk4a;YI4m%{1u<-g!88^&-Z4F99v$xk-0LcYsrchS*g!`Ecm+!5i>jC458g!pLu?_bK}c1?`Xbv9IFhhx z!nSy8_^TOGp47*a`YG}D$CI-);0x?d}5yg00X_Z9={B;si&3Ekw>Q!(;)g}+hmz!$sdi7q#yoHK*h+A z&drYrMWKVqD#I*l{~7Mu5+#?3 zj#xKy21VZFQuL?A1{4f{S+DeKIgAfX2ATc-3=SATnaof6`tq~z7(LhX3TFnNf;$p1 z(Yx5%$UP9rCZ!TehGdqDS8NjnLMl4hSM%AbX5*;3b-LBHlPu$TT|9re%p9N01?gx9 zt0jWh#0OzPLOpK+57{1AOcl^ct(26_Gkqh3`b5VmtP{AVxTbgtEKSYCr#ePD1_FYi zH14^+Sx|iU5GeOG`ZdvBjR z&TP)|&OGO~eN;K74h!~8q4g>u94IdBox?b>!@x6F>D}Ps_RkA=?!8@YC(8JDWERQJHY=%>|V5*d*?`V*(Z5$;=28tFa93~;E(?kpMt%8?NnOo8;hc*<_U>5 zEe?aD4;NQN!v!2xLeONmt;H$Fi{#}ifQv}!e=vXR`9GtJ){ah2wA!Av-sex8cW(r} z@`+Qx{>8M!Sy!F0f_=8>L`>ddyVcb{Qi_bjMo78Dq|b!51QLw1Iw=1xS?$ZFZpEGe z`?iqsB)r_Tfn`mIlh!lIy8^*MB=xfYZMsw?AOf)3*eLHreLBbj$l7Ual!VQnL#czm zED>;$iyxW3t7y2n8zWnH8x*?8Xv zAuEC;ZZN)Z!Rv3Q&nENU0eb3<<629sy}l<`A`;1a8}>94ZH>m-U7AG4;BX9U&#}T- zGOCn3pG#xxjbC`d&}eFuJj>m>m)6gT2Sd@A7M>UKW}1m!lhTuXyLCM_b-t#JrfqM* zBTt#P`NnQf$_N3>3;>*@kfNto{^}YD5~|?k&1mE#0~!_r^3}X6)WVKuqH=XvgmL42 ze1=F~9>+alkDCX~;gnGJ;{ z*O^;wvRl^GzCSfvLULMqKOuv0Sco-|S@kJNR?SMEf7#Y1%DZ&+WO~@SDR7@w6%YLV zFM#?4gqH0yct{hK|JB!*@c%V2{}&}X!#jXtkZ5?LBG1Ec^sD4q)JQ`rn?{^#NHQl= zp@HJk61SO_p7-%=_WWsGGvjucg`qS`s4AaX5BFP#4{loyDjd|f!qgrJVe3ZH(m~E% z4gMnD{gD!9A|lQp=Li4h$E8H?b;MU%X}`EX1wZyhJ)+^@QqhUZ`ea_{_0fiP<5AIz z%0oo9T>A*Z7}3=6@)<;Be7;^#Yyrad(O&2}Bz=-E@VBh{Si|(tYVb@MVX+s;TdI9V zVL=4z3>`8)85dMrfqf`pIA{PoafSeCNZJMImU|yb7zY{Df<|Gv|Y1q(xO!yjg#Ec~G!8Z5MP}*RbshVf_i_~cU z?Pb_rv7<@wXzv1Xvz=YEk5*)Qlz_Jf$4ttQsj53cMCwf5-r)g2*-*Z3+7T(u3u$b- zjb~h$G{KynaOwR=i4$%I*~CJA*3wz+xG<1@TeDGfdxH}Jd-}nu`DZS%A!LnjWKU0| zo^P2^){foc*q5&@QptkFet$ENyDhd{UeaN{ty&JuMyNxAPF>r~Sk`z*B`034;_}xJbk1-!k6(qt`mu+}BsNvpy?TldhrA6_>)tEA z!F)l-o=x7!=wvBd%DTpy(Vy@~&vj;1)*jfvgQ8`$Q@0>r%;8&QwlPnRqtZurhw%Zi zqq>RAprmj-JN6h(P0g{olpiK$S*4AN!O6jVwa=9y49({)dpCc?n43L2oTB-ECm4Nd zx-GW()>uENo$8G}cOx&Tmeero`lX`89 z%YMp>Crp&#_L(_xD~55Zd?nt8bKnBx`OXiV%!@FL`>Nu>p5a5@oVy3w3x^9Etsjkx zv0KqvSu!MVWwPYnmZBPa=!Q`x20OPb7K;Ik7v3Pwq}KPkA-G#q^9gV(pd}yP3RwtB zK572io~uuYZWsqQ_QmU|3$JJFEf1s3=z5vx5IdRz`FhPe>+MG@Gvr;;0llWfEErbZ zW8h_pOi6wJJ-3*%0Cx;b0hYwPs;WLL_n@-+qP6;&r$S8P&$ep2gmCu_4pE<7-`O^bjyew+k=cB)BpdrFTZ%Q}^NWT#^$5O2U*B_iN#N zuQ2TM!jncWdf`glIDS zTD#?o3-uOFi+=cr&5wN_iQb2fqm66ptEubZR?`{FrBrT_^)<5m{8mPE<3VYx-XayA ze$$YW?-Z7UDo|M)ldn6iCDC}Nb!_*mieZJ_sy)3n!i9XxtIx1cxX%y2hVk;14$6Co8SyPc& zcT1(@jXGQAs*+zsMOfO$jyTYanCypJv$kQ8`=fs z99ZH;pG4l+yj!W$MG1$z(OCFXi%4<}byKFXN{COSxnt>E zm7+)Gs9O%bCoA#VkWDKkc0DwkK^pHb9Qe%fBeL=WI!NT*zGQ|90RPrgMIz(aJH#UQ ztz>IuK~nI?X>*btJeOjJFWj2IsT+k|z&9>L^J#PM9Z~43-9iwzTbFT7%tQG|(e4Af zrUaI6Tz~?r+*8+x<(6O;DC~!`^}}`vBj-mCL0sREfG;eX5}}8?h}yB(d5TzV^sWtg zOcJ@HMZWty;)pA;er*n1pYQn!1E^9zv;*jm66KC+C7Z;GeoNfG|-D_us z{km3$ZBqVGSMAAxAAM7qx&f_k3Or-br0Q??MoO0{DyQMTrhaGgzZwfeUkL0CVz+M zFK`ldZ#6Qj_v`Du3;MYXX~3770^2@=)hQ{~Mztz-BQGpM)=+XY!&BlVTUK6@p1?md z%MjGK6=e2nJDyr+MrVgr^jVCp5qZCTRx_D7X;dhe+9?53_>>uD05-uUM!@m|ereC5 z3%?@~VHyYri&{{D`5O*huIcMQ+TM%U3#fj#7~0 z6S}GC=y+ud00g|eGSsc!yd~;L*f8wq2u^494WzHx_9o$Qw%KJd1r8oR8E;J8R{B2L zt%ER}yVEo5eSFC|ocDJPO{=$e{nn@8=~Xk%g)1^d_+Nthp+Lp4T%V9lopyE^YE~!4 zM0~{h$Jsju5`|5j`gxec+x5p>YS>I%I)1H~b^DSo1<|UI<5!=EjQB5Uu0Qhpdm(-~ zVl8!m2M|DqR&}_KF$-Jdk%;^Px&)&KDYGJiJfC$~x~0 zwM|vxQi!S0$?_)};yl0Q@>`=%pI?mDyy7TVvZ6Y})8P$3oKp}gM@=T|?|v?ZRifmpK1ce_2ZHTgsuR{jvFPK*5r~q=Sa_nqE|G zc3-0fQG@4e?eOm(sWs6jC_bpZ9t;BpVe|urA^UIHlxE zTQp-XJ{uBuqmvrn-s22*_s?*?mp&4L?x=D@tx{a2%YopxL-H7KP*;k41K%+2-Fuan zH~+Mmo4o}i5{|Ru_P;_u{s+$gKW+XGO*TOBp->=N7b7vaDmVDGlP@^$l`B{`d-}#| zw27ipP97?@HeN zKxGc&Lbb#jqK;GeA({C_BU&Sz6OTGxBVHp^BUU3)BasvB`|Iy`=G@W*(mZ{HVdbc^ zxTUlcl9|z*80O?*j(9e-4w1EDeb}fXG$&!TJbe^lt*F-(Y3p?W!v5 zil?T@e-T%R3+sN+G}@-mr2Z|TY0Rk5zPD@oJ>kGu@2RDg{*dr&t~+yY{Kxjl$+@+d zT{oTgvo0a~uueJ|_o7e4@p87y&sxm9Rymz4wS>58q6P;J9+ZHChO2iq=!Qm%QTH{C zSqX`1*ktZ)HhT>xWWQZ`WpwOT_*TZMFFXzgJPclo7CY2erD)B4sF+dAFPZSfVz>2g zD_XALW*1*~C@tRS6ImJEUy+SBF`fML){jy_fOk5uQoOjoK}F~DrpyRu4pDvOH%*Rj z&H4UDnBsedP0_vNIj!gK0y$Uu$4aeZOYBmN`aJisIv32mh*kzvY`o0 zWk=SWv5O+cQ{Z@w+;C8#2ADpm>Du^vkT^5h%PGpZQl5om`_4y31U^C|8#8YM{&8Eq zYVCAVS^@6A_O+Meo<_&ExMWya_;EzUAz2J;t~UC!$}}M1#*X~ZCkgF(jAeMR7%rWx zo_K4dr9XDh1igP$;hRU-Oea?+{;HOs;OyQl%Ag3B6(M8PXf%m z{oae6uCR*Q>_eX)Z~!Nt$=-hMW^@#L6H1wxmAku)lq+~jtTHaNib0t-(dcQj|1NT`L zBAmOL-BTZf#kmsOQ5H$0vd1}RL<%t$sx^{S@80)pw6Ss&ed5u%l09@>T_ zlv?mdiPzS#sMMCHTEGlT>LR?~nqGgJdP#_i{`prw)k>zj9%nzQdcwqo)DJ$t%?zrn;sm0s& zmi%O^#%I5K2e7OCq&-vLneS*{{fGTlrAtPu?^U>iewY~kEl1p1daX>A#vDu~jORuf z_mcynsJ54JTuEt9XGPSZ9`8g{27<5iQ{3{Taf{eyEo-@`MapeZ^RW!Bt|!b}Pw3n{ zpSx~f=@K1H#1UDo!Z?X*Qyf=NZ;5OhrLuU%Jh5X_X!$+XxtA(Pi0T(+qJp)3GS=NS zYTTmf+t&`J`n=`+N>;Vz1m4z-*1hkJpQJ7Nbzbc`>DvfhSik$y@J9h>yEOB=yI<{V z{UH=j{iepG&3E{`KMg(I>|N;foA8FRwuSs-1lwSDi-uu=y+S=qeesK%&j`_mv2>+> zP@uIMn}?iibS8i0aq8)Gr zhI?OO@Nj1j$tS~F$xS!T39iJdhzDHOnQ<&t_wVSnxkQwhI;##fRrmg)VYYGlG82YL z`Y@g~x{B6nQeRNxewmdnC#ImI^-pyhmra+G&O*D{YWfJ##s*v1> zKx9ix1YKG>HVNxVgHuH(eJ|5psC#d1@OWy{d3kWG*;6EQ`iHkHQL_1dFj+tE;v+N7 zJ>VxIqlUYfCQ!}cnA#$A2QikWDQe| z=9DmI03l>6P+V+|87R=>I~!%0NBEN^n6;W4G%23&v&s?oIPakGaTj#q2kcmheDjhi zAnp>z{7%)P*;a(wck|28dvu;K$R-W><1g0h22D4&z@|_IUsL`I4A>)YGf?uLF z(z+n#VLI4{!HTg-oTtypVsR{As7g@~y3wWWBX;|SUq0C1 zoc02QzOB8)M!@bgk^b~Ay?+)G{yxZgk;qc}%Tl;bL+|~q2Q5xGzG(V0(uZL><7r#$ z%mq#s4+3I5C-u#$)1{t>B?PANA%vFj_Yn(m*crf=b99XDst*CPW;W(hk=De-iIB?4 z;6GAwqccw;QGU2_Q;po!za@&u_b1{#HvOd}n$m-A7rlDqJ$-#R4y>Otg;>$ESNh$S zkkw}@{{#n#{%Y(OYoXln=MzoDlKzsg$)N&|f`xcN3{11}2|s2f+N6qzHV~ER+N_gm zsx$G{+vasK*q;a&F(MLtvI{;&AL2%>L`aKs?a&Jt!{KEz6x=~W+WRv#23k!v4aAjD zq6GP$eV>lRj;f;;OH8mUd!t2&ut9vP(;)yk7{F5A-vU`1S#u8yKQMgT8<{Y(<=!kV z*XdKUv%eKx7pb`LZjacfXhw^RgL!ZW>KP>@C{W~APxe!&pu}N2iiz@aH9WrKn+wxT z+$c+GzHA{EIO+BYNH#S*{Pb56=MCaBbW#dHdKeNCe3%Fu_hTJm!j$sX&6a7)n)N-=J5m!cj#q(=6Z3jXzbXnY$H_j>MGT$I7P_=tdgBp^8va7L+a^cB5{Krb?u}-X6W0d6mMxn z%5K@nWh&HRyGbec#hyKq3y~VUIL+s5le}J^FLa}+dUEI=eH@b>ekG|xhZn2@ywV8u zWwPEAF36cmlh#mYUrL*M@Fq_z;{Fc!-a?)IO2*mUL%L3O30F1jJCz-JRqC4i2%^`hs?1D_f(E$r{Fd96R0vktc9$5lbW7}JRjY;Ou zK?m7MVtZoMweQW$+(r86&T%C!m%lhuV>6<|sNi7T$907Mi#lVHbvJAkG+4J=%279@*NOCqTj%W$cam#Bw#rMT<_7Oj1DctkOUctjshakYr( z>26fXOH!gb)6kV0%Dz=cQKFBbG z^G!zH{Y7ZPTcHMafylA2pq(8jXFc+<2wP~j4%j3znN4#&04uk+2gkAm4=yW+DRnLu zk830K<1y9(=<>QR9F?S;q-_4f#bOC+ zMtMfrJnO|`I;tMEal8vwUnA-wwQ-_LsGp_bT3okNA5dVs#%RuH_Q(-pkI{FEYBVo0 zbCiebO}!fLg45TDdQZKYc=4()6cvYBH0}bmuLw1fS~TI}O9y|H31VReuuAMRb(x8ahO=9U2~m6PMWT3A zzmb;2ZUTUz@mX(`lDw)Q{l}l#Ieg*^6#|*(TQHyv0 zWf(iynE)UUqXe^EdPkGGO1LHns{h2RVSJBE6731b8bBOCzI<1wFQ=js>7RuzIiiA; z0w^vo2N-b+6a(-tM+eGq3zP%ME)NH6aSN0Jh%c81_Hhe71W;W<2S{*%iUD|+g9913 zK;;0^%iRGzT%b|_(dGQWA};Vl0OjTFfB^1>Vn-H)0h|-3irE_$U z0?Z$*9{nN-Qvgfg1Si(EuOPX2m7T1_%y1SaXr{a0h|}*&5+;UieA}JSkc~do+b=_R{*#EBi-2W z=vBGdY2{hQI{?SHZAfExo1m1bYZYAq)Cmtv(9f7^^kZxE5O_O>gwdr1wF- zFrbia1M#Ob!`SSv0FGKi{N4Fq6nX)l3p?b$0$%Cb7k21=ZT>RZN zi3pxgUwR~L^~U;nCJWUzs19uu))ZI$iWB1LQW((2CPDEtUlxjKa2A}dls1*NYhCL{ zuv>2h#WTC5A8StDRS0R6H_3Uop}SsM)GJI^cfag*J{;2czV7~XXFU<|_|L$4bB4bJ z+E3^54Yj0mmr%N43wM2sbCI#m0;C0R{9TdJtLvUIhB5E2yClK4Ch7De`y*H5JxA(k zQ|Y^U!Ra5;rc!qogVWX1&S}O4LQCk!_Q$V`dJPMhHgvu^BUL6bZK!_Tz|!T??2`Pt zf%7$=X~X2J1m;47ER^aO%(WI7e;30VI%`H6eI@q`=39$Qu=(3e(%_duLQdrX}jA!f76(plXuh20^v=xzivN0 zJw{*Y8YJA`)8g+s{-QWPmrzXONZs`bdND5yXk{CId`!gOWwjDo-$+zRYaVy&=zbB@ z?E3hxC1dnes1>yOqSrIck9TxGH~`aSzJqzMxYs%brox|k7Z*}6~a4A-$&iF@Tt`o}Y^Hj#aa3YB)PLsJ3!*k5g_Wc$uK z*i=P7^AbzM2Z3B4%D)txGi_^~vk-hdXV&_7&dT!`EFT|?8A4Iu;DN7vAH4&l}5`9k7l>?yy`$wPCb`?NggHfUZG@wif9vJTKM+?e@pn(~q3ur*u5K^#h zbO9|WAA$rXi3ZYuvLHlYy=WjUC=Y@K7Kq-E)@AtNTzRfR=Uh`v2y+JKDNnVrEAQEq zSh~YTicOJ@O{nU-AN~u$`vAkPiv<4B-c0C!TPOd|{nswGZsu11xlFES;7*``>$Hr# zeD(KglvL%5q{Fb;d-s6|+05}FJ+_rMZVvJ@@7RBO4N~zV;G?#lW4I+ff<_U;a8Z8X zvT&4-Il~PNk6qP*eI*OdP4n!vs`}KT*#F_{Er8-|qG-Y3?(Tsg2~Kc#2^xY8K0t5{ z?m9q#07=l`?lL&R83H7@Gk6AqyF2XnzgKVf?N;rh3TkTTX*qrF?bF}f?)&Qey1V5V zxku=x4&4Y*jG2)Z>8F@(5b39pJ|F2PpDrBfr8G6T6X~awejRx$lRiuYLNZX8 zAb52`6lj8z+cV1>$i5{-5;5L)qKKN>o5CAN6+VaMVmR_1;|s}%TU7^jLwyNZcxwJH z++q8rb~X?DxZ)cHslfnwC}c-RqL9U_CSiAE@{1>ChCNfxq&ti2$|slN*5Yis(wt{*`=7L?Z4+XZw#HoP!w>$7JPua2KYmB;zsY*fI$OQujY!`Y z!{0|&m(TtUsyTF1`@$xGk;Jggxr>QZQ25TkHdXBF=x*7Iw*`HyT6Q(2>obGyB{i8W z%JSXi8>_(yZ~L{SODaF5{(3pf*N2Ge{V0fgWK$Pv>o;Ujw8QHIg3UA)wT%lnD?26C zw}vs|Td)GhNBe3_e{*k@G?>^JB%Y;DQ@+WW#^t8t9HvW{axAI-qelrJqv6~J9}w|J zW(xM#1t~C({;7PVvMHWi;QckdhxDrN3v=m?*C{h=`upn!PLkx;Ij%-m(g zB;T%$7X>~fiwHaE2qgErbxmfbm443d<}`7qPD4QM)pl5}KWg>y z%2JC*SGq_m)*9XJ7t>P)#Bk53YH+YN?ZS7dg(4Z{ioQLW9Y`?8J8P@_;$;Gc?Za6@nG!0vm-GW3~{xyjs?T z%eO|ju_3r&D-Z&bE8;7nBgSR58%#tYgbx-3d4&8wkwtEyZeLF@5rha{1SaA&BK_BA zI}=P<+HMXo@-yPF=U8w@96Pa4l2tk7CbCjYJS1#_Q`e+V7BivHl#^|5LJCPMHQxYz zH{LEcymWY?G8lWpn8lRk&ZrC~z~}YOToflR{9)5B_YF<(r>|YuTpVfy7`u+lolZit zvQPevG4%+?@C*FLKlK+XU%RxYhHZ3c{<+F#veTGhO$AJx)nBx|3=&=>`N}O{OK{ao z-}s~c!tN`5l4td@Ax-!Lib!HD*Qq#PVDZ0kIjilxOv1LK)BVj6jW0JGW_Za|YsZ|` z9upik0gDdY=8=l|j?(fvORf`vI7aM$=^OEV9?>|CWcKTt4MA_!lT2H{_AIoAZLG&B z@B%!TovW3DPabvf;PbzgewrJM=0V9ok0(_5)uGtEkUV}|n=-ivISYTXb!AniCru(v zwXFP8DgvA*iTH7U&`ECLsh`{fS(0yWUtGGJpaenM&cFSlt`|){;DtIvP%uhH4F+>p z*cF=J0LAnFNTJ$2>dG4mBr_2r_&=>;|63j-Jx_ZlkN;_qobq$ z#+cVa0-ux=taQIkmIcSR*L2sCT9O90aUo~hFdlaO6BNYf$L2cK5Uf(hhnbku z_ilb(x+N-pU5~A)jYmVNNPg4BAz{ifP$s#37!&)tZTTv2X>H>}tVU2hQIg4eJLZC- z*|}s;rbyvj)i9mC>#h4d7BV75w*#wTh*naCe*o>M)nPgO$G^(@gFXK0i2~1#?{ip6 z@oEK)bZ{RN?I{xJKd*B(&3ZPEK{SO?=1IC?I=(YsF0L;Zygl`=2e{YXAIV%FWH`l2t)d1`=*dp;)ESUeG^~-4#{ts!KE| zr$A~VE#Bz5MwnIL6c=8K#zW-vx~lIA3QB{~@zRNMFm38s|IAbvxrZcKsh)$rNA9_N zQ{zmDQ#pY4qCIhg1-@pjeY(nOj9V>ELjfKv*nW5(a9gN1Poa6pnGn=RM(9WB8D+U& z@M@0ROKJko10iPpe@f;-W8HCO>KH4pkHoF{a^_f`RE#-~PVm&(jn-vL$lbDVofS~2oDW?cr7J;)O1uW>{XO9g0FAmM6hojK@-LH_g$aPNh5;l zrUYSllZse6q3fd(arDLSa=f7rTsuK|;BSij6j-z>@bLB$jaK62m28lty;%^N7ZfQZ z(H`;I3(XwC8>|z-P=3URpT8ire>uOCoC1}TjLd%ztG|=_b{PqC#M%$tTYF}oj}M2e zMtQkT!(|QX_?4jbg}*^F{KNnA>u6pq!cZO{3>4%4m_O)$3$8G*aB}?rW+F5O@_&&& zX>zL*M>&Quy|+`VW=vCRoMV5Js`l-@O9r{>esK~np3c-ebynv`j;@<65&}iEs;bQ? zw)rz*ub&TBAIT%XR&Y3uN!jKeA1t+u|1l4FzM~1fK7Ac7H4>S>p+mJL_>l<{%nd>N z)?y99wRi)u{!wEGB3rh78%Qrp?ql?c!jXu3-r8HshKBk`c_Km-kAQT>BbX|9jopsw zzFfOeh|HhDWBg0Kmtd0%DG(8qsm zol%*ktxPw1I|PYt(C-z>GK#dV$zIl&PgCsUE+SX+wkRkcd`CSw#4_wXf^B8;-tL`o z^QJmGYT=I&IJJDn8|RGm<@(Xh#iT65pH}~3XCPT0=E_0dviWRc-Xo@_9I4fNMv~?s zo(EEWL6%OLIa{2G0=2S^y`DDJ{&U!mlO@nP!$@xA(xFY&-P@49KQiejiqqU8#x4>9 zgn3&z?Z0OzXhzl^N^D3C4_9~UlJ(saM?3f#-!)p(z3LvtZnp+2Ly3)*yeiE~WISbK zw@Uf2Y!DjnqA)=zZ8&?F0x6YZWUtKEh;+rwFLuCR8#A3^)w{nfsWj_W{u>ol!`v6^ z3R3(&{RwMYY^=b1(0GT9Bc4-pzG}T>iH5*4FpS6gMzuFhM2pNo`^%dw`*pKH#V>o5 z1D~U6y(A#{jHMgsXX^shRwN|}T3lTw7FYV|wCI%k5lHlyeI(1{ zPj2}-V z#@GG?%Qfp3A~wW}&bu?j2;?NRR!|9r`B4OfG5kPuB(Dq?$P4$!J7vZqb613tPQ9zS6J1Mg;MlKsis=?a z3afV*{{_2bd5oh1u;wPa-9=Yrx>&-VMj$>O_^(| zi*|lc%^$@s;(e#m3on_h_^Pz#yme{s^~>Ajck~7S_(XKFGr43R7lHeSh_ajyH5t>_ zlr@f9$<>ol0|gzsdwpHQu~B^o^#s(uBdLm+)G^;vKf!q~lefpkai}ljTiMfuowWQ) zto93QEGjv-e%4uZ*o4LC_KsLCV@(UiQePHPXc%kVp~iH*DxbiQWc_nv*1+J7B!@j{VH{c#@~O;i`?(g(IMwj zn*qlMx+EH}pL(92;qmp--CtM;d!F^D?Q)$*L&9cCQrToZqZ$|aPwMnb3#;B!)9JC@ zBq1Y%v;wjXeYHG~T8obhmyzGw=Vm4Lt-3~2SFMc5YfC&5-$r;D^S+s>bj+!ftf`Dm zyYsbTI;0iiryTfX2sfga&KXHx_y8*0oW%%Als-0ACL=9OHR8RXS{s$u4k}|8(~06s zY)Qp9R=aITXK|Pe{WNW&PBr#tFWGe+Ek9fXgT1wW`TNjI4biK^WOqrDl?%EkSlot= zVnh8%&R&F+C49@`3$Gvs#!jEjY3fx{8gC9M)7{2lFaAX;}b zis@+#PdGT?5$X;%NR<-Y_Jty`_S)i7C>8Q{cwyq3u0gqW{R0*1PMrvZa64$&N1Ebc zn?y9tdP*i_rU45hG}OX7eLHDB9io)hLoKnheZ|6&Z&Q9mTmG@D5=`l}kfNc4Uz;@M zO~7?x_^d_m1c>c@(+%edC3Z4sjVM&K5i>d9DAGj#F~)hpDsUH!vsa&lT0mIw^&9^x49^@}j^ zI=r-SiVQzBNg7XV{#3-a&*}bnoRy9pP!~k;AxSW0@a+tQJ>#K)P49i&$@hH`L!3eE z@1#ri6o)T2Pc1gb_RAIf$(F>d%V~38)G<~qjGw0#N#I6YW=5rKe&AT5i;_v?{)7=C zWP|HuKPXT!`zeBl$$z6gZI+MHo9c}#O)rulO<?#wREBI^|$4@htk{QzZY|Mf40I*RUF>5_SFS( z$4yOt-2kyLsN@o*VBt65cYlo_z@;bJr1RGhOc3r@>r}1is&Hr}jw+iLF@e&qo_}}I z&}-pehN<<9f~gHH&o^f+ZWkOEn-L}0BEPpvEHuq}&N`6N7Mp+r3D*U%)>5~gfc_#N zw~k0C);qfy#c=R%Grt^}giqYP+A3dvv98cYpU7eL7>EZ>51|_`8RKb+HzW+g+{gbK zTQN0B&gQeO#DJ}alQRCzw73j<{ceAe0PhI+YpG7mm36*?g2w~PE-M+4_(BCoOLOoo za}uJX7orI7gs)6^nyy#Jx>@fCGA4SZNzT2eJX?%~&a+#ZVM(+|{QJ2#<4|o7Q;R7M zB{rphYsu0oCXq%hf2EISs2$C3Xf=`|I8e1SA9bM};hlzOr0tUyWE4|X-r(r9<3F$8 zKKr9(YR34|O(PbunIdRbgRgJ9>+s~5ZJKS|*}ETAdDr10QWxNrSWr`IJo?e@e5rY3 z%(w!1=5_4L99Tc6)fd#Xr6UKVtg#Z!37TCEthO8%m5KO^NYtQjE~*o0J6otLFgK1q zXI%4=TIQWf&w%hQC3CF_I@t(O+=c zyDP5(A_!pN^?_DrFLSR2t?2?2+?ZwpYX!u-&V4;+oKY?ri`xEf1Z@j_eKtq=dwd=I zkgX-4e0YH>hSt5ftBYX6b|t4Lq$dsjenO6zhGaHmC2kq{ z6s;GvcI@UvDdwmT>N>YWWq}MQ4H}z4+PA@fw=;$e6gSgeBnqa~CJd3C43(S-YX3y) zs3;F~)^%C`)!VP|FXAf?LdX6@B%8MtVKh}!wbS0JxTK`kbU0I!otU(5bk}ilZf8Gn zob_}y%w1}|SXXIh`s~&C1m_ULXNt{M2jYEVkFh7cXF_H zreZj!@O+;d9G=&=-#18fWS?E@t*>f-oX-_*uyLnIR6WSLV za8C>78hc+C@z4i*jU}+$Wj zJ6~}5>%R4U`=RIAYgr}pilH>Aro_u&&Lw4F^YQSd!P+gue?oKP=UN;ykn(!v|8+(H z-uO-lIK=pW{{RJE$Qj7Ke<#5G(aGtcGbBszocy`_o=>dY)6VXLr{z>WFKHC)UBt$a z*K6v3Vx$QQ@+1)^ed<}dxSP}l>FS=Z)kz!3vXgDf(gp18Dk4m9EKE!X$bzmN4=>Hm z@vqMx1D~J08GLMNw}U%Z_dBmvZM(-09-FWI()2~>Xa{$99z(|I2g|)4LWs7X*UiNT z7iy39??u(bYL5+;T>jk!7n00t;FGOL>@H^3b}$MY4biw}>C(3C?M;m8xZs-lSe5;K z(9Wk}jqkoocUid_O<{Fecw2UKGe4eg_0+xd*WLp?pj)eyZ7b_ncW#ac^>eVpSj$#+bdnz;bfF`*41NMr~bIDKN*%S`p=wleG$Fd<4*{9tc z56{n!YY%DyGic$S+kcR@zw7OHgv1D}(=4u2|4M7=*DG8^Bf%5)m+m?{AaN%yA8tqA zt)E8GWJ1|JWjDRvzEh7ZWx(vzIo@45u6};(K0Tip?mbqAC;2{}$?ysV`-g-+xQP3p zhZl0U`HsZ8m;o691A0}3&sEdFoMB`$-FewM246EbGSAx&ufSXhIc-%nYHg_P0ctsg z+#G+=CVmmWZ>=`NajZX?&eu|I^qBM2XpHFI7Y_Sd|M=Bj&s4u=MNY*ybO4WA7UyR7 zeM;j5J=ewQ986+FXuFcCa)mdu&xxLG3!j(ZY_7}iP0p+(boMzrGX#6)bod?H4<$K z)@7GZFKN#I2wCCngFAe2tjCPw4rYB>NYf8T8(>ZB_!d9oswK@BP~IA$reRd&lU=M5 zmy5p{)6TKXC1Odi^~(DWE8>fIl}nY62Rys)C`38XM_6jL8xPfh_E&DzE*mMOkHQM* zc&ko4aYgM{CquIj_neZX)FY(s;Ii2Z@u8u*&Rau2+1V$yTKqfyss7B>U#lYD@}}ZA z0WMOPtm%P;kcyj#6Xnh(*CU>LhmsXJ_i~prV$QakAE7zHqARWzA&tD`lD`r3BQ1}5 zizu&`v5#cYuE9TU2tvD2pK=b&UG5!c2_iEsLt-C&K6hgXnV`*;q^-+1>xMX*>POrR zGPC<`6faN{ISN(10cFD5Jj%VkB)MFZ8fU^YSmsbB_c!4#D<9jv0%!MH&MS6>1zd2h z+arxZUKwjJS(Pq)N0eG7KZZ-;S?kTuA-a}yY|+2+i$DQ$)_8uiS#f6yVmH}>hK!us zKChfcgM-aYpdjSW1?%I8SC`_Fb@7eu^s_bch^_9}nr)A#(3^l>h9^xerw!*2AW3&C z-_;=8Jfz}SnzA_Y*CJ|~l-{FmnjX_r9P#_AKdMl#R8YXH%bR02o3h~ytL^HE4$xt$ z`|1aw!C%W5esOip-_N=IXBXGX4Mv~1w>nasB;Qv>pZug`xkh|9*uT>1c8Et4tUUw0 z$d9vL6d1W?z(1T&L) zi_l@E;_1KUOv6VVM&lr!%Uuk^LsA27iR}_yutEdt!O$m^+3uSlB!zVabH=i+@)XMO zmu;`?`9MUJSmLocFF4RV9D;J%Tx0eZ~WkMFuAdkShH2!m(?xEjY0u9ol=r0>Z3%2Pa%a6+*32gkv=l zb7GUb1$i@dz97fI!4i+5AHHre@5(%`Q;2CvEs;%waI>~0?Xp5up%AFfjyv=gTnvkv z5(TUEut(w*lJv}l&0>nD+=U57%;Jd0w}mx@T0^omrE~xBZLf(SM=I`kKwpARymIkM z@xY8wD3pH(4;l#l3?;gt1(8<02O&u!>tpIOAE>v{a3ZCWdXulb&_~v1IdE!2<;2qG z;8e8@A4PK{^v0*d&__{%J;_Cf7WZaZONpn6MOgQ^L*k2`vp!p)aB9K*F0ep?9YW!4G9M0>7eop}q3rGb{xrdgDJWQdlVhA4YwS;l!A8Va}P(X6<;zlwj3{W|A zc!!SHmLfsg!pi;)h_Fftz9~S!iK@?Y;3|OQgb7lDlX=pBkU*7C5mP)NYR;Re@tPu> zo`HzSNK?hq@RU$RNPOX|UYl?-Y#J?$@KFp7VsF7Flu9%;?DnWGs`a{AfEzW%i9H!T z4v{Q7hm23QcWnwd`U1Wjc6^>;&wp=7R#5$sIZ?Mdb{qEX#o&ZcS_=|;Y!E2`2c9Pj zh!Lag_U@kOzhY>0Teq%u}oejPP z+gmj3iUEVtfNf1Ef~|UuAd+%@y{bLPuD1sao&s=n=vSz6IRyxt(;UQN9X1=@50O+_ z+eWlvsA1l-IioEh>9Zev^2Y$Iuo(KYk(BdTjVn#R-)KQ(0(DI)nRq zj3V_WXTh&}!z%-Y61iW{5Rj8!31njnk#RCrWh9_hqH>T5<>I3nBLlWV<$%#l&H3iQ z@NNr~wck?#;mS+w@eZ5CR-0S`n?A?s7qE8k)lYhXMU>2A|nKWgX9;UJSeFR!?? z%q*X$*S$9b!j-Q9mhUlwa22Nj-9>i2KhX0>s>0-CJ`nWBtwIK%;L<>;M2f@m*e$Vo z7{Az$5zuGuAoCRU6emoLb)m{eX{M?A0CyKd;%ub>AQvuU08v(%!82#@oG1a4!M?k- z`_cr^W9mW_NP+m5I=8wA4_pk;!*!Ad=rfT;<&G$n8Y*W|xl07~0xQB+OWJ!eIo~+p zt-P2!H2@sI-VQM^i%qb-U3DlU7!S6Zzmag&veq8+TK{WHIDVLmgk0&^e0A{{m<51j zZZZVj&j}xt1HHV!f)hi_px1ViAW4u3{Qh6Kb&o1UaDpFP4JLyLO~`{6x)C=dS4b;Z zLYRQbyfVcQBCdJ|dS!|#Lf&k?z5#gy_BO5ye2^OfK#fs=BLsjO(a*pjN2#P}j<*RT3$une zmoD|#gg0RiPt1bfK>vzM-9xxvRAS)Z+$U?Iy#k!+_>RgEKPVqc=lK%u0%fwu)e+|% z+&utn=}B>oHu9Vrlmg}1c?HnU$U?z2BGOIz?^=E+ztu+&Tut7iDPI5mPOLu>f_@a#{qmr9k@MO8Qu1nZFW{nr zkYX?Le+bDm45MqDvyP@=u|JRDEZ#VRi*od?XER(O72&%rvzgyt(nb6XfP z9Ty}(BXrB?JUM?4`?JHqrgI4aBWO8aeCIz3Lh~PG_OE1qIUbD$Z4&==5x1@^fef%{ zzFU^Nd;L@Pub8#|(81fJw;-Dja(^cxlns4Ql`Khoz$xYg(n&8}+Y1z;G zPlZ|HLtIW0Q_Ey0-`Su-V}Ig?tKwW0t+&>V!;=OVjQonc#PcYXm1GjW{O~?2VvQc) zLi}S{hV@U$r7gNV_1mA~1($MHstUU+Qke^JT`r4s5DgH2-pPAaEsjD)?}y@JW7}bx z*0g*iTYdF{TDV_Q;3vou4{t~8Y=`wTl z0ABJd(O|KQ(-#1CQA5>*fhs@EesT+ozx)-ojSlibrFN^LdpWqMB5tj#Be${TF%;;6 zSVY>&37v=G)AHUABk`}gFxGI%Yz(wUQnpNlgnBvVkvWoV2FA24iy5g6jZQ8O8FTi| z)h0k)@K6{1j5%K#J0)ay$R){dq`IGdaAEX_}uJ6Qv7E}%Gv!exxf+C=O zyMa(za<=9em)ec;#sO=4rPTFK{36MhJl5gMpOE-zr_x4OSTiXfRn|8 zDNWpiHUCp_*mhK)7b8E88u;yzK!lvia6f$_j8Fzym< zum)HVHZZXZrUI7nNC848HelUinIZY&3;POHE03uEi<@hzv_=;mgzpN1gBFpuJbwX8 zse6U^ueIP1fM%(fzK*+OJN5Y-#4BVMq#ycW3c!p}fEgSBGd}L&&k5oHE4Afav9MGcAn{5jC^|>I%SpX)oKc4(Yn0&C zjdEU>FjYH7IN{D)m`kB@FE$`(Ry3{u6Ep-j2lyGNLgbvBPVA;7qD-)(qJ|VQ?0a!M zeL%}_?^SZXsY-4OjaN=!xA2+P!mxTkt0eO#2trRqbtKeRItDg9-=OYB==xY&5<3m{ zjW2-VBtQe~g@CnM!s2?;6kOR`0Q>GK2@Jyo?n#Z3io`+WEgk=22@Nm}bUGYzI0n%B zA2T$Zn5pDKabjVSJsA*58R?5N>1hJiGiX7-vFuX7k3)*G6ECtxa!%xTDscIWjJ>l+ zN%h$wOPI}c1enj41Q3CA6&z$&n5LD0ev!6IuBWz0oZ21Qi`1Kvf!6*0Ms!7aiAqB- z$9|AIgH(medGmFgzVz6gHwV!Bqs3gJ{ts9I;d?zcat5yt-ubf(t_5qcumf2Ojb*jU zh2ONXXCUdLy-R`md2)d80QXR8PYX zX)PS>n(HMjygbwD%b@;kW`-tkaRDX67^sguq#oPCaTjF$#$vy$rM?k*IrGji33|N~ z?bK%k>C{?EL3=_ppc_?kGCQGkmH;Hi(5>cVb$TUP#>rUq?dZKeyA#R(n7(KMRl|7b zsApTfzlDatdqX9-@{EpQB{cCr>n)U8l3Tl+*w6y;J8P2@HK*()lVL9@)xPE+ZqClx zLxhy@yA%3z*hTGCC|qN$Q~+Zs6~M20v7Lr)kvn+{kX{9jPmN8E;=vwtC5rbVE@Bh& zp5pRFCT1$z0nVbwi?Mzi*fYc%c=V?oviY*$;Rwk!uaD*FDEs-E#|Gt3h%yhZw?W+t=2f%g6T)R4E?^SY2})I zr77Cz_;L=uTEsQsWu&Z(TC-lie65tbC?B^(N#(<8H4vO)UZH}9> z(iI@hq%z*g)a;0aIUCyzY^R;$5w1vuJoa7v4A|bmPly=RX{z)1Dy&ARJ)pp-kgpVT zMyRMxDywTzKv~cjv;H|tgP5#tJaNcFjZWJ78xk3^18y1dSH3(YnH_l~dn6(hYSdqN zzcI^r^ZGyXy?ExLw&i>I`em!3jEc;!PzfYObOlshN(lT?-i*DP=$Of0&;s3CRihU#_9dJc2y%sS9ks z2YTQ;gk<^PQ!{Pn9hqHkwBAMvMhbi=ASLsfDyyO1$ZY6$$nifBwZ&F5rH znIBkaCXY4Wt^U}V%6#@MIf@P1y=29?{}L>==#&OY6`FKPtL=!_2V!mN6Mtf0HMvE_sOj-3$S62{b1| zRCoDAm2izk!~5HJfe|7!_alxCD0{FS`Oc>1qARzOa%bt8RDq_+A_?Z|_barf6^#x< zavJYy?19{xL$YQXWZoJl?PNweqb~)d4IC@p3U21^&5}xy&BseX>iik}Hx-_^zpean ztj^Z=SbeFZp?cr^TbJZCpVmVp0W7Ds07S~Gr5RN_Tqz6wn)Rf0(c>Q&7O3rC z6+UU_YI7YE!yY}JbI3x3ltmR~pzP3wxVU;Jc3zFzDrYz#_i3!P4G{j!W___J6tt_hU?vSZWcdDO*=N$g}{BRRwQ9hgRL6l^CEia*(6)2!? z{NjLLApY>9c|j8BABKaV#o-bF;)_{GQ^x*{RYqwWV_UMT-ZaiV>j)Yd{NBb8UdcLM zgB~obRp}=+QW&F8a%&}MQN9KC@6El=SP7^N^6-Z1lFW9+3(RJ%AKvek>7R=*!1-q5 z=ZfVjGvwcEBv(?o8k~>5sLe<>#d~m3ue7HR-5PWd{G>BlkZ&efp5HphG)t?xlz3jb z+dkj*(>XLjYOy7zBqK)I@?z3q?mW!2sLj%py{=++un^xs$HicpVwQAaw&$4KUhw{t zpiWc92OSNTt5J1&ucC}TJK*bs696&TtHs;G_$#LpP7Sx6KfD7p)iwkSaI%W5LbViq z!AHLigu~X-tce@y0L_2Yz^-O>M@5MFG_F3Dh226s$4&?8XV6}{R$ z%V#ULMCe^xGZJh;vw@#P{^#h(tGD|4{D5Lv{0|NjJEt){7H03-?=2=yNiV)hy9x%J znB`{viQf11h)NKySD3#T1YVVwBoG|r?bUm|+5Xb(peZBB>nERJs==d+;<4oGfj*GQ zuP%sGQ!-8^whEffYMtlyJ?EvSi4#AD1;=VVWG41JZcaIMGEVF-Ckl^@Fhk@5 z{@uYoC_10%cmc0M!b)j_-KNE2X#|OpA`buZAEM)OYX1t@dpJ-H&Ie{pWp@mT44aNBXPx39SD#S4W$$Wrbd zeF0iLJXO?t0o-|*0ff^_2k&}4-bmmvwS7ge$K=zi0|rUrH2He5RKpVkXz!&$L{VI! zy)~vI;dDPIcGhl8*Hsw}*`%UCn&RhO5%NezBNXk1&)g-(hLH5O`q$W#5}&DywXAm7 z$r(#{u0-HWgc^8;bUa1pa*L-epk#<0?)AHbEw$Hwud$TRNjOzyJtY*HrlyK7R`p~G49#KaTi`MDineg2)`+>_?NqIN)9sp^2Cipw)HE}BaAH4O4AXIBh;}4TK6X| zAhzFi6^K#%Y(MBqsL0q>UE7phlc#gH=WWyrpj>#Ex<1ogT^v&X8jEP_erKTLdsbH) zUn%r8+GLk^Tcz()LQ&j*qaG({GNM+lrLW+^`$#049A#H}VK1>V%Ji#|0BAU%V343` z%2dN@X)5T9!T9NolB|3%k0t5C(DJY+s0`4#Y#)Lsmq>w_W z7i-6qJpwfCEbLlZ#+DKIS#JeT;2&Z2n6)-#LATtDvQgW&?fqXOC8C_Ma-Pfzqf=AN zcd-Bl#Bs!gUXU_91;xf>V1jr!RplC23SGKrH-xp(fcitoi(mTF703~-sHXue7Uisn z-uWgq$C|Frb~UL1-K1F6BqWnl`ZR5zWCo4_c;U%8-iyLDK0hfgZei zsT#LKzPL=o^h@BIqW0%SS<+me7T@RGAI`d7E;tvKt# zjVtdjyF0R9`oqar#?CzyW_}g;e|CW?`b-2n7Z?EZt>`?ddv^vVlk6$zF_)M`H1B8{ zt+2KwC|Z0D7Kal*X6HDNkU;^KDPtIC{^f3a1h1e5877C?VJWmL=&B|{G5H>^ZGkaJ z+O>EJZ#FeG#sGM;!ns!Dx0{=E`+(-gB;e0o`dj3dqluk2d421+0OE}8ZSF=3YL)F# zieVm-lRTYOQW}LnI~%q73`wJQ`popzuBWPd| zfBtokQSjk2^7gH1mi!t!&%lJ76mu&rxX#pXTE~%F46oryzHJM@1Hb|qd}2P+ zv+Q9JS+<2KVtrnePfk8a5ujSoA(m3wAevLV(Q3nFe0L*~-EaC>$uL%&L>R>q7!JcM zB$j&DNyy3^7<;9do(zo*-c9Hr9xKeo+-C{QXl7!@s@#=?gq=USNma{Grk+q$$Wo@9 z7-mHCG9r-uDJ?$0NK-zUVdWNDj&UH)Jq5Q@+!#$q{H%goKaXv75O>MkW*NXJc2$7? zs(JEm1J~%bxtU>6OdmadHGrk<(g4_TG~!wOMV2;^JAQ?$)|xy8bg4@hE?wh;FBxcxAx+SWJ}W-BxiP-9+ONKm)ScK-HO^Z-Iu<==%Lw)OB2eH&pl9 zazobrhpW2@Lqa^|%?#UPyA&xYH=`@<#eo@e)j@%kK^*N^U=WDc#ambr2zoS{IdY~S8#1-msu7Cn95kA;_lS=&j{Xdt0sSp$Q5MjwLInjS6FnNVC!=EAf&bLdVhd4-~wk0OP8dzp# zn|G}Ii!>T}{-f9sxpRJj(B$^oIeFNQ_h)2^dsC;9+UtHk9)!Mw5@m`TO|^3RS2yv_ z7~VG)QD$=K-%m&?;3Siz60yuBzfm z47^ms_AtZhE-(X1)Y_Ym8Sg}k@1~9Y=0FHHl33`%T0JWI$CRMU|qp5b4SO?8gTE%FGVbd2^B4s>dH^ zM03C0?#(mkf4L~BcLxm)B1<&*p^}aB%zO**C}%h-c}AU}!3rr3Vf>YLCTFg$EUf$aHamK!??_*b z&Q8`?EeLR1T+PONz!WuIOt(BtcH!oR(2Mb$tNkf37teo>b)D}D5cfb~iHMa2_dN2-z^857oS06C2QvX^tp9R!WsIIgPY0Z*wihD^*v(BL-jJw zv)tzFc&oO@B&{j1-pe{5>6$SYqrq$e*!X`4RST)SRy$2T1|8Lgct-|FqqC^G^LlCF{oR>e$U3I_xt5g~ zjvc_J>8iB02QY)sft`XE8ROhSv;Rn2Rvs6|S5Zux#u*P~Yj)4+T{Cr~8^=$%C8YJe zB0S%W?|Bdg;eX1FUI-evbuep%FQS~ZtNRj+>_fJq?Q+knrH;Gjqv)sqc#0L6zUIw- z!V#mJ)a3a`V5aN!%Il4dR~v>H9YQm)N&KT_@NgS`6W>)if8DlhYPLo2ll;jPq z(D^5Lo*}K!f`EOWq= z&Y|VmdvzE$uyf1rzu2^lZAvG0B=~pGgdt@8Lo>~RVo0NOzjH;$v?5#TyLh(lin?h9 zR4j;B%ycL_$I<5wpJ%$G=s&GpBDy^W0ufS`ehL4&@ zPqqyomAqy?$=o+D>UzvcQDQV^pgsJlFjx^Yb%0hN4By(3yjQX1ddP>bep*=`b&X7iQ39qFsg+Db(eb2BpSnVb z46UNj{V$4W(edKj<>K6uQ0T9`G#zTVllVM{bac+!K0e;k2UJD>->1_puX?NweQ778 zw$*Y;JnAq`us%(4UiD1QlvZ|QBrG@*WWhBtFb|Ex%C}T>NhTeRw#P01CuQ`K{x7D^ zGAeE^T-11RcP;J|r!DTqeemM$Hn_XD#l5%;GPpY}v_Nt9Qrz9)hVR_7*7-4Og(U3B zE1B$9o}EE>1Z|#KKt;VUCfe|Tzu3-x6cV%M3!kNY{|E4n_a8B>v3_QWsMsU|I)0?4 zDngl2nl7e+jD>oWuZyTOK9I}g;eqouJn7T2eqt8(=wJQt+A2@8N;`ok?NoEFdQkUehUS~j5^macem9)4RIo=Y-^xj)g$|b7F zdpc)rOfjW3L^`Vct8_7TE4J3k-#Hf~|KXX($6(f<#+0Pwp)WT&1;m|m3_!^DUdp6emb5GAk9fZp?&nXX^WHKO zaZL>5jx_NMA}<(&C0;U9BB$@0?>3|_rxJHt!-(*x4OYe!$@hM+)07Z3yN)^aU(q$R z)aPZquZwkRrY+fHi;;Avl`5V*rN4YjTK(-*ou%=@KqfYDM##zq&xSYn4pVPcNAD7n zI+rL-62-aJt8~eeBwl^BLo3$Mo*`=2?0K~#Xr1^XW7Tlw#S<%mZPFE5(jKDhpm4(- zOM@+J8~ZnTiXrm{aP8?Q>#3{9M85Q+&ser;rz|Y8>8Z}-O5*8XorMfT$6NccYD&0} zS?@FUNSM2764Noyd;{Jbm%4NXSo+A20Kv=w;qeD4ec}C|#Ty7uO~YtJS3G!J_jPZ$ zsw`EQg~oa{=yOpnIfQIbYDz7Td2p4Bq>*KBc&3Esmti{|?;Dy<`JC>%$-FmfG){K5tekRMMBfn# zEF=BteTw5tFID}qdrr6S>OreO;LY4~&QDihsMtRby^F-f+-pGsGFZw~vUpW5Kfb=r zZ7(Mh(!yPpd;rd2D>QnJU;U(`EQs^b^KOH8F@}?Fqw|uoFDmS20yWG9B}p?Bs@b>4 zi)E4mL?ZpjQ@DS=*9GbiUMku?>L%{FiToXFEG;rqm5YwDoX`Mr7p-ir^1^CX`j;>( zs|<@%19_NHU}N5dt0e-UzTSSWWq__0w*UvxvX1&ucw<#uNxnSKegEZs*EFPzpP~ z7Jm5-2Pj-bp7Cv*f{vW*Teg%_uKj4Jd|#kCjEP>~;NA}5rA%MzC4s~arKn#>(_3`8 zTe>PqK+nuR@FoU*EIv3UnlQ9-9w0oxdAbq&$9~gKw0m&!n7A41SVn%42<4}- zGb*@3-o%|9&q7w9HvrxdRQc`HqCz4)^_0K|*+iy~-W_WvXFF2ChP&@eSk0stFiEp} zo$f+Y|NQO1ZToM!>+w3>O;dXZ9CKYvyI4JlbQ*uRMpF~!G^rehgQ7hS0*o~U7)~8U zdosp}qBY~Q$2*aCI$5cW5Npc5xG>0`N!TC%fLs38XlhQC3m8738VI0fr+xsEdhXf- zvUe%G22+jhbbv4v6eHeA0WG<&(bQVu%G%qSu#+hPKn(tI{;*O0w*9;5wEt1LHBYMO?_=;=Be^0gA7|6ye7VVD70X z>$3XrfiwS@MRmx!j1C9Z4R9u)K5cU2+7k$jG zz=@!HBpMY5?1z>KOyKF-fVu1~z2Pu0mybaOX7NT-AAsR<+);OO_9EBD#enZ@o{j|0 zq3{48j;3)ZBifpmwalqB#Jej&0R**&QW>~iAWwR@p$9gG(W>P~xq z0&lqFI0N38E^v}<@0PGdSpu{-g$w@f0Q`7>i*9f}V%?h%76YOzM-tM;eVUKXl_5^! z6syNcm7mY}4M_1Yi4V-&iC(ogpYqdr6;Y}GIC_OST(^VJ zdOelU##{chTf>S{#K@sN`dzlJ>Uoo1zg?mNiQ+qAKDfwdwgvs{Do%kCN-*a zv|allag=OM&>>Ml#n&$F4DvyH#vbJ!F8;hNFoqsUCcnCJFQ`Jd)d zE!&^A%^{-%_KpTS4Z>obV;9d&`i@z4GjTJHF{8}iE5Yz~CO=gobMf5-gxo(wH|95b?Vf*WoW;w#n9XDq zk*sB49hh}7-6E>^6V8`cMLV;omquV{m+LK(R&{5O5u0LE(e}^#AY*6qC}6O0ZM=o+ z*fUQ5cCKA{Nn=Xe*KUh_*h5$2h)})((Rvx7`O7-twgTEid$C>B&igT4I}ug_yHU4n zg#}Js^vCH-nT0>GhxW{)5i^eTRuJ=xXwz$|^aS|Ic5-9L5#i*k*ci>K{p^Q6gJ(wU z>wM5ytgm~r0yQZ&tNi6ykY%6inR=%?LFJ{XNkNWjA~Z!&pEQ@|GO~je^md-Z=k^w? z5Wyw=cD5nLls#EbL&oEtkDEVznp0M)4iloa>OBvouAi^1B5RJ zJW}xVvT%pgv$(BxRjE$!*Rjezxwq-Z&zWy+(oQ3)Col}d>Cw}4qUhfiCKF?Ad8!mH z=s9g&7S6e-pP1=)|M9bbr6$;S+U4y1@7Ui!`JfJiAHBm}EptAoO+%}K9ZI9(jpEx# z+yB9=(zh!`SLxBrwhhqZ`UdK6`aV!w;LUzK_{!}o+@Z8;-LWc!-4(52+9>H^Di|kQ z5YCOQBI+~lbCJ1s^$|6HBKt}Rx!yCv3rqI*icZ!bGuphuDsjhZ2eGk0>4@2qb?p{I z8%JNzzIcVsk^jYtY*weY*I@BA0g!vN+!@*4(vW=mD^bOwn|O$hjtLG_sL@a0j-WcZ993%;|MlujA| zy``%H%bvD^PevU~Lq6midq9f<`#YbtZ$^IgNl8PJWK$jd9CxB!Iztb+LOzQxOBYo> z0hW$1{K9sQJAA{qM-Q!=nxQ98eh`4flw9fMsIib<(6z{+1HEzG*xU0F?8EYoJFE6js@@-j~ z29IFYG=Vh8gl|8HW}5^ntB)7=gshEX*>7dm5$W*xpGRxsjp*S$a^O{$Z{X!lKzpX~ z4c_u8b*?~c4v&Z_^R~L;>T~s;V4rnG7`XA6L;NO7F_*!1sMx7zXxD9NfqH_TRE4I|UA9}fX5+4ef1Yes`a zL#gZ9A-#Ot#A#4#$Bs|b@284`s$npPbd{}Fh_Q$^&tmnqA`nJJm6woOx;2yY%1Ckx z&51*zGi+T|mHHjtZ^-dIOe|FW$rD<$?FVZp%g zk2SOWvyC~jb-dypja_;GqW$WJ?aU(~GzkbZ_Y7}-Ch1|8MEN#M+Y#fAO0Lt4ID~nk zONnph5hx<><5pRs2kIzjX;&-AK{DZi$0f7dqWs2=zHsv>q-6TFnyCpXU;Y`$V9Q5P zlF5>d_V+ze@+ZDG6Ma-UqTXFIC`*cbDT~dmC7GNR<PK-kNXiG&o0X1=ElQLYmt;H!yQp2l>!RQkd{M zk__YnP~qgo9KL4OZ>C04bCt|Z|3x(>bx~`0?d~s z(&uINnjM(11qBXl#)I&9X2M(|jzekLjVeAw@CTl}`hE4|r$Mr#B^`~?U3OxphRk9= z<3TNf&uO?IzDGZZM0Lr0bqQWY^b$~R|Jj&HmE{E#kz>@aFRJ8EhpNxK%!w9D{-}?x zjx}el6us8SE6TT56S;sIxzTB`VMUv(q5OZBB;S(x0nEoJVDg`6>@&7~2BV5qC4Glv ze$op6OxBWzx;}i3XlhU@w_6f$a+*DpdElSZ)Of%F>h>i>+8Y1sR?HqL2BWy`nFj)9 z9X5~>((80lGLm$Tl@UNbjl!Ar?1-8v$6`%4)RniMMv=#jP679-ukyKSjA|>r%I9`x zmI+$1HLPf^_>eM4R$Vety&a9kwL1TL?^HclZbu3M7mrbr`SuUot;G7QJYVUAhHK#E zCD2mvRZl7Dx@tjl>dg$V4WH-vAa7wCMVl0e4=Al~*n$^kI=WH*r*%dI2c^q&Mf~tnk;B^fZ20HMQeu4=h~nUNG?6Ey^zn;z9SW}5Sb}%$ zqoAR0KStsL$MlW1qN%VckS4w_jq>*50DBtQD#CZQmxamb*mD#j?`ax%v!s=<`4$Sk zUS349w0)JX!tOMU{Zsgpf8qn%Z|_w+VVH@>EdL3kJ$fLwVnDbh>7K*>G4I$3?@0Hx z4h9!>is6KDati^oIVZo{XufFw(ZbR)Jyh_z#M zM)K_@LoUPC4|n0%%(oT6)?e+nwi$rRa!FrldZ(ggng07xgPJB>Q=Uf=yg zN^^8TKzQ>Mjfy*|6kcg2^A~NPz{pp}L{;z^do<6!L@c+DX5bPx7L|HY`cw1Ji`bye z-p6;9$*1x@gd2~h-O-TU()eX5uH2V?rRjp`AJzqOLYupmUYT3g#43>a(Dd_#Db%r? z(|;Z7zSSjD>nLlE3^F1^lmpWfHG>+HA5QUA`0!{MfiHCk%s2>Unj@s&9pRri0L*JW zM%3ahG^3b?4wP|)`wHZvL?X&SZSR9Ajbd5oJ8~^)>{Fa+R-!p~q(wV|9i`IWZN$5W z2hy_m;wqhy#!nC!IS0C6R1@pUOX*56_UJHgD7l9bF_^YU+$=o4Tp1nTzdYWU+@|eV zj{X{5s<#>o6OQgyv1@Pizfty%6cgwmG&>cXbMJQ9s@$Nc+54OfwlpMeD|v8Y9R~gF zgtOxHf=rIUigR0tzA5d}zP^Cg>a#wV(=Y21W;a}W zZRg7~pDzY|UT%y+&X?q|ydx9c$gQ5(hwr|uMY{%di5LC}boyETOvB%2L!8gpVHI(5 zPc&-Wp`5zwI;Ml+_*s4Y@9oQO3dW;{ID35CG@XLoZ?{hBp+Gs<%u|^MqN?7G&NNTT zM~B2pe;nX5(NVPiaP_G4SK8nFDE9taNSqOT=3E;7K-s06kR7q?FESO+z6X?{yZ#51 zXVH##&p#fj?y$W?!2!(_?;1xV%lxSXyu`|m!#j5*8@!;`Z(q>~H}e!$*UX z{XK?I7TlM`ZsXC2C@;IU0dnkRdP?(V>{$S{c54YIccktd%EVQRB9$Z z#t@>0lOP(_Y#YkN=9=jrz7^ps(VS<;x5fJIQn(z-bhF+dJ)0bru`B+?SJnO@b{Z?3 z%qlSZshgcwgT}cO(@ufZInc>6)FV)2!Pv1~yp{nHRs|u{!=thNdXN25gC*#ZQWDWu zwLVR7_)gz?TWWolY_{b6)j86^bAUr=tJ?fPxrTi_M+1Z8q0Ii%V`5QGo4AJLM#%?{ z%%|Y+S-+_2*iN$@;}2l)BKwynnE0guc3u}WyIiMseadT4SML-&C&V;V82H%0kT!>t zS#Kbf2*1OlUG71$^AXF#u=El8gXA_Zw*Dmi+>wD9oHZMJwX!6680MXcjVjOpiz0bA z7O*-Jeai2NZ+9VZ>W=yfDoYEbx97Z)KUN2_W4cMys9)Q#N-3R66YOl6mWfLfYG1g{ zPK=gf{WX3F+)|u4d9d>Y7e6}E$GSiQieoub#iY`NtVZL~>vc{{eFIaMgv-V$#Q?ws zOTP7ua30STZO2~?9sOTF-YptaY?otfbE>$UrPwl^x^KbMz)oGG_ZRpp*f{*m?Ov+lfT2V&xw47$?3)9A|jSdoi zDu(UcAu_Ml`n0-(H?vl(r@?+rv*wL`UxI%Apz*Km$)x`JP$z1_bOX=ovs zGX!Ak!reWYG+YDv`dR(${^>_!+CWAi{mJB7MaNhvDXNoAgKfV~X6ZToKHr)4FcJDv zhB#{1KwgrO6hq}P( zqZ&T$W<1B zRYos7mLlPv%hP5K{cqlX_AJZm`1%CTBL|D>q-u4bFqXcDpS}?}o%1BVqP$X3p6?v3 zf%m}Z{XBrFYGp>$D&GZNG!q1H2nyxIkPkJ+l8!!Oj$d~yGyPi+B063#XLD%N>i-hNGy;xsI<1&s17?Fr^ zWN41@)$6s?8dIdL4@?68dx63Yj$|>-5>}B-X+dx$l&Lhs0EH zo)bFsy1@=0(#}a4=x3xl=#|#Mh8hM4Id$2bK~m`b*t99=uY}s3-Np*Ry%xCNlIt)>Sk*Jp2Ee8M z9@4NMHnj6PoVZ~6Di~HIH<9xNtp@B$TmU3`?}N{Vn967`lmZ~T(&2_mNj;#@AK`|Q zX~BFUDah@qe~cvt2Q+~H5d`oD?9=)Hf1qEURJTr;mokp!c6EyfCUejRVt2tREfCWorjL^D zS75)sK)a_Xe%pqxNYAkVpp1Osb|#7y-J#=0|LP3qZQh4NN>XG{Oe}gh z){Bwi`>C6H$M%=R`kz2|B%{EYN2dQjhg8JY1rNkl#6k-1{C|;;xe6~;O(ssGLy*zT z(Q~-j$B!M~XKZ|DSgW6tf1l_imB~!443CEArqXZgjdJJ~{1u=mC0*{oX^uL(Cs1vy z2x#W`pl}s1D%CXrUw@P0Q~vocin`IeO`&wF41vFWC)^tfLJ#aaOP30x^tnCi{z#CWs&`yl$(KXeiI@?E# zrbz`diKC7QByY82r8=7&8LhC`_=29;2oL`DfevcV23cCz{Njj&8rCrf_s3z!?8!=| zpTkO>U53o865BH^TbM>Wq4H>LGkE#JA?7PmxOFU8mmfHP&AH=lyGmoVp$+du0?pGdzqcq80HM0eJ;-kGR# zZvp>ja2$d1HtARC?A6d^T+_kVyOs0K8sS2Y&$BpzwSRz@pd)-3ZIOaeW)%5JL|5)8B~MO?g6MTE88xaZ}~E7K|4Dnv6`= zk8(wOCx_;z#=TutHTt(o`~OT9k_N`o=+M&cU%pN#E@f--fZFNpIZQ6jQv8%+-f0f} z5L~+k@nzYu6O8)Nqh_Vw)z`=zhNffSfQD*)D+2P5%u0r)+&iW&-AyJRyNJNh z0m_t0@n4xQ%iaQ9N&tUU8 zYR;eBGdpUJq<0ehlsgiK24wsUeddN&7EW&SIyN5z{U{S|BcHsP&aZoaI9Z-?C8$WE z1(J#}KVm)euAA0vA~h|}5jF2${iyQscVT_G5luYp+FksEu@FIRJES2Qg#j5DUmb16 zpq;_ik`y7MB$Rw3U`h59LR}p}OjeCADJx(?R#K5Kg@MBVFPeIoy%EE0S~WjHo&PXn zlkD1s)uEq;uV`BJSH#W0csYk%V-!QW(>HyW-I5vA{s_haZ0Ca`^wG?GIgBg&bf$DoEu-B3DyWN)kjd|@o1Av{BOLlU z`TjwuMgyEz#clCOm^5D_}y{Qbbb8GT_Xp1Ng)_^tEq zMWkQ9xMP9?aZv=6)O8*zg)Y1zw50kyB8v2UUX=mqge=klAeAKeq!yg>iG5mKmQ*Vv zX!r&e##PYYw9_}4l#qV2WipXe2zS~&0?kL<*_NqGB9eik@)NV_FotJTArbgwl-T{$ zj*I-f75U;AHv9%05t1tmOHd7rq6h|lbX-ZJ<{$j-BgCOeToHu)kLTZ?4RbfT??R|Q z?!f}N+WU!(-{;{JGAmT4NfaC}SE(vw8e15PUEKz{%0t!?0_D z-mxhr0<@gqx8KQ)sDd#J%xD3B>x11h>Yz|@_oliiXrT?XPQqkR)yP7+FQJ&@_qV?D z-O`ME&sON>E{{cHUqb1P)%}tabm=s@)v;00gRYIbK`i5y6tydA6pg)0DweOxqARDNhWE;8jH$WH2V85u=tAB zZ}~7o`FG3^Y%qy%H6RSzN-2<2cg?H>Xx6n|R15aL>hEp<0k~EFKBovkoaF(Au?q?* zYp+X(x?Czuz9=T9g`OI<-U$ylWHRp%4@whc2>KueiHQy4G&&D~dB$PM6( z4C8bbz3=?M!iFUPw@Q;!1pv)Rr0A&wT%VbMmtk^D1)b=!GZNqrzgY|a+bClaJXQQ?M z=%ES#ssZclJpC87t}4Sfd5n0Osf$l&cP4x#F4m0G1o#s0A#=Lrq!=5RU!s zT>!0FZ&SvN%O8ovG1FbpSwi@iEYq zpEqbz0ffQ>pktA1rz9xj9_maZvTqE4oX+pnvwV~Td{5{}CYvZ~61&F(-Fo!Qhog!GA1~90&CN)#FzgfcA3s--u_oZqu zTG*I4jbnKp+^NiGH5lr~LJ1l`y6b{@#d~}f)F!O|*{b}(3B|oYuFUJCt(6b% z90n^?>KS)ismN8z8K2bVeX7(lepv9NC&Zbjn%9fILOV>f404pipt&cn3J zn<@uCWhkZU)b>30)zNJe%o{D7#n(Nf9K!e-nKr^bh+d}-WFlS*To(W|#`x)bu9}3NmvA`cy_}=%HS8E8?{$h^`hj_$gE=Stq4O#FPZr z4u2k7uugndG}wRSnWYvS?BDk}O((BM#9~Y#4&@NrSHiSJ^5Zp$ucj$xFoh-7r%F|0 z+4&qmI=0`x=|RlULi_503Pf-mK(sLgQ&{2A&9Xr8?863V;2yI5_4;c$NCOeU-=0u( z(D+{*>})R9NY@^Xs=Mn?rPrTs_SGuYg4ldieDw9hLoSI;Agt3nvDtDg@HVJP~o^@13IN|kP*roEy) z{zgSaj>5t=Q(7qD>TrEwIdr{pxV8dJ{Evqu-gz4mDJNh3!jOsZy3=ouF=7w{FG+p` z1QfI6tILa}L(}NIvSuWaC}x>M{j!!~c59KRvy6p-xU%w4E{J$6^wG3i`S z8kiJEMcvnkAIScryH=)lE$@%N=LGBEac;v=MHq+~)}(KgEyYfoLsu!OAaW_ge-{?jEZj+8gqMR{# zvN=iHib(Sc92z09a>}>Qk~d_8k3#zvr}663P5r+WBo9nBi#NDqKFUv%9Sg+W#HU4E z_kZ7}1YIxWM8^ArpNgqN($jM^{KKtf^V?Ode$%YIJl&X;cD-bk6KlkA#xcivhTuFc zFeoyV(8})mi>_i2TBV1FRUQwaQw_ zbX%maMp?rPyQtb4R&_vX!ttR5_wOt1Fz?6-_@2<>m9%+yCU9SIWD55sr7{!`OeI6o z#w;LsqO~Ym8I(7MU**)u(#uHyh1~^FuIw#J;|T6-|9+%tGVo-rCfw(%h#cJDdkRWoBQ~&-|z&2ngL5Dci(n6`TP;kH#3f^L74$O zkw(y1O!q{VeC-k#lfI+m5U_l2=#2bkB>QD7t@Ilou@ug?^j|vNspNKPQR*w=f4);3 zop8%m{iPVEp3rDW0)*LMN=$0EnjzAaCqjoWIMqg;}u^sA`#9yurb zV}ZM5ylk8!GT=BB(WC}MqCyD$RyJklEu@~YaanPNSxmEH!Achl^W1Z1|4pBzAZ zOGd((aCuq~+c!s2tYA|pKS3Z9Ul2RFzDc+Lx!WZ*QWitf%Dethg3mQEE;}wimigTD z8}wHV`5sr}fk!~Ge08$9S7fKuHSV2dw`)ivfoiQd&n=HM{8hV?CGejLYO&RdfZD@-!?}bW!7Nv+sNRH)-ns^2b0F zM%SZ8*5UEB$<$8tAmppHjl=x{4>RQZX&=I{H$MN)|NPge1N5N-{=h;_0IU3w`WNHF zHtb(4?3WX}rUcF8Fq97bFJlEx|-m=C{K( z4{Aj)fl7zUy`}o9Ipgn6n7Ey`)r!BzB$6VAW3SkFOR?i?TFv`wHnzWKIpQ#{Tak)d zF~i;Q@G=OGf`t6lW8eJCBeteyhNSb!MGL!8L6tEaGTpLoVF0|$n}tS*1v#ldp2Z}V zj#oi~7N^T4(Ljo_7*SK1<6&>b6^9whe7Mo>(W}w#FB?A^?ZHisw^35-^l8LhaqxUz z3D*tzP~w^|ngI2XhChXqxY-*ab?gtEOlb`ZBB)0>V2KXB41x&edcdBC*>7H!JctMU|dyzzD8W~j6)XY%8sicIO-3(Iy5(wvX! z8G|hZ<{VSifj91qU4fk%0WbHy?lGRFkH>q;HWcx?^=q609%0lg!^@&2a+OBQ3m^K% z!MhZh(Fd8zgAJrMW;cFg<6dGV4?+27zZt5}g7Ue1_a4j*sQW3BRU~6d+>>@-YJ!FXv^V9zZTO9+b?98TuFgB|U|=fZgjEKlxevi%&QrCEBnK z)sgpN;T5a}5`>f;68)1^H~O-;C3ecxiA}vYd^{I_{Ydgx5vE~SA=*wm$`^LtNq}VW zgN2?O#*v=4qobSrk<2%+H@88sAB$!~VU|cv(Tbv0d$CYSm3IYrJ@Uf+DEl+`iQ%Is zdn0RtoiXja4iMAhD-*&afK z$&3-q)40#4X3cW_V#Pgq$>x3`tY$6wmEYwbZp~X}&dcQ|9LW6xQrsbG9uGhI4FvKk z$Zk#YrmOBuxcgGuv<5x0P*KvfKY)a$S!r$vj#lnar5TW>c zXJ^*4e$$?4lG&h-jnd*LeQ;}RIUwO46nvQP6}|G(h3e5u}lV*iW9ur zIsYDUyLX;blb(Tp0Y|1iC=rZ`(&(gobyb@)FLw&*Y<5l^q>ZrVrf%4i0xZi;J>^#n zf9BeLDg3S&Se<`1)*Y*+YMU)jy7S8!@w{AhBK?@k03{rwx}k23E_`3iA~Yge2RmBRNUsk4jXh z&W4=Pwvx0b5{_v-lEA~7N3(Ngyqd#!k5JjvoueyW;4Bs}{p`x{Roel>QC}NDY4@ii z4T7UOxptLHTob|`<7>{f>$!V08p?Dia;pB;m6bGAijtu`WKdn?l#naJ_)8Iwd#7SA z3sQvT`il~-ZuyHx>bEZMg6E`4XVo;mwNGn}^7p^v)SntaX<8_{D`cC+ZDK0g^uO8^ zhT1?%bB*$CZxe;7&1WQL{mC}>&Z8D(>Nv3Ls`2b3ZPOwW%(289(YdRaiSzb8zq7=r z+r(<)D}6zt7hXt0C&3GkLpJxT3pO{Wy_N8{SDipO`xdzuhM= ze;SKuQ5J}H`DVVtWWHiw6ghcj*2^dT-ZSMHG<~8q{U_Ig&btwLUus-e{+q%j9sEsQ z_nu7pv$Sm*xRIJxWyo3b=UJxLEIVN=!nfcvYl3~z0qwLp>E?s4-i?@;+ujSaOQ-pw zl>8uzXo5PvoAcA879uIFcP2@fr~H(Z75|{V*j=EAJhvK_?l^x}{cn#8$ZItHdEuuT z7p5M*fMwo@G{_U?^x`4)-)BqKa{jDq+D_SYrhw#LIEv$U=p%%}hpJs8m zg7jIats}8czB}ok5WlqXrSpM_q9yTs`QHQ6Sn&hXRK%q}N2M4$FVgho^p4|3 zF9#uB1%rP@aUQHw-)<=t<)GL=2j965&;{6&!<;+69N)6qDI7rBK3eo*mMAQ?lSOBd z>v!HTJTa<+C-IX+JC2@FlX$JVXEcmv&IP?hKOp%uwe!gDiP%&%X{V3Mq z%Jc6CT>ooF=7YnK6`F6(MGm{VokM3xuQW?@l@3b<@~&~Uww~^?Q#Fpe*&L~C-t|K+O3d76vjrDejRby8 zHC__D$Bc1n@pJK2^oR8vnctF4cRt|qfqnCZ&(E;AtT1f{?JSoz=Ua!$){UHqL>TQr zB6eWcda3bF7k<~%;O_1v*A@Yqpk;?Cb8*f?KtTeorjK2MutOceUxm`m{e$Ms^D7c? zXC%`;_1|vS*gwDmA@c{0b8dpNTY_|X;Qp$?y(==YYtEeq7BvCcWp`5AvW@HJG;|FG zw<|k}OMS5c=h8Li5JM@(y&pT$Oyo^Xdd*EO`Qv`STkW&bM%&|>)Afq>bIHcsIrPil zy~$JES74b*vp70?P|q1uvj~DxY18THYZm<0kxJ1m+s=~RChH4}WnPP6UL(|Ex+WAk zexT9%*dd}xuPKir;^Y4bw}Ym zpWr7#fDai#0FTx!f6Ps`>yJOCXw#JR)2lTl9Y!U7Xq{R`$v5A^Jb&X0#?FF&C?0%a zG5G|9+NUsb#BWhV*)-zV7Z*JgFqTlRQvRZZqMtY?52?{;Co_Wyk7zbswdyp!ZBR7j zeZPr@SqQ6ZX%yFf4BuBw`D{PlK6QS&dr)wb@c8w}s32YUGPXrQt4{kT#tAg*FIZz) zRNqubXI+}J(@04Cgh++y1me#acQfs!qhAZ(iQsD~ z3b$b@=~maf@tLl7S49qL^t`W1a->6vr`vduC%{AV)$zvakW3k8pnt2_5>D6fCCs5X zCOVv_k`*dTew%pW|i>H!!Fk6*g zsu&>*h38w(r@r7HF<-+OE0>tf1FK1q{5dc*#rXY|BgA1A@L~zjV%2XyipaJS`Bf+T zuI|XR(n@(|hL%BySP2PJKD8dPc>Zb-y*e4#UFn1@2wziRi+Nq&9zV6ex` zA|l`u!xFPBIh{y|@(`2D+l?HrU<;92|2wh|^~zhz0ij?&2~l>4+(JtUNn{9x&aTK8 zQt0oam2Cf#S^ULeFi?uFDZyW+ryJiY&x#Mh`h52O)|`;8^%O$@r#ZSMja_|&LvMZQ z_t`puV00{+LD3|8kvr=|LJBbh(d{9NHO}uEe_NBQUwyW;wqa%OQkiB6zd}0@9=}(x zCo#)JIg1vznHcK0@E~mLi)6jl) z(!S8YqU^!9t_O0Nk=b+)&A30t`!2~xf|S3JeEC^9MeL^@Q=xWw`5c&usRL=elCl*vMSjm#TM?RP@ zkC%;x9~Ocz3!a2Vl_71z&$2?x?dhSm#_)_7vB)P%ZKU2^GG0=xZ?dADvo;zA(PN{8 zj1%F9V@U{c7J3$gTg@V*!%*fajS0B=Y5uOqLjzzy1Uzgs_rQ{cK+2825-okt+r0p; zJ-HEf7-^ORD$#_fg9#N0HvCB%yai_l*PeYBOaRZ5ahW)eUn_5X5%d9pKZhLwgbL)} zw4tWPBF2>;ci%RA|1LIS21i# z$~^=f!4Tr4$4UoX!5t9ID>hNgix^A7wP*6doAp#$0`E?{0+ubwhRga<5wrj<@If6J zO@$qX1u~EJ+pr+y5i5QXLSBmWH#${4+uV#$RO3<0&3-X{V@Pl#umWf7YETCppd`dY z7^sXfJY0L~6|5Z+AwhcN5yC9$NN$1ITrJ30FlYDoo7(tjyHDh22;GT#eAnR%gLOw)*f`h$vF*y&=$^zk7O+dyAJ?TA!wUTpY zr3mTFT7!i3u*Qfz%@BK<;K^|3t43h$895=+gQ+}dP+>qR z`n?g=lB@8nggW#~SoSdK+Qu)vKEYhZBEkN^O6y=`Kq+0n^nxYOal6bOa%=GXY1sR;gNT+)AQI7z}PzZJ#dx8I{4|b#s@kaoCmRh zGWEv}d&qk#5J98L20$XavkT6Pw|LWkym83ty}oqI17H-iU}*%fXel4On<0~n3FgQzlD2=sxGJ^=vDpT3vn-Br*U~ywX`CqjYsq|(Ru@YqL zF@gfL+SK>#XJE|38au$*8BZYYDg<4j9#Vs0(wRf<8KEb2B7kiR;Oxu=iFWUZ(3h(G z6kS}6W@DTYk<+YZ`h`dM;oacf&=k!YdxUye5SpT^kebkeG`2(~oDKn0CfGl56dr^I zC?^prVVo5NC?|Rg#tvx~7@CI_IvC6q{1ilynJ7Y*Zc~&X{2K|l5!{gNd6wWSsQ~o^ z3@ri%r3`+G62=^v4hAlWs-D3ZWIO|BXUW%77tDup$h8fhiU#EFUw+946TrkGA2N<$ z07~udX@bH5cPIwRVRt%wI#Ieua>7%xZV)^CHvatB{J7ArcuS;M~@;ug>R-790Xw- zdmgh18@O2jwG77u&%j?GACjb^+4Df7;65 zpbv<4wKj2Nambl8Y07U7Q_Bne3?X9(@OIWBsWxpvLQjj7=wde@aMmK_p!#9jQo)S0 zdAur{$qee>z4~_Blc|h-> zhG}<6a>|8SMp9)9Vu3$J{{91oC2lwnqlYmF7QT$I=L;+^=|q>^zsT1Sw15%D9gF&5 zeB#}S#k#*HcwV)CK@qYp+A`cKPM4cTnL3FlOF&e$hEay~!uYNVqlL6iC{_jQ6(3^> zlLBYW6U2fEonyTczRyLm>{zN$&iB;6@~XA?CU`Zrm42s)+1R~<>eH;1^9tD-gwl`^(XG%e+p=*hDE`4hr!K&G3D|admGa_L&=^S>Ztq4q79B+BbBpb&gprw-A^Cf|@xSx*aN zkt?I?lM;Vl%IJ`UKFtKLWyOs6=FLN-0%JCrqq>=w!8d)n)@V~NacqV#eXTxaIqS4A z5RE-}*Q;>0w46E%Bb z(IyZ>>VKa?Byq8O27C~ENx&6hd*4)d0 zK7#)rQC}I>M)$nkQi>ESPSN7-?k(;VcXxLU5Gd~MR-EDx+}*XfySoI3ym@~A5ASs) z`(gLmlRZ0=nfuH=X9hi!rdA+eAA}4g1=YJ_bj_faqb==C%^2#2gF2XMB?9zDb5fxu zV%xbmt6T-Cpo=AooiYn7onQ`)(@+H`C zwJ#NE(Q%p$-R3ol)f_cc0lv|1(#DlAF0~r}ah`Jb75&ej-8omOYDok1`iSGx+$v%w zj2~pjX<4{mQu-r4b7eB7K)r~|5<~bCELZBjEYySCE-ho&;4Jy1(A9DUFdCBRkwSUa zDzi&zsCgt7icf^vyG1B}Yd*D5d%8SD0i`?%(x_OQx^e2j7*JOleU|wjsVjeG9?tpY z%={n$I=6P)jQ*9+>b-+96^e$DnzpSKP^UN!S8{6Cs;b)S)Sl@p8R8N(+sA0sMhOKL zZ1+k10xPHlu#q61Lbd_p5YYA-)etuOj`e58`hmtTTTIWmpaR);V6i< zykiMzZtXFZhC`92ZH(-?qcNzyXwupl6PIVcF9EL@4+_5!#{vei+Lc+AL?Mo<1F-WfBgiDKqu)5_&g( z$fU0o38*yrpBTZmzx$!wz=VVp6gWN9DKh`}ejjRurJ?Tc0ra03HBkWS#!&O#-6(A< zWk|40jseOkFhQ$%p*+CSWc;5P@4xFXuvT|>_L)mVAvRwMbFFs3JP1U&z)%DCKQRjS z3(+M(2j2WYF-BKNLW%3o%d;4u+;S5%P_8s|g7~xkMBNezI)<4`-iAt0HASj*fB{_$ zN@R6+4%x#=vze#$9)5Jdyzl~)LT(Xl2>=*)zG(I8hOrL-Fpjt(B?S zT7$aqZs!0fu9i+Aojt=@a(CY|UWOo^X`EI6r|{Lwr~h&MDra8MG=_?3K~gBi|Hceu z^L=4n{!bMYLHv~FdfSNISz`5y^Oof3VbB!Ga6g@NDhxJ!rx}Ax;clBq%MAkS+S7;g% z+15f8{?rsiae%pG|36i5s|6w5y#i?01ZMD5l+BvC(5o_ilbBzG1Hd&8{@D4bCzM}sw=4v&Tru@B1p_veB#UFLxpvXtiR*>b{+&s8j-()k%>MzEU zJ~T@MihB55&_m=OaRR`#R^67EoqC22HMQMjOChcXKQgaytn}kOuoCPAX@~-FWb!*n|9_;5}5L(ruht~wTRVr>>KO)>Hk#Fk5 z*M~cl?*NFvwH!5G(%br*UEj*339xC(ihcZn{bu*2%@lqe8zR>*Tf8K}XBUFaL5C~a zQ?ku$05PCw1dM!XmDRQ|H~4dPj*AD)eaK|`KmtvdP`VmHZL5{Vhu}gRsg6iO_uD<9 z?f_tOD{3-Z_d2|8RXcT{^scVdtH_Sd=gkCH7{m0@>Nuab4T2p&*d`!viS9!B7U@g6 z^p_B4xJ4g8F7vLlLhtIRO)<1oq9I};Ld>*Cbl== z$Hn9%8|I(;*2>?A&qBSzsXw?oUWxDFFzAqI+;)f`@b?B~(riLM9bTh|{u@kBW{=r) zU3$8|XWdVVm6YweQfBkz8uf$-1Bwyc(h$G&JQX zEPX_cxS3f@_>pI(h(KJ2Y9zZwy73X+pOmFtDCo;>da@jQ%!jRwmQ;xqkL}iPT_|@?}lxus#`cdKuwI&8GxEBZFv}suU!2O{=r84@jk$Fo%>&!0cT*r}Rr%ZCLNx56-aMko zEW+qLcJ)RqzirNwoNeX`wMi*|HSBc)de?_FH~3Bc2#>D4U1-T!gB_a^Pe6DEw>T?g zvrkZ;kX(C(l=Fu48*gtAJk8C=gsUdqfmh%b<@)nFmlmlGH39U&3dCYCo^V@2_JtLn zNFP_I$@g0lVhOB2ca3|5DaU-Ly0`mDG@Hn!62ug7SBM?iJz%w9FXu-^&h{Ftc4tiT zLp`ZH?Ula`JMc)Eb6r2(J_xZ*Iw_M3;#p^OGc~J+y!l1u!J2bj2zup6q5S&^dm>68 za7}8NsB1(mx>a2w`s+4bL~F$3DOI^TM9QaF>J>*#1eD~@vMrG?Ern66s9yQLy($vE znMc(rPt_TLu_-cFkQg*COjdm!g8iH`aw9))`c(WyaqeKIsc#=l%7LWFR`EU~^3{z* z+}E(~p9mb)7>c4gi@M?H~E_Ifq#sD zi~BDIei3Zzr`8M#)x;n@%;f9#avlBrSI;URqqK75WBC@2LUKdADcfB!H!0kQ=?hhI zht&94!MaK;FM4qyKt5Z>D3IfWF0-nUkC%MB{DMk9@|MAdCjB7bSfJ&|{y4k_ zeVcsth&XPJt)t9YWSim&d21!7LD%DQhXkT+%@Zjx1!bnOQMz5jDP+vW!ydUM$QR8U zY4-S`LCIx7GPD6q()S6l%+j7$0wzJYi+Hors>!;HBlSl6{h(}Jj!l7Cjz1gi}~57HU408Zk43%GGGL&?s);dGl2Hy)Fml^*yAvw_C5|D949BR z-o^hToaFm^DWO?f36f(0R)bv`TWy^JCzU#saG+5#$o+$S+kB(G)}F<$7QVteAC|#1 z(4Z(j_h@4rE5{PzMa;SGlgXW2m6K5xl{BCd9gji!C=gm&gc)_M=Yy{|2Ug~^u8zv+ zjJYT-UGJa5c?CWBn3r)Bp>Id(A7FkHxE;xviTyJMKS=F~xA%};j(o!rqpk$yvtQqQ zLdf?RadL@D^Giu~RSif&3a_;cc!sH>t0#PPtv$7g4BjA$yX8c?r_0Vhg8V|AJ1eZn zmUtFVF7v#v>3Zy+4+2CIcgt%!&jqyOq(!@YHlY!6zMd4cVWk@?SN$wag!Jnl|$4QdlN;C9Yqfs3tVhGuytjy&73+&Gms2^^5? zvRX0bsPct`c!pk&(+$y! z+6rp!hBYY8w<=mge+9vcDDN@*ckZ`~+~N!c`NU$Cy0SaW?EI! zGO@6$ui`vnuO)-DyC?U=yhP(lPpJQa0?t?}jt|T0zo!nVy~>Q#ayTkR6BECY>5?Ou z^bXJ&-Cd9N)6H{ zYZq2WcHjP(>?nm1LSf{OFon>|yIm?%qep|{z{~-SKX4%Qwivwxmu**4@KApI`1r_- zfca?q6OOKvrFQFvsW2LyOb#a~t41d}Pc@-~4UQXKh!?ta$F2H>SWekPjfgFF^cA`q z|NlV<`QI$8|33&}6#ShhG39}uNfo{W2{Yw^F$tcrKX>@4b45t#x4ksvFy-O;?cS+N z(5=hYNZm`UJ&R8oaB=s0#8cXgJkT#7XD1W$88IkGfEJ1oxr82S=6xbs;2O`J2I%j4 z?gfGO-@iljJU>Frrm#<3;>3rJ%h=XpwPi;Bai2Nx1bBd_YXzfS?{b__^T&mibJQL# zJ?@V-WqW0Q_%Q!{6G6_rGIUtQwD{g3_#Cn8uZ{7kj$(`Gq9Ea@AmK4jFWv8Kw{vRt zE>MwJp%f!uxmO7PSsI2MG4g!yE-+T~W!t6|VfWX)_-MCX*Dzl5!z@qG_x88dWH0!O zFF)Ep(3zfza?t--62y9`)EdqDG}N(QV*gqeL`NGC6Qq$4B$L2GDyy}hdlXMX zyHa>VKna1BM-4NmJQdbX_g(_*H$ryly2Ss(Zep)gI}p?Qy78d~u_+y~kxNy|dRau* z7A1OVOG?D1DD{*l9vE8T`XJ@+o1?fa&Ogc5TE2$?Q!9tpw?kh10SH$IkSZR zTah{}!+|~JVJU5`h{3h7Jicjk__*7fU3^0hLumMy`V&v9LbaW$vsl8hDS#k;HLP7w zRBMM>bQD0l|1zKSFqXtzko157&OtUq0#cTK5)-8O>r*V4#B8x5M)dt8`J1zw1AUxJ z3=Hq#k3adT4eJBxx(|dofDd! zZQY73c5_$zH*!#r=1kFCIfnIrET~3&5M9DFr}B7; zh~;Lck5)hgSa;S$Wlkv>|Ya<}RKqMlX2Duq&q zx)t>`?UB(q2j9yAOSQ62=sy%)8P}PNj+k*@_4IRNLdg}CCADrGm~yNoRjzMKY*6wb zbFj|;$sZadk0nwJ^rfm%56~OlfQJV9#SC$4oBkp5m-_|mv#(jwpzE5Yzn+@>aMX#t2B?dNOdPVzzkuQlZEjwMv-O2r- z!o1Z=uXag7JD0ofdjba6!eIz#kPkkOiMM+*&A^WcU4g*))wSF#pz5paM*&gj1((zv zgHKzM{ScxDXw@cch-jE2(e<|CWOM|?`s-*I1QmMPc>qXttoYw3_ydp+urbtr!qBr% z5fFi|s6dkc&YN;vbS2z{0_WTQZ}3xT;7(s|RvQ*j_*n6E(*@}Ku6k{NVEBJS?_ItO z0@}+e!$SwU_Q12-UM)B->Gw{G&nI2l=kH2pwN9eI#ucy1`PNhqZ8`jhMH!dMpMYtT zc5PS;KmB=OWk&yMtCHdNgk@F^GH^+Kn!;?Dxdb z>{J_+!iIF(QuL~hkm|f-v6Q562dVe~16y5G#jHW}obHfe7qEci!fR*F=VcBF#_2=& zI&5yS*Gs_M9jKet6s0%uQr_%1>>v#Cn*?fgDH;6P3^i91 z{+A~=B^eQTYJr0D%>uRi5ro`+<80y8a(N_KED4|&Ns+Z+sG$z};o9^09-7;EM7fT`&RnNP zbgw<8 zWm!uqr@gefv)HuiI_1(1wnbbN?DTp57wIG;pddVdmhbviv~Y_J77rHYX0>;kq(Fy z=4wCAl?=yCPX*dK(F}cQ6&@p~ivlynL=*g3v7vCL4f^(1PRdjSzad8DqVM1~z4)I| zmF?nz4(_cC3CaeS>VtR6y%S4!+$jztACJ6F&ieZvGw^AQ{L-en^SXzC1iF2XyD=O0 z7X!yFVU;nYwH|lG4b)=sjyOyo0eeVd>$!aSmmgn8xLB-Oq8;O7G%OP?*s_z;)dVhd zO+dln;T4m%;^0=3foF5Y&!%O$Q)ksN4t@qE3Vz1E;hN8#$n4*KyC9bHV^T`TXwp)n zMxGn{81=Cw?&T9ZPO7I?Pf1+`X7kExpnxNbU^6R!^O`=c=q0G9Qo=JX^TQS%hGg#s&mkY}E z8piT91($eIfQk!da%F!0{J-q~xL?J`V0GAsGBOfEZ!Q0Dh>TM>i%dAnViYY0C9uTwQ#}xX zcMkD-qyF+nee&FQ{QDgYCXxuMY%t5A_ zeXyj&vD*tA+B$4fGPIet+3xY&G(P;?k1Jm*j_Qe*I5ZxR8&eNoseSPA)te!lOxV-8 zLfTFE;bYQ8no@?%h;}ywc8DTmaXh0k&%-1{FZN~bF4_k*IA2SIQHSlUs(ui_cJ`5f zk^-v(vEw(Tls`SFjI!^dsg(_W!4Xn_=tzkUGZ2X2)$Y>i+xIuy<=$AxtU#HO{!*I% zF`<+1Qkoz^F*K^gtHtY)aU0E@B6@v{bD=8d;sE=UZV?^g&4?L}b*fl7{@h;GjV2us z<6m^t(c@I*MAox=2P>Q_Vl%G`aMZGIEblX@!L~x!zuTsaxGzgRGii52Z)<`zSpDq$ z1UpA1R-|{#hw&JnGSW=5^F$Z-L5F#j69>M|Q%;adMoa*~M`x?eR(`F?0Q`pPldZGU z8LWe~nS52L>_blH@zF8>UIsNpPuO#J*`+C76aX&q~5Gmn?$EB9ERh3rxV`C4l zmdRt4D(Cahx=T{Ex?KHv+UteVHMR>IPg|w@yKBlgsEVMoCJ+?>kP%H z?at*dP4W}v!oA!Y+l^&w2tFEgMVtB0?>=(M?a^fpZ)t_fJb8nFm$br+#H~|lgeR;kT^3A}+g(eDSg9&Y~<~ zv8PEZUbpmFy}L=|dObhoa`8+WJi3|xc(9bHJxY}fV59&0M)io=?GZVu=2C~*nVE!9 z@v9{kx;3WM3;fl`1#5(Oeo^wTvX89V=4qmenbK|9cY6IVV_5hDgA#!@O3rMG`>4?h zG9Xc~uZycPQl+x5N0fp!ZRY&iBf1Yay&0C8Z+Rl+s+wz(| zrO$~pm3O9gd$jdd{_;J)s#N{gE(d<=AM|~oN$@B$tDj22asaL1vQ%s zY5mnGvTlD^PEc-;+-H)F@c^9wP@vD&2|vfdZzuhx)^?I<9GUw2b4O>_epEkNkqz2DpwAh0o^kGKC%#}JtsWXJUFANC;aKF zz_LlG39CWjqP4|3a6oxFKf1UyHI$*Fgpg`}ysBO%2mC(M&JN);_q3M_`}g$W<#d}W zIAd7__if?%cZG#Dy#x2ENefERt7LB4f(u;mLUu#=q;=miM>2cW7Ub|6QjGO%u>e$- zD>He7_HKPf#UzGR5qR_IJZ*>E-RgnNtsEH$tn$cLHC z{rtAk#G{Ms)Fb;g#t}iv8M`-${I=&4u_hOH2kQdc|kzbHy5u}lq9zVGv72ZThM_#XY zb@kaoK0$;XLv70;gTf;m>F>UzkX~UI$Zc zZG2^(4;msqht$C&*?W^R&K6WHcCBqOzN@)fL&Z;(ZsRA4`(_K~8-iJWf2Ch*r7u{e zFO;M&&L|#+VVkP-1vR;e6)$UH!S?S9QKT0Z(2Qggbq_G!c~oJHVm@g;y(F`8^Ibn4Nxr^D z1l=u&m;M;Mf(hRc|IFr^IzwQ|I+zQ88F9$DXT%!tI*RTrC}Mw{q2khFTK;#{{4ki0 zo=Y%QQT}RV!Op+YIB<}F-gHR9=)!1LE@PEX*PvsfS9G%uQ2wq`2kw_G8U94EpPd=c zz+CIFX+FPyEG!5DKSU8hk4+}#vlso(@tQ`DujNm3Pm9Lw_b%3#JM+1&z}%)SZC*V6kBZj$6UeX?(UV6^MAJ=SV)`fgLbXCbn-Qx{Y4cfV&fgjnF2 z^ufSGiQn&rA1AojBc(P3%V!|Echgf!yLx&RA=2u6iz#Tn^_IWgmbN-&hbZcvpD~e! zsJ6SuN5)l>BY7xmbLf?v^*n_6L?ZNVf3 z2aGYjcy}r{SCDgan^@l5%!b(p$7<3LZ>%QaHLl_FzEl%Bps4WL3g`_Veb--rb`u!# z@M%>Mu*nFq=9H*M`C!cG;gk+gh0L$B~0wDy`OcBXpUQImAO>vmF>GxbOA05aJ8n8l2utvrqM9e^T ze3|<{CA$#idh(~-WE+6iDPCgp)5v7v&dO;zPDn8DZ)2dzEj2_ObUQ3bkxTudOH6M=XOhL zGu%fClyQ_Zj-HXJP(64u;fpDHrAJYGMVe3$xWUY@Q*_ozTuY(waQ_W>dqBwa82U3^ZR@pU9nWu2$GN=>WbTi$QC6>l5MXFkS5_VI|r z;sYOv#Jyu+sLRijyRN?D=iQK`Kk25XZG4~fSO7AOp--v1rx@4gbN@TOQt!@=d5jOL zj4j4opPFDDvI_Bh{v?;gRjs>Wxb*|N0yWq7sKd1Q$zM&>OL^`*8r8%UPyFR_pW<&fH=`#KX1=q+A=(2{cBYQ1Q-l$7 zEZ8b{PN?Ov_f@|FtgY7Ha8wNGswuU*wK3?m&6rF)bXaVNigT_^~S7`V> zld3i?FQO%?6GXxr#<@rfY~YfRlLSFjFHQST&{lG z|0rb#t&kX=I@}~DY>Gn#4z}cdcyadnjtFJH&Pt9ySL*x1JhA1H&Ve;`bK!Ha;hx(` zpiQP#5`*shZH{0w62Ac8gbuEy9j0{`jaqUPA3Rbkoh?Zs!(~X|Cb;+iq!YJpV92o| zFoN~qS%;w<3~ zplY3MjfuIfsbaaWKbhg@R}6bcq6HdUP0k z+>W;(^c8`V+CqJtPj+kB1G1)aS6MxBF)l;4Hs3itBa;=W8`c{hR^+r$+}Z_GzwK|= zT0UsjU;AuKUloR*Iapur2AnvhGB+FS3jSU!i~i#MNJ96Zs;S_`&~q9evz+onyQZIw z2cPTez@L)GoP|@f*G73d^2a*J&RooiD2JvFBhsDsQqU9JJVMv+6t?)9`Ms*Ymwr|- z#V{TGiI8c#xg2)>o|yg*OX%;^?PJ>aAXm6aQRH=(1e0{Tr!90EL)7uT<0hNMg7W4K z@8>%U(l=ebiyG7$Eo;XZFfx8ct#v`*;;nF>b=)B5*0nv zE+oGhYq@?m4cIrKELgU$rBp!+K_8!L*;S`hRU14p9ARTt8bn*y3XBj(O@)oc<+$b; zGiI-7(zzw$QSr|!D!!1L_b{( z{ip$^e()!gz7X|YtZUAP;^Czuyos?x=S65|2IKZG7iORER{sUsyL#VsV`E@O?zgvv zPUL`bgjQ~!rYoh=76_U{7AIC-Jn=!|T`qYG)O_`QfrnQ5kr&4qCMc#>*_uG>NQ7Gw zz4QN+b@C*Xni?`zQ$RsDy4Q4DRgOu$Fx_$H` z66IX(gW?~lVVv(bdTjMY^{Fc*C|yspY*8L*m!ud)Pf;fuQ8$V^CNttvkef%9$PY7r z(^gR~_=~@oUg<{oMiT?B@R74!EI)up>phh$4t31;uJ@L_oIMM29S|pL1q3$lufUCi zyp4kdb`1o!2NfalX=sJ5WsF*2Pgd=h58b4DTb7G6Kd?D%H#mlrXT2IK009&IGQx*e zvpPQNeQ-hh&r9P0@f?Ip<9@lG2vM`+l$O|YYx-s$C;g$gOZXP6%{1(2@Oc8Tk=Nlp zTfSJ!TGpl-0R>GHP9aOT;z7I8_GRwMIu-$6P?p5-+C?78n(<$N+5Qxi&LH#$owbq| z?M$z5P37?hL+PG!G0}d9>pzJHCLeQ|VJl@Flv3JdE%l8Tg{EWvNWtKSGt!#~66;vZ z>zj1-)uz*rfunm98wk9lA$GL5?k9e`bdo#IfG@=uK9xiqGuEqwH=1C0xjz#J>ycns zo_dclEs{~ES~U~xc=MNOa4p1V0+J`*mLPmxMtu*zpk>Zb^Niapgi5&6PG}co6E?-} z5K=@FyU%t`CF=<1J-~JX;hCIqj^tXz-?7mF(Q~pSzDza1*`%4(U`-gIU*d6A$V%iX zrrU+D8=`9svm^5x1#8BKlap52>l0WYD{K)#lQ72{uXrs};wI3!AKQ}_GXH|j;Ujrb zWW~LF#46y;(Llso6Sz(eCSngKr>=h0yD zG!#kZ^V7f;Pxg89mQs+9y7LA@^I-zK4y-|7qlw+BLi#+tP-JC*av?VUvu=c86LEJ0-Pjqi>&V z%?+@y2xzh37AQi4_d43|&`RBi16{iQ?OxKNT8TuhBq1CV~_-^6f%& zyXC%9h*j1S4IS$Oa=G&9p61tId590-5eMsAr{ER`bM{d-fCUH1tJ0^#c)&3f%mK5_ zlY;_TrhqN2yWw)gao^8vgIkH+yY2t%06WCY4LjHeWJ|+)PcZ7UIbc~&H@33W){Yo63XpL=rfOa!#A`Uye1RxQ)b$gA!el zJ(@D*IsLnp7vnrdwb>iX%@*}JXD>ShWRS$8h}$EzVbeP2(*Rc?#-g zRsz6yka#|JD&ZJaA7EGM z_nX+3qlX!B6)3yl&-GdtmGn3vr(K*W%EN2aBijJob})$L{RRpwSmUG@2bwIP7BdVI zx`oD`rTaj9sQ^?uqIanljUG3gR4epeCz$J%^5GYQ^5OTY*sGI-T^6V5Z#vpjS)B)$ zl*>bcSx1xQ@~*f*>Jg#SJh3Jdll(X2wX*-df(aK2^3bXPYgW=1cN7m{6iwLnUO=q@ zmWJ^N+9(ur6oQHnwZK#6+O!($KiWe=dv84Y+okF#*D8UnKDJ>b^(o112dl62k4aAS zbgJR%csdreCd?$_iBs=(?IV&iC*~7*5d;*uTM`+F*qE#vkB>KMFHxXFohN8Bm(c)!)^3l!)t56} zVyCqwmls*Uas)-oxug87+>ut#U2(OGWN; zu^;{KUgQvBLnP9~qfywsF8{@aaw|l!+lDb2NAm!~tyV7SBB_`SKG^DVi%#2LoR=?1ng%Dr?B zu@D1Mx~_d^g(wX(>*>q27Q{!O_z@{ zZ%AQC9iZi_9Q~oDlu?QojS#3X-0TJwvC+-G?w0b9$1cjoVF8U?Yf7xWR@~j`!?T>9 z>ZBVykwBJphg+NPE(0|bvc!VoAw>kh4zO*_}S_IoIT@0NdmMmZ-{ z(6K`5Tz4|N>0i%GQR!~GEXx7?aw%@jlar2#FF3y2vVGp~$0S!hfgKw0K;BF@Z0C_J z4`H)6JrUCW-*xXFz~OJ>-66=5k93ToHfM$)_aS32It10O^W2(Dk+cq?i`N{M_9~pv zNnVq)&Yw02jL>%{nkcJ2u=>snB;J=jlAw3#5VKoC&mihkrgKGVBykbhz{|zwhqK@y zoGjZEku9w7&LF=qJG{~g3017}w9Eh=O`+a@HzxszVw>MH0G(~BcLm7_`n7#%AhUoW zt7_0b0<>f2AzH(%?J9eJPy7eKtyjEq+RL4E6nU3M&@oE5z*UINuLf2%;O42Ew8gLLk?_5bIzC?EOi^Xe-EpP4)g+5>IrJujSG5B^< zermb*J{#3crc@tZv7j_H&(ums8-B4Ht*8Hv`K=&&@g9TyK9ErWJa*c;!-XwysC3yFW*4-fdG1-P&a2miv)^nIY(9EHE!Nb=6toT=GwjcB+}M+X+#tr2 zzdeh6XlPFPVc0gJSKTaIgPYJsvrr!!DDGgbu3=u!*q775n|~WGgkGNFCo_N?HIHen zI{Jf7k&5;^m|v}PABg>gc-r6zNmYwwrc`!FR@)35@{CPZgCO&zC2E1YLWU6HAEb0! zH)d4e&do0HR*3ZR9wm*{yM+3Lczz3S4SxdbEq!5Y`BzhQvw0xXS2qeQPZ2%+c<#n5 zGf@SuYj^l(nm%|S*fZ8Y%%1JD}E@;K9o4sypgN;rL;jhhUbt#GRGu zhtH1C2myfLmPu|cc)O`q6NbHM#D2gw9r=ra5JSt>~s`Be=aQ|Yf9tr%r z5(YpgHJNeYb51U}dIHlE&aF=h~kOVdwZ4f;2$ z=1P~T7tA$ZkFJi%5S~~$YP3OXNORiUyfnY%i(&mRucXi`wGqd)sqeuOtGyS^rBO^E zINnlK@AW8%)N5ejpoFs6(w=?8imsti5Wm!@oiiCnfY+0ui;uWmn9Tv+MG_Bn=R&!k zH98!g9Rx8V(DyS5sZQ-3?^&%6uM30=G;CV2o{AjPT%$cH*cBLOrOrKbGGG`J6WUmsevP@F9A_&Wj~Bgh zmI(>qW+iEt$k`c*SU-JD2y{u-xJk3Pg&+Zov*y_{$F1LZME%^}4rGU`*@qu|zwJB0 zJ)Mn70i9oJ^WHSa8p_+x>iEGXC=jvR@UGl){v(Q0Jy|Bm$nJa?*BRLnNXcp^jiF-(u=Tgp!Sr&{*MzDAhD;^R`${iwvzoZ!tUrvYvYhtkyXe}^Gm?Me+9q{POA>)s+y<4eA4y3fiA-q+ zcK5F19Mi==TO>IMcD#<3bZI|{8aTZ#b?)7v&2At?y_=@F$4q@Yt(ryLd<%Xvy8G|u zV*{sW4dB3yqR+sS$#cZ)<)iZ++G1A<6}URYad}F?OZ(EoitNV=N$`pQ>-gbGqCdM^ z<;f$P&kO$@<%441o&j*j^K|a^I(MS0@LGWPjlQe?+Nk-4R_Oe3@t!gkXps{OnR%$5 z9Gdz?%xmBT7@auf)9Epwj8?2Szvx&B9 zrrn5vVb5v6P<>v$;*GEqkyd6^M^*Nm(89gDPuvb)t9$>KH@d@L_n!!#uOPb@zFP%l zRsGl8>D(h9FwOnLQTa~hVmP_1qNyw$MNsybF?!>E{Km#;9czuRV;q&sv+M4cUO`S> z{#T{GzQSbNrssazlut%xohi+N2n@O^iAYwro$ut(3@rNk%d5*}()V%#a7&FyW-lx( zl*@A20k~{A+yG4ecevm+U%)1kij_&pqB;2Ll7CPo;i5P$XPtB#7t(z0@7qxv9eM{x z%nI3i6r2%mao(gHIf$rCVeA1+Tg-G;_J7j{km+ulQdT(zMMZ!vwQyU=ukGI+)YelF+-;)ovaim0QCpm%EXTMXI0i{owG7;zrLprZF`L8!|d4C%pr6I~+mNmJePcW^|2lBc4*X97*m9-O!AvTvj zo%=K8TFY_e)?zsQ5ua0m--|a%lgGDiA|f1=+ss|0;4G$vvxz~S@^1d~x{hW|!HHwAPWtDlPHF7{`|hO z;(d(8NAcrFDU7FYN5GiN#-A5jY?6=-%sv*pJKjg)?@2_pMcd}Y#i6$%+0A2zoR`<) zfz;RCwGn6TPi`92dL9h}OrM=!UR~d|4O{R4eFZ-QqYHaFe`ix5MShN#`4G^S^}5u0 zOoIU8$t)I`DE=!nQ#`Vr%3_+eQL%H4WsYqLT=1jW+HueO$ZQ`FVM|tDmS`Xqktpm9 z7_RJk0@R1T;@$V8B9Sk{LpE2dtKJRI?#o?Z1K;R!V)ibJOW~eE9rtW`Ekpzljtu_! zOz4Mp>`)-2(DL@JS@MwEW(Q03RsWfB^yu~UAbtlBUd9?hynU@-7N-$C#-iR=?N9@% z0{@hwrFIB@GDW`^>s&MG5yQOj7Ct;8J^iN0TCdYE1+PVX#Rors>Pv8)#Rpkmdbx!e z_pTj|AV|kMhH!t+eLu?8vkN^tf4f@l><~UA^s8NIA{q4(rsMrVYuGh%+$8L@^4?GS zf?4;3eOunycRyXQw5xQllM!-tL9b8b|7_8iBd)moU{{+ zy?fD&tw}5@fazEzS*|gTjb?U90sx4S^WFa}wLGkPf8O?y;Fo*8vi9ACD|?2p*VS0& zpM%2Xrl#~7o$1l9Ll%a-%oq60@WfbNqNIW}r~&dTA4F?0oy0c@^zLu`779Q)VsGUg zF3~1%2hG4N-?pWgj-p#oYMh^A(w*qw9bdbhmfPBiB}qMc|abB1n$d1 z$$AR3c9ZLUK{v{&MY=sb_vdPaY(Wyo>fB^^9WQMbc2{-OrNt?>O?7)zQ{ClnC(zcU zXRcik2AyaLlBa@xl)tA+)lEaM=$ur;4>P;5cw03&k1ysWEW1@?-{UF+*4r08`qb46r@TT4=qvoks86A-IJ*l_pxH?lxcQLL`Kio|BBFH z>bWpaGS5}p&!RaibNu0GU2NHNHBV3qch8<02M{<+Q8Kou;*iUU^-LA4{4LaY(IW)B zVgdf+d`Oln5bF#3+5+u8RY_a(Si=?ayazWebi?m!VR${g^z|_3!}+JnH>3QU%gV}f z_&cPhOf@^i>3_!4Blj|0+mUoK7EQYtnXfq;5$3{~TUMmP%$zyZ#tf@uqfNL)^kt74 z+41|tj}f!wnQe^93Zm=JZkgV_GVZ0tS3Ix#CFKfg>c2&}un+lhg$=|VAk3Z{qQ@3| zEPNIouj@D-Gg#b=Mm#!>;wQLPZmscKX5+RX18JwDCYWA;3Yqg6G_=5r5`%WKG_;YA zNxV7~0V)P{U>X`+*xS&i$u|v+F6?dV1#%1lgnmGJtpo-dFD$tMK+!X33~qm-=ovI3 zXSQe1)*EIXn=f3KDrd}VnTkH@9=uI(|367Ep_bu=sW3j!OwhBvG?rton1R6G<^H&aiMd! zuNHg6bfMT6ZGLxFsHfO>xcLnX>En!11&FpM1>l+Ik#AVfqd8p%hjWhBv%`_1t9@^* z{Q~u!g2pQ@1+P+E3T7!T1v7yyCJ5ZGV9oG& z@I6>pgm1{W`Eq>5^<+O5yP|*_IHlff?83Z-NOZUd7!m!rxT6i-72aI5*NfODKWcuB z7KvSTY>3P{x(}Xz6sUo@Uq*vaXh?s~AOOq7>grk1%V-apgCv!g(}VvXJeTulXm=jA zJ5njn%~|0srOv?f{G2LpF?0q#9vqI$_n4)KcsU@H7nx(i!e)?`=9kTApEMuQfN#ac z{)IKtxsT8v1zu*snTzaKkpi;WYidWkl#ULgp1r`E8<}^!Nr1T)>iGr!=JaC=Yq9wr z=_;141U-RiK*nV^hC2OJdoXa5RWXicf zpA(2;Wf%zqO_#o<>WkG@+QX2{xcGu~Q})apuG5ECcs)R&F8qzm#GNQlWJ#K@Z|zO& zARCVUA>9n~@<#TOZ%~ylXGy-Kfqdz1es^Z5tJrs-`3)jP40!So){l~kF%&Q_l7NYF z0VA>BMBFz3q#N1aP`I4wSrV5$?W0Vq1Z~i{Ex$5>J5-m&<7ofTaoZFz_%lZf`37X8@vw+ z`rx9-fvvmH($1*yqGj+xkjreKp4%3tlOd31W)`y?SMAEvWj{LNC?JVnP|r-byHgt} zNP`vTqtG3HxF&kuVn(T17#+6I)?2AG?E{<_+*}UmHDutoJ0DKuw^P{WHoDe@=&3Gx z!)OYJ_QF?TBwAvwR{VcH%EJ|s>ARycRjFnqhfGyTOtt7KVyYtOZ&LGwm?@o_M@Pk& z1v#py4n8g>c6xX~mgh&>yd8YdFpLjzlXNwTouQ`3Ij1%C@HDgkxvj`%$Gto>tVj7S z`lYKrho9QKJ9u6A)uJ$E7bMM(Z1DESlG2eemtT+GN;Y_<*!K+l{yuz%&yU5hw&Le2 zUE2FNXJzQ^q3cP~@1t$iBoP z$BacRP-K_B$hO2HyNpFpd(PElk~>Z&x^a^M>m&N4_=yIkhe8tZz0FAadG=P(f z*fqX4>}?N23hL`$MYF-hY?~Kp5$|Zwy$tx)j4zIeSfhB8C#8Viw(>VOWp&Bhylx_6 zT5$)~4cp6lV$MbiFP<_b5TE8OZD6Xpsh z=-W5pTCtP>sIvtEELILTSO-piH1F-iVyMZmE>v)->GxpGMWRIw5oGpX{w5`g<1iW zSJfm!nT39-t!327$D@t~aTC9O`uZ=3n_M8kmU*RzvR8OB;i7MDiW1JG> z5|hd$xZ+_i*GYePpHvEVJG8Uig}kD+yp8Y)b$&lIoWJ^B`}UTqm&ua36n;>_%YQdt zR`;uawGr0p>@xPUxmq;83hHMmlJaMesNF0YJ)UmvT3;$w!J;7(zgcn1cTa~nHPmBm zJ>L&yo4YDPa&hysWucFXoBtb+CCUF$BqbXanS8x#b2uCQZKIKYCKCS~(DBc!3jc88 z^DmUHTBq`lhhGcjT=XisKpV+se?s_5+=u2|6tme^6v$UmQs`LdRp6hcon8- z0J7i$G2pd9PY$VTMm(HA-xbPw56R4m%W`Gehw_;n@Ixt=^p=bJ_~k3MoGujvsHp|C zTH~NRFhpJsg1lnDXOEv9kp2ndjvkQKy@%^Zd)s#eBG&?rwsieT+Tp<$AK;Apd(H_wym?xU+#CgF#hI$;Kb;ELSPl_c~(G9-$*5>jh)nAqQoMLnDAWD6b9H!bs{f3Vcd zM^gNE3u#JA*^u-^w=BbBWiQW-PC%s}!8g2A_B75umvOs-{c?>96{!Mg$#I~#pp99> zb8%NST;{y_byntz;2}XL84LiAsKUWsy=RB_-^Mwp)0YdO>BaWyC=Ds^hD|lEh79vwWK?Cg|@9bXlVsD}OKu#29gyKip5G!-$zn{~c^FCdD z_Vuj7>v}^h%KFgk>EwM^p|jz>=wHmyfpqpt^v{-@gP0`d95i>CdvL4M2S~1+<12IB z?**CT#dsSq-yr6A%DR9ewb}-6gTWd2Djv@+AZL5-wcmoAUh^5nFx5$|TMYGzt4$QzFfI<-(qcht}s zEf#bba>SLFHy#rVN+sGGuq?b;g(nCz&Fm~st(ZA!E0)=4@72#}$u}!{ zTvQ%svIF$;9bC(z9UxvlL!If?=y6L8Wr7D|x>281-Sg0HJf3gIx2By{`lO0$(3SPRdiKd)9jXt9>Zd73rF_|T?p{E1II{B0w^-;o5qKK+GJ z(mRu+&nI6{v|dxqv+>#RM;DH<6Ym7NH+Da+C;Ag+p3sS0kU^!rqL;*1DUgupB{v&3aUYvMx{dG0+!);te#GAx28&-BqKqFLlOuFpbyZmw;y3{CSz54Uq zLVm`h+6R#(CEg~>V0p|hvR&ak^0pB6i_-9m0DPY4Gu?kHtUN;BbO?dZu-WLi08Is; zQI%+OU?R5CuJo__GMeLVeeeCCt2k}}1c`5cZH|0lMR!-%=)7e9?Z z&%`@%X0}%jDiG24_!NA1uwj0opD*I9c&n2Q!Go_SIANT#zdHotWQ=f0W<3JWa`+D&0Ivx=BfoLqYe4RTN;4y5jgXRetjY z<~OCt&$mZBss0eJLM-PI#+KiFf%#2w`IRoy{~-=|vagqf8ve=hn=dfGX@vYEj92jm zj@Jd{H>Jq0lh24lsYxGVATHfJO1ddYdW!z9yukjyp!}v(`IY!dXL~ES4G@o9){`Ni zmC!0DD|ZwJTz-%>S;t9C+Xlz8^l%2Zp@7tIg@ctl(XzbPXhzi7lP)B93*EPmj9<*m z)U5=ffcZp9GM`vO(@}1d4MxySEBa#YKnRw=nmvV+2dj1U3jNRUH4ENgFLoF*80$}2 zA4u&Bsc`Z3u~i85-TX)rdla=UGTFeHSRx}2{C~}MG~itcbB5yNixw--VN%lx?$8T& zi(%$$gFI;3gKvq3BrKCY%@-qgYz?p1EJ@_76~`$=k8Ou!Ff8e{c%M}rgk{4M;+J5$ zLjF$5i?*Z%tZ15qt}^lL-Vyo$CYZZm8pAIO>$g|~*Rrp9*g}DfkJlCYUR^bbmFL02 zY^`A415Y^zV69p1VGhXfSyr9L#+mo{4g$sPm$L$ZVB?Yw7wf)@;I$tLiup1u2>?K~ zjTPohH=kn%4i1FQdRApThpWrM44Bt1109{*F6Bghy{p871HqFp|4zWuZw1weINcwq zF2;p}^q)a=ENuhD|AuxsV6R_TD{cNNt>@b1;Fo~3QI!lg6oy@ZCjOTf22!`3E-w=C z%^k?>6*v>*hFycJ@LMjA4?TD{t9G#NoR>`Hh15iR&iReWWIl|qdvo@faSi7{kXD2j z$O6CwR1ea_%a*$tbd)XUW%J&ggR>|X_FQh*0Yy!L@e4I$y-;Ole_ELH*;Brxy#qTD&4+4t+Ao|^vohLn9F8*7~0i+ z*4MS#GJSsGH?EjIvv8F;JhPC^EX)A`!)ChCbB2Ap&`maQsv3cs51K63dRQ8iw@xp? zVkOv!?9)+`y$#nZtOQz!re3&Fu$L>dUiO8h&@Z9kwBY4zj*USP)P$S8o*dJo=AkL) z1`9&Nrr?#QqiMk_Fhfs#I^N*0vY^1$ii1`PE)qbqLHmYu81(zm)6D}PQsp)nu#&=@ z=%c=K_V3{esoClqvVZptO3clHu{ZC(0kXJF*3+;+O|!S*nIbmn^B5fMRmzu#K-}h+ znUK>LPJ{QbbpWqE0Djy<7n_X67VU@ZZT~vf7T$<0ybRO2#@M*#FWfJ-pT6&UL!<6@ zHH*HX)sq1!XiPS5jK^dJisb-Y1ic5rOy~`a-;8L1+PsFgX2WZ^Nq28C51CoaLuPVm zd)J+DQvU*SG zHX+c&DsYS{+~)Dh7*)U+4bG?42}s1jGF;i7?n(>Xrj)oDs(YKNd&5}WKB}$qK7ofz)0Jd$Zof>S$rsOVs{k6s%%yto8`bhosXM(IKz4ELhRV62QU+) zDJx}p@W#_oF_@(aG#f}Q=+#*^^Zr4+eC$?Axs*~?yvF3kZEru@FQws0PqWwUxG$5I zTRK#^e-^cUBxWaq2$u6=naXXdsE)~O^}(S&c+`hH{t&vm=zMQE8QrP^jr6bOpi{vZ znW6WZp!e+C`_NrY)-t4L_+5m*J-kHdgo8zC%Bx+724QtR z1{lccNyOl!7Vi)D=F(aUg+L*jB}V3&*j0F>hnfZ}goSOST$HC}ubSX651S9-%CDxL zwe$&!AG2yIK1%9+gIDk{`V!^ zNAKwot>}5sRSu$Y!`(8O&brHdl6}KGSv9D0B`-z5-HI)EqGSK z4?v^GEwnF-+qSBgK{7+Pcl?pdVpn^oy@Lcf6#zBF)p`zbwMU}xbp}2*`zR_TLcrsD z06HCMHnK@8raJ%PNiKV&JqA%;^X>N2YgPl~$*nSiTl>}4^91&DgJ03X^bN1ANr2`X zS~~;pQ!8sBTtU*_0GaK2(4;AwHU&~_4+Qe4Fy9l|`RI zmke5I;Bli5rmPa*Z|xf}0uJuu`u5;Rp;aV~i+#h2^E|qj>S7ITl@}^DvBq((hhcWI z-||6r`1;p=h5b4DcDi|hy+1fkJ=SJ*YZ9o6Oe?Cv=Mxf84S`-R7x9 zZ_Z{`=o_}Tp~8U2!HzmM*TE{RG;8fvj<`+SEMGnL{%?U!wC&rwDCh(B%{_fQ>O&8! zb@C_=m#I-6@a1x2$OpFPvwhR&xK@ul_-D|!a=OfYc(2O&G9oy=IZX^+JslK72b&PK zrLj3yW)7E*7YC={4X>&+ad14QT9_SED@1l{eK?QV(IvF*LKg)y8BAlh`+WBH8-U9j zmNepw!Z*mY{`4nVFXdtQWtX~RiB}t(8~Js5&DaV0xJosiV3o*n>FBX*Fw57+OhLRN z?5-J1TQ0~BI+bYlR+33FJAgZpsJ2T(X5D6CvaP~HHLRihd@uo?mEfVQu=W;V>JMt}sT6`ZJekE}XWWMtt|6O~wJ5&}IwlebV#=RHj|#kIcVc(+E?+T_JJ+E5Kav z0WLw;-T`w0{5Jasi(|rHnGv+x%D$s(uTGd6VyVN;82G@+<>E&q7jL4GD#y<_ZQm=? zL7uxT6vYEMC(hn?8E0?0snrbXIQ*fK<4Cz9p2MnLm@8$5@r|@+-k|K4b17UGxz~Cz z4yS>hzL{))rjEjAh)T}o+L>{ZK3C1SCajq zOH%)X|Ht+JY>f5ud+8_9x5#p565#w4=&$y5~`+?pzC(zq`Tm`v6D7K#t zUb#Ha;1)xpvH&RDuvXG8Wu6XLF}V3xMdd&+b{kW_a4_I+)$k8~j#Ya`k~Tq0BejS( zOxGS)-lc6%&c|v`AbXVdq#C0gg{kQ?IlXwdkBweP;+H3(*%(e^Afg>BFBCuP81XaE zb8xZ_l~iL-_;g(2@qa#T)bS5RVUaEU=WtSaC)^k>@9HD#9KGp}VYkdvC&L4}$&erU zjFfg7?*}J(AZkpw9j>ddFavuXN1DyDhPoW# z3ac`qQs5PK2W}u>nuE4Fk?hzCA&69oI{dBycY6jiZVS#HZ!&44)nUNB98M z=$Q{Fi0~mU3FDoFv{08dTy9m*Lv`qc=Q)r!gCGfINvP{9R8c>S)I5Ux`~#^g1NhH02B><4;Y#bIW3OF#6{#-1q;|>1c8A zvp&m8ytsU&&r*sG@2BMN{xxn@w(Z`DQJU;!=LTKR;Tj|UYg)eSvjp&(^HjP(I8E3* z!6Eyb+dJ*wyTwH7OPkNK;NDmUTP#DCmf^S#!j4T^2D%JL88+!M48<}W)-p)C4BKKE zp3*Yx(&2Cu)9sP)oHO7q_rODojU7I3(_a>ZI&A*FdAi=`E5X>Lk8hUKbx+OUf6x*3oL-Gh6d zy!80@?Taic507&U!uLBZO^3199GPnlqZQqaeZ23!kq*CAUhD7Rxj`SuLeD?AJyAeW z^n8{R+iZ^D6kxw;r{ah8k^hETuOg{Z$i^aRa{6!a!Lf_Cl@^A z`St_{D|o1L9*qU!zP%;Sl!iA6J`~a%Tdj9? zZ=DE#cKCC^-z50Ug1^h)?{fHa!QWK)yAuA~@RxRH_r}+u;9ueI4fyMYzxUwpkMK7L ze+S_2F#PR>zgOY!Pw;mJ{sh~||4gH#+tN}enUjAOE$PVYPlDr8O<7bb-n^02N zR2W^DCcXD{CHJ2)CX2*l-4C|iVRIleG%N zwY$`658o@xKka;0ACIyx0XZIz62FJz<53=aR*OfeHcI;5*Ohpbyw)Sns_`g~KASQg zC1#~~l=wjLC{+}FnfPghc$AntYCKBJq{gHCUK>V-MED8uDDk5fkCJe@$as_pqh9)` z6>G!}WLHrGFI_y!SS4}sC~5dch)22W*^d*C5}_L6QDV)~+SXCxQNsAZe1i_-@Tj+* z`!NGe6azsz*?zxVV`F{Hl#}r&JBsd~E5!WY=KNN5|NPfg>1;3iz3Tq?wN(>v&7qua zM4We#3uwF&)s^T1dSv?r)jRX_UNf;kiKs|6?&};S&LZ+(Oa9j!3f|H@ha7!M=7jqihqc=Zr ztleci5yGm_V4!d9FR*sg96au`nat>C(l+=bT|D=VkED!;-v6*MzVgN&8Q&d0P7+_; z@$V_(^M-hOe~NTS@;_>f-;D2C{O0F=#moC2OIAKv{PV&cy7=cU$Y4b~662p^t}vx& ze2t%s@z0w_i+@hYpka&^U74bfrON7Po9Ng>AQ#M-9V(uFIN__It| z-gA-VDP-40lyADo`lV6pSLg}1dpxv@ot&QB3G{T1=;>xO4BBjcn*0UwfO6#`-d2_V zSVbdfRYwqp+5rUO=-ym}xrqWj=vlLez8dHSBSa>pmUN2D6^Bc?D1DVVSJY(##RgLTDC1hQ^y$3F@<&GHFY4RpFw_xHhOPZj@?qV9(UI(xeJY{XIav=I z2fdWw-+N?yiZ8M~l^0pQZ*2X6+2cE6^D&LEG=85LE_eDYMZcWj2wux3u^-?KVEIs6 z=W{5Rcjgi)*-Q5*J>|2sK+eDye3mx+z0POJ!;(Hp`VQWdeh!7%PLzmP#DrD#G<2hR zGu~W9dxhsv-0nn~t{V5gygwu6e6g0!2KXpEps6YL*B&q&n>)z~0)SqH( zk|;m(#v(tbm8O!P+}Jn>U-cCp9R(Mz~w#*s?z~GCpmOUL0GYwPFg}H zuI)5R0Q9lQ)Pekma%hqhsp1`YBfy9Y&dr61~( zjRZvLxF!p%@>y_k75J*pf=X`SAAJ^7Mgw>GET}pLYJC<|0RwY<7S!niB|Z!4W&xki zf~r*@-)BKxDUjo{;2anDtj~f|3?6>sBoUb6v!JXFOz>Gy=+gdTe&_U=PWwZhF`O=D zzryu*xL=XNU;Y^P&wsKx_5S%!1pWRw`9wgZl)&ZOaRvI#ci~R=+YevZPB-qbaliRV zqLN>xI?Z?Mo#t02bDE!glUw)i;`(RZrVH*L^kSIUKQI08|CjyK@E;f4KenX(^Is4B zo%Rn!;6n=xbnMPKb5|Xkln{*1MssRIf`gfq@i&(Xe#!nW%t{1wK087o25+hd$Z1N9 zL4*n5XE}5c1_|B}TWEtZVrAsC$d}cD^L~-fvH^b!`1B0jp@vfQY*s?MqY;97e-H;*RWw`MW}Ka1icXf(DV-?dYOmto3a_Pl!e}SWJ!zic@mI6iE;gxN>!cz> zCmAA&^7cSuP!`|Z*#R_1!uM;+jVCQQWHnY?LUWFnUngjj{Mc1#On$gE%3;U zy)lQb9<5dnn^c#IN_6)z)%cf&P@$Vq5vZex99W-6Utb>8r*eZ^tIw^kFE746%}zae ze0e0sLnl;X#Pj~KkfT)?YkYZiUZq%<|1({QajP~-7v+{lG)bJ>y0|gaHO*r_LEFD*XF#@85qzK+Kh=96Lm#4ZN68 z`zZBUQ`DC{TK%P~Z|GC*&*ahUFG>6AXr4Gp(e3qe$CFy_#H4NNs=8D0gIeG4Q=e{q z1)p;JR(#6!efTN&r|>Da&-E$Q7fv0`{?f^pWtVV%7)v~Q!~A&mrb{?Kj;J5s{^twU zk5kf%`%|V*=cioXkxR?(#(4HhrMS6AVeQ*@QviFa+g{nFk`EMC>t>UTaqY*VtB%;- z;!nAMD?jD>`Yz3QD)E~a66`V?t{?eUZSbo0&frvFJS8A=$v|v5U>kJR_#p{xjF2z? zq@~U0T*;1%#+T~9&DQQj`#$_e4YSy^Cr7uzzE9{L(Y`NLGVX7z+%$rH9~SJj2wJtG zTJ2wF%kobtRkQE2CLqV{`|x{$eV@Bqv+q+IB|TB0*!S^To!zQ^pQ}5ieII5e`#yXi z`#u##UnYJU!M+cZN44+6OsX-^6N}Lp2;nE#_u)s)4v28NNc%p7Q7>KfWvmf9kX=O$ zyma<`u}b3X`)K$^u1v{EF>qM;!lJUm^J%9K=0sin4fBdc%Yg|O6>%X-85vwGQKNgL`9}7Mf ze=LgU53E^QQac)dbR^-A4vp|OXipoB{LwNpf22xA{%|}w0)Mm+rM76*wyD+rTQTrQ zi-A8n5|HEk(UFWl9*gmZ+9+w>mlXcswLYlv$0MovqebP97L`9#6n&X3BlAbgSootw z#~<^ETHBKGN1L8MT0Q~(Xd(W1(T_ED5b3sDTKcher5XOw z_+v{F{@9`s-s9TSRwI9G8ks**B_n?n@m#EN3z6=oOUoazO5*rq%P9Quvya6eTjKcxYnHB>I~so+O~M~X zHNrclJsmglNB_wDkt!MaW7E?k@JByUYQI+P5w+Ud+kij%4g7I50XfbeN0af#i5P#V zjgstz3V-lg-_rO)O3ferDu48={Gp=g%j_SSKl;bQAN@N1uoJZ&NyZ;X^!(BP3Ghch z@yFUbu*RcAy8V}yKVp@{@yF3o_~XdO;*X>8{DCz~AI%<(KZcX=$FN3tA8Jp+E(3oI zjm#gZl9501o*98ZhKN#!v}#YOw48q{@W+sWKZX;KtdcnX7#@W`PJJx?7>?%;tXcY9`Dpx+y(^JFvUjP3m#aPH8TrGrYefD? zl}!Bc>4{@}G1X#7!_ znm;fr@drK-f2b(>GV#+0{DH}%@&{&8`QreNUKYYn;1B$$@dx2_k^F%$>ZKXDqnCvp z$gZLWUON7WRT9S^G<+lQhj-V<;SYpr;18@>da+~_{$M=bm#D;Yw&r(E7b9zCjC0uk zgRGR}((z(1MU<7U=}uO@Z{SB>op-4b%3sMZ5T{H}s?V~;6r7A6 zWLV2G6xRX z+mfe;q^|`sL(=sDYe=#t@rjWVo_Un|ri_w4X_R#5DCy%yOjm~^Rl0I}eFXTHr11L& zt{j=(PxJD{!6}MwvTH}*ke5ZsryFAZ#^wWD8_N%3MNK2K@pBvaDp#$7Zrq3H+QDyKcB_* z7_U!MdZTI6$oLH@_^n*U^FMg+$oX@X{BJ4n7me8dQ0IS#hBH=AvTtuWHJjWcoq!+S zh@y@N(TdCB$z|fES{(z!Ovs3evt7=^Ae)fFw?u{1`=d%Oo zW(sjGqC7(2dX|A!GIfxI2?wBf0VQF^?5}n%d-TlthQ>R)^E(?=HASsIH+B6>8%D1m z^Q5RBlQ3iMi1p_w@Dt_xemM^x9IQ|J-V?GMcL6L3J_n#c1~1S61wh%$i^D6HVFqMS z18w9bLy)TrXnf>|Rls<8x!@V{`Bn4``TRP{_OdB*O|yB}H;sILxhU?Z&gWM~q#_Nb z?QZz-O+$}gfi(1Lc9)SJ@GgQ?>wjB2)j`*rlFPGASLwzlN&3plk<gQ=PGD&{aHb#QynK?>**Xq(oq$l~83G_5#{`ai+gX1 zdtVXvzB2B8P2794@qJT^PX6M1Tikm`-1~;O_lQ=X#OE)^<@rko#3!P2zs9iuPP27f86^5 z-Fp&v;*)Xk7R8lc9QVF74*!l(+Pf?+|L}YkJDE-wO*FPJ+TE~Z1%65 z;K<(WC~Z<+B<{ecRKcra|~Po*_SWH zjnU=lemP6T_!WI&3?l$J@-WA+2=v*R|2mo==bxtiM*H^Cn?yoJ4%}q*&zB2sQn0F( zv-%OaDkurMSZxfweY(#@vCl_zpRcoG96p{^Z4sO22o>EV1ae!NZxV&zbs<<6$bpHB z$2Lu$UV4*t6(~|SQQSDzjdv3U$$dts$5s+Lzm!K>3=PZnw$DRDBDP{y;a~+Fq4V&? zB~qBK$ObRY)KXcxAnaTQxb(JpJ87{A1vYpwZmkr~5QI8-k*FK7jeJtfmF!rm1xoes zQYQFXAl*s%tGtCgGYls(3x@j4mVOK+LTj9k`_h;|J#WVUn*eer41s{KU+^L);MP7y z(Wnsbv&q{Cf_xY|u0n(s1@AFHtpKQOh(-l4*#+Ozc0K}V!N}|YkP=2SXRkmvpEuHs zT9>g3d9_W>azgUJ(KPA>43Y@_f_+EGbT+I1bZ9msru@7I`(3`S|bihQt@5|)g~+}eI#-|>DTiK)j^rm zij=|&ps-)sovh3O=_!-Ik1pU32gmO4qGcUS3EyVrHa5da z5wYcf*)PA!%EjJto6Lot^2OR)F6zHfvwF*|_-*H7fKE@jQ&2`s`j50Y5;Sr^uZ4o} z!N0}^bw4TQKc%jIxk^vu^})|xqx&JEUtT53Syn`}*=tJ+e4f)3kJqcGCl}>Jdb*x+ z2LHg!`KPCEJr&+8th@Wy!|=0_iO9mYNNraL!eFU^-X2GKJ7zLAVXw4Di@4g2uBR=b zVRLW-Z<_SQYk-8z<)L1ik7{Y&q_z3lmglx2K?J6va)J{9tp(JQ%PzxSxJw&n^&iai ze~8WW7-%jwuR{yfNj==mJBsF+c}=|;`v7^Es*mi&6SS3pIdsfwmwLmejv_VUnh7LO zr=B4*kg~)KBCHIJu0F)D$}2D*#ja+(N>t|Fa_*X=3NX<~S9khI>phG>5{hcUCZ!wN z=?u%3;ESK=d*&mxkvktz<8c!nW)%;N$L;DZaS?t00KmYj8jst<={qu~>4M^M1HGY% z=?+~Ndo|tZC4Z#s6z}5jKMk?2aM>|-Fud?YzT8qMgx9_m6!UivPGo(Ndrj+2GhsB( z=Im!_;kgoE&lWqpEa338zutV={S(_y2ORKZyI=I3{6>1t$t&L&oM^A_yxTsdte-78 z!h-#*%260z*bkIKzT`!=@I-Ifht#`i04~(*unEB|$W;VcGJSgjXcwEj}z-vGi;me@|BD5J4-LEo?NfX3Y%E4oZxSaI@Wb~Cu!HV`n!4d#k zNLBtR^gzmT({hn;Ht&(M76ZH;2fvc$=w@r*;$27N42ah2vcP8)RB~1owkwDXXhqWY z<7+yOT2)>l^sfbnz{<)_u(_x7GC7_*Rr)C&3;l!_9%HYCmq;LlWLD#Vz64SNbe_ReM}_1eU6*%9CS-^hTUocCe&Kh3J97KWGftB8pzVVH?9TtFC;S(OV3W4v!~ zAYCC0Gf~CVlvMGmMiocPW&=*=|lE@j+Z+PF)JQ5$5U2bs)F({1Pe(7rh&K7ug881tUUOB7qO+KIAg3@}q3G_xU ze1R7a7O}y5HoU{nha{z(AWCy#&Nscy=X|sYk+Y5?npNIBkYbSb_FFoAK<{r1=7!L> zMdAMInk^xpu=;BB#zQNQ-eT^3jC&GPS|n%XzKPSq@?|xC>7SrJST_{UvI{V0!cz2{ zoGzeM_bT#~L9buvEAd`Ab*itt`68WG;VUI4r!`vKm+j12EfqryYihv=@{=3U7C z+}^n+o1ed~^(XsHx8RY%jW-Ta4@69H{=${H~m?859Y*0w;48&3TD`!+oE%`Rt{f zs0AM}+Hu5|hA8KBN6%U;SjN0t3xeG8LSO%n$2o+c6W!C<+y8~48{c(vC*cfF3if*a zCTFK^C&P++7YhxW7w*{R#cSck-l|?R4yEc*uY@ZV-m7IfT!Nv5V6B*|thjqiZ2X6t zPc2;va=66Cc!tQgU62*`fiZWl+4b@`N4UfZnv}mcgNjw~8Y-xUNQsv-6L5T~k)a|b zd0J9sd{U8?RBTKFRC_okmI!OA2Kg)O1)S1aAY%3Zd?;#TOiFZ z%`hffmBcH1 zB=8*#cvy)wGRMk%7$>n-eg%?oqGWIQhJ$Z`i1hpETQ=@&X|mbtm;UoIkWB%v7g85{ zi$gDYN^lzn+TQvRN;>-n6Qt+AyAaAPk{o#!cE&QTGdQHh(4fWoj(9YSI%1LhN*R0(ePpw5$e^aS>{!4z__$-I^l32d!xGTd*Zggd{My;c{QvqGAJ@a9xW z6X@60YbO15F2Y@0it7*DLkVyGuG>ioZ6laY`+Dd@x^) z8%U>LTIk>d`6_j~ZWM9&nq)I^k%QGc*#j?>|F;l%suTW?9v^QW0*Y^ep6&S#W&&=u zL8eBYt07Wp3a`hf7{}=0ImZTXo|9n=;O|q$S*CC+K7{LBkN^wSbk^G0^M)xRw!n(D zExHSy;cK~r-j2}Qx^mCm_E*}XZ^0X4*T5d2B8VM6=tKCi`GC@{4+c$^pUc^3&k=Dx zfTzv?1%39U!NMdw%c|uf82F&J5Y_|t#MT4z4ZEEVb+=PPd z>m(XjPq_IE!ZE5c2v6ty0F*IW(3jsdN!`cVTD^Q z4*Y^Xr^DwAim99}`wJNbW^jbgIs%r^SuuDue8^@M&gh%g*60fjKNZYTw%;$^!@Z7p zLuW0)Tx0QE$O;g6ZYaqM6lw*mf$Y%Pae>c<&W;aU9XdN9Fg0}6767C(1NP8adtiL% z>_n`4QgC7na1jQJ=m7u@{hq9&%OUXfCP;vVC<2gQLEmxqgh*UV2a)JGU;KQ!ta8hb z_#-meMtUT6YNtnHvTxBNvEJ9|kr;9rJrbMVNsq+5)$~X#T|$o}6AI~(B*ho#kz~)c zHzPVIk$OW#no3-(J(a4;@!3LIm12LPN0M!S#JiT?E?}$jd}jia*nX+z3nrnp2kkz5 zXM*psZ)dYrUPxNOs@>%3x!N6`4dmmYiMZSyaPj*vuGmE**6nL>2j6AoZZapuBfCho zmz8^$JN)7DY(6Kx4)yky=h3~K@&Y8rP)`xm_y_=DK%T#?wx37QNDhdn^79H-ZH*m> zkW2S>S%@;B@-;g zIgYmij!m9wT%K0;h8&Ow(OoY1dqYlmL8PUQKn_bkdd)U{k>}6Ias9O-@*vry8pBIF|GFE1zR+ZVp7$E_gRmLwO&9w!x*;(G- z71qc+E4v2OpZZwOf8bkU3;q!={!kzN2s+cjo<~}xN+&`$O0Az);)=e{o=1AcGZ9L? zI~hu~h|(+rN-iTx*RiwEzoXzo`y9caaD24EC45fapu@+2>8n~weD|XKdu*p}Guds} z41uMMA_K3YbKt#F?uS6;CC*=?IOB|Ln!d)l?zUgy(JS_6iHq~Jxd-XhzTI-{C7Xj^ zyP{o4X%DO|0YXKn$L(9=Y~Bygcu0l@j_YpC2jE^V3Cz7I0E9V!@=$M)kBT+#MHuf+ z-(qu^1pB`}KvOyrNxls0lf2}Bvi(vq0$P=a(QnOXRC`?1Iq_Ktm%H!-Mz95@+mE-R z%CqrHLAcz_GiQg(J-jABpscl*n4Pd_{;txjCOrF_1}|*G&`Nk_Z9^;I2YCcB0V;5F z$>^7&xx8IID#RNF5X6aoVcp$)iz4#v%H_qhz7O+Yy0q+trQrBF)+cTJA&^*FKKj-y z#NB7E7=<&EH9yZU&0MVZqv)ernt!UV@=B--=+Q3S`7q^++%J|Z`TmUULF4tU5@0IV z6r$mJn4~78$Xie7zZR=shm^16LO=36O4=|f2rFDDQzFkdrGh?j>~O!81a8MC0QcGixS{81-m$mg5;4ZZ z_BJ#pQ1(Yaw1ii9o$c@1+mQ58$h^#o3sB71+kYPWlE=T`(u^?#>l?7QeFxu63t6$7 z#L`s?QSez$Pa2>5vRZ5*9;bQYvN!3o10$WeQ?0iJ?egMscj$8i|L(q%OCx*xjXmbm}xiS7RmKwrBfKc)rAUP%BE9*K}@@;9h3|1`?Gxkcvv+&~yx{W(@v z#Iun6^XS;li~kjY{9A-mw7d2E(0CACzm7y`ak8rjyO6l=_`eni>x$IzEQfU21pKD?d_{^(^l!zd(NV~<%GreO8n3vICHGcgGPF!rS-(62V}n^Qt38IK)xm8 zmx^L}SRZq+SzcnCwylCzQ6xf})M~jCR8FLFkqurn#8>VKsh7uUl*?mxD3`}(QN~S% zj0-kRZ~z0O>1v^Uaw>SK72#= z_T450*Bu5FIvzt59yjTrAJaGV6rpe>LjNwE){e8cXM?!X`rV0Hs|=m)mgY>Oby6j) z2o`v&eD8y;kjM1AD2 zQ6F(D`iRFko-ePe_B`2@J37Ztq^rzG}bOz%4qW8U`H?QPEsoN6?E?|-!qin{kGeu$8| z_nN(pk-Ar#pzcKs>K+W$t$wvwZA{(sXxVk@o=U(LzfyBd;fv+((C6p0`G0umbV}<))HiT|v{4j51h!FY0EY)DEpB4^SuFd&oO5WhYPYxJtj~Uo zLwe8d4WvMs=jMfRBd^Nq^!+tZ$I7i_Arb1tU7iK=SsxzwOX3$v)caX4GN_ z37|-sPHXD@Qg1Hx?q7pX;Wi%45T@ix4*~1s?7>Ni+KfZ$I{o zIhe=xhXY=h;x|K`$&xE9oG#v-n_O)oGV6!LfnunKr7MR?u+Y}LModJn5#vGL8SQm#I_W`?*8{ONj)QCCrzw=2dg<$cZTch3bs{G%sF2#S5YM1it?hE1#!kT?6F@ z9vqhCBo1L}>Hau-tzBM|U&mItcl?`o_78Gaxz7B>{7Uqk$hxA^HRi4c-|$)|ZiU!B z!a>V9(0Erw?C27O#{5pBO(^bFw|B0Y%;r0N58&c@Z3ZiCt%N-JotRNq-%U_o_Kt8z zM@P;oFR#y{t8X$Z@v;NaH^mWZ+qVzFSpisX9lN(+$Ka-kf6lo#j|0ol0n5CHHZvN{ zGxG?QMimU*H*7usQ_!(iPhm5iY?8cft7BmStn7;#C~JeUeKVcUeFo{a#rse}k{F!` zq9q%Wy0!eQr8MrnIPTqVc>i6?BHjCZx^%|YFNJSmD_g$|e=D_^r5N8ibS`amCKO!X z=4gUcNV>UGpWb@zJYcM5`Klp{27kp5IsBDBG{DED6lI}!C%vMV7Nm6cfJ-ee9aCT@ zx*}pREVsl5!hr{@P*a24f|)|QZ2IGkM0jZz2amVkq&6<_!}#_?El_7@*tB{kRNV4H z8fFoK1r#nOcG3cv;CT<>pw`@5`T!k<0O(ldaR$(^{vP+dZokoC*llzx>+X{g9;=Z= zyfIc|vo{a)3~AdJ$f&zm&BUsmv_Fn)F9*EEk?(K(hchP4=p4R)mh8n}`g^i!__V1t z>WBZOf!oM~6-e4DKtOkd;qGz?T09q4=3uk24r_$s^VuRu#xO1s(MvT`h42yM42tsc zzghfp(4!im%R#psbjd-dq2?#PL?#+8to`jJU2Y*}U+Jx_V?hUdjm>qjo_e;{nG*$3 z>}Id#97L@vB2I)?r}?aAgpc94LB&E;a6KSR*?V5biA5R@54i0-2a)$iI3;ECAcMIY z)?Vy2xAK=ue|k*YXA!2^fGIcU>~ab*eq8fIBY!r>-sb}mA$i(byISC@8eYh_;)ex) z%WXn%a{li5HEh3h^d-Q!r{PYFC%dOU@=eXy{Xiq7?}(-A;kQ3LM)+$+fxjp@{PmBF z5x#2__`|!B!vDos;qTZrGW#|AXwkiOn~UWS6>$OD=c zPkDWqXz6Go}8u`i)N ztZIME{uupX9|7JS9|PX66UR$~HzzqfkoVR|E9#_pQyH1uAq^h}olohH))TnX7rV=g zdvvUgq$X&&s4~~p`)g1%qa6TBV>zo27n}3&`rv1=o5?(Y(J6oANzE>Rc824P1Kdyy zMIu?;lYs!nPNxt*R?SoZ4G3EGNBTIqwDy*^^2w#b3F`(#tWlZb^7l!zwp)bOUD%Si z=BH|(o43z(iP~pL-oE@pg%48IT0`v*btP$QctNW*X*<9CjMh$@CV$trJPxbsnEYMe z^8e!Ae;N1wMBMw<*gMxZV0K3{Q&k$#EN?WkNIBsru{S4p8J{pb>n99v+$RPPZ#cq| zi7wiMG+N2Mahy`t$-$+#K5Lf)i|{+o^&W5!2h{ z;AQeO%+6Xi3OtrER~U8p-V(zTWvd?R;1%?i90Et*>fq>ueg@RPfWi$b3^4-j?`P#o z4?{;zb0q<996z0YJU)qjd;tn7btyXtV8ah!4x`0yITqn>%%Z?ea3KIg~s+o^#`X)IeCaBA-p;tQR~ZrMrr+1nz5z|F=>DY#}Ht{339fbc6N6Lj>QRYdr~@`bhsOTDEX zP(QbFQiX3Y>sP0tUk$+s$A+)#6T#P= zk{&E$!TXb-hrmB0uJ-!fBcSWi&`MX)>Otl)jx|;euNw%LlDiBm;uI&p>8EQQ5mxAZSqY=7J9fvKo?NKfh&58Cz+g?i+|i2~ZE9-=Eridv>}q+e=+ z^%d7z2GbSgh*ZEhK)k)Cy2!mNBh{Pe`f=VyVc$3hE8occVr16FaOuq(q;rU3^%j`z z@K)}AgEtL@zA6plWz>fzU7S8d@T>Ijt+jYy%e|trle9ijb zrU=4)wk3Kul)&5W?3Aa{dXy9{lhEX+PuGuNNeuFwvwYX1EVq=A{hA3OeZR_en_m>L6>sW=z zZe1>f^OzkT@%(X~Ri1-Bb{zHGM(zCIgj)D0T@NCX-R}FgE%;Kyl19CISq|UK3c~_3 z)2Ti`@$?0*RV!00R&V7Ns~oN`KPYiX%jKq~*naQ)TElj)Q{C=m)glm;*Z110e`e{v z?$uw(IZ6jBX9mrO@l@qp^u24$=X}-HAo@*}{uzjYrE7;PY@LXkySPOXad)T^AC_2w z$UKo>=qcyz3Rs&d{u79C_p3?7!TT^!sVCXx$sv0_|cXegX zFr5UQdC&YR9s|X7P&##xavBs7J21!qKXY_w-LpIJ1^?i6T9Lz(aTDE;&BU{%*Gu2Y zhm}jYSY&KhXqPiVfDe2y`QqAl2eq#h+J}czynPw*?R$qK%MYnkl+Ed>+V<>7ZCej* zYb_V)aCX$@?HhPKp?#k`efLhj5c-Zd5D&Q868LM_szXBlCP_st=`JTgWcGEI*>z_ju`;!aB?e0`pg|1*2{;{Ga!o3k9^s|7aEq_g+9fBzA|4JlRqYh zdP^xXZzYV{{+J^sbj9RQSGERMOdlFtG2w|4cgI9p2zSS{QSXik$itJy_V=b|A41Pt zRYFgB8QN+>(q>1G!_iw#i~ewVWp8;gjpGR`l*u*&fPgnos-BFSNI{36Wh^I`DhIf~ z6gqp0bLqs_2jnj-w9YT^Is;d;b+$-(>GX`ClhqZm>cX6ZVLK~#hpntUH|%IxS0w~) z$NYgQKyH75`s8o;<*Wx4i?jV>K^j|&PM+{KBb(_*zaapkgM#(M-ka!M^N(4mA0?f) zmTaR)DAq*65^LxKIhc{(N!FF<`V(*FT+8b6*liKf?(181S)@V+dam}cNw_&~>bPRy z%V>xRtqWR1eeysx6|^xc^oXx7=#alr#L5fVem|hM20h)ZD;9#+KnK`=)eWB(U?=Rx zt$$zCUbdG-2Qp1GL>-I0*N`K|uZ^Rvk4hpVvNs7edkY+7!-2~%w9&Jdz<;Pc+e_fT z|Bt;gHn`D87yTT$11ck-t-WceB3KN9+5b6b?!9~O-MdN9_WSMs z_bGa_cjnIH%$YN1&YYP!$Fj{^#VQL(8!rFJ^hQd{(Htby7ithz--qRNnpgf1I+-ru z(~+=~4wN8;qHUR-zL5YUMBqMT4aAV$nzhtr4o{~abv{F&)6C<5JNZjNybt{VO*hrK zv(uO4*3{AoKXD+y-ads)#aa9#snNym;Relqufr199i@gX?hj;{uDWmq5EiH{@j$^j zd&G|)=L#P@j{$t#h7w z5*RB*+R4MDIn*_Syuzm4RWP)udNcs(AB4BPDvQV2e2&#afr4KJ`CT$3HW#`)j-#nS z0lt{UOqNEVoMd5>d2SPm;Wbfj8tV*1qyFT1{Th@w2l^2}zV>bD_arOhwVuanve=l2 zbpTX5BvOh5J2g!rSYcBVr`VM;#iChfR)!Q?#wm7bJ}b*(dliaZ31}G_U5Y{8Cuq!Q zhp?%k{VX%lW-js2n0hWiXnL(#D3Z?kk0KJj zmy@ut$>$!@F#)M~9M|)>{PTIP3alFbWH#cfx7H+n@Jv?}+b_2vl#e9cW=yZm#`K!= z3vRKA*CDqv^QZ-QaOi|^-%WT1Zv;}^TBr)fNlLVmYP8{39770W$H#j#_7QPnuTDee zo8%uBSnf3YokYb0*m66Y;|R2nCAAcIg$QE7OT?S|qXjTuEoFmqFiIsBwX%LP9{bZ82+nsiSkt{SOTbek%84=Moew^Qp@ z#DK3;fWHx&>~q$dWILi zb47X>rsdLXnrOo-ywE__JWrZu=i=r(9vD-(6a#pObk1QZwb7{8j>CU2;Y#E*A8NQg z892$@Cdk;t`Co!gK#lynsSJSGzd(xy zb}q?*NTxM;;Pi?g?CTz2f7TTP0fR%_XSe zAp;C`M|*(h>NA9Ay4Ju&T2JM7?ESXolMRDcKkuP@_N~h&LmIPtDnIkg%4daZ(ctY` zkb@&r9WB;8Nfeg!aaW!eYyXLMZe3g-2eP(e{?l&u^;KQjZ6QL#^+X=zNMvsWzQ>*Q zfmMTTN#E#gj#`^o_f%JuRuNW~(vifP$%yAWm;~fj^1-;+&Qh9T++%?@kZt8R-X4-y zV7wq1Ryr~pVe#2-LBkQ7bgZ=|^nq__B!6fi+I5>co|QU1ElYB$YJdfwT-OzavF#-b z5N*=|E^(9HL?DD$I2MnA>H$qKtYN)ngN3F49f%He!eqr#<~8GaY5G73n(2fFYsMV& zqz~HuMN6%~iIDNK0Uon|m}kHLY=9zgvMb6`<}%z4u!U{p%5a+yY%<~fJ+6wX!SlQ} zyi&_%!4lI6!quuTc08W83YC*L?*EC|1QN;Koc+S43irSp4`7%F2FZaNci}I4_q_e% zs$EO_?Ef6(#>~Bz{jg+>D)i5)8_W7=26K$Rnlh4Wqc6`ik zHnCm$6n#9kHa~v;)U(Tnn<>tDbLWI@VXyUCu2pr0^TNxlcp4wVG~7s6fi=&wW*(PM zI`3+1A7$AUIB8yTRpuy3o3VM)gYG_DrNKXEHo}Czq~8Lca*#SwXvXuKzJ7SWaIg4k zKQa)h3`4ArT>)$7E2cwjp5s0NC05ie;(hVs{x70e#1`%bX7jGqx(}831?kGP4M^5C zfV62Hn~RH!t=NF%o*Iy2=MA{iZZfGDNq6w)e|z{*7p8?jRR=$5%Q`j}j(E$A@Tc|! z|Hl&inf;C7zfyvKpbWoc%i_5IvomSJzl(ly`*85@?XRUDklbdn_UhM2qcPJKIv|uB zW6hb{pqRzUfiByUL7QR337O5FX5lXMkYhQ~@nPmM`J66VHQnD4v5rBO0gJVB$3yC? zmJV(_oa9y8&bP#-@;i1l$2%3$o&M4UDd$RK^@HcMk;XHq0TL?Ri;d^OV|)`!u& zD$f;orPMl=SvR9Y48G=p`J)3OV-fSTwhlGk@3{UowsO@hRqe8>1qDhW zv@FV>-oGGk_t>h@H2R?Ur{38MN?#Of9jZq_BT!3=LoD+#p17`Q2?FV6IoFX z1e8Vc7H;0--M7FgT->JN;x-Kz*J+ZX2n3`~T<41>pS>JC#U}Y~81q5L^@w<>5WL>% zg8XRhL?~*M)kCLf;a&qVI`vQk0_+O-(>^c#Rw$Fi>m&~vh&f@E5 zmqONSnmUp;n4!8n?HW2A*3h3bmDS_ezZ!PCJyMAJ$Fo^gUNyTlKRhJ!7%NN*J6K^> zI9u&|hvdoqzyR;CM-~^eR8KR^x0BPt6Z666Z6AYuw86oT4r0Iv1DF28$Qep ztG2(1A4is^x1_qzo?j)7_`&QfPn+=524Pc!H#*HB$&KB9o9c=zwSB9s^Wyv$qB=I; z;%3|H$x|{xjf-UZ!<(kL#g~ zZ@OI%iLS2hzpw7$duKP_arMCVgEZhjJ8%b?l1Ia9)-}LPSKE_-h03wW$sEFK4ftyZ z<|SSfCIeME`5ZXyo7(*uqy0ZTBZK=e8soj@@Mfy*nfo0 zvE@X=%SBjsUcBlQ*1vRA#QG;plGzlKvT$m)VzQ_#W=TE>qJA5zwz2^*57mhCh69?o zsePCVaDmgxF3)TWm+&Tj)o$4z6D7k_L=bT@Jbs(cpGuqh%`-C=?rL2~@9bXT`#o3)AhM5uICsH#tb6Iu8yo0WxdzWi4DmeO%K8zW z+lOlKT!eVeK|CMfi$21$e0euqf_T2r<3HjXLieM!t2h4<|39KR3Z8B(vC#<%kEJDC zWV^9M#1OtG!0-_*hCjF~S--!|@#Ee4f5H!L8Ty~k51v`2!C9?aSyrl+lof6|?f~HL z>%cXfEo_UFLzFKme3n*YR_is$4{5_DN^REb*ZBHi^II@>#dPSt*qQr%!)V_DI*Se^ zzmFRdCl{<8M(bMKwk@wUdC81=g*zK&tO}aLoKOZUaiZPVvAG3ye(=7;g$s>!re?ci zz1g3Sw@L%8xC@tF9liX2Fj_3$&=ti@Xd@B5@Y=Z-VJkWFEwr?T`&%JdM+&1~s3Eh& zUf^k5cY252Av{*>9%xW7eiN^aEBIAj@OHUin^drk3U)BRE3+Aj79MM;uX7JHtuA&C z@;Su7(_K+Z30*2)12G`C_7h*nxMt~$wkwj`!rCI%rp&#Fu*Q>?(9RV(Y>u5ZK9aeO z?c4wLxY_SoBi479+at?R1)I6e(%O;4c7=AXJcLUfECY|_u-44oJolw+xg(al?oG)3 zCgh$Kmm3fBKnYO*F7vC#E(;Ws5jwFVmrUt2V*#!EPkLtWg#z~0$<;SnjzR%ngii44 zF%Nn4@X-K;;C*I@XARH*N(YWtQCEd!(tG`pS)=rZ_{Qp%xKDN z#+#C!66eaZ@ib^laS$Dkm^wh9dWhZv%{DyL;`wUvJp>#8>Vd`yffXFI^tEgdz~e%A z%>L`4{|A|T({v!AiJMX#NNF07UR6Ls|J9xn7s2B~c#;%&@Ga0}^L)6N(NQ--5n1FL z6{vfxAj!Xg*E^l+Wk-QIRpV(?Hq9125Jartd3fwBTi|ww$v2!$a^RJ480WKS>6E6d zutuuPe$a+?0ZOs?tlTPA^aUtd0HDWc=}u7Gbw`x$w;UQqx-?k)9;@SvU%oI?^AFBB zK3%Tn9D9b*oysG_NEQFA`!I&zudb1qM>Z@;@UF-VcP_FJHT!rQ3WBVr;oNkz%tF#2 zu9IiZP_q#yAMGxMjePUFGh!n__m@y=CWlqcPKFy)K>06>p!?`BG8BW*tJunL zWGlmbPBH6AU?Cg~Y$vdmVZ>VIKPj=6j7aY1z*e$4fUPWar*p%R{p99gR34yhI2&Vye86LA|$Y$b|+l<5v#%aJ{oQWBXhxZi?=nMk}v%}{3eDNBI zxny(Z5|Ee+$zRA{oSeVh0E95i4+p_$C9?WE_gU0RW-v-75BmhPjlO6z;-D z1_9(u#9_h&5TM=jjSxUNtRq#nmoy}T-beC(k`zh%iGP^}6l6I+RI{9GP@5;Qn^BzI zIDy?PBzEIe*v%M9R)Efs(7l|4Z4bjwTi7A4KuZKO;NxVQ$Gp5Rn`{qX2Jc}rvLFjl z&Nsqc3)Jjq4)UMH%kZ8vvKl=L;{4}_x9j3PsCY991`;2+tnubv0_bv(#J$tGIyOrqZ!&hEH~O~j)BS#+qm92J%mr7Z9#o3zXz zh_Fdk9W%N%jv4)RNg`&%^?$dk7rRdF_KI6}Bv(t<%%X!2@hzV$j9qsajVAUN(Xn^2 z+YudXrA1n{`~N&3BpS3;&nwO17IeWR_ZM#H5!X`@StRX3iWen-pG>rn10BClj)p z3#`;H+w7)-aFI1!gNBB~4(4H3u~g4d-#Kh5^eCRTxD0Q6jKc}3+8VC3VthHJFS14K zA~Sm|{(kVi$QG^>tsUoint^P_bqr^PR%QwpT0Jd3K}rfS1$cjo?G|tTpexFcNB|H3 zi}_leKA5oKATulHpozmyRHUEqjRo>_vcBN~cq|Wq0op9Jv59tcoiWjYTcZ=5;Zo#2?aO`b4BLkX_o#ihSmWFGfmz+YiWbYEHck7Wb*wBcT$IMj(!)jR ztjrxQa8`oEne0<)(u`N z^msY+W>++_WFbbAeuykC>M)(xU5S)6MOEUOH@m~Me10xXJn)d(A(gYWhjVlvKhvvo zbaMF%#l=*9g;*=sL+2}>ZRw$&J9}4;R^K@5HT4ycr-f(`Gis zhFV1v>r=(fVr|pB;*V0u>ZgHvk4-ruzSm4U&L(ls&2j2b3BJ|e0lq7HhVKvE!Z%Ka zFDoH@o4*5mkD7agFEzD0_#W9I!FTV%MDU5<0lu$IJ;GPhEqo`pOYj}JDG_|G*L$h& z7PYYb`57A7l6&nogs!>d2r1hAHgS=~7%Urr1rrz!nG%~)1E49e5UxTp@3>&?Idn1*0@yFjp zqb(_PqqYp^L*&n;u0V4dq%ej3wm?f-$M11(Xt~Yvm2V)P_f%=_zw&=Ucqpz-Ho{v| ztUV8Wm-ZCL+GE4>u{U<28~J<%#Qcu;6%aM2|77@{zOg6x8ovvCQ*`kC2H@k{KN5)C zQBB8NF+}QiiN5lGMu47LkQh)6eVqQ6(g(kiiuCcsX)S#`_chW7-AMfo^x^KNS&}^_ z_8y&fPGvdO(M4AA0xRARw1Qw;X2s31$=3SY`l5F{(r zfQ<$l_ttSCfDfYen4BC7G=PiN{ZyiLLAXqE*#VMti5=wM5_`u+z@x`+2hnv7)M5kC zWEl$4EEUA-m_Y$J-kLzHqB79n@QSA&0O@^- zjU7Zp6j|34+E*9Z>sR(SDf`_Hq2$!`=w+}_SZ)_1=vxPGSNqWr+Vtomn~0k^;UXJr ziHFn<+3hIOoc&8lWEgrwvXMN!zc=thStzAE`V}m5k4oT${q{(uEj$JOKSDfxrw@cJ zhe+;e3`7}%NV`FP_xIHxad^y)y@#i7Z{RsUsn_tFxIP}9%gz9vJ5KZho*(oco*x>( zbNv~>^Y?%D0-j&>9-eouQ^Nzm{Gzc(dl+F2!NtOEjwH$BKRMURefzVu8*w_*$K5@a3@t z%6NURQFEAWrlA76T~=BHe^Jmi+nvvLi=*4RqVm@qd_&`~rkoSxUt`_NFZFYOA!kW%N&R0NYYvi+4_8kl!Ay&e!CZ{6S21;FW8q$`gcA z{+|j|AW=A77tTYTf#*j5eQX$#h*uULm6+F^K~H6SH%8cxZ0Kc_@e(uQZ~!n1VY*}Cv`y6}8mc!4gwP!*o!VucGb3$M#8^jZpM zHBoqBX5swI!Wovr*-dyK7VV9AlJkGx&*6uadZfZ_CBHcihFiGyKxfiYJF9ffWyPx& zUBg|l#K!lT<*$p&kHj{<-9+wC0JPvLl*JYAGzQd{HMgepECYFLH>S` zQ~$ltwFS-4v-*Yb$-rOEBv(#DUg1>XA#R9J2XD~XJ-qdU4d9947g9X0O#$$%DX7%= zi!M@+Z}nW^P+6mr_7$`@L&eV?gaKa02Y8w^z{~gm=aZ>e(E+O$+QK0dRd_J*##WpN z!e!2uRGU2FlhN&_r7^?VTH=P8_5OI(_jx`08OGmPv7 zb(20f-X4NWGk*ZO`216h^G~_K`~&GLnzZ358v6M-Mn9{LtkrmDSZ$8;#{0Bc_Qtz< zhI>?W?9mtcIp~VNGJD}cj6fYs7%b?18B+VQnLT8>xsPLi`-w)g?_Bn>8_n0UXWg%& zEuv;?Ntnlkc}&Lu>64T&Vl99f%FWVtyqrp#=lRUKV*|We{)Fd0!VBHG@S7jW&xTiY zE0h-o(Na8jJ{mt2f+c;Sq}{Bg@uTF%!^r@uZ&H|BG|n%_vyYJq3S^1q8+Zn1Uy}@a zK>V=~{COXIxljn+M=v%Z80teKA&+%=jxL|Y{^{vhK1DuHL1?H&+q`C0kKRhT6V%rs zOMRVtl*u=YC*cWRRT4Y_2}(W3>t4fx%RHTR>+z&*Xr~a|hQ;DhiL7blob7~_uxa-H zNQUx=4Me{TejMp#ejEw$gUu~==RT6T4cg9*vc^Z)ZhGI}$=+`KOR{Ajv_F?^-`{0v zBZC8Y)lz)_mmCfK`_P>wSH~pj$Zr-M2>}2Y2cS_*UT^lFCjsF}?!2|1!{HO z{JfZE8!rYROjnY=yafHTqSLZSegU(7gU~YjH!mwdXQ_dHLk9XyfVaZZ3ZS#bOzSsz z5(b^~g#otxUGTTu@($YuA2#z3%b;XDmSt(&5(FLvF^eDuPl8#tk+UVpizGeEj8=jV z45lMk#Spu!CFp*Z?tbB>HTRmlr5=j#iqAqSCPJD;%{+}66QG~aEsH2YCMH1txmi+z zB(LNdaEp%;^u+|75Qo0Nr8E}rmSyl!9Qg^btD_O_7Df7I^=_%dZ%Od28n9cyKW%`Y z6TJqy-snFIk2(qN9v)JRa zq-nFD|C*=OfISos*wb3T21Ay&)LFL2XL(DT|5RxMR+cZZGR}|G(~}U)G84nfXZ8qjx%S}{Js6`e z_k88wisf~r%6XlX7m8?I(a+KN_p?_0#f%DHsKe7gf1};uw*?Of!A&MAG@ZT2V7l^D zxbv1zrZagsi~Q5``SL8y{85d5U+Wuaa>#>;N(lYTgww-Ubsu7mBG19PoiYH}y4mh> zsS%Csg9zNWsjSt&lDRZF!PB_>%80#yIp3feBKHmAxm24sVy$gFY-Qu{Rsu{Tr4aD4 zd$6xNh9kTkPp!jrXr{u8uDz$TyS7Ucm;WZnGmDKUD-sR9k>2RLXodvhNO&uD&z63# zGjZ|JOWu0nH(Y=o1<>=y3=@%vZ?NPK_+5yfLDoS%NBy7i65CfK@wQ5=Im(UV&64a_ zH2BW-M&E?*GrFr?2w!Df^FVSJtgH4-yjOx@3DNSbXI~HawV36;LP|A!Zb?v%Kss`6~crVY_Q#KqOWoNcaB1r}aLIb$?p-Vc*Ea@Sg$_8g z8n^|RpnWbfsS;eoxZq1}=*ba%=xd&*d3nF+*nQZaavJ=;sGNV#=ig0$)AkAYeTt1) zY1U@B5t@(1zU$4%P|>|Zf$+RFvf&4`G{^`wtjHgiyA>1p`>_127~heU6U7!*1JaQH zW$vwx3x$%CIKe>vEM#DdJf%+Z>VgLFh6qzySt+fnJ;_HAt22=`M#nyM zD=`J{qUhK~OK3@xOMW+C;76w|!Za2b%CIV5EPceZ7==~EYS;d(SX2grn!}57E>VigSZoApwx!im>0EBd5`(bL-D#qc=oZVD0S-C-LJeKK z+s9r9gwF;SKuMlvpVhO?e<>SL_Z(8~GWhFx&o@enPXZE|;dWKAT`Y;!*UPi%kC7Zh zANZ;~)N{T`oae#nNbH=+doP;|W{d3*^kn-psN>g?DBs|_G#0`|RuylCb6lQ(Fj*|p zkCfrS^v`TEinCn?xF27Tn5DjvX9XDhi`+g2Qq%}G% zkLU9=GxKsM=S02Ahn&gAIa9|h#I+|GiPc}K!w8KsX-GhqU#R~~iufX_BgRUNVq zMjgZE5NY+PNMAEqI}lhuoe*&_^npLkn8fCA8hZ^1qbBqZAxO?RN=)nxpfQ;FWwN>> ziK6jxN)>*io7f;YG&5&p{jGf*o_#{;HczKQRFjj4s0NvQ6R9*6Rh=tEC}ee(6cI;P z$w`FoG-e@MuA}#^$O5xm={rK{*K9Bja?jU75LdM8kR5tD{o~jmw%f~5eKDWQ5dXlV zAR>)NAjWw_KR)@lqt;;^rh^hjs7g3Xm%+DpUB==>shn~>zTeQ0U z67G2lQN5$_a7yM5OCyNR&o1f1mvBPqQO_|Uc$dc{V z>O9SLkn9L1E1pT_;I3K;j2@EU=R7`QaD;W7&p)TDKC1^*0`lj3(7FK-S+$^2=O0rS zUat$c>cXNfY@4bLXXwJ^y6^&Bc(pFPUKh@e^WVwB=wyoTLcr8!&1ncffH9uIhz8-I z29?U6uQ#H8`qPkLI@Uc4-#UK!a8HmG6ADBA<2i7Tzev=7gWlv~4ITe!fX-dRQ` zLFy)a%knq$w)|@LMIzTV^e=G4LGEclW@xc;4Ud`pj1^kRlsrHIkXXIqAP$KWcg0i{ z;ANGj-t6D={jpl7yj5@PsRtWpUIdLhF04S;wRn}z7A~~2X0)JbutSgZ2W;>u{x#vH7pM|S+Pz!d1P#9aX2frdGh@I(MOE5 zVd78KT2$Ozr^QE=VqQJ#%{~tCn+NE+mShS^ds)lj729s*m$hVioEK-%9_Xp5SM-#E z_36%oyzZm(AgUury5k^So1&1wek05fSytt25-t>4QjQ*w_KH_E+6H)Wv$)a~E_I5N zH$Si!Z+oUMV%!sXhtDk)DP@HUu|jFN>904xOWH| zNvGL1w;O*6)GrnH_s}oHZ#kp;g^~#%t!6E;av8Xb;lSlCmKF z1k@Y1#!f(`6NA;0eC949dF3o(WkpL0UTJM9b$vp~xF73M?#8;5+~lm=hpr<_b0xB0 z*YFg~Hl_LNw$m>nzGUwr@VRhp!FK!7s z9A;Cv+6l5Fc`uoL9~~Ul+n!XgO7g-{)K6|#VQHa8J-JMUCiH|3%ki^o&9VOiM_g>X zch z4as`n{H*8`qB12;6i* zMRAEVUMtZmffJ?3VtJ+EW>Sp2_V5jqW1f}MWRnKD0B1m$zY#S~fD}&~*5`MN{jcdl zJ#hu#Owk9R)a9ZjA|Rk+p9Bo*;lw}B;fgkhYkQ?BD<%J-DG85c(PR}J;{o=HJKtrUi#(nVR}r+YM{@k_%;`MjZ>HlXFx42bm+*WZWdwsy5}`$JC~XZ@u+*?&7{oRrI8MJ0Pr(~KYhn1;Xz@};%SEe8X;@8J$C{``H zMm%yh;X$F{Ll9OKsZPAYp#|ADO7nTy4DIKCZwJeW!V?EV=+}Iv%tQ6IOB{L?PBP_a zMa8b|ah!LlkPFNjx}dz`M-w!Afz)OY3Ej*|l>uycw$&bLk(aB0eDgda1b_a6`qb_LHg;2+a+QKBURyo zW!LL?K@}7fUHuSmNnkU+n3nf#seedr$klGvJgx|c87O-aP*6ywD2#=#u@5q7Ddh;E z3kPbL7UC+)EHn7cYBC@cwqFX&-Lp*y%}dg=WnuLPXGutLVB4>DvEb^5)gvxZ`_EOk zUs%nwy@NQolileGM6JuujpT2|A|-hoP+vUG8n%uLv{+X~QHfmF@h`_#;7%9dDeBNo zdcE(`@?{0O=45L{9TUr^6JbbiURMk}K3Yc?zf#9$mIq#;CisUp-<751z$&h{29d*> zNg|a^!C6DC#jsSQvqEGGF0Ml8tktTFQoUxZSKUazzL6Jb`Ym)w(D$2gU#p;#>twEr zhv8%pi0$#FK2WC~Ypo>DzM^FY8x&?R;k5}dW&m6~LtzM2f|en?K@E3Q^X)N2C+lSW z?|l*ytl7ZJXkI0YIW4Oiv^?Uh=rrOHrv?y@K##O#HEfYf{M`?`qUKU$a~Tj%Q4dp; zhGXQS2sj;?(vbwB#C_`qNRzN$27aVaVxG_`j>iE*h572D7b?=F&tSszBp(I@`X}J` zPWX=I+9dh;)&VN{StZHh+l5-9;>!*pv|SJOvhL|&^`8Fm^su=~@>Mb)x+NjQxHmY02_e=Pap^6v2E@+6AG-}T(Em>_h;8enD zo6?3T7r*mE4Y1TMDA({zRX{5xPtk~v$`q;wCIh=LOKGpVGa$G11)~Pcz&z*T_xufU zlDa0POG)XDm+3VrzeG~GMaP(+fF-n;JB^FEswCZDW~M-XXxaEa4wJ9%y87qwBvlgc z-`GJTbt)k^8osZqfRxkQQ*kDdmaGqHPDmp0+}}?neVBEtE}hs1Z{f`nz5`oOb{Vt0 zKggTJ_g1|eFS(C_!qq~kXPq~O9f=`r#d%?LOfK7s)4^z(Jj2WEDpB=I<3YV5y~mO` z1SE8gH5BO_VmJpyx~*KK>#&Qr$HL5%Y3Gc(;-xyzcs%psAB;VX=UzYpQ+4k61*jYw z;TgXHm1UG@)|0wK82NHs&g4(9e}Z4(0l8#164Qm4(EdU^F~x>#`*9m4w`20DaTK+W zG;h!M0YWgnz?l;90pd&V^)cj2YKRtKv3`WY_5z&_%vB%>Z+KQef?#G@`wJw4SK~Tp zs7Br!Ez5hO%V+SH=3q8n0o1UZ{axd~REOBySH zKG?9X04UR+yzZ0dG#F3UY9Q1g?jaB#KT~c!(g38sHqM2<#IsW~-02DcbQo>*9trDf z_en3S56Lly<9T=-pk89bmnO+G!k%(ubY>o#{ zw*Py&Q&p1@D3?lG7Dyq?&J3@@c}nzQ@al3NQnA(|`7Kd1TE#8-gn(jxQpCY#BE25P zGrmXh*qa7f-%P-?Ts%2^1}Gvmk<_(3Ja)|3Rv*GA?=DXr5=$N zJ4a1=ZI&lFAM2UlZ9Si&eXbd9SLlEcd>`K@#xz2^tQ>~z0K+t?FTS!$RDM*~rqeIV zvYg$p&8YPC|LBay^ki%Nn7&+s$!4JAQ&*Qxqw^}Q0_CCJEa!B(tx3AY&p2hp9Da4x z!@T||mE7Zm*=^gktLO>3S}%cCnEV+uBS?b5W~oZ&)_4__PGB%wBs67d*_mhjleFFR zQ4&Y$?B``Yu^N?~O3xM;_Uu9Yei43uOe>}DPBIy4xs&H3U5?YzC9V=Ad2KKi6sJ^s z3njEFn#%LIj-F!Z0$H+2SxP)?2&72U$`g`YdU^v*y?L?q6->Sxbn<|D$yI=hB;0w* z7k6AkYnm`Ev$Ujik+i&G3*C7$*)o?n3DS-(lUG<2bvZ@F=4iZzuc6#Sh|YWz3_N4A zHlvPnqM6GAh1r45zQTQY>ORnLB3zhF10N48o~3JT1D5dvECU1x?<3MF>>#RrKxFVf z*2l5=HIuaUqew3jb0Kci)8weG%<+;kV?%`}c!f|K)76I4q^EVdx=L}qNg|Ph@}$X+ zI=Z+bZq*)x=mKka)js3ohY}>$f*hG-5?vO@;Gq_W$t?df;kKYz`%iZtT{2x7XpPF3 z*EL)A|L@)}-*)~P-Y;M0{_p*Ace;4T_5YIle#V(f#sMcN^a?U$W8oe)+WT@0U+_;=lLH&Hue${@?rM|Gi)S-}~kNyzF%Hn{l9s?{IkB@-Y=h}KEIi* zyy1hgol+4sa&jjo_d5CIyu-NU z4-O>ZG58q1r_lQX>K$}h;YrS=_|Hr-2n7lV0nU1$oYj!VSLsR4$KO(gXZ8o4>AwP& z=%}l|)RT-F2H%AUgm`rpY1D>M;5iETE~mgM{zbv3wO73mQyGp#kQ8Cw!M`q$3Gp|^ zG;dUFqO0ri^~=4$Nt=%Gj+2h@UdE5{`VwF5H!LoVI+YIb7Q4%(={Ajq;@RX+tK~g(HUJ)iA8|Sd@{e<`Y1&|hKgL+a57FBpy$>D`{z=5poUg~rDkp?s z5|VL>H0FfhaRQIEsk;B>1mMo(>10CimuS;LcRh(js*gR4ojKH)77=P)avV6mGJUKI zhs9<3SSuDiTpx?W&6nH*t_)d?`qGQkpS6iOUw3`%N&XUPw*Qy|tWEsFVlu(N;eq+X zG2rKcclnnA1gv=D*VNPN#xy{v3Kr#dT&;i2zVM%IRAWaU@e0b}D_jMn{rMZe3;V}& z?X!QFoFQG)a=g}4%da@M)rftP$yp{;SvjU*o(d~*?Q$BnYbb}li30Zyqju5Fp?TCE z{dsIVw8&waUcKgh_Jt7In*fi&4}51)fxjcV7lJQ!hj5n+n0mv&|6}@QiveASjARzY z+GDY}!|9tyv5r_Q?wEo=V@NsBz=5?U0`CwZ&kF4yJa>cnTEJtIxW1D>4&}k5Jan!DV`p%etuffEJxagzl7eI^NdzXc+( zzx4NU0!M6o1YDgE`8GqUKmim09zlWIToiCX1$e_&y!$I6@dhAq-HlslvsEFECwn4} z`@ZJH5tL!E8xq3J`YtCzs4*mjLVYX|LS_OMa&43N$_d`vKOzwfVvr7$CQ1Bb=9$e0 z$Y5v74EB8E84p>-1ghJ=DUN|c^Y`Hm?c@yFI}FFw1__oel@s_E>e*I4BIs&;EE#5bdYK<;SaE?SWgDg?+Z-vZJ{#rWQPk*Ba-$FF8%>`- z(oI&qnOGFj4!1#t;IF%)(Rc>MzCV1zEOr< zy;r=8kLt_09Ce*6M_p>%P)V#1XMagO{2-3nm{jACg(QW{lYq=e^P=a+kRtQ6F(0U@ zqGO1{&0jLBsR6x~;zdwI64AwcJ=-U`sMN<2UE~En5JH#Ya!&V^=wp~Z_Fg*j5$)2a z*9_dz=FA3cv+t@TnYhu@6)Qr|E2)TiIB<3Du+;p>Uzvax zaUw{fvFID48@(4M7`?zb>W@+1ZY8eK4g0#(kbMnJ$dYJ#NnsUiXT>r4it}jWYW9yt`MN-$kYZ;KLj~O&Slo zHnHD7Df<;1Dax?BIMJ{Jt|}ho9Q`)p=p+#-O9>TqT~G~hEUe(muSCQdpLad(#!gb3 zG{e}(kX;VtTry+)XGtd0@_te%)UdJ}IS!43sRS)P-w2@>dL^GKbBwXiBy76i(* z#@n=X<@=#=Sw06(r&wZ{z{4}-@aP1D3z+}$=N$9ZNIJTOPTcIL(34#rpg-((fPTce z^khkeNum*yw@21zT?Xr2hk}trP+kjQwtPkd_g6S@uaQj1Np_xwB^qqkkX)b_hY5a~ zXrKWnVIJ;bFpS`Bm;#Mjrb&w@<}}NanrcnshM(YGhWh=~YdGLg>}Fg{lx-uf!?WIzta7r1d!ZT&U^51nLr`&V5HXbuQr4sVTlyJT{y- zK_a%?D{9urA4t|Ut7o_c_8v&E#)Kho!q_do%n3u9qNbzi7IpVujyBL#y3b3Ep_HYL zPdkV*o`^{uV=*}yiD0|g1aU_pIvk^F+RzD0HoK>lmmu}7%Kv5W^@~IaMdofemuiMb z?T`=*keY1~?bj})ce?ByyvZC-JC~T_X=j)@o_12q`r0(dyF!gRXaac)h2XPskrxQT zpT|XJatloA$W?jwLyYgo+Bm#P?fag3bsNY#&o`;p$~5uZzjJEcjv|(Uc1**R{m+mU zx9&~6Ko=S5?sT`rr8HXJRg%7$x?I{Ny-a5%qRrPABetxE6F zp*^Vd4Auu|RYy(Fd0KidR}P>IVejEU7D9&;OFBbLw3^*5?vqp{>V2Vw=H92O+fLVkPS^|^z3S?w@C1i3N1}+u_biQbYx@U0p;#@-5-;MQRSQsGe zMwf)Jay`jC|2Ix@7xLYR_!L+ILP5q0&Vh0|&gC5mAkxrVLrvFo=N$=H+7rmqR6C>o zNeYJ_PS{J6v8Tje2w4K1=lMnjI^DiufliN)8(-9eDb0{6#&lzl!GJz`&F_AEM*QwM z6~B8*#qWM*!0)ax;CCf)yiLK5Q#&sT!J%dYmiD0$OWS40(uClPaq$s~e>5&WK=JXc zF=)UVL*JD(rv8=F=_CIKtnqpsYphDp8+s|_f1QQ?<>Own&>Cm2S?Ir$f7YKd|LkK{ z@z2Xl-+_Nxd(S^d4@$&8Z~4oa@XwD10{@(><)49g{<$OpGj!6dTqd9AOOVSUpQtc|YJBHed>;?>Z$4++Xgd)$!J<6GJPn4VxjE4UgJCA{ZS zri6;s(Zr~5_iP>zKqd!kGup#zQt)$4?{y(8MY`8Y+7S5IgAV?cKU0M-8tLE_9iDGC zM{Kr?*l(e*zFpR>sJ7n325{cct$BhsQ{h@!;hJc?hFq-={a&}~mScR- zOz1|jd0_&;uWb_N|B0~rf}|VOC^SdwcAyh0IOEih8u;gQ3;!4ne_=w(F>ce@5)aH3 z*BzoJJZIE|i*!v$tZr%4wn069Rwf=l=NNsWW_8d+<*Vp^OubE`$ajIKE7nPI8;s)X zA5aVLr7cCid-(6&@2dPD@qU+bm#!NX4A=DFiO*1j|6!e+xAP2!sAlGQH{p;S6E}in z{f-0omv}$&!;?L1F+I)oJ9XV|F^wWtuF;G@ok|_W}dCj{pziB zu22_SfQzDReXK3EZ>x&UK-EL&G8qRwx4$>z?6$X6?bp_~Z*ez!oqAT>?KuDqvwtq( zz^T>@9A$q7IQ4tn2vzrcG`q!i&Z_U=8KX5b4K9dBO63bmG3tKjl`~2 z`dyx}XtK-a@QghT$ne=bW624Ivd7k-AtWd$1)FtE(>yvlr=A}s^*lc)jKI0x9HZ6v zJ<44Nh*r17kJXU|G=;Z&b*B*HNK?(9(ZX=|7@vHAV;pzP(CW5Va~io-yyN6IQBBrt zO)qrN0X^S*xfgyhT<(Rce^oEouov*q+dMkoWpC27PdZOlWz;+}Wv>ygTgBgYenV;* z1R~+CES)OL-cLRA3WZ`v)7Bo8`T|WY`GzOx2FxQJPt(qqJ<$KYMD(8>NB={0^grx> zkN&6hNdJI&>0rslp5#27sk@o4n)ec>Uo)Pi(N=-_?5^?wZ;|^h(H#f)ZX2fGVtgle zKfeForW@b$zs-U`t*YuqVu_Q`{`Kt{mZ&}5OqMaQrmvapwypUZq58l-)o{Ta_4Qx# zCM;13xwa-pJ$~_!#f#>go%kEg7BAT*Uz_!v8!RxBv~&AsSs#0CW!AMzh99^+tb5%(Te*qefws$zP&)JZ}&?3 zQSWmT?YK1c`+8WAPVbTqDJNc#?iTMOKHcu(9cQx z?KScqs9eN}BetaoAQqrjvR5ak6T^%dB65`Txp66Q**{h?W@J6++XHz%0B58CPT}p7$x=*N`wNv+R`F+L9$@D;|F zY0UVz%0wL4N<-@xq3Z01gb<=KOsj}K*2O4RBdAc89X~vw=s6g2; z;L0>(M#uA@wh@1U#8f8$r2_=rsdX9WTbeCpne@483iXw zrjD?SNr%5tPQdvugnBe5;J7b6@$qIt`YO}`lT?b{11?hv@@k6pvb&#^B)J&E96Fsg zmcnnEkf18lj}7UE9pf_ZUX}`@??p3U6whW=i|^2BS-W0&rp{l#Ja#Pie-i2=9el5K zuUPyImwQ9F$q;&YZAZLCC&N1+1<<)ZQ}QL#t!PrT;6|~@x&>S^i@0f zns>fhIjLm#wD=S(>UGy@5;DMtB!x^%s6{W~TJ$U9E~p^`O>|j=U}oEiBDMfUU|0`> zsy}QBQLj!+)P~C_0`Vz+V<_&r6M;C)7(_^)5%oJTf7EY>&U^f{T419F>}sM01W;y+ zL*JfW-B-J(>AT!ld(R@@R~y1lXH#=?%!U`wdVhX@VlzL#FI|oLiCMlHC13UW!YW_& z8bEt8V#79mem^F?_U?Yy>TU7&ySDH6PWQV8CmY`HYBTlvepgLGiQ5(@agWnU+zIaF z@>ThxjfAC_DMU~$pkogH3<`MohJA0B<-PCE#oOcWW61oPnf;?AXjOZTM;lc4G1U9_ z-E8;Sr0u>7bV6B?Zi6o;(FWfc?Oy(G^w-~CSM^sy?(#J4j`}C^`%lEW{bMO`hM(@>t=xi54RS8bX(cHt2|M2tuLJ&Ct%{1pFm}xq<@q~RPff?5% z=<0W(o3JxMHe?BX&W^IP*o5dbhnJP5<5>V$9pF?p3Jw5wu_ z#@!NreCML8>YyrNx{fXTYgH9y9Fr+&!o> zxc}66rsJ)CYl88{`7u9NkteaTCA*{xKmH3S{3cx$>2dTZ^yJji)8vHo+0ol&r1M!li0e2>e@TEDPEum9B~25Nas6duzV+9hutmAAa#bxH=!2* zCAeC}#c*{>Nd-xl`Pbr#Y72ZYja%keY7IqiA2#NL4wq=%A}`G5;hM^Y3wrxYW;6hK zHs%#AV_{L@b2}9Okih6hBpd`-!aTk#a~bG!xo3gIZB(qP{8&e3?p~1Dl{$rbH}pJU zGqrk+Ub&ulOX>{AE1F;LZoEeRU_4%XTmI=D_`$^q%Kta%lV97EK%d;}jp&}XKLSV6 zX@p2O1i5dn1oJRonfHzI8E1{GILg&2jtcyDdXg96w)zrJaxw1o$j4b_<&Dps&6!NS zGAU?FlFo7{lY(BW1H&M_Nqll6pA@c_x1=$aq1Va1ESFrDpq?Vz)4W_6Se^R2-IN93 z@z8#@0+zM9L-(0bY&tE(|pY_y3r*TXWc1uCS5@<2E2z@D&YLajoDY;9Tc(MB;hz1_RZp zlv(1d=}n)8Ee_Kfi{tz7tbwNwblU~+l)`fZJf>80YHDgyk|ni=f7axb*nEZdXwrIG zvcLTzNls|sE^F0ETA-J~0zHGZ)tX?Dj@Mh$)<9TXXp%N{{WVDPxcd#?(0ra7@4;q> zjPwdlNN_p-j5ZA+Yg(0;mh)L*w4v9AY0<~1*e_L1pCWCl(}GFfRM*^p_IE3wf5EK; zUBk5o6!pX@l<#m0x=6bG%(tOE%ua9oV%5cb^WAqo@ZaB)(~xA`hsHYqbRBy03&aI~ zCS8X%Bn0_Hi3Z*qx`nrp!&|0;_p`5McrVkyJ34Wt;xG=~dJdib61M8Tt&4<~lkEL) zog0SN?u1HEr>q41oM0;yvUgn46 zX~V@X?ctQz$^)I}2>1Lt3He+7j0cIoWx zP*)9WY!n^Hga-oR8{3np&J@~w<4eETa!?4#)&V&ZkK$cx)q)Udtu>*RKy4LK(+9r2 zyqC~Op)Z3QDDbZ=kd0dA;evWj0%_@~V8a*54xBRLUE=o$vS8YbC-Y8TW9%QUT5wK^C#u=O!Iw#?IArgP^yinKU+Vet{ zze#XjD8mpxFd_q;Anm(gbig#&`g52D`|%<^miLW@zd(o0>3!;pvG83cVh1;@5bI=QN7=HF!ny}z1Vx{`?2@hk7Dn0Rqs#zMFsy~ zWA7LJE%yHBj@bK{BeC~)RPR^*BldoY>ixmbRPcNrdw*2*{+a6isnaSOL(x}%3cM7a zx8OMp&k=Y!;j#YA;&8x|22Tb&x$qRg^8qvjV0}v!_=7s|y?0fCH$K!fdG5#hCcpZrw#lbORqhWvRDo&#-~rC~-+3511)hD< z^EEuFkHo_AE;I@c8ud|KW3U9qprJnV8@18(dAB73Y4f z?6S-k-4X1YP# z^E)YZwitdH6FXyxU6eTKPBdwRRYMy8CXxYSX}F1iKi{EB^TifjnsiF@iaJgI*VSnh zD@txm$tFnUO^5j|o87ZdBVfx(Go+-JJ5@>F(j?WaIaTY_43iKHB_+^1w~1f;ic1~e zha|BDVdBCPp4?ea1^NDno0x->dRm^S`|Y!4b-!so1@>q@scT;DWd4}7Gh8HO@#SxI z4V^X47Mp(>lN*c*|MV@xdilrp_i2YM*00&ruMaNk(%!4cV~eaZ6xB7--r&Oby01Cy zBW=xT{FAu-Q#GN~nyR*3LVR!Blr;9GP&y?oJOD}`@R^33W;%GW=}nJ^sTGF}{h6O*JC0E4WlJoUtyVuNcUnu_MOLgAfKs!SlB#V!Tbw-_m0I4ehfTn=$}~Cfy19>pB`DV{sfIj~m1n8@t8)PI<90 zlsKH5MAePKr-1!m_XL;E$HY+*cDh^K@T`td9n`(!Zc{O!ij6uZ#W~|(b(#gQXs9X? z2XH6e<^J_L&c^XfF>-;q=H7Dww(C8IK4o0t>v2GyCnkNN&a2idECXV>`ALgozVxht=Q&ka zelVT-IRJ52tmE&~*2RC9A36Wc>tgS#rS!YjY163dlHdOZY4Rc5Uy9T27pIYPbkw}I z6uWJ>T@1et={F63!)30>RBKBa1zO6|@n_v0^q5xWUbl~aGg`{BD0<(EWX9OOuHh*< zs_#55+ycd}+s=coSU9PFVpfvjXPDw?FzO3a^o=c67c|W(}M0Pl2ta zj35$sbah1|Q!7vdpVr>mw<{{c&kD;~eYsh2s=@}73K3#=RkJbCMYd>lo_dcQzHC8< zN36i^X%tFZ@!nO~7IS&Xs>(5nO?HHBY_c<4u62iq`Tta)+G3_~x-Oid3A2K1T{uq{ z&ew$tbm3xkI7_p?jlcqm3jwDqO@P(6WfUIOPM#Mw zv*t(S&|FmYG)fg{;bn#CT6`6z>B4~Davi=awEOS!J^U245$-sD7i5GxIj4cNIbL}W zpUU&<%AcVN&(eiw>%!OR!t-_E1-kG;U3if$?9+vp>B4o|a6N8AH>tuwU3j%Fe6J?V z#~aN*@k6ePO)77(a@S_$fH=@_LBzVs8{uwV z@z_nfD$O-Jhivwd)w$EzUYzVZYJw(*l>`2uwbdAU8nG znhG^H(q-0^NiN%p-2xUg$SZCWx^T}Z1AVHg0e0ai^YN{9Ku`)bx|AcPYZo9U1?o)a zu^cg_95JOFF;go5G3kJqww6+knDQj3soAKWczoFYwfG>jgC5E3V21 zU+(-in3!Nrj0uI`tf{w~)%<5oeSckefG#ZP!VX>dtXMdHKGWPG^bci~<@H-e;DJ3~ ze^!|7Da>8LcOCehb}Db6uKYo|uu~PDRG!li*y4g1v+z(ulPa7&PnUn-Jb-&EwPWrafE;7L7J?{xdQJ*K zl&d_QLJ(~W@!d^wHr^SEN>)|z((N=`^Z=|h{W`-SKZx5hKI*U1`WfNoqI@1rY^%89 z)o)0Jq?|vBcT9rbD9My2hw6|572PI{K_vtQ<&aYBLhq?A9;by)2z^ZP@em5Zo%%1W z;=w;6l>YQ?APhbT*#O%{Ci*r1s%GL5ky~Q@J#S3I9PICdXzrnZJ@)q}@H(A6jvXy^ zyJv*d-y@{{9%1AC{XX>fd(htpp}+s^v(LSj7w7r2f8boXzmu+=2mOt)?{h_|=RG0l z!{38K5dHmf!~NLbA!(a47Q;^$NM7FV(R|{_pu<>*rN2mhIm{fFUpZ{-E7yL3-iX=o zI_keDLE$=T*sOqYNP^iab-hF%YM9%*)Sq-PUqUeZYjt_=iV@InyYwY%VHQHG6IY<4 zk-1%{p`W+GJSRpY#1GEV@rQGD;q!E1w=R6XE_{J5e4#F!p$m`Jg)h>DGj-uCUAR~m zzC;(kR2RNj7tW4_fxW}@Vhio`4aS?-RzPKG`P?-@^JS0*=QGVo(~xpnSuqJmsE^N9 z32YnvHP*jMQ6|5=Akf*T?kLO(@EIluX%1^2et%S1oKu)-!fR%@tzyl6(WsQ3?7zm2 z_-gc8FinYj?vpm1w%JVL-Zi9<`xM?a<-L2qQXXHQM*a3RGaXUCE$Vkg{Z8@nwWLhK z1)@{CK#cm_HYmd;eoRTMs-pK8mX{_K`O*WV4#FZ`sw@Og*@Fr^O8NiupketOA3ss2 zcQ8m#N8jNQJGd%$o5Q4o_h*LX(S<~w-zh(0>ciB0Y&);-5p{ibh_hq4;-!z0Hf@_d zR;Jv3$C{Z=z=GUGjiJC!$ws z&ppp1rkCOCHS|L1m#&Ye$CrN7efus**uK&0u?^^D1Y6{}hg$SksXa>hgMOO`zgl>I z_uF`QulQZ!_IaK)Xy5OZ^c4R2bK3B`&uhai8xoh#UN9*CMQ#2IU(%JQ3;+COZTO0f z+VJ0W;XiEBhL`>!F+X#P?SCK$kvJSC&Tlp+ZqJ=t;@gwDwY&01zosf*(f9FngH2jD zxag1&s?3oWe6^Kw%r#KJ8S|spwfrcxp*whPY*4||i}ClHZL0BCv0XF%BEepbzfBE2 z&KKu3p4ohHLt|oo`Bh{5`25MX#Ph|{rf$Z^cH{Ztr5(MWFUp#={nOH-rOzR)I{Ix@ z&*!{!!Fv-e_h7j|))oI_LI-o0_ALWe9H(@r7K>`q$hC1#kNa39mQ_G)gkuz6PA*- zE!*_%^8e-|RsO&cM;PQzRME(4X*1cMDa1G@Zf%i~M6!2*rju}-sM=T?T~NM5rGHc@ ztL(D+F$`_5wQ2N8h6<$U;4k^r$54YmB|6vvfp7}i|AiC_ zjVrY+#kozaLkKEuY=t9Yji8&4N#~T>Ei3G-1yY>{t0HS84SndC0{Iq`e?+ar7_L%l z*lvNpfxlUp)fI7W4ju3f#Djl)GlVPN!+oQrxWTQSGhwEk$=a)5!!;J0X$u_?N{+GS z%x!^A^Wx+{mu<-)nCqiLX0xYRxN9t=vYhDnF!PwabvqsUtFa>~VjUBn?RLQO?%eT^ z{Hmpc8xJRW6?#G{j?omGVvSfIr%nfYu8BBpti%TCGq+h98#|LC`622S0KR5g#QHE4 zbC~CXK_79Zdj7n$P|DA`AbsYkNE+o>hsmZ_O^fcMgqBd$XJdPF8ravze@6zv5W=0l zY3x+TWb5*i$q2TlO`6ofJv?DYdeS?sO3xz;Gk^7Aot6 z52lx#1}MG6IuF|3*Q;C}Hv4ViIo50E&cUhCYFcn;cOU3ECw$za{fC<$Kq7#h!L?3< z0oY=asIAnB+{4N$?cs8}GCl3t{N(?~-n+m>QMG~pi>$aR%BpBsR8*K)R;GBx3dL2t zP>TpyDq5)_T6tl;VE zY?Z<)>q$F2Q|(e7b{(f@njHsOcg+RQ{L<KeiZ=h- z+^a!pQqw{lC>s|Jg#Hw!0sF?glj5batdYYs_h+Ez;P&dmyYcPNLE@m%2x?daPXX=7 z;u;b1ld5pJJ99hgaJ}HE!n|;J^N6Ds?fLwIM;d68%B4>3^cu;!KcPCewUoQxDs{nU z5mEzbsugzzx&0I3_q)zXd3LD*{ybK?$BHdJ+3LPsy4&jRE@fEZkGrk#IX=m>O1Q8j zTVZ&)6p|3?a^OpnZ0_0R*2)pMj7)r))BqQ71zbPC>KSN7-#?DKN=GdYE+gF?vUcG9 ze3+C{*J&@>F&BSv8rnKxhYPbRuY%kIJT0LNR}e!Y%cb5{XleZKZgf)>mdH^{ZgzJY z2}OkrL-|T6UiOs+zS7Tn$6If|-Dq+voc^ISTo+uC>;(;2RFpYG=w)+-y6?3~1Fh1w{2B1eVK8H! z0nd(2vP!KIzKoc^7F;94mOm4JJ8w0t#^9TJNS{kio7BjijQ`1>(Zqs_=|viO0PuTR zUG?3m*2<>%6AZMvn^lIoQ*G{gZYNx{qgOa+N9qq}7C1|_N*!@O?rwztk&DA04Iny; zNJzE18oMW1-5ItsWGa1tH6hgoAKBoe66gwVhqDd%4C?8+8VEaj>nXjgXW)k%aE*H6 z`rGBGZZofc1k@jki~q1y)^j&=_qO?vU^4a)_W=Blp#=4@1h_$P-J9VCxg9qMu6`@` zWGId_{k$h&!dz-F65Gm-L|neZ=8hW14{0^_@ME{dp_5yHJv4~6SpJ_e{Qu7wSbr)T z#PHnx^(Xg`T(|>?wNGx0dl%F$k3@>HzOl3~i-Eo@V+ZcjP}9827(^b!c2gOO#~=UC zcK&bK4mO=EZ`+~c$s+A|(rz}M{M_w868v1_2s=&>>5$T$ataH-AiXMoI<8p^?Fz?V^h)UN>gaJr zre)@YNGYh$5$;6I&f`kMSjKIGKGAzzYPS@ogri?J;QkXs``YpS388scrDb|tRh1<$ zwb5fHv1u~4y>ph;g4)f5UfTv^s1DF)8x^YeC)_?8xh*Uv?c+{CQtOQ&IA4(4W`Uzh znqtkLgBxZlxQg^$ZVy~d@TAGn2|Fi87WT6`3;RYo(GK>Uuglu0w6cCNj2`EeMl37E zMa(PBy-Dg)S&UPgyY2YS>&cz?F1Q;lQtoWj5w4b|+A0gBE*nGedF4Fm95gSyodVY_ zBq7Rm8*UZcxS44=Ax>24Ujw_}VGT@bp2*caT;a#zqA><7Y-xceHg8{gU7^FCnT8d0 zCKpEO^wxV?TFCx!v}A^6e1O}(T-*LpX7;(?oqkGczA=QEW_pD?{RDQ41r7v$<4&oH zn15dg*zAdd&+X)QQOU1>-~d-JJ<=`>g><|FPRFYYX5c?(K+@eX;a}Bu^d%@?{f*n@;!Ia+%{;A82Ul`IO%+}Mn3wwq3=o^~b;HuJsogtO=I+fyK>6HopPH9rG6X)|0D@xCRD4j|Z z{*8F1lzy-TW-6dE_max6nod`0>Q%ik9E0pox6ifJ3+oZWs@FH9M=zy%ee3n;rBttP zXpdgH>NUsJtB2EtjehhfT31)KrBu51{xXz$j zoI$67U!Nj=eXoCJ*L)o{yF5D{IOxVoPC5{}>t`4U&A@|+NU$YTxl+oDEO?A`cGK*r z=TzF+^`o5~-T0ol1CK1xbyLN0fEeW|bY%&-h0 z&WB9yT9_OH(S08bOnO`0@LR^%@=I;l-fNxc=pO`x#}p15F4MK1ypI`EvsX6IPm2io zFKoFGD1T@Ge2gua(}83k(P(Y1oPBhl*#~*#U`O9*JQ9y0msrsPc1aYyB$8fYwPbBm z%fq(N$kPQ4XV>b+`r79OK>lW(u*KREnql+x8n8Cfu%{f4!;Qb+DfoVo;QKuxzQ3>4-jCy@WrrqS#u>#+a6jBz z+_9)*=2%CsT0^f|Zb3KUs|p?Y?hzm33rf+zDrmiR(0ZXD#By|K zA`zk>Z<*cucDN)Ty+<#R?uaMm_OY`ho|v0gm6}8l%ZsO$cN@-lr1Xyy_D^nu#|v|B zt!J^2#K%$UL`$pW#3N!}EBraR#qHQw=-3Dr1^fOA@_O0})8iypabXHJs`R*myjc5S ztTG(VQqwY|{OR-^yD1+_)rIp1;Vi^mn2i6;@!$q5EQAlBZA#1LkAf+CXvebo!|^Gp zExEyh!e_BIJc?TcCq;$uGW|008;nG_`MJs+qsblL%*2NJ{%m|+I3IBMw)(U^&{I{i zxyCbd-Rwj&A;bCv%A;-G)blM%T0W=HpDEY zwcAuGtqsp*$gN#mkXMD(Sqv842Q+;Y?R-QwhJ#qWRaCu*s`n@{hEnu8yCfE0a*$q9 zPA@4Xm)Oxq!?yx|N;<>)6WkJ@ zKfz-~|J9#9o))M-Eu3cLPf&ey*BRNL;4kJ+H~nGkPfaHT>Q5Ep6@MZCbWbB6t{V9FC(4RVv7y47gcpv`s$N2vn{B2@0qG7&VUe(VZUrlEsG})m) zt3#d{>@3u&h}-GCV40)U&vNzdDX^3GC1HCsl~!jTv&zA-c)9Vo5ZQm%BRKHflzrB5 zL*=F81ZPm3F{L!CzK{23ddk{g`>PdIhKwB_KPBX8noHjK7ys2R2>1rLLj!}Le>= zD;T0D31i?7PSw#2qYvPZaV6G>^+CsFFl$J`Rb5te8;6qIc~mxj7VHzjOAG!@On@e}Jw)p9NSGKs%x3zb1x4u2@- zt*o`u%p8BIPir<*eu~ec%7weX8T~ZtP&7?H9N)-r8IGAr{BltQp8Mw~KbY#Sy#SiP z?qlwGpu*?39;T|-b4z&7-`Dh>TK&nUGauyXp^?=31+%pgAb<3FE0^|$Z>Y&inWICK zsFQeLoZ}v^4bz731q&}l?3*$1$VaC2o0W-F3*hrGl_`@_geK}n=-?;%1`%Hfj>9I7ak4bZD_;pHPfev1I7Myx2s~LQw%U^+dPIHwo zOj1ufox}A$8_yZ>>vFS&a4rYkvZHGk%r(M8$j?3ICan%p)UHrvitxWU;b9HI za2VBZ()AC2-wepLii=Yu@CeiFDYHrTaJTduzYM$*J3dTi3klcr$8jDS>!P`H&dmS&KQSvf% z%eWJ<;R~sB;Qy_#efZB-zfruHRz^W*1`Yve`|ubn7#i2V-j=Wxo-7XM!z( z=8Wu64DVdkAJ{pia?g`3l@x-}anh{t_mQ-l@*bg2yt8!1>Mzd3Caxb}WNtlwMm*?& zyLe!_KlH+veNR|j@!_rUrf7oRXzDNt%8ez!J zfov(a!9HmY52GC(aC6IX(MKN07^h_P&C67DjySUWlJ+M&mGtU<{c=7%ro%e?7XOm= zUc0TSj#BwFg*QWDYDHZ@tT(-!W0)8QOnUi1VgD)RhSr9g?W>f1mgs*J7`m3& z>EC}`JgbNE|L21pVSJq?B2d2^{czx~pKtu@jfY>1?RF)EPf3kZcoQaMr}&LhSZ$3{ zJ`i)t)_!=otFoas8sBC7P5^REYDiHYUT#u2QOQa1Qnf9&B;-=lDQE0BqSn^(<3=!; zDJrF~FI9X+f@m&Us*ccYhq+l3h+s2miVvs%x(ar_JMu`oj?QeK#Y`_$N-DCx*8f0J z{(O6inUCC;ls@VE)K?kTu1f~FYBeY0X;oy``=t8i`D6!LSK#Tqw;-#htjn=Ry9l@3 z)M1%2T=;h0>`Qo>aY2Vf53#xVt|i-7n2A*Ht5k;tn#(EBKkk@?$AY5?C8ovWM}xI` z&cB-KKcY*7DzKwN`shb2gt@I>`F8EEcirs;zxF@kz!-Ctzx|<3M$jVjUR?Dt|Bd5p znf|9XX$_z9;Q=jF!E`$Mb^A>=4IyU5;FCOEbNdY0JG}Ns0kt)M1n>s_+~u=&X2R&a zH~-V14NO@w@pzh7oBJb^es*N9uXxSy*s9ia)&TDQ;;Q@iF;V-+`+uKmP-gmUjge5r zWPx;-nNvlUm_<>y%O3}k)Vxm3;rZ&T^Voc>`)TzC8@dd^2@6)H6CC-+61 zw6f*l)~CRoqq>aBx%YPO1P$Hz*d(-@!br|mQ__Y;PvPz@88`9s(u+c)L@ue0bu^a} zLsmJ;%e+W*1Mis)8cDW16$tBOUI~+s`G_Gb~!Pwo^+zsV23qP9%-8fOm&Pt~#FNQBO+wLM!NQ{JFqBB#kru zH;dMI*2`K+bjaY%#`Hrk?w7hO(QChAuS55xUPF6D1q!)Kzr3B|{4Q-AQo%B7D}o_0 zQIMBw8aLn#-c+etl~VT$>p2RrFOoH0$dJ@tGOfOrO)O;cJ63ORC+2?Ixx5@k_u4AQ zzM@S{)25oBXD?o<;j8(S@)l|9t{yE-O%7*ZU_hR64OYK*wZ?$8!xGKcyNafc0yKTD z^4>vyukN?3{`%h5gYx99pwvUf{4aPN8z2g;iK;1oM2dZ)yu?9zrwchYL{NBnf_|LK z(t4jDZE8Md=Z<+SSe^IxL(eOnzRVTW`=$2E`)S<_m%KtSOZdBYeuO8-AN*{ijgw?> z)He+dQ3|&<9Gq80gF;^7-G7^|wKntZq3=`RmhE@YRt5cI0a$sT#OKbSk6=Fp|J5?n zq{|Dpa&F$PB^~=(=DQ06=M|(y`8PkhaB*>dp7z2$Z;rVGewcyoOI$qD*V(^Wj{ys2 zscyka8r31scjYu_@}gcAoQb?Vd`i?XAUB+@A(3REv~8Uly;^#x5!?9fqpn|Oj8tW( zLNQ%5r$SHcPsG`7%^?&Elp%!j&;agY61#tG6^@?8Bd*U)uG(*d2*1u}wNN!k6U_1K zK6DfJWq4b+t`Ko=a8zUaX_}3lW23o#@3)(X3`0SgrJLm-*UN*E0f*93qQw)(SMG+) z>ppX8ehcis%0+a3bYc{{%3ZW|GW*PzXl<%iXa@JVY?-pTbEPGJ7EWUagzt@{A4Nx8 z#El;Z57zP>&z5|=#F}BI5jX7xiQt#teGCPVadMT5!vuPCGXPVyH5Ck2h7WZ z@nB3V0%LQqe;l40XueJt3~CFeuv{YtZABK^;H)!L9+DX3dECN%{ub0VmUG{&Bh{jo zWLZRANU^HgSa>INOp!cyT3Rfw%{~yc7YB};Gt4PwA+J68WKlmXoVUD^c&9mGYg#x` z`MYG@w{38_LOu2s75!2FEN+o(v5#_V8Ntner2;Ri|L zkEo(wuUMyX8D8_0#<%$E>1Bt^<20xyl)2b?aO} zj^*1Fp&vlhZV|z#!)PDq;;_09E~|f^U!z^eP+|*87d&V=6noQ2U)mU%Q7n zlQ0GH-M`B>77RL;!y^zT!{>$~RaQBa|MXhsym?_6PkHTvGM?;9DH>}2a9HFwSkGCS zt)1Lq9WS318gXlQP@-i<+Sz4E)1;KvBkyNXj7$5Igz4wSN>w-hRF>(S1>Zy>IjQAN zTg80sSg~Anmr~DG&p4CN6FkEnGhv= zL?Sb^&}wmEO7Ux?SeeFWJ%qTb!k4UGPzmGtBK+3A;WP$gS;3yOmV$)960vB5u+ ziZ7Yy_ZK^yp^o-Y2IJoS>m)K)BI@j7=Vq#B0%(q8V_iBc-1~s?VRIjcCL^ zs+lF$NS=-PsO0lwYe|(d_IwUcR$<=!O88QJJcu~0y7PpZ8FTr$p+&mKZ%F)aZ3V3>IcdYa6%_j=)2jLvR9V7_~}Xj3z1Y037uKC?}+=p%GN?~r>x z%j$9xl00C!Fz&&CLibpXQa!#z+&ds*xldy6CLBl{d$4&JdKbT1)6m{X$ z?-EYG`;xAi0-yKNcw+}_)!f5|`qwjlTQ#%NM|NjEa~U*WUALsocCEPeZOy*Ko7fLQ#M#Fe~>vSv@a|+KiK#Wg2q_a2V=wKR9mM(K75FE;KBNeDMJ2H zH5?4v$@1V*SWJrMZdRvb+h>mKE^~AbE~paPdCbCm6?jJ*uUt2qH)jda zQ`K2{txmL*ZF2a-qX0^Kei=|w3U4o2(|7nv-B8>im}+`ItLg+lpR_@qDkz|wMib~$ zm!4I9Y;Py{raT0jgPyG7>&Av!nBCNtYAb?BE>DTEU!O&dhp9E|=9OYWb0 zeaTtbTiZ6J|F^l_ zyR-iJ{O;_7iHC@TkF$9N%)!omV+IsXu!d*x=QT*wMQaBEF?VR*hdEioG8xgyrfFgPljv2q% z6)dmp(c7h;=Jv~LI?I8T5@-~+4;DpU*zEWj|f;^(yQf(#E$FqgBOpo|2m^Y(!E(&V|({t zV^@0DS>wt@Nw?(v_>ZtMD?Eqb>6 zMWL}%1d);D<}O9=5WycoDo(*yoij}SGDL{$&d42oBMLrcfA$`_=`On8L8bhk3|)%a zVztHUHMo`In5W5{b|tSZrf=UDKIHT$%>4Dhvc%z$QTVa|C2@uW8H+%Vn{?QPL};k_ zCitH8SN0U4r#H$T2A9HL1O9BGUBW!M-I2gw|Toj#9y;{L{QdAuL`;4`>MtXG7# zGG<%!wRpTRbm4(;YKcfbx|9Ka_ec+~!>^t7^Td)shv0UHKA(8Gp$GF3yDViz-LqYz z)$t#O9Ua-dTSF5Q-It6IgZFk4&j=+ zOUu~&w@)cN$ZbU}L9m_GGyAONLOSk={;zE5bB39Ft9rpYqQiG>y|euO!}prNlOh58 z_ZvI4>>Y}oA~zzV>E zc#M%a*PBLCa-8$Dk`?A3XkQ}nOTdNw&~{{hjMofTBFg(-8>{;)!Ph*cfU;?mqZCQT zSYK4d2hA!A-(XREA!>g={;Z{R#>Mz__tg!ci=KrVAP90m>tr?OQ|=yz5y@1P^1YW- zj|@?2DGIucs~mqJH-PS^-2hqxmxy)t+`IwQ&6z89E@APQwdWOtcmg&XKjj5O_BeIFCeTJi<)?&%KKqlJh@A)!jsnpd}q_+L;e*hiu)v zP6EP(zFX_p>deMn!%7q037X`h!MtSTr!7qor?Zi9a%N}n&)5UuJN z{fB7Oj!5B%NC%EziEpGvv<+HqNLx1_cVKAiWVY4gPF@nwGN(D-ujg8Hx|C$`y75^|(t;-A}Emw&wUIb7kFnH`;= zS2Eo4lA%B&)tbz@??FxYxoFrYY7Ng9Bd;Ep1-$)uT=M#v!Qe4nZ;$Q5F!5=Q^J%(P zCE)a(Q0RRP~GQ$2Wc~Fve{aoWuCx^Lt zTpv}1*;#Uea8^8skYCO;Rwvr?FH_>=$~Em%|14p*P)M^G;MRl#o0v{CB1#j57-l5X?%5)>!p@nA=6#e z0H6_kCi~t*!n%880F3Khg3tFad?whR^n+qz%}>@#H*=nFg$M5E)ZotejhMxMM)5yQ zDAbvqoV+!GB1lmk@J!IvI#?H01NgGcCpN5Z4ZshK0&c zsnEenB}AjgJa1m(vpHyD`yNJ1A`)#nusK5YGa~K)^~HUeux#svK-4|f0qSBS6R#-KaXrtBfj+gn9_p3$bXju!r{~V z9<=%?30sGVl%;5>N=vSdRQDHrYK?`l#2TNeDzkZLkTHtEzn6iTi^H`g!afNo42TX; zSz1&Ybhk1n3G0O%*Xa}`ZGUK^g9wv1my79eXoK>+AE>V+gPEhx4VFJeeRa>>DLj<1 z!YKAACD;_~{r8Z&@*RU9%88h%;TMk#f(Vbb>0nkQ;?ZM}CnN$2NLx+YJ|C?t#esvL z>{-be+u)RmFEi4g4nxEkv;NTat$CUShhKfQzkP=*$h%Sj%x6|6+Lk#MWjTXek*pXX zu)$9+(dV?Gi%8ZIItQqUDa8S*k2kCyQKO`K30Iizd>p%d&z6QNt2+zN&D=#yOoVO7 zA0Tv8JHCS=N5tWXef8X}dlV0y$m{+hEis|H*M?tV`&!ZhYgtvoru!%RS}A9@t*itn zsIz;tIB-9PWr=Rp2vdkhh=}i0ho7Ta3N%hLRf`DW57|6ist2zpN2r`;8EmbC4J_Xt zlv^0ZV#KH4`7UrzAymttak_wK_&B0ew+I?UR0{OpnMLrcOdu#Hk&x&gK%Bz^Re-^N zpgc$%pOlL3-koLm+p9YIpjw9EhlRb=n7S=4kkD^TvxxyEt6*_@AuD6R+XuTF7x(2h z@cp-;1oen4d7$vWId}sDdvZm@BKDk}$q8{=2N!%<=$!>;n5&dtiCq zXaX|5;2d~yvIlJ6odp0vvFZz8hUpyeSG)j9M2Z3FFbZ?9jUD# zeCk_DDK;cV56!5B&>R~0vHv3y?^wTI{v<{RD>v(Cv#UM5m5z%%$5*xDtreDeE8LZ@O|{-1byw#92Zy9 z=0#B05l+!`yN;7?V4J!F1F%L#vBHE6j;InM1pr+-fK=aQr%hnDBM671(bA62X3#&` zf7VcoE-D0qCWRH=x0F~EfM^FT>j z^xm1wXbS*Dj?r-~3R^&w6R!P?JfZgjW4ethS#Nm*?)PMZPLuX|p6CaU_*Lt>_Wd9_Eb>z|<`{{~Bh%_ZlDLPzH81y45QbiK5Npu@iP9xhCIN=V z%A2fvV|AHF%5WyZ#yFnI{wTzWVbC+tV?3zjfjtmKDaPZjafVd6E+c%2dK1rX2lUH_ zZR5pCoam-7{rXF1A(nWE>w}w`=`RqoyT4oT6YQ5zY;n6f9Nz>p(zM=CtFe)0Ff(L~+?#qgLIpD8U5>|t8?dSp& zcLU-Bg5(Tg<%L0hWBgNKgyckh z^&4;n)WM1&B0g@3Cb1Rq7tjTmd zsFYmE0bbYjc^IS@8()21bjuZ;_3fst`=*SSV$CyyH2whCu}ucya;ikzzNib?h8!;> zbzi_h-uvLf@Hc>HG2cEI%v=S;Q@Y`|@2y^sQK{{Nsfe2hwq!;#(D-+E!o%?XO3eh% zZYTWqEzmx=J$Un8VZRG`UGI0T3{ayqy^1Ly|J@u2WRC8|BczC^K5DoqGE%>~D9Q=EW2I;2 ztzt*%nRr|w66Z|^o=Kz8<`^b7+h;$-Me?OSQg~trZ1u?5VfE84iu#s<+MqlJt<_$u zT5gWtz*uGc3}F48K(%`gWBN>>BE5iWlmf$@7Z5Uo^P2F+GnRrq;F~^h&-;2zWD3dv zT?Y3sDUFQkgO|bURtn5+0;E%e!d7QXqu||JrLmBZr;~$0tQ*;#9PNmQn}wp!HSXOg z8+K-G^-z_x&k7+mJa_e;oYh%jC)**Y)jI{1?^bRti$+n1dTAq3i}%HQYa3UlL-K&q z>~}$%cZ5+4FVo;K-`s8q2t1S~@%lkY>x}{HNu+;;KJ2~C*NHy-k{K7Yop<`Y2YvW~ zsdDfRE`(^A&xp;lP?kRlN@NLqd$-*|6VZ&fV(JtyOt4;gEeii*&a2BOJm1Q#ylynH z*beHt9y17p?KbB-tSK+u#ggyFdW|poHM~I-Lg+!jT00`~JBfR!OL5qvv<14A2 z^a30~HQOYJW$A`=kS5|sK6!6R~t zW%$s(wz#aw3}YsIe;I@wJEOHlJQ&eC$ArOA9QfNXSZxqTeH7~F*%sa$`DvTia!yDr zjOlswA|#sgC4&)(QAiOb&HKBzijyFPN4|;cpm(}6x|;D%q_XmC&el_Vh-u%7rcy8< zezCntH@4g=E_2t(nvQ1df+ufQ> zsRwR7c)E8GK}nag@j{n*QC>*)x(-F8*X1J{^sJ?>KVp3O>GzDV!`I>HRrOp#SYth* z^%dQ2N1w?GC3A?P*;(OoKbCQHu$5H`R7-U8X^#8cHUm4#i5dBoo|7d!dfM_mLR=pE zJ?6bL?d&*@La{`h#WfAQcEezSAqP$O>-d=jQ+;+;`*rXK!UjzGny{v zO2PSU4Q!`l`a1u(CA%Y6*6UiKlItWfhSjx*< z<fx)4K2u=EY!=Jq2_qYQ6 ze{=9MhfP|b4g7asXOH0pioJ#Y;&JsWb327Lq2tOv2t+mu_DXiV9d%C7FG^x$ zEefapTnT+k^xp8~7hc9PmdU$RO_U4yJ$Cn9GSI}3P%0>~?hIcq+lZEAd6m{qlg(YQ zv()k#L@7g~9oc#>cmzrxw|3cK!**to#7>NIGa^sh`fj6O3Y+P1H>NnF*~;3Fn0({K z*ecq$y@Fq-Qt6fhZrvp?4|=D64z}^icJfAdN;k;pm}(c8gGJ_sC)-E~Th^J2E?ibvE0TarV%MM(iw-A?OZ{H6=tt)}cfHa(s!!z__IQcS&R9C>$=cprXO zLAEQ`Ik6tgMjW?E;7Ab!Ilj)?Z1?^q(;-Q`#iuv{j#oN*yg0Z}D387=&r}TP> zlBF!0)BjXr1Z0L^yyM@mBz+=lIXij|%m&rj6dq$x3BR@xvcv=&oL|MCV1AE@R;CD} zX3+7bT@j6gQ-78NmWE9T3PP4x0`NCe3JPjeY$g<^74#p5)sgW+O)37#uKgS~3#@&2`T7s(@te3+nLjNq@yQeKdR8P2MwtZ)A#IBO|F+t}P zU0~j{4rG#_q5p^zpjt9Fmox$KEb9bdUcG`QxZ$8iBI{72crk)iAq#+{Q^7S`@+GK7 z)v?$HCEd`808-)+0Kad8gA5t=0TAW{V3A0g09C%JsmBioV%WGs(v`&n38Bj2cg?gz zhpqtc^%JN$Y#ksj2x>>_ETCavDF4~TWzBsww4-_vn3p=n!zykDnaTbobeZvrF!r|q zCt`5#D@)&$d6i6@gosJ(iU6&3S4WBKS9>%m^LHMA6+4pp(xE zj{Ft_V#&bWbV%BYj%gRi;NKszwZOinUcetYzb*NExXOXi>STRRGerVaxxw0cki)*# zZ+A1I`^tOb#rm$|L90sEA^u%_A=7VJ{cvwC!rbxeMB!Jf9nZ_ICMMGR)}ru4$|#p$ zZ}%e{=B(iA);U2d=_M44a6i>V z2(nyIWicwUaz)<%{8cCl-Bk0ybO7?lpQ_c*z7rcfE5u+LVSdkaRa#{UfRI^dJg5l& zeY4VuZCFvKPv4%9?esxj;(7*Dmm0AlAhX|_-!nCUG13d*t1eI#J`Q*);lUMCP~(+r z=<6~lt6c>0!7HHT#(aLR(MJ7w2Y?(C+?K}*eUHUHbARQqds-CvpayD{nr_qo+PIO# zO3tQYDGXA~>X*+8e3m+br5uJha3+uyc{WLKp_Ms#uf z&#r(7etP>vGN;?+ziwQWy806t&-I82x3`7u6OE1yvhPeN)5}krJ;C^L6t!tKM^sC; z=9N_W`L5C+qJi3Pd?(j^_@Vw zeC-v*%VL|Yk$jtbgY&2Ktj;aMjghA|{}MfdKF}^TRoG)mxlU!c=>7jy%Rd|OW`HJ~zAnq^AE>enw2}N%=I9360g0 zXNf$x)&Ji!>#Ao{5hhj{DUin8lB<e#D-i?no?L*#W;xKdMazH9`l}*OnvSD39v2{4j97=y6bw*G&>-Ds|JTDsX*^xE%H4dA$vCXu8ZlqoXC(yQhIq63uFsg=ix4{9lc$<>lK{&Asq7 zNdFf*lD}5EUH!g<(m4b3tZ2UVjYN=HD`WnvO3f*`iZ`y?uvgkfuvh1roExRW6HZ1C zSY$6OwP~ae7ps2glYKM%!9E4q`AuQUO)I~-@yhX843nHZJu$6kr^tzXOnI% zs{6Sf^RJfjz4YsiC%QjZsK``xG2|VbceagWex%4X^u+)#@JotRz3eBby_wq zCkpiKK#mM2m((=W&B2vckAn!lDVf1fAk59d=b}WS*yfOw(BOZQ)1|>H+IphNRo0w$ z_`h_%V2+5R*f4!*$KFCCn!N5)75b01mqlaK){^S0r5IKQep4%!;q>xE*>C02p!tSc zX9$?@KfkfbxMt{n9~3St-N8E1xH*81jryp^g4pWpO$6kwzJ$>!n_AN|4SBkWq=T4a zDK@R)1Ny|jV!pe&{g6y&G3TE*)U+sVcY4p3dq6IN{MeVxE&CFJ%{+)lD5W1XGraIP zZqoUB5dW6lB|-LK^6*LmkHmaSNwL+SZa7ha-S&A}(ZAN*D-EC6jrUslcm0(G3sS0 zJZ0dIyV{^Fcq2}1#gV|S_ow*fch?6%nGWl3;VJC^M%71szcdG)gFz)^kL9{e9PW3M zzp$GNZH=bPuig=16AhFXVElwTi#Q#V4lp~OAnv1{b?P=xvATJLYVG+z&F4!I+T@zZ z5J*0GD&ig+mB4L%vWEg{va27I|MYZDf7tts786_5VSaSaRF7BUr=~M%hkXGX>t7&s z)zDeiE`LFh+jV$M6xjOWuDSlo-<2`Ov>=zCCZT0rHD44(1(4DC;XfEemD+0d~dS*76q zBvwa)5pIXK(kQn-;Q;eY0_@=xEUTm1tu=Ux?i|fDW7} z$Kw)?28p|%#+1UMLC=)loZ4Da`C7?{Mn9vob$Y2CSTDV4S`U~`nqU5-!f7$lv2+E=53(F^Qjl6CHDw`Z z-f`6p!!XLDb7Dd=G7ECvG3m&EcEj>5+3cVz7@QqxTudHFd+lqGTa)Vyx5?0G z1&wm<@V`c4uHOTe##_Ki`7RD9>>2~WYmxvEJ$pm&oTagqreW?^-lHp-rG_ybeB{x} zb3~KFwXly{r)P7(?J>RdQ%lZc6~f#L0#%c`gSTOuuelHYG_@FU(i$H6e|Iyn`_4tP zFcM}iq@)@DmII!DPVpX5Sh@=TALk$r(4I#s;MFDTH7o+TOu6nj#7fXer#Wpz1?+h! zo&zA zxMy>)i>D`w*v06R04R%$B?_{{%XrPQv_kg&4a?J7iQaZdpB%`#!3kdy<1n$HU5J5L z8ka}`y;Am#)~BE3{=B00)z7x`Z}qDp9GwAHm3`+r)3w76b#MvJ_I*ky=f#FF7gbth;}t^ ze*SRp!J8s->G<@Yuyl>=wN$Rndhm#N8s8-rB$Og-G0fd@e(Pw_v?D+h=Kt`9+=~z1#9>s!|u1c3~k8QXhd%{C7c`L6&Dx{z28O zv|d33yLbhK8rH(3F~Pooen)~o)$s+hD}>2Sy^8MkR-|WvK_e;Wc_Od$WNz9w)v^3` zzOSgU+{g9F)@d4^Zoqzl7!nrqYbC_Qf>FsT$)M<%%Tns=n5#vx;knsk>)~N;S zf;&bYC56cmA+Vc>)e@&I1VT<}yas=`2t^QdPOQ#zTL7Oxb|;|S9kC1*M9pGRb@#~6 z1ijmkI%UZO9LUtPhUYr`87dtNpVYSMX2^<34N+5D?Rcl@bU1KGZ=8 zCnyF^Kt}x5LHSgT4RGZeHUPH#`XYz(fNBrqIf~r`QRzIuM1^NyN9W_V_C2**t77D+ zUR#_uDfBm*OIj8!3HQ@_DJDRGIpgxH{!vX&Aexz}5&CFs65D_Dq#c?bFL6fYSI6@) zrQjyG26TehvRlgga4e<$@sG)WT5~1Uf1efje9cuxr{!^3(ok%j%nAR=;6tdzidAOAinu|hxc8HJ;5x1O50k{}X2AQ&5@7bS z^=scYZqLJ|j|7cK{C*SQGAaEaLDUY|cSac2GnF{m1A?lH&?(<%3;3GSF9e4j=QD!C z$oL8xL3yzNJfD6K?6<3}m;diHmvIUQ?SNqb-fkRJVi3^7qyS*PVE|Nw0hpcvHJ8Ew zR6h%t@<4MyPl0>v(JWfK^99+J{t{7)~vVUyPd0w-)`wp)Be3@j5KsSb@?4^jm# zO2!UD@hh3_Rgbvq;n{RcyYY~~z~j$0kSV>a#l_LaZ--SPIuJ<1eIc|f2nOdt!nQ$Er^Vs;!$ z?V*tG{Z^8!;UUhxxs1q{lK1J=m9r!WDCl-n7@cV?!WrIoUC}pb!!aZ6DH#$_ !D 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