From 685f3ece8d1b43b6cb7c4827e81b6400fff1668e Mon Sep 17 00:00:00 2001 From: Andrew Brindamour Date: Sun, 7 Aug 2016 16:16:07 -0700 Subject: [PATCH] WIP #20: Artemis 2.4.0 support (replace ArtClientLib with IAN) --- README.md | 20 +- .../dat/artemis-3.snt | Bin .../dat/artemis-4.snt | Bin .../dat/artemis-5.snt | Bin .../dat/artemis-scout.snt | Bin .../dat/artemis.snt | Bin .../dat/vesselData.xml | 0 lib/.DS_Store | Bin 6148 -> 0 bytes lib/ArtClientLib-2.6.0/.gitignore | 1 - lib/ArtClientLib-2.6.0/.travis.yml | 7 - lib/ArtClientLib-2.6.0/build.xml | 68 -- .../junitlib/hamcrest-core-1.3.jar | Bin 45024 -> 0 bytes .../junitlib/junit-4.11.jar | Bin 245039 -> 0 bytes lib/ArtClientLib-2.6.0/readme.md | 15 - .../net/dhleong/acl/enums/AlertStatus.java | 6 - .../net/dhleong/acl/enums/AudioCommand.java | 6 - .../src/net/dhleong/acl/enums/AudioMode.java | 6 - .../net/dhleong/acl/enums/BaseMessage.java | 40 -- .../net/dhleong/acl/enums/BeamFrequency.java | 9 - .../net/dhleong/acl/enums/CommsMessage.java | 23 - .../dhleong/acl/enums/CommsRecipientType.java | 84 --- .../net/dhleong/acl/enums/ConnectionType.java | 37 - .../src/net/dhleong/acl/enums/Console.java | 29 - .../net/dhleong/acl/enums/ConsoleStatus.java | 11 - .../net/dhleong/acl/enums/CreatureType.java | 12 - .../src/net/dhleong/acl/enums/DriveType.java | 9 - .../net/dhleong/acl/enums/EliteAbility.java | 52 -- .../net/dhleong/acl/enums/EnemyMessage.java | 38 -- .../dhleong/acl/enums/FactionAttribute.java | 44 -- .../src/net/dhleong/acl/enums/GameType.java | 14 - .../net/dhleong/acl/enums/MainScreenView.java | 9 - .../src/net/dhleong/acl/enums/ObjectType.java | 87 --- .../net/dhleong/acl/enums/OrdnanceType.java | 26 - .../net/dhleong/acl/enums/OtherMessage.java | 66 -- .../net/dhleong/acl/enums/Perspective.java | 10 - .../net/dhleong/acl/enums/PlayerMessage.java | 46 -- .../src/net/dhleong/acl/enums/ShipSystem.java | 27 - .../net/dhleong/acl/enums/TargetingMode.java | 6 - .../src/net/dhleong/acl/enums/TubeState.java | 12 - .../src/net/dhleong/acl/enums/Upgrade.java | 64 -- .../dhleong/acl/enums/VesselAttribute.java | 47 -- .../acl/iface/ArtemisNetworkInterface.java | 69 -- .../net/dhleong/acl/iface/BaseDebugger.java | 44 -- .../dhleong/acl/iface/ConnectionEvent.java | 19 - .../acl/iface/ConnectionSuccessEvent.java | 10 - .../src/net/dhleong/acl/iface/Debugger.java | 49 -- .../dhleong/acl/iface/DisconnectEvent.java | 76 --- .../src/net/dhleong/acl/iface/Listener.java | 30 - .../net/dhleong/acl/iface/ListenerMethod.java | 106 --- .../dhleong/acl/iface/ListenerRegistry.java | 58 -- .../acl/iface/OutputStreamDebugger.java | 98 --- .../net/dhleong/acl/iface/PacketFactory.java | 24 - .../acl/iface/PacketFactoryRegistry.java | 113 ---- .../net/dhleong/acl/iface/PacketReader.java | 511 -------------- .../net/dhleong/acl/iface/PacketWriter.java | 463 ------------- .../ThreadedArtemisNetworkInterface.java | 347 ---------- .../dhleong/acl/protocol/ArtemisPacket.java | 37 - .../acl/protocol/ArtemisPacketException.java | 83 --- .../acl/protocol/BaseArtemisPacket.java | 60 -- .../net/dhleong/acl/protocol/Protocol.java | 15 - .../net/dhleong/acl/protocol/RawPacket.java | 45 -- .../acl/protocol/UnexpectedTypeException.java | 15 - .../dhleong/acl/protocol/UnknownPacket.java | 20 - .../dhleong/acl/protocol/UnparsedPacket.java | 15 - .../protocol/core/CaptainSelectPacket.java | 47 -- .../protocol/core/CoreArtemisProtocol.java | 90 --- .../acl/protocol/core/DmxMessagePacket.java | 77 --- .../core/GameMasterMessagePacket.java | 115 ---- .../protocol/core/GameMasterSelectPacket.java | 47 -- .../acl/protocol/core/GameMessagePacket.java | 70 -- .../acl/protocol/core/GameOverPacket.java | 59 -- .../protocol/core/GameOverReasonPacket.java | 82 --- .../protocol/core/GameOverStatsPacket.java | 125 ---- .../protocol/core/KeyCaptureTogglePacket.java | 73 -- .../acl/protocol/core/KeystrokePacket.java | 49 -- .../acl/protocol/core/PausePacket.java | 65 -- .../acl/protocol/core/PerspectivePacket.java | 77 --- .../protocol/core/PlayerShipDamagePacket.java | 65 -- .../protocol/core/SetMainScreenPacket.java | 51 -- .../acl/protocol/core/ShipActionPacket.java | 78 --- .../acl/protocol/core/SkyboxPacket.java | 59 -- .../core/TogglePerspectivePacket.java | 45 -- .../protocol/core/ToggleShieldsPacket.java | 43 -- .../core/comm/AudioCommandPacket.java | 75 --- .../core/comm/CommsIncomingPacket.java | 100 --- .../core/comm/CommsOutgoingPacket.java | 151 ----- .../core/comm/IncomingAudioPacket.java | 134 ---- .../core/comm/ToggleRedAlertPacket.java | 43 -- .../core/eng/EngAutoDamconUpdatePacket.java | 67 -- .../core/eng/EngGridUpdatePacket.java | 300 --------- .../core/eng/EngSendDamconPacket.java | 102 --- .../core/eng/EngSetAutoDamconPacket.java | 51 -- .../core/eng/EngSetCoolantPacket.java | 93 --- .../protocol/core/eng/EngSetEnergyPacket.java | 115 ---- .../protocol/core/helm/ClimbDivePacket.java | 76 --- .../protocol/core/helm/HelmJumpPacket.java | 93 --- .../core/helm/HelmRequestDockPacket.java | 45 -- .../core/helm/HelmSetClimbDivePacket.java | 76 --- .../core/helm/HelmSetImpulsePacket.java | 75 --- .../core/helm/HelmSetSteeringPacket.java | 79 --- .../protocol/core/helm/HelmSetWarpPacket.java | 52 -- .../core/helm/HelmToggleReversePacket.java | 44 -- .../protocol/core/helm/JumpStatusPacket.java | 87 --- .../acl/protocol/core/sci/SciScanPacket.java | 51 -- .../protocol/core/sci/SciSelectPacket.java | 47 -- .../core/setup/AllShipSettingsPacket.java | 149 ---- .../core/setup/ConsoleStatusPacket.java | 118 ---- .../protocol/core/setup/DifficultyPacket.java | 87 --- .../acl/protocol/core/setup/ReadyPacket.java | 49 -- .../acl/protocol/core/setup/ReadyPacket2.java | 45 -- .../protocol/core/setup/SetConsolePacket.java | 76 --- .../protocol/core/setup/SetShipPacket.java | 59 -- .../core/setup/SetShipSettingsPacket.java | 113 ---- .../protocol/core/setup/VersionPacket.java | 78 --- .../protocol/core/setup/WelcomePacket.java | 63 -- .../core/weap/ConvertTorpedoPacket.java | 75 --- .../protocol/core/weap/FireBeamPacket.java | 75 --- .../protocol/core/weap/FireTubePacket.java | 54 -- .../protocol/core/weap/LoadTubePacket.java | 95 --- .../protocol/core/weap/SetBeamFreqPacket.java | 53 -- .../core/weap/SetWeaponsTargetPacket.java | 48 -- .../core/weap/ToggleAutoBeamsPacket.java | 44 -- .../protocol/core/weap/UnloadTubePacket.java | 53 -- .../core/world/AbstractObjectParser.java | 41 -- .../protocol/core/world/AnomalyParser.java | 55 -- .../acl/protocol/core/world/BaseParser.java | 78 --- .../protocol/core/world/BeamFiredPacket.java | 190 ------ .../protocol/core/world/CreatureParser.java | 87 --- .../core/world/DestroyObjectPacket.java | 75 --- .../acl/protocol/core/world/DroneParser.java | 60 -- .../acl/protocol/core/world/EngParser.java | 110 --- .../core/world/GenericMeshParser.java | 141 ---- .../acl/protocol/core/world/IntelPacket.java | 67 -- .../acl/protocol/core/world/NebulaParser.java | 60 -- .../protocol/core/world/NpcShipParser.java | 217 ------ .../acl/protocol/core/world/ObjectParser.java | 12 - .../core/world/ObjectUpdatePacket.java | 118 ---- .../acl/protocol/core/world/OtherParser.java | 77 --- .../protocol/core/world/PlayerShipParser.java | 217 ------ .../core/world/SoundEffectPacket.java | 67 -- .../protocol/core/world/TorpedoParser.java | 64 -- .../protocol/core/world/UpgradesParser.java | 158 ----- .../acl/protocol/core/world/WeapParser.java | 202 ------ .../src/net/dhleong/acl/util/BitField.java | 127 ---- .../src/net/dhleong/acl/util/BoolState.java | 37 - .../net/dhleong/acl/util/ByteArrayReader.java | 215 ------ .../src/net/dhleong/acl/util/GridCoord.java | 136 ---- .../acl/util/PlayerShipUpdateListener.java | 71 -- .../net/dhleong/acl/util/ShipSystemGrid.java | 84 --- .../src/net/dhleong/acl/util/TextUtil.java | 95 --- .../src/net/dhleong/acl/util/Util.java | 31 - .../src/net/dhleong/acl/util/Version.java | 188 ------ .../net/dhleong/acl/vesseldata/BeamPort.java | 18 - .../acl/vesseldata/ClasspathResolver.java | 11 - .../net/dhleong/acl/vesseldata/Faction.java | 67 -- .../acl/vesseldata/FilePathResolver.java | 19 - .../dhleong/acl/vesseldata/PathResolver.java | 8 - .../acl/vesseldata/SAXVesselDataHandler.java | 353 ---------- .../src/net/dhleong/acl/vesseldata/Taunt.java | 30 - .../net/dhleong/acl/vesseldata/Vessel.java | 309 --------- .../dhleong/acl/vesseldata/VesselData.java | 137 ---- .../acl/vesseldata/VesselDataException.java | 13 - .../acl/vesseldata/VesselInternals.java | 113 ---- .../dhleong/acl/vesseldata/VesselNode.java | 102 --- .../acl/vesseldata/VesselNodeConnection.java | 49 -- .../dhleong/acl/vesseldata/VesselPoint.java | 32 - .../dhleong/acl/vesseldata/WeaponPort.java | 35 - .../src/net/dhleong/acl/world/Artemis.java | 56 -- .../net/dhleong/acl/world/ArtemisAnomaly.java | 46 -- .../net/dhleong/acl/world/ArtemisBase.java | 53 -- .../dhleong/acl/world/ArtemisCreature.java | 51 -- .../net/dhleong/acl/world/ArtemisDrone.java | 45 -- .../acl/world/ArtemisGenericObject.java | 33 - .../net/dhleong/acl/world/ArtemisMesh.java | 159 ----- .../net/dhleong/acl/world/ArtemisNebula.java | 75 --- .../src/net/dhleong/acl/world/ArtemisNpc.java | 265 -------- .../net/dhleong/acl/world/ArtemisObject.java | 125 ---- .../dhleong/acl/world/ArtemisOrientable.java | 37 - .../net/dhleong/acl/world/ArtemisPlayer.java | 637 ------------------ .../dhleong/acl/world/ArtemisShielded.java | 39 -- .../dhleong/acl/world/BaseArtemisObject.java | 238 ------- .../acl/world/BaseArtemisOrientable.java | 81 --- .../acl/world/BaseArtemisShielded.java | 110 --- .../dhleong/acl/world/BaseArtemisShip.java | 181 ----- .../net/dhleong/acl/world/SystemManager.java | 395 ----------- .../dhleong/acl/protocol/TestPacketFile.java | 333 --------- .../protocol/core/comm/AudioCommandPacket.txt | 17 - .../core/comm/AudioCommandPacketTest.java | 27 - .../core/comm/CommsIncomingPacket.txt | 14 - .../core/comm/CommsIncomingPacketTest.java | 25 - .../core/comm/CommsOutgoingPacket.txt | 47 -- .../core/comm/CommsOutgoingPacketTest.java | 48 -- .../core/comm/IncomingAudioPacket.txt | 21 - .../core/comm/IncomingAudioPacketTest.java | 32 - .../core/comm/ToggleRedAlertPacket.txt | 7 - .../core/comm/ToggleRedAlertPacketTest.java | 22 - .../core/eng/EngAutoDamconUpdatePacket.txt | 15 - .../eng/EngAutoDamconUpdatePacketTest.java | 24 - .../protocol/core/eng/EngGridUpdatePacket.txt | 22 - .../core/eng/EngGridUpdatePacketTest.java | 50 -- .../protocol/core/eng/EngSendDamconPacket.txt | 17 - .../core/eng/EngSendDamconPacketTest.java | 33 - .../core/eng/EngSetAutoDamconPacket.txt | 15 - .../core/eng/EngSetAutoDamconPacketTest.java | 25 - .../protocol/core/eng/EngSetCoolantPacket.txt | 17 - .../core/eng/EngSetCoolantPacketTest.java | 27 - .../protocol/core/eng/EngSetEnergyPacket.txt | 26 - .../core/eng/EngSetEnergyPacketTest.java | 33 - .../protocol/core/helm/ClimbDivePacket.txt | 15 - .../core/helm/ClimbDivePacketTest.java | 22 - .../acl/protocol/core/helm/HelmJumpPacket.txt | 8 - .../core/helm/HelmJumpPacketTest.java | 23 - .../core/helm/HelmRequestDockPacket.txt | 7 - .../core/helm/HelmRequestDockPacketTest.java | 21 - .../core/helm/HelmSetClimbDivePacket.txt | 23 - .../core/helm/HelmSetClimbDivePacketTest.java | 26 - .../core/helm/HelmSetImpulsePacket.txt | 15 - .../core/helm/HelmSetImpulsePacketTest.java | 25 - .../core/helm/HelmSetSteeringPacket.txt | 15 - .../core/helm/HelmSetSteeringPacketTest.java | 25 - .../core/setup/AbstractPacketTester.java | 98 --- .../acl/protocol/core/setup/VersionPacket.txt | 24 - .../core/setup/VersionPacketTest.java | 26 - .../acl/protocol/core/setup/WelcomePacket.txt | 14 - .../core/setup/WelcomePacketTest.java | 21 - .../acl/vesseldata/VesselDataTest.java | 64 -- lib/artclientlib-2.6.0.jar | Bin 343846 -> 0 bytes lib/ian-UNRELEASED.jar | Bin 0 -> 610138 bytes .../BaseEngineeringConsoleManager.java | 21 +- .../engconsole/EngineeringConsoleManager.java | 12 +- .../FakeEngineeringConsoleManager.java | 8 +- .../RealEngineeringConsoleManager.java | 70 +- .../config/ConfigurationLoader.java | 2 +- .../config/EnergyCoolantPreset.java | 2 +- .../engconsole/config/InputMapping.java | 2 +- .../artemis/engconsole/ui/InGamePanel.java | 22 +- .../artemis/engconsole/ui/InputManager.java | 2 +- .../artemis/engconsole/ui/PresetManager.java | 2 +- .../engconsole/ui/SystemHealthSlider.java | 2 +- .../engconsole/ui/SystemHeatSlider.java | 2 +- .../artemis/engconsole/ui/SystemSlider.java | 4 +- .../engconsole/ui/SystemStatusRenderer.java | 2 +- .../engconsole/ui/SystemStatusSlider.java | 2 +- .../artemis/engconsole/ui/damcon/Damcon.java | 6 +- .../engconsole/ui/damcon/Internal.java | 2 +- .../ui/damcon/InternalConnection.java | 2 +- .../engconsole/ui/damcon/InternalNode.java | 4 +- .../protocol/NonShittyShipSystemGrid.java | 6 +- .../protocol/NotifyingSystemManager.java | 12 +- .../artemis/protocol/RobustProxyListener.java | 18 +- .../protocol/WorldAwareRegularServer.java | 16 +- .../artemis/protocol/WorldAwareServer.java | 2 +- 252 files changed, 126 insertions(+), 16313 deletions(-) rename {lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata => artemisData}/dat/artemis-3.snt (100%) rename {lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata => artemisData}/dat/artemis-4.snt (100%) rename {lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata => artemisData}/dat/artemis-5.snt (100%) rename {lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata => artemisData}/dat/artemis-scout.snt (100%) rename {lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata => artemisData}/dat/artemis.snt (100%) rename {lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata => artemisData}/dat/vesselData.xml (100%) delete mode 100644 lib/.DS_Store delete mode 100644 lib/ArtClientLib-2.6.0/.gitignore delete mode 100644 lib/ArtClientLib-2.6.0/.travis.yml delete mode 100644 lib/ArtClientLib-2.6.0/build.xml delete mode 100644 lib/ArtClientLib-2.6.0/junitlib/hamcrest-core-1.3.jar delete mode 100644 lib/ArtClientLib-2.6.0/junitlib/junit-4.11.jar delete mode 100644 lib/ArtClientLib-2.6.0/readme.md delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AlertStatus.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AudioCommand.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AudioMode.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/BaseMessage.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/BeamFrequency.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CommsMessage.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CommsRecipientType.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ConnectionType.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Console.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ConsoleStatus.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CreatureType.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/DriveType.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/EliteAbility.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/EnemyMessage.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/FactionAttribute.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/GameType.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/MainScreenView.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ObjectType.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/OrdnanceType.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/OtherMessage.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Perspective.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/PlayerMessage.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ShipSystem.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/TargetingMode.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/TubeState.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Upgrade.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/VesselAttribute.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ArtemisNetworkInterface.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/BaseDebugger.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ConnectionEvent.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ConnectionSuccessEvent.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/Debugger.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/DisconnectEvent.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/Listener.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ListenerMethod.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ListenerRegistry.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/OutputStreamDebugger.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketFactory.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketFactoryRegistry.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketReader.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketWriter.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ThreadedArtemisNetworkInterface.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/ArtemisPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/ArtemisPacketException.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/BaseArtemisPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/Protocol.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/RawPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnexpectedTypeException.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnknownPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnparsedPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/CaptainSelectPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/CoreArtemisProtocol.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/DmxMessagePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMasterMessagePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMasterSelectPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMessagePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverReasonPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverStatsPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/KeyCaptureTogglePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/KeystrokePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PausePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PerspectivePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PlayerShipDamagePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/SetMainScreenPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/ShipActionPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/SkyboxPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/TogglePerspectivePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/ToggleShieldsPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/AudioCommandPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/CommsIncomingPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/IncomingAudioPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSendDamconPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/ClimbDivePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmJumpPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetWarpPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmToggleReversePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/JumpStatusPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/sci/SciScanPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/sci/SciSelectPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/AllShipSettingsPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ConsoleStatusPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/DifficultyPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ReadyPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ReadyPacket2.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetConsolePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetShipPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetShipSettingsPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/VersionPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/WelcomePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/ConvertTorpedoPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/FireBeamPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/FireTubePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/LoadTubePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/SetBeamFreqPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/SetWeaponsTargetPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/ToggleAutoBeamsPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/UnloadTubePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/AbstractObjectParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/AnomalyParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/BaseParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/BeamFiredPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/CreatureParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/DestroyObjectPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/DroneParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/EngParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/GenericMeshParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/IntelPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/NebulaParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/NpcShipParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/ObjectParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/ObjectUpdatePacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/OtherParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/PlayerShipParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/SoundEffectPacket.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/TorpedoParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/UpgradesParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/WeapParser.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/BitField.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/BoolState.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/ByteArrayReader.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/GridCoord.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/PlayerShipUpdateListener.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/ShipSystemGrid.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/TextUtil.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/Util.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/Version.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/BeamPort.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/ClasspathResolver.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Faction.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/FilePathResolver.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/PathResolver.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/SAXVesselDataHandler.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Taunt.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Vessel.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselData.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselDataException.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselInternals.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselNode.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselNodeConnection.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselPoint.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/WeaponPort.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/Artemis.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisAnomaly.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisBase.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisCreature.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisDrone.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisGenericObject.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisMesh.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisNebula.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisNpc.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisObject.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisOrientable.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisPlayer.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisShielded.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisObject.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisOrientable.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisShielded.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisShip.java delete mode 100644 lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/SystemManager.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/TestPacketFile.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/AudioCommandPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/AudioCommandPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsIncomingPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsIncomingPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/IncomingAudioPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/IncomingAudioPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSendDamconPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSendDamconPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/ClimbDivePacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/ClimbDivePacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmJumpPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmJumpPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/AbstractPacketTester.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/VersionPacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/VersionPacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/WelcomePacket.txt delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/WelcomePacketTest.java delete mode 100644 lib/ArtClientLib-2.6.0/test/net/dhleong/acl/vesseldata/VesselDataTest.java delete mode 100644 lib/artclientlib-2.6.0.jar create mode 100644 lib/ian-UNRELEASED.jar diff --git a/README.md b/README.md index 02525e8..a45dc01 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,15 @@ This is a Java client for [Artemis Space Bridge Simulator](http://artemis.eochu. More information on specific functionality will be available as development progresses. +## Acknowledgments +This is a client for Artemis Space Bridge Simulator created by Thom Robertson. You must have a legally purchased version of Artemis +in order to play this game. Artemis is an awesome game and Thom has been kind enough to be supportive of third party clients. Please +do not pirate Artemis - thank him by buying a copy of the game! + +In order to talk to the Artemis server, this client uses IAN (Interface for Artemis Networking), created by Robert J. Walker (rjwut) +on top of the original ArtClientLib created by Daniel Leong (dhleong). None of this would be possible without their hard work! + + ## Persistent Custom Presets TODO: document me! @@ -89,7 +98,7 @@ First, clone this repository into the root of your Eclipse workspace. Open Eclipse and choose `File -> New Java Project`. Enter the name of this repository exactly as the name of the project. You'll see text on the bottom of the window explaining that the wizard will automatically configure the JRE etc. Make sure Java SE 8 or later is selected (we're currently using 1.8.0_51). Click `Finish`. -Then, right click on the project and select `Build Path -> Configure Build Path`. Under the `Libraries` tab, you should see `artclientlib-2.6.0.jar`; if you don't, click `Add JARs` and locate it under `lib`. On the entry for that JAR, expand the triangle to see more details. Double-click the `Source Attachment` entry and navigate to `lib/ArtClientLib-2.6.0`. You should now be able to click on library classes such as `ShipSystem` and see their source and JavaDoc comments. +Then, right click on the project and select `Build Path -> Configure Build Path`. Under the `Libraries` tab, you should see `ian-UNRELEASED.jar`; if you don't, click `Add JARs` and locate it under `lib`. #### IntelliJ IDEA @@ -100,13 +109,10 @@ These instructions assume you are using IntelliJ IDEA 14.1.4. 1. Select `Create project from existing sources`. 1. Continue selecting defaults until the project loads. 1. In the project window's tree, locate the lib directory under `ArtemisEngineeringClient`. -1. Right click on artclientlib-2.6.0.jar, select `Add as source...`, and select `Build -> Rebuild Project`. +1. Right click on ian-UNRELEASED.jar, select `Add as source...`, and select `Build -> Rebuild Project`. - You should now have no compilation errors. -1. Right click on `ArtemisEngineeringClient`, select `Open module settings...`, and navigate to `Project Settings -> Libraries` -1. Select `artclientlib-2.6.0`. Select the `+` in the bottom of the UI (not the one at the top to add a new library) and select the `lib/ArtClientLib-2.6.0` directory. - - You should now be able to navigate directly to the ArtClientLib source code from within your source files and see no compilation errors in the `ArtClientLib` directory. -1. In the project window's tree, right click on `lib` and select `Mark Directory As -> Excluded`. This will cause any compilation errors in ArtClientLib to go away (you only need that directory for code navigation, not compilation). - - If you do wish to actually compile (or run the tests) for ArtClientLib, you'll probably have to do something like this: select the `+` at the top of the UI (to add a new library), select `Java`, and select `ArtemisEngineeringClient/lib/ArtClientLib-2.6.0/junitlib/junit-4.11.jar`. Do the same for `hamcrest-core-1.3.jar` as well. + - You should now be able to navigate directly to the IAN source code from within your source files +1. In the project window's tree, right click on `lib` and select `Mark Directory As -> Excluded`. This will cause any compilation errors in any dependencies to go away (you only need that directory for code navigation, not compilation). ### 3D DAMCON Models diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/artemis-3.snt b/artemisData/dat/artemis-3.snt similarity index 100% rename from lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/artemis-3.snt rename to artemisData/dat/artemis-3.snt diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/artemis-4.snt b/artemisData/dat/artemis-4.snt similarity index 100% rename from lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/artemis-4.snt rename to artemisData/dat/artemis-4.snt diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/artemis-5.snt b/artemisData/dat/artemis-5.snt similarity index 100% rename from lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/artemis-5.snt rename to artemisData/dat/artemis-5.snt diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/artemis-scout.snt b/artemisData/dat/artemis-scout.snt similarity index 100% rename from lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/artemis-scout.snt rename to artemisData/dat/artemis-scout.snt diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/artemis.snt b/artemisData/dat/artemis.snt similarity index 100% rename from lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/artemis.snt rename to artemisData/dat/artemis.snt diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/vesselData.xml b/artemisData/dat/vesselData.xml similarity index 100% rename from lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/dat/vesselData.xml rename to artemisData/dat/vesselData.xml diff --git a/lib/.DS_Store b/lib/.DS_Store deleted file mode 100644 index 0621cc18807a0ea2ebab0edf03ea43032aff737f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyG{c!5S)b+k)TLP=^r4{3DH~8(a`b(JW@tVfk=H7-^Hgf`zVMGy3jcAHJmLih`cM8E z!}k4c_qyNjJV_=6q<|EV0#ZNluk6wbLoQI;@%xtDCJl6pPz=ev5QiPt+&{ zq`v&VU@ZS-fl=X}xKI1dVkD96Mo i$6R - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/ArtClientLib-2.6.0/junitlib/hamcrest-core-1.3.jar b/lib/ArtClientLib-2.6.0/junitlib/hamcrest-core-1.3.jar deleted file mode 100644 index 9d5fe16e3dd37ebe79a36f61f5d0e1a69a653a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45024 zcmaI81C*p&lQmqnZQHhOn_aeT+qTtZ+wQVmUAC*b%)j2bGxN>8@64Yo^W@64;>nfg zWbD|nBO+5l8W;o$00062fW7oo0N{VzAOS!CWJOg3X(i>v=s(8+02Kby6as+l+w|#c zNwVhK91suy0OkAnzfENYJ+q&~~XcVMg@)Q>u853k!`i`Ur45 zyu5Cd37@2HgH)`Wy1`l;*oM6)AovI`MZ*5P^GAe-{5dEZG0FFgLIHB7%e7m@~IKQ2JFQMZ<9=GfFm*%A&yCZ2FhNHwGWyrhp(buKg?hqDS+*3t9 zd{fJ?i!iu3WWuibV>u(s!C7Y9Ec@WNo2&8wt$(Q78NE9faKyXMFZx?z#3g=W!ggoW zxBju_^2Gk#d1;@npM{AJMlo8%y|Ejj#qPY!E?ZE}{zt!8D)Sevt(Mlx?wUpBu7Pd- z+&=5f)$cT0MHpK#AxKNtLgIJ;1o0;w;U`Im=XE0^FJ`(EW^RqEi|ti|O73QiforP# zZ4`hWX!GNBWxLS!_Nha8kt+qvaywJz^&^fC8TLt%rr#0pz;rRNvOOFu-M3nI=avGe zGeQvShWz>WK)WN5I{5e2?{Wf-#LUiZA$BZ*U2cs9(rD%v`A}Y>;3#xQ{>62Eo>{k^kl!@X(KI9@K zP|&oX8WJ<-Sx`mN@Uw|3vJ}OpTfpgEQ$i8C2HuxCnNO7>v;M|S?XW0&?ONp#Xsq{bsj*Uh;RjX%HgjZ zDcD81yIB87fQn~>(|C4lNp49A0PPu*kkf1B#@2_ChL&1Ygu98+J^LoG$hkZK#b=S&+3y>I$q^Pesl7%RmMS5C%3|Beac-R%1#O@FxO1 zgA!Vxayv;1V*Dj>CYT#C3woj>nT!jiIa1715Fwi6L6eK+)cMN&Tz(BxQ|^%LTr5K$ zk^Rrc^G%HwiAcP{>{ZKiZ<@NrpM`v~-eSWZ$sa8#XjdrgO{MX{fuTSLc!5`kTVoSg zkx^J3fwyDpx4}j+V|NjI`)N0O`^5TV&nOHkC@tDhIZTCD*PJKU(a}w;ry|kT2x(5AaXMUN2y6CRpK%|^ z8zX`PGgBCxWr6}~wM(DmZ$S+2^~1@X-|@^qkVAw$29(R2s*U(<$*W+veIM?&1gJPA z&jf1a4fTmkn53m2AI{uCYb&0EV)^%2xmcvmVyAR)RO^<|r`!`65={#m>2uhQQ>R6q zQx_b-V^1_t0Pgy{x}^j^q|~2G_ahv3mo>AId%ES4yqvQ~v8lEeZ_z%B_ieJ3Z)0QK zZgcByNKyTkZ_(dX1=S6VKZE0a81awaxMFw1BjKIjVQWvH5&YC=RY*#lFGPD|<8DG@ z{dV$TrV`K?NrvOmfP+?bE+P)Njmu~#HT>#nOqe*YgBh(ThQp)|_Fic28i__O?DHtS z4;ay#B`2=r(=q4#h+nQDB{wf80Mq1S%nkyiP{Y(WV@p~AV#*upqgtb+h`}c<5-t-0 z?NT2Dulu5m0bZIZnVAoH)2|uZ>`B`M>^)^ew$8l6#^Z829~mNHxDT_>If7E zVJZSK$$4y{Q9kc!rXpDH(YAKf%!_SKQSzA)*@R@N`V{}zz}8bbEn+T??gM;5gCjXS zh^u~U93JSUN$b*BTt2fqUm4q*p~FT5wH z!9xXmu2r!m{0{U$Lh-o1|EI;6AhI)SSfnTj?f_6Oq3|J3W^^WA{|^!L0%)^ARi%AM zTXpnxxUoy&%^J!kUFz0O%vO6imp|qV16Bi8gXhylzQHo*=yUewfamJtOZSm8hre*d ziAQ4~ejr!WVOrINRH8K*Qu{UN4F_$FD6}$BZDvR5@KAp7-qtVQv@q30h)M!0D_ZYx-={x%~$*|j6x@uqG^rA#UV;D`c4 zTxv57a%R2oCZ}LDmAB1J<%hx#^|gV~FUIvWsNA47P^?iz-xx=i;F4>KOiX_Y-Rr^+ z-Ec`ePh78D_TT?~PewAJJ(R@>8vF}Jfs=4?hmcmqX^vdX=V_UfBu)yMBwuy+6m_mU>2c@>7 z+PLl1WXwrH4SkNh503CP;up1p17UO14ZUS>Z7QorCE`_Llo+vhjLss~uGOIsbEfxC zZiTU1!R5K6stovuuLs0S%G|r6Dv7xIE}m&@_e}CPkj9ttE-0>xU3}9nGvn(H@iW;k z{J*Cf<)rvf+CTsR0^dnH-v5?r$Qn2snVUHNm1e{!>pIN~pzuOBH35dqYgtr(+#s(* zsg0udPcOQ97rKaHcu&%dL2VF1Ceir5Q~S)n?!e!Ob8dNafEZRz+FzSKC{L~X!S)s49! zrBz7HE9nzwy`iWhIr`{rbNtR*3*Y{`R-R$8-5hGh-b6lIYUa)Z^DIT<_I#_ILB;45 zj2zJPz=<7*z62@tS_fz}o|$|Y5_n$(2726rT7BIoG)0P44DCv3*iie?re=h$-E;GT zN1l!6J?#TXwKvX9uUCfH6cCj_=^5m%*j z*M`v>9qnGo2C_W^cXFXsYM~UKT{r`$G`*;dcs%-U^GdyrzDa^u-hpp*(LTnIkEYKB zg#x|IHI;(CKqTeV{|fZuqY-4uF*=g;r-n!~%vUQ?fh`DmWgDgiYXXtnz-5{ex zTYwCd9eFoP1;7%z0^F-j*n=X!pX!L#Y<;-PX5m>xs9|xy9Jed??lk+PPj37Ch+lis zfGI+&M0B2;FYw>p@~*f3Pu{mXPJTcB%`JuPY>h4cmHUz~{^gc7(SlF|3<#oM=FM7B zuB3FjZEW{2qWvLlHz16#Hc~PK5qQ%f;5Q0}kvrr3llXj-Z?#YRkoh9HM6wBp4UOHL z-=bc6psS%&O;EG(@;L_?jhndXVVp%AQ%k!n9Z_wWwdzoPw;28+%vuTv;-w$slxnIw zEmz@QRK{tcZlNTJ2qE?B#Sr%tum@{IPzF-$mJCBYZ)9o@{-HeG`+w9e{w2lVS9d7Y zzh$!icY;syPsIJdt^I{NLJ1x-cd-Vd!YZ`t43vOvY2cYc8*rOas!eU35ff?E+&utXsq1i=YQ~QH z`jBQl`iKSswH6dn1Z>6zvKKW)bvsYpVpMIz&PLm6ZM%#*Y&u+JmtI5rFm158(XavZ zT0vr>3aT^_Yt$a)()hc@JpBSp+nP&NTPWumB>vpoZR@G}_onh!IBh)%vAQhQ=-RdNgZX%P)bJhv*h+`h5gTcCyRi;}2fE#DftKNa`hpF3@| z_Xkhxe39monl3yD{(X0Tu+AuV*_n~6oto{FV~2ME=*=tIJ5uF1uB{T&zFtY^Q#P%J zv}=yJVL*RKGblm~qJJG4Km|#Z#EXfIDnZ5FXpA~S$=|Sqpq@5HvIZ!3>jRUsYz7do z7JUL4DYhONi?mGB?8h*bhS!wq_^^j7YJYn{kik|204wDxeJocCCmEy16 z`4~C{;F~hUYKn7PBLmW=1DI;mAEZ!7%O`W1P&*N$`@-Fu;H#qqHGQT7OrOqt)}7PL zhz?wE$UvP(3DC`w7dQvdH#t1;#WmU-^`I*|!zi)1LVpFfSCrEvy9NJy%ppIz9M<@z z!e8H1NdA8VQ_jx$Z`ce`7W@|{ex{OuAV8~Cr)b%rQY&cx|}58su?>Ovh}x6JCTwlwa@ExnX2Z!wu*8gI=GjaS*S<{M<^?YW>ku9$(>j@`FcagxfEDjg zZuWp51dLUJ4|>BqZRfGQ-=3lut(Lk17OmW_oVs|5>F>L0#KDQxi104O*s*ctn>mSC zGao{b!R114pRmPD@;ht%bMo4nU%uOXja)r*8Wgt;{Bl;hrY?&Z0)|F&k1)4}$ofBP z5cCJ@^x2D4MjF7MQZ3q%YmK_=hnaOUOWi;f&?HX`DNRpTJp1cBE~!h7QFVo{&H9@# z)b{1XkaDPRLX<9k7m4|Gf!&r%KwPq{pnO-w=He5o>YPY?<4-b50F*b2O}20dx(*#fP@NxL@Mi2p!t4ntJ~>96Kf@mF_z`8dSCpQR$y;ikE_<%q<|X!DJspGuPKqN$p~7fKRmGK|@cI|M&+X(mttr?tVLE z#do!v@c(vBWoHxnzbGR|j?s2N03jRH$Os%lHM0q&xL*oen}vWxT7qs8obKoVhso^x zDm=NiWCzegWeBra!oSj*nY*!*`R&h}56DeqeHb`Au~6KS%ZsRn>BW{Qku9psT#!Qe7i z>@WSBpS@RcS)15S7d z8PLX;<4J@V*T8J*o;X{r=JI2djTF}Z%#^=n~+#DbvD%^-qP`c zc+l9!X2Z@V2~4!CV^XAB;(%2u)`R>-ax1sG-&WV}jsrA#tu(z0XJVO7xJ>+&=gxmP zQPhbRHS~(hnBjhDKk}^%sFJJMT8|Q~TFX6U>L}dc{>!nHxF8KTqQ)H8wd_zv*0tNC zF$wuk+ErT7$|ZFS`jXP}Y$TdtjzXZwXlx>P%k&^?T9-w0qH+SA9e^bVRKjkzxM7pW z+X-Fc)x$+cISKzxPi@jlAoWTC$$|BBJ91$&aaD?^d!@a#@sddl{*~CuK8SkCY=9hO z5Jn7P7FG>`T@JFjcDl6nfd9!om3v2OwOl?Mz<>YQf07T zydEOtd;Q6Qcf5632K>`0>#f6pc}bMok>q?fGl*;z1D6y7NV-&i2N{(gkaTF<(#a-h10=i$Y-(|b zNhi;MyF)~uP~|iA?lNfdH;eV|;xLY13DDu4^&H&dbzDOQ4G6^PBh1i5ftWmQLQT^B zPkI`eIHoO_T^2b|wF&o}sHRJ(J<4DR_M8v`BNI>nWy?d4*&AHM2N7Sz(7~>huQ&1# zWvUtMiLtng)LktHJegHP@4>i$nL#^#?wMmn5)C27)MK4OC;vlc{;O3bI`dxC`VGw! zS^xn2e}|`|$$!dBr@s)oqzUPbV}k0JbYYr!YTuOHQcv6BpIKy645ZZnBFvRM%u;O& zN2r!-y{S+UMHm&(uN0AUq!kKv};5sM>%y3J1hf;xk1=T*5O)#GAyX z{2n0a$SyJo9?7jFQXbK*1rmIMyGDTcjv`VVpG?X`H zkI-Hvls9ZH$*l{Le8O`m&~~sL<&DiVT*Nii4ev8wL>cNcAP&*3FcLq}tr4g%5I^ZH zGpH|Iufk5+4K-+Pfd0e{HfC;0K9y;yY^P}8c*m+-p)~CNNT@O{^p&a zgv~Oa*p!R#ef=VsJERvFlim#@L(R?o)tc2rZx)A#%bBIdXUC1@X0D$KkNcsSy9`y8 zHBGshR=%4twOBljR?IBY~x-fR_Yc6kO2>vjNdE8@SJ5NnNt2bi>0!Yt477BU&laQprGO z;8ZYjX|q=1cQ9S7x*i6mmR3-3w0d!IhMIO!wEM%*PWFJ>Dps)uF{RcRU&y^Ab>jdB zi@lW6B`QJIo{UvtjX@-u3TToZq90Ub1PhbZEgM7utA)N$hq8F{v}L+PWSv#;x;TYE z(|#*B6#KuMXvCLnNmdzRTnrvNex7QGdTP3Xkmj@Nfbr;A_SYDK9v5X_=aYVnk1S{B zo=xshFb5{x12!T-qje6*Xt(6bVco0o_WpdwUM;t+n3`v>s4Qk?vz1kDHhu$+iZm-(m^Bna;wfoOS8fl^`O*sIHuu0!wF%ov^7Fx@ zmq8v0X9hhL#A=)mRce+e#t1bRA5`4wm|m<9^H_P2Qu&6Wf8MaVIYgWtut#hZ-Fkd4 zg9D2O@we?muAocdX^RY12I>i zKyt#G!?t2SSf!Q}{nPqS-Kz^8#b}vqAEHMK_6Xppprhk%F?(_J0#;aixXpH(GuopK zuJ=L-{i_cQ&>ib&MeB~;>uQaywRKl*yVMZmg!ef_+&2$l+yaUKkA<+M)ljR36NY#W zj#=#F202GpJSJDTR#wo4YKAH|XWI;M3cDJ`j;u3^_BfMt%~-hb#Zf11^rZhZvB*mc z(}oFTBewOC-jL~ZLFiQ`^o=|G+{4W7$6(>$!V9vD6KtOF7pommB;8M3S>f@STKHaI zA8^$!qnA9>mfq|G3f)!1Rc(xMjB{5wqgPI2Q%9w5-6`?thYv-I;BZ7S2D?g*G%a)g zT0&FdR$!yg#nR4sfBlSvn%LFC#tpN~waKoxak%GcsTfszSgpX*UNVs`Qs1W-cRyxi zffxS6@L!8C40+(n50Gaa)O$r(d0xaq-cAhb*18r{Ja=Wy=HJQIutdRoIFAO z7R##`xQ8lH@_H7|NcI`gf!W5c~h_)NVxY3{w z-v!xP+V8;-i!#Irk?z8v6V>pRM(CS9Hpsj0*8@~{tW)3VVFvU<4MMHwO$g&=f`$T#^{PX-~|$%YYhCOr!^M;#lv%chQAMg5Grm~+FhLk z{spY)#v&}}#$rr*a8__TZ$y~v>km7+@yjWlg$p#a9cT{?YGc4HqF~*TK|NN=i)y?J z8;DME4afzB#%{XVOt3=QC)Yam5})yP~A55^cH0gqNgyO7#|`c`n?Dq zH38$i_+L>TMDigd4f^RPX*YGBw6BkaBHPoXul@)vv0*-BBp0{?y!E-;$a#PIee-|F zcOeU2AqBG76QF*wzri~axIqhIdBl70#d~=ZpxzL&y)wY;xZuUU?jkbeqba%LhOU1B z{aunRWE?HMe9P7DZ&^n0Z#kcfle3-8-^Yi%t z+M|kaW2oR!wmm{{tRX3t=TkH z2UlvR4NYlLQF6mzv+`?|_k<~D_9MVpo-RR}DN@u2VY~Jk=zD>C^5lsx&DAZvR|tji zI`-XR3-dkzAzGYjq*(ks!CaYE01?r`m^@$C0`cVj1XcThm)dC2#tj^oFL)hz#C)`h zLUuYI?Yy9|V?OAZSJe>*WZbsecsjmtpX)`4wRJ%o#lKT{FE2e84K2Tbl~0T4rhZG#W-nN@)eTGs+sJ zlK5ime3f1hEAPQGGZH=2q%;YiYIZ(?k62Ghoual7mSNoDI;&5B0q#Dwag8W1MzH02 zz#+|qHjEl&+w{_IY-igaNj zlBFHBG}~Cxj}+Tl(zgo)#bqMIR}hH!{6e~QXvnZFwKg3zRok0EN-hlKgZiYny&zi! z!G1WL%;5Cux#q?<^Lu}PN9_YvX_P2R7ov;_qA_es6NEB_Gr=jf=MNzcor2~>4I(!* zd~>WSDZ{wSk^W3&*Qv=CQ-4$9lnrf8RZ(iibfxl3t>g_IYG+4)!Nx5gn)tDZ-ZT7G z1F_4K)yaD`al_{)b5fAafaAimZ2|N0>v33weL5)OQEa)h{^Sn&Hqgq8!kcIY7VY7Z z4tRdWY4*%7znP|TjqKM2OanblT!D(_l};UTW_4Z1Wc;a=xC8EU@s7cSXVZ_F%FmKI zm&WeR9x25YXm4$vq+N;-?BTqSSujTqQ;x1ukE@P>-7BMQNHL+)GG*<_YARX@R&fxE z$B=Rg^?>tKVUj@sur(ApnCwEKy04b_g6CEbjJ=fErVrKJxu5^xKoRAp9Gw;gYS_6H z3vgu?-4=~Pr^&+ll7#z6ml?fcvCt>cVcGn1E?+0ji5>&htRrSE zjCb(4?*eV5Q>ax2s2q5~*n2y_Wr~4Nzu8@!y9k|j+PdIHi9Ix*6bN(ulIhPPI*%o? zdnKIXV)~q`a%RUG<>82$z(~8a<-Nj{76oWPv37gKMxcOpb?$<61?J*~IcvYkI4m)E zpo7ICh)YYpjzpMv8^q*Bl{6f2_ zz|1Yi@)L*RXEttmGBvn|N$zs4x4;opAeE59qJe(eHWJt;N0>Ss))`Id;KpL{Kev?6 z9KXGWO7AZYLLHd^0XEMhyJK?{YkIMDYhqb3S z$?QuF;z|tYzL0;x+e8{Pp!iwEpioY|3I zkG>bQ5xv32AKQ&iZz(P&YrR3Y2b5ZO5Gc9Ie%gzqw$l7I6yvY|9tr+yE|8C(Yq9M+ zG=lwa&HDevk)`E{1Q9;55)k`AT~u%C;UE0hL>k0X>>XGc3GIIv8uG9T53*Tc&odi6 zo(+E)@uZvYeYfi|t@_dvhHnv%8J1K}uN6Wzgg!E~SplrVJT!AK(IQwix9;ef>e z^Wq<>rj`vu1gaooRDs`1Abbm>DYGz*xsEzWv()(fnmnV(hd+)UPA^`?;!UAnBz03_ z+ZS7d&^fd!s_z={2^mRHj*iSVWP!daP4M-Pb}_M6*xls!cRu`0hyT_t7O^le zv$b=wur>QzCY6#XEx#dvF#46n;c(Fr5}c^CK0g}q7%>GQEk=_w z$`E@E4rx0A8b>Pv7~daW)x~u`k&LqXY>>yzmzn!K3txQ&!1ZQa3{akyXD|~Mct&-#9V&UmHcPE^32&kAFEI0Szs{Z&LRHi-QOD(XmTA2q z;hCQa6YealUYD_j{BokLtn@N$Rp;KXn~hK%XY@{+oAdtz`>F_RwZd!bbGthZJ4!#uT>)WEP$5u#S6&M$r;l8ZH# zlh9dRN!^geIsSR^N>w#*;bb2EVz@-ltzIXD2U7>GoH)qQ z<-N&D}P|j6$WG2AnCk*_7mpkQEBHA-Aee`u(LBhvr>@E zgc1JZhMCr<&&RFpK7GHhPjdgPpRqZ8TGcn$x?lO+Fy{w*0&*1gQ7aGA^=1xXG87an=2od|5LlKD zklIE%T~@ems$zvls>_a;8-HZURVv)-OjsZ?VG>N3W(|l*ry6-s!#p+a(#VB!Sd6J+ zE-uLh?aA6|!qGpivtD7DP8|h`l-aJUE;JAEGE{8!ESa>iWIGL-xo-O3*U`H$-1Ksd z*BfID=hIg1s)E{Z+t`=|rmD(zj=E*StTX`k<*X}b+B3S%41|P{MfL(i&>t+i@I$DYk(;DYTI*4T<+>no7;Cw~ znbjqQfd2fvPi=J0M+~~yc=#Mka4GG83%(mpIwf4l6ty z`!a)@W4u8nwu3CplHPJZ)TZAn=j6UnD$7ms27NSq6P;fc@*x|t_)2g3TFitl*0x6# zXC|-O>4m*;DP)p`12<>Kq~zkH&%OdS%on4G;NJEh*DKfx}5iCzZ? zQF#3zRP}j=R;@gh>?4+0I0J=-erXavH6G-arp=61yb<1j9szjVQHCc;;3beJ==Gam zQX}mgzdbwW-KAAf8E^IK7oDsmz(VwvVGwOJ^xWXhHGIO2?;#o@zK6c>{2qx#h$CR7 zYaPAg^a~CKI!t-3(4V3yY%;Z&Qnbx!pxptxdxnw*Mx}kC)*{QM`(BK5+e9GSCD?ik zIoEyOz43cR-0@ZO)q7L17r#dxLdLW*jS+Kx(ICjX#JBDE1e2)R^8^GB`O0?pl5)Q4 zPTq5xp3urCfa1$KPJwvu4IQh+|LMpkW_ST_A}@zjeeq|u>leWyTM#KZ2LXMe+#bPg z_xl6?ckr{in&{Df$HspN$bXBEf8)py#lPaCk(H6vQiUqQmw*?e`;DQfLPZ%`zZAS) zsw`8fcB1T=J9*GJUXy@Fq=5#?54&r0Y@p?t_==e{9 zUFK?LYG~rt!K<=%J`P?XpJGGWOCGa<;jyXPnHTvlZHu9?-y2#1^YshX(G4DWcO_EU z=1z=%1Pg@B{R-$TuV{O{5FWo6$`K)?>8P%@sZ@nfC;SJox{%Zr+#bLp8_x=lJhR}^ z>eRN*S1IZrp#FZy0TQQIP~Q=D1MGh(?EL2;3pzQOI6D7lfK|~}M^eQ24IbZbARlGeThc+t`C@HzS&FXwy9woo@2>p#=KRW;=mFf*FZ1g@lww zV%_A9%$dpW;uv0pO(XkaDvuZghU&ED%U1_AW+uxP5j4AwL}h8Oih@5*3nvUwo-qbg zx{Oe_g`U~WO_`Y6N>e(D%xadbQw+#34OFffg_cagz^B9yNm%sdheF=uUd4x#A}jYG zVf!jhrn5@AA)ajE|8*LQ^yqOwT zAq_bN3RX~eX;QT~uQNmS=tw@zpsu>qCNMph7O71_BOd#jsqqP2u`;#x6}P5SVX}BR zoJT%^srA#EfUizkueAM5z@5K3Q#ukB*qjTB*j$F(K|x!0ObAqC4a5ehL2K&=>|3jQ zm-0iZf>l8&tLEGf9+IdK=kB6>LC;rr$oTylT#~Z3c4!AzQCCx-z0X4x8Bw|h$wqH- zO*gcE!3g`w#~KuCzn3taE?`^|JrPV9SFPaQ&6H>@jlV>@3c(uchT?R|0Sv0SMmZeE z8xYRsHddy~nxa9tE|{)JUK(V6+6eE& z0Y^iJYz;a`E=Xkx>Yu<|K-*Yj6tpU1^nKgyz zNhV)l?_L0Hy)5c3GU_12Ab3)$6?)n(vP&3j;1GwHfd0>!o&d;X>&Wj6rS|*rZ<&g+ ziM8oplFsluz5feH+z)mud|+T;!eDZ)V6LuUaAIIJ$%}gjg_FgL@!n!!ny`8Ah0Y(* zLz@SMi+e~u=yf`RlBT}7&88R%4)(qlijEc9rgBuoLH72Ra#$jwN~U@pdTNH6M8rWX zk$^v?Ffc&`BJZ7${>(poBsC}{Nv~pHVqm6Y2>2(2Bm`sxfDRe{08NyEvHpifaTFNr zx&AJ=n0^O@f72++&W_(3_&0U>U9OYI`YzXr#fN|n6B(j5H$4VMMLsQCRsNJj)=ILp z_SX54%-U8tq4XB_s+FW>DZBpk`Lon46&3xrIlk-TWV`n^yV>;n%iAAxe@SZzjHG@B zI%5B-XmAYp1Xe-=C3owmY3LR;rR7`KNDMN_^_$7JE zmcldewWWQdnzTis5PBw%R2JPvH41v(hKZdSOwwtDDJw2NeQqjyCvg&{p*u0f>Whj} zvd7p3yOd@sVJf?H@U;d{6&8=Baa--uQv9kvmUD}-v{SPYrSzAy0`_3EMT!Fq89ji* z)Nio)K*Q+bIs`FDfmc;6B#bay5rW>950Uiw>q;1&^Q{FTY+_{>7QrmUZ?0DRP6_%s zW9rQ^a~SZlpU%@Ybn|IO;bpuj6B}YvG6zHv5Ia1y81jTC$bNZJ2^MyoQou z2*T`xv%gyr`l0ls-I4nNQ0if%G-7rbmoYkc<$lfjO}!VCYOf=@fhKVlsZo|V4@%`^ zW)3Tpva8~70(MU`%obY8Ry(GV8QO08Pqa4AF!*ibG>K@7SD$M=sO`q1TfFY;HI6du z_T1}evbMfR#+-|8F`3iOh~B0nriQZ$Ohdbgqgy=aT1tO7EnnvUiKe0mQ_z?!KGhc`? zK>QjOZ#iImN^f{M4*!ciDol6yQm#I)<8g?RuOLSuPo<}T*D1gro6lG9{x>PtqhU^w zi-=#|+OPqa=}>?i0t$mrkK!FwF_rKrPGh+e2ztpchTL^p2{!HcA!Z(O8o{rDC_ayX zny<1vqHP+FvIyHyileI%`6S~xD$f?UkK~1p{QM{LkA_OG{v#FRi>f)lzcZ*0JDEw^ zH-kccYZRJ)YLx$~ZvS86URBp=K@5c#n>vA51PA-U|i-4;sf}58YaLU%+&oL0Dt(th6ZKAHS}h0X{*-hnzQpfE^n&` z+#VMmRc8N)1nF6@pZ5Kyz_3kychT&OJk(Vo$$oAihb`0uJ<+E+W|YHZ_$nzTD&_oh~&{o@o*pYf9RDj7rN z^9e8GCAE%;#Hw=yxyT&TwX)3^vqqXQ>D+XJt;;9uy$t-r#3w*Vt_8NXeek!7QI@tm zW~7$>=HLh&VRE65YTJhMB=5|{YRS7k3}&_7m(VYfwI*4+fXvy@j!8QP3F#bKOGZUz zo1T_!Tl+Fw7Mg})%bZdJ8;n@W#{k7USD7@yC_^Z;Aq3O~^EKR+Chf{k2%CKyq$ zk{Y~5u?#U3>nWHAdJPm}l;&DRd1DH_HnVVx0TOUS25)8|u>N9W&n{Yb%sVC-yO$>R z=Ze$UkRB~r%Uu<2i7O|DY;LXyLOolpfS%Uzht9!p=(!8g!9(CKs`DJ5GD&L)MLJx{ zK~_brVa~~Nj*tZ=HI?_!H>wKve4>ctn?vLGnnEzy5vrWTBCMI}OKmmdUqkVt)$43- z-Z|}+hG1qYC=4_C`1)3J^H_tMw{Td48AWYG0pJ;=SK6C@-iQyI-owd%cxH8I#CD;y zBc|Dlm>TwpP-WOIx$+L$-u3elH;LMgbsW#Smsqm)5}KScW|xvXM{^K1pHP!JgXFkv zXNJ;91|H2iq9G0EmeoQx+0Al^RTjGS-w$9%cNgozpr5)$s(shFG-V9Y(#+GYMEA8D z2EWbB!(1QF^yrezoncTrY)#KQtmvROx>}HRYet8H8Wx>;gBu zT1BJ65%3FZ(RT@ZH%5&CQ_O^a9>*Kf3k^Z`Ze8|RIPS7=W~#->BtbizCW5qmDUj-8 z4CK59Fv$BM z1j!vxg!O8FY|cn`1$AU_apIjDo}rF_GMrPxl@Nq(47iH-V=aeFh+$+IJ%hM~km8T=sMYk$2WR zV^Mj)l*ueJsA&RGGLH&oQLRgUY(B^E@~BujUfrN)lSry(y>f3V+6v?F7?bGqV--f- zD*~F2)F;pGRPM5`glhp?=E*nkr68f*(L>ZeTPmkg);@>V42?7*%lhm~f|3Y@oP#;K zRmWRf!Gg~y{R*r@-$w>hZ9Yz-69o|^D}$@mDpm1NJM?nIm8cPz$g8}%Ga)Q?j!l;+ zarY)Q{!IsGa5y!uhdSKg>Jai&HG)uB2>~~j`i+%Y<`G@kN9!64=GaoU*TVK-oPCB_ z_cElTXyb#vB6(e0Ed~T#mSO4X|D)`kq9l#7tHIEh}sD zKWDU{nF#{gm3{KJ4l6I%=uzy%8AV z@cuNyDY~b6@u3>8Kg$ereOS2G4{WemM+76mjIcqAbW*#4QDbmjR<9J}CH|4HOQIKQ z%g`F@bKOXS=u*4SSq{;zWcqIzXhgqbk6u-N1~)G5t1NHqa{xD4V%mXo}e z?eEq#_pD>jE3|;lNq%12wzfzgR?j3&w^1IgOAvG!2Cg4I@dFBJMVy?0v7k4M9hrak zx`_<&x=6yuq57DUg2Be>z2FPoc7i26Y<^}%85?P1VA?M9UWln~ zImor%cyRmqgi>^$DRt;S$xfN~@=atByyM76uZ%g4Eie|%J^jp=N561Uy$tu0 z8X$L6@f;{cK+eU$zX9)E5jdhR)9D^W?!Ql!|88;N zx3ZEo`Nv^lS#`q^SsCNYI%8U!A|HLASS2W<#Jp1v(Oi;6j;_CjfR+}t%PLX2Gmgx; zF&OO{op0$@dz2mDOCKkD-hU$M^&qh4_2_G_@HM-!lYF{bifin|$z-)|K-F`eYb?uoc(|tHp)mzRx z%~;W#p6RE__hl_67RWbCD@;6E49AcAGlBKF2$QcgRNFRJ2L}p%UnHJE4;^-7r1ipP zCMQ{OJA7IriuWUV-r8t-+9`_>63s*eJldk=%_NJHi>(}|%zLiA=p=F(beQVj>66(r z3NtMZy~)C(t%W&@45QS0e6(@!yJHk?w1kkVU+WO1ru3HPj%Ay^LewR&-t$Y)FZox{ z1FO4jmLx=Kbl$OLa|z|gG-f9L)#9LJO3E@STHRxUl50Bn{z2L2^N9#!H(QPCB&6%8 z+M&>=2vbR9Bx6*IDgs?Dr|0#{A>`ndkfdx18S9g5jbnd`yUOX!6g}ii)yBPg^eSN7 z>nl)3ms!fYnTF0h>)Eb4oYv1d;xd|5gC0!JAnI#2Ub93Cn)_MC#AnV#=8HD8mllG( zLG}O-h~o{sb4W?Sc?&{-gXJ zcYdbTBe!(#h`Q|$*)e2(**5c9`olKmRjm%eg$RFuO{j|^s4i@^i$Q>507f5DwOqSA zm@)wDf2vw_eyO=p>^;QJJ7C`F}sUXg^>{XI@afPrw!u@crUTSFg;_7~D1983g zfdFR5H?Xn*FSEd~g!))H_~^Ym9F1TDz;gCGZ%mm(G4_^f>sZbUk!bCtvw$zyYVNGJ z`%B~Oc5h*?rOD>*boRXI{<#1Ep}gMEuyl%>vefLJi43cZjMVtmXcE(`9ZCgv6O=Nk zp=lCse^^dw3k9q)Bo5bPOIrZB=$7Z&xX2t6j@H!Q<0iqUC!7>l{WHHm-6Pr*^dW*- zs5?)TR)gSC;aFKa<7{RWSDFzha{|5W)q*UL{6x3jn#io=U-GzXU4cDT9 z+sq_I1U=e+Oql$ViEK*sC88y_ z&{4OM^B$!~Lszf7Rr-k11$UduJc)jnE2<4-?j8YVLs0G>rjzI@rlZd zF6g5YqK!dX@>UrnbI$3wve(ys2eGbo(YO5K5C3>)_!%LQXVA6`0)vRYACfCV5=C_f zMXv zq@6mN$WdMPp(2(#B-d4;u}DwkO1+yEs2JsRvreq_y~$U_prT_hJ0Ke zAV70Ao^-xPMc}SWdu)MD_(EZ*hUBv02Csa;b7|y_H5!H=eej&HYrmUqTL;_Lb`x*X zuJu;YH^x93@ydL_J4b?huzs{E49GJzI$NFCsC~>5-E@9PJ?W9!pqJ?T;hXTN=@p}V z%V~4}veolVZN;WO*L9jQ15)Rh05S9D7{(V>m8to_HTu*IPA^9%+p~+P3&YEXvY~r^ zdK`MpMk|mF85AN>j?RuXq_VERsNA&>VrjWnY!z zqp5{oC7~m$1S1NfAmaZ#h{YLcv~|iBjF%RKBj(1^iqhz&FWlfgi10))Vu_*U7d?k<Zaz|9RI?WxxljEJKWjCJ|sMAY-Kg zj?y=+`a?*XeBE^$w-Z;|MXEd=nWmOp(RIW+`-15%edr`BdkxnKjTl7=zvxz*NE#5IQ>JUKo9G02LGF<42{GgMe;MAR1VjhA{aO^Ge z8g{wn6F%SHbH{s++*oJD6&YOFbC~WpxpEVZ9R)z&a*v$PX}DBNq+aHn%-nN~>X@_{ z*6PvsVEdxA9r+;b9HG#3=^h?PP_K4VnWk6Lnx%^3tW<;^j7m^mtff)MTX<}?m^k4> zasTTR=2L`wF*Y@22bnyK=0`kV5T5romPfHCTyE|;&-j4~k2}+JrwV!Fqu(;QG8sjG2D1ug=uu~TF^}w-u~8e$yFeG?DYXwD0rEOX-?)E zBA@@aaO(h)HhL<{+C*bLhEA}$33Q|KMcQW>^o+F|$AP!E0if$t>DWTd_7JD+fdwr* z++lSOtgV6YYn+j}Df7{&ER+L&b#hL=!%w?2dIV%^Y7X3qTCi4*zOehRx7pPFlyVQI zecvCDt(iI83C6PzS(^ID7LMNOJ7BHV5Im0j6O(9HAPzX->C&E~t(L;rjV^8v{MP9g zcdih}S2}=i_D~xpN+I2Q#xTZU+40+I_(xP(piUnv?UhTR1$~VWcmU1&I=P(FdaP$1 z1JhGM#-za&0ssS7WJ!=y%e@zJ_x?ht=l5rv!SAvVE+h!Mzb25&H2k6`q#LYo4 z3ULYS<{Msxa^kC#f@Dw?9QlMHa$5q0rKOB-M`GOUMMifDgg( zG#RI@IH#{c3Nv$2R^zRe7SzPZ+n^o+4A>w6(G^183wTz+27(hf{?jN-3d(roZdn3Qd^uxElq`lpfXm)f?Tp-8H^A-dpKTv!Pf|lDGye}N`nT4 z2DGqcz8Nh_weh|_O1v*fF7rHZ(=&!cDq(Mg3EV*^fxE7n926E6v`8{&;Y5JE`OjDp z#9@C9lBu~MOy{VA0S1(id0g1Exr2H1bB~f352#_j(uNPw45t!vI_WGmQdp{F(bS0} z#o|0%v0}hJ;%mjwoo8mk!6p*BwKOAW|0piYkGQ!wOX@`uy~F-t^_EOeLW2V z5z-%JH(yz4Tdh;FLD`_NIdDkVA4CZ#9DcVD!Blb7dfl(!m)mU4!pMrTfEi-ytA74Grp4- z&t;SSGae$rW8WaWe=`z{3SqX`WxCz(Sq{HmZ?7kqnu6I%icoM?w^^g{v7dX&c zhhAN0%VN=(a$fuAiRw}TMMlyggCP9kCW>h}KygZ*#d1`y`OiY} zhIcblw~kpEt$D0=8KwLrqn-+RY2=FS8e$K+8nS*8p=kRvx%Xeuv$M#Owf~JClW+9! z|Nlmhu({KBebK+*r}#T)u=pK~cl;%#wU_}!=P%%oCZ^~=Of7!T2LeQCt=t?jfoQ-=3V#X;%Z}JbNTjhJWBsVR=!aWU;}Er$!xzP z@U!x@*#zJp9tuN6=ui7#)gjE1G9#K$CC<3c&94ACZ`A3Ty!k)c+PR|VmGmG>W(j;Ly5$&svAkc zEa|bz`MQ!ktgbLe$UP!qv16^Y1cLRQ!LYG>|A?TnV`8B{Bf!j zA%gO`!hr!D@3+r4MM?;XU?{kmvK@x2F;G00F{cMEvEGz?IZR*l0WqT{vhh?pn`kxm?ZXE^I zVx@h_iss2^)?undy*O3YXl!WKVV3rByFpd2D$ULujUpeW^VxF|*2c=ENig>6sLFWb zFtnwL616ulQw%tz32F4mKb#7eQ{@>J(~Kku{VQbbm;=xr!BX0jl~}$Fy7cyi6lRP= zcOL5H)>I)>+grnR&6P-Bw<4a#Tf3M$q`6kUh0%fC$lT@k7-Q`|n{Xx9uasFQ_5c&K zBwQVCy)lw|`sC{*De3u&^uG&|IxP*+Y-sK3Y)ib7%gq-Djt)}IZrU7M4l((aH5qI_ z2K79tVQ_~+^;yILRt)6^^hs{=rWoQm`BFX3s_&o!a!pW!g)Wf1raCnzDcZ)=rlOBT z;!vkXwXp$hs){r^xv_w+Di^9 zlxPb_M)qw5;L_7-jZK94Msp{MWT>k-df65!q~)Y$W2#! zUy_Z1SGzOzpaszrh&|JXb$Ufnh{dDI8|ql`sF{GzMUOdAHbWyun?_7$D>ti<_#qO) z2z4m)fjf6t&#s`Aq*2QZ6Zp7%`I~j8eZo@ERAMbi{mIxcqia$Myui`|LeFQWZ6YOd ztcGbp7kSK&x}N=4o&3!($6G@u8+_u1Yzh2=bA)+8v0gW|?8ldQMGkv-@|g6JvQgga zp&b0buI7(A+y__4Mw~xhW{Tql3trmBe#fJ-Co=>Z%VCq2u4Z8T>DY~FatOo_3CnaO-OKuZatdjsN)&=&jL+#1}tLf}}s8N1*Z4>{;q4rPvh_Mm>KWi0=Ri;(3 zl~KN=krLuCH6;9zDA1blUjmeZqDdIPq3<_P2XQx@}D$2&Fi9N2e#dueV&UueaYiZSRhM_kP0dI(wn=qqJ(w2XA<# zhwt)s;SUg~ng~zn=SaE|sr79^pv50b(gncRkpS?19h`kY;OV7T;@dk1=hoaE61v_{ zfN%=@y3?oFlqLir+ja6!kH}Y{QC@YZ(xMzkyL6eVnap(PAh8^FT47SE<{%?bN})B5 z#sumxbuLWPNt}%6m!jr9zDN|eRH3zKP-Yzy%`KgGqhn7YoZKzZs$fd|L9;sCk*I4L zAv_8g0#t`WBe!o(54-=AA1$&dFK+6Ou%hlJ&_rWqxiZsQR-z^*K<0*8$1W8edQR}` zE7Bp@BsW!#o>rZ7H#s=)8m|ed87n6JBiDXq16IYFyqn97BQOt}lG7lWVHynSI7O%O zad|n>6M8?YyH&e%FnM&SWtNb&!6UGVdSB;8z&8i~)V&fZ)(@IY9QnDnx26dGP`@AM z?1eP9v8m>#%NC*2U0s+s+)`CVijCHvi8$92Yb3*Z=><~6+rWvZ&)2Nh4z@(s?04}+ zB-?18ho|$~;&VaBdV9`Ll)6K0nWlLvMM;sgK-w(BW}L_Se(XSIGNKrJ!-LCK~bZ(tNjf9THyL;zg^}yN}z>Wpz9AO1y@xP>>*`ui~Vv;%Aw5UB|1c2oJRmU$cv}Tct1@u zx(tA7mJ|&fq}dv*3MW{CqlaTLV~Ia4;(=n7tMyzHz&eMW$ii5D2}W-gPEA{EI~`uF zO-XH@|GhS6Q(AIpSJ2lW6dk0}TMOK}-Ouq)Daco)e%HQ(^E%VB6=|f9ouJo>hfR!M zzsb5BE#wgfUqbqtV#&M9DF_)2zXbx5l%m#nmhp=@DkLP_!_?xLy3sh>-dC|85VBga5t62YN{W%my)9t_Dm9VEXurc;S~|P2TYn zG-@~E{L?mIroZ+xh(Y+~vcP#JSNxLbj#ebWt27tI9(@6C-K%Z1HK4qYPNu7GJf62{ z5f3wK!t3i=_ai1S=6Y^#b931Ic!eL6Ug4Gx7D3#Scr!cb6p0XzI4d#fk%zQLpbdVa zLu1km)mAUbE^-V&wO!=3QO0Atm!YXbKDn%s^1#!s{)-6ucWYf_+PYvVK6o0D%c02l zwKDgWpP^lB3ht+FZkiv%iqT z`fpCiqXKSIwf{;CGyU8>^T6zd22Rjb4Wcy^ z`{mB*zh`JVP0V))zDH%|w;KPSbu(cXOfdS5K#)`ZuoHq)uQ(WH<2ebaL(KC`$cdv*N{?UiJsN8@Pcl| zqhNl)8fso}>t8ShVOMB#&P#>NTMt$p$}EWtFVS$f?vLHW%oEj~R&24bhKTDH4+xYe z>5_hjSXSG+Cm3>WpV&P65ISs?#+Q?=Yb-mbMbw!kE!t%ghFaw1&%rCkhqq8eE|6{F z2W@;&2bUZ&Wm)fO=!vhJxVf!2WS*F*+HSWW;1>^x18^Pg3{jU2t9?f5lK%J<{8Dyw zR<1q7Tg#w~yW7%XW2rQ_Q_RHn@OcdL{}Zr5-PnDHTy22t<+o!X#z`-oxr!UwLfC*; ziSd`KJRVuL6g!FV&u&UoEpWVkfiDXTzX4gppYz)6#7-ZW?9oZ{kqQO56$!9Gr6VNc z3Cpf^Oa~=oWx_hJL4)3v)74yi85izLww^uR`Gp=5RoaW%2Ni>6S!^+4-^~EqgrFWj zOy9Mo@8Jj6Hhiity$Y*|s#KlBxuHOk(8*SAxHG#6-$UwNzT&0PYPK1i=*i`<6x-EnkR5f1i2J;vEetrOv1k|HF!U!>_ z?rt1m!I`;yo)d;BRL_tq6yCmNh`zeRak!>A=+3TY$hkL|ieB^r%HNUlU9trj=C5c< zSU!;^-Js4yk-uY8ud;dtsuDYs$jj@?Ie!)qlL?9@B`YqAJo^-Vs`tH}$}wwRmbBV% z&sAM3{5(7=PL~sgv@e?I*U1>W*Xp+Je=p!I;65$h_P)h5q&f+lAY9`z)99uZ6sY`m zQJVNdLenYSDMWnLFD#1mDc}`v{h@%7$DEuqvnsAo!prArb;VxSenAiMF4RgeVuo9S z8%8YD^X-}A*b>3Dmf8g)kd1j7uW6;cradH-T@1&X9QGFP0XNf~Z9y5aE= zvF{c|LVV*6;s{}wqkgT>@xd!IK234(DR=`trQg;%0EcK_)i(2`I9;xRh%J?xJLw9E z?=X|L61-#fUUcmb-+^R=07bafF?8;+4l@U*-t?6b)b=MJS`WrmW4vGg7C6`|EfQY& zcJlrBzQg8!1rGjOk{AEy@|B(J>xdAGcCcZ(gB-Y!+B<-ApQy7)K$2 zgw4=AbJB*R>43{|b9J)zbb!xQXjs79^FudjztMBlzRy1b!}MLR+mA9^&94L zC6cI%NTJ;>+H0&jw(-V23yf~(K^rArPtlN1OHLz0n7EoK6EgCg1Cct;Z_uekst?I@ zqRH@~;?Bh-W4DNF~(kFn?Nd3sFW!jp|p)v$u=jI5(?! z@lxwqn@1F}&2QUG+f6jH(qhC*+pX1cQze7+NiN$4#kCIwRpU- z^#OkTF>R+-%sgQtu%(-OF&N^N%G|sg2yZ1_apMh*bdD!!qxmtBZAnA%F{}21`rmmk zfl*|f^Rj}HecDYEwXlvsCVsYXdgrX&ni%CO(p#lb)iu2~HgP0I72_v*p=5oht-0hm zw^r&Z5$X5cib}>Z!R2P@N=}XSJ?hNADxp!LvzU0%TG16|yiWpWUm5m{6=a?}Pi~PG zGzS#DT$A$h#*_B##t@YJ%z@~e1v^2|4~7D{%>KXKL#WIFbBD7D~ zYII-J2EP|Iaa2#-<3;9Z{42%wSv>+im07yAftRKxdpHg{@t%)>?vSR-m`^C%WxZ_3 zo}dk09ES{_8Gp`hKlrWpAVYowPJgDSWBpMvCX z(#e{m+(MDTW*xGUlhFLyOY`fvGhkPTFQR6R`511*>qMF zbb){z>=kOqRRqy5#N`Ev2BeLZMC_Doh^q^@W^Pr-e;t5Ju?R{3S9|P!_UXbEkZ|wR zX7|&k3y!xG+5Wx$iIp0H8`59*xrnB zqU?bVWuC>`6)Xe5!H!COx#<`&SP{AWHBs3JOQ6iLu`5=hw00D^KALR;^b6S22uBUC zVGM%}uwFFUVIh)tT+i`hHGW3x)q_`g{b|V>e%?qyZ-|2}RHG{i=YheMmG*#{#U!iklyV~IhS8$2CW+nHoi4etXn96qr1|h<8-Mdt z_Xy$isC0rZR*q;uNp#e(U06k9iTJUFWn?d>U5p`-N%he7H0U`s(~iC1U}vOada-Y|q*)p+Eb@~W zZ@K;mmb;XGhFZ}`)ESV&?|5F0K%WX8rw?>{-S$kvViy}aleAdO6!X-vE~7k3%hHN` z$@&D2CZ6;J@*OhoIHG01g&>c@+y1{1@LWGK%Q3!fXSMMEp-8u>e3E5k$>7v%>smq*c}B8U{eRuQbH0aC71phBTiwjz$9cVQI3 z94K(v{b)e{yKlAU86eoHqFG#Xcy=baYT+x4|Bl`KHU*Oyo-TJXnYHoD(|70B&L7jy z_v6*kAFsFCAlYqeAc(fY^D&b0Q+g@B+c5y98Wun{MU4O;P=GkXivc|ZCm;46kw%XZ zhBN?8D-xhxhM1Ih+w6cL+0~5~GBZb0=^(x`)n$Z+Zk%zFMR5+DE?lm(WIQ;X8(*0MDV#VhPPtB9MYFw)@+Pn_>+Hei9qCYL zD9Wh>D@9+BBl>NHT6>vQV+&`kFe?nNL^t%Ox0aAcLgriJ^x69<9ok<6;kbh{ZCYm8 zLgEZ^lNmbmu}oUYz|pNnMB}h^@A@Y6KTl25Zbucmvr{c~Bt=op`Khs$BH76o$Bf+7 z=_d@K=pQ=YD?RX^2n^6+5V`9VgTfCPY{J^YQ4uTM=%X}=wnxE1IJS^SLWzD2j1v9o zFNNVQ&XH&@zUo-SL(JV{6EtYFg$A$Vj+zzr@+agPiO>jj*48*oI3&{zxlIn^ekO>j z74{0W6~@_rv~D&>xCMe^z**BGI<+8mQ000XZE(q(cevXHB?YJwoV-I9f){?JX!i{EPmLU)B2u{g0#=$<>(x}f9PNn z17%$utFL@GCXldI;{7FimV|v#h(99pN=-_7gDq&CCGyiLKmN7I@XU2l%76VwbNm5t zoza;oh)jHmgMxn^M~QQz60?c7QY&u#5<2jXk;-$gFuSIBo; zeAd6xB&!L>7$}BzI9*qcXZn+)Xs<@3BU&+45$yeOj_Ll z>U?^*UJ`6l)^lFa2Uew6R5jPiv(hOhPS6&=;IAycMDUl4qmV(WLsPhc5E&Q5_P;L1 zOCA4l_)_F-f{CNne z5RN~Ojq*$uttuwRF5cS8BP1-PwvK+90JkV^U+|_?;Hgz0YM-LQ8LR{=f3+Wk8m^h` zSWP7~>lxk>qd>J|XEOxj4xu4T@fUl2u{W>KA<_CTi>8^U6}9YbJ6~J+a%Pi_v9SEP zF~zP>?m(sr_XqvIvf1);cx7bY6wUj0BIIx(dq0HbFyM@< zU&ve~?@C>H;~|p{H^Ov$C{bofy4PW>>!|3=;}U{|kV$titIz27TW=(Q9LUSZ!m0liEw$d65HmFJEmYf5*Gt48B$ zws`=0s^&GcS`eA`UL|@t{j&8ULbw;#BJ)uENAPPL!s-yW!GooN>z1qVpmqi49!r|# zdeXykGvF^ed`+a}nP-P{Bl;D)^-e`&!l8Om2<(Q7S7PfDa>OZ5yR^66CNY;&@o!Dn zXWB(WUZeG#MJH;j4M4+U@dz4cTukG$+$hJ)Nt!5|{~On%+){mzB$vbHU3?7E4h>Ny z@hmO8lUGzI*W+z?jOa6q|Ln8>YmN-Te5H0+dDF4{qp>Ut;1BJ5}l51Ap2@ z1cDee>M>2o@zFlK$J6iuvlt$^mrqaYZlQAs6LVJ47m5H^)w>GLeR3fgL|!=a zeH0+B^%6xvE>!wZr;ad1((HiAF|nHjkX6v<+A!gpJna-RuSPL>E^9d6gSlHMolC$R zY3RsbI?f!i7~_4;5Xag0FkV3#kE}Q3#u3Vp90Mlu68XTR=f#wrv1|f+8mt7gO~LO| zA)0B~)_oFx3Z8Tgajh{;nB_jT;8M*kJ6U5Jaif@HN|BMGU`rhNiFpq&d-N)a4OXq> z<}iY*Bp^nS7K`6v2iDK464-$!2nU|6+14DwimE9~g316Gk|; zH=JVj^MiY3BM();Ba_5Fx<)^kq>fDO7=m74ANzsa|K3#KQ);Xig~}$}B*%V%!`~-h zZ(G6!YHD{NQAzbiCB;5iEg(e*xc?(2KJ-CD#P>x0q7d!}sw!xoQmS#t(Jo_^9A|&K zr2)QLt)cRi<-Z@!VzlPE%f3fU=r>hE@*f2=aYu0*M<;z7L*xH3mPV^+Yho)S_^^ws zv(fw%fCSaRqA(DnsMqMt2)k1+r(8lRUyAiez)2XMw(00Bm-`?->sIZ~^QLKjbbtS; z^PK3F)d-m>TgT3AdX$y!ew@wO`S#T7`w6;>u!J7x{~Az*?E1Mw0ZKuG9{0t4+X+aDIE`)JS#|8%R2pu3M<|Ee+)NHAhw ziM|6lE)pOYP{VkUexT?k2H7VNIv0Fsd6Ib`4vTr?b=MY}T>EZ0L*R*j^&WiB-PoACe52 zfy4Q0@ui;z)ImevUj6L2C+zgH8_2S9*_gOQ{!_lfq|%<<+7wZkE@E-@3$>E7ize*k zCUH)4#frTt=ytJC3<6Dyb+oZ0NV1+83F)VIaEQMaYpg7!<5rtFq{{~Fl0-Ne;s%mU zNh3Q~K7G!BPOI9f6&tA-PNya-PW6;4i)JAn9cIWW!_Nhmx6O<8nY$Qs+=Rqj%us_) zUQOPkk@Et_+1%)B5A13zYOIoK%;7{wZKUvRt4w9;*;Q7?6v65HPJ)@rFhRvzFcame zJ>1*8;xuSe99Zz*!8-q zIZojmIUfLDDOJjked^#lOxta@o?HOdC=rYuO!GUB4|@8ud0}I;;_n$;lXO8_ypF$< zx@Es>n$Ds1yzE>yYIo@o-JXT2R;iPCmwUu!`95Zhv*+&#C%wevVRoVwOfez5sdX&H zhnMtx`a*bp#^bn~lFDJRT+4Y+Gili3zdY(tB;F*0x9D+z@Z+0dWZ%9o9RE_Izxx$y zf_^!M4>+Z^XCU6}^alPk@fqX^ZqRnB%~Pvp)d^MV20B-*h$ySIIWPDLfT+JP$AHn3 z7tA|`gF@4jzbwH`d8L2jOFT4wn-j`n6IjnJhKNCXt}~b)^I9KJ_#7y+N&fwjiYSm| zkwK(Wa{IGJFS~6D=@BQp4B-{DmT0mXQJPi5Cc13ZEnCe4{dzv8>{fMRpS+!n)JM?l z7mj7?vSr2fqfKoF9Bn&TR0=Wj=t9uDA@pdtbMo(S*(4!%4k?l8%RzYB*=yM z>+DZb4pEJ;K3JqI$O6~!G41>VAe*L?HOm>S?a~Dj*S~}|Z3m@sHNaa{vHT>6IS$B3 zeE9rjq`qgya2=%z50yzaSpH$Dqye!MY#%#%i1^3>?(Dfc)0JHV4|LIglEJ=suS811 zbwP8RZmDTteNyYRo;2;BRCIq&2YyL69u=$Gitkry+5!|+ZQlRwCL_kr2%Woc8VV8o z|4r`_cl^G_=%1^UlBMjT9EQ(2Y=;YKl0Ej=Fty>Lw36If7Es`jkpKV{ z7y&Qj79#eKsd`_8P&_$OjzMzu3P=$r1naO0JZt2j+jbLGxnOaLhQ^>wx5Gyg5!ypU z{+hJpKEoC}r6Ns9V-jcDJnYttL)geGyXNLT!Y0e)k~v2$_PR`?%0g9vLPdfpiEV|1 zvuwRn%TpHro1CrO;FV8>xp{eNH147d_Yn8F%-L~sqmS^hm+9N0(_mC(DI6k34e*KBx z=>)KgM{y5{Yu8w=OvBBQERCrWcBj^&y6mu;wdS54g5=$+uz+HQm}uz1rs}d5^K3c! zuG|=(B=DGIi$ppmzAzjWFF3yb$#A+S`iq)Ba#$L&*-8wVDHYb|R%s-r4hdD!QI%t3 zarVM}%$SO4C7i{Bv(RG`-wiiREA{>Q1E%k4AFMw!nH<#O?2%hJq+a9m7f09pq8_>R zZMAD0!$^vCR-+u`-*#gpHT?suPeqDVo3AJ%+m>->wt(R(dG{6OD!^?dPJ3|+KMvMB zc9bd}3eBg`q&M?YDWz&LKNO|(8U&m68KZt`B-%9L5z2O`6+b5 zEriwtWq?97asnOI`KJjRJS%y_yMUVQPXughTwzlIwF}12H#{4XPgpMi%uhUgLXh8t z7|)wT3}WMX18jChpg8@`Q*M0?iRia}r@RAM;P+QJWQ^b8y&v#kt|9z*w(G}9SxM?t zY4`pa6UkZ51R2Lx|C6zhn3MuyG@g2!{TNl()j;(d zJ% z{jaMA|9SHGucFw0{9FFvJx1WoEOG{bNI-WBh-=!2Yh<8Nq>@olRZ}TL9WGEnY_r8A zcQ{;(xgdNH>A3loqQ$uh0}2ruTQ=5Y-UWy*FJ^K$9ZgI=j;~{Nf2`C~5(g?^O{!Pz z_5>+oQYH;4q|}Ev*LxD|5e}LuGqadR5~@?MVJL8$NE%~QnumDIowF!c&SY}AlUbAu z`~_=ev46~_JQi!jJhCWRro+FDF(_|QRFRUTz1{%l)vjfb3I>+#IPQO0E3@d<`BNZQ zK8SlLRt%FEyw3PFHp#`leyBQasBBL)3=cDfG67bDagbs`owA~I9+XBOq!u!@@%Ap}@ zZPp^SUfBtt6ABJ#B)N|i| zp?aPvxCC$X_lEKCO$&RleSnd^ty%{jg)h6gEBj$PYDG_6036wh95K4sl9BryetbhXich*D7#ca@HyN4RHj-5JGJ< zDwqS=0HbO@UFs>##;>CD2}}7Gv-}_x;<#;+^Dy5_raqGdAG&T5{bDig_Rl%WVZAI# z4{>^5XOF?3?(_npQbVRG0~@oDC=AZ}Fc@eXl(^6Er8mVWFK5(;WqSRb6%ZSu>o+v5 zkYVVMuE;{RT>S?ag(N-N5I?*O**eKq8Y05AzGMIVB75joK|#bEZli7*S8$`pMmI;< z)S0+PXRyYumunix9Zz`BRkVL!e|O(>kqSbWb(S)Ks-Ad*{~>fY7(9-zjNtaC7mC4(y&|_X$XSw(tf-hI}(jKM_iP~60R_SBV+}gi( zD;~^NIW)%b9Lrn2NEr<5A;(ZC5s#lrxm@dK8`Qex&}*KF^8v6?dX`vl1B81w5OT(` zaS0){B3;im8xMJ*N&;IhnNccgRx6s^SMP%Gm1tIxleK$CIs+(<6Z<~43Ehl|EFzn1 zB%6gDil~|=fh%d>Av<;yJU1;FPo(!WbG8slChN4Mka%EsJp3=Y^yjVaDeS63-IxOR z5-YSv;oA)3?-n=^#ozDc>c}%8#4_?wt!>ibWAm#lY6#(5oZ z*mo7u@nzU!HuqF^J>Ebjz%J7O(YKr8H-=Y{h!)*PkGzr>YYzH<`dwCxaDm-7+46`d z<055C%K$O{uvS=Yk)AMC$@=;W1;)wg^G|6o>z4907WxY|Vuat7x{EBso>;dUUX0Cs zjoB+FR*8|*aC6Svr;&)y&)p+?ZG2yHgunkb^-4D1` zN}phd&|3-|;-)z?W0H!nu%#y;N8o>)xM72~^Io+8);`ZE*i5;Ewm&1CBy^Yo)2WiW z`Cfh*pJ7gCi*ek7?gUearaoioqWWXzLGCYMiQk20L?I?aaul;AaB(UG;cyJadThws zy7ns20YD%SRyBpB z3mxKkFgs^WWE;vJU8t?%99hx$LB?G(*y z9h?lEo&K3C`7fp7A4pGDwpK)vNAaPfqZ@c6qD;?Uh-}XjvDJW(H&;iq05yNK_Lpwq zPf<@PF?l8aTW;%fE2;QLjafSP4e=xCY;y}#Fr`6%&2hHfH20q87?18dRq_e7%d_%+ zGVBBox9{*nH4Z`#O#D+UybX(wec_iDvi(*pp46LN;D-8V+Wnr%k5&eHKuZ`mOb_fZ zO_EaK$Xu#>36CnkxVQmNmqA%@Jaw5wP*z2=mcnF94wJ5}sEDbf9*>?98&t45{Z<&8 zo;7`vbn!v|M8+I-T8bGbd5cO&6(fkVTkIy3Nkdq>!uCL!c=QP)0JA$UNfkwKzXus* zDnZ0+R0A5_Nif<}vO^#3>?o@zel@JQL^X`R4E4~s*`KBUcUV$!u>OQ}-|q)U_kt}W zz~&eEfWv3H21DXJIm~B)1~rC;&h#mapab=Rv}LVD_?{ghdK@{z&HO3++&5MX`+LaLT*!9ALHVkOMbqR zZAYa74g*)7ihYrea0`mFa%l<7GPLP;QSM6;*hF!XUBaV^)1T<0r2N9qq$a5@A zEvYWZ81m`XkL!E|6B02iZ)N-ec}>#2r6xJ@eMn7cK+uTv;3llAEDRO0(rt>NqZX5N zC7XrGX}oK?|Np7%Jm9hX{{K%%xb00wHrab;-9#aYWW;TgRQ6tR8)bKAXA{aMD|^dM z$;h6GvNL~|&!@USu8%(d|M&8^jmN`zo^xH-xz2UYd5_ojR3_ZoJU#W2*s?T5!!{eP zo^lRX4$pO*q%66YI% z=|e%EG-EoCDL=g}74LmXkb18&Cf{nAI+>){bJn#FpXar_sLB`Akl7Bm_C1s2dgB?o zDOaVtIGzFnO=uZSQG)#uDKj zzbzKN^K6PaA;{Cm0@DC;Em}fyOGwdj%4`?DN;wtFTZ`8J_?wM_I@|g)dzFr5CU_urZrD~|5r@PU z51R+{yOhToTFrEurcJP%ES7f!Lemrj2d^@SIj}}PubWN#tvYc8;v!LK7!4EsBK95O zE$P?WoV#IhRql*{I!!QQrf3o9G-dyfP6M?y zwZ9F-eEmJRhel1<4)T(;UU9Y>F@;f&f8aZM4WZCueMt~QjUX_-jlmQWGTGBT*2<TmY9P^C3I&Q8rzFIS{R71L9I=pPn96j|}Exf@smKGb{5_Y{g+T%U>ve;VN zY>wkVM4ME8M$zlR{>XO}!V)=D8C*X=sl z!(7Is2&HHaGTU!Mp4y#PY1Z!&>|po-hncxskd<)QphCLu6m~Sy+0!V>X(T4hJ@)lb z(sG{Toe~FTA^UY$`xXKB)AFx$5pyY}u?i?J?9eOUlv?#omBtdEOjR3l$6l|t%9ndY z-|fqzPWy!>nni~6t`C$`tB^D$jH*d;OSP(XG;OQ3EUMDtdgIBQ}dx-v3(dpgh;0e;i*!a-A$lGe{1CyHyv z=PjPq8m%_5_b_8!-KCyON|WT&dylQnwJhAtVw^wkk?8k|G{UIn{v}%3kL~=aJC?%k zpGBS-3Wrarp_Lz@xKzkg`fkbD6UMw+=I@5w#$Fo&#hVs)#t<$5eWecQD{TKUz-T(a z>>N(@79cPXh_y9zwyN@9d0g!Dv>=qP^#c}1^PD2He`(%1BH5(L9^AV?pN*b@?5gYg z_{X9XUGbp{5LJ8ISjBLaX>?&%s#mOSJ3QI24y__wLfTqq>qZMOrsyQMyrvTND87BK zqI+_+O@vpRxH$>gJD9Eb#N!6dg3}2GhBu8X_?q+zg zSrOG*uBOz+Z!x@RZrvC5gZC!G$FFRfjr{W6h#vfmFlWk|n#G08(aE07>{rvVtW!CQ zpQa2uJzDD7?xiR+mc1L0e69q!rZ+km>m|+Yn<|9sT)xYyuT*q{WQmsj5!-~uc* z>{w2byE0ksq*gE8pX-MsxR>c1mNrk=mn(KN(xNt_B8${mv?8d=OsbUgLG~6Uf+zL| zZ)+tJDwcP84PR#y^AlaUrnJ=o8wPVA*9um<9Tt}2DA_cjLmVgZo{xFSf~WkJ*%$Ox zCZi2}pTMqX)H>`!w;vAW=J&sQ_;&O2E+{yVfbeqgFt9Gt1lIq5=q!%L_J6&QPDPOh zJX6)Ak|lsopz7=Bv>1^HQ4wDEGg9b&V;J18BW5Wn6Q^RQYvf*gJ=-t_p>;FtF z!>%V>CDTHOkf8Kcd{W%1SJnR4hPq>~!}EntoxRW_Z}RywU*YPKeue%GUER}VzRCX4 zR%2ky^fH1xZ@Px%xg(Eo&9Lc>*KQw*Rnu=8UHD4#h1D%L<2H6qX^o!AjSrzAu;>NL zgDTgfh=vk_ZhQFT3ymqd;q;J6JQearvcKwfkT4 zjfM8^P^l>yVtz7tQSxA^%dzUcm?f)<&hu(?r|WV?Lib5HstiP|{4Xa_@>>XTJ2+*P zd%f)eM1`t!MeIF35`-I-y1#$IpeTQ#KnOAu2B%=5JYT!4&9vM?jjQLusb7*{+aOi4dPFj2 zFDiI3a3k150b?p4V&NPbH`5%|&Dn(+tyC{89AXFkM#koI*{pO4e$OvJzkwd(nBf*7YO^H2$eB$>ukThXsCqekkDc2J&``wfxZa!ko6 z-ZZQ?`C)JX@^7XQbN^BbJRNg@;p|_bvsShaW_GqP8y;CZJD967@COVKp!oUbeWrKf z*w}VF_}sRdQ(MpWZr?eE`-B`JBDNz0s_}x~e4^^3($KG0;~z^1XCtWU5+n&91knz-Be5INqeN6PG<8 zJLL28VG|=Le6eOm%sMiaXV8_Qx|QJ0`Wtllv{@J9N{w-nb=(PufUwD!%Ien4^p9L7 z3R;QcO*$PhPPL7BX6(xxYc48R!>fPzspVhA$@fskq9na*Nah}LDY3)0?-7sArg?Ep zCLJPec`c+qj{ix4czK(ae3V)FV4al}TU+;WsOZE}*;Re}p$F~7E??2j4B8*5&=vLt z!f@C(bzMR%&cD!$Z6RoCr_5ihYMi%~9SP-NKd>&~wC?;aMKr#l74N>3!bc@!F+~-1 zex8fdsJ{`X#+2fU{M)VNP~Gkr6`R-Z9jN@p+Ninh)fp3vGiaD|w>HZ+^Ri_r6p!V- z;CWxIZ)_!{@ip6|KG(mS-I~Siz``5l6D&+D^dW~lK1aXecAkp(3!1S!Ux7T5QEq7O z8?|P3ePx&O+=ChIfim1^{9vaJ+wW0%k6~`&ST|ZOT*?{B#v~uW%@mW{mfjo`mC4(= zFo?$+FM-|_utOLxDzl3c8NMi{_|c8u?ZOO`NKyFk8x;PlGq?&?f>@;TiL|EJWN^0G z3m9+JBo0-XevG60@g$v-k{M&DGoOU6!vuHcYZ(>lh6$&WjTEFAiH_{3*r|3i&gBkm zKG2{9V!)r2$#|3dCeP1)z^Wj0Rm!~Ba4-U=k_=QyN*l<~Ar_K%Ta?0dljv0 zP0fBj0SGNU&5KZyBR6L!OgL6dKmf|6J6KWUFc>Ze{0T)vXgkqU8yGkxEMEt*L09Bkbd#)f-9u&AH7bfrWL?Z1tUkAH5GOP;C9~ zT{WsAeH%+?tQ{mqx@H~Q=1z6r7Uz5I@Mn#p6k`o}>MXrNrVn#u9`qlosRUnH?h?>h z>9oZ6eFzx7@hDvO^2TKS<<|*jJrTN|meTwn%Be$X;JxG-%+C{TX&qc3|HKl*WWvX&^pSIiH@Q`34XGBf;`rbFc zrK-CT?7~2qfKiURw(#pI{Bts`}m$2w$nBVMZtQ$%!>JG*MvDeO`{fx zxRgiOsyPRfu}R(_|UL^aqJ|BMjU5}BDC+>a7~0ZtH*XE(^pD+31>EE6D=v| z{viC=IvCs$m(iar>AQy>e@pj;SB#NT?=i#9hqCkqZ^_5yTaf#D*?pQZYJIi`ArxFW zctos=lF*N9#h3irweAei6PciksM{sxk5Sl0eic5PM^CMu6?m$aCKke^Arxe(E$l!d zmX=DdDhL@MQZRdwwh@(~bsAK&E%ueAy4+lyq<+Z^Uukm2_sCCgh{Rw!YPSIEm2P0Y!t=+G=CmS!Hq6HH z=U#p2P1O^*FV8Pbjx!ZZ9@#fW)`#E(Agr5M!gz=@1L8qg1O+082E~Q zuvE`ho(kfJL(aAC7LDQf6d^R9ZcEZa(c3GzUGEBJMm>50s}w#oD(H&10&(}}ev?Tw zp}6oONPiV0SY~k}rHe6V&BQ`l8X*r?lz6(=!+vFlk?$!@jxixSttbs);>F-pI%V}- zuiF+XVy{f&yzo|srKOUyl!rtAv58b1@qs=WhDCcqX~SR1 ze#kZS9ioom_3Gye6dPG+Kj(J9HFAw@@IEs%-OrU?EOP}XZg`r>T=iMZV(E2?=Zj8l zRZi(g)U85x=e@=*>nXpw9*@Ax-BuWC<;XSBO0c2QyY6ta?4!=LmAxycd&KVT)gVb= z+QkbPYefE+9&vgShKN4NltchOcEn=|vx3Ey&Wa)oYO=-O*a%&0rm)eL^T-y5o+-F`Z2}jp&YeS1s&`pet&TBJbZATE+3xp4 ztgZf*N36u!WVphrolEag>1aamrRCGCYqE}#jEXdb(wNf`8Fnuys)z{_8Py{3&>d}7 zH@joT8T&V^J|?*BKa%_$6i6oIYL00q{CY0z?F-Su48;VCpd!X4@%7=p)S2Qip;rPF z3uIbK7zyh&IWtxMw;qPVb{bPH0gi!g@Q+F8{a4EVkxnK6u&c_sR` z+O7!6f#}-eRn$9V?+>x(Fo__^=8l81EOhS&v#T53=B_Ge!*0$*{P64P(w`!aD##im zY2q75Ug*ozT$FQN^&ji%o!5d?a15aZqvlfkKR(B zy2+;x?CfA|jW>qYe?D<3K|M!;2KdSW(;tznB^jU>{ywl!fO*kh2LZ}g*^^&Xp|@nY zl+_e@jyh2Qb&y|0FQ5nmMR$&el=FdqLIuV+lD~@m{Vl`y#8&gWsH&`*vLaOT7PqP* zl7NCD1giX3)hH+@mE!=+2X+>KJMphN|J__5?a$BSq{N9n)JX|T*nJZ_Gkb?qMZuL3 z{VMraWjf%Zf7wm{Sv9yk*{SkD;PStxkx0hhQlIwdml7@kuY);Y000tv{5~>#YXHV| zWqGKYCY0O3#Q|KfAw5mwGH}a$fD6s=yBG>ehVO}L=&AFTgV~$?OP2-A%VDO&)&oW& z8KCrud&I9J!}k$zS^vd5wM7DEt=AQ8Bm;nVz~?mU0s)8x?ERZsofzqu`2Jo`f>{T{ zlkB&F3uFkKE7Pw=0Y5W*Xa3CkyLF~#6ItiKw&(z7+76s4>nWlKa4k=rDYA8d8`Xb8 zxpuVNrT|zjaMv!Kf>M(I5vu86_VDaBy4pJsngM6c4rDU8cnT**@h9BBNhgmpwD%zW z4M17s`rG0D7c9efnEGF&--?MpZ86}R0hW44!rn21VgD9>2h+d`;7A%8+nKaqiYfou z`M|2sNGg;AME%D@akfS@xW!;$UL>0qxV)#j&Og}yzA-1G2UzeG$sz*ghNoF)%fEtK z2Nn%Q66yIs#8VQYU=CPW6UmY12XoHQ*#zUjT75{Ij4%lIpEnjPM~CEO0#m0`7wjkJ zpW<}jR)IyikhHJjAlm5(`Pp|9ERBW4l}mteXA5P48wl18LJ}9GLBwCr#UGS}z+|v! z36k6{_XqNS-Waf40g^|n1mgYm9{q=S0k~=4Y|uy)w%VB}WNv6M3Y?4-iTa><77Ce& z^ykU`S87slW#HVE$jV5x|JTaS$Ycqw4xH!^S)I1d|5tTqcVcj=F(me~!CBb9$2enT z;xTYL!3lYgKyBl*fd5F(14e-pa3E1d=4YXPrQ-l|z@hs{PM!7HoYR5)U>-PV8p%W4 zKb!aG5Na?R94v=q|FA!s{g2Q&Fbo_PgM{h3oDBm9$$*Jq_j4ps(erHLZ)bEc3hbPV zMA`fN0rlHe7t8`XKq6UskI!Zy-66p&u)i6SB?>=_^+)eBFc|C`g9Oh7p9wz0QwGcg zyG|gPR8RlRJncvUW`a%ZNTy=gpP68TJD3W##UiQp5oc1*w9JC3U>g>a8W|0u{$7ur zVbKC(!S(?p_UZFKVgGC`0Mo&Hf=K#y{GaHjCnW#aAq2z0+e=9Jg{1!hetNU%#x)GU UgpPtD2z>DYYp}SJr5?)v0beu;=l}o! diff --git a/lib/ArtClientLib-2.6.0/junitlib/junit-4.11.jar b/lib/ArtClientLib-2.6.0/junitlib/junit-4.11.jar deleted file mode 100644 index aaf74448492932e95902b40a70c7a4da5bad4744..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245039 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

^K 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 Zm9-%!eZV646_hI`4?(783XX*6{{TREv-ki2 diff --git a/lib/ArtClientLib-2.6.0/readme.md b/lib/ArtClientLib-2.6.0/readme.md deleted file mode 100644 index cb84317..0000000 --- a/lib/ArtClientLib-2.6.0/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -ArtClientLib -============ -[![Build Status](https://secure.travis-ci.org/rjwut/ArtClientLib.svg)](http://travis-ci.org/rjwut/ArtClientLib) - -**ArtClientLib** is an _unofficial_ Java library for communicating with [Artemis Spaceship Bridge Simulator](http://www.artemis.eochu.com/) servers and clients. - -Documentation for the project is found on the [wiki](https://github.com/rjwut/ArtClientLib/wiki). Please also read the [disclaimer](https://github.com/rjwut/ArtClientLib/wiki/Disclaimer) before using ArtClientLib. - -ArtClientLib does not maintain backwards compatibility when updating for new versions of Artemis. The current release supports version 2.1.1. The list below provides links to the latest release of ArtClientLib to support various previous versions. Keep in mind that current documentation will differ significantly from these past versions. - -* Artemis v2.1: [ArtClientLib v2.4.0](https://github.com/rjwut/ArtClientLib/releases/tag/v2.4.0) -* Artemis v2.0: [ArtClientLib v2.3.0](https://github.com/rjwut/ArtClientLib/releases/tag/v2.3.0) -* Artemis v1.x: [ArtClientLib v1.x](https://github.com/dhleong/ArtClientLib) (by Daniel Leong) - -ArtClientLib was originally developed by Daniel Leong and released on GitHub with permission of the developer of Artemis, Thom Robertson. diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AlertStatus.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AlertStatus.java deleted file mode 100644 index 00a9cbc..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AlertStatus.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.dhleong.acl.enums; - -public enum AlertStatus { - NORMAL, - RED -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AudioCommand.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AudioCommand.java deleted file mode 100644 index 23ebb7c..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AudioCommand.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.dhleong.acl.enums; - -public enum AudioCommand { - PLAY, - DISMISS -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AudioMode.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AudioMode.java deleted file mode 100644 index 95947a9..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/AudioMode.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.dhleong.acl.enums; - -public enum AudioMode { - PLAYING, - INCOMING -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/BaseMessage.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/BaseMessage.java deleted file mode 100644 index bf3b362..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/BaseMessage.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * Messages that can be sent to bases. - * @author rjwut - */ -public enum BaseMessage implements CommsMessage { - STAND_BY_FOR_DOCKING("Stand by for docking."), - PLEASE_REPORT_STATUS("Please report status."), - BUILD_HOMING_MISSILES("Please build type 1 homing ordnance for us."), - BUILD_NUKES("Please build type 4 nuke ordnance for us."), - BUILD_MINES("Please build type 6 mine ordnance for us."), - BUILD_EMPS("Please build type 9 EMP ordnance for us."); - - private String label; - - BaseMessage(String label) { - this.label = label; - } - - @Override - public String toString() { - return label; - } - - @Override - public boolean hasArgument() { - return false; - } - - @Override - public int getId() { - return ordinal(); - } - - @Override - public CommsRecipientType getRecipientType() { - return CommsRecipientType.BASE; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/BeamFrequency.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/BeamFrequency.java deleted file mode 100644 index 9b99a34..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/BeamFrequency.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * The available frequencies to which beams can be tuned. - * @author rjwut - */ -public enum BeamFrequency { - A, B, C, D, E -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CommsMessage.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CommsMessage.java deleted file mode 100644 index 1a41afd..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CommsMessage.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * All messages that can be sent over COMMs implement this interface. - * @author rjwut - */ -public interface CommsMessage { - /** - * Returns the ID of this CommsMessage. IDs are unique per - * CommsRecipientType. - */ - public int getId(); - - /** - * Returns the CommsTargetType that can recieve this CommsMessage. - */ - public CommsRecipientType getRecipientType(); - - /** - * Returns whether or not this message has an argument. - */ - public boolean hasArgument(); -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CommsRecipientType.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CommsRecipientType.java deleted file mode 100644 index 94acd9b..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CommsRecipientType.java +++ /dev/null @@ -1,84 +0,0 @@ -package net.dhleong.acl.enums; - -import net.dhleong.acl.util.BoolState; -import net.dhleong.acl.vesseldata.Vessel; -import net.dhleong.acl.world.ArtemisNpc; -import net.dhleong.acl.world.ArtemisObject; - -/** - * The types of ArtemisObjects to which players can send COMMs messages. - * @author rjwut - */ -public enum CommsRecipientType { - /** - * Other player ships - */ - PLAYER { - @Override - public CommsMessage messageFromId(int id) { - return PlayerMessage.values()[id]; - } - }, - /** - * NCP enemy ships - */ - ENEMY { - @Override - public CommsMessage messageFromId(int id) { - return EnemyMessage.values()[id]; - } - }, - /** - * Bases - */ - BASE { - @Override - public CommsMessage messageFromId(int id) { - return BaseMessage.values()[id]; - } - }, - /** - * Other (civilian NPCs) - */ - OTHER { - @Override - public CommsMessage messageFromId(int id) { - return OtherMessage.fromId(id); - } - }; - - /** - * Returns the CommsRecipientType that corresponds to the given - * ArtemisObject; or null if the object in question cannot receive COMMs - * messages. - */ - public static CommsRecipientType fromObject(ArtemisObject obj) { - ObjectType type = obj.getType(); - - switch (type) { - case PLAYER_SHIP: - return PLAYER; - case BASE: - return BASE; - case NPC_SHIP: - ArtemisNpc npc = (ArtemisNpc) obj; - Vessel vessel = npc.getVessel(); - boolean enemy; - - if (vessel != null) { - enemy = vessel.getFaction().is(FactionAttribute.ENEMY); - } else { - enemy = BoolState.safeValue(npc.isEnemy()); - } - - return enemy ? ENEMY : OTHER; - default: - return null; - } - } - - /** - * Returns the CommsMessage value that corresponds to the given message ID. - */ - public abstract CommsMessage messageFromId(int id); -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ConnectionType.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ConnectionType.java deleted file mode 100644 index e0e1e53..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ConnectionType.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * Represents the type of the machine found at the opposite end of a connection. - * @author rjwut - */ -public enum ConnectionType { - SERVER, CLIENT; - - /** - * Returns the ConnectionType that corresponds to the given int value. - */ - public static final ConnectionType fromInt(int value) { - return value == 1 ? SERVER : (value == 2 ? CLIENT : null); - } - - private int val; - - ConnectionType() { - val = ordinal() + 1; - } - - /** - * Returns the int value for this ConnectionType. - */ - public int toInt() { - return val; - } - - /** - * Returns the opposite ConnectionType to this one: SERVER.opposite() - * returns CLIENT and vice-versa. - */ - public ConnectionType opposite() { - return this == SERVER ? CLIENT : SERVER; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Console.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Console.java deleted file mode 100644 index 42f74b9..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Console.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * The bridge conoles. - * @author rjwut - */ -public enum Console { - MAIN_SCREEN("Main screen"), - HELM("Helm"), - WEAPONS("Weapons"), - ENGINEERING("Engineering"), - SCIENCE("Science"), - COMMUNICATIONS("Communications"), - DATA("Data"), - OBSERVER("Observer"), - CAPTAINS_MAP("Captain's map"), - GAME_MASTER("Game master"); - - private String label; - - Console(String label) { - this.label = label; - } - - @Override - public String toString() { - return label; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ConsoleStatus.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ConsoleStatus.java deleted file mode 100644 index df2b967..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ConsoleStatus.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * Availability status for the various bridge consoles. - * @author rjwut - */ -public enum ConsoleStatus { - AVAILABLE, // you can claim this station - YOURS, // you have already claimed this station - UNAVAILABLE; // you cannot claim this station -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CreatureType.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CreatureType.java deleted file mode 100644 index 628bd95..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/CreatureType.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.dhleong.acl.enums; - -public enum CreatureType { - CLASSIC, - WHALE, - SHARK, - DRAGON, - PIRANHA, - CHARYBDIS, - NSECT, - WRECK -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/DriveType.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/DriveType.java deleted file mode 100644 index df49c08..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/DriveType.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * The two types of ship drives. - * @author rjwut - */ -public enum DriveType { - WARP, JUMP -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/EliteAbility.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/EliteAbility.java deleted file mode 100644 index cf5b4a5..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/EliteAbility.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.dhleong.acl.enums; - -import java.util.HashSet; -import java.util.Set; - -/** - * Elite abilities that enemy ships may have. - * @author rjwut - */ -public enum EliteAbility { - STEALTH, // invisible on long range or tactical views - LOW_VIS, // invisible on helm or weapons views until within 3k - CLOAK, // invisible on all views - HET, // high energy turn - WARP, // warp drive - TELEPORT, // jump drive - TRACTOR, // tractor beam - DRONES, // Torgoth drone launcher - ANTI_MINE, // can shoot mines - ANTI_TORP, // can shoot torpedoes - SHIELD_DRAIN; // can drain your shields - - /** - * Returns a set containing the EliteAbility values that correspond to the - * given bit field value. - */ - public static Set fromValue(int value) { - Set set = new HashSet(); - - for (EliteAbility ability : values()) { - if ((value & ability.bit) != 0) { - set.add(ability); - } - } - - return set; - } - - private int bit; - - EliteAbility() { - bit = 0x01 << ordinal(); - } - - /** - * Given a bit field value, returns true if the bit corresponding to this - * EliteAbility is turned on; false otherwise. - */ - public boolean on(int value) { - return (value & bit) != 0; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/EnemyMessage.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/EnemyMessage.java deleted file mode 100644 index 41c9c45..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/EnemyMessage.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * Messages that can be sent to enemy NPCs. - * @author rjwut - */ -public enum EnemyMessage implements CommsMessage { - WILL_YOU_SURRENDER("Will you surrender?"), - TAUNT_1("[Taunt #1]"), - TAUNT_2("[Taunt #2]"), - TAUNT_3("[Taunt #3]"); - - private String label; - - EnemyMessage(String label) { - this.label = label; - } - - @Override - public String toString() { - return label; - } - - @Override - public boolean hasArgument() { - return false; - } - - @Override - public int getId() { - return ordinal(); - } - - @Override - public CommsRecipientType getRecipientType() { - return CommsRecipientType.ENEMY; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/FactionAttribute.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/FactionAttribute.java deleted file mode 100644 index 37e2b4f..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/FactionAttribute.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.dhleong.acl.enums; - -import java.util.HashSet; -import java.util.Set; - -/** - * A list of attributes for Factions. Corresponds to the - * attribute in vesselData.xml. - * @author rjwut - */ -public enum FactionAttribute { - // stance - PLAYER, - FRIENDLY, - ENEMY, - BIOMECH, - - // fleet behavior - STANDARD, - SUPPORT, - LONER, - - // whale behavior - WHALELOVER, - WHALEHATER, - - // elite - ELITE; - - /** - * Returns a Set containing the FactionAttributes that correspond to the - * space-delimited list of attribute names in the given String. - */ - public static Set build(String keys) { - String[] tokens = keys.split(" "); - Set attrs = new HashSet(); - - for (String token : tokens) { - attrs.add(FactionAttribute.valueOf(token.toUpperCase())); - } - - return attrs; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/GameType.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/GameType.java deleted file mode 100644 index 82ecd3d..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/GameType.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * Game types for solo and co-op games. - * @author rjwut - */ -public enum GameType { - SIEGE, - SINGLE_FRONT, - DOUBLE_FRONT, - DEEP_STRIKE, - PEACETIME, - BORDER_WAR -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/MainScreenView.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/MainScreenView.java deleted file mode 100644 index 568eab7..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/MainScreenView.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * The available views for the main screen. - * @author rjwut - */ -public enum MainScreenView { - FORE, PORT, STARBOARD, AFT, TACTICAL, LONG_RANGE, STATUS -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ObjectType.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ObjectType.java deleted file mode 100644 index e2e9d55..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ObjectType.java +++ /dev/null @@ -1,87 +0,0 @@ -package net.dhleong.acl.enums; - -import net.dhleong.acl.world.ArtemisAnomaly; -import net.dhleong.acl.world.ArtemisBase; -import net.dhleong.acl.world.ArtemisCreature; -import net.dhleong.acl.world.ArtemisDrone; -import net.dhleong.acl.world.ArtemisGenericObject; -import net.dhleong.acl.world.ArtemisMesh; -import net.dhleong.acl.world.ArtemisNebula; -import net.dhleong.acl.world.ArtemisNpc; -import net.dhleong.acl.world.ArtemisObject; -import net.dhleong.acl.world.ArtemisPlayer; - -/** - * World object types. - * @author rjwut - */ -public enum ObjectType { - PLAYER_SHIP(1, true, ArtemisPlayer.class), - WEAPONS_CONSOLE(2, false, ArtemisPlayer.class), - ENGINEERING_CONSOLE(3, false, ArtemisPlayer.class), - UPGRADES(4, false, ArtemisPlayer.class), - NPC_SHIP(5, true, ArtemisNpc.class), - BASE(6, true, ArtemisBase.class), - MINE(7, false, ArtemisGenericObject.class), - ANOMALY(8, true, ArtemisAnomaly.class), - // 9 is unused - NEBULA(10, false, ArtemisNebula.class), - TORPEDO(11, false, ArtemisGenericObject.class), - BLACK_HOLE(12, false, ArtemisGenericObject.class), - ASTEROID(13, false, ArtemisGenericObject.class), - GENERIC_MESH(14, true, ArtemisMesh.class), - CREATURE(15, true, ArtemisCreature.class), - DRONE(16, false, ArtemisDrone.class); - - public static ObjectType fromId(int id) { - if (id == 0) { - return null; - } - - for (ObjectType objectType : values()) { - if (objectType.id == id) { - return objectType; - } - } - - throw new IllegalArgumentException("No ObjectType with this ID: " + id); - } - - private byte id; - private boolean named; - private Class objectClass; - - ObjectType(int id, boolean named, Class objectClass) { - this.id = (byte) id; - this.named = named; - this.objectClass = objectClass; - } - - /** - * Returns the ID of this type. - */ - public byte getId() { - return id; - } - - /** - * Returns true if objects of this type can have a name; false otherwise. - */ - public boolean isNamed() { - return named; - } - - /** - * Returns true if the given object is compatible with this ObjectType. - */ - public boolean isCompatible(ArtemisObject obj) { - return objectClass.equals(obj.getClass()); - } - - /** - * Returns the class of object represented by this ObjectType. - */ - public Class getObjectClass() { - return objectClass; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/OrdnanceType.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/OrdnanceType.java deleted file mode 100644 index f0a072d..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/OrdnanceType.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * The four types of ordnance that player ships can fire. - * @author rjwut - */ -public enum OrdnanceType { - HOMING("Homing"), - NUKE("Nuke"), - MINE("Mine"), - EMP("EMP"), - PSHOCK("PlasmaShock"); - - public static final int COUNT = values().length; - - private String label; - - OrdnanceType(String label) { - this.label = label; - } - - @Override - public String toString() { - return label; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/OtherMessage.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/OtherMessage.java deleted file mode 100644 index ce7dfe7..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/OtherMessage.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * Messages that can be sent to civilian NPCs. - * @author rjwut - */ -public enum OtherMessage implements CommsMessage { - HAIL(0, "Hail."), - TURN_TO_HEADING_0(1, "Turn to heading 0."), - TURN_TO_HEADING_90(2, "Turn to heading 90."), - TURN_TO_HEADING_180(3, "Turn to heading 180."), - TURN_TO_HEADING_270(4, "Turn to heading 270."), - TURN_LEFT_10_DEGREES(5, "Turn left 10 degrees."), - TURN_RIGHT_10_DEGREES(6, "Turn right 10 degrees."), - TURN_LEFT_25_DEGREES(15, "Turn left 25 degrees."), - TURN_RIGHT_25_DEGREES(16, "Turn right 25 degrees."), - ATTACK_NEAREST_ENEMY(7, "Attack nearest enemy."), - PROCEED_TO_YOUR_DESTINATION(8, "Proceed to you destination."), - GO_DEFEND(9, "Go defend:") { - @Override - public boolean hasArgument() { - return true; - } - }; - - /** - * Returns the AllyMessage that corresponds to the given ID. - */ - public static OtherMessage fromId(int id) { - for (OtherMessage message : values()) { - if (message.id == id) { - return message; - } - } - - return null; - } - - private int id; - private String label; - - OtherMessage(int id, String label) { - this.id = id; - this.label = label; - } - - @Override - public String toString() { - return label; - } - - @Override - public boolean hasArgument() { - return false; - } - - @Override - public int getId() { - return id; - } - - @Override - public CommsRecipientType getRecipientType() { - return CommsRecipientType.OTHER; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Perspective.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Perspective.java deleted file mode 100644 index 415f4e5..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Perspective.java +++ /dev/null @@ -1,10 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * Main screen perspective - * @author rjwut - */ -public enum Perspective { - FIRST_PERSON, - THIRD_PERSON -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/PlayerMessage.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/PlayerMessage.java deleted file mode 100644 index 752b3e1..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/PlayerMessage.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * Messages that can be sent to other players. - * @author rjwut - */ -public enum PlayerMessage implements CommsMessage { - YES("Yes."), - NO("No."), - HELP("Help!"), - GREETINGS("Greetings."), - DIE("Die!"), - WERE_LEAVING_THE_SECTOR_BYE("We're leaving the sector. Bye."), - READY_TO_GO("Ready to go."), - PLEASE_FOLLOW_US("Please follow us."), - WELL_FOLLOW_YOU("We'll follow you."), - WERE_BADLY_DAMAGED("We're badly damaged."), - WERE_HEADED_BACK_TO_THE_STATION("We're headed back to the station."), - SORRY_PLEASE_DISREGARD("Sorry, please disregard."); - - private String label; - - PlayerMessage(String label) { - this.label = label; - } - - @Override - public String toString() { - return label; - } - - @Override - public boolean hasArgument() { - return false; - } - - @Override - public int getId() { - return ordinal(); - } - - @Override - public CommsRecipientType getRecipientType() { - return CommsRecipientType.PLAYER; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ShipSystem.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ShipSystem.java deleted file mode 100644 index 21faefb..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/ShipSystem.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * The eight ship systems. - * @author rjwut - */ -public enum ShipSystem { - BEAMS("Beams"), - TORPEDOES("Torpedoes"), - SENSORS("Sensors"), - MANEUVERING("Maneuvering"), - IMPULSE("Impulse"), - WARP_JUMP_DRIVE("Warp/Jump Drive"), - FORE_SHIELDS("Fore shields"), - AFT_SHIELDS("Aft shields"); - - private String label; - - ShipSystem(String label) { - this.label = label; - } - - @Override - public String toString() { - return label; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/TargetingMode.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/TargetingMode.java deleted file mode 100644 index ffe9cf9..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/TargetingMode.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.dhleong.acl.enums; - -public enum TargetingMode { - AUTO, - MANUAL -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/TubeState.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/TubeState.java deleted file mode 100644 index 7a808ad..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/TubeState.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.dhleong.acl.enums; - -/** - * The four possible torpedo tube states. - * @author rjwut - */ -public enum TubeState { - UNLOADED, // the tube is ready to load - LOADED, // the tube is ready to fire or unload - LOADING, // wait for the tube to finish loading - UNLOADING // wait for the tube to finish unloading -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Upgrade.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Upgrade.java deleted file mode 100644 index 9f6ef13..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/Upgrade.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.dhleong.acl.enums; - -import java.util.Arrays; - -/** - * Upgrade types - * @author rjwut - */ -public enum Upgrade { - HIDENS_POWER_CELL(null), // +500 energy (on pickup) - VIGORANIUM_NODULE(null), // resurrects 1 DAMCON (on pickup) - CETROCITE_CRYSTAL(Console.ENGINEERING), // coolant buff - LATERAL_ARRAY(Console.SCIENCE), // scanning is instantaneous - TAURON_FOCUSER(Console.WEAPONS), // +10% beam damage and cooldown buff - INFUSION_P_COIL(Console.HELM), // +10% warp and impulse speed - CARPACTION_COIL(Console.WEAPONS), // +10% shield recharge rate - SECRET_CODE_CASE(Console.COMMUNICATIONS); // force 1 enemy to accept surrender - /* - * Unknown types: - * HYDROGEN_RAM - * POLYPHASIC_CAPACITORS - * COOLANT_RESERVES - * ECM_STARPULSE - * WARTIME_PRODUCTION - * PROTONIC_VERNIERS - * REGENERATIVE_PAU_GRIDS - * VETERAN_DAMCON_TEAMS - * TACHYON_SCANNERS - * GRIDSCAN_OVERLOAD - * OVERRIDE_AUTHORIZATION - * RESUPPLY_IMPERATIVES - * PATROL_GROUP - * FAST_SUPPLY - * VANGUARD_REFIT (x6) - */ - - public static final int STORABLE_UPGRADE_COUNT; - - static { - STORABLE_UPGRADE_COUNT = getStorableUpgrades().length; - } - - /** - * Returns an array containing the Upgrade values that players can store on - * the ship and use later. - */ - public static Upgrade[] getStorableUpgrades() { - return Arrays.copyOfRange(values(), 2, 8); - } - - private Console activatedBy; - - private Upgrade(Console activatedBy) { - this.activatedBy = activatedBy; - } - - /** - * Returns the Console that can activate this Upgrade, or null if the - * Upgrade is used immediately when picked up. - */ - public Console getActivatedby() { - return activatedBy; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/VesselAttribute.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/VesselAttribute.java deleted file mode 100644 index 3555302..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/enums/VesselAttribute.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.dhleong.acl.enums; - -import java.util.HashSet; -import java.util.Set; - -/** - * A list of attributes for Vessels. Corresponds to the - * attribute in vesselData.xml. - * @author rjwut - */ -public enum VesselAttribute { - // vessel class - PLAYER, - BASE, - FIGHTER, - SMALL, - MEDIUM, - LARGE, - - // civilian type - WARSHIP, - SCIENCE, - CARGO, - LUXURY, - TRANSPORT, - - // behavior - CARRIER, - ASTEROIDEATER, - ANOMALYEATER, - SENTIENT; - - /** - * Returns a Set containing the VesselAttributes that correspond to the - * space-delimited list of attribute names in the given String. - */ - public static Set build(String broadType) { - String[] tokens = broadType.split(" "); - Set attrs = new HashSet(); - - for (String token : tokens) { - attrs.add(VesselAttribute.valueOf(token.toUpperCase())); - } - - return attrs; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ArtemisNetworkInterface.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ArtemisNetworkInterface.java deleted file mode 100644 index e5611b5..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ArtemisNetworkInterface.java +++ /dev/null @@ -1,69 +0,0 @@ -package net.dhleong.acl.iface; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.Protocol; -import net.dhleong.acl.protocol.core.CoreArtemisProtocol; -import net.dhleong.acl.util.Version; - -/** - * Interface for objects which can connect to an Artemis server and send and - * receive packets. - */ -public interface ArtemisNetworkInterface { - public static final Version MIN_VERSION = new Version("2.0"); - - /** - * Returns the ConnectionType of the packets this interface can receive. An - * ArtemisProtocolException will be thrown if it receives a packet of the - * wrong type. - */ - public ConnectionType getRecvType(); - - /** - * Returns the ConnectionType of the packets this interface can send. An - * ArtemisProtocolException will be thrown if it is asked to send a packet - * of the wrong type. - */ - public ConnectionType getSendType(); - - /** - * Registers the packet types defined by the given Protocol with this - * object. The {@link CoreArtemisProtocol} is registered automatically. - */ - public void registerProtocol(Protocol protocol); - - /** - * Registers an object as a listener. It must have one or more qualifying - * methods annotated with {@link Listener}. - */ - public void addListener(Object listener); - - /** - * Opens the send/receive streams to the remote machine. - */ - public void start(); - - /** - * Returns true if currently connected to the remote machine; false - * otherwise. - */ - public boolean isConnected(); - - /** - * Enqueues a packet to be transmitted to the remote machine. - */ - public void send(ArtemisPacket pkt); - - /** - * Closes the connection to the remote machine. - */ - public void stop(); - - /** - * Attaches the given debugger to the interface. Any previously attached - * debugger is removed. If debugger is null, the previous debugger, if any, - * is removed, with no new debugger attached. - */ - public void attachDebugger(Debugger debugger); -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/BaseDebugger.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/BaseDebugger.java deleted file mode 100644 index 51b2415..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/BaseDebugger.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.dhleong.acl.iface; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.RawPacket; - -/** - * A no-op implementation of the Debugger interface. You can extend this class - * so as to not have to implement all the methods. - * @author rjwut - */ -public class BaseDebugger implements Debugger { - @Override - public void onRecvPacketBytes(ConnectionType connType, int pktType, - byte[] payload) { - // do nothing - } - - @Override - public void onRecvParsedPacket(ArtemisPacket pkt) { - // do nothing - } - - @Override - public void onRecvUnparsedPacket(RawPacket pkt) { - // do nothing - } - - @Override - public void onSendPacket(ArtemisPacket pkt) { - // do nothing - } - - @Override - public void onSendPacketBytes(ConnectionType connType, int pktType, - byte[] payload) { - // do nothing - } - - @Override - public void warn(String msg) { - // do nothing - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ConnectionEvent.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ConnectionEvent.java deleted file mode 100644 index 07ee280..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ConnectionEvent.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.dhleong.acl.iface; - -import java.util.Date; - -/** - * An event regarding the connection to a remote machine. Typically, you would - * work with a subclass, not this class. - * @author rjwut - */ -public abstract class ConnectionEvent { - private long timestamp = System.currentTimeMillis(); - - /** - * The time this event occurred. - */ - public Date getTime() { - return new Date(timestamp); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ConnectionSuccessEvent.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ConnectionSuccessEvent.java deleted file mode 100644 index 764073d..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ConnectionSuccessEvent.java +++ /dev/null @@ -1,10 +0,0 @@ -package net.dhleong.acl.iface; - -/** - * An event that gets thrown when ArtClientLib successfully connects to a remote - * machine. - * @author rjwut - */ -public class ConnectionSuccessEvent extends ConnectionEvent { - // no additional members -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/Debugger.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/Debugger.java deleted file mode 100644 index 17a3cfb..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/Debugger.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.dhleong.acl.iface; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.RawPacket; - -/** - * Interface for objects which can be attached to an ArtemisNetworkInterface to - * get notified of debugging-related events. - * @author rjwut - */ -public interface Debugger { - /** - * Invoked when a packet has been received, but before it is parsed. - */ - public void onRecvPacketBytes(ConnectionType connType, int pktType, - byte[] payload); - - /** - * Invoked when a packet is successfully parsed. Packets which are not - * parsed (because they are unknown or because no listener is interested in - * them) do not trigger this listener. - */ - public void onRecvParsedPacket(ArtemisPacket pkt); - - /** - * Invoked when a packet is received and not parsed. This may occur because - * the packet type is unknown (UnknownPacket), or because no listener is - * interested in it (UnparsedPacket). - */ - public void onRecvUnparsedPacket(RawPacket pkt); - - /** - * Invoked just before a packet is written to the PacketWriter. - */ - public void onSendPacket(ArtemisPacket pkt); - - /** - * Invoked just after a packet is written to the PacketWriter and just - * before it is flushed to the OutputStream. - */ - public void onSendPacketBytes(ConnectionType connType, int pktType, - byte[] payload); - - /** - * Invoked when the interface wishes to report a warning. - */ - public void warn(String msg); -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/DisconnectEvent.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/DisconnectEvent.java deleted file mode 100644 index b4fdbee..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/DisconnectEvent.java +++ /dev/null @@ -1,76 +0,0 @@ -package net.dhleong.acl.iface; - -/** - * An event that gets thrown when an existing connection to a remote machine is - * lost. (A failure to connect in the first place is a - * {@link ConnectionFailureEvent}.) The {@link #cause} property indicates why - * the connection was lost. If there is an exception that further explains the - * event, it is provided in the {@link #exception} property; otherwise, it will - * be null. - * @author rjwut - */ -public class DisconnectEvent extends ConnectionEvent { - /** - * Indicates the reason that the connection was terminated. - */ - public enum Cause { - /** - * The connection was closed from this side; in other words, the user - * terminated the connection intentionally. - */ - LOCAL_DISCONNECT, - - /** - * The connection was closed from the remote side. This could be because - * the remote machine terminated the connection intentionally, or a - * network problem caused the connection to drop. - */ - REMOTE_DISCONNECT, - - /** - * ArtClientLib received a packet with an unexpected format. This would - * typically be caused by a bug in ArtClientLib or in a protocol - * extension being used by a custom proxy. - */ - PACKET_PARSE_EXCEPTION, - - /** - * An I/O exception occurred. The {@link #exception} property may have - * more information, but this is generally an external problem that - * ArtClientLib can't do anything about. - */ - IO_EXCEPTION, - - /** - * The server version in use is not supported by ArtClientLib. This - * fork of ArtClientLib doesn't support Artemis versions earlier than - * 2.0, and there are no plans to do so. Future Artemis releases will - * require updates to ArtClientLib to support them. - */ - UNSUPPORTED_SERVER_VERSION - } - - private Cause cause; - private Exception exception; - - DisconnectEvent(Cause cause, Exception exception) { - this.cause = cause; - this.exception = exception; - } - - /** - * Returns a Cause value describing the reason the connection was - * terminated. - */ - public Cause getCause() { - return cause; - } - - /** - * Returns the Exception that was thrown as a result of the connection - * termination, if any. - */ - public Exception getException() { - return exception; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/Listener.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/Listener.java deleted file mode 100644 index 856927c..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/Listener.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.dhleong.acl.iface; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Annotation that marks methods which are to be invoked when a packet is - * received or an event fires. To be eligible to be a Listener, a method must: - * 1) be public, 2) have a void return type, and 3) have exactly one argument of - * an accepted type ({@link net.dhleong.acl.protocol.ArtemisPacket}, - * {@link net.dhleong.acl.iface.ConnectionEvent}, or any of their subtypes). The - * method will only be notified of packets or events that are assignable to the - * argument's type. - * - * Annotating the method alone is not enough to get notifications; you must - * register the object that has the annotated method with the - * ArtemisNetworkInterface implementation that will be receiving the packets or - * events. - * - * @author rjwut - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@Inherited -public @interface Listener { - // no properties -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ListenerMethod.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ListenerMethod.java deleted file mode 100644 index 35f141e..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ListenerMethod.java +++ /dev/null @@ -1,106 +0,0 @@ -package net.dhleong.acl.iface; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Contains all the information needed to invoke a listener Method (annotated - * with {@link Listener}). - * @author rjwut - */ -public class ListenerMethod { - private Object object; - private Method method; - private Class paramType; - - /** - * @param object The listener object - * @param method The annotated method - */ - ListenerMethod (Object object, Method method) { - validate(method); - this.object = object; - this.method = method; - paramType = method.getParameterTypes()[0]; - } - - /** - * Throws an IllegalArgumentException if the given method is not a valid - * listener method. - */ - private static void validate(Method method) { - if (!Modifier.isPublic(method.getModifiers())) { - throw new IllegalArgumentException( - "Method " + method.getName() + - " must be public to be a listener" - ); - } - - if (!Void.TYPE.equals(method.getReturnType())) { - throw new IllegalArgumentException( - "Method " + method.getName() + - " must return void to be a listener" - ); - } - - Class[] paramTypes = method.getParameterTypes(); - - if (paramTypes.length != 1) { - throw new IllegalArgumentException( - "Method " + method.getName() + - " must have exactly one argument to be a listener" - ); - } - - Class paramType = paramTypes[0]; - - if ( - ArtemisPacket.class.isAssignableFrom(paramType) || - ArtemisObject.class.isAssignableFrom(paramType) || - ConnectionEvent.class.isAssignableFrom(paramType) - ) { - return; - } - - throw new IllegalArgumentException( - "Method " + method.getName() + - " argument must be assignable to ArtemisPacket," + - " or ConnectionEvent" - ); - } - - /** - * Returns true if this ListenerMethod accepts events or packets of the - * given class; false otherwise. - */ - boolean accepts(Class clazz) { - return paramType.isAssignableFrom(clazz); - } - - /** - * Invokes the wrapped listener Method, passing in the indicated argument, - * if it is type-compatible with the Method's argument; otherwise, nothing - * happens. Since the listeners have been pre-validated, no exception should - * occur, so we wrap the ones thrown by Method.invoke() in a - * RuntimeException. - */ - void offer(Object arg) { - Class clazz = arg.getClass(); - - if (paramType.isAssignableFrom(clazz)) { - try { - method.invoke(object, arg); - } catch (IllegalAccessException ex) { - throw new RuntimeException(ex); - } catch (IllegalArgumentException ex) { - throw new RuntimeException(ex); - } catch (InvocationTargetException ex) { - throw new RuntimeException(ex); - } - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ListenerRegistry.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ListenerRegistry.java deleted file mode 100644 index 788dc8a..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ListenerRegistry.java +++ /dev/null @@ -1,58 +0,0 @@ -package net.dhleong.acl.iface; - -import java.lang.reflect.Method; -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; - -/** - * Contains ListenerMethods to be invoked when a corresponding event occurs. - * @author rjwut - */ -public class ListenerRegistry { - private List listeners = new CopyOnWriteArrayList(); - - /** - * Registers all methods on the given Object which have the @Listener - * annotation with the registry. A listener method must be public, return - * void, and have exactly one argument which is assignable to ArtemisPacket, - * ArtemisObject or ConnectionEvent. - */ - public void register(Object object) { - synchronized (listeners) { - Method[] methods = object.getClass().getMethods(); - - for (Method method : methods) { - if (method.getAnnotation(Listener.class) != null) { - listeners.add(new ListenerMethod(object, method)); - } - } - } - } - - /** - * Returns true if any listeners are interested in objects of the given - * class; false otherwise. - */ - public boolean listeningFor(Class clazz) { - synchronized (listeners) { - for (ListenerMethod listener : listeners) { - if (listener.accepts(clazz)) { - return true; - } - } - - return false; - } - } - - /** - * Fires all listeners which are interested in the given object. - */ - void fire(Object obj) { - synchronized (listeners) { - for (ListenerMethod listener : listeners) { - listener.offer(obj); - } - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/OutputStreamDebugger.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/OutputStreamDebugger.java deleted file mode 100644 index 61c936f..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/OutputStreamDebugger.java +++ /dev/null @@ -1,98 +0,0 @@ -package net.dhleong.acl.iface; - -import java.io.OutputStream; -import java.io.PrintStream; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.RawPacket; -import net.dhleong.acl.util.TextUtil; - -/** - * Debugger implementation that simply writes all packets to an OutputStream. - * @author rjwut - */ -public class OutputStreamDebugger implements Debugger { - private String name; - private PrintStream out; - - /** - * Convenience constructor for new OutputStreamDebugger("", System.out); - */ - public OutputStreamDebugger() { - this("", System.out); - } - - /** - * Convenience constructor for new OutputStreamDebugger(name, System.out); - */ - public OutputStreamDebugger(String name) { - this(name, System.out); - } - - /** - * Convenience constructor for new OutputStreamDebugger("", out); - */ - public OutputStreamDebugger(OutputStream out) { - this("", out); - } - - /** - * Creates an OutputStreamDebugger with the indicated name that writes to - * the given OutputStream. The name is prefixed to each event that is - * written to the stream so you can tell which Debugger is reporting it. - */ - public OutputStreamDebugger(String name, OutputStream out) { - this.name = name; - this.out = out instanceof PrintStream ? (PrintStream) out : new PrintStream(out); - } - - @Override - public void onRecvPacketBytes(ConnectionType connType, int pktType, - byte[] payload) { - printPacketBytes(false, connType, pktType, payload); - } - - @Override - public void onRecvParsedPacket(ArtemisPacket pkt) { - out.println(name + "> " + pkt); - } - - @Override - public void onRecvUnparsedPacket(RawPacket pkt) { - out.println(name + "< " + pkt); - } - - @Override - public void onSendPacket(ArtemisPacket pkt) { - out.println(name + "< " + pkt); - } - - @Override - public void onSendPacketBytes(ConnectionType connType, int pktType, - byte[] payload) { - printPacketBytes(true, connType, pktType, payload); - } - - @Override - public void warn(String msg) { - out.println((name != "" ? (name + ": ") : "") + "WARNING: " + msg); - } - - /** - * Writes the bytes for the given packet to the OutputStream. - */ - private void printPacketBytes(boolean send, ConnectionType connType, - int pktType, byte[] payload) { - out.println( - name + (send ? "< " : "> ") + - TextUtil.intToHexLE(ArtemisPacket.HEADER) + " " + - TextUtil.intToHexLE(payload.length + 24) + " " + - TextUtil.intToHexLE(connType.toInt()) + " " + - TextUtil.intToHexLE(0) + " " + - TextUtil.intToHexLE(payload.length + 4) + " " + - TextUtil.intToHexLE(pktType) + " " + - TextUtil.byteArrayToHexString(payload) - ); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketFactory.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketFactory.java deleted file mode 100644 index d1051e3..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketFactory.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.dhleong.acl.iface; - -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; - -/** - * Interface for objects which can convert a byte array to a packet. - * @author rjwut - */ -public interface PacketFactory { - /** - * Returns the subclass of ArtemisPacket that this PacketFactory can - * produce. - */ - public Class getFactoryClass(); - - /** - * Returns a packet constructed with a payload read from the given - * PacketReader. (It is assumed that the preamble has already been read.) - * This method should throw an ArtemisPacketException if the payload is - * malformed. - */ - public ArtemisPacket build(PacketReader reader) throws ArtemisPacketException; -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketFactoryRegistry.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketFactoryRegistry.java deleted file mode 100644 index 57b04f6..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketFactoryRegistry.java +++ /dev/null @@ -1,113 +0,0 @@ -package net.dhleong.acl.iface; - -import java.util.LinkedList; -import java.util.List; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.CoreArtemisProtocol; - -/** - * A registry of PacketFactories. This class handles the job of selecting the - * appropriate PacketFactory for a given type and subType. PacketFactories are - * checked in the order in which they were registered. Therefore, registering - * the most frequently-encountered PacketFactories first will result in better - * performance. - * - * Every PacketFactoryRegistry is pre-seeded with factories from - * {@link CoreArtemisProtocol}. - * - * @author rjwut - */ -public class PacketFactoryRegistry { - /** - * An entry in the PacketFactoryRegistry. - */ - private class Entry { - private int pktType; - private Byte pktSubtype; - private PacketFactory factory; - - private Entry(int pktType, PacketFactory factory) { - this.pktType = pktType; - this.factory = factory; - } - - private Entry(int pktType, byte pktSubtype, PacketFactory factory) { - this.pktType = pktType; - this.pktSubtype = Byte.valueOf(pktSubtype); - this.factory = factory; - } - - /** - * Returns true if this Entry corresponds to the offered type and - * subType; false otherwise. - */ - private boolean match(int offeredPktType, byte offeredPktSubtype) { - if (pktType != offeredPktType) { - return false; - } - - return pktSubtype == null || pktSubtype.byteValue() == offeredPktSubtype; - } - } - - private List serverEntries = new LinkedList(); - private List clientEntries = new LinkedList(); - - public PacketFactoryRegistry() { - new CoreArtemisProtocol().registerPacketFactories(this); - } - - /** - * Registers the given PacketFactory under the indicated type. - */ - public void register(ConnectionType connType, int pktType, PacketFactory factory) { - if (connType == null) { - throw new IllegalArgumentException("You must provide a ConnectionType"); - } - - if (factory == null) { - throw new IllegalArgumentException("You must provide a PacketFactory"); - } - - List list = connType == ConnectionType.SERVER ? serverEntries : clientEntries; - list.add(new Entry(pktType, factory)); - } - - /** - * Registers the given PacketFactory under the indicated packet type and - * subtype. - */ - public void register(ConnectionType connType, int pktType, byte pktSubtype, - PacketFactory factory) { - if (connType == null) { - throw new IllegalArgumentException("You must provide a ConnectionType"); - } - - if (factory == null) { - throw new IllegalArgumentException("You must provide a PacketFactory"); - } - - List list = connType == ConnectionType.SERVER ? serverEntries : clientEntries; - list.add(new Entry(pktType, pktSubtype, factory)); - } - - /** - * Returns the PacketFactory registered under the given ConnectionType, - * packet type and subtype, or null if no such PacketFactory has been - * registered. If a packetFactory was not registered under a subtype, the - * subtype will be ignored when matching on it. - */ - public PacketFactory get(ConnectionType connType, int pktType, - byte pktSubtype) { - List list = connType == ConnectionType.SERVER ? serverEntries : clientEntries; - - for (Entry entry : list) { - if (entry.match(pktType, pktSubtype)) { - return entry.factory; - } - } - - return null; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketReader.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketReader.java deleted file mode 100644 index eecd439..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketReader.java +++ /dev/null @@ -1,511 +0,0 @@ -package net.dhleong.acl.iface; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.SortedMap; -import java.util.TreeMap; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.UnknownPacket; -import net.dhleong.acl.protocol.UnparsedPacket; -import net.dhleong.acl.protocol.core.setup.VersionPacket; -import net.dhleong.acl.protocol.core.world.ObjectUpdatePacket; -import net.dhleong.acl.util.ByteArrayReader; -import net.dhleong.acl.util.BitField; -import net.dhleong.acl.util.BoolState; -import net.dhleong.acl.util.TextUtil; -import net.dhleong.acl.util.Version; - -/** - * Facilitates reading packets from an InputStream. This object may be reused to - * read as many packets as desired from a single InputStream. Individual packet - * classes can read their properties by using the read*() methods on this class. - * @author rjwut - */ -public class PacketReader { - private ConnectionType connType; - private InputStream in; - private byte[] intBuffer = new byte[4]; - private boolean parse = true; - private PacketFactoryRegistry factoryRegistry; - private ListenerRegistry listenerRegistry; - private Version version; - private ByteArrayReader payload; - private SortedMap unknownProps; - private ObjectType objectType; - private int objectId; - private BitField bitField; - private SortedMap unknownObjectProps; - - /** - * Wraps the given InputStream with this PacketReader. - */ - public PacketReader(ConnectionType connType, InputStream in, - PacketFactoryRegistry factoryRegistry, - ListenerRegistry listenerRegistry) { - this.connType = connType; - this.in = in; - this.factoryRegistry = factoryRegistry; - this.listenerRegistry = listenerRegistry; - } - - /** - * If set to false, all packets will be returned as UnknownPackets. This is - * useful for testing purposes to easily capture packet payloads in their - * raw form without bothering to parse any of them. By default, this - * property is true, meaning that all known packets will be parsed. - */ - public void setParsePackets(boolean parse) { - this.parse = parse; - } - - /** - * Returns the server Version, or null if unknown. - */ - public Version getVersion() { - return version; - } - - /** - * Reads a single packet and returns it. The given Debugger will also be - * notified. - */ - public ArtemisPacket readPacket(Debugger debugger) throws ArtemisPacketException { - objectType = null; - objectId = 0; - bitField = null; - unknownProps = new TreeMap(); - unknownObjectProps = new TreeMap(); - - // header (0xdeadbeef) - final int header = readIntFromStream(); - - if (header != ArtemisPacket.HEADER) { - throw new ArtemisPacketException( - "Illegal packet header: " + Integer.toHexString(header) - ); - } - - // packet length - final int len = readIntFromStream(); - - if (len <= 8) { - throw new ArtemisPacketException( - "Illegal packet length: " + len - ); - } - - // connection type - final int connectionTypeValue = readIntFromStream(); - final ConnectionType connectionType = ConnectionType.fromInt(connectionTypeValue); - - if (connectionType == null) { - throw new ArtemisPacketException( - "Unknown connection type: " + connectionTypeValue - ); - } - - if (connectionType != connType) { - throw new ArtemisPacketException( - "Connection type mismatch: expected " + connType + - ", got " + connectionType - ); - } - - // padding - final int padding = readIntFromStream(); - - if (padding != 0) { - throw new ArtemisPacketException( - "No empty padding after connection type?", - connType - ); - } - - // remaining bytes - final int remainingBytes = readIntFromStream(); - final int expectedRemainingBytes = len - 20; - - if (remainingBytes != expectedRemainingBytes) { - throw new ArtemisPacketException( - "Packet length discrepancy: total length = " + len + - "; expected " + expectedRemainingBytes + - " for remaining bytes field, but got " + - remainingBytes, - connType - ); - } - - // packet type - final int packetType = readIntFromStream(); - - // payload - // The preamble was 24 bytes (6 ints), so the payload size is the size - // of the whole packet minus 24 bytes. - final int remaining = len - 24; - byte[] payloadBytes = new byte[remaining]; - - try { - ByteArrayReader.readBytes(in, remaining, payloadBytes); - } catch (InterruptedException ex) { - throw new ArtemisPacketException(ex, connType, packetType); - } catch (IOException ex) { - throw new ArtemisPacketException(ex, connType, packetType); - } - - debugger.onRecvPacketBytes(connType, packetType, payloadBytes); - - // Find the PacketFactory that knows how to handle this packet type - PacketFactory factory = null; - byte subtype = remaining > 0 ? payloadBytes[0] : 0x00; - - if (parse) { - factory = factoryRegistry.get(connType, packetType, subtype); - } - - if (factory == null) { - // No factory can handle this; return an UnknownPacket - UnknownPacket packet = new UnknownPacket(connType, packetType, payloadBytes); - debugger.onRecvUnparsedPacket(packet); - return packet; - } - - Class factoryClass = factory.getFactoryClass(); - boolean parsePacket = listenerRegistry.listeningFor(factoryClass); - - if (!parsePacket && factoryClass.isAssignableFrom(ObjectUpdatePacket.class)) { - ObjectType type = ObjectType.fromId(subtype); - - if (type != null) { - parsePacket = listenerRegistry.listeningFor(type.getObjectClass()); - } - } - - if (parsePacket) { - // We're interested in this packet; parse and build it - payload = new ByteArrayReader(payloadBytes); - ArtemisPacket packet; - - try { - packet = factory.build(this); - } catch (ArtemisPacketException ex) { - throw new ArtemisPacketException(ex, connType, packetType, payloadBytes); - } catch (RuntimeException ex) { - throw new ArtemisPacketException(ex, connType, packetType, payloadBytes); - } - - if (packet instanceof VersionPacket) { - // We got a VersionPacket; store the version - version = ((VersionPacket) packet).getVersion(); - } - - int unreadByteCount = payload.getBytesLeft(); - - if (unreadByteCount > 0) { - debugger.warn( - "Unread bytes [" + - packet.getClass().getSimpleName() + "]: " + - TextUtil.byteArrayToHexString(readBytes(unreadByteCount)) - ); - } - - debugger.onRecvParsedPacket(packet); - return packet; - } - - // We don't have any listeners for this packet - UnparsedPacket packet = new UnparsedPacket(connType, packetType, payloadBytes); - debugger.onRecvUnparsedPacket(packet); - return packet; - } - - public int getBytesLeft() { - return payload.getBytesLeft(); - } - - /** - * Returns true if the packet currently being read has more data; false - * otherwise. - */ - public boolean hasMore() { - return payload.getBytesLeft() > 0 && (bitField == null || payload.peek() != 0); - } - - /** - * Returns the next byte in the current packet's payload without moving the - * pointer. - */ - public byte peekByte() { - return payload.peek(); - } - - /** - * Reads a single byte from the current packet's payload. - */ - public byte readByte() { - return payload.readByte(); - } - - /** - * Convenience method for readByte(bit, 0). - */ - public byte readByte(Enum bit) { - return readByte(bit, (byte) 0); - } - - /** - * Reads a single byte from the current packet's payload if the indicated - * bit in the current BitField is on. Otherwise, the pointer is not moved, - * and the given default value is returned. - */ - public byte readByte(Enum bit, byte defaultValue) { - return bitField.get(bit) ? readByte() : defaultValue; - } - - /** - * Reads the indicated number of bytes from the current packet's payload, - * then coerces the zeroeth byte read into a BoolState. - */ - public BoolState readBool(int byteCount) { - return payload.readBoolState(byteCount); - } - - /** - * Reads the indicated number of bytes from the current packet's payload if - * the indicated bit in the current BitField is on, then coerces the zeroeth - * byte read into a BoolState. Otherwise, the pointer is not moved, and - * BoolState.UNKNOWN is returned. - */ - public BoolState readBool(Enum bit, int bytes) { - return bitField.get(bit) ? readBool(bytes) : BoolState.UNKNOWN; - } - - /** - * Reads a short from the current packet's payload. - */ - public int readShort() { - return payload.readShort(); - } - - /** - * Convenience method for readShort(bit, 0). - */ - public int readShort(Enum bit) { - return readShort(bit, 0); - } - - /** - * Reads a short from the current packet's payload if the indicated bit in - * the current BitField is on. Otherwise, the pointer is not moved, and the - * given default value is returned. - */ - public int readShort(Enum bit, int defaultValue) { - return bitField.get(bit) ? readShort() : defaultValue; - } - - /** - * Reads an int from the current packet's payload. - */ - public int readInt() { - return payload.readInt(); - } - - /** - * Convenience method for readInt(bit, -1). - */ - public int readInt(Enum bit) { - return readInt(bit, -1); - } - - /** - * Reads an int from the current packet's payload if the indicated bit in - * the current BitField is on. Otherwise, the pointer is not moved, and the - * given default value is returned. - */ - public int readInt(Enum bit, int defaultValue) { - return bitField.get(bit) ? readInt() : defaultValue; - } - - /** - * Reads a float from the current packet's payload. - */ - public float readFloat() { - return payload.readFloat(); - } - - /** - * Reads a float from the current packet's payload if the indicated bit in - * the current BitField is on. Otherwise, the pointer is not moved, and the - * given default value is returned. - */ - public float readFloat(Enum bit, float defaultValue) { - return bitField.get(bit) ? readFloat() : defaultValue; - } - - /** - * Reads a UTF-16LE String from the current packet's payload. - */ - public String readString() { - return payload.readUTF16LEString(); - } - - /** - * Reads a US ASCII String from the current packet's payload. - */ - public String readUSASCIIString() { - return payload.readUSASCIIString(); - } - - /** - * Reads a UTF-16LE String from the current packet's payload if the - * indicated bit in the current BitField is on. Otherwise, the pointer is - * not moved, and null is returned. - */ - public String readString(Enum bit) { - return bitField.get(bit) ? readString() : null; - } - - /** - * Reads the given number of bytes from the current packet's payload. - */ - public byte[] readBytes(int byteCount) { - return payload.readBytes(byteCount); - } - - /** - * Reads the given number of bytes from the current packet's payload if - * the indicated bit in the current BitField is on. Otherwise, the pointer - * is not moved, and null is returned. - */ - public byte[] readBytes(Enum bit, int byteCount) { - return bitField.get(bit) ? readBytes(byteCount) : null; - } - - /** - * Reads the given number of bytes from the current packet's payload and - * puts them in the unknown property map with the indicated name. - */ - public void readUnknown(String name, int byteCount) { - unknownProps.put(name, readBytes(byteCount)); - } - - /** - * Reads the given number of bytes from the current packet's payload and - * puts them in the unknown object property map with the indicated name. - */ - public void readObjectUnknown(String name, int byteCount) { - unknownObjectProps.put(name, readBytes(byteCount)); - } - - /** - * Reads bytes from the current packet's payload until the endByte value is - * encountered, then puts them in the unknown object property map with the - * indicated name. This method is needed for the UpgradesParser, as we do - * not know the sizes of some of the fields. If we discover the sizes of the - * remaining fields, this method could probably go away. - */ - public void readObjectUnknownUntil(String name, byte endByte) { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - - while (hasMore() && peekByte() != endByte) { - bytes.write(readByte()); - } - - unknownObjectProps.put(name, bytes.toByteArray()); - } - - /** - * if the indicated bit in the current BitField is off, this method returns - * without doing anything. Otherwise, it acts as a convenience method for - * readObjectUnknown(bit.name(), byteCount). - */ - public void readObjectUnknown(Enum bit, int byteCount) { - if (bitField.get(bit)) { - readObjectUnknown(bit.name(), byteCount); - } - } - - /** - * Skips the given number of bytes in the current packet's payload. - */ - public void skip(int byteCount) { - payload.skip(byteCount); - } - - /** - * Returns the unknown properties previously stored by readUnknown(). - */ - public SortedMap getUnknownProps() { - return unknownProps; - } - - /** - * Starts reading an object from an ObjectUpdatingPacket. This will read off - * an object ID (int) and (if a bits enum value array is given) a BitField - * from the current packet's payload. This also clears the - * unknownObjectProps property. The ObjectType is then returned. - */ - public ObjectType startObject(ObjectType type, Enum[] bits) { - objectType = type; - objectId = readInt(); - - if (bits != null) { - bitField = payload.readBitField(bits); - } else { - bitField = null; - } - - unknownObjectProps = new TreeMap(); - return objectType; - } - - /** - * Returns true if the current BitField has the indicated bit turned on. - */ - public boolean has(Enum bit) { - return bitField.get(bit); - } - - /** - * Returns the type of the current object being read from the payload. - */ - public ObjectType getObjectType() { - return objectType; - } - - /** - * Returns the ID of the current object being read from the payload. - */ - public int getObjectId() { - return objectId; - } - - /** - * Returns the unknown object properties previously stored by - * readObjectUnknown(). - */ - public SortedMap getUnknownObjectProps() { - return unknownObjectProps; - } - - /** - * Reads an int value directly from the InputStream wrapped by this object. - * This is used to read values for the preamble. This method blocks until - * four bytes are read or the stream closes. In the latter case, - * ArtemisPacketException will be thrown. - */ - private int readIntFromStream() throws ArtemisPacketException { - try { - ByteArrayReader.readBytes(in, 4, intBuffer); - return ByteArrayReader.readInt(intBuffer, 0); - } catch (InterruptedException ex) { - throw new ArtemisPacketException(ex); - } catch (IOException ex) { - throw new ArtemisPacketException(ex); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketWriter.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketWriter.java deleted file mode 100644 index cc55927..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/PacketWriter.java +++ /dev/null @@ -1,463 +0,0 @@ -package net.dhleong.acl.iface; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.util.SortedMap; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.util.BitField; -import net.dhleong.acl.util.BoolState; -import net.dhleong.acl.util.Util; -import net.dhleong.acl.util.Version; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Facilitates writing packets to an OutputStream. This object may be reused to - * write as many packets as desired to a single OutputStream. To write a packet, - * follow these steps: - * - * 1. Invoke start(). - * 2. Write the payload data using the write*() methods. Payload data is - * buffered by the PacketWriter, not written immediately to the OutputStream. - * 3. Invoke flush(). The proper values for the fields in the preamble will be - * automatically computed and written, followed by the payload. The entire - * packet is then flushed to the OutputStream. - * - * Once flush() has been called, you can start writing another packet by - * invoking start() again. - * - * @author rjwut - */ -public class PacketWriter { - private final OutputStream out; - private ConnectionType mConnType; - private Version version; - - private int mPacketType; - private ByteArrayOutputStream baos; - private ArtemisObject obj; - private ObjectType objType; - private BitField bitField; - private ByteArrayOutputStream baosObj; - private byte[] buffer = new byte[4]; - - /** - * Creates a PacketWriter that writes packets to the given OutputStream. - */ - public PacketWriter(OutputStream out) { - if (out == null) { - throw new IllegalArgumentException( - "The out argument cannot be null" - ); - } - - this.out = out; - } - - /** - * Returns the server version number, or null if unknown. - */ - public Version getVersion() { - return version; - } - - /** - * Sets the server version number. This is invoked by VersionPacket. - */ - public void setVersion(Version version) { - this.version = version; - } - - /** - * Starts a packet of the given type. - */ - public PacketWriter start(ConnectionType connType, int packetType) { - mConnType = connType; - mPacketType = packetType; - baos = new ByteArrayOutputStream(); - return this; - } - - /** - * Convenience method for startObject(object, object.getType(), bits). - */ - public PacketWriter startObject(ArtemisObject object, Enum[] bits) { - return startObject(object, object.getType(), bits); - } - - /** - * Starts writing a new entry into the packet for the given object, - * overriding the object's type with the specified ObjectType. If object - * entries for this packet have bit fields, an array of the possible enum - * values (not just the ones in this packet) should be provided; otherwise, - * the bits argument should be null. - */ - public PacketWriter startObject(ArtemisObject object, ObjectType type, - Enum[] bits) { - assertStarted(); - obj = object; - objType = type; - bitField = new BitField(bits); - baosObj = new ByteArrayOutputStream(); - return this; - } - - /** - * Writes a single byte. You must invoke start() before calling this method. - */ - public PacketWriter writeByte(byte v) { - assertStarted(); - baos.write(v); - return this; - } - - /** - * Writes a single byte for the current object. You must invoke - * startObject() before calling this method. - */ - public PacketWriter writeObjByte(byte v) { - assertObjectStarted(); - baosObj.write(v); - return this; - } - - /** - * If the given byte is different from defaultValue, the byte is written - * to the packet, and the corresponding bit in the object's bit field is set; - * otherwise, nothing happens. You must invoke startObject() before calling - * this method. - */ - public PacketWriter writeByte(Enum bit, byte v, byte defaultValue) { - assertObjectStarted(); - - if (v != defaultValue) { - bitField.set(bit, true); - baosObj.write(v); - } - - return this; - } - - /** - * If the given BoolState is known, it is written to the packet using the - * given number of bytes, and the corresponding bit in the object's bit - * field is set; otherwise, nothing happens. You must invoke startObject() - * before calling this method. - */ - public PacketWriter writeBool(Enum bit, BoolState v, int byteCount) { - assertObjectStarted(); - - if (!BoolState.isKnown(v)) { - return this; - } - - buffer[0] = (byte) (v.getBooleanValue() ? 1 : 0); - - for (int i = 1; i < byteCount; i++) { - buffer[i] = 0; - } - - baosObj.write(buffer, 0, byteCount); - return this; - } - - /** - * Writes a short (two bytes). You must invoke start() before calling this - * method. - */ - public PacketWriter writeShort(int v) { - assertStarted(); - writeShort(v, baos); - return this; - } - - /** - * If the given int is different from defaultValue, the int is coerced to a - * short and written to the packet, and the corresponding bit in the - * object's bit field is set; otherwise, nothing happens. You must invoke - * startObject() before calling this method. - */ - public PacketWriter writeShort(Enum bit, int v, int defaultValue) { - assertObjectStarted(); - - if (v != defaultValue) { - bitField.set(bit, true); - writeShort(v, baosObj); - } - - return this; - } - - /** - * Writes an int (four bytes). You must invoke start() before calling this - * method. - */ - public PacketWriter writeInt(int v) { - assertStarted(); - writeInt(v, baos); - return this; - } - - /** - * If the given int is different from defaultValue, the int is written to - * the packet, and the corresponding bit in the object's bit field is set; - * otherwise, nothing happens. You must invoke startObject() before calling - * this method. - */ - public PacketWriter writeInt(Enum bit, int v, int defaultValue) { - assertObjectStarted(); - - if (v != defaultValue) { - bitField.set(bit, true); - writeInt(v, baosObj); - } - - return this; - } - - /** - * Writes a float (four bytes). You must invoke start() before calling this - * method. - */ - public PacketWriter writeFloat(float v) { - return writeInt(Float.floatToRawIntBits(v)); - } - - /** - * If the given float is different from defaultValue, the float is written - * to the packet, and the corresponding bit in the object's bit field is - * set; otherwise, nothing happens. You must invoke startObject() before - * calling this method. - */ - public PacketWriter writeFloat(Enum bit, float v, float defaultValue) { - return writeInt( - bit, - Float.floatToRawIntBits(v), - Float.floatToRawIntBits(defaultValue) - ); - } - - /** - * Writes a UTF-16LE encoded String. This handles writing the string length - * and the terminating null character automatically. You must invoke start() - * before calling this method. - */ - public PacketWriter writeString(String str) { - writeString(str, baos); - return this; - } - - /** - * Writes a US-ASCII encoded String. This handles writing the string length - * and the terminating null character automatically. You must invoke start() - * before calling this method. - */ - public PacketWriter writeUSASCIIString(String str) { - writeUSASCIIString(str, baos); - return this; - } - - /** - * If the given String is not null, it is written to the packet, and the - * corresponding bit in the object's bit field is set; otherwise, nothing - * happens. You must invoke startObject() before calling this method. - */ - public PacketWriter writeString(Enum bit, String str) { - assertObjectStarted(); - - if (str != null) { - bitField.set(bit, true); - writeString(str, baosObj); - } - - return this; - } - - /** - * Writes a byte array. You must invoke start() before calling this method. - */ - public PacketWriter writeBytes(byte[] bytes) { - assertStarted(); - baos.write(bytes, 0, bytes.length); - return this; - } - - /** - * If the given byte array is not null, it is written to the packet, and the - * corresponding bit in the object's bit field is set; otherwise, nothing - * happens. You must invoke startObject() before calling this method. - */ - public PacketWriter writeBytes(Enum bit, byte[] bytes) { - assertObjectStarted(); - - if (bytes != null) { - bitField.set(bit, true); - baosObj.write(bytes, 0, bytes.length); - } - - return this; - } - - /** - * Retrieves the named unknown value as a byte array from the unknown - * properties map. If the retrieved value is not null, it is written to the - * packet; otherwise, the defaultValue byte array will be written. You must - * invoke startObject() before calling this method. - */ - public PacketWriter writeUnknown(String name, byte[] defaultValue) { - assertObjectStarted(); - SortedMap unknownProps = obj.getUnknownProps(); - byte[] bytes = unknownProps != null ? unknownProps.get(name) : null; - bytes = bytes != null ? bytes : defaultValue; - baosObj.write(bytes, 0, bytes.length); - return this; - } - - /** - * Retrieves the unknown value identified by the indicated bit as a byte - * array from the unknown properties map. If the retrieved value is not - * null, it is written to the packet and the corresponding bit in the - * object's bit field is set; otherwise, nothing happens. You must invoke - * startObject() before calling this method. - */ - public PacketWriter writeUnknown(Enum bit) { - assertObjectStarted(); - SortedMap unknownProps = obj.getUnknownProps(); - - if (unknownProps != null) { - byte[] bytes = unknownProps.get(bit.name()); - - if (bytes != null) { - bitField.set(bit, true); - baosObj.write(bytes, 0, bytes.length); - } - } - - return this; - } - - /** - * Flushes the current object's bytes to the packet, but not to the wrapped - * OutputStream. This prepares the packet for writing another byte. You must - * invoke startObject() before calling this method. When this method - * returns, you will have to call startObject() again before you can write - * another object. - */ - public void endObject() { - writeByte(objType.getId()); - writeInt(obj.getId()); - - try { - bitField.write(baos); - } catch (IOException ex) { - // ByteArrayOutputStream doesn't actually throw IOException; it - // just inherits the declaration from the OutputStream class. Since - // it won't ever actually happen, we wrap it in a RuntimeException. - throw new RuntimeException(ex); - } - - writeBytes(baosObj.toByteArray()); - obj = null; - objType = null; - bitField = null; - baosObj = null; - } - - /** - * Writes the completed packet to the OutputStream. You must invoke start() - * before calling this method. When this method returns, you will have to - * call start() again before you can write more data. The given Debugger - * will also be notified. - */ - public void flush(Debugger debugger) throws IOException { - assertStarted(); - byte[] payload = baos.toByteArray(); - baos = null; - writeInt(ArtemisPacket.HEADER, out); // header - writeInt(payload.length + 24, out); // packet length - writeInt(mConnType.toInt(), out); // connection type - writeInt(0, out); // padding - writeInt(payload.length + 4, out); // remaining bytes - writeInt(mPacketType, out); // packet type - out.write(payload); // payload - out.flush(); - debugger.onSendPacketBytes(mConnType, mPacketType, payload); - } - - /** - * Throws an IllegalStateException if start() has not been called since the - * time this object was constructed or since the last call to flush(). - */ - private void assertStarted() { - if (baos == null) { - throw new IllegalStateException("Must invoke start() first"); - } - } - - /** - * Throws an IllegalStateException if startObject() has not been called - * since the time this object was constructed or since the last call to - * endObject() or flush(). - */ - private void assertObjectStarted() { - if (baosObj == null) { - throw new IllegalStateException("Must invoke startObject() first"); - } - } - - /** - * Writes an int (coerced into a short) into the given ByteArrayOutputStream. - */ - private void writeShort(int value, ByteArrayOutputStream outStream) { - buffer[0] = (byte) (0xff & value); - buffer[1] = (byte) (0xff & (value >> 8)); - outStream.write(buffer, 0, 2); - } - - /** - * Writes an int into the given OutputStream. - */ - private void writeInt(int v, OutputStream outStream) throws IOException { - buffer[0] = (byte) (0xff & v); - buffer[1] = (byte) (0xff & (v >> 8)); - buffer[2] = (byte) (0xff & (v >> 16)); - buffer[3] = (byte) (0xff & (v >> 24)); - outStream.write(buffer, 0, 4); - } - - /** - * Writes an int into the given ByteArrayOutputStream. This is a useful override because it can - * avoid throwing IOException. - */ - private void writeInt(int v, ByteArrayOutputStream outStream) { - buffer[0] = (byte) (0xff & v); - buffer[1] = (byte) (0xff & (v >> 8)); - buffer[2] = (byte) (0xff & (v >> 16)); - buffer[3] = (byte) (0xff & (v >> 24)); - outStream.write(buffer, 0, 4); - } - - /** - * Writes a UTF-16LE encoded String into the given ByteArrayOutputStream. - */ - private void writeString(String v, ByteArrayOutputStream outStream) { - int charCount = v.length() + 1; - writeInt(charCount, outStream); - byte[] charBytes = v.getBytes(Util.UTF16LE); - outStream.write(charBytes, 0, charBytes.length); - writeShort(0, outStream); // terminating null - } - - /** - * Writes a US ASCII encoded String into the given ByteArrayOutputStream. - */ - private void writeUSASCIIString(String v, ByteArrayOutputStream outStream) { - int charCount = v.length(); - writeInt(charCount, outStream); - byte[] charBytes = v.getBytes(Util.US_ASCII); - outStream.write(charBytes, 0, charBytes.length); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ThreadedArtemisNetworkInterface.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ThreadedArtemisNetworkInterface.java deleted file mode 100644 index c26355a..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/iface/ThreadedArtemisNetworkInterface.java +++ /dev/null @@ -1,347 +0,0 @@ -package net.dhleong.acl.iface; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.SocketException; -import java.util.Queue; -import java.util.concurrent.ConcurrentLinkedQueue; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.Protocol; -import net.dhleong.acl.protocol.core.setup.VersionPacket; -import net.dhleong.acl.protocol.core.setup.WelcomePacket; -import net.dhleong.acl.protocol.core.world.ObjectUpdatePacket; -import net.dhleong.acl.util.Version; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Default implementation of ArtemisNetworkInterface. Kicks off a thread for - * each stream. - */ -public class ThreadedArtemisNetworkInterface implements ArtemisNetworkInterface { - private ConnectionType recvType; - private ConnectionType sendType; - private PacketFactoryRegistry factoryRegistry = new PacketFactoryRegistry(); - private ListenerRegistry mListeners = new ListenerRegistry(); - private ReceiverThread mReceiveThread; - private SenderThread mSendThread; - - private DisconnectEvent.Cause disconnectCause = DisconnectEvent.Cause.LOCAL_DISCONNECT; - private Exception exception; - private Debugger mDebugger = new BaseDebugger(); - - /** - * Prepares an outgoing client connection to an Artemis server. The send and - * receive streams won't actually be opened until start() is called. This - * constructor causes ArtClientLib to wait forever for a connection; a - * separate constructor is provided for specifying a timeout. - */ - public ThreadedArtemisNetworkInterface(String host, int port) - throws IOException { - this(host, port, 0); - } - - /** - * Prepares an outgoing client connection to an Artemis server. The send and - * receive streams won't actually be opened until start() is called. The - * timeoutMs value indicates how long (in milliseconds) ArtClientLib will - * wait for the connection to be established before throwing an exception; 0 - * means "wait forever." - */ - public ThreadedArtemisNetworkInterface(String host, int port, int timeoutMs) - throws IOException { - Socket skt = new Socket(); - skt.connect(new InetSocketAddress(host, port), timeoutMs); - init(skt, ConnectionType.SERVER); - } - - /** - * Creates a ThreadedArtemisNetworkInterface instance which will communicate - * over the given Socket. - * - * The ConnectionType indicates the expected type of the remote machine; in - * other words, it corresponds to the type of packets that are expected to - * be received. If ArtClientLib is connecting as a client to a remote - * server, connType should be ConnectionType.SERVER. (The constructor which - * accepts a host and port number simplifies this setup.) If ArtClientLib is - * acting as a proxy server and has accepted a socket connection from a - * remote client, connType should be ConnectionType.CLIENT. - * - * The send/receive streams won't actually be opened until start() is - * called. - * - * @param socket The ServerSocket that has received a connection - */ - public ThreadedArtemisNetworkInterface(Socket skt, ConnectionType connType) - throws IOException { - init(skt, connType); - } - - private void init(Socket skt, ConnectionType connType) throws IOException { - recvType = connType; - sendType = connType.opposite(); - skt.setKeepAlive(true); - mSendThread = new SenderThread(this, skt); - mReceiveThread = new ReceiverThread(this, skt); - addListener(mSendThread); - } - - @Override - public ConnectionType getRecvType() { - return recvType; - } - - @Override - public ConnectionType getSendType() { - return sendType; - } - - @Override - public void registerProtocol(Protocol protocol) { - protocol.registerPacketFactories(factoryRegistry); - } - - @Override - public void addListener(final Object listener) { - mListeners.register(listener); - } - - /** - * By default, ArtClientLib will attempt to parse any packet it receives for - * which there is a registered interested listener. Known packet types that - * have no listeners will be discarded without being parsed, and unknown - * packet types will emit UnknownPackets. - * - * If this is set to false, ArtClientLib will treat all incoming packets as - * UnknownPackets. This is useful to simply capture the raw bytes for all - * packets, without attempting to parse them. - */ - public void setParsePackets(boolean parse) { - mReceiveThread.setParsePackets(parse); - } - - @Override - public void start() { - if (!mReceiveThread.mStarted) { - mReceiveThread.start(); - } - - if (!mSendThread.mStarted) { - mSendThread.start(); - } - } - - @Override - public boolean isConnected() { - return mSendThread.mConnected; - } - - @Override - public void send(final ArtemisPacket pkt) { - if (pkt.getConnectionType() != sendType) { - throw new IllegalArgumentException( - "Can only send " + sendType + " packets" - ); - } - - mSendThread.offer(pkt); - } - - @Override - public void stop() { - mReceiveThread.end(); - mSendThread.end(); - } - - - /** - * Manages sending packets to the OutputStream. - */ - private static class SenderThread extends Thread { - private final Socket mSkt; - private final Queue mQueue = new ConcurrentLinkedQueue(); - private boolean mRunning = true; - - private final PacketWriter mWriter; - private final ThreadedArtemisNetworkInterface mInterface; - - private boolean mConnected; - private boolean mStarted; - - public SenderThread(final ThreadedArtemisNetworkInterface net, final Socket skt) throws IOException { - mInterface = net; - mSkt = skt; - OutputStream output = new BufferedOutputStream(mSkt.getOutputStream()); - mWriter = new PacketWriter(output); - } - - /** - * Enqueues a packet to be sent. - */ - public boolean offer(final ArtemisPacket pkt) { - return mQueue.offer(pkt); - } - - @Override - public void run() { - mStarted = true; - - while (mRunning) { - try { - Thread.sleep(5); - } catch (final InterruptedException e) { - // TODO Supposed to bail if an InterruptedException is received - } - - ArtemisPacket pkt = mQueue.poll(); - - if (pkt == null) { - // empty queue; loop back to wait - continue; - } - - try { - mInterface.mDebugger.onSendPacket(pkt); - pkt.writeTo(mWriter, mInterface.mDebugger); - } catch (final IOException e) { - if (mRunning) { - mInterface.disconnectCause = DisconnectEvent.Cause.IO_EXCEPTION; - mInterface.exception = e; - } - - break; - } - } - - mConnected = false; - mInterface.stop(); - - // close the socket here; this will - // allow us to send any closing - // packets needed before shutting - // down the pipes - try { - mSkt.close(); - } catch (final IOException e) { - // DON'T CARE - } - - mInterface.mListeners.fire(new DisconnectEvent( - mInterface.disconnectCause, - mInterface.exception - )); - } - - public void end() { - mRunning = false; - } - - @Listener - public void onPacket(final WelcomePacket pkt) { - final boolean wasConnected = mConnected; - mConnected = true; - - if (!wasConnected) { - mInterface.mListeners.fire(new ConnectionSuccessEvent()); - } - } - - @Listener - public void onPacket(final VersionPacket pkt) { - final Version version = pkt.getVersion(); - - if (version.lt(ArtemisNetworkInterface.MIN_VERSION)) { - mInterface.mListeners.fire(new DisconnectEvent( - DisconnectEvent.Cause.UNSUPPORTED_SERVER_VERSION, - null - )); - - // go ahead and end the receive thread NOW - mInterface.mReceiveThread.end(); - end(); - } - } - } - - /** - * Manages receiving packets from the InputStream. - */ - private class ReceiverThread extends Thread { - private boolean mRunning = true; - private final ThreadedArtemisNetworkInterface mInterface; - private PacketReader mReader; - private boolean mStarted; - - public ReceiverThread(final ThreadedArtemisNetworkInterface net, final Socket skt) throws IOException { - mInterface = net; - InputStream input = new BufferedInputStream(skt.getInputStream()); - mReader = new PacketReader(net.getRecvType(), input, - factoryRegistry, mListeners); - } - - private void setParsePackets(boolean parse) { - mReader.setParsePackets(parse); - } - - @Override - public void run() { - mStarted = true; - - while (mRunning) { - try { - // read packet - final ArtemisPacket pkt = mReader.readPacket(mInterface.mDebugger); - - if (mRunning) { - mListeners.fire(pkt); - - if (pkt instanceof ObjectUpdatePacket) { - for (ArtemisObject obj : ((ObjectUpdatePacket) pkt).getObjects()) { - mListeners.fire(obj); - } - } - } - } catch (final ArtemisPacketException e) { - if (mRunning) { - Throwable cause = e.getCause(); - - if (cause instanceof SocketException) { - // Parse failed because the connection was lost - mInterface.disconnectCause = DisconnectEvent.Cause.REMOTE_DISCONNECT; - mInterface.exception = (SocketException) cause; - } else { - mInterface.disconnectCause = DisconnectEvent.Cause.PACKET_PARSE_EXCEPTION; - mInterface.exception = e; - } - - end(); - } - - break; - } - } - - mInterface.stop(); - } - - public void end() { - mRunning = false; - } - } - - @Override - public void attachDebugger(Debugger debugger) { - if (debugger == null) { - debugger = new BaseDebugger(); - } - - mDebugger = debugger; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/ArtemisPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/ArtemisPacket.java deleted file mode 100644 index 6bc411e..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/ArtemisPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.dhleong.acl.protocol; - -import java.io.IOException; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.Debugger; -import net.dhleong.acl.iface.PacketWriter; - -/** - * Interface for all packets that can be received or sent. - */ -public interface ArtemisPacket { - /** - * The preamble of every packet starts with this value. - */ - public static final int HEADER = 0xdeadbeef; - - /** - * Returns a ConnectionType value indicating the type of connection from - * which this packet originates. SERVER means that this packet type is sent - * by the server; CLIENT means it's sent by the client. - */ - public ConnectionType getConnectionType(); - - /** - * Returns the type value for this packet, specified as the last field of - * the preamble. - */ - public int getType(); - - /** - * Writes this packet to the given PacketWriter, then returns the array of - * bytes that was sent. The given Debugger will be notified of the written - * packet. - */ - public void writeTo(PacketWriter writer, Debugger debugger) throws IOException; -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/ArtemisPacketException.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/ArtemisPacketException.java deleted file mode 100644 index 4059a61..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/ArtemisPacketException.java +++ /dev/null @@ -1,83 +0,0 @@ -package net.dhleong.acl.protocol; - -import net.dhleong.acl.enums.ConnectionType; - -/** - * Thrown when ArtClientLib encounters a problem while attempting to parse a - * packet of a known type. Unknown packets don't throw this exception; - * ArtClientLib creates UnknownPacket objects for them. - */ -public class ArtemisPacketException extends Exception { - private static final long serialVersionUID = 6305993950844264082L; - private ConnectionType connType; - private int packetType; - private byte[] payload; - - /** - * @param string A description of the problem - */ - public ArtemisPacketException(String string) { - super(string); - } - - /** - * @param t The exception that caused ArtemisPacketException to be thrown - */ - public ArtemisPacketException(Throwable t) { - super(t); - } - - /** - * @param string A description of the problem - * @param connType The packet's ConnectionType - */ - public ArtemisPacketException(String string, ConnectionType connType) { - super(string); - this.connType = connType; - } - - /** - * @param t The exception that caused ArtemisPacketException to be thrown - * @param connType The packet's ConnectionType - * @param packetType The packet's type value - */ - public ArtemisPacketException(Throwable t, ConnectionType connType, - int packetType) { - this(t, connType, packetType, null); - } - - /** - * @param t The exception that caused ArtemisPacketException to be thrown - * @param connType The packet's ConnectionType - * @param packetType The packet's type value - * @param payload The packet's payload bytes - */ - public ArtemisPacketException(Throwable t, ConnectionType connType, - int packetType, byte[] payload) { - super(t); - this.connType = connType; - this.packetType = packetType; - this.payload = payload; - } - - /** - * Returns the packet's ConnectionType, or null if unknown. - */ - public ConnectionType getConnectionType() { - return connType; - } - - /** - * Returns the type value for this packet, or 0 if unknown. - */ - public int getPacketType() { - return packetType; - } - - /** - * Returns the payload for this packet, or null if unknown. - */ - public byte[] getPayload() { - return payload; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/BaseArtemisPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/BaseArtemisPacket.java deleted file mode 100644 index 5e2a455..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/BaseArtemisPacket.java +++ /dev/null @@ -1,60 +0,0 @@ -package net.dhleong.acl.protocol; - -import java.io.IOException; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.Debugger; -import net.dhleong.acl.iface.PacketWriter; - -/** - * Implements common packet functionality. - */ -public abstract class BaseArtemisPacket implements ArtemisPacket { - /** - * Causes the packet's payload to be written to the given PacketWriter. - */ - protected abstract void writePayload(PacketWriter writer); - - /** - * Writes packet type-specific details (debug info) to be written to the - * given StringBuilder. - */ - protected abstract void appendPacketDetail(StringBuilder b); - - private final ConnectionType mConnectionType; - private final int mType; - - /** - * @param connectionType The packet's ConnectionType - * @param packetType The packet's type value - */ - public BaseArtemisPacket(ConnectionType connectionType, int packetType) { - mConnectionType = connectionType; - mType = packetType; - } - - @Override - public ConnectionType getConnectionType() { - return mConnectionType; - } - - @Override - public int getType() { - return mType; - } - - @Override - public final void writeTo(PacketWriter writer, Debugger debugger) throws IOException { - writer.start(mConnectionType, mType); - writePayload(writer); - writer.flush(debugger); - } - - @Override - public final String toString() { - StringBuilder b = new StringBuilder(); - b.append('[').append(getClass().getSimpleName()).append("] "); - appendPacketDetail(b); - return b.toString(); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/Protocol.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/Protocol.java deleted file mode 100644 index 8ee0202..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/Protocol.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.dhleong.acl.protocol; - -import net.dhleong.acl.iface.PacketFactoryRegistry; - -/** - * Registers a set of PacketFactories with a PacketFactoryRegistry. - * @author rjwut - */ -public interface Protocol { - /** - * Creates PacketFactory objects for each packet in the protocol and - * registers them with the given PacketFactoryRegistry. - */ - public void registerPacketFactories(PacketFactoryRegistry registry); -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/RawPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/RawPacket.java deleted file mode 100644 index 59a6041..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/RawPacket.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.dhleong.acl.protocol; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.util.TextUtil; - -/** - * Any packet that ArtClientLib has not parsed. This may be because it was not - * recognized by any registered protocol, or because there are no registered - * packet listeners that are interested in it. - * @author rjwut - */ -public abstract class RawPacket extends BaseArtemisPacket { - protected final byte[] mPayload; - - /** - * @param connectionType The type of connection over which this packet was - * received - * @param packetType The packet type value specified in the preamble - * @param payload The bytes from the payload (byte offset 24 onward) - */ - protected RawPacket(ConnectionType connectionType, int packetType, - byte[] payload) { - super(connectionType, packetType); - mPayload = payload; - } - - /** - * Returns the payload for this packet. - */ - public byte[] getPayload() { - return mPayload; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeBytes(mPayload); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append("0x").append(TextUtil.intToHex(getType())).append(' ') - .append(TextUtil.byteArrayToHexString(mPayload)); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnexpectedTypeException.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnexpectedTypeException.java deleted file mode 100644 index fd40712..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnexpectedTypeException.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.dhleong.acl.protocol; - -/** - * Thrown if ArtClientLib encounters a different packet type than it expected. - * This is almost certainly caused by a bug in the PacketFactory that - * constructed the packet. - * @author rjwut - */ -public class UnexpectedTypeException extends IllegalArgumentException { - private static final long serialVersionUID = -5961855010011595291L; - - public UnexpectedTypeException(int type, int expectedType) { - super("Expected type " + expectedType + ", got " + type); - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnknownPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnknownPacket.java deleted file mode 100644 index 23060d7..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnknownPacket.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.dhleong.acl.protocol; - -import net.dhleong.acl.enums.ConnectionType; - -/** - * Any packet received that isn't of a type recognized by a registered protocol - * will be returned as this class. If you disable packet parsing (by calling - * ThreadedArtemisNetworkInterface.setParsePackets(false)), all packets will be - * of this type. In most cases, you won't be interested in these: they're mainly - * intended for reverse-engineering of the protocol and debugging. However, if - * you are writing a server proxy, you will want to capture these so that you - * can pass them along. - * @author rjwut - */ -public class UnknownPacket extends RawPacket { - public UnknownPacket(ConnectionType connectionType, int packetType, - byte[] payload) { - super(connectionType, packetType, payload); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnparsedPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnparsedPacket.java deleted file mode 100644 index 1976bf6..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/UnparsedPacket.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.dhleong.acl.protocol; - -import net.dhleong.acl.enums.ConnectionType; - -/** - * Any packet received for which no packet listeners have been registered will - * be returned as this class. Only Debuggers are notified of these packets. - * @author rjwut - */ -public final class UnparsedPacket extends RawPacket { - public UnparsedPacket(ConnectionType connectionType, int packetType, - byte[] payload) { - super(connectionType, packetType, payload); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/CaptainSelectPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/CaptainSelectPacket.java deleted file mode 100644 index eee3fd4..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/CaptainSelectPacket.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Selects (or deselects) a target on the captain's map. - * @author rjwut - */ -public class CaptainSelectPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_CAPTAIN_SELECT, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return CaptainSelectPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new CaptainSelectPacket(reader); - } - }); - } - - /** - * @param target The target to select, or null to deselect a target - */ - public CaptainSelectPacket(ArtemisObject target) { - super(TYPE_CAPTAIN_SELECT, target == null ? 1 : target.getId()); - } - - private CaptainSelectPacket(PacketReader reader) { - super(TYPE_CAPTAIN_SELECT, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append('#').append(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/CoreArtemisProtocol.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/CoreArtemisProtocol.java deleted file mode 100644 index aa0e265..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/CoreArtemisProtocol.java +++ /dev/null @@ -1,90 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.protocol.Protocol; -import net.dhleong.acl.protocol.core.comm.*; -import net.dhleong.acl.protocol.core.eng.*; -import net.dhleong.acl.protocol.core.helm.*; -import net.dhleong.acl.protocol.core.sci.*; -import net.dhleong.acl.protocol.core.setup.*; -import net.dhleong.acl.protocol.core.weap.*; -import net.dhleong.acl.protocol.core.world.*; - -/** - * Implements the core Artemis protocol. - * @author rjwut - */ -public class CoreArtemisProtocol implements Protocol { - @Override - public void registerPacketFactories(PacketFactoryRegistry registry) { - // server - // --- prioritized - ObjectUpdatePacket.register(registry); - BeamFiredPacket.register(registry); - EngGridUpdatePacket.register(registry); - IntelPacket.register(registry); - SoundEffectPacket.register(registry); - // --- rest - AllShipSettingsPacket.register(registry); - EngAutoDamconUpdatePacket.register(registry); - CommsIncomingPacket.register(registry); - ConsoleStatusPacket.register(registry); - DmxMessagePacket.register(registry); - DestroyObjectPacket.register(registry); - DifficultyPacket.register(registry); - GameMessagePacket.register(registry); - GameOverPacket.register(registry); - GameOverReasonPacket.register(registry); - GameOverStatsPacket.register(registry); - IncomingAudioPacket.register(registry); - JumpStatusPacket.register(registry); - KeyCaptureTogglePacket.register(registry); - PausePacket.register(registry); - PerspectivePacket.register(registry); - PlayerShipDamagePacket.register(registry); - SkyboxPacket.register(registry); - VersionPacket.register(registry); - WelcomePacket.register(registry); - - // client - // -- prioritized - ToggleShieldsPacket.register(registry); - FireBeamPacket.register(registry); - FireTubePacket.register(registry); - ToggleAutoBeamsPacket.register(registry); - SetWeaponsTargetPacket.register(registry); - LoadTubePacket.register(registry); - HelmSetSteeringPacket.register(registry); - HelmSetWarpPacket.register(registry); - HelmJumpPacket.register(registry); - EngSetCoolantPacket.register(registry); - EngSetEnergyPacket.register(registry); - HelmSetImpulsePacket.register(registry); - HelmRequestDockPacket.register(registry); - // --- rest - AudioCommandPacket.register(registry); - CaptainSelectPacket.register(registry); - ClimbDivePacket.register(registry); - CommsOutgoingPacket.register(registry); - ConvertTorpedoPacket.register(registry); - EngSendDamconPacket.register(registry); - EngSetAutoDamconPacket.register(registry); - GameMasterMessagePacket.register(registry); - GameMasterSelectPacket.register(registry); - HelmSetClimbDivePacket.register(registry); - HelmToggleReversePacket.register(registry); - KeystrokePacket.register(registry); - ReadyPacket.register(registry); - ReadyPacket2.register(registry); - SciScanPacket.register(registry); - SciSelectPacket.register(registry); - SetBeamFreqPacket.register(registry); - SetMainScreenPacket.register(registry); - SetShipPacket.register(registry); - SetShipSettingsPacket.register(registry); - SetConsolePacket.register(registry); - TogglePerspectivePacket.register(registry); - ToggleRedAlertPacket.register(registry); - UnloadTubePacket.register(registry); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/DmxMessagePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/DmxMessagePacket.java deleted file mode 100644 index a5c902e..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/DmxMessagePacket.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -public class DmxMessagePacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x10; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return DmxMessagePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new DmxMessagePacket(reader); - } - }); - } - - private final String mName; - private final boolean mOn; - - private DmxMessagePacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - mName = reader.readString(); - mOn = reader.readInt() == 1; - } - - public DmxMessagePacket(String name, boolean on) { - super(ConnectionType.SERVER, TYPE); - mName = name; - mOn = on; - } - - /** - * The name of the DMX flag. - */ - public String getMessage() { - return mName; - } - - /** - * Returns true if the DMX flag is on; false otherwise. - */ - public boolean isOn() { - return mOn; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE).writeString(mName).writeInt(mOn ? 1 : 0); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mName).append('=').append(mOn ? "ON" : "OFF"); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMasterMessagePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMasterMessagePacket.java deleted file mode 100644 index 4504e65..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMasterMessagePacket.java +++ /dev/null @@ -1,115 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.Console; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -/** - * A packet sent by the game master console to the server which causes a message - * to be displayed on a client. - * @author rjwut - */ -public class GameMasterMessagePacket extends BaseArtemisPacket { - private static final int TYPE = 0x809305a7; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return GameMasterMessagePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new GameMasterMessagePacket(reader); - } - }); - } - - private final Console mConsole; - private final String mSender; - private final String mMessage; - - private GameMasterMessagePacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - byte console = reader.readByte(); - - if (console != 0) { - console--; - - if (console < 0 || console > Console.COMMUNICATIONS.ordinal()) { - throw new IllegalArgumentException("Invalid console value: " + console); - } - - mConsole = Console.values()[console]; - } else { - mConsole = null; - } - - mSender = reader.readString(); - mMessage = reader.readString(); - } - - /** - * A message from the game master that will be received as a normal COMMs - * message. - * Convenience constructor for GameMasterMessage(String, String, null). - */ - public GameMasterMessagePacket(String sender, String message) { - this(sender, message, null); - } - - /** - * A message from the game master that will be received by one of the - * consoles. If the console argument is null, it will be recieved as a - * normal COMMs message. Otherwise, it will be displayed as a popup on the - * named Console. Only the six main console types (MAIN_SCREEN, HELM, - * WEAPONS, ENGINEERING, SCIENCE, COMMUNICATIONS) are allowed. - */ - public GameMasterMessagePacket(String sender, String message, Console console) { - super(ConnectionType.CLIENT, TYPE); - - if (console != null && console.ordinal() > Console.COMMUNICATIONS.ordinal()) { - throw new IllegalArgumentException("Invalid console: " + console); - } - - mSender = sender; - mMessage = message; - mConsole = console; - } - - public String getSender() { - return mSender; - } - - public String getMessage() { - return mMessage; - } - - public Console getConsole() { - return mConsole; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeByte((byte) (mConsole == null ? 0 : mConsole.ordinal() - 1)); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - if (mConsole == null) { - b.append(" [COMMs message] "); - } else { - b.append(" [").append(mConsole).append(" popup] "); - } - - b.append(mSender).append(": ").append(mMessage); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMasterSelectPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMasterSelectPacket.java deleted file mode 100644 index fd2acc2..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMasterSelectPacket.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Selects (or deselects) a target on the game master's map. - * @author rjwut - */ -public class GameMasterSelectPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_CAPTAIN_SELECT, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return GameMasterSelectPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new GameMasterSelectPacket(reader); - } - }); - } - - /** - * @param target The target to select, or null to deselect a target - */ - public GameMasterSelectPacket(ArtemisObject target) { - super(TYPE_GAME_MASTER_SELECT, target == null ? 1 : target.getId()); - } - - private GameMasterSelectPacket(PacketReader reader) { - super(TYPE_GAME_MASTER_SELECT, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append('#').append(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMessagePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMessagePacket.java deleted file mode 100644 index c9354b4..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameMessagePacket.java +++ /dev/null @@ -1,70 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * "Toast" messages sent by the server. - */ -public class GameMessagePacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x0a; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return GameMessagePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new GameMessagePacket(reader); - } - }); - } - - private final String mMessage; - - private GameMessagePacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - mMessage = reader.readString(); - } - - public GameMessagePacket(String message) { - super(ConnectionType.SERVER, TYPE); - mMessage = message; - } - - /** - * The contents of the "toast" message. - */ - public String getMessage() { - return mMessage; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE).writeString(mMessage); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mMessage); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverPacket.java deleted file mode 100644 index d47ac68..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverPacket.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Sent by the server when the game ends. - * @author rjwut - */ -public class GameOverPacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x06; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return GameOverPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new GameOverPacket(reader); - } - }); - } - - private GameOverPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - } - - public GameOverPacket() { - super(ConnectionType.SERVER, TYPE); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - // do nothing - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverReasonPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverReasonPacket.java deleted file mode 100644 index 8e9f602..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverReasonPacket.java +++ /dev/null @@ -1,82 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -public class GameOverReasonPacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x14; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return GameOverReasonPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new GameOverReasonPacket(reader); - } - }); - } - - private List mText; - - private GameOverReasonPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - mText = new LinkedList(); - - while (reader.hasMore()) { - mText.add(reader.readString()); - } - } - - public GameOverReasonPacket(String... text) { - super(ConnectionType.SERVER, TYPE); - mText = Arrays.asList(text); - } - - /** - * The text describing why the game ended. Each String in the List is one - * line. - */ - public List getText() { - return new LinkedList(mText); - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE); - - for (String line : mText) { - writer.writeString(line); - } - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - for (String line : mText) { - b.append("\n\t").append(line); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverStatsPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverStatsPacket.java deleted file mode 100644 index e133254..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/GameOverStatsPacket.java +++ /dev/null @@ -1,125 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -public class GameOverStatsPacket extends BaseArtemisPacket implements - Iterable { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x15; - private static final byte DELIMITER = 0x00; - private static final byte END_MARKER = (byte) 0xce; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return GameOverStatsPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new GameOverStatsPacket(reader); - } - }); - } - - private byte columnIndex; - private List rows = new LinkedList(); - - private GameOverStatsPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - columnIndex = reader.readByte(); - - do { - if (reader.readByte() == END_MARKER) { - break; - } - - int value = reader.readInt(); - String label = reader.readString(); - rows.add(new Row(label, value)); - } while (true); - } - - public GameOverStatsPacket(byte columnIndex) { - super(ConnectionType.SERVER, TYPE); - this.columnIndex = columnIndex; - } - - public byte getColumnIndex() { - return columnIndex; - } - - @Override - public Iterator iterator() { - return rows.iterator(); - } - - public void addRow(String label, int value) { - rows.add(new Row(label, value)); - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE); - writer.writeByte(columnIndex); - - for (Row row : rows) { - writer - .writeByte(DELIMITER) - .writeInt(row.getValue()) - .writeString(row.getLabel()); - } - - writer.writeByte(END_MARKER); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - for (Row row : rows) { - b .append("\n\t") - .append(row.getLabel()) - .append(": ") - .append(row.getValue()); - } - } - - - public static class Row { - private String label; - private int value; - - private Row(String label, int value) { - this.label = label; - this.value = value; - } - - public String getLabel() { - return label; - } - - public int getValue() { - return value; - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/KeyCaptureTogglePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/KeyCaptureTogglePacket.java deleted file mode 100644 index c3ebb46..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/KeyCaptureTogglePacket.java +++ /dev/null @@ -1,73 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Enables/disables keystroke capture for this console. Note that the game - * master console always captures keystrokes; all others don't by default unless - * this packet enables it. - * @author rjwut - */ -public class KeyCaptureTogglePacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x11; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return KeyCaptureTogglePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new KeyCaptureTogglePacket(reader); - } - }); - } - - private boolean mEnabled; - - private KeyCaptureTogglePacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - byte subtype = reader.readByte(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - mEnabled = reader.readInt() == 1; - } - - public KeyCaptureTogglePacket(boolean enabled) { - super(ConnectionType.SERVER, TYPE); - mEnabled = enabled; - } - - /** - * Returns true if this console should capture keystrokes; false otherwise. - */ - public boolean isEnabled() { - return mEnabled; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeByte(MSG_TYPE).writeInt(mEnabled ? 1 : 0); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mEnabled ? "ON" : "OFF"); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/KeystrokePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/KeystrokePacket.java deleted file mode 100644 index 29a022f..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/KeystrokePacket.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; - -/** - * Sends a keystroke to the server. This should only be done for the game master - * console, or if keystroke capture has been enabled via the - * KeyCaptureTogglePacket. - * @author rjwut - */ -public class KeystrokePacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_REVERSE_ENGINES, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return KeystrokePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new KeystrokePacket(reader); - } - }); - } - - /** - * @param keycode the key that was pressed - * @see {@link java.awt.event.KeyEvent} (for constants) - */ - public KeystrokePacket(int keycode) { - super(TYPE_KEYSTROKE, keycode); - } - - private KeystrokePacket(PacketReader reader) { - super(TYPE_KEYSTROKE, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PausePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PausePacket.java deleted file mode 100644 index e5a16de..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PausePacket.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; -import net.dhleong.acl.util.BoolState; - -public class PausePacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x04; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return PausePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new PausePacket(reader); - } - }); - } - - private final BoolState mPaused; - - private PausePacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - mPaused = reader.readBool(4); - } - - public PausePacket(boolean paused) { - super(ConnectionType.SERVER, TYPE); - mPaused = BoolState.from(paused); - } - - public BoolState getPaused() { - return mPaused; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE).writeInt(BoolState.safeValue(mPaused) ? 1 : 0); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(BoolState.safeValue(mPaused) ? "PAUSED" : "RUNNING"); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PerspectivePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PerspectivePacket.java deleted file mode 100644 index 5ed36d5..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PerspectivePacket.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.Perspective; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Notifies clients that the main screen perspective has changed. - * @author rjwut - */ -public class PerspectivePacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x12; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return PerspectivePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new PerspectivePacket(reader); - } - }); - } - - private Perspective mPerspective; - - private PerspectivePacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - mPerspective = Perspective.values()[reader.readInt()]; - } - - public PerspectivePacket(Perspective perspective) { - super(ConnectionType.SERVER, TYPE); - - if (perspective == null) { - throw new IllegalArgumentException("You must provide a Perspective"); - } - - mPerspective = perspective; - } - - /** - * Returns the Perspective specified by this packet. - */ - public Perspective getPerspective() { - return mPerspective; - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mPerspective.name()); - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE).writeInt(mPerspective.ordinal()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PlayerShipDamagePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PlayerShipDamagePacket.java deleted file mode 100644 index 2a1cef8..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/PlayerShipDamagePacket.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -public class PlayerShipDamagePacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - - public static void register(PacketFactoryRegistry registry) { - PacketFactory factory = new PacketFactory() { - @Override - public Class getFactoryClass() { - return PlayerShipDamagePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new PlayerShipDamagePacket(reader); - } - }; - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, factory); - } - - public static final byte MSG_TYPE = 0x05; - - private byte[] unknown0; - private byte[] unknown1; - - private PlayerShipDamagePacket(PacketReader reader) throws ArtemisPacketException { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new ArtemisPacketException( - "Expected subtype " + MSG_TYPE + ", got " + subtype - ); - } - - unknown0 = reader.readBytes(4); - unknown1 = reader.readBytes(4); - } - - public PlayerShipDamagePacket() { - super(ConnectionType.SERVER, TYPE); - unknown0 = new byte[] { 0, 0, 0, 0 }; - unknown1 = unknown0; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE).writeBytes(unknown0).writeBytes(unknown1); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - // do nothing - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/SetMainScreenPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/SetMainScreenPacket.java deleted file mode 100644 index 05d27f3..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/SetMainScreenPacket.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.MainScreenView; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; - -/** - * Set what to show on the MainScreen - * @author dhleong - */ -public class SetMainScreenPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_MAINSCREEN, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return SetMainScreenPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new SetMainScreenPacket(reader); - } - }); - } - - /** - * @param screen The enum value representing the desired view - */ - public SetMainScreenPacket(MainScreenView screen) { - super(TYPE_MAINSCREEN, screen != null ? screen.ordinal() : -1); - - if (screen == null) { - throw new IllegalArgumentException("You must specify a view"); - } - } - - private SetMainScreenPacket(PacketReader reader) { - super(TYPE_MAINSCREEN, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(MainScreenView.values()[mArg]); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/ShipActionPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/ShipActionPacket.java deleted file mode 100644 index 6b5565d..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/ShipActionPacket.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -/** - * A superclass for handling all type 0x4c821d3c client packets. - * @author rjwut - */ -public abstract class ShipActionPacket extends BaseArtemisPacket { - protected static final int TYPE = 0x4c821d3c; - - protected static final byte TYPE_WARPSPEED = 0x00; - protected static final byte TYPE_MAINSCREEN = 0x01; - protected static final byte TYPE_SET_TARGET = 0x02; - protected static final byte TYPE_TOGGLE_AUTO_BEAMS = 0x03; - protected static final byte TYPE_TOGGLE_SHIELDS = 0x04; - - protected static final byte TYPE_REQUEST_DOCK = 0x07; - protected static final byte TYPE_FIRE_TUBE = 0x08; - protected static final byte TYPE_UNLOAD_TUBE = 0x09; - protected static final byte TYPE_TOGGLE_REDALERT = 0x0a; - protected static final byte TYPE_SET_BEAMFREQ = 0x0b; - protected static final byte TYPE_AUTO_DAMCON = 0x0c; - protected static final byte TYPE_SET_SHIP = 0x0d; - protected static final byte TYPE_SET_CONSOLE = 0x0e; - protected static final byte TYPE_READY = 0x0f; - protected static final byte TYPE_SCI_SELECT = 0x10; - protected static final byte TYPE_CAPTAIN_SELECT = 0x11; - protected static final byte TYPE_GAME_MASTER_SELECT = 0x12; - protected static final byte TYPE_SCI_SCAN = 0x13; - protected static final byte TYPE_KEYSTROKE = 0x14; - - protected static final byte TYPE_SHIP_SETUP = 0x16; - - protected static final byte TYPE_REVERSE_ENGINES = 0x18; - protected static final byte TYPE_READY2 = 0x19; - protected static final byte TYPE_TOGGLE_PERSPECTIVE = 0x1a; - - private byte mSubType; - protected int mArg = -1; - - /** - * Use this constructor if you intend to override writePayload() with your - * own implementation and not call ShipActionPacket.writePayload(). - * @param subType The desired packet subtype - */ - public ShipActionPacket(byte subType) { - super(ConnectionType.CLIENT, TYPE); - mSubType = subType; - } - - /** - * Use this constructor if the packet has a single int argument that is - * written to the payload after the subtype. In this case, you will not need - * to override writePayload(). - * @param subType The desired packet subtype - * @param arg A single argument to write to the payload after the subtype - */ - public ShipActionPacket(byte subType, int arg) { - this(subType); - mArg = arg; - } - - protected ShipActionPacket(byte subType, PacketReader reader) { - this(subType); - reader.skip(4); // subtype - mArg = reader.readInt(); - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(mSubType); - writer.writeInt(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/SkyboxPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/SkyboxPacket.java deleted file mode 100644 index 4ddd258..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/SkyboxPacket.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -public class SkyboxPacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x09; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return SkyboxPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new SkyboxPacket(reader); - } - }); - } - - private int mSkyboxId; - - private SkyboxPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - mSkyboxId = reader.readInt(); - } - - public SkyboxPacket(int offset) { - super(ConnectionType.SERVER, TYPE); - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE).writeInt(mSkyboxId); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mSkyboxId); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/TogglePerspectivePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/TogglePerspectivePacket.java deleted file mode 100644 index 433232a..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/TogglePerspectivePacket.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; - -/** - * Toggles between first- and third-person perspectives on the main screen. Note - * that you cannot specify which perspective you want; you can only indicate - * that you want to switch from the current one to the other. - * @author rjwut - */ -public class TogglePerspectivePacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_TOGGLE_PERSPECTIVE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return TogglePerspectivePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new TogglePerspectivePacket(reader); - } - }); - } - - public TogglePerspectivePacket() { - super(TYPE_TOGGLE_PERSPECTIVE, 0); - } - - private TogglePerspectivePacket(PacketReader reader) { - super(TYPE_TOGGLE_PERSPECTIVE, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - // do nothing - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/ToggleShieldsPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/ToggleShieldsPacket.java deleted file mode 100644 index 6dc5c02..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/ToggleShieldsPacket.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.dhleong.acl.protocol.core; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; - -/** - * Toggle shields - * @author dhleong - */ -public class ToggleShieldsPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_TOGGLE_SHIELDS, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return ToggleShieldsPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new ToggleShieldsPacket(reader); - } - }); - } - - public ToggleShieldsPacket() { - super(TYPE_TOGGLE_SHIELDS, 0); - } - - private ToggleShieldsPacket(PacketReader reader) { - super(TYPE_TOGGLE_SHIELDS, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - // do nothing - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/AudioCommandPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/AudioCommandPacket.java deleted file mode 100644 index 3d1f557..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/AudioCommandPacket.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.dhleong.acl.protocol.core.comm; - -import net.dhleong.acl.enums.AudioCommand; -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -/** - * Plays or deletes an audio message. - */ -public class AudioCommandPacket extends BaseArtemisPacket { - private static final int TYPE = 0x6aadc57f; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return AudioCommandPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new AudioCommandPacket(reader); - } - }); - } - - private int audioId; - private AudioCommand cmd; - - /** - * @param audioId The ID of the audio message to which the command applies - * @param cmd The command to issue (PLAY or DELETE) - */ - public AudioCommandPacket(int audioId, AudioCommand cmd) { - super(ConnectionType.CLIENT, TYPE); - - if (cmd == null) { - throw new IllegalArgumentException("You must provide a command"); - } - - this.audioId = audioId; - this.cmd = cmd; - } - - private AudioCommandPacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - audioId = reader.readInt(); - cmd = AudioCommand.values()[reader.readInt()]; - } - - public int getAudioId() { - return audioId; - } - - public AudioCommand getCommand() { - return cmd; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(audioId).writeInt(cmd.ordinal()); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(cmd).append(" msg #").append(audioId); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/CommsIncomingPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/CommsIncomingPacket.java deleted file mode 100644 index da40333..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/CommsIncomingPacket.java +++ /dev/null @@ -1,100 +0,0 @@ -package net.dhleong.acl.protocol.core.comm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -/** - * Received when an incoming COMMs message arrives. - */ -public class CommsIncomingPacket extends BaseArtemisPacket { - private static final int TYPE = 0xD672C35F; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return CommsIncomingPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new CommsIncomingPacket(reader); - } - }); - } - - private final int mPriority; - private final String mFrom; - private final String mMessage; - - private CommsIncomingPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - mPriority = reader.readInt(); - mFrom = reader.readString(); - mMessage = reader.readString().replace('^', '\n'); - } - - public CommsIncomingPacket(int priority, String from, String message) { - super(ConnectionType.SERVER, TYPE); - - if (priority < 0 || priority > 8) { - throw new IllegalArgumentException("Invalid priority: " + priority); - } - - if (from == null) { - throw new IllegalArgumentException("You must provide a sender name"); - } - - if (message == null) { - throw new IllegalArgumentException("You must provide a message"); - } - - mPriority = priority; - mFrom = from; - mMessage = message; - } - - /** - * Returns the message priority, with lower values having higher priority. - * @return An integer between 0 and 8, inclusive - */ - public int getPriority() { - return mPriority; - } - - /** - * A String identifying the sender. This may not correspond to the name of - * a game entity. For example, some messages from bases or friendly ships - * have additional detail after the entity's name ("DS3 TSN Base"). Messages - * in scripted scenarios can have any String for the sender. - */ - public String getFrom() { - return mFrom; - } - - /** - * The content of the message. - */ - public String getMessage() { - return mMessage; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(mPriority); - writer.writeString(mFrom); - writer.writeString(mMessage.replace('\n', '^')); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append("from ").append(mFrom).append(": ").append(mMessage); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacket.java deleted file mode 100644 index 57ba934..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacket.java +++ /dev/null @@ -1,151 +0,0 @@ -package net.dhleong.acl.protocol.core.comm; - -import net.dhleong.acl.enums.CommsMessage; -import net.dhleong.acl.enums.CommsRecipientType; -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Sends a message to another entity. - */ -public class CommsOutgoingPacket extends BaseArtemisPacket { - private static final int TYPE = 0x574C4C4b; - public static final int NO_ARG = 0x00730078; - private static final int NO_ARG_2 = 0x004f005e; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return CommsOutgoingPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new CommsOutgoingPacket(reader); - } - }); - } - - private CommsRecipientType mRecipientType; - private int mRecipientId; - private CommsMessage mMsg; - private int mArg; - - /** - * Use this constructor for messages which do not have an argument; - * otherwise, an IllegalArgumentException will be thrown. - * @param target The message recipient - * @param msg The message to be sent - */ - public CommsOutgoingPacket(ArtemisObject target, CommsMessage msg) { - super(ConnectionType.CLIENT, TYPE); - - if (msg.hasArgument()) { - throw new IllegalArgumentException( - "Message " + msg + " requires an argument" - ); - } - - init(target, msg, NO_ARG); - } - - /** - * Use this constructor for messages which have an argument; otherwise, an - * IllegalArgumentException will be thrown. At this writing only the - * {@link net.dhleong.acl.enums.OtherMessage#GO_DEFEND} - * message has an argument, which is the ID of the object to be defended. - */ - public CommsOutgoingPacket(ArtemisObject recipient, CommsMessage msg, - int arg) { - super(ConnectionType.CLIENT, TYPE); - - if (!msg.hasArgument()) { - throw new IllegalArgumentException( - "Message " + msg + " does not accept an argument" - ); - } - - init(recipient, msg, arg); - } - - private CommsOutgoingPacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - mRecipientType = CommsRecipientType.values()[reader.readInt()]; - mRecipientId = reader.readInt(); - mMsg = mRecipientType.messageFromId(reader.readInt()); - mArg = reader.readInt(); - reader.skip(4); // arg 2 placeholder - } - - private void init(ArtemisObject recipient, CommsMessage msg, int arg) { - if (recipient == null) { - throw new IllegalArgumentException("You must provide a recipient"); - } - - if (msg == null) { - throw new IllegalArgumentException("You must provide a message"); - } - - mRecipientType = CommsRecipientType.fromObject(recipient); - - if (mRecipientType == null) { - throw new IllegalArgumentException("Recipient cannot receive messages"); - } - - CommsRecipientType messageRecipientType = msg.getRecipientType(); - - if (mRecipientType != messageRecipientType) { - throw new IllegalArgumentException( - "Recipient type is " + mRecipientType + - ", but message recipient type is " + messageRecipientType - ); - } - - mRecipientId = recipient.getId(); - mMsg = msg; - mArg = arg; - } - - public CommsRecipientType getRecipientType() { - return mRecipientType; - } - - public int getRecipientId() { - return mRecipientId; - } - - public CommsMessage getMessage() { - return mMsg; - } - - public int getArgument() { - return mArg; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer .writeInt(mRecipientType.ordinal()) - .writeInt(mRecipientId) - .writeInt(mMsg.getId()) - .writeInt(mArg) - .writeInt(NO_ARG_2); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append("to obj #").append(mRecipientId).append(": ").append(mMsg); - - if (mArg != NO_ARG) { - b.append(" object #").append(mArg); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/IncomingAudioPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/IncomingAudioPacket.java deleted file mode 100644 index 10b2a5b..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/IncomingAudioPacket.java +++ /dev/null @@ -1,134 +0,0 @@ -package net.dhleong.acl.protocol.core.comm; - -import net.dhleong.acl.enums.AudioMode; -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -/** - * Received when an incoming COMMs audio message arrives. - * @author dhleong - */ -public class IncomingAudioPacket extends BaseArtemisPacket { - private static final int TYPE = 0xae88e058; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return IncomingAudioPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new IncomingAudioPacket(reader); - } - }); - } - - private final int mId; - private final AudioMode mMode; - private final String mTitle; - private final String mFile; - - private IncomingAudioPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - mId = reader.readInt(); - mMode = AudioMode.values()[reader.readInt() - 1]; - - if (mMode == AudioMode.INCOMING) { - mTitle = reader.readString(); - mFile = reader.readString(); - } else { - mTitle = null; - mFile = null; - } - } - - /** - * Indicates that the audio message with the given ID has started playing - * (Mode.PLAYING). - */ - public IncomingAudioPacket(int id) { - super(ConnectionType.SERVER, TYPE); - mId = id; - mMode = AudioMode.PLAYING; - mTitle = null; - mFile = null; - } - - /** - * Indicates that there is an incoming audio message (Mode.INCOMING). - */ - public IncomingAudioPacket(int id, String title, String file) { - super(ConnectionType.SERVER, TYPE); - mId = id; - mMode = AudioMode.INCOMING; - mTitle = title; - mFile = file; - } - - /** - * The ID assigned to this audio message. - */ - public int getAudioId() { - return mId; - } - - /** - * The file name for this audio message. This will only be populated if - * getAudioMode() returns IncomingAudioPacket.Mode.INCOMING; otherwise, it - * returns null. - */ - public String getFileName() { - return mFile; - } - - /** - * The title for this audio message. This will only be populated if - * getAudioMode() returns IncomingAudioPacket.Mode.INCOMING; otherwise, it - * returns null. - */ - public String getTitle() { - return mTitle; - } - - @Override - public ConnectionType getConnectionType() { - return ConnectionType.SERVER; - } - - /** - * Indicates whether this packet indicates that the message is available - * (INCOMING) or playing (PLAYING). - */ - public AudioMode getAudioMode() { - return mMode; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(mId); - writer.writeInt(mMode.ordinal() + 1); - - if (mMode == AudioMode.INCOMING) { - writer.writeString(mTitle); - writer.writeString(mFile); - } - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append('#').append(mId).append(' ').append(mMode); - - if (mMode == AudioMode.INCOMING) { - b.append(": ").append(mTitle); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacket.java deleted file mode 100644 index c1d0f0c..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacket.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.dhleong.acl.protocol.core.comm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; - -/** - * Toggles red alert on and off. - */ -public class ToggleRedAlertPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_TOGGLE_REDALERT, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return ToggleRedAlertPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new ToggleRedAlertPacket(reader); - } - }); - } - - public ToggleRedAlertPacket() { - super(TYPE_TOGGLE_REDALERT, 0); - } - - private ToggleRedAlertPacket(PacketReader reader) { - super(TYPE_TOGGLE_REDALERT, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - // do nothing - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacket.java deleted file mode 100644 index 6b181f5..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacket.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -public class EngAutoDamconUpdatePacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x0b; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return EngAutoDamconUpdatePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new EngAutoDamconUpdatePacket(reader); - } - }); - } - - private final boolean mOn; - - private EngAutoDamconUpdatePacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - mOn = reader.readInt() == 1; - } - - public EngAutoDamconUpdatePacket(String name, boolean on) { - super(ConnectionType.SERVER, TYPE); - mOn = on; - } - - /** - * Returns true if autonomous DAMCON was turned on; false if turned off. - */ - public boolean isOn() { - return mOn; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE).writeInt(mOn ? 1 : 0); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mOn ? "ON" : "OFF"); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacket.java deleted file mode 100644 index e2af3ea..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacket.java +++ /dev/null @@ -1,300 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import java.util.ArrayList; -import java.util.List; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.util.GridCoord; - -/** - * Updates damage to the various system grids on the ship, as well as DamCon - * team status/location. - * @author dhleong - */ -public class EngGridUpdatePacket extends BaseArtemisPacket { - private static final int TYPE = 0x77e9f3c; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return EngGridUpdatePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new EngGridUpdatePacket(reader); - } - }); - } - - private static final byte END_GRID_MARKER = (byte) 0xff; - private static final byte END_DAMCON_MARKER = (byte) 0xfe; - private static final int TEAM_NUMBER_OFFSET = 0x0a; - private static final float PROGRESS_EPSILON = 0.001f; - - private List mDamage = new ArrayList(); - private List mDamconUpdates = new ArrayList(); - - /** - * Creates a new EngGridUpdatePacket with no updates. Use the - * addDamageUpdate() and addDamconUpdate() methods to add update information - * to this packet. - */ - public EngGridUpdatePacket() { - super(ConnectionType.SERVER, TYPE); - } - - private EngGridUpdatePacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - reader.readUnknown("Unknown", 1); - - while (reader.peekByte() != END_GRID_MARKER) { - GridCoord coord = GridCoord.getInstance( - reader.readByte(), - reader.readByte(), - reader.readByte() - ); - float damage = reader.readFloat(); - mDamage.add(new GridDamage(coord, damage)); - } - - reader.skip(1); // read the 0xff byte - - while (reader.peekByte() != END_DAMCON_MARKER) { - byte teamIndicator = reader.readByte(); - int teamNumber = teamIndicator - TEAM_NUMBER_OFFSET; - int xGoal = reader.readInt(); - int x = reader.readInt(); - int yGoal = reader.readInt(); - int y = reader.readInt(); - int zGoal = reader.readInt(); - int z = reader.readInt(); - float progress = reader.readFloat(); - int members = reader.readInt(); - addDamconUpdate(teamNumber, members, xGoal, yGoal, zGoal, x, y, z, - progress); - } - - reader.skip(1); // read the 0xfe byte - } - - /** - * Adds a damage update to this packet. - */ - public void addDamageUpdate(int x, int y, int z, float damage) { - mDamage.add(new GridDamage(GridCoord.getInstance(x, y, z), damage)); - } - - /** - * Adds a DAMCON team update to this packet. - */ - public void addDamconUpdate(int teamNumber, int members, int xGoal, - int yGoal, int zGoal, int x, int y, int z, float progress) { - mDamconUpdates.add(new DamconStatus(teamNumber, members, xGoal, yGoal, - zGoal, x, y, z, progress)); - } - - /** - * Returns a List of GridDamage objects that describe the damage data - * encoded in this packet. - */ - public List getDamage() { - return mDamage; - } - - /** - * Returns a List of DamconStatus objects that provide the DAMCON team - * updates encoded in this packet. - */ - public List getDamcons() { - return mDamconUpdates; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeByte((byte) 1); // unknown - - for (GridDamage damage : mDamage) { - GridCoord coord = damage.coord; - writer .writeByte((byte) coord.getX()) - .writeByte((byte) coord.getY()) - .writeByte((byte) coord.getZ()) - .writeFloat(damage.damage); - } - - writer.writeByte(END_GRID_MARKER); - - for (DamconStatus update : mDamconUpdates) { - writer .writeByte((byte) (update.teamNumber + TEAM_NUMBER_OFFSET)) - .writeInt(update.goal.getX()) - .writeInt(update.pos.getX()) - .writeInt(update.goal.getY()) - .writeInt(update.pos.getY()) - .writeInt(update.goal.getZ()) - .writeInt(update.pos.getZ()) - .writeFloat(update.progress) - .writeInt(update.members); - } - - writer.writeByte(END_DAMCON_MARKER); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append("\nDamage updates:"); - - if (mDamage.isEmpty()) { - b.append("\n\tnone"); - } else { - for (GridDamage damage : mDamage) { - b.append("\n\t").append(damage); - } - } - - b.append("\nDAMCON status updates:"); - - if (mDamconUpdates.isEmpty()) { - b.append("\n\tnone"); - } else { - for (DamconStatus status : mDamconUpdates) { - b.append("\n\t").append(status); - } - } - } - - - /** - * Updates the level of damage to a node in the system grid. - * @author dhleong - */ - public static final class GridDamage { - private final GridCoord coord; - private final float damage; - - private GridDamage(GridCoord coord, float damage) { - this.coord = coord; - this.damage = damage; - } - - public GridCoord getCoord() { - return coord; - } - - public float getDamage() { - return damage; - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof GridDamage)) { - return false; - } - - GridDamage cast = (GridDamage) other; - return coord.equals(cast.coord); - } - - @Override - public int hashCode() { - return coord.hashCode(); - } - - @Override - public String toString() { - return coord + ": " + damage; - } - } - - /** - * Updates the status of a DAMCON team. - * @author dhleong - */ - public static final class DamconStatus { - private int teamNumber, members; - private GridCoord goal; - private GridCoord pos; - private float progress; - - public DamconStatus(int teamNumber, int members, int xGoal, - int yGoal, int zGoal, int x, int y, int z, float progress) { - this.teamNumber = teamNumber; - this.members = members; - goal = GridCoord.getInstance(xGoal, yGoal, zGoal); - pos = GridCoord.getInstance(x, y, z); - this.progress = progress; - } - - /** - * The number assigned to this DAMCON team. - */ - public int getTeamNumber() { - return teamNumber; - } - - /** - * The number of people in this DAMCON team that are still alive. - */ - public int getMembers() { - return members; - } - - /** - * The coordinates of the DAMCON team's current location. - */ - public GridCoord getPosition() { - return pos; - } - - /** - * The coordinates of the DAMCON team's goal. - */ - public GridCoord getGoal() { - return goal; - } - - /** - * The DAMCON team's progress towards their destination. - */ - public float getProgress() { - return progress; - } - - public void updateFrom(DamconStatus other) { - this.members = other.members; - - if (other.progress < PROGRESS_EPSILON && progress > 0) { - this.pos = goal; - } else { - this.pos = other.pos; - } - - this.goal = other.goal; - this.progress = other.progress; - } - - @Override - public String toString() { - StringBuilder b = new StringBuilder(); - b.append("Team #").append(teamNumber) - .append(" (").append(members).append("): ") - .append(pos) - .append(" => ") - .append(goal) - .append(" (").append(progress).append(")"); - return b.toString(); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSendDamconPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSendDamconPacket.java deleted file mode 100644 index 07b98ed..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSendDamconPacket.java +++ /dev/null @@ -1,102 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; -import net.dhleong.acl.util.GridCoord; - -/** - * Send a DAMCON team to a grid location. - * @author dhleong - */ -public class EngSendDamconPacket extends BaseArtemisPacket { - private static final int TYPE = 0x69CC01D9; - private static final byte SUBTYPE = 0x04; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, SUBTYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return EngSendDamconPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new EngSendDamconPacket(reader); - } - }); - } - - private int mTeamNumber; - private GridCoord mCoord; - - /** - * Send the team to grid node at x,y,z. - * @param teamNumber int [0, TEAMS) where TEAMS is probably 3 - * @param x Destination X-coordinate in the system grid - * @param y Destination Y-coordinate in the system grid - * @param z Destination Z-coordinate in the system grid - */ - public EngSendDamconPacket(int teamNumber, int x, int y, int z) { - super(ConnectionType.CLIENT, TYPE); - - if (teamNumber < 0) { - throw new IllegalArgumentException( - "DAMCON team number can't be less than 0" - ); - } - - mTeamNumber = teamNumber; - mCoord = GridCoord.getInstance(x, y, z); - } - - /** - * @param teamNumber int [0, TEAMS) where TEAMS is probably 3 - * @param coord Destination coordinates in the system grid - */ - public EngSendDamconPacket(int teamNumber, GridCoord coord) { - this(teamNumber, coord.getX(), coord.getY(), coord.getZ()); - } - - private EngSendDamconPacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - int subtype = reader.readInt(); - - if (subtype != SUBTYPE) { - throw new UnexpectedTypeException(subtype, SUBTYPE); - } - - mTeamNumber = reader.readInt(); - mCoord = GridCoord.getInstance(reader.readInt(), reader.readInt(), reader.readInt()); - } - - public int getTeamNumber() { - return mTeamNumber; - } - - public GridCoord getDestination() { - return mCoord; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer .writeInt(SUBTYPE) - .writeInt(mTeamNumber) - .writeInt(mCoord.getX()) - .writeInt(mCoord.getY()) - .writeInt(mCoord.getZ()); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append("Team #").append(mTeamNumber).append(" to ").append(mCoord); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacket.java deleted file mode 100644 index 9909491..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacket.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; - -/** - * Set whether DAMCON teams should be autonomous or not. - * @author dhleong - */ -public class EngSetAutoDamconPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_AUTO_DAMCON, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return EngSetAutoDamconPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new EngSetAutoDamconPacket(reader); - } - }); - } - - /** - * @param autonomous Whether DAMCON teams should be autonomous - */ - public EngSetAutoDamconPacket(boolean autonomous) { - super(TYPE_AUTO_DAMCON, autonomous ? 1 : 0); - } - - private EngSetAutoDamconPacket(PacketReader reader) { - super(TYPE_AUTO_DAMCON, reader); - } - - public boolean isAutonomous() { - return mArg == 1; - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mArg == 1 ? "on" : "off"); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacket.java deleted file mode 100644 index a9ac6e8..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacket.java +++ /dev/null @@ -1,93 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Set the amount of coolant in a system. - * @author dhleong - */ -public class EngSetCoolantPacket extends BaseArtemisPacket { - private static final int TYPE = 0x69CC01D9; - private static final byte SUBTYPE = 0x00; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, SUBTYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return EngSetCoolantPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new EngSetCoolantPacket(reader); - } - }); - } - - private ShipSystem mSystem; - private int mCoolant; - - /** - * @param system The ShipSystem whose coolant level is to be set - * @param coolant The amount of coolant to allocate - */ - public EngSetCoolantPacket(ShipSystem system, int coolant) { - super(ConnectionType.CLIENT, TYPE); - - if (system == null) { - throw new IllegalArgumentException("You must provide a system"); - } - - if (coolant < 0) { - throw new IllegalArgumentException( - "You cannot allocate a negative amount of coolant" - ); - } - - mSystem = system; - mCoolant = coolant; - } - - private EngSetCoolantPacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - int subtype = reader.readInt(); - - if (subtype != SUBTYPE) { - throw new UnexpectedTypeException(subtype, SUBTYPE); - } - - mSystem = ShipSystem.values()[reader.readInt()]; - mCoolant = reader.readInt(); - } - - public ShipSystem getSystem() { - return mSystem; - } - - public int getCoolant() { - return mCoolant; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer .writeInt(SUBTYPE) - .writeInt(mSystem.ordinal()) - .writeInt(mCoolant); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mSystem).append(" = ").append(mCoolant); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacket.java deleted file mode 100644 index 42c9ea4..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacket.java +++ /dev/null @@ -1,115 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; -import net.dhleong.acl.world.Artemis; - -/** - * Sets the amount of energy allocated to a system. - */ -public class EngSetEnergyPacket extends BaseArtemisPacket { - private static final int TYPE = 0x0351a5ac; - private static final byte SUBTYPE = 0x04; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, SUBTYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return EngSetEnergyPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new EngSetEnergyPacket(reader); - } - }); - } - - private ShipSystem mSystem; - private float mValue; - - /** - * Sets the given system's energy allocation. - * @param system The ShipSystem whose energy allocation is to be set - * @param value A number between 0 (no energy) and 1 (max possible energy), - * inclusive. A value of 0.333333... is the default allocation level. - */ - public EngSetEnergyPacket(ShipSystem system, float value) { - super(ConnectionType.CLIENT, TYPE); - - if (system == null) { - throw new IllegalArgumentException("You must provide a system"); - } - - if (value < 0) { - throw new IllegalArgumentException( - "You cannot allocate a negative amount of energy" - ); - } - - if (value > 1) { - throw new IllegalArgumentException( - "You cannot allocate more than " + - Artemis.MAX_ENERGY_ALLOCATION_PERCENT + "% energy" - ); - } - - mSystem = system; - mValue = value; - } - - /** - * Sets the given system's energy allocation. - * @param system The ShipSystem whose energy allocation is to be set - * @param percentage A number between 0 (no energy) and 300 (max possible - * energy), inclusive. This value corresponds to the energy allocation - * percentage as seen in the UI. A value of 100 (100%) is the default - * allocation level. - */ - public EngSetEnergyPacket(ShipSystem system, int percentage) { - this(system, percentage / (float) Artemis.MAX_ENERGY_ALLOCATION_PERCENT); - } - - private EngSetEnergyPacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - int subtype = reader.readInt(); - - if (subtype != SUBTYPE) { - throw new UnexpectedTypeException(subtype, SUBTYPE); - } - - mValue = reader.readFloat(); - mSystem = ShipSystem.values()[reader.readInt()]; - } - - public ShipSystem getSystem() { - return mSystem; - } - - public float getAllocation() { - return mValue; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer .writeInt(SUBTYPE) - .writeFloat(mValue) - .writeInt(mSystem.ordinal()); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b .append(mSystem).append(" = ") - .append(mValue * Artemis.MAX_ENERGY_ALLOCATION_PERCENT).append('%'); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/ClimbDivePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/ClimbDivePacket.java deleted file mode 100644 index 6e665ec..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/ClimbDivePacket.java +++ /dev/null @@ -1,76 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Changes the ship's trim, causing it to climb, dive or level out. - * @author rjwut - */ -public class ClimbDivePacket extends BaseArtemisPacket { - private static final int TYPE = 0x4C821D3C; - private static final byte SUBTYPE = 0x1b; - private static final int UP = -1; - private static final int DOWN = 1; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, SUBTYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return ClimbDivePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new ClimbDivePacket(reader); - } - }); - } - - private boolean mUp; - - /** - * Giving an "up" command while diving causes the ship to level out; giving - * a second "up" command causes it to start climbing. The "down" command - * does the reverse. - * @param up True if you want to tilt the ship up, false to tilt it down. - */ - public ClimbDivePacket(boolean up) { - super(ConnectionType.CLIENT, TYPE); - this.mUp = up; - } - - private ClimbDivePacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - int subtype = reader.readInt(); - - if (subtype != SUBTYPE) { - throw new UnexpectedTypeException(subtype, SUBTYPE); - } - - mUp = reader.readInt() == UP; - } - - public boolean isUp() { - return mUp; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(SUBTYPE).writeInt(mUp ? UP : DOWN); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mUp ? "up" : "down"); - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmJumpPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmJumpPacket.java deleted file mode 100644 index 72538e9..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmJumpPacket.java +++ /dev/null @@ -1,93 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Initiate a jump. There is no confirmation; that's all client-side. - * @author dhleong - */ -public class HelmJumpPacket extends BaseArtemisPacket { - private static final int TYPE = 0x0351A5AC; - private static final byte SUBTYPE = 0x05; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, SUBTYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return HelmJumpPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new HelmJumpPacket(reader); - } - }); - } - - private float mHeading; - private float mDistance; - - /** - * Initiates a jump for the indicated direction and distance. - * @param heading Heading as a percentage of 360 - * @param distance Distance as a percentage of the max possible jump - * distance, 50K - */ - public HelmJumpPacket(float heading, float distance) { - super(ConnectionType.CLIENT, TYPE); - - if (heading < 0 || heading > 1) { - throw new IllegalArgumentException("Heading out of range"); - } - - if (distance < 0 || distance > 1) { - throw new IllegalArgumentException("Distance out of range"); - } - - mHeading = heading; - mDistance = distance; - } - - private HelmJumpPacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - int subtype = reader.readInt(); - - if (subtype != SUBTYPE) { - throw new UnexpectedTypeException(subtype, SUBTYPE); - } - - mHeading = reader.readFloat(); - mDistance = reader.readFloat(); - } - - public float getHeading() { - return mHeading; - } - - public float getDistance() { - return mDistance; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer .writeInt(SUBTYPE) - .writeFloat(mHeading) - .writeFloat(mDistance); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append("heading = ").append(mHeading * 360) - .append(" deg; distance = ").append(mDistance * 50).append('k'); - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacket.java deleted file mode 100644 index 926f889..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacket.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; - -/** - * Request to dock. The request is automatically targeted at the nearest - * base. - * @author dhleong - */ -public class HelmRequestDockPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_REQUEST_DOCK, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return HelmRequestDockPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new HelmRequestDockPacket(reader); - } - }); - } - - public HelmRequestDockPacket() { - super(TYPE_REQUEST_DOCK, 0); - } - - private HelmRequestDockPacket(PacketReader reader) { - super(TYPE_REQUEST_DOCK, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - // do nothing - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacket.java deleted file mode 100644 index 413a0ee..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacket.java +++ /dev/null @@ -1,76 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Set climb/dive. - */ -public class HelmSetClimbDivePacket extends BaseArtemisPacket { - private static final int TYPE = 0x0351A5AC; - private static final byte SUBTYPE = 0x02; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, SUBTYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return HelmSetClimbDivePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new HelmSetClimbDivePacket(reader); - } - }); - } - - private float mPitch; - - /** - * @param pitch steering float in [-1, 1], where 0.0 is "centered" (neither - * climbing nor diving, 1.0 is hard dive, -1.0 is hard climb - */ - public HelmSetClimbDivePacket(float pitch) { - super(ConnectionType.CLIENT, TYPE); - - if (pitch < -1 || pitch > 1) { - throw new IllegalArgumentException("Pitch out of range"); - } - - mPitch = pitch; - } - - private HelmSetClimbDivePacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - int subtype = reader.readInt(); - - if (subtype != SUBTYPE) { - throw new UnexpectedTypeException(subtype, SUBTYPE); - } - - mPitch = reader.readFloat(); - } - - public float getPitch() { - return mPitch; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(SUBTYPE).writeFloat(mPitch); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mPitch); - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacket.java deleted file mode 100644 index c12de2d..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacket.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Set impulse power. - * @author dhleong - */ -public class HelmSetImpulsePacket extends BaseArtemisPacket { - private static final int TYPE = 0x0351A5AC; - private static final byte SUBTYPE = 0x00; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, SUBTYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return HelmSetImpulsePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new HelmSetImpulsePacket(reader); - } - }); - } - - private float mPower; - - /** - * @param power Impulse power percentage (value between 0 and 1, inclusive) - */ - public HelmSetImpulsePacket(float power) { - super(ConnectionType.CLIENT, TYPE); - - if (power < 0 || power > 1) { - throw new IllegalArgumentException("Impulse power out of range"); - } - - mPower = power; - } - - private HelmSetImpulsePacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - int subtype = reader.readInt(); - - if (subtype != SUBTYPE) { - throw new UnexpectedTypeException(subtype, SUBTYPE); - } - - mPower = reader.readFloat(); - } - - public float getPower() { - return mPower; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(SUBTYPE).writeFloat(mPower); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mPower * 100).append('%'); - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacket.java deleted file mode 100644 index 68708e5..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacket.java +++ /dev/null @@ -1,79 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Set steering amount. Just like the actual console, you need to send one - * packet to start turning, then another to reset the steering angle to stop - * turning. - * @author dhleong - */ -public class HelmSetSteeringPacket extends BaseArtemisPacket { - private static final int TYPE = 0x0351A5AC; - private static final byte SUBTYPE = 0x01; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, SUBTYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return HelmSetSteeringPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new HelmSetSteeringPacket(reader); - } - }); - } - - private float mSteering; - - /** - * @param steering float in [0, 1], where 0.5 is "centered" (no turning), - * 0.0 is left (hard to port), 1.0 is right (hard to starboard) - */ - public HelmSetSteeringPacket(float steering) { - super(ConnectionType.CLIENT, TYPE); - - if (steering < 0 || steering > 1) { - throw new IllegalArgumentException("Steering out of range"); - } - - mSteering = steering; - } - - private HelmSetSteeringPacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - int subtype = reader.readInt(); - - if (subtype != SUBTYPE) { - throw new UnexpectedTypeException(subtype, SUBTYPE); - } - - mSteering = reader.readFloat(); - } - - public float getSteering() { - return mSteering; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(SUBTYPE).writeFloat(mSteering); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mSteering); - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetWarpPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetWarpPacket.java deleted file mode 100644 index 1d67da6..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmSetWarpPacket.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; -import net.dhleong.acl.world.Artemis; - -/** - * Set warp speed. - * @author dhleong - */ -public class HelmSetWarpPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_WARPSPEED, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return HelmSetWarpPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new HelmSetWarpPacket(reader); - } - }); - } - - /** - * @param warp Value between 0 (no warp) and 4 (max warp) - */ - public HelmSetWarpPacket(int warp) { - super(TYPE_WARPSPEED, warp); - - if (warp < 0 || warp > Artemis.MAX_WARP) { - throw new IndexOutOfBoundsException("Warp speed out of range"); - } - } - - private HelmSetWarpPacket(PacketReader reader) { - super(TYPE_WARPSPEED, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmToggleReversePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmToggleReversePacket.java deleted file mode 100644 index 8740fb7..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/HelmToggleReversePacket.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; - -/** - * Toggles reverse engines. - * @author dhleong - */ -public class HelmToggleReversePacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_REVERSE_ENGINES, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return HelmToggleReversePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new HelmToggleReversePacket(reader); - } - }); - } - - public HelmToggleReversePacket() { - super(TYPE_REVERSE_ENGINES, 0); - } - - private HelmToggleReversePacket(PacketReader reader) { - super(TYPE_REVERSE_ENGINES, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - // do nothing - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/JumpStatusPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/JumpStatusPacket.java deleted file mode 100644 index 03caaa4..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/helm/JumpStatusPacket.java +++ /dev/null @@ -1,87 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -/** - * Indicates that a jump has begun or ended. - * @author dhleong - */ -public class JumpStatusPacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - - public static void register(PacketFactoryRegistry registry) { - PacketFactory factory = new PacketFactory() { - @Override - public Class getFactoryClass() { - return JumpStatusPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new JumpStatusPacket(reader); - } - }; - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE_BEGIN, factory); - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE_END, factory); - } - - /** - * Jump "begin"; that is, the countdown has begun - */ - public static final byte MSG_TYPE_BEGIN = 0x0c; - - /** - * Jump "end"; there's still some cooldown (~5 seconds) - */ - public static final byte MSG_TYPE_END = 0x0d; - - private final boolean begin; - - private JumpStatusPacket(PacketReader reader) throws ArtemisPacketException { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype == MSG_TYPE_BEGIN) { - begin = true; - } else if (subtype == MSG_TYPE_END) { - begin = false; - } else { - throw new ArtemisPacketException( - "Expected subtype " + MSG_TYPE_BEGIN + " or " + - MSG_TYPE_END + ", got " + subtype - ); - } - } - - public JumpStatusPacket(boolean countingDown) { - super(ConnectionType.SERVER, TYPE); - begin = countingDown; - } - - /** - * Returns true if the jump is starting (countdown has begun); false if the - * jump has ended. - * @return - */ - public boolean isCountdown() { - return begin; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(begin ? MSG_TYPE_BEGIN : MSG_TYPE_END); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(begin ? "begin" : "end"); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/sci/SciScanPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/sci/SciScanPacket.java deleted file mode 100644 index d4b19e0..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/sci/SciScanPacket.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.dhleong.acl.protocol.core.sci; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Scans the indicated target. - */ -public class SciScanPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_SCI_SCAN, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return SciScanPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new SciScanPacket(reader); - } - }); - } - - /** - * @param target The target to scan - */ - public SciScanPacket(ArtemisObject target) { - super(TYPE_SCI_SCAN, target != null ? target.getId() : 0); - - if (target == null) { - throw new IllegalArgumentException("You must provide a target"); - } - } - - private SciScanPacket(PacketReader reader) { - super(TYPE_SCI_SCAN, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append('#').append(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/sci/SciSelectPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/sci/SciSelectPacket.java deleted file mode 100644 index 3447742..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/sci/SciSelectPacket.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.dhleong.acl.protocol.core.sci; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Sets the science officer's current target. - */ -public class SciSelectPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_SCI_SELECT, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return SciSelectPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new SciSelectPacket(reader); - } - }); - } - - /** - * @param target The target to select (or null to clear the taregt) - */ - public SciSelectPacket(ArtemisObject target) { - super(TYPE_SCI_SELECT, target == null ? 1 : target.getId()); - } - - public SciSelectPacket(PacketReader reader) { - super(TYPE_SCI_SELECT, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append('#').append(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/AllShipSettingsPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/AllShipSettingsPacket.java deleted file mode 100644 index 65a0eb3..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/AllShipSettingsPacket.java +++ /dev/null @@ -1,149 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.DriveType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; -import net.dhleong.acl.vesseldata.Vessel; -import net.dhleong.acl.vesseldata.VesselData; -import net.dhleong.acl.world.Artemis; - -/** - * Sent by the server to update the names, types and drives for each ship. - * @author dhleong - */ -public class AllShipSettingsPacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x0f; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return AllShipSettingsPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new AllShipSettingsPacket(reader); - } - }); - } - - public static class Ship { - private String mName; - private int mShipType; - private DriveType mDrive; - - public Ship(String name, int shipType, DriveType drive) { - mName = name; - mShipType = shipType; - mDrive = drive; - } - - public String getName() { - return mName; - } - - public int getShipType() { - return mShipType; - } - - public DriveType getDrive() { - return mDrive; - } - - @Override - public String toString() { - Vessel vessel = VesselData.get().getVessel(mShipType); - StringBuilder b = new StringBuilder(); - b .append(mName) - .append(" (") - .append(vessel != null ? vessel.getName() : "UNKNOWN TYPE") - .append(") [") - .append(mDrive) - .append(']'); - return b.toString(); - } - } - - private final Ship[] mShips; - - private AllShipSettingsPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - mShips = new Ship[Artemis.SHIP_COUNT]; - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - for (int i = 0; i < Artemis.SHIP_COUNT; i++) { - DriveType drive = DriveType.values()[reader.readInt()]; - int shipType = reader.readInt(); - reader.skip(4); // RJW: UNKNOWN INT (always seems to be 1 0 0 0) - String name = reader.readString(); - mShips[i] = new Ship(name, shipType, drive); - } - } - - public AllShipSettingsPacket(Ship[] ships) { - super(ConnectionType.SERVER, TYPE); - - if (ships.length != Artemis.SHIP_COUNT) { - throw new IllegalArgumentException( - "Must specify " + Artemis.SHIP_COUNT + " ships" - ); - } - - for (Ship ship : ships) { - if (ship == null) { - throw new IllegalArgumentException( - "Must specify " + Artemis.SHIP_COUNT + " ships" - ); - } - - if (ship.getDrive() == null) { - throw new IllegalArgumentException("Must specify ship drive"); - } - - String name = ship.getName(); - - if (name == null || name.trim().length() == 0) { - throw new IllegalArgumentException("Must specify ship name"); - } - } - - mShips = ships; - } - - public Ship getShip(int shipIndex) { - return mShips[shipIndex]; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE); - - for (Ship ship : mShips) { - writer.writeInt(ship.mDrive.ordinal()); - writer.writeInt(ship.mShipType); - writer.writeInt(1); // RJW: UNKNOWN INT (always seems to be 1 0 0 0) - writer.writeString(ship.mName); - } - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - for (int i = 0; i < Artemis.SHIP_COUNT; i++) { - b.append("\n\t").append(mShips[i]); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ConsoleStatusPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ConsoleStatusPacket.java deleted file mode 100644 index 898af22..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ConsoleStatusPacket.java +++ /dev/null @@ -1,118 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import net.dhleong.acl.enums.Console; -import net.dhleong.acl.enums.ConsoleStatus; -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.world.Artemis; - -/** - * Indicates which consoles are taken; received in response to a - * SetConsolePacket or SetShipPacket. - * @author dhleong - */ -public class ConsoleStatusPacket extends BaseArtemisPacket { - private static final int TYPE = 0x19c6e2d4; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return ConsoleStatusPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new ConsoleStatusPacket(reader); - } - }); - } - - private final int shipNumber; - private final ConsoleStatus[] statuses; - - private ConsoleStatusPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - shipNumber = reader.readInt(); - final Console[] consoleValues = Console.values(); - final ConsoleStatus[] statusValues = ConsoleStatus.values(); - statuses = new ConsoleStatus[consoleValues.length]; - - for (Console console : consoleValues) { - statuses[console.ordinal()] = statusValues[reader.readByte()]; - } - } - - public ConsoleStatusPacket(int shipNumber, ConsoleStatus[] statuses) { - super(ConnectionType.SERVER, TYPE); - - if (shipNumber < 1 || shipNumber > Artemis.SHIP_COUNT) { - throw new IllegalArgumentException( - "Ship number must be between 1 and " + Artemis.SHIP_COUNT - ); - } - - if (statuses.length != ConsoleStatus.values().length) { - throw new IllegalArgumentException( - "Must provide a status for each bridge console" - ); - } - - for (ConsoleStatus status : statuses) { - if (status == null) { - throw new IllegalArgumentException( - "Must provide a status for each bridge console" - ); - } - } - - this.shipNumber = shipNumber; - this.statuses = statuses; - } - - /** - * Returns the ship number whose consoles this packet reports. - */ - public int getShipNumber() { - return shipNumber; - } - - /** - * Get the status for a specific Console - * @param console The desired Console - * @return ConsoleStatus The status of that console - */ - public ConsoleStatus get(Console console) { - if (console == null) { - throw new IllegalArgumentException("You must specify a console"); - } - - return statuses[console.ordinal()]; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(shipNumber); - - for (ConsoleStatus status : statuses) { - writer.writeByte((byte) status.ordinal()); - } - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append("Ship #").append(shipNumber); - - for (Console console : Console.values()) { - ConsoleStatus status = statuses[console.ordinal()]; - b.append("\n\t").append(console).append(": ").append(status); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/DifficultyPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/DifficultyPacket.java deleted file mode 100644 index c4b887a..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/DifficultyPacket.java +++ /dev/null @@ -1,87 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.GameType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -public class DifficultyPacket extends BaseArtemisPacket { - private static final int TYPE = 0x3de66711; - public static final int MIN = 1; - public static final int MAX = 11; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return DifficultyPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new DifficultyPacket(reader); - } - }); - } - - private int difficulty; - private GameType gameType; - - private DifficultyPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - setDifficulty(reader.readInt()); - setGameType(GameType.values()[reader.readInt()]); - } - - public DifficultyPacket(int difficulty, GameType gameType) { - super(ConnectionType.SERVER, TYPE); - setDifficulty(difficulty); - setGameType(gameType); - } - - public int getDifficulty() { - return difficulty; - } - - public void setDifficulty(int difficulty) { - if (difficulty < MIN || difficulty > MAX) { - throw new IllegalArgumentException( - "Invalid difficulty level (" + - difficulty + - "); must be between " + - MIN + - " and " + - MAX - ); - } - - this.difficulty = difficulty; - } - - public GameType getGameType() { - return gameType; - } - - public void setGameType(GameType gameType) { - this.gameType = gameType; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(difficulty).writeInt(gameType.ordinal()); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b .append("difficulty = ") - .append(difficulty) - .append(", game type = ") - .append(gameType); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ReadyPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ReadyPacket.java deleted file mode 100644 index 5447051..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ReadyPacket.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; - -/** - * Signals to the server that this console is ready to join the game. If the - * ReadyPacket is sent before the game has started, the server will start - * sending updates when the game starts. If the ReadyPacket is sent after the - * game has started, the server sends updates immediately. Once a game has - * ended, the client must send another ReadyPacket before it will be sent - * updates again. - * @author dhleong - */ -public class ReadyPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_READY, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return ReadyPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new ReadyPacket(reader); - } - }); - } - - public ReadyPacket() { - super(TYPE_READY, 0); - } - - private ReadyPacket(PacketReader reader) { - super(TYPE_READY, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - // do nothing - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ReadyPacket2.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ReadyPacket2.java deleted file mode 100644 index 6ea6c12..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/ReadyPacket2.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; - -/** - * The official client sends this sometimes. We currently don't know why. It - * seems to work fine without it. - * @author dhleong - */ -public class ReadyPacket2 extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_READY2, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return ReadyPacket2.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new ReadyPacket2(reader); - } - }); - } - - public ReadyPacket2() { - super(TYPE_READY2, 0); - } - - private ReadyPacket2(PacketReader reader) { - super(TYPE_READY2, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - // do nothing - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetConsolePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetConsolePacket.java deleted file mode 100644 index ff7068b..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetConsolePacket.java +++ /dev/null @@ -1,76 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import net.dhleong.acl.enums.Console; -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.UnexpectedTypeException; -import net.dhleong.acl.protocol.core.ShipActionPacket; - -/** - * Take or relinquish a bridge console. - * @author dhleong - */ -public class SetConsolePacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_SET_CONSOLE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return SetConsolePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new SetConsolePacket(reader); - } - }); - } - - private Console mConsole; - private boolean mSelected; - - /** - * @param console The Console being updated - * @param selected Whether the player is taking this console or not - */ - public SetConsolePacket(Console console, boolean selected) { - super(TYPE_SET_CONSOLE); - - if (console == null) { - throw new IllegalArgumentException("You must specify a console"); - } - - mConsole = console; - mSelected = selected; - } - - private SetConsolePacket(PacketReader reader) { - super(TYPE_SET_CONSOLE); - int subtype = reader.readInt(); - - if (subtype != TYPE_SET_CONSOLE) { - throw new UnexpectedTypeException(subtype, TYPE_SET_CONSOLE); - } - - mConsole = Console.values()[reader.readInt()]; - mSelected = reader.readInt() == 1; - } - - @Override - public void writePayload(PacketWriter writer) { - writer .writeInt(TYPE_SET_CONSOLE) - .writeInt(mConsole.ordinal()) - .writeInt(mSelected ? 1 : 0); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mConsole).append(' ').append(mSelected ? "selected" : "deselected"); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetShipPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetShipPacket.java deleted file mode 100644 index 96a3d6b..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetShipPacket.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; - -/** - * Set the ship you want to be on. You must send this packet before - * SetConsolePacket. - * @author dhleong - */ -public class SetShipPacket extends ShipActionPacket { - public static final int SHIP_1_ARTEMIS = 0; - public static final int SHIP_2_INTREPID = 1; - public static final int SHIP_3_AEGIS = 2; - public static final int SHIP_4_HORATIO = 3; - public static final int SHIP_5_EXCALIBUR= 4; - public static final int SHIP_6_HERA = 5; - public static final int SHIP_7_CERES = 6; - public static final int SHIP_8_DIANA = 7; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_SET_SHIP, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return SetShipPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new SetShipPacket(reader); - } - }); - } - - /** - * @param shipIndex Index [0,7] of the ship you want to be on. The SHIP_* - * constants are provided for reference, but the names can, of course, be - * changed. - */ - public SetShipPacket(int shipIndex) { - super(TYPE_SET_SHIP, shipIndex); - } - - private SetShipPacket(PacketReader reader) { - super(TYPE_SET_SHIP, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetShipSettingsPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetShipSettingsPacket.java deleted file mode 100644 index cca5e59..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/SetShipSettingsPacket.java +++ /dev/null @@ -1,113 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.DriveType; -import net.dhleong.acl.enums.VesselAttribute; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.UnexpectedTypeException; -import net.dhleong.acl.protocol.core.ShipActionPacket; -import net.dhleong.acl.vesseldata.Vessel; -import net.dhleong.acl.vesseldata.VesselData; - - -/** - * Set the name, type and drive of ship your console has selected. - * @author dhleong - */ -public class SetShipSettingsPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_SHIP_SETUP, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return SetShipSettingsPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new SetShipSettingsPacket(reader); - } - }); - } - - private DriveType mDrive; - private int mHullId; - private String mName; - - /** - * Use this constructor if you wish to use a Vessel instance from the - * VesselData class. - */ - public SetShipSettingsPacket(DriveType drive, Vessel vessel, String name) { - super(TYPE_SHIP_SETUP); - - if (vessel == null) { - throw new IllegalArgumentException("You must specify a Vessel"); - } - - if (!vessel.is(VesselAttribute.PLAYER)) { - throw new IllegalArgumentException("Must select a player vessel"); - } - - init(drive, vessel.getId(), name); - } - - /** - * Use this constructor if you wish to use a hull ID. - */ - public SetShipSettingsPacket(DriveType drive, int hullId, String name) { - super(TYPE_SHIP_SETUP); - init(drive, hullId, name); - } - - private SetShipSettingsPacket(PacketReader reader) { - super(TYPE_SHIP_SETUP); - int subtype = reader.readInt(); - - if (subtype != TYPE_SHIP_SETUP) { - throw new UnexpectedTypeException(subtype, TYPE_SHIP_SETUP); - } - - mDrive = DriveType.values()[reader.readInt()]; - mHullId = reader.readInt(); - reader.skip(4); // RJW: UNKNOWN INT (always seems to be 1 0 0 0) - mName = reader.readString(); - } - - private void init(DriveType drive, int hullId, String name) { - if (drive == null) { - throw new IllegalArgumentException("You must specify a drive type"); - } - - if (name == null) { - throw new IllegalArgumentException("You must specify a name"); - } - - mDrive = drive; - mHullId = hullId; - mName = name; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer .writeInt(TYPE_SHIP_SETUP) - .writeInt(mDrive.ordinal()) - .writeInt(mHullId) - .writeInt(1) // RJW: UNKNOWN INT (always seems to be 1 0 0 0) - .writeString(mName); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - Vessel vessel = VesselData.get().getVessel(mHullId); - b .append(mName).append(": ") - .append(vessel != null ? vessel.getName() : "UNKNOWN TYPE") - .append(" [").append(mDrive).append(']'); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/VersionPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/VersionPacket.java deleted file mode 100644 index b297ce0..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/VersionPacket.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.util.Version; - -/** - * Gives the Artemis server's version number. Send immediately after - * WelcomePacket. - * @author rjwut - */ -public class VersionPacket extends BaseArtemisPacket { - private static final int TYPE = 0xe548e74a; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return VersionPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new VersionPacket(reader); - } - }); - } - - private int mUnknown; - private Version mVersion; - - private VersionPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - mUnknown = reader.readInt(); - float fVersion = reader.readFloat(); - - if (reader.hasMore()) { - mVersion = new Version( - reader.readInt(), - reader.readInt(), - reader.readInt() - ); - } else { - mVersion = new Version(fVersion); - } - } - - public VersionPacket(Version version) { - super(ConnectionType.SERVER, TYPE); - mVersion = version; - } - - /** - * @return The version number - */ - public Version getVersion() { - return mVersion; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(mUnknown); - mVersion.writeTo(writer); - writer.setVersion(mVersion); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mVersion); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/WelcomePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/WelcomePacket.java deleted file mode 100644 index 2126eb1..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/setup/WelcomePacket.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -/** - * Sent by the server immediately on connection. The receipt of this packet - * indicates a successful connection to the server. - * @author rjwut - */ -public class WelcomePacket extends BaseArtemisPacket { - private static final int TYPE = 0x6d04b3da; - protected static final String MSG = "You have connected to Thom Robertson's Artemis Bridge Simulator. Please connect with an authorized game client."; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return WelcomePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new WelcomePacket(reader); - } - }); - } - - private String msg = MSG; - - private WelcomePacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - msg = reader.readUSASCIIString(); - } - - public WelcomePacket() { - super(ConnectionType.SERVER, TYPE); - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeUSASCIIString(msg); - } - - /** - * Returns the welcome message sent by the server. - */ - public String getMessage() { - return msg; - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(getMessage()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/ConvertTorpedoPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/ConvertTorpedoPacket.java deleted file mode 100644 index e4bdcbe..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/ConvertTorpedoPacket.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.dhleong.acl.protocol.core.weap; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Converts a homing torpedo to energy or vice-versa. - */ -public class ConvertTorpedoPacket extends BaseArtemisPacket { - private static final int TYPE = 0x69CC01D9; - private static final byte SUBTYPE = 0x03; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, SUBTYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return ConvertTorpedoPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new ConvertTorpedoPacket(reader); - } - }); - } - - public enum Direction { - TORPEDO_TO_ENERGY, ENERGY_TO_TORPEDO - } - - private Direction mDirection; - - /** - * @param direction The Direction value indicating the desired conversion type - */ - public ConvertTorpedoPacket(final Direction direction) { - super(ConnectionType.CLIENT, TYPE); - - if (direction == null) { - throw new IllegalArgumentException("You must specify a direction"); - } - - mDirection = direction; - } - - private ConvertTorpedoPacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - int subtype = reader.readInt(); - - if (subtype != SUBTYPE) { - throw new UnexpectedTypeException(subtype, SUBTYPE); - } - - mDirection = Direction.values()[(int)reader.readFloat()]; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(SUBTYPE).writeFloat(mDirection.ordinal()); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mDirection); - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/FireBeamPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/FireBeamPacket.java deleted file mode 100644 index 203740f..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/FireBeamPacket.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.dhleong.acl.protocol.core.weap; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Manually fire beams. - */ -public class FireBeamPacket extends BaseArtemisPacket { - private static final int TYPE = 0xc2bee72e; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return FireBeamPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new FireBeamPacket(reader); - } - }); - } - - private int mId; - private float mX; - private float mY; - private float mZ; - - /** - * Fire at the given target. The x, y and z parameters indicate the - * coordinates on the target at which to fire. - */ - public FireBeamPacket(ArtemisObject target, float x, float y, float z) { - super(ConnectionType.CLIENT, TYPE); - mId = target.getId(); - mX = x; - mY = y; - mZ = z; - } - - private FireBeamPacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - mId = reader.readInt(); - mX = reader.readFloat(); - mY = reader.readFloat(); - mZ = reader.readFloat(); - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(mId).writeFloat(mX).writeFloat(mY).writeFloat(mZ); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append('#') - .append(mId) - .append(": ") - .append(mX) - .append(',') - .append(mY) - .append(',') - .append(mZ); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/FireTubePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/FireTubePacket.java deleted file mode 100644 index cf0db6b..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/FireTubePacket.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.dhleong.acl.protocol.core.weap; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; -import net.dhleong.acl.world.Artemis; - -/** - * Fire whatever's in the given tube. - * @author dhleong - */ -public class FireTubePacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_FIRE_TUBE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return FireTubePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new FireTubePacket(reader); - } - }); - } - - /** - * @param tube The index of the tube to fire, [0 - Artemis.MAX_TUBES) - */ - public FireTubePacket(int tube) { - super(TYPE_FIRE_TUBE, tube); - - if (tube < 0 || tube >= Artemis.MAX_TUBES) { - throw new IndexOutOfBoundsException( - "Invalid tube index: " + tube - ); - } - } - - private FireTubePacket(PacketReader reader) { - super(TYPE_FIRE_TUBE, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/LoadTubePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/LoadTubePacket.java deleted file mode 100644 index 93b7af3..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/LoadTubePacket.java +++ /dev/null @@ -1,95 +0,0 @@ -package net.dhleong.acl.protocol.core.weap; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.OrdnanceType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; -import net.dhleong.acl.world.Artemis; - -/** - * Load a type of torpedo into a tube. - * @author dhleong - */ -public class LoadTubePacket extends BaseArtemisPacket { - private static final int TYPE = 0x69CC01D9; - private static final byte SUBTYPE = 0x02; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, SUBTYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return LoadTubePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new LoadTubePacket(reader); - } - }); - } - - private int mTube; - private OrdnanceType mOrdnanceType; - private int mUnknown0; - private int mUnknown1; - - /** - * @param tube Index of tube to load, [0 - Artemis.MAX_TUBES) - * @param torpedoType OrdnanceType value indicating what to load - */ - public LoadTubePacket(int tube, OrdnanceType ordnanceType) { - super(ConnectionType.CLIENT, TYPE); - - if (tube < 0 || tube >= Artemis.MAX_TUBES) { - throw new IndexOutOfBoundsException( - "Invalid tube index: " + tube - ); - } - - if (ordnanceType == null) { - throw new IllegalArgumentException( - "You must specify an ordnance type" - ); - } - - mTube = tube; - mOrdnanceType = ordnanceType; - } - - private LoadTubePacket(PacketReader reader) { - super(ConnectionType.CLIENT, TYPE); - int subtype = reader.readInt(); - - if (subtype != SUBTYPE) { - throw new UnexpectedTypeException(subtype, SUBTYPE); - } - - mTube = reader.readInt(); - mOrdnanceType = OrdnanceType.values()[reader.readInt()]; - mUnknown0 = reader.readInt(); - mUnknown1 = reader.readInt(); - } - - @Override - protected void writePayload(PacketWriter writer) { - writer .writeInt(SUBTYPE) - .writeInt(mTube) - .writeInt(mOrdnanceType.ordinal()) - .writeInt(mUnknown0) - .writeInt(mUnknown1); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append("Tube #").append(mTube).append(": ").append(mOrdnanceType); - b.append("\nUnknown: ").append(mUnknown0).append("/").append(mUnknown1); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/SetBeamFreqPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/SetBeamFreqPacket.java deleted file mode 100644 index 29a4e1a..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/SetBeamFreqPacket.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.dhleong.acl.protocol.core.weap; - -import net.dhleong.acl.enums.BeamFrequency; -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; - -/** - * Sets the frequency at which to tune the beams. - */ -public class SetBeamFreqPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_SET_BEAMFREQ, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return SetBeamFreqPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new SetBeamFreqPacket(reader); - } - }); - } - - /** - * @param frequency The desired beam frequency - */ - public SetBeamFreqPacket(BeamFrequency frequency) { - super(TYPE_SET_BEAMFREQ, frequency != null ? frequency.ordinal(): -1); - - if (frequency == null) { - throw new IllegalArgumentException( - "You must specify a beam frequency" - ); - } - } - - private SetBeamFreqPacket(PacketReader reader) { - super(TYPE_SET_BEAMFREQ, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(BeamFrequency.values()[mArg]); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/SetWeaponsTargetPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/SetWeaponsTargetPacket.java deleted file mode 100644 index 0ce6b96..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/SetWeaponsTargetPacket.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.dhleong.acl.protocol.core.weap; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Set the target for our weapons. - * @author dhleong - */ -public class SetWeaponsTargetPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_SET_TARGET, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return SetWeaponsTargetPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new SetWeaponsTargetPacket(reader); - } - }); - } - - /** - * @param target The desired target (or null to release target lock) - */ - public SetWeaponsTargetPacket(ArtemisObject target) { - super(TYPE_SET_TARGET, target == null ? 1 : target.getId()); - } - - private SetWeaponsTargetPacket(PacketReader reader) { - super(TYPE_SET_TARGET, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append('#').append(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/ToggleAutoBeamsPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/ToggleAutoBeamsPacket.java deleted file mode 100644 index 1e4d8ba..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/ToggleAutoBeamsPacket.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.dhleong.acl.protocol.core.weap; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; - -/** - * Toggles auto beams on/off. - * @author rjwut - */ -public class ToggleAutoBeamsPacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_TOGGLE_AUTO_BEAMS, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return ToggleAutoBeamsPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new ToggleAutoBeamsPacket(reader); - } - }); - } - - public ToggleAutoBeamsPacket() { - super(TYPE_TOGGLE_AUTO_BEAMS, 0); - } - - private ToggleAutoBeamsPacket(PacketReader reader) { - super(TYPE_TOGGLE_AUTO_BEAMS, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - // do nothing - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/UnloadTubePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/UnloadTubePacket.java deleted file mode 100644 index 2b66294..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/weap/UnloadTubePacket.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.dhleong.acl.protocol.core.weap; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.core.ShipActionPacket; -import net.dhleong.acl.world.Artemis; - -/** - * Unloads the indicated tube. - */ -public class UnloadTubePacket extends ShipActionPacket { - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.CLIENT, TYPE, TYPE_UNLOAD_TUBE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return UnloadTubePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new UnloadTubePacket(reader); - } - }); - } - - /** - * @param tube Index of the tube to unload, [0 - Artemis.MAX_TUBES) - */ - public UnloadTubePacket(int tube) { - super(TYPE_UNLOAD_TUBE, tube); - - if (tube < 0 || tube >= Artemis.MAX_TUBES) { - throw new IndexOutOfBoundsException( - "Invalid tube index: " + tube - ); - } - } - - private UnloadTubePacket(PacketReader reader) { - super(TYPE_UNLOAD_TUBE, reader); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mArg); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/AbstractObjectParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/AbstractObjectParser.java deleted file mode 100644 index 32fb199..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/AbstractObjectParser.java +++ /dev/null @@ -1,41 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.world.ArtemisObject; - -public abstract class AbstractObjectParser implements ObjectParser { - protected abstract ArtemisObject parseImpl(PacketReader reader); - - protected ObjectType objectType; - - protected AbstractObjectParser(ObjectType objectType) { - this.objectType = objectType; - } - - @Override - public final ArtemisObject parse(PacketReader reader) { - byte typeId = reader.hasMore() ? reader.readByte() : 0; - - if (typeId == 0) { - return null; // no more objects to parse - } - - ObjectType parsedObjectType = ObjectType.fromId(typeId); - - if (objectType != parsedObjectType) { - throw new IllegalStateException("Expected to parse " + objectType + - " but received " + parsedObjectType); - } - - reader.startObject(objectType, getBits()); - ArtemisObject obj = parseImpl(reader); - obj.setUnknownProps(reader.getUnknownObjectProps()); - return obj; - } - - @Override - public void appendDetail(ArtemisObject obj, StringBuilder b) { - b.append("\nObject #").append(obj.getId()).append(obj); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/AnomalyParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/AnomalyParser.java deleted file mode 100644 index 174802a..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/AnomalyParser.java +++ /dev/null @@ -1,55 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.enums.Upgrade; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisAnomaly; -import net.dhleong.acl.world.ArtemisObject; - -public class AnomalyParser extends AbstractObjectParser { - private enum Bit { - X, - Y, - Z, - UPGRADE - } - private static final Bit[] BITS = Bit.values(); - - AnomalyParser() { - super(ObjectType.ANOMALY); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisAnomaly parseImpl(PacketReader reader) { - ArtemisAnomaly anomaly = new ArtemisAnomaly(reader.getObjectId()); - anomaly.setX(reader.readFloat(Bit.X, Float.MIN_VALUE)); - anomaly.setY(reader.readFloat(Bit.Y, Float.MIN_VALUE)); - anomaly.setZ(reader.readFloat(Bit.Z, Float.MIN_VALUE)); - - if (reader.has(Bit.UPGRADE)) { - anomaly.setUpgrade(Upgrade.values()[reader.readInt()]); - } - - return anomaly; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisAnomaly anomaly = (ArtemisAnomaly) obj; - writer.writeFloat(Bit.X, anomaly.getX(), Float.MIN_VALUE); - writer.writeFloat(Bit.Y, anomaly.getY(), Float.MIN_VALUE); - writer.writeFloat(Bit.Z, anomaly.getZ(), Float.MIN_VALUE); - - Upgrade upgrade = anomaly.getUpgrade(); - - if (upgrade != null) { - writer.writeInt(Bit.UPGRADE, upgrade.ordinal(), -1); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/BaseParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/BaseParser.java deleted file mode 100644 index 5055709..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/BaseParser.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisBase; -import net.dhleong.acl.world.ArtemisObject; - -public class BaseParser extends AbstractObjectParser { - private enum Bit { - NAME, - FORE_SHIELDS, - AFT_SHIELDS, - INDEX, - HULL_ID, - X, - Y, - Z, - - UNK_2_1, - UNK_2_2, - UNK_2_3, - UNK_2_4, - UNK_2_5, - UNK_2_6 - } - private static final Bit[] BITS = Bit.values(); - - BaseParser() { - super(ObjectType.BASE); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisBase parseImpl(PacketReader reader) { - ArtemisBase base = new ArtemisBase(reader.getObjectId()); - base.setName(reader.readString(Bit.NAME)); - float shieldsFront = reader.readFloat(Bit.FORE_SHIELDS, Float.MIN_VALUE); - float shieldsRear = reader.readFloat(Bit.AFT_SHIELDS, Float.MIN_VALUE); - base.setIndex(reader.readInt(Bit.INDEX, -1)); - base.setHullId(reader.readInt(Bit.HULL_ID, -1)); - base.setShieldsFront(shieldsFront); - base.setShieldsRear(shieldsRear); - base.setX(reader.readFloat(Bit.X, Float.MIN_VALUE)); - base.setY(reader.readFloat(Bit.Y, Float.MIN_VALUE)); - base.setZ(reader.readFloat(Bit.Z, Float.MIN_VALUE)); - reader.readObjectUnknown(Bit.UNK_2_1, 4); - reader.readObjectUnknown(Bit.UNK_2_2, 4); - reader.readObjectUnknown(Bit.UNK_2_3, 4); - reader.readObjectUnknown(Bit.UNK_2_4, 4); - reader.readObjectUnknown(Bit.UNK_2_5, 1); - reader.readObjectUnknown(Bit.UNK_2_6, 1); - return base; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisBase base = (ArtemisBase) obj; - writer .writeString(Bit.NAME, base.getName()) - .writeFloat(Bit.FORE_SHIELDS, base.getShieldsFront(), Float.MIN_VALUE) - .writeFloat(Bit.AFT_SHIELDS, base.getShieldsRear(), Float.MIN_VALUE) - .writeInt(Bit.INDEX, base.getIndex(), -1) - .writeInt(Bit.HULL_ID, base.getHullId(), -1) - .writeFloat(Bit.X, base.getX(), Float.MIN_VALUE) - .writeFloat(Bit.Y, base.getY(), Float.MIN_VALUE) - .writeFloat(Bit.Z, base.getZ(), Float.MIN_VALUE) - .writeUnknown(Bit.UNK_2_1) - .writeUnknown(Bit.UNK_2_2) - .writeUnknown(Bit.UNK_2_3) - .writeUnknown(Bit.UNK_2_4) - .writeUnknown(Bit.UNK_2_5) - .writeUnknown(Bit.UNK_2_6); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/BeamFiredPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/BeamFiredPacket.java deleted file mode 100644 index 872ccae..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/BeamFiredPacket.java +++ /dev/null @@ -1,190 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -public class BeamFiredPacket extends BaseArtemisPacket { - private static final int TYPE = 0xb83fd2c4; - private static final byte[] DEFAULT_UNKNOWN_VALUE = { 0, 0, 0, 0 }; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return BeamFiredPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new BeamFiredPacket(reader); - } - }); - } - - private int mBeamId; - private int mBeamPortIndex; - private int mOriginId; - private int mTargetId; - private float mImpactX; - private float mImpactY; - private float mImpactZ; - private boolean mAutoFired; - private byte[] unknown1 = DEFAULT_UNKNOWN_VALUE; - private byte[] unknown2 = DEFAULT_UNKNOWN_VALUE; - private byte[] unknown3 = DEFAULT_UNKNOWN_VALUE; - private byte[] unknown4 = DEFAULT_UNKNOWN_VALUE; - - private BeamFiredPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - mBeamId = reader.readInt(); - unknown1 = reader.readBytes(4); - unknown2 = reader.readBytes(4); - mBeamPortIndex = reader.readInt(); - unknown3 = reader.readBytes(4); - unknown4 = reader.readBytes(4); - mOriginId = reader.readInt(); - mTargetId = reader.readInt(); - mImpactX = reader.readFloat(); - mImpactY = reader.readFloat(); - mImpactZ = reader.readFloat(); - mAutoFired = reader.readInt() == 0; - } - - public BeamFiredPacket(int beamId) { - super(ConnectionType.SERVER, TYPE); - mBeamId = beamId; - } - - /** - * The beam's ID. - */ - public int getBeamId() { - return mBeamId; - } - - /** - * The index of the port from which this beam was fired, which is the same - * as the index of the corresponding <beam_port> entry in - * the shipData.xml file. (So 0 corresponds to the zeroeth - * <beam_port> entry for that ship in shipData.xml.) - */ - public int getBeamPortIndex() { - return mBeamPortIndex; - } - - public void setBeamPortIndex(int beamPortIndex) { - mBeamPortIndex = beamPortIndex; - } - - /** - * The ID of the object from which the beam was fired. - */ - public int getOriginId() { - return mOriginId; - } - - public void setOriginId(int originId) { - mOriginId = originId; - } - - /** - * The ID of the object being fired upon. - */ - public int getTargetId() { - return mTargetId; - } - - public void setTargetId(int targetId) { - mTargetId = targetId; - } - - /** - * The X-coordinate (relative to the center of the target) of the impact - * point. This is used to determine the endpoint for the beam. A negative - * value means an impact on the target's starboard; a positive value means - * an impact on the target's port. - */ - public float getImpactX() { - return mImpactX; - } - - public void setImpactX(float impactX) { - mImpactX = impactX; - } - - /** - * The Y-coordinate (relative to the center of the target) of the impact - * point. This is used to determine the endpoint for the beam. A negative - * value means an impact on the target's ventral (bottom) side; a positive - * value means an impact on the target's dorsal (top) side. - */ - public float getImpactY() { - return mImpactY; - } - - public void setImpactY(float impactY) { - mImpactY = impactY; - } - - /** - * The Z-coordinate (relative to the center of the target) of the impact - * point. This is used to determine the endpoint for the beam. A negative - * value means an impact on the target's aft; a positive value means an - * impact on the target's fore. - */ - public float getImpactZ() { - return mImpactZ; - } - - public void setImpactZ(float impactZ) { - mImpactZ = impactZ; - } - - /** - * Returns true if the beam was auto-fired; false if it was fired manually. - */ - public boolean isAutoFired() { - return mAutoFired; - } - - public void setAutoFired(boolean autoFired) { - mAutoFired = autoFired; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer - .writeInt(mBeamId) - .writeBytes(unknown1) - .writeBytes(unknown2) - .writeInt(mBeamPortIndex) - .writeBytes(unknown3) - .writeBytes(unknown4) - .writeInt(mOriginId) - .writeInt(mTargetId) - .writeFloat(mImpactX) - .writeFloat(mImpactY) - .writeFloat(mImpactZ) - .writeInt(mAutoFired ? 0 : 1); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b - .append("Beam #") - .append(mBeamId) - .append(" port ") - .append(mBeamPortIndex) - .append(" from ship #") - .append(mOriginId) - .append(" to ship #") - .append(mTargetId); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/CreatureParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/CreatureParser.java deleted file mode 100644 index 6b405bd..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/CreatureParser.java +++ /dev/null @@ -1,87 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.CreatureType; -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisCreature; -import net.dhleong.acl.world.ArtemisObject; - -public class CreatureParser extends AbstractObjectParser { - private enum Bit { - X, - Y, - Z, - NAME, - HEADING, - PITCH, - ROLL, - CREATURE_TYPE, - - UNK_2_1, - UNK_2_2, - UNK_2_3, - UNK_2_4, - UNK_2_5, - UNK_2_6 - } - private static final Bit[] BITS = Bit.values(); - - CreatureParser() { - super(ObjectType.CREATURE); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisCreature parseImpl(PacketReader reader) { - final ArtemisCreature creature = new ArtemisCreature(reader.getObjectId()); - creature.setX(reader.readFloat(Bit.X, Float.MIN_VALUE)); - creature.setY(reader.readFloat(Bit.Y, Float.MIN_VALUE)); - creature.setZ(reader.readFloat(Bit.Z, Float.MIN_VALUE)); - creature.setName(reader.readString(Bit.NAME)); - creature.setHeading(reader.readFloat(Bit.HEADING, Float.MIN_VALUE)); - creature.setPitch(reader.readFloat(Bit.PITCH, Float.MIN_VALUE)); - creature.setRoll(reader.readFloat(Bit.ROLL, Float.MIN_VALUE)); - - if (reader.has(Bit.CREATURE_TYPE)) { - creature.setCreatureType(CreatureType.values()[reader.readInt()]); - } - - reader.readObjectUnknown(Bit.UNK_2_1, 4); - reader.readObjectUnknown(Bit.UNK_2_2, 4); - reader.readObjectUnknown(Bit.UNK_2_3, 4); - reader.readObjectUnknown(Bit.UNK_2_4, 4); - reader.readObjectUnknown(Bit.UNK_2_5, 4); - reader.readObjectUnknown(Bit.UNK_2_6, 4); - return creature; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisCreature creature = (ArtemisCreature) obj; - writer .writeFloat(Bit.X, creature.getX(), Float.MIN_VALUE) - .writeFloat(Bit.Y, creature.getY(), Float.MIN_VALUE) - .writeFloat(Bit.Z, creature.getZ(), Float.MIN_VALUE) - .writeString(Bit.NAME, creature.getName()) - .writeFloat(Bit.HEADING, creature.getHeading(), Float.MIN_VALUE) - .writeFloat(Bit.PITCH, creature.getPitch(), Float.MIN_VALUE) - .writeFloat(Bit.ROLL, creature.getRoll(), Float.MIN_VALUE); - - CreatureType creatureType = creature.getCreatureType(); - - if (creatureType != null) { - writer.writeInt(Bit.CREATURE_TYPE, creatureType.ordinal(), -1); - } - - writer .writeUnknown(Bit.UNK_2_1) - .writeUnknown(Bit.UNK_2_2) - .writeUnknown(Bit.UNK_2_3) - .writeUnknown(Bit.UNK_2_4) - .writeUnknown(Bit.UNK_2_5) - .writeUnknown(Bit.UNK_2_6); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/DestroyObjectPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/DestroyObjectPacket.java deleted file mode 100644 index 295e531..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/DestroyObjectPacket.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.world.ArtemisObject; - -/** - * Sent by the server when an object is destroyed. - */ -public class DestroyObjectPacket extends BaseArtemisPacket { - private static final int TYPE = 0xcc5a3e30; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return DestroyObjectPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new DestroyObjectPacket(reader); - } - }); - } - - private final ObjectType mTargetType; - private final int mTarget; - - private DestroyObjectPacket(PacketReader reader) { - this(ObjectType.fromId(reader.readByte()), reader.readInt()); - } - - public DestroyObjectPacket(ArtemisObject obj) { - this(obj.getType(), obj.getId()); - } - - public DestroyObjectPacket(ObjectType targetType, int id) { - super(ConnectionType.SERVER, TYPE); - mTargetType = targetType; - mTarget = id; - } - - /** - * The ObjectType of the destroyed object - */ - public ObjectType getTargetType() { - return mTargetType; - } - - /** - * The destroyed object's ID - */ - public int getTarget() { - return mTarget; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeByte(mTargetType.getId()).writeInt(mTarget); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append('#').append(mTarget).append(" (").append(mTargetType).append(')'); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/DroneParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/DroneParser.java deleted file mode 100644 index c908fb7..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/DroneParser.java +++ /dev/null @@ -1,60 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisDrone; -import net.dhleong.acl.world.ArtemisObject; - -public class DroneParser extends AbstractObjectParser { - private enum Bit { - UNK_1_1, - X, - UNK_1_3, - Z, - UNK_1_5, - Y, - HEADING, - UNK_1_8 - } - private static final Bit[] BITS = Bit.values(); - private static final byte[] ZERO_ARR = { (byte) 0 }; - - DroneParser() { - super(ObjectType.DRONE); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisDrone parseImpl(PacketReader reader) { - final ArtemisDrone drone = new ArtemisDrone(reader.getObjectId()); - reader.readObjectUnknown("UNK", 1); - reader.readObjectUnknown(Bit.UNK_1_1, 4); - drone.setX(reader.readFloat(Bit.X, Float.MIN_VALUE)); - reader.readObjectUnknown(Bit.UNK_1_3, 4); - drone.setZ(reader.readFloat(Bit.Z, Float.MIN_VALUE)); - reader.readObjectUnknown(Bit.UNK_1_5, 4); - drone.setY(reader.readFloat(Bit.Y, Float.MIN_VALUE)); - drone.setHeading(reader.readFloat(Bit.HEADING, Float.MIN_VALUE)); - reader.readObjectUnknown(Bit.UNK_1_8, 4); - return drone; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisDrone drone = (ArtemisDrone) obj; - writer .writeUnknown("UNK", ZERO_ARR) - .writeUnknown(Bit.UNK_1_1) - .writeFloat(Bit.X, drone.getX(), Float.MIN_VALUE) - .writeUnknown(Bit.UNK_1_3) - .writeFloat(Bit.Z, drone.getZ(), Float.MIN_VALUE) - .writeUnknown(Bit.UNK_1_5) - .writeFloat(Bit.Y, drone.getY(), Float.MIN_VALUE) - .writeFloat(Bit.HEADING, drone.getHeading(), Float.MIN_VALUE) - .writeUnknown(Bit.UNK_1_8); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/EngParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/EngParser.java deleted file mode 100644 index 10fadb0..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/EngParser.java +++ /dev/null @@ -1,110 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import java.util.Arrays; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.Artemis; -import net.dhleong.acl.world.ArtemisObject; -import net.dhleong.acl.world.ArtemisPlayer; - -public class EngParser extends AbstractObjectParser { - private enum Bit { - HEAT_BEAMS, - HEAT_TORPEDOES, - HEAT_SENSORS, - HEAT_MANEUVERING, - HEAT_IMPULSE, - HEAT_WARP_OR_JUMP, - HEAT_FORE_SHIELDS, - HEAT_AFT_SHEILDS, - - ENERGY_BEAMS, - ENERGY_TORPEDOES, - ENERGY_SENSORS, - ENERGY_MANEUVERING, - ENERGY_IMPULSE, - ENERGY_WARP_OR_JUMP, - ENERGY_FORE_SHIELDS, - ENERGY_AFT_SHIELDS, - - COOLANT_BEAMS, - COOLANT_TORPEDOES, - COOLANT_SENSORS, - COOLANT_MANEUVERING, - COOLANT_IMPULSE, - COOLANT_WARP_OR_JUMP, - COOLANT_FORE_SHIELDS, - COOLANT_AFT_SHIELDS - } - private static final Bit[] BITS = Bit.values(); - private static final Bit[] HEAT; - private static final Bit[] ENERGY; - private static final Bit[] COOLANT; - - static { - HEAT = Arrays.copyOfRange(BITS, Bit.HEAT_BEAMS.ordinal(), Bit.ENERGY_BEAMS.ordinal()); - ENERGY = Arrays.copyOfRange(BITS, Bit.ENERGY_BEAMS.ordinal(), Bit.COOLANT_BEAMS.ordinal()); - COOLANT = Arrays.copyOfRange(BITS, Bit.COOLANT_BEAMS.ordinal(), Bit.values().length); - } - - EngParser() { - super(ObjectType.ENGINEERING_CONSOLE); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisPlayer parseImpl(PacketReader reader) { - float[] heat = new float[ Artemis.SYSTEM_COUNT ]; - float[] sysEnergy = new float[ Artemis.SYSTEM_COUNT ]; - int[] coolant = new int[ Artemis.SYSTEM_COUNT ]; - reader.skip(1); - - for (int i = 0; i < Artemis.SYSTEM_COUNT; i++) { - heat[i] = reader.readFloat(HEAT[i], -1); - } - - for (int i = 0; i < Artemis.SYSTEM_COUNT; i++) { - sysEnergy[i] = reader.readFloat(ENERGY[i], -1); - } - - for (int i = 0; i < Artemis.SYSTEM_COUNT; i++) { - coolant[i] = reader.readByte(COOLANT[i], (byte) -1); - } - - ArtemisPlayer player = new ArtemisPlayer(reader.getObjectId()); - - for (int i = 0; i < Artemis.SYSTEM_COUNT; i++) { - ShipSystem sys = ShipSystem.values()[i]; - player.setSystemHeat(sys, heat[i]); - player.setSystemEnergy(sys, sysEnergy[i]); - player.setSystemCoolant(sys, coolant[i]); - } - - return player; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisPlayer player = (ArtemisPlayer) obj; - writer.writeObjByte((byte) 0); - - for (ShipSystem sys : ShipSystem.values()) { - writer.writeFloat(HEAT[sys.ordinal()], player.getSystemHeat(sys), -1); - } - - for (ShipSystem sys : ShipSystem.values()) { - writer.writeFloat(ENERGY[sys.ordinal()], player.getSystemEnergy(sys), -1); - } - - for (ShipSystem sys : ShipSystem.values()) { - writer.writeByte(COOLANT[sys.ordinal()], (byte) player.getSystemCoolant(sys), (byte) -1); - } - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/GenericMeshParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/GenericMeshParser.java deleted file mode 100644 index b23d781..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/GenericMeshParser.java +++ /dev/null @@ -1,141 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisMesh; -import net.dhleong.acl.world.ArtemisObject; - -public class GenericMeshParser extends AbstractObjectParser { - private enum Bit { - X, - Y, - Z, - UNK_1_4, - UNK_1_5, - UNK_1_6, - UNK_1_7, - UNK_1_8, - - UNK_2_1, - UNK_2_2, - NAME, - MESH_PATH, - TEXTURE_PATH, - UNK_2_6, - UNK_2_7, - UNK_2_8, - - UNK_3_1, - UNK_3_2, - COLOR, - FORE_SHIELDS, - AFT_SHIELDS, - UNK_3_6, - UNK_3_7, - UNK_3_8, - - UNK_4_1, - UNK_4_2 - } - private static final Bit[] BITS = Bit.values(); - - GenericMeshParser() { - super(ObjectType.GENERIC_MESH); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisMesh parseImpl(PacketReader reader) { - float x = reader.readFloat(Bit.X, Float.MIN_VALUE); - float y = reader.readFloat(Bit.Y, Float.MIN_VALUE); - float z = reader.readFloat(Bit.Z, Float.MIN_VALUE); - - reader.readObjectUnknown(Bit.UNK_1_4, 4); - reader.readObjectUnknown(Bit.UNK_1_5, 4); - reader.readObjectUnknown(Bit.UNK_1_6, 8); - reader.readObjectUnknown(Bit.UNK_1_7, 4); - reader.readObjectUnknown(Bit.UNK_1_8, 4); - reader.readObjectUnknown(Bit.UNK_2_1, 4); - reader.readObjectUnknown(Bit.UNK_2_2, 8); - - final ArtemisMesh mesh = new ArtemisMesh(reader.getObjectId()); - mesh.setName(reader.readString(Bit.NAME)); - mesh.setX(x); - mesh.setY(y); - mesh.setZ(z); - mesh.setMesh(reader.readString(Bit.TEXTURE_PATH)); // wtf?! - mesh.setTexture(reader.readString(Bit.TEXTURE_PATH)); - - reader.readObjectUnknown(Bit.UNK_2_6, 4); - reader.readObjectUnknown(Bit.UNK_2_7, 2); - reader.readObjectUnknown(Bit.UNK_2_8, 1); - reader.readObjectUnknown(Bit.UNK_3_1, 1); - reader.readObjectUnknown(Bit.UNK_3_2, 1); - - boolean hasColor = reader.has(Bit.COLOR); - - // color - if (hasColor) { - mesh.setARGB( - 1.0f, - reader.readFloat(), - reader.readFloat(), - reader.readFloat() - ); - } - - mesh.setFakeShields( - reader.readFloat(Bit.FORE_SHIELDS, Float.MIN_VALUE), - reader.readFloat(Bit.AFT_SHIELDS, Float.MIN_VALUE) - ); - - reader.readObjectUnknown(Bit.UNK_3_6, 1); - reader.readObjectUnknown(Bit.UNK_3_7, 4); - reader.readObjectUnknown(Bit.UNK_3_8, 4); - reader.readObjectUnknown(Bit.UNK_4_1, 4); - reader.readObjectUnknown(Bit.UNK_4_2, 4); - return mesh; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisMesh mesh = (ArtemisMesh) obj; - writer .writeFloat(Bit.X, mesh.getX(), Float.MIN_VALUE) - .writeFloat(Bit.Y, mesh.getY(), Float.MIN_VALUE) - .writeFloat(Bit.Z, mesh.getZ(), Float.MIN_VALUE) - .writeUnknown(Bit.UNK_1_4) - .writeUnknown(Bit.UNK_1_5) - .writeUnknown(Bit.UNK_1_6) - .writeUnknown(Bit.UNK_1_7) - .writeUnknown(Bit.UNK_1_8) - .writeUnknown(Bit.UNK_2_1) - .writeUnknown(Bit.UNK_2_2) - .writeString(Bit.NAME, mesh.getName()) - .writeString(Bit.TEXTURE_PATH, mesh.getMesh()) - .writeString(Bit.TEXTURE_PATH, mesh.getTexture()) - .writeUnknown(Bit.UNK_2_6) - .writeUnknown(Bit.UNK_2_7) - .writeUnknown(Bit.UNK_2_8) - .writeUnknown(Bit.UNK_3_1) - .writeUnknown(Bit.UNK_3_2); - - if (mesh.hasColor()) { - writer .writeFloat(((float) mesh.getRed()) / 255) - .writeFloat(((float) mesh.getGreen()) / 255) - .writeFloat(((float) mesh.getBlue()) / 255); - } - - writer .writeFloat(Bit.FORE_SHIELDS, mesh.getShieldsFront(), Float.MIN_VALUE) - .writeFloat(Bit.AFT_SHIELDS, mesh.getShieldsRear(), Float.MIN_VALUE) - .writeUnknown(Bit.UNK_3_6) - .writeUnknown(Bit.UNK_3_7) - .writeUnknown(Bit.UNK_3_8) - .writeUnknown(Bit.UNK_4_1) - .writeUnknown(Bit.UNK_4_2); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/IntelPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/IntelPacket.java deleted file mode 100644 index 87b2f51..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/IntelPacket.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; - -/** - * Provides intel on another vessel, typically as the result of a level 2 scan. - * @author rjwut - */ -public class IntelPacket extends BaseArtemisPacket { - private static final int TYPE = 0xee665279; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return IntelPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new IntelPacket(reader); - } - }); - } - - private final int mId; - private final String mIntel; - - private IntelPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - mId = reader.readInt(); - reader.readUnknown("Unknown", 1); - mIntel = reader.readString(); - } - - /** - * The ID of the ship in question - */ - public int getId() { - return mId; - } - - /** - * The intel on that ship, as human-readable text - */ - public String getIntel() { - return mIntel; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(mId).writeByte((byte) 3).writeString(mIntel); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append("Obj #").append(mId).append(": ").append(mIntel); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/NebulaParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/NebulaParser.java deleted file mode 100644 index 5615ea8..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/NebulaParser.java +++ /dev/null @@ -1,60 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisNebula; -import net.dhleong.acl.world.ArtemisObject; - -public class NebulaParser extends AbstractObjectParser { - private enum Bit { - X, - Y, - Z, - RED, - GREEN, - BLUE, - UNK_1_7, - UNK_1_8 - } - private static final Bit[] BITS = Bit.values(); - - NebulaParser() { - super(ObjectType.NEBULA); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisNebula parseImpl(PacketReader reader) { - final ArtemisNebula obj = new ArtemisNebula(reader.getObjectId()); - reader.readObjectUnknown(Bit.UNK_1_7, 4); - reader.readObjectUnknown(Bit.UNK_1_8, 4); - obj.setX(reader.readFloat(Bit.X, Float.MIN_VALUE)); - obj.setY(reader.readFloat(Bit.Y, Float.MIN_VALUE)); - obj.setZ(reader.readFloat(Bit.Z, Float.MIN_VALUE)); - obj.setARGB( - 0, - reader.readFloat(Bit.RED, Float.MIN_VALUE), - reader.readFloat(Bit.GREEN, Float.MIN_VALUE), - reader.readFloat(Bit.BLUE, Float.MIN_VALUE) - ); - return obj; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisNebula nObj = (ArtemisNebula) obj; - writer .writeFloat(Bit.X, nObj.getX(), Float.MIN_VALUE) - .writeFloat(Bit.Y, nObj.getY(), Float.MIN_VALUE) - .writeFloat(Bit.Z, nObj.getZ(), Float.MIN_VALUE) - .writeFloat(Bit.RED, nObj.getRed() / 255f, Float.MIN_VALUE) - .writeFloat(Bit.GREEN, nObj.getGreen() / 255f, Float.MIN_VALUE) - .writeFloat(Bit.BLUE, nObj.getBlue() / 255f, Float.MIN_VALUE) - .writeUnknown(Bit.UNK_1_7) - .writeUnknown(Bit.UNK_1_8); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/NpcShipParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/NpcShipParser.java deleted file mode 100644 index 77e3f7c..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/NpcShipParser.java +++ /dev/null @@ -1,217 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.BeamFrequency; -import net.dhleong.acl.enums.FactionAttribute; -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.vesseldata.Vessel; -import net.dhleong.acl.world.ArtemisNpc; -import net.dhleong.acl.world.ArtemisObject; - -public class NpcShipParser extends AbstractObjectParser { - private enum Bit { - NAME, - IMPULSE, - UNK_1_3, - MAX_IMPULSE, - MAX_TURN_RATE, - IS_ENEMY, - SHIP_TYPE, - X, - - Y, - Z, - PITCH, - ROLL, - HEADING, - VELOCITY, - SURRENDERED, - UNK_2_8, - - FORE_SHIELD, - FORE_SHIELD_MAX, - AFT_SHIELD, - AFT_SHIELD_MAX, - UNK_3_5, - FLEET_NUMBER, - ELITE_ABILITIES, - ELITE_STATE, - - UNK_4_1, - UNK_4_2, - UNK_4_3, - UNK_4_4, - UNK_4_5, - UNK_4_6, - UNK_4_7, - UNK_4_8, - - UNK_5_1, - UNK_5_2, - BEAM_SYSTEM_DAMAGE, - TORPEDO_SYSTEM_DAMAGE, - SENSOR_SYSTEM_DAMAGE, - MANEUVER_SYSTEM_DAMAGE, - IMPULSE_SYSTEM_DAMAGE, - WARP_SYSTEM_DAMAGE, - - FORE_SHIELD_SYSTEM_DAMAGE, - AFT_SHIELD_SYSTEM_DAMAGE, - SHIELD_FREQUENCY_A, - SHIELD_FREQUENCY_B, - SHIELD_FREQUENCY_C, - SHIELD_FREQUENCY_D, - SHIELD_FREQUENCY_E - } - private static final Bit[] BITS = Bit.values(); - - private static final Bit[] SYSTEM_DAMAGES = new Bit[] { - Bit.BEAM_SYSTEM_DAMAGE, - Bit.TORPEDO_SYSTEM_DAMAGE, - Bit.SENSOR_SYSTEM_DAMAGE, - Bit.MANEUVER_SYSTEM_DAMAGE, - Bit.IMPULSE_SYSTEM_DAMAGE, - Bit.WARP_SYSTEM_DAMAGE, - Bit.FORE_SHIELD_SYSTEM_DAMAGE, - Bit.AFT_SHIELD_SYSTEM_DAMAGE - }; - - private static final Bit[] SHLD_FREQS = new Bit[] { - Bit.SHIELD_FREQUENCY_A, - Bit.SHIELD_FREQUENCY_B, - Bit.SHIELD_FREQUENCY_C, - Bit.SHIELD_FREQUENCY_D, - Bit.SHIELD_FREQUENCY_E - }; - - NpcShipParser() { - super(ObjectType.NPC_SHIP); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisNpc parseImpl(PacketReader reader) { - ArtemisNpc obj = new ArtemisNpc(reader.getObjectId()); - obj.setName(reader.readString(Bit.NAME)); - obj.setImpulse(reader.readFloat(Bit.IMPULSE, -1)); - - reader.readObjectUnknown(Bit.UNK_1_3, 4); - - obj.setTopSpeed(reader.readFloat(Bit.MAX_IMPULSE, -1)); - obj.setTurnRate(reader.readFloat(Bit.MAX_TURN_RATE, -1)); - obj.setEnemy(reader.readBool(Bit.IS_ENEMY, 4)); - obj.setHullId(reader.readInt(Bit.SHIP_TYPE, -1)); - obj.setX(reader.readFloat(Bit.X, Float.MIN_VALUE)); - obj.setY(reader.readFloat(Bit.Y, Float.MIN_VALUE)); - obj.setZ(reader.readFloat(Bit.Z, Float.MIN_VALUE)); - obj.setPitch(reader.readFloat(Bit.PITCH, Float.MIN_VALUE)); - obj.setRoll(reader.readFloat(Bit.ROLL, Float.MIN_VALUE)); - obj.setHeading(reader.readFloat(Bit.HEADING, Float.MIN_VALUE)); - obj.setVelocity(reader.readFloat(Bit.VELOCITY, -1)); - obj.setSurrendered(reader.readBool(Bit.SURRENDERED, 1)); - - reader.readObjectUnknown(Bit.UNK_2_8, 2); - - obj.setShieldsFront(reader.readFloat(Bit.FORE_SHIELD, Float.MIN_VALUE)); - obj.setShieldsFrontMax(reader.readFloat(Bit.FORE_SHIELD_MAX, -1)); - obj.setShieldsRear(reader.readFloat(Bit.AFT_SHIELD, Float.MIN_VALUE)); - obj.setShieldsRearMax(reader.readFloat(Bit.AFT_SHIELD_MAX, -1)); - - reader.readObjectUnknown(Bit.UNK_3_5, 2); - - obj.setFleetNumber(reader.readByte(Bit.FLEET_NUMBER, (byte) -1)); - int elite = reader.readInt(Bit.ELITE_ABILITIES, -1); - int eliteState = reader.readInt(Bit.ELITE_STATE, -1); - Vessel vessel = obj.getVessel(); - - if (vessel != null && vessel.getFaction().is(FactionAttribute.ELITE)) { - obj.setEliteBits(elite); - obj.setEliteStateBits(eliteState); - } - - obj.setScanLevel((byte) reader.readInt(Bit.UNK_4_1)); - - reader.readObjectUnknown(Bit.UNK_4_2, 4); - - // TODO What are these? - reader.readObjectUnknown(Bit.UNK_4_3, 4); - reader.readObjectUnknown(Bit.UNK_4_4, 1); - reader.readObjectUnknown(Bit.UNK_4_5, 1); - reader.readObjectUnknown(Bit.UNK_4_6, 1); - reader.readObjectUnknown(Bit.UNK_4_7, 1); - reader.readObjectUnknown(Bit.UNK_4_8, 4); - reader.readObjectUnknown(Bit.UNK_5_1, 4); - reader.readObjectUnknown(Bit.UNK_5_2, 4); - - // system damage - ShipSystem[] systems = ShipSystem.values(); - - for (int i = 0; i < SYSTEM_DAMAGES.length; i++) { - obj.setSystemDamage(systems[i], reader.readFloat(SYSTEM_DAMAGES[i], -1)); - } - - // shield frequencies - BeamFrequency[] freqs = BeamFrequency.values(); - - for (int i = 0; i < SHLD_FREQS.length; i++) { - obj.setShieldFreq(freqs[i], reader.readFloat(SHLD_FREQS[i], -1)); - } - - return obj; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisNpc npc = (ArtemisNpc) obj; - writer .writeString(Bit.NAME, npc.getName()) - .writeFloat(Bit.IMPULSE, npc.getImpulse(), -1) - .writeUnknown(Bit.UNK_1_3) - .writeFloat(Bit.MAX_IMPULSE, npc.getTopSpeed(), -1) - .writeFloat(Bit.MAX_TURN_RATE, npc.getTurnRate(), -1) - .writeBool(Bit.IS_ENEMY, npc.isEnemy(), 4) - .writeInt(Bit.SHIP_TYPE, npc.getHullId(), -1) - .writeFloat(Bit.X, npc.getX(), Float.MIN_VALUE) - .writeFloat(Bit.Y, npc.getY(), Float.MIN_VALUE) - .writeFloat(Bit.Z, npc.getZ(), Float.MIN_VALUE) - .writeFloat(Bit.PITCH, npc.getPitch(), Float.MIN_VALUE) - .writeFloat(Bit.ROLL, npc.getRoll(), Float.MIN_VALUE) - .writeFloat(Bit.HEADING, npc.getHeading(), Float.MIN_VALUE) - .writeFloat(Bit.VELOCITY, npc.getVelocity(), -1) - .writeBool(Bit.SURRENDERED, npc.isSurrendered(), 1) - .writeUnknown(Bit.UNK_2_8) - .writeFloat(Bit.FORE_SHIELD, npc.getShieldsFront(), Float.MIN_VALUE) - .writeFloat(Bit.FORE_SHIELD_MAX, npc.getShieldsFrontMax(), -1) - .writeFloat(Bit.AFT_SHIELD, npc.getShieldsRear(), Float.MIN_VALUE) - .writeFloat(Bit.AFT_SHIELD_MAX, npc.getShieldsRearMax(), -1) - .writeUnknown(Bit.UNK_3_5) - .writeByte(Bit.FLEET_NUMBER, npc.getFleetNumber(), (byte) -1) - .writeInt(Bit.ELITE_ABILITIES, npc.getEliteBits(), -1) - .writeInt(Bit.ELITE_STATE, npc.getEliteStateBits(), -1) - .writeInt(Bit.UNK_4_1, npc.getScanLevel(), -1) - .writeUnknown(Bit.UNK_4_2) - .writeUnknown(Bit.UNK_4_3) - .writeUnknown(Bit.UNK_4_4) - .writeUnknown(Bit.UNK_4_5) - .writeUnknown(Bit.UNK_4_6) - .writeUnknown(Bit.UNK_4_7) - .writeUnknown(Bit.UNK_4_8) - .writeUnknown(Bit.UNK_5_1) - .writeUnknown(Bit.UNK_5_2); - - for (ShipSystem sys : ShipSystem.values()) { - Bit bit = SYSTEM_DAMAGES[sys.ordinal()]; - writer.writeFloat(bit, npc.getSystemDamage(sys), -1); - } - - for (BeamFrequency freq : BeamFrequency.values()) { - Bit bit = SHLD_FREQS[freq.ordinal()]; - writer.writeFloat(bit, npc.getShieldFreq(freq), -1); - } - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/ObjectParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/ObjectParser.java deleted file mode 100644 index b235c18..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/ObjectParser.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisObject; - -public interface ObjectParser { - public Enum[] getBits(); - public ArtemisObject parse(PacketReader reader); - public void write(ArtemisObject obj, PacketWriter writer); - public void appendDetail(ArtemisObject obj, StringBuilder b); -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/ObjectUpdatePacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/ObjectUpdatePacket.java deleted file mode 100644 index 93a5880..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/ObjectUpdatePacket.java +++ /dev/null @@ -1,118 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.world.ArtemisObject; - -public class ObjectUpdatePacket extends BaseArtemisPacket { - public static final int TYPE = 0x80803df9; - - private static final Map PARSERS; - - static { - PARSERS = new HashMap(); - PARSERS.put(ObjectType.PLAYER_SHIP, new PlayerShipParser()); - PARSERS.put(ObjectType.WEAPONS_CONSOLE, new WeapParser()); - PARSERS.put(ObjectType.ENGINEERING_CONSOLE, new EngParser()); - PARSERS.put(ObjectType.UPGRADES, new UpgradesParser()); - PARSERS.put(ObjectType.BASE, new BaseParser()); - PARSERS.put(ObjectType.NPC_SHIP, new NpcShipParser()); - PARSERS.put(ObjectType.MINE, new OtherParser(ObjectType.MINE)); - PARSERS.put(ObjectType.ANOMALY, new AnomalyParser()); - PARSERS.put(ObjectType.NEBULA, new NebulaParser()); - PARSERS.put(ObjectType.TORPEDO, new TorpedoParser()); - PARSERS.put(ObjectType.BLACK_HOLE, new OtherParser(ObjectType.BLACK_HOLE)); - PARSERS.put(ObjectType.ASTEROID, new OtherParser(ObjectType.ASTEROID)); - PARSERS.put(ObjectType.GENERIC_MESH, new GenericMeshParser()); - PARSERS.put(ObjectType.CREATURE, new CreatureParser()); - PARSERS.put(ObjectType.DRONE, new DroneParser()); - } - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, new PacketFactory() { - @Override - public Class getFactoryClass() { - return ObjectUpdatePacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new ObjectUpdatePacket(reader); - } - }); - } - - private ObjectType objectType; - private ObjectParser parser; - private List objects = new LinkedList(); - - private ObjectUpdatePacket(PacketReader reader) { - this(ObjectType.fromId(reader.peekByte())); - - if (parser == null) { - return; - } - - do { - ArtemisObject obj = parser.parse(reader); - - if (obj == null) { - break; - } - - objects.add(obj); - } while (true); - - reader.skip(4); - } - - public ObjectUpdatePacket(ObjectType type) { - super(ConnectionType.SERVER, TYPE); - objectType = type; - parser = PARSERS.get(objectType); - } - - public void addObject(ArtemisObject obj) { - if (objectType.isCompatible(obj)) { - throw new IllegalArgumentException("Object is of type " + - obj.getType() + "; expected " + objectType); - } - - objects.add(obj); - } - - public List getObjects() { - return new LinkedList(objects); - } - - @Override - protected void writePayload(PacketWriter writer) { - for (ArtemisObject obj : objects) { - writer.startObject(obj, objectType, parser.getBits()); - parser.write(obj, writer); - writer.endObject(); - } - - writer.writeInt(0); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - for (ArtemisObject obj : objects) { - parser.appendDetail(obj, b); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/OtherParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/OtherParser.java deleted file mode 100644 index 69019d8..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/OtherParser.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisGenericObject; -import net.dhleong.acl.world.ArtemisObject; - -public class OtherParser extends AbstractObjectParser { - private enum Bit { - X, - Y, - Z, - NAME, - UNK_1_5, - UNK_1_6, - UNK_1_7, - UNK_1_8 - } - private static final Bit[] BITS = Bit.values(); - - OtherParser(ObjectType objectType) { - super(objectType); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisGenericObject parseImpl(PacketReader reader) { - ObjectType type = reader.getObjectType(); - float x = reader.readFloat(Bit.X, Float.MIN_VALUE); - float y = reader.readFloat(Bit.Y, Float.MIN_VALUE); - float z = reader.readFloat(Bit.Z, Float.MIN_VALUE); - final ArtemisGenericObject obj = new ArtemisGenericObject(reader.getObjectId()); - String name; - - if (type.isNamed()) { - name = reader.readString(Bit.NAME); - } else { - name = null; - reader.readObjectUnknown(Bit.NAME, 4); - } - - obj.setName(name); - obj.setType(type); - obj.setX(x); - obj.setY(y); - obj.setZ(z); - reader.readObjectUnknown(Bit.UNK_1_5, 4); - reader.readObjectUnknown(Bit.UNK_1_6, 4); - reader.readObjectUnknown(Bit.UNK_1_7, 4); - reader.readObjectUnknown(Bit.UNK_1_8, 4); - return obj; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisGenericObject gObj = (ArtemisGenericObject) obj; - writer .writeFloat(Bit.X, gObj.getX(), Float.MIN_VALUE) - .writeFloat(Bit.Y, gObj.getY(), Float.MIN_VALUE) - .writeFloat(Bit.Z, gObj.getZ(), Float.MIN_VALUE); - - if (objectType.isNamed()) { - writer.writeString(Bit.NAME, gObj.getName()); - } else { - writer.writeUnknown(Bit.NAME); - } - - writer .writeUnknown(Bit.UNK_1_5) - .writeUnknown(Bit.UNK_1_6) - .writeUnknown(Bit.UNK_1_7) - .writeUnknown(Bit.UNK_1_8); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/PlayerShipParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/PlayerShipParser.java deleted file mode 100644 index c169f8f..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/PlayerShipParser.java +++ /dev/null @@ -1,217 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.AlertStatus; -import net.dhleong.acl.enums.BeamFrequency; -import net.dhleong.acl.enums.DriveType; -import net.dhleong.acl.enums.MainScreenView; -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.enums.TargetingMode; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisObject; -import net.dhleong.acl.world.ArtemisPlayer; - -public class PlayerShipParser extends AbstractObjectParser { - private enum Bit { - WEAPONS_TARGET, - IMPULSE, - RUDDER, - TOP_SPEED, - TURN_RATE, - TARGETING_MODE, - WARP, - ENERGY, - - SHIELD_STATE, - SHIP_NUMBER, - SHIP_TYPE, - X, - Y, - Z, - PITCH, - ROLL, - - HEADING, - VELOCITY, - UNK_3_3, - NAME, - FORE_SHIELDS, - FORE_SHIELDS_MAX, - AFT_SHIELDS, - AFT_SHIELDS_MAX, - - DOCKING_BASE, - ALERT_STATUS, - UNK_4_3, - MAIN_SCREEN, - BEAM_FREQUENCY, - AVAILABLE_COOLANT, - SCIENCE_TARGET, - CAPTAIN_TARGET, - - DRIVE_TYPE, - SCAN_OBJECT_ID, - SCAN_PROGRESS, - REVERSE_STATE, - UNK_5_5, - UNK_5_6, - UNK_5_7 - } - private static final Bit[] BITS = Bit.values(); - - protected PlayerShipParser() { - super(ObjectType.PLAYER_SHIP); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisPlayer parseImpl(PacketReader reader) { - ArtemisPlayer player = new ArtemisPlayer(reader.getObjectId()); - player.setWeaponsTarget(reader.readInt(Bit.WEAPONS_TARGET, -1)); - player.setImpulse(reader.readFloat(Bit.IMPULSE, -1)); - player.setSteering(reader.readFloat(Bit.RUDDER, -1)); - player.setTopSpeed(reader.readFloat(Bit.TOP_SPEED, -1)); - player.setTurnRate(reader.readFloat(Bit.TURN_RATE, -1)); - - if (reader.has(Bit.TARGETING_MODE)) { - player.setTargetingMode(TargetingMode.values()[reader.readByte()]); - } - - player.setWarp(reader.readByte(Bit.WARP, (byte) -1)); - player.setEnergy(reader.readFloat(Bit.ENERGY, -1)); - - if (reader.has(Bit.SHIELD_STATE)) { - player.setShields(reader.readBool(Bit.SHIELD_STATE, 2).getBooleanValue()); - } - - player.setShipIndex(reader.readInt(Bit.SHIP_NUMBER) - 1); - player.setHullId(reader.readInt(Bit.SHIP_TYPE)); - player.setX(reader.readFloat(Bit.X, Float.MIN_VALUE)); - player.setY(reader.readFloat(Bit.Y, Float.MIN_VALUE)); - player.setZ(reader.readFloat(Bit.Z, Float.MIN_VALUE)); - player.setPitch(reader.readFloat(Bit.PITCH, Float.MIN_VALUE)); - player.setRoll(reader.readFloat(Bit.ROLL, Float.MIN_VALUE)); - player.setHeading(reader.readFloat(Bit.HEADING, Float.MIN_VALUE)); - player.setVelocity(reader.readFloat(Bit.VELOCITY, -1)); - - reader.readObjectUnknown(Bit.UNK_3_3, 2); - - player.setName(reader.readString(Bit.NAME)); - player.setShieldsFront(reader.readFloat(Bit.FORE_SHIELDS, Float.MIN_VALUE)); - player.setShieldsFrontMax(reader.readFloat(Bit.FORE_SHIELDS_MAX, -1)); - player.setShieldsRear(reader.readFloat(Bit.AFT_SHIELDS, Float.MIN_VALUE)); - player.setShieldsRearMax(reader.readFloat(Bit.AFT_SHIELDS_MAX, -1)); - player.setDockingBase(reader.readInt(Bit.DOCKING_BASE, -1)); - - if (reader.has(Bit.ALERT_STATUS)) { - player.setAlertStatus(AlertStatus.values()[reader.readByte()]); - } - - reader.readObjectUnknown(Bit.UNK_4_3, 4); - - if (reader.has(Bit.MAIN_SCREEN)) { - player.setMainScreen(MainScreenView.values()[reader.readByte()]); - } - - if (reader.has(Bit.BEAM_FREQUENCY)) { - player.setBeamFrequency(BeamFrequency.values()[reader.readByte()]); - } - - player.setAvailableCoolant(reader.readByte(Bit.AVAILABLE_COOLANT, (byte) -1)); - player.setScienceTarget(reader.readInt(Bit.SCIENCE_TARGET, -1)); - player.setCaptainTarget(reader.readInt(Bit.CAPTAIN_TARGET, -1)); - - if (reader.has(Bit.DRIVE_TYPE)) { - player.setDriveType(DriveType.values()[reader.readByte()]); - } - - player.setScanObjectId(reader.readInt(Bit.SCAN_OBJECT_ID, -1)); - player.setScanProgress(reader.readFloat(Bit.SCAN_PROGRESS, -1)); - player.setReverse(reader.readBool(Bit.REVERSE_STATE, 1)); - - reader.readObjectUnknown(Bit.UNK_5_5, 4); - reader.readObjectUnknown(Bit.UNK_5_6, 5); - reader.readObjectUnknown(Bit.UNK_5_7, 4); - - return player; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisPlayer player = (ArtemisPlayer) obj; - int shipIndex = player.getShipIndex(); - int shipNumber = shipIndex == -1 ? -1 : shipIndex + 1; - writer .writeInt(Bit.WEAPONS_TARGET, player.getWeaponsTarget(), -1) - .writeFloat(Bit.IMPULSE, player.getImpulse(), -1) - .writeFloat(Bit.RUDDER, player.getSteering(), -1) - .writeFloat(Bit.TOP_SPEED, player.getTopSpeed(), -1) - .writeFloat(Bit.TURN_RATE, player.getTurnRate(), -1); - - TargetingMode targetingMode = player.getTargetingMode(); - - if (targetingMode != null) { - writer.writeByte(Bit.TARGETING_MODE, (byte) targetingMode.ordinal(), (byte) -1); - } - - writer .writeByte(Bit.WARP, player.getWarp(), (byte) -1) - .writeFloat(Bit.ENERGY, player.getEnergy(), -1) - .writeBool(Bit.SHIELD_STATE, player.getShieldsState(), 2) - .writeInt(Bit.SHIP_NUMBER, shipNumber, -1) - .writeInt(Bit.SHIP_TYPE, player.getHullId(), -1) - .writeFloat(Bit.X, player.getX(), Float.MIN_VALUE) - .writeFloat(Bit.Y, player.getY(), Float.MIN_VALUE) - .writeFloat(Bit.Z, player.getZ(), Float.MIN_VALUE) - .writeFloat(Bit.PITCH, player.getPitch(), Float.MIN_VALUE) - .writeFloat(Bit.ROLL, player.getRoll(), Float.MIN_VALUE) - .writeFloat(Bit.HEADING, player.getHeading(), Float.MIN_VALUE) - .writeFloat(Bit.VELOCITY, player.getVelocity(), -1) - .writeUnknown(Bit.UNK_3_3) - .writeString(Bit.NAME, player.getName()) - .writeFloat(Bit.FORE_SHIELDS, player.getShieldsFront(), Float.MIN_VALUE) - .writeFloat(Bit.FORE_SHIELDS_MAX, player.getShieldsFrontMax(), -1) - .writeFloat(Bit.AFT_SHIELDS, player.getShieldsRear(), Float.MIN_VALUE) - .writeFloat(Bit.AFT_SHIELDS_MAX, player.getShieldsRearMax(), -1) - .writeInt(Bit.DOCKING_BASE, player.getDockingBase(), -1); - - AlertStatus alertStatus = player.getAlertStatus(); - - if (alertStatus != null) { - writer.writeByte(Bit.ALERT_STATUS, (byte) alertStatus.ordinal(), (byte) -1); - } - - writer.writeUnknown(Bit.UNK_4_3); - - MainScreenView screen = player.getMainScreen(); - - if (screen != null) { - writer.writeByte(Bit.MAIN_SCREEN, (byte) screen.ordinal(), (byte) -1); - } - - BeamFrequency beamFreq = player.getBeamFrequency(); - - if (beamFreq != null) { - writer.writeByte(Bit.BEAM_FREQUENCY, (byte) beamFreq.ordinal(), (byte) -1); - } - - writer .writeByte(Bit.AVAILABLE_COOLANT, (byte) player.getAvailableCoolant(), (byte) -1) - .writeInt(Bit.SCIENCE_TARGET, player.getScienceTarget(), -1) - .writeInt(Bit.CAPTAIN_TARGET, player.getCaptainTarget(), -1); - - DriveType drive = player.getDriveType(); - - if (drive != null) { - writer.writeByte(Bit.DRIVE_TYPE, (byte) drive.ordinal(), (byte) -1); - } - - writer .writeInt(Bit.SCAN_OBJECT_ID, player.getScanObjectId(), -1) - .writeFloat(Bit.SCAN_PROGRESS, player.getScanProgress(), -1) - .writeBool(Bit.REVERSE_STATE, player.getReverseState(), 1) - .writeUnknown(Bit.UNK_5_5) - .writeUnknown(Bit.UNK_5_6) - .writeUnknown(Bit.UNK_5_7); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/SoundEffectPacket.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/SoundEffectPacket.java deleted file mode 100644 index a0bb077..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/SoundEffectPacket.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.PacketFactory; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.BaseArtemisPacket; -import net.dhleong.acl.protocol.UnexpectedTypeException; - -/** - * Indicates that the client should play the indicated sound file. - * @author rjwut - */ -public class SoundEffectPacket extends BaseArtemisPacket { - private static final int TYPE = 0xf754c8fe; - private static final byte MSG_TYPE = 0x03; - - public static void register(PacketFactoryRegistry registry) { - registry.register(ConnectionType.SERVER, TYPE, MSG_TYPE, - new PacketFactory() { - @Override - public Class getFactoryClass() { - return SoundEffectPacket.class; - } - - @Override - public ArtemisPacket build(PacketReader reader) - throws ArtemisPacketException { - return new SoundEffectPacket(reader); - } - }); - } - - private String mFilename; - - private SoundEffectPacket(PacketReader reader) { - super(ConnectionType.SERVER, TYPE); - int subtype = reader.readInt(); - - if (subtype != MSG_TYPE) { - throw new UnexpectedTypeException(subtype, MSG_TYPE); - } - - mFilename = reader.readString(); - } - - /** - * Returns the path of the file to play, relative to the Artemis install - * directory. - */ - public String getFilename() { - return mFilename; - } - - @Override - protected void writePayload(PacketWriter writer) { - writer.writeInt(MSG_TYPE).writeString(mFilename); - } - - @Override - protected void appendPacketDetail(StringBuilder b) { - b.append(mFilename); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/TorpedoParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/TorpedoParser.java deleted file mode 100644 index da8896b..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/TorpedoParser.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisGenericObject; -import net.dhleong.acl.world.ArtemisObject; - -public class TorpedoParser extends AbstractObjectParser { - private enum Bit { - X, - Y, - Z, - NAME, - UNK_1_5, - UNK_1_6, - UNK_1_7, - UNK_1_8 - } - private static final Bit[] BITS = Bit.values(); - private static final byte[] UNK_TORPEDO = { 0 }; - - TorpedoParser() { - super(ObjectType.TORPEDO); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisGenericObject parseImpl(PacketReader reader) { - reader.readObjectUnknown("UNK_TORPEDO", 1); - float x = reader.readFloat(Bit.X, Float.MIN_VALUE); - float y = reader.readFloat(Bit.Y, Float.MIN_VALUE); - float z = reader.readFloat(Bit.Z, Float.MIN_VALUE); - reader.readObjectUnknown(Bit.NAME, 4); - final ArtemisGenericObject obj = new ArtemisGenericObject(reader.getObjectId()); - obj.setType(ObjectType.TORPEDO); - obj.setX(x); - obj.setY(y); - obj.setZ(z); - reader.readObjectUnknown(Bit.UNK_1_5, 4); - reader.readObjectUnknown(Bit.UNK_1_6, 4); - reader.readObjectUnknown(Bit.UNK_1_7, 4); - reader.readObjectUnknown(Bit.UNK_1_8, 4); - return obj; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisGenericObject gObj = (ArtemisGenericObject) obj; - writer.writeUnknown("UNK_TORPEDO", UNK_TORPEDO); - writer .writeFloat(Bit.X, gObj.getX(), Float.MIN_VALUE) - .writeFloat(Bit.Y, gObj.getY(), Float.MIN_VALUE) - .writeFloat(Bit.Z, gObj.getZ(), Float.MIN_VALUE); - writer .writeUnknown(Bit.NAME) - .writeUnknown(Bit.UNK_1_5) - .writeUnknown(Bit.UNK_1_6) - .writeUnknown(Bit.UNK_1_7) - .writeUnknown(Bit.UNK_1_8); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/UpgradesParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/UpgradesParser.java deleted file mode 100644 index e9cd1c0..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/UpgradesParser.java +++ /dev/null @@ -1,158 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.enums.Upgrade; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.ArtemisObject; -import net.dhleong.acl.world.ArtemisPlayer; - -public class UpgradesParser extends AbstractObjectParser { - private enum Bit { - UNKNOWN_1_1, - UNKNOWN_1_2, - UNKNOWN_1_3, - UNKNOWN_1_4, - UNKNOWN_1_5, - UNKNOWN_1_6, - UNKNOWN_1_7, - UNKNOWN_1_8, - UNKNOWN_2_1, - UNKNOWN_2_2, - UNKNOWN_2_3, - UNKNOWN_2_4, - UNKNOWN_2_5, - UNKNOWN_2_6, - UNKNOWN_2_7, - UNKNOWN_2_8, - UNKNOWN_3_1, - UNKNOWN_3_2, - UNKNOWN_3_3, - UNKNOWN_3_4, - UNKNOWN_3_5, - UNKNOWN_3_6, - UNKNOWN_3_7, - UNKNOWN_3_8, - UNKNOWN_4_1, - UNKNOWN_4_2, - UNKNOWN_4_3, - UNKNOWN_4_4, - INFUSION_P_COIL(Upgrade.INFUSION_P_COIL), - UNKNOWN_4_6, - TAURON_FOCUSER(Upgrade.TAURON_FOCUSER), - CARPACTION_COIL(Upgrade.CARPACTION_COIL), - UNKNOWN_5_1, - CETROCITE_CRYSTAL(Upgrade.CETROCITE_CRYSTAL), - LATERAL_ARRAY(Upgrade.LATERAL_ARRAY), - UNKNOWN_5_4, - SECRET_CODE_CASE(Upgrade.SECRET_CODE_CASE), - UNKNOWN_5_6, - UNKNOWN_5_7, - UNKNOWN_5_8, - UNKNOWN_6_1, - UNKNOWN_6_2, - UNKNOWN_6_3, - UNKNOWN_6_4, - UNKNOWN_6_5, - UNKNOWN_6_6, - UNKNOWN_6_7, - UNKNOWN_6_8, - UNKNOWN_7_1, - UNKNOWN_7_2, - UNKNOWN_7_3, - UNKNOWN_7_4, - UNKNOWN_7_5, - UNKNOWN_7_6, - UNKNOWN_7_7, - UNKNOWN_7_8, - UNKNOWN_8_1, - UNKNOWN_8_2, - UNKNOWN_8_3, - UNKNOWN_8_4, - UNKNOWN_8_5, - UNKNOWN_8_6, - UNKNOWN_8_7, - UNKNOWN_8_8, - UNKNOWN_9_1, - UNKNOWN_9_2, - UNKNOWN_9_3, - UNKNOWN_9_4, - UNKNOWN_9_5, - UNKNOWN_9_6, - UNKNOWN_9_7, - UNKNOWN_9_8, - UNKNOWN_10_1, - UNKNOWN_10_2, - UNKNOWN_10_3, - UNKNOWN_10_4, - UNKNOWN_10_5, - UNKNOWN_10_6, - UNKNOWN_10_7, - UNKNOWN_10_8, - UNKNOWN_11_1, - UNKNOWN_11_2, - UNKNOWN_11_3, - UNKNOWN_11_4; - - private Upgrade upgrade; - - Bit() { - } - - Bit(Upgrade upgrade) { - this.upgrade = upgrade; - } - - private Upgrade getUpgrade() { - return upgrade; - } - } - - private static final Bit[] BITS = Bit.values(); - - UpgradesParser() { - super(ObjectType.UPGRADES); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisPlayer parseImpl(PacketReader reader) { - ArtemisPlayer player = new ArtemisPlayer(reader.getObjectId()); - - for (Bit bit : BITS) { - if (reader.has(bit)) { - Upgrade upgrade = bit.getUpgrade(); - - if (upgrade != null) { - player.setUpgrades(upgrade, reader.readByte()); - } else { - reader.readObjectUnknown(bit, 1); - } - } - } - - reader.readObjectUnknownUntil("UNKNOWN", ObjectType.UPGRADES.getId()); - return player; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisPlayer player = (ArtemisPlayer) obj; - - for (Bit bit : BITS) { - Upgrade upgrade = bit.getUpgrade(); - - if (upgrade != null) { - writer.writeByte(bit, player.getUpgrades(upgrade), (byte) -1); - } else { - writer.writeUnknown(bit); - } - } - - writer.writeUnknown("UNKNOWN", null); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/WeapParser.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/WeapParser.java deleted file mode 100644 index ba1edef..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/protocol/core/world/WeapParser.java +++ /dev/null @@ -1,202 +0,0 @@ -package net.dhleong.acl.protocol.core.world; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.enums.OrdnanceType; -import net.dhleong.acl.enums.TubeState; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.world.Artemis; -import net.dhleong.acl.world.ArtemisObject; -import net.dhleong.acl.world.ArtemisPlayer; - -public class WeapParser extends AbstractObjectParser { - private enum Bit { - TORP_HOMING, - TORP_NUKE, - TORP_MINE, - TORP_EMP, - TORP_PSHOCK, - UNK_1_6, - TUBE_TIME_1, - TUBE_TIME_2, - - TUBE_TIME_3, - TUBE_TIME_4, - TUBE_TIME_5, - TUBE_TIME_6, - TUBE_STATE_1, - TUBE_STATE_2, - TUBE_STATE_3, - TUBE_STATE_4, - - TUBE_STATE_5, - TUBE_STATE_6, - TUBE_CONTENT_1, - TUBE_CONTENT_2, - TUBE_CONTENT_3, - TUBE_CONTENT_4, - TUBE_CONTENT_5, - TUBE_CONTENT_6, - - UNK_4_1, - UNK_4_2, - UNK_4_3, - UNK_4_4, - UNK_4_5, - UNK_4_6, - UNK_4_7, - UNK_4_8 - } - private static final Bit[] BITS = Bit.values(); - - private static final Bit[] TORPEDOS = { - Bit.TORP_HOMING, Bit.TORP_NUKE, Bit.TORP_MINE, Bit.TORP_EMP, - Bit.TORP_PSHOCK - }; - - private static final Bit[] TUBE_TIMES = { - Bit.TUBE_TIME_1, Bit.TUBE_TIME_2, Bit.TUBE_TIME_3, - Bit.TUBE_TIME_4, Bit.TUBE_TIME_5, Bit.TUBE_TIME_6 - }; - - private static final Bit[] TUBE_STATES = { - Bit.TUBE_STATE_1, Bit.TUBE_STATE_2, Bit.TUBE_STATE_3, - Bit.TUBE_STATE_4, Bit.TUBE_STATE_5, Bit.TUBE_STATE_6 - }; - - private static final Bit[] TUBE_CONTENTS = { - Bit.TUBE_CONTENT_1, Bit.TUBE_CONTENT_2, Bit.TUBE_CONTENT_3, - Bit.TUBE_CONTENT_4, Bit.TUBE_CONTENT_5, Bit.TUBE_CONTENT_6 - }; - - - protected WeapParser() { - super(ObjectType.WEAPONS_CONSOLE); - } - - @Override - public Bit[] getBits() { - return BITS; - } - - @Override - protected ArtemisPlayer parseImpl(PacketReader reader) { - int[] torps = new int[TORPEDOS.length]; - float[] tubeTimes = new float[Artemis.MAX_TUBES]; - TubeState[] tubeStates = new TubeState[Artemis.MAX_TUBES]; - byte[] tubeContents = new byte[Artemis.MAX_TUBES]; - - for (int i = 0; i < torps.length; i++) { - torps[i] = (reader.readByte(TORPEDOS[i], (byte) -1)); - } - - reader.readObjectUnknown(Bit.UNK_1_6, 1); - - for (int i = 0; i < Artemis.MAX_TUBES; i++) { - tubeTimes[i] = reader.readFloat(TUBE_TIMES[i], -1); - } - - for (int i = 0; i < Artemis.MAX_TUBES; i++) { - byte state = reader.readByte(TUBE_STATES[i], (byte) -1); - - if (state != -1) { - tubeStates[i] = TubeState.values()[state]; - } - } - - for (int i = 0; i < Artemis.MAX_TUBES; i++) { - tubeContents[i] = reader.readByte(TUBE_CONTENTS[i], (byte) -1); - } - - ArtemisPlayer player = new ArtemisPlayer(reader.getObjectId()); - - for (int i = 0; i < TORPEDOS.length; i++) { - player.setTorpedoCount(i, torps[i]); - } - - for (int i = 0; i < Artemis.MAX_TUBES; i++) { - player.setTubeCountdown(i, tubeTimes[i]); - player.setTubeState(i, tubeStates[i]); - player.setTubeContentsValue(i, tubeContents[i]); - } - - // last byte in bit field appears to be unused - return player; - } - - @Override - public void write(ArtemisObject obj, PacketWriter writer) { - ArtemisPlayer player = (ArtemisPlayer) obj; - OrdnanceType[] ordTypes = OrdnanceType.values(); - - for (int i = 0; i < TORPEDOS.length; i++) { - OrdnanceType type = ordTypes[i]; - writer.writeByte(TORPEDOS[i], (byte) player.getTorpedoCount(type), (byte) -1); - } - - writer.writeUnknown(Bit.UNK_1_6); - - for (int i = 0; i < Artemis.MAX_TUBES; i++) { - writer.writeFloat(TUBE_TIMES[i], player.getTubeCountdown(i), -1); - } - - for (int i = 0; i < Artemis.MAX_TUBES; i++) { - TubeState state = player.getTubeState(i); - byte stateByte = (byte) (state != null ? state.ordinal() : -1); - writer.writeByte(TUBE_STATES[i], stateByte, (byte) -1); - } - - for (int i = 0; i < Artemis.MAX_TUBES; i++) { - byte type = player.getTubeContentsValue(i); - writer.writeByte(TUBE_CONTENTS[i], type, (byte) -1); - } - - // last byte in bit field appears to be unused - } - - @Override - public void appendDetail(ArtemisObject obj, StringBuilder b) { - ArtemisPlayer player = (ArtemisPlayer) obj; - b.append("\nWEAP for player ship #").append(obj.getId()).append(": "); - - for (OrdnanceType type : OrdnanceType.values()) { - int count = player.getTorpedoCount(type); - - if (count != -1) { - b.append(type).append('=').append(count).append(' '); - } - } - - for (int i = 0; i < Artemis.MAX_TUBES; i++) { - TubeState state = player.getTubeState(i); - byte contents = player.getTubeContentsValue(i); - float time = player.getTubeCountdown(i); - - if (state == null && contents == -1 && time < 0) { - continue; - } - - b.append("\n\tTube #").append(i).append(":"); - - if (state != null) { - b.append(" state=").append(state); - } - - if (contents != -1) { - String contentsStr; - - if (state == TubeState.UNLOADED) { - contentsStr = "EMPTY"; - } else { - contentsStr = OrdnanceType.values()[contents].name(); - } - - b.append(" contents=").append(contentsStr); - } - - if (time >= 0) { - b.append(" time=").append(time); - } - } - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/BitField.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/BitField.java deleted file mode 100644 index 2e40ecc..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/BitField.java +++ /dev/null @@ -1,127 +0,0 @@ -package net.dhleong.acl.util; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.Arrays; - -/** - * Provides easy reading and writing of bits in a bit field. The bit places are - * identified by an enum. The bytes are little-endian, so in the event that the - * final byte is not completely utilized, it will be the most significant bits - * that are left unused. - * @author rjwut - */ -public class BitField { - private byte[] bytes; - - /** - * Creates a BitField large enough to accommodate the enumerated bits. All - * bits start at 0. - */ - public BitField(Enum[] bits) { - this(countBytes(bits)); - } - - /** - * Creates a BitField large enough to accommodate the enumerated bits, and - * stores the indicated bytes in it. - */ - public BitField(Enum[] bits, byte[] bytes, int offset) { - this.bytes = Arrays.copyOfRange(bytes, offset, offset + countBytes(bits)); - } - - /** - * Creates a BitField with the given number of bits. All bits start at 0. - */ - public BitField(int bitCount) { - this.bytes = new byte[countBytes(bitCount)]; - } - - /** - * Returns the number of bytes in this BitField. - */ - public int getByteCount() { - return bytes.length; - } - - /** - * Returns true if the indicated bit is 1, false if it's 0. - */ - public boolean get(Enum bit) { - int bitIndex = bit.ordinal(); - int byteIndex = bitIndex / 8; - int mask = 0x1 << (bitIndex % 8); - return (bytes[byteIndex] & mask) != 0; - } - - /** - * If value is true, the indicated bit is set to 1; otherwise, it's set to - * 0. - */ - public void set(Enum bit, boolean value) { - int ordinal = bit.ordinal(); - int byteIndex = ordinal / 8; - int bitIndex = ordinal % 8; - int mask = (0x1 << bitIndex) ^ 0xff; - int shiftedValue = (value ? 1 : 0) << bitIndex; - bytes[byteIndex] = (byte) ((bytes[byteIndex] & mask) | shiftedValue); - } - - /** - * Returns a hex encoded String of the bytes that comprise this BitField. - */ - @Override - public String toString() { - return TextUtil.byteArrayToHexString(bytes); - } - - /** - * Writes this BitField to the given OutputStream. - */ - public void write(OutputStream out) throws IOException { - out.write(bytes); - } - - /** - * Returns a space-delimited list of the names of the enum values that - * correspond to active bits in this BitField. This can be useful for - * debugging purposes. - */ - public String listActiveBits(Enum[] bits) { - StringBuilder list = new StringBuilder(); - - for (int i = 0; i < bytes.length; i++) { - byte b = bytes[i]; - - for (int j = 0; j < 8; j++) { - int bitIndex = i * 8 + j; - - if (bitIndex < bits.length) { - if ((b & (0x01 << j)) != 0) { - if (list.length() != 0) { - list.append(' '); - } - - list.append(bits[bitIndex].name()); - } - } - } - } - - return list.toString(); - } - - /** - * Returns the number of bytes required to store the given number of bits in a BitField. - */ - private static int countBytes(int bitCount) { - return (bitCount + 7) / 8; - } - - /** - * Returns the number of bytes required to store the enumerated bits. - */ - private static int countBytes(Enum[] bits) { - return countBytes(bits.length); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/BoolState.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/BoolState.java deleted file mode 100644 index 37d957e..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/BoolState.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.dhleong.acl.util; - -/** - * A tri-state enumeration representing the values TRUE, FALSE and UNKNOWN. - * @author rjwut - */ -public enum BoolState { - TRUE, FALSE, UNKNOWN; - - /** - * Returns true if this BoolState is .TRUE; false otherwise. - */ - public boolean getBooleanValue() { - return ordinal() == 0; - } - - /** - * Returns .TRUE if the given boolean is true; .FALSE otherwise. - */ - public static BoolState from(boolean isTrue) { - return isTrue ? TRUE : FALSE; - } - - /** - * Returns .FALSE if state is null or .UNKNOWN; .TRUE otherwise. - */ - public static boolean isKnown(BoolState state) { - return state == TRUE || state == FALSE; - } - - /** - * Returns true if the given value is .TRUE; otherwise. - */ - public static boolean safeValue(BoolState value) { - return value == TRUE; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/ByteArrayReader.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/ByteArrayReader.java deleted file mode 100644 index 5c365ec..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/ByteArrayReader.java +++ /dev/null @@ -1,215 +0,0 @@ -package net.dhleong.acl.util; - -import java.io.EOFException; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; -import java.util.Arrays; - -/** - * Handles reading various data types from a byte array and tracking the offset - * pointer. - */ -public class ByteArrayReader { - /** - * Reads the indicated number of bytes from the given InputStream wrapped by this object and - * stores them in the provided buffer. This method blocks until the desired number of bytes has - * been read or the stream closes. - */ - public static void readBytes(InputStream in, int byteCount, byte[] buffer) throws InterruptedException, IOException { - if (byteCount > buffer.length) { - throw new IllegalArgumentException("Requested " + byteCount + - " byte(s) but buffer is only " + buffer.length + " byte(s)"); - } - - int totalBytesRead = 0; - - while (true) { - int bytesRead = in.read(buffer, totalBytesRead, byteCount - totalBytesRead); - - if (bytesRead == -1) { - throw new EOFException("Stream is closed"); - } - - totalBytesRead += bytesRead; - - if (totalBytesRead < byteCount) { - Thread.sleep(1); - } else { - break; - } - } - } - - /** - * Reads a short (coerced to an int) from the indicated location in the - * given byte array. - */ - public static int readShort(byte[] bytes, int offset) { - return (0xff & (bytes[offset + 1] << 8)) | (0xff & bytes[offset]); - } - - /** - * Reads an int from the indicated location in the given byte array. - */ - public static int readInt(byte[] bytes, int offset) { - return ((0xff & bytes[offset + 3]) << 24) | - ((0xff & bytes[offset + 2]) << 16) | - ((0xff & bytes[offset + 1]) << 8) | - (0xff & bytes[offset]); - } - - /** - * Reads a float from the indicated location in the given byte array. - */ - public static float readFloat(byte[] bytes, int offset) { - return Float.intBitsToFloat(readInt(bytes, offset)); - } - - private byte[] bytes; - private int offset; - - /** - * Constructs a new ByteArrayReader that will read the bytes from the given - * array. - */ - public ByteArrayReader(byte[] bytes) { - this.bytes = bytes; - } - - /** - * Returns the number of unread bytes. - */ - public int getBytesLeft() { - return bytes.length - offset; - } - - /** - * Returns the next byte to be read from the array without moving the - * pointer. - */ - public byte peek() { - return bytes[offset]; - } - - /** - * Skips the indicated number of bytes. - */ - public void skip(int byteCount) { - offset += byteCount; - } - - /** - * Returns the next byte. - */ - public byte readByte() { - return bytes[offset++]; - } - - /** - * Returns the next given number of bytes. - */ - public byte[] readBytes(int byteCount) { - byte[] readBytes = Arrays.copyOfRange(bytes, offset, offset + byteCount); - offset += byteCount; - return readBytes; - } - - /** - * Reads the given number of bytes, then returns true if the first byte was - * 1 and false otherwise. - */ - public boolean readBoolean(int byteCount) { - return readBytes(byteCount)[0] == 1; - } - - /** - * Reads the given number of bytes, then returns BoolState.TRUE if the first - * byte was 1 and BoolState.FALSE otherwise. - */ - public BoolState readBoolState(int byteCount) { - return BoolState.from(readBoolean(byteCount)); - } - - /** - * Reads a short value (two bytes) and returns it coerced to an int. - */ - public int readShort() { - int value = readShort(bytes, offset); - offset += 2; - return value; - } - - /** - * Reads and returns an int value (four bytes). - */ - public int readInt() { - int value = readInt(bytes, offset); - offset += 4; - return value; - } - - /** - * Reads and returns a float value (four bytes). - */ - public float readFloat() { - return Float.intBitsToFloat(readInt()); - } - - /** - * Reads and returns a BitField, presuming that the given enum values - * represent the bits it stores. - */ - public BitField readBitField(Enum[] bits) { - BitField bitField = new BitField(bits, bytes, offset); - offset += bitField.getByteCount(); - return bitField; - } - - /** - * Reads and returns a US ASCII encoded String(). - */ - public String readUSASCIIString() { - return readString(Util.US_ASCII, 1, false); - } - - /** - * Reads and returns a UTF-16LE encoded String(). - */ - public String readUTF16LEString() { - return readString(Util.UTF16LE, 2, true); - } - - /** - * Reads a String in the given Charset, assuming the indicated number of - * bytes per character. - */ - private String readString(Charset charset, int bytesPerChar, boolean nullTerminated) { - int charCount = readInt(); - int byteCount = charCount * bytesPerChar; - int nullLength = nullTerminated ? bytesPerChar : 0; - int endOffset = offset + byteCount - nullLength; - byte[] readBytes = Arrays.copyOfRange(bytes, offset, endOffset); - offset += byteCount; - int i = 0; - - // check for "early" null - for ( ; i < readBytes.length; i += bytesPerChar) { - boolean isNull = true; - - for (int j = 0; isNull && j < bytesPerChar; j++) { - isNull = readBytes[i + j] == 0; - } - - if (isNull) { - break; - } - } - - if (i != readBytes.length) { - readBytes = Arrays.copyOfRange(readBytes, 0, i); - } - - return new String(readBytes, charset); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/GridCoord.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/GridCoord.java deleted file mode 100644 index 905a0bd..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/GridCoord.java +++ /dev/null @@ -1,136 +0,0 @@ -package net.dhleong.acl.util; - -import java.util.ArrayDeque; -import java.util.Iterator; -import java.util.Queue; - -/** - * A 3d grid coordinate, for referencing internal systems on the Player's ship. - * @author dhleong - */ -public final class GridCoord implements Comparable { - private static final int CACHE_SIZE = 50; - private static final Queue sCache = new ArrayDeque(CACHE_SIZE); - - private final int x, y, z; - - private GridCoord(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } - - public int getX() { - return x; - } - - public int getY() { - return y; - } - - public int getZ() { - return z; - } - - @Override - public final boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof GridCoord)) { - return false; - } - - GridCoord cast = (GridCoord) other; - return equals(cast.x, cast.y, cast.z); - } - - public final boolean equals(int ox, int oy, int oz) { - return (x == ox && y == oy && z == oz); - } - - @Override - public int hashCode() { - int result = (x ^ (x >>> 32)); - result = 31 * result + (y ^ (y >>> 32)); - result = 31 * result + (z ^ (z >>> 32)); - return result; - } - - @Override - public String toString() { - return new StringBuilder() - .append('[') - .append(x) - .append(',') - .append(y) - .append(',') - .append(z) - .append(']') - .toString(); - } - - /** - * This factory method uses a very simple LRU queue to maintain a cache of - * GridCoords, since we will probably reuse just a handful but fairly often. - * This should keep our memory footprint to a minimum. - */ - public static final GridCoord getInstance(int x, int y, int z) { - synchronized(sCache) { - Iterator iter = sCache.iterator(); - - while (iter.hasNext()) { - GridCoord c = iter.next(); - - if (c.equals(x, y, z)) { - iter.remove(); // pop out so we can move it to the head - sCache.offer(c); - return c; - } - } - } - - GridCoord c = new GridCoord(x, y, z); - - // put it in the queue, if there's room. - int size = sCache.size(); - - if (size >= CACHE_SIZE) { - synchronized(sCache) { - sCache.poll(); // free up space - } - } - - synchronized(sCache) { - sCache.offer(c); - } - - return c; - } - - /** - * Return a unique long representing this coord. - * It's super simple, but should work since our - * coords tend to be 10 or less in any dimension - */ - public long getUniqueId() { - return (x * 10000L) + (y * 100) + z; - } - - /** - * Sorts in z order, then x, then y. - */ - @Override - public int compareTo(GridCoord other) { - if (z != other.z) { - return z - other.z; - } - - if (x != other.x) { - return x - other.x; - } - - return y - other.y; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/PlayerShipUpdateListener.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/PlayerShipUpdateListener.java deleted file mode 100644 index 557910b..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/PlayerShipUpdateListener.java +++ /dev/null @@ -1,71 +0,0 @@ -package net.dhleong.acl.util; - -import net.dhleong.acl.iface.DisconnectEvent; -import net.dhleong.acl.iface.Listener; -import net.dhleong.acl.protocol.core.GameOverPacket; -import net.dhleong.acl.world.ArtemisPlayer; - -/** - * Convenience class for listening for updates to a particular player ship, - * indicated by ship index. The ship index is usually omitted from updates, but - * the first update will always specify it. This class automates the tactic of - * noting the ID of the ship with the given index, and using that to identify - * the ship from then on. When an update for the specific ship is received, the - * onShipUpdate() method is invoked. - * - * To use, extend the class and implement onShipUpdate(), then pass an instance - * of your subclass into ArtemisNetworkInterface.addListener(). - * - * @author rjwut - */ -public abstract class PlayerShipUpdateListener { - public abstract void onShipUpdate(ArtemisPlayer player); - - private int index; - private int id; - private boolean found = false; - - public PlayerShipUpdateListener(int index) { - this.index = index; - } - - @Listener - public final void onPlayerObjectUpdated(ArtemisPlayer player) { - if (!found) { - synchronized (this) { - // We don't know the ship's ID yet - int curIndex = player.getShipIndex(); - - if (curIndex == -1 || curIndex != index) { - return; // this isn't the one we want - } - - // We found it; record the ID - id = player.getId(); - found = true; - } - } else { - // We know the ID, so just check for that - if (player.getId() != id) { - return; // this isn't the one we want - } - } - - // If we got here, this is the ship we want - onShipUpdate(player); - } - - @Listener - public void onGameOver(GameOverPacket pkt) { - found = false; // ship will probably have a different ID next game - } - - @Listener - public void onDisconnect(DisconnectEvent event) { - found = false; // ship will probably have a different ID next game - } - - public int getIndex() { - return index; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/ShipSystemGrid.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/ShipSystemGrid.java deleted file mode 100644 index cb15309..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/ShipSystemGrid.java +++ /dev/null @@ -1,84 +0,0 @@ -package net.dhleong.acl.util; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import net.dhleong.acl.enums.ShipSystem; - -/** - * Some basic management of the internal systems grid for a Player Ship. This is - * by no means comprehensive--we don't keep track of pixel coordinates, for - * example, just the "grid" coordinates--but is just enough so we can get the - * Engineering console to be more complete. - * @author dhleong - */ -public class ShipSystemGrid { - public static class GridEntry { - private final ShipSystem system; - private final int index; // index of this system among its types, [0,N) - - private GridEntry(ShipSystem system, int index) { - this.system = system; - this.index = index; - } - - public ShipSystem getSystem() { - return system; - } - - public int getIndex() { - return index; - } - } - - private final Map mSystems = new HashMap(); - private final int[] mSystemCounts = new int[ShipSystem.values().length]; - - /** - * Get the number of nodes we have of the given ShipSystem. - */ - public int getSystemCount(ShipSystem sys) { - return mSystemCounts[sys.ordinal()]; - } - - /** - * Returns the GridEntry found at the given coordinates. - */ - public GridEntry getGridAt(GridCoord coord) { - return mSystems.get(coord); - } - - /** - * Convenience method for getGridAt(coord).getSystem(). - */ - public ShipSystem getSystemTypeAt(GridCoord coord) { - return mSystems.get(coord).system; - } - - /** - * Get the set of GridCoords contained on this grid. - */ - public Set getCoords() { - return mSystems.keySet(); - } - - /** - * Returns all GridCoord objects that pertain to the given ShipSystem. - */ - public Collection getCoordsFor(ShipSystem sys) { - List coords = new ArrayList(); - - for (Entry e : mSystems.entrySet()) { - if (e.getValue().system == sys) { - coords.add(e.getKey()); - } - } - - return coords; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/TextUtil.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/TextUtil.java deleted file mode 100644 index 96800a5..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/TextUtil.java +++ /dev/null @@ -1,95 +0,0 @@ -package net.dhleong.acl.util; - -/** - * Various utility methods for coercing between hex values and other formats. - */ -public class TextUtil { - /** - * Converts the given byte to a hex String. - */ - public static String byteToHex(byte b) { - String hex = Integer.toHexString(b); - if (hex.length() >= 2) { - return hex.substring(hex.length()-2); - } - - return String.format("0%s", hex); - } - - /** - * Converts the given byte array to a hex String. - */ - public static String byteArrayToHexString(byte[] data) { - return byteArrayToHexString(data, 0, data.length); - } - - /** - * Converts a subset of the given byte array to a hex String. - */ - public static String byteArrayToHexString(byte[] data, int offset, int length) { - StringBuilder buf = new StringBuilder(); - final int end = offset + length; - - for (int i=offset; i < end; i++) { - byte b = data[i]; - - buf.append(byteToHex(b)); - } - - return buf.toString(); - } - - /** - * Converts an int to a hex String. - */ - public static String intToHex(int val) { - String hex = Integer.toHexString(val); - - if (hex.length() >= 8) { - return hex.substring(hex.length()-8); - } - - return String.format("%8s", hex).replace(' ', '0'); - } - - /** - * Converts an int to a little-endian hex String. - */ - public static String intToHexLE(int val) { - StringBuilder buf = new StringBuilder(); - - for (int i = 0; i < 32; i += 8) { - String hex = Integer.toHexString((0xff & (val >> i))); - - if (hex.length() == 1) { - buf.append('0'); - } - - buf.append(hex); - } - - return buf.toString(); - } - - /** - * Converts a hex String to a byte array. - */ - public static byte[] hexToByteArray(String hex) { - int len = hex.length(); - - if (len % 2 == 1) { - throw new IllegalArgumentException( - "Hex strings must contain two characters per byte: " + hex - ); - } - - byte[] bytes = new byte[len / 2]; - - for (int i = 0; i < len; i += 2) { - String hexByte = hex.substring(i, i + 2); - bytes[i / 2] = (byte) Integer.parseInt(hexByte, 16); - } - - return bytes; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/Util.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/Util.java deleted file mode 100644 index a25d831..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/Util.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.dhleong.acl.util; - -import java.nio.charset.Charset; -import java.util.Set; - -/** - * Miscellaneous unloved stuff that doesn't have a home right now. But don't - * worry, we love you and will find you a home. - */ -public class Util { - public static final Charset US_ASCII = Charset.forName("US-ASCII"); - public static final Charset UTF16LE = Charset.forName("UTF-16LE"); - - public static final String enumSetToString(Set> set) { - if (set.isEmpty()) { - return ""; - } - - StringBuilder b = new StringBuilder(); - - for (Enum val : set) { - if (b.length() != 0) { - b.append(' '); - } - - b.append(val); - } - - return b.toString(); - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/Version.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/Version.java deleted file mode 100644 index e6836f5..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/util/Version.java +++ /dev/null @@ -1,188 +0,0 @@ -package net.dhleong.acl.util; - -import java.util.Arrays; - -import net.dhleong.acl.iface.PacketWriter; - -/** - * Version number handling class. This handles semantic versioning - * (major.minor.patch), and can interpret float version numbers for backwards - * compatibility. For robustness and to avoid duplication of code, it can handle - * an arbitrary number of parts in the version number, not just three. - * @author rjwut - */ -public class Version implements Comparable { - public static final Version MODERN = new Version("2.1"); - - private int[] mParts; - private int hash; - - /** - * Constructs a Version from integer parts, with the most significant part - * first. This constructor can be used to create both modern and legacy - * version numbers. - */ - public Version(int... parts) { - mParts = parts; - hash = Arrays.hashCode(mParts); - } - - /** - * Interprets a float as a version number, with a check to ensure that - * versions prior to 1.41 are interpreted correctly according to the Artemis - * version history. This constructor can only be used to create legacy - * version numbers (earlier than version 2.1); later ones will throw an - * IllegalArgumentException. - * @see http://artemiswiki.pbworks.com/w/page/53699717/Version%20history - */ - public Version(float version) { - if (version >= 2.1) { - throw new IllegalArgumentException( - "Legacy version constructor is not valid for Artemis 2.1+" - ); - } - - int major = (int) Math.floor(version); - int minor = (int) Math.floor((version - major) * 100); - - if (minor < 40) { - minor /= 10; - } - - mParts = new int[] { major, minor, 0 }; - hash = Arrays.hashCode(mParts); - } - - /** - * Constructs a Version from a String. This constructor can be used to - * create both modern and legacy version numbers. - */ - public Version(String version) { - String[] strParts = version.split("\\."); - mParts = new int[strParts.length]; - - for (int i = 0; i < strParts.length; i++) { - mParts[i] = Integer.parseInt(strParts[i]); - } - - hash = Arrays.hashCode(mParts); - } - - /** - * Returns true if this is a legacy version number; false otherwise. Legacy - * versioning was deprecated as of Artemis 2.1, so this method will return - * true for all version numbers earlier than that. - */ - public boolean isLegacy() { - return lt(MODERN); - } - - /** - * Convenience method for compareTo(version) < 0. - */ - public boolean lt(Version version) { - return compareTo(version) < 0; - } - - /** - * Convenience method for compareTo(version) > 0. - */ - public boolean gt(Version version) { - return compareTo(version) > 0; - } - - /** - * Convenience method for compareTo(version) <= 0. - */ - public boolean le(Version version) { - return compareTo(version) <= 0; - } - - /** - * Convenience method for compareTo(version) >= 0. - */ - public boolean ge(Version version) { - return compareTo(version) >= 0; - } - - /** - * Writes this Version to the given PacketWriter. Writes both the legacy and - * (if applicable) modern version fields. Note that to ensure compatibility, - * modern version fields will always be written with exactly three parts. - */ - public void writeTo(PacketWriter writer) { - boolean legacy = isLegacy(); - writer.writeFloat(legacy ? mParts[0] + mParts[1] * 0.1f : 2.0f); - - if (!legacy) { - for (int i = 0; i < 3; i++) { - writer.writeInt(getPart(mParts, i)); - } - } - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - - if (!(o instanceof Version)) { - return false; - } - - return compareTo((Version) o) == 0; - } - - @Override - public int hashCode() { - return hash; - } - - @Override - public String toString() { - if (isLegacy()) { - return mParts[0] + "." + mParts[1]; - } - - StringBuilder b = new StringBuilder(); - - for (int part : mParts) { - if (b.length() != 0) { - b.append('.'); - } - - b.append(part); - } - - return b.toString(); - } - - /** - * Compares this Version against the given one. If the two Version objects - * don't have the same number of parts, the absent parts are treated as zero - * (e.g.: 2.1 is the same as 2.1.0). - */ - @Override - public int compareTo(Version o) { - int partCount = Math.max(mParts.length, o.mParts.length); - - for (int i = 0; i < partCount; i++) { - int c = getPart(mParts, i) - getPart(o.mParts, i); - - if (c != 0) { - return c; - } - } - - return 0; - } - - /** - * Returns the indicated part value for the given array of parts, or 0 if - * the index is greater than that of the last part. - */ - private static int getPart(int[] parts, int index) { - return parts.length > index ? parts[index] : 0; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/BeamPort.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/BeamPort.java deleted file mode 100644 index 4ff1ae2..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/BeamPort.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.dhleong.acl.vesseldata; - -/** - * Describes a single beam port on a vessel. Corresponds to the - * element in vesselData.xml. This class extends WeaponPort and adds an arcWidth - * property to define the beam weapon's firing arc. - * @author rjwut - */ -public class BeamPort extends WeaponPort { - float arcWidth; - - /** - * Returns the width of the beam arc in radians. - */ - public float getArcWidth() { - return arcWidth; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/ClasspathResolver.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/ClasspathResolver.java deleted file mode 100644 index d624f84..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/ClasspathResolver.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.dhleong.acl.vesseldata; - -import java.net.URI; -import java.net.URISyntaxException; - -class ClasspathResolver implements PathResolver { - @Override - public URI get(String path) throws URISyntaxException { - return getClass().getResource(path).toURI(); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Faction.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Faction.java deleted file mode 100644 index 79c921c..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Faction.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.dhleong.acl.vesseldata; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import net.dhleong.acl.enums.FactionAttribute; - -/** - * Corresponds to the element in vesselData.xml. - * @author rjwut - */ -public class Faction { - private int id; - private String name; - private Set attributes; - List taunts = new ArrayList(3); - - Faction(int id, String name, String keys) { - this.id = id; - this.name = name; - attributes = FactionAttribute.build(keys); - } - - /** - * Returns the faction's ID. - */ - public int getId() { - return id; - } - - /** - * Returns the faction's name. - */ - public String getName() { - return name; - } - - /** - * Returns an array containing the FactionAttributes that correspond to this - * Faction. - */ - public FactionAttribute[] getAttributes() { - return attributes.toArray(new FactionAttribute[attributes.size()]); - } - - /** - * Returns true if this Faction has all the given FactionAttributes; false - * otherwise. - */ - public boolean is(FactionAttribute... attrs) { - for (FactionAttribute attr : attrs) { - if (!attributes.contains(attr)) { - return false; - } - } - - return true; - } - - /** - * Returns this Faction's Taunts. - */ - public Taunt[] getTaunts() { - return (Taunt[]) taunts.toArray(); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/FilePathResolver.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/FilePathResolver.java deleted file mode 100644 index f29c89b..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/FilePathResolver.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.dhleong.acl.vesseldata; - -import java.io.File; -import java.net.URI; -import java.net.URISyntaxException; - -class FilePathResolver implements PathResolver { - private File artemisInstallPath; - - FilePathResolver(File artemisInstallPath) { - this.artemisInstallPath = artemisInstallPath; - } - - @Override - public URI get(String path) throws URISyntaxException { - return new File(artemisInstallPath, path).toURI(); - } - -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/PathResolver.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/PathResolver.java deleted file mode 100644 index 4827270..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/PathResolver.java +++ /dev/null @@ -1,8 +0,0 @@ -package net.dhleong.acl.vesseldata; - -import java.net.URI; -import java.net.URISyntaxException; - -public interface PathResolver { - public URI get(String path) throws URISyntaxException; -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/SAXVesselDataHandler.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/SAXVesselDataHandler.java deleted file mode 100644 index e444f24..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/SAXVesselDataHandler.java +++ /dev/null @@ -1,353 +0,0 @@ -package net.dhleong.acl.vesseldata; - -import java.util.HashMap; -import java.util.Map; - -import net.dhleong.acl.enums.OrdnanceType; - -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; - -/** - * SAX ContentHandler implementation that can convert vesselData.xml to a - * VesselData object. - */ -public class SAXVesselDataHandler extends DefaultHandler { - /** - * Interface for classes which handle a specific element type in - * vesselData.xml. - */ - private interface Parser { - /** - * Invoked when the corresponding element is encountered by the SAX - * parser. - */ - void parse(Attributes attrs); - } - - VesselData vesselData; - private Map parsers = new HashMap(); - private Faction faction; - private Vessel vessel; - - SAXVesselDataHandler() { - parsers.put("art", new ArtParser()); - parsers.put("beam_port", new BeamPortParser()); - parsers.put("carrier", new CarrierParser()); - parsers.put("drone_port", new DronePortParser()); - parsers.put("engine_port", new EnginePortParser()); - parsers.put("fleet_ai", new FleetAiParser()); - parsers.put("hullRace", new HullRaceParser()); - parsers.put("impulse_point", new ImpulsePointParser()); - parsers.put("internal_data", new InternalDataParser()); - parsers.put("long_desc", new LongDescParser()); - parsers.put("maneuver_point", new ManeuverPointParser()); - parsers.put("performance", new PerformanceParser()); - parsers.put("production", new ProductionParser()); - parsers.put("shields", new ShieldsParser()); - parsers.put("taunt", new TauntParser()); - parsers.put("torpedo_station_port", new TorpedoStationPortParser()); - parsers.put("torpedo_storage", new TorpedoStorageParser()); - parsers.put("torpedo_tube", new TorpedoTubeParser()); - parsers.put("vessel", new VesselParser()); - parsers.put("vessel_data", new VesselDataParser()); - } - - @Override - public void startElement(String namespaceURI, String localName, - String qName, Attributes attrs) throws SAXException { - Parser parser = parsers.get(qName); - - if (parser != null) { - parser.parse(attrs); - } else { - System.err.println("Unknown element: " + qName); - } - } - - /** - * Converts an XML attribute to a float value, or 0.0f if the attribute is - * not found. - */ - private static float parseFloat(Attributes attrs, String name) { - String value = attrs.getValue(name); - return value != null ? Float.parseFloat(value) : 0.0f; - } - - /** - * Converts an XML attribute to an int value; or 0 if the attribute is not - * found. - */ - private static int parseInt(Attributes attrs, String name) { - String value = attrs.getValue(name); - return value != null ? Integer.parseInt(value) : 0; - } - - /** - * Extracts the x, y, and z attributes and writes them to the given - * VesselPoint object. - */ - private static void parseVesselPoint(VesselPoint point, Attributes attrs) { - point.x = Float.parseFloat(attrs.getValue("x")); - point.y = Float.parseFloat(attrs.getValue("y")); - point.z = Float.parseFloat(attrs.getValue("z")); - } - - /** - * Extracts weapon port attributes and writes them to the given WeaponPort - * object. - */ - public static void parseWeaponPort(WeaponPort port, Attributes attrs) { - parseVesselPoint(port, attrs); - port.damage = parseFloat(attrs, "damage"); - port.cycleTime = parseFloat(attrs, "cycletime"); - port.range = parseInt(attrs, "range"); - } - - /** - * Parser for elements. - */ - private class ArtParser implements Parser { - @Override - public void parse(Attributes attrs) { - vessel.meshFile = attrs.getValue("meshfile"); - vessel.diffuseFile = attrs.getValue("diffuseFile"); - vessel.glowFile = attrs.getValue("glowFile"); - vessel.specularFile = attrs.getValue("specularFile"); - vessel.scale = parseFloat(attrs, "scale"); - } - } - - /** - * Parser for elements. - */ - private class BeamPortParser implements Parser { - @Override - public void parse(Attributes attrs) { - BeamPort port = new BeamPort(); - parseWeaponPort(port, attrs); - port.arcWidth = parseFloat(attrs, "arcwidth"); - vessel.beamPorts.add(port); - } - } - - /** - * Parser for elements. - */ - private class CarrierParser implements Parser { - @Override - public void parse(Attributes attrs) { - vessel.fighterCount = parseInt(attrs, "complement"); - } - } - - /** - * Parser for elements. - */ - private class DronePortParser implements Parser { - @Override - public void parse(Attributes attrs) { - WeaponPort port = new WeaponPort(); - parseWeaponPort(port, attrs); - vessel.dronePorts.add(port); - } - } - - /** - * Parser for elements. - */ - private class EnginePortParser implements Parser { - @Override - public void parse(Attributes attrs) { - VesselPoint point = new VesselPoint(); - parseVesselPoint(point, attrs); - vessel.enginePorts.add(point); - } - } - - /** - * Parser for elements. - */ - private class FleetAiParser implements Parser { - @Override - public void parse(Attributes attrs) { - vessel.fleetAiCommonality = parseInt(attrs, "commonality"); - } - } - - /** - * Parser for elements. - */ - private class HullRaceParser implements Parser { - @Override - public void parse(Attributes attrs) { - int id = parseInt(attrs, "ID"); - faction = new Faction( - id, - attrs.getValue("name"), - attrs.getValue("keys") - ); - - while (vesselData.factions.size() <= id) { - vesselData.factions.add(null); - } - - vesselData.factions.set(id, faction); - } - } - - /** - * Parser for elements. - */ - private class ImpulsePointParser implements Parser { - @Override - public void parse(Attributes attrs) { - VesselPoint point = new VesselPoint(); - parseVesselPoint(point, attrs); - vessel.impulsePoints.add(point); - } - } - - /** - * Parser for elements. - */ - private class InternalDataParser implements Parser{ - @Override - public void parse(Attributes attrs) { - vessel.internals = new VesselInternals(attrs.getValue("file")); - } - } - - /** - * Parser for elements. - */ - private class LongDescParser implements Parser { - @Override - public void parse(Attributes attrs) { - vessel.description = attrs.getValue("text").replaceAll("\\^", "\n"); - } - } - - /** - * Parser for elements. - */ - private class ManeuverPointParser implements Parser { - @Override - public void parse(Attributes attrs) { - VesselPoint point = new VesselPoint(); - parseVesselPoint(point, attrs); - vessel.maneuverPoints.add(point); - } - } - - /** - * Parser for elements. - */ - private class PerformanceParser implements Parser { - @Override - public void parse(Attributes attrs) { - vessel.turnRate = parseFloat(attrs, "turnrate"); - vessel.topSpeed = parseFloat(attrs, "topspeed"); - vessel.efficiency = parseFloat(attrs, "efficiency"); - } - } - - /** - * Parser for elements. - */ - private class ProductionParser implements Parser { - @Override - public void parse(Attributes attrs) { - vessel.productionCoeff = parseFloat(attrs, "coeff"); - } - } - - /** - * Parser for elements. - */ - private class ShieldsParser implements Parser { - @Override - public void parse(Attributes attrs) { - vessel.foreShields = parseInt(attrs, "front"); - vessel.aftShields = parseInt(attrs, "back"); - } - } - - /** - * Parser for elements. - */ - private class TauntParser implements Parser { - @Override - public void parse(Attributes attrs) { - faction.taunts.add(new Taunt( - attrs.getValue("immunity"), - attrs.getValue("text") - )); - } - } - - /** - * Parser for elements. - */ - private class TorpedoStationPortParser implements Parser { - @Override - public void parse(Attributes attrs) { - WeaponPort port = new WeaponPort(); - parseWeaponPort(port, attrs); - vessel.baseTorpedoPorts.add(port); - } - } - - /** - * Parser for elements. - */ - private class TorpedoStorageParser implements Parser { - @Override - public void parse(Attributes attrs) { - OrdnanceType type = OrdnanceType.values()[parseInt(attrs, "type")]; - Integer amount = Integer.valueOf(attrs.getValue("amount")); - vessel.torpedoStorage.put(type, amount); - vessel.totalTorpedoStorage += amount.intValue(); - } - } - - /** - * Parser for elements. - */ - private class TorpedoTubeParser implements Parser { - @Override - public void parse(Attributes attrs) { - VesselPoint point = new VesselPoint(); - parseVesselPoint(point, attrs); - vessel.torpedoTubes.add(point); - } - } - - /** - * Parser for elements. - */ - private class VesselParser implements Parser { - @Override - public void parse(Attributes attrs) { - Integer id = Integer.valueOf(attrs.getValue("uniqueID")); - vessel = new Vessel( - id.intValue(), - parseInt(attrs, "side"), - attrs.getValue("classname"), - attrs.getValue("broadType") - ); - vesselData.vessels.put(id, vessel); - } - } - - /** - * Parser for the main element. - */ - private class VesselDataParser implements Parser { - @Override - public void parse(Attributes attrs) { - vesselData = new VesselData(attrs.getValue("version")); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Taunt.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Taunt.java deleted file mode 100644 index 93aceb7..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Taunt.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.dhleong.acl.vesseldata; - -/** - * Faction-specific taunts. - * @author rjwut - */ -public class Taunt { - private String immunity; - private String text; - - Taunt(String immunity, String text) { - this.immunity = immunity; - this.text = text; - } - - /** - * The indicator in the captain's psychological profile that indicates that - * they are immune to this taunt. - */ - public String getImmunity() { - return immunity; - } - - /** - * The actual text of the taunt. - */ - public String getText() { - return text; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Vessel.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Vessel.java deleted file mode 100644 index bf0ca2e..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/Vessel.java +++ /dev/null @@ -1,309 +0,0 @@ -package net.dhleong.acl.vesseldata; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import net.dhleong.acl.enums.OrdnanceType; -import net.dhleong.acl.enums.VesselAttribute; - -/** - * Corresponds to the element in vesselData.xml. Note that this - * represents an entire class of ships, not an individual one. - * @author rjwut - */ -public class Vessel { - private int id; - private int side; - private String name; - String description; - private Set attributes; - String meshFile; - String diffuseFile; - String glowFile; - String specularFile; - VesselInternals internals; - float scale; - int pushRadius; - int foreShields; - int aftShields; - float turnRate; - float topSpeed; - float efficiency; - int fleetAiCommonality; - int fighterCount; - float productionCoeff; - List beamPorts = new ArrayList(); - List torpedoTubes = new ArrayList(); - Map torpedoStorage = new LinkedHashMap(); - int totalTorpedoStorage; - List dronePorts = new ArrayList(); - List baseTorpedoPorts = new ArrayList(); - List enginePorts = new ArrayList(); - List impulsePoints = new ArrayList(); - List maneuverPoints = new ArrayList(); - - Vessel(int uniqueID, int side, String className, String broadType) { - id = uniqueID; - this.side = side; - name = className; - attributes = VesselAttribute.build(broadType); - - for (OrdnanceType type : OrdnanceType.values()) { - torpedoStorage.put(type, Integer.valueOf(0)); - } - } - - /** - * Returns the Vessel's ID. - */ - public int getId() { - return id; - } - - /** - * Returns the Vessel's Faction ID. - */ - public int getSide() { - return side; - } - - /** - * Returns the Faction to which this Vessel belongs. - */ - public Faction getFaction() { - return VesselData.get().getFaction(side); - } - - /** - * Returns this Vessel's name. - */ - public String getName() { - return name; - } - - /** - * Returns a short description of this Vessel. - */ - public String getDescription() { - return description; - } - - /** - * Returns an array of this Vessel's VesselAttributes. - */ - public VesselAttribute[] getAttributes() { - return attributes.toArray(new VesselAttribute[attributes.size()]); - } - - /** - * Returns true if this Vessel has all the given VesselAttribute; false - * otherwise. - */ - public boolean is(VesselAttribute... attrs) { - for (VesselAttribute attr : attrs) { - if (!attributes.contains(attr)) { - return false; - } - } - - return true; - } - - /** - * Returns the 3D mesh filename. - */ - public String getMeshFile() { - return meshFile; - } - - /** - * Returns the diffuse image filename. - */ - public String getDiffuseFile() { - return diffuseFile; - } - - /** - * Returns the glow image filename. - */ - public String getGlowFile() { - return glowFile; - } - - /** - * Returns the specular image filename. - */ - public String getSpecularFile() { - return specularFile; - } - - /** - * Returns the VesselInternals object describing the system node structure - * for this Vessel, or null if there is none. (Only player ships will have - * a VesselInternals object.) - */ - public VesselInternals getInternals() { - return internals; - } - - /** - * Returns this Vessel's scale value. This presumably controls how large it - * is. - */ - public float getScale() { - return scale; - } - - /** - * Returns this Vessel's push radius. This presumably how close other - * objects can get before they are considered to have collided with this - * Vessel. - */ - public int getPushRadius() { - return pushRadius; - } - - /** - * Returns the initial strength of this Vessel's forward shields. - */ - public int getForeShields() { - return foreShields; - } - - /** - * Returns the initial strength of this Vessel's aft shields. - */ - public int getAftShields() { - return aftShields; - } - - /** - * Returns this Vessel's turn rate. - */ - public float getTurnRate() { - return turnRate; - } - - /** - * Returns this Vessel's top (impulse) speed. - */ - public float getTopSpeed() { - return topSpeed; - } - - /** - * Returns this Vessel's efficiency rating. - */ - public float getEfficiency() { - return efficiency; - } - - /** - * Returns this Vessel's fleet AI commonality value. It is unknown what - * exactly this value does. - */ - public int getFleetAiCommonality() { - return fleetAiCommonality; - } - - /** - * Returns the number of fighters this Vessel has. Only Vessels that were - * declared with the element will have fighters, and presumably - * only those with VesselAttribute.CARRIER. - */ - public int getFighterCount() { - return fighterCount; - } - - /** - * Returns the base production coefficient. This value affects how quickly - * the base produces new ordnance. - */ - public float getProductionCoeff() { - return productionCoeff; - } - - /** - * Returns an array of BeamPort objects describing the beams with which this - * Vessel is equipped. - */ - public BeamPort[] getBeamPorts() { - return beamPorts.toArray(new BeamPort[beamPorts.size()]); - } - - /** - * Returns an array of VesselPoint objects describing the locations of the - * Vessel's torpedo tubes. - */ - public VesselPoint[] getTorepedoTubes() { - return torpedoTubes.toArray(new BeamPort[torpedoTubes.size()]); - } - - /** - * Returns the number of units of the given OrdnanceType this Vessel can - * carry. - */ - public int getTorpedoStorage(OrdnanceType type) { - return torpedoStorage.get(type).intValue(); - } - - /** - * Returns true if this Vessel is capable of launching ordnance; false - * otherwise. To launch ordnance, a player Vessel must have at least one - * torpedo tube and storage space for at least one torpedo. Other Vessel - * types must have at least one drone port or base torpedo port. - */ - public boolean canLaunchOrdnance() { - if (is(VesselAttribute.PLAYER)) { - return !torpedoTubes.isEmpty() && totalTorpedoStorage > 0; - } - - return !dronePorts.isEmpty() || !baseTorpedoPorts.isEmpty(); - } - - /** - * Returns an array of WeaponPoint objects describing the locations of the - * Vessel's drone launchers. - */ - public WeaponPort[] getDronePorts() { - return dronePorts.toArray(new WeaponPort[dronePorts.size()]); - } - - /** - * Returns an array of WeaponPoint objects describing the locations of the - * Vessel's torpedo launchers. As of this writing, only the Command Station - * base has this port in the stock Artemis install; player vessels have - * torpedo tubes instead, and no other vessels launch torpedoes (although - * Torgoth drones are basically the same). - */ - public WeaponPort[] getBaseTorpedoPorts() { - return baseTorpedoPorts.toArray(new WeaponPort[baseTorpedoPorts.size()]); - } - - /** - * Returns an array of VesselPoint objects describing the locations of the - * Vessel's engine ports. - */ - public VesselPoint[] getEnginePorts() { - return enginePorts.toArray(new VesselPoint[enginePorts.size()]); - } - - /** - * Returns an array of VesselPoint objects describing the locations of the - * Vessel's impulse points. - */ - public VesselPoint[] getImpulsePoints() { - return impulsePoints.toArray(new VesselPoint[impulsePoints.size()]); - } - - /** - * Returns an array of VesselPoint objects describing the locations of the - * Vessel's maneuver points. - */ - public VesselPoint[] getManeuverPoints() { - return maneuverPoints.toArray(new VesselPoint[maneuverPoints.size()]); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselData.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselData.java deleted file mode 100644 index ccff389..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselData.java +++ /dev/null @@ -1,137 +0,0 @@ -package net.dhleong.acl.vesseldata; - -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -import org.xml.sax.SAXException; -import org.xml.sax.XMLReader; - -import net.dhleong.acl.util.Version; - -/** - * Contains all the information extracted from the vesselData.xml file. - * @author rjwut - */ -public class VesselData { - static PathResolver pathResolver; - private static VesselData instance; - - /** - * Loads the default vesselData.xml packaged with ArtClientLib. This is - * invoked when get() is called without calling load(File) first. - */ - private static void load() { - pathResolver = new ClasspathResolver(); - - try { - loadInternal(); - } catch (VesselDataException ex) { - throw new RuntimeException(ex); // shouldn't happen - } - } - - /** - * Loads the vesselData.xml file from the Artemis installation found at the - * given path. This allows ArtClientLib to handle modded Artemis installs. - * If get() is called without invoking this method, the default - * vesselData.xml file bundled with ArtClientLib is used instead. - */ - public static void load(File artemisInstallPath) throws VesselDataException { - pathResolver = new FilePathResolver(artemisInstallPath); - loadInternal(); - } - - /** - * Returns the VesselData instance. If load(File) has been invoked, the - * VesselData object will reflect whatever customizations have been made on - * that Artemis installation. Otherwise, it will contain the values for a - * stock Artemis install. - */ - public static VesselData get() { - if (instance == null) { - load(); - } - - return instance; - } - - /** - * Parses the vessel data XML file at the given URI and stores the result - * in the VesselData.instance static field. - */ - private static void loadInternal() throws VesselDataException { - try { - SAXParserFactory spf = SAXParserFactory.newInstance(); - SAXParser saxParser = spf.newSAXParser(); - XMLReader xmlReader = saxParser.getXMLReader(); - SAXVesselDataHandler handler = new SAXVesselDataHandler(); - xmlReader.setContentHandler(handler); - xmlReader.parse(pathResolver.get("dat/vesselData.xml").toString()); - instance = handler.vesselData; - } catch (URISyntaxException ex) { // shouldn't happen - throw new VesselDataException(ex); - } catch (SAXException ex) { - throw new VesselDataException(ex); - } catch (ParserConfigurationException ex) { - throw new VesselDataException(ex); - } catch (IOException ex) { - throw new VesselDataException(ex); - } - } - - Version version; - List factions = new ArrayList(); - Map vessels = new LinkedHashMap(); - - VesselData(String version) { - this.version = new Version(version); - } - - /** - * Returns the version of Artemis reported by vesselData.xml. Note that this - * does not neccessarily match the version reported by the protocol; the - * version in vesselData.xml is known to lag behind the actual version - * number. - */ - public Version getVersion() { - return version; - } - - /** - * Returns the Faction represented by the given ID. - */ - public Faction getFaction(int id) { - return factions.get(id); - } - - /** - * Returns the Vessel represented by the given ID. - */ - public Vessel getVessel(int id) { - return vessels.get(Integer.valueOf(id)); - } - - /** - * Iterates all the Factions in this object. - */ - public Iterator factionIterator() { - return factions.iterator(); - } - - /** - * Iterates all the Vessels in this object. - */ - public Iterator vesselIterator() { - return vessels.values().iterator(); - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselDataException.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselDataException.java deleted file mode 100644 index 2a84bc5..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselDataException.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.dhleong.acl.vesseldata; - -/** - * Thrown when ArtClientLib fails to parse the vesselData.xml file. - * @author rjwut - */ -public class VesselDataException extends Exception { - private static final long serialVersionUID = -495427263065919450L; - - public VesselDataException(Exception ex) { - super(ex); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselInternals.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselInternals.java deleted file mode 100644 index aa76d92..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselInternals.java +++ /dev/null @@ -1,113 +0,0 @@ -package net.dhleong.acl.vesseldata; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; - -import net.dhleong.acl.util.GridCoord; - -/** - * An object which describes the internal system grid of a Vessel. Note that while the .snt file - * contains an entry for every coordinate in the internal grid, this object will only contain - * VesselNodes for coordinates that correspond to a ship system or a hallway. - * @author rjwut - */ -public class VesselInternals { - public static final int GRID_SIZE_X = 5; - public static final int GRID_SIZE_Y = 5; - public static final int GRID_SIZE_Z = 10; - - private Map map = new LinkedHashMap(); - private Set connections = new HashSet(); - private byte[] buffer = new byte[VesselNode.BLOCK_SIZE]; - - public VesselInternals(String sntPath) { - URI uri; - - try { - uri = VesselData.pathResolver.get(sntPath); - } catch (URISyntaxException ex) { - throw new RuntimeException(ex); - } - - InputStream in = null; - - try { - in = uri.toURL().openStream(); - load(new BufferedInputStream(in)); - } catch (MalformedURLException ex) { - throw new RuntimeException(ex); - } catch (IOException ex) { - throw new RuntimeException(ex); - } catch (InterruptedException ex) { - throw new RuntimeException(ex); - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException ex) { - // don't care - } - } - } - } - - /** - * Builds a VesselInternals object from the .snt file read from the given InputStream. - */ - private void load(InputStream in) throws InterruptedException, IOException { - for (int x = 0; x < GRID_SIZE_X; x++) { - for (int y = 0; y < GRID_SIZE_Y; y++) { - for (int z = 0; z < GRID_SIZE_Z; z++) { - GridCoord coords = GridCoord.getInstance(x, y, z); - VesselNode node = new VesselNode(in, coords, buffer); - - if (node.isAccessible()) { - map.put(coords, node); - buildAdjacency(node, x - 1, y, z); - buildAdjacency(node, x, y - 1, z); - buildAdjacency(node, x, y, z - 1); - } - } - } - } - } - - private void buildAdjacency(VesselNode node, int x, int y, int z) { - VesselNode adjacentNode = map.get(GridCoord.getInstance(x, y, z)); - - if (adjacentNode != null) { - connections.add(new VesselNodeConnection(adjacentNode, node)); - } - } - - /** - * Returns the VesselNode located at the given internal grid coordinates, or null if there is - * no VesselNode at that location. - */ - public VesselNode get(int x, int y, int z) { - return map.get(GridCoord.getInstance(x, y, z)); - } - - /** - * Iterates all VesselNodes. - */ - public Iterator nodeIterator() { - return map.values().iterator(); - } - - /** - * Iterates all VesselNodeConnections. - */ - public Iterator connectionIterator() { - return connections.iterator(); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselNode.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselNode.java deleted file mode 100644 index 33c0db1..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselNode.java +++ /dev/null @@ -1,102 +0,0 @@ -package net.dhleong.acl.vesseldata; - -import java.io.IOException; -import java.io.InputStream; - -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.util.ByteArrayReader; -import net.dhleong.acl.util.GridCoord; - -public class VesselNode { - static final int BLOCK_SIZE = 32; - private static final int EMPTY_NODE_VALUE = -2; - private static final int HALLWAY_NODE_VALUE = -1; - - private GridCoord coords; - private float x; - private float y; - private float z; - private boolean accessible; - private ShipSystem system; - - VesselNode (InputStream in, GridCoord coords, byte[] buffer) throws InterruptedException, IOException { - ByteArrayReader.readBytes(in, BLOCK_SIZE, buffer); - ByteArrayReader reader = new ByteArrayReader(buffer); - this.coords = coords; - x = reader.readFloat(); - y = reader.readFloat(); - z = reader.readFloat(); - int typeValue = reader.readInt(); - accessible = typeValue != EMPTY_NODE_VALUE; - - if (accessible && typeValue != HALLWAY_NODE_VALUE) { - system = ShipSystem.values()[typeValue]; - } - } - - /** - * Returns the GridCoord for this node's location in the system grid. - */ - public GridCoord getGridCoord() { - return coords; - } - - /** - * Returns the X-coordinate of this node relative to the origin of the ship's model coordinates. - */ - public float getX() { - return x; - } - - /** - * Returns the Y-coordinate of this node relative to the origin of the ship's model coordinates. - */ - public float getY() { - return y; - } - - /** - * Returns the Z-coordinate of this node relative to the origin of the ship's model coordinates. - */ - public float getZ() { - return z; - } - - /** - * Returns true if it's possible for DAMCON teams to access this node; false otherwise. - */ - public boolean isAccessible() { - return accessible; - } - - /** - * Returns the ShipSystem found here, or null if there is none. - */ - public ShipSystem getSystem() { - return system; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (!(obj instanceof VesselNode)) { - return false; - } - - VesselNode that = (VesselNode) obj; - return coords.equals(that.coords); - } - - @Override - public int hashCode() { - return coords.hashCode(); - } - - @Override - public String toString() { - return coords.toString() + '=' + (accessible ? (system != null ? system : "hallway") : "empty"); - } -} diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselNodeConnection.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselNodeConnection.java deleted file mode 100644 index 0a104d3..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselNodeConnection.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.dhleong.acl.vesseldata; - -/** - * Represents a connection between two VesselNodes. - * @author rjwut - */ -public class VesselNodeConnection { - private VesselNode node1; - private VesselNode node2; - - VesselNodeConnection(VesselNode node1, VesselNode node2) { - this.node1 = node1; - this.node2 = node2; - } - - public VesselNode getNode1() { - return node1; - } - - public VesselNode getNode2() { - return node2; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (!(obj instanceof VesselNodeConnection)) { - return false; - } - - VesselNodeConnection that = (VesselNodeConnection) obj; - return node1.equals(that.node1) && node2.equals(that.node2); - } - - @Override - public int hashCode() { - int hash1 = node1.hashCode(); - int hash2 = node2.hashCode(); - return 31 * (hash1 ^ (hash1 >>> 32)) + (hash2 ^ (hash2 >>> 32)); - } - - @Override - public String toString() { - return node1 + " <=> " + node2; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselPoint.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselPoint.java deleted file mode 100644 index 5c5f07f..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/VesselPoint.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.dhleong.acl.vesseldata; - -/** - * A location on a Vessel's 3D mesh. - * @author rjwut - */ -public class VesselPoint { - float x; - float y; - float z; - - /** - * Returns the point's X coordinate. - */ - public float getX() { - return x; - } - - /** - * Returns the point's Y coordinate. - */ - public float getY() { - return y; - } - - /** - * Returns the point's Z coordinate. - */ - public float getZ() { - return z; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/WeaponPort.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/WeaponPort.java deleted file mode 100644 index 38263c7..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/vesseldata/WeaponPort.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.dhleong.acl.vesseldata; - -/** - * A subclass of VesselPoint for weapon ports. In addition to their location on - * the Vessel's 3D mesh, WeaponPorts also have damage, cycle time and range - * values. Beam ports (subclassed as BeamPort), Torgoth drone launchers and - * base torpedo ports are WeaponPorts. Player ship torpedo tubes, while - * technically being weapon ports, are simply VesselPoints, since they don't - * have damage, cycle time and range properties; those properties are dictated - * by the ordnance loaded in them. - * @author rjwut - */ -public class WeaponPort extends VesselPoint { - float damage; - float cycleTime; - int range; - - /** - * The amount of damage that this weapon port can inflict. - */ - public float getDamage() { - return damage; - } - - /** - * The time (in seconds) this port requires to cool down between shots. - */ - public float getCycleTime() { - return cycleTime; - } - - public int getRange() { - return range; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/Artemis.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/Artemis.java deleted file mode 100644 index c313276..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/Artemis.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.dhleong.acl.world; - -import net.dhleong.acl.enums.ShipSystem; - -/** - * Contains miscellaneous constants about the game world. - * @author rjwut - */ -public final class Artemis { - /** - * The default amount of coolant the player ship has at start. The amount of - * coolant may change due to side mission rewards or custom scripting. - */ - public static final int DEFAULT_COOLANT = 8; - - /** - * The maximum amount of coolant that can be applied to any one system. - */ - public static final int MAX_COOLANT_PER_SYSTEM = 8; - - /** - * The maximum energy allocation for a system, in percentage points. - */ - public static final int MAX_ENERGY_ALLOCATION_PERCENT = 300; - - /** - * The maximum number of tubes a ship can have. Note that none of the ships - * in the stock install of Artemis have this many tubes, but a custom ship - * might. - */ - public static final int MAX_TUBES = 6; - - /** - * The maximum warp factor player ships can achieve. - */ - public static final int MAX_WARP = 4; - - /** - * The number of available player ships. - */ - public static final int SHIP_COUNT = 8; - - /** - * The number of ship systems. - */ - public static final int SYSTEM_COUNT = ShipSystem.values().length; - - /** - * The length of the sides of the map (the X and Z dimensions). - */ - public static final int MAP_SIZE = 100000; - - private Artemis() { - // prevent instantiation of this class - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisAnomaly.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisAnomaly.java deleted file mode 100644 index 72e0356..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisAnomaly.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.SortedMap; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.enums.Upgrade; - -public class ArtemisAnomaly extends BaseArtemisObject { - private Upgrade mUpgrade; - - public ArtemisAnomaly(int objId) { - super(objId); - } - - @Override - public ObjectType getType() { - return ObjectType.ANOMALY; - } - - public Upgrade getUpgrade() { - return mUpgrade; - } - - public void setUpgrade(Upgrade upgrade) { - mUpgrade = upgrade; - } - - @Override - public void updateFrom(ArtemisObject obj) { - super.updateFrom(obj); - - if (obj instanceof ArtemisAnomaly) { - ArtemisAnomaly anomaly = (ArtemisAnomaly) obj; - - if (anomaly.mUpgrade != null) { - mUpgrade = anomaly.mUpgrade; - } - } - } - - @Override - public void appendObjectProps(SortedMap props, boolean includeUnspecified) { - super.appendObjectProps(props, includeUnspecified); - putProp(props, "Upgrade", mUpgrade, includeUnspecified); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisBase.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisBase.java deleted file mode 100644 index ef5dab4..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisBase.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.SortedMap; - -import net.dhleong.acl.enums.ObjectType; - -/** - * Bases - */ -public class ArtemisBase extends BaseArtemisShielded { - private int mIndex = -1; - - public ArtemisBase(int objId) { - super(objId); - } - - @Override - public ObjectType getType() { - return ObjectType.BASE; - } - - /** - * This base's index value. In non-scripted scenarios, DS1's index is 0, - * DS2's index is 1, etc. This value is unique even if the names aren't. - * Unspecified: -1 - */ - public int getIndex() { - return mIndex; - } - - public void setIndex(int index) { - mIndex = index; - } - - @Override - public void updateFrom(ArtemisObject eng) { - super.updateFrom(eng); - - if (eng instanceof ArtemisBase) { - ArtemisBase base = (ArtemisBase) eng; - - if (base.mIndex != -1) { - mIndex = base.mIndex; - } - } - } - - @Override - public void appendObjectProps(SortedMap props, boolean includeUnspecified) { - super.appendObjectProps(props, includeUnspecified); - putProp(props, "Base index", mIndex, -1, includeUnspecified); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisCreature.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisCreature.java deleted file mode 100644 index 6518aab..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisCreature.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.SortedMap; - -import net.dhleong.acl.enums.CreatureType; -import net.dhleong.acl.enums.ObjectType; - -/** - * Various spacefaring creatures (and... wrecks?) - */ -public class ArtemisCreature extends BaseArtemisOrientable { - private CreatureType mCreatureType; - - public ArtemisCreature(int objId) { - super(objId); - } - - @Override - public ObjectType getType() { - return ObjectType.CREATURE; - } - - @Override - public void updateFrom(ArtemisObject obj) { - super.updateFrom(obj); - - if (obj instanceof ArtemisCreature) { - ArtemisCreature cast = (ArtemisCreature) obj; - - CreatureType creatureType = cast.getCreatureType(); - - if (creatureType != null) { - setCreatureType(creatureType); - } - } - } - - public CreatureType getCreatureType() { - return mCreatureType; - } - - public void setCreatureType(CreatureType creatureType) { - mCreatureType = creatureType; - } - - @Override - public void appendObjectProps(SortedMap props, boolean includeUnspecified) { - super.appendObjectProps(props, includeUnspecified); - putProp(props, "Creature type", mCreatureType, includeUnspecified); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisDrone.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisDrone.java deleted file mode 100644 index 60423b9..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisDrone.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.SortedMap; - -import net.dhleong.acl.enums.ObjectType; - -public class ArtemisDrone extends BaseArtemisOrientable { - private float mSteering = -1; - - public ArtemisDrone(int objId) { - super(objId); - } - - @Override - public ObjectType getType() { - return ObjectType.DRONE; - } - - public float getSteering() { - return mSteering; - } - - public void setSteering(float steering) { - this.mSteering = steering; - } - - @Override - public void updateFrom(ArtemisObject other) { - super.updateFrom(other); - - if (other instanceof ArtemisDrone) { - ArtemisDrone drone = (ArtemisDrone) other; - - if (drone.mSteering != -1) { - mSteering = drone.mSteering; - } - } - } - - @Override - public void appendObjectProps(SortedMap props, boolean includeUnspecified) { - super.appendObjectProps(props, includeUnspecified); - putProp(props, "Rudder", mSteering, -1, includeUnspecified); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisGenericObject.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisGenericObject.java deleted file mode 100644 index 4e77934..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisGenericObject.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.dhleong.acl.world; - -import net.dhleong.acl.enums.ObjectType; - -/** - * There are many "generic" objects which are very similar in implementation. - * They are all handled by this class. Specifically, the objects implemented by - * this class are: mines, torpedoes, black holes and asteroids. - * @author dhleong - */ -public class ArtemisGenericObject extends BaseArtemisObject { - private ObjectType mType; - - public ArtemisGenericObject(int objId) { - super(objId); - } - - @Override - public ObjectType getType() { - return mType; - } - - public void setType(ObjectType type) { - if (type == null || !type.isCompatible(this)) { - throw new IllegalArgumentException( - "Invalid object type for " + getClass().getName() + ": " + - type - ); - } - - mType = type; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisMesh.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisMesh.java deleted file mode 100644 index 5870051..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisMesh.java +++ /dev/null @@ -1,159 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.SortedMap; - -import net.dhleong.acl.enums.ObjectType; - -/** - * This is a custom-rendered mesh in the game world. These are typically - * inserted by scripts for non-interactive objects. - * @author dhleong - */ -public class ArtemisMesh extends BaseArtemisObject { - private String mMesh; - private String mTex; - private boolean hasColor; - private int mColor; - private float mShieldsFront = Float.MIN_VALUE; - private float mShieldsRear = Float.MIN_VALUE; - - public ArtemisMesh(int objId) { - super(objId); - } - - @Override - public ObjectType getType() { - return ObjectType.GENERIC_MESH; - } - - /** - * The 3D mesh filename - * Unspecified: null - */ - public String getMesh() { - return mMesh; - } - - public void setMesh(String path) { - mMesh = path; - } - - /** - * The texture filename - * Unspecified: null - */ - public String getTexture() { - return mTex; - } - - public void setTexture(String path) { - mTex = path; - } - - public boolean hasColor() { - return hasColor; - } - - /** - * The color that will be used to render this object on sensor views. This - * is specified as an ARGB int value. To specify each channel separately, - * use the setARGB() method. - * Unspecified: 0 - */ - public int getColor() { - return mColor; - } - - public int getAlpha() { - return (mColor >>> 24) & 0xff; - } - - public int getRed() { - return (mColor >>> 16) & 0xff; - } - - public int getGreen() { - return (mColor >>> 8) & 0xff; - } - - public int getBlue() { - return mColor & 0xff; - } - - /** - * Sets the color that will be used to render this object on sensor views, - * specifying each channel as a value between 0 and 255. - */ - public void setARGB(int a, int r, int g, int b) { - mColor = 0; - mColor |= ((a & 0xff) << 24); - mColor |= ((r & 0xff) << 16); - mColor |= ((g & 0xff) << 8); - mColor |= (b & 0xff); - hasColor = true; - } - - /** - * Sets the color that will be used to render this object on sensor views, - * specifying each channel as a value between 0 and 1. - */ - public void setARGB(float a, float r, float g, float b) { - setARGB( - (int)(255 * a), - (int)(255 * r), - (int)(255 * g), - (int)(255 * b) - ); - } - - /** - * Returns the strength of the mesh's forward shields. These are supposedly - * "fake" shields, since meshes can't actually be targeted. - * Unspecified: Float.MIN_VALUE - */ - public float getShieldsFront() { - return mShieldsFront; - } - - /** - * Returns the strength of the mesh's aft shields. These are supposedly - * "fake" shields, since meshes can't actually be targeted. - * Unspecified: Float.MIN_VALUE - */ - public float getShieldsRear() { - return mShieldsRear; - } - - /** - * Sets the strength of the front and aft shields. These are supposedly - * "fake" shields, since meshes can't actually be targeted. - */ - public void setFakeShields(float shieldsFront, float shieldsRear) { - mShieldsFront = shieldsFront; - mShieldsRear = shieldsRear; - } - - @Override - public void updateFrom(ArtemisObject other) { - super.updateFrom(other); - - ArtemisMesh m = (ArtemisMesh) other; - if (m.mShieldsFront != Float.MIN_VALUE) { - mShieldsFront = m.mShieldsFront; - } - - if (m.mShieldsRear != Float.MIN_VALUE) { - mShieldsRear = m.mShieldsRear; - } - } - - @Override - public void appendObjectProps(SortedMap props, boolean includeUnspecified) { - super.appendObjectProps(props, includeUnspecified); - putProp(props, "Mesh", mMesh, includeUnspecified); - putProp(props, "Texture", mTex, includeUnspecified); - putProp(props, "Color", mColor, 0, includeUnspecified); - putProp(props, "Shields: fore", mShieldsFront, Float.MIN_VALUE, includeUnspecified); - putProp(props, "Shields: aft", mShieldsRear, Float.MIN_VALUE, includeUnspecified); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisNebula.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisNebula.java deleted file mode 100644 index 3ad4f42..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisNebula.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.dhleong.acl.world; - -import net.dhleong.acl.enums.ObjectType; - -public class ArtemisNebula extends BaseArtemisObject { - private boolean hasColor; - private byte a; - private byte r; - private byte g; - private byte b; - - public ArtemisNebula(int objId) { - super(objId); - setName("NEBULA"); - } - - @Override - public ObjectType getType() { - return ObjectType.NEBULA; - } - - public boolean hasColor() { - return hasColor; - } - - /** - * The color of the nebula. This is specified as an ARGB int value. To - * specify each channel separately, use the setARGB() method. - * Unspecified: 0 - */ - public int getColor() { - return a << 24 | r << 16 | g << 8 | b; - } - - public byte getAlpha() { - return a; - } - - public byte getRed() { - return r; - } - - public byte getGreen() { - return g; - } - - public byte getBlue() { - return b; - } - - /** - * Sets the color of the nebula, specifying each channel as a value between - * 0 and 255. - */ - public void setARGB(byte a, byte r, byte g, byte b) { - this.a = a; - this.r = r; - this.g = g; - this.b = b; - hasColor = true; - } - - /** - * Sets the color that will be used to render this object on sensor views, - * specifying each channel as a value between 0 and 1. - */ - public void setARGB(float a, float r, float g, float b) { - setARGB( - (byte) (255 * a), - (byte) (255 * r), - (byte) (255 * g), - (byte) (255 * b) - ); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisNpc.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisNpc.java deleted file mode 100644 index 7cb16b7..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisNpc.java +++ /dev/null @@ -1,265 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.Set; -import java.util.SortedMap; - -import net.dhleong.acl.enums.EliteAbility; -import net.dhleong.acl.enums.FactionAttribute; -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.util.BoolState; -import net.dhleong.acl.util.Util; -import net.dhleong.acl.vesseldata.Faction; -import net.dhleong.acl.vesseldata.Vessel; - -/** - * An NPC ship; they may have special abilities, and can be scanned. - * @author dhleong - */ -public class ArtemisNpc extends BaseArtemisShip { - // scan levels... only 2 for now - public static final byte SCAN_LEVEL_BASIC = 1; - public static final byte SCAN_LEVEL_FULL = 2; - - private byte mScanLevel = -1; - private int mElite = -1, mEliteState = -1; - private BoolState mEnemy = BoolState.UNKNOWN; - private BoolState mSurrendered = BoolState.UNKNOWN; - private byte mFleetNumber = (byte) -1; - private String mIntel; - private final float[] mSysDamage = new float[8]; - - public ArtemisNpc(int objId) { - super(objId); - - for (int i = 0; i < 8; i++) { - mSysDamage[i] = -1; - } - } - - @Override - public ObjectType getType() { - return ObjectType.NPC_SHIP; - } - - /** - * Returns BoolState.TRUE if this ship is an enemy, BoolState.FALSE if it's - * friendly. Note that this only works in Solo mode. - * Unspecified: BoolState.UNKNOWN - */ - public BoolState isEnemy() { - return mEnemy; - } - - public void setEnemy(BoolState enemy) { - mEnemy = enemy; - } - - /** - * Returns BoolState.TRUE if this ship has surrendered, and BoolState.FALSE - * if it hasn't. - * Unspecified: BoolState.UNKNOWN - */ - public BoolState isSurrendered() { - return mSurrendered; - } - - public void setSurrendered(BoolState surrendered) { - mSurrendered = surrendered; - } - - /** - * Returns the ship's fleet number. - * Unspecified: -1 - */ - public byte getFleetNumber() { - return mFleetNumber; - } - - public void setFleetNumber(byte fleetNumber) { - mFleetNumber = fleetNumber; - } - - /** - * Returns a Set containing the EliteAbility values that pertain to this - * ship. - * Unspecified: null - */ - public Set getEliteAbilities() { - return mElite != -1 ? EliteAbility.fromValue(mElite) : null; - } - - /** - * Returns true if this ship has the specified elite ability and false if it - * does not or if it is unknown whether it has it. - */ - public boolean hasEliteAbility(EliteAbility ability) { - return mElite != -1 && ability.on(mElite); - } - - /** - * Returns true if this ship is using the specified elite ability and false - * if it is not. - */ - public boolean isUsingEliteAbilty(EliteAbility ability) { - return mEliteState != -1 && ability.on(mEliteState); - } - - public int getEliteBits() { - return mElite; - } - - /** - * Sets the elite ability bit field. - * Unspecified: -1 - */ - public void setEliteBits(int elite) { - mElite = elite; - } - - public int getEliteStateBits() { - return mEliteState; - } - - /** - * Sets the elite state bit field (what abilities are being used). - * Unspecified: -1 - */ - public void setEliteStateBits(int elite) { - mEliteState = elite; - } - - /** - * The scan level for this ship. - * Unspecified: -1 - */ - public byte getScanLevel() { - return mScanLevel; - } - - public void setScanLevel(byte scanLevel) { - mScanLevel = scanLevel; - } - - /** - * Returns true if this ship has been scanned at the given level or higher; - * false otherwise. - */ - public boolean isScanned(byte scanLevel) { - return mScanLevel >= scanLevel; - } - - /** - * The intel String for this ship. - * Unspecified: null - */ - public String getIntel() { - return mIntel; - } - - public void setIntel(String intel) { - mIntel = intel; - } - - /** - * The percentage of damage sustained by a particular system, expressed as - * a value between 0 and 1. - * Unspecified: -1 - */ - public float getSystemDamage(ShipSystem sys) { - return mSysDamage[sys.ordinal()]; - } - - public void setSystemDamage(ShipSystem sys, float value) { - mSysDamage[sys.ordinal()] = value; - } - - @Override - public void updateFrom(ArtemisObject eng) { - super.updateFrom(eng); - - // it SHOULD be an ArtemisNpc - if (eng instanceof ArtemisNpc) { - ArtemisNpc cast = (ArtemisNpc) eng; - BoolState enemy = cast.isEnemy(); - - if (BoolState.isKnown(enemy)) { - mEnemy = enemy; - } - - BoolState surrendered = cast.isSurrendered(); - - if (BoolState.isKnown(surrendered)) { - mSurrendered = surrendered; - } - - if (cast.mFleetNumber != (byte) -1) { - setFleetNumber(cast.mFleetNumber); - } - - if (cast.mScanLevel != -1) { - setScanLevel(cast.mScanLevel); - } - - boolean elite = false; - Vessel vessel = getVessel(); - - if (vessel != null) { - Faction faction = vessel.getFaction(); - elite = faction.is(FactionAttribute.ELITE); - } - - if (cast.mElite != -1) { - setEliteBits(elite ? cast.mElite : 0); - } - - if (cast.mEliteState != -1) { - setEliteStateBits(elite ? cast.mEliteState : 0); - } - - if (cast.mIntel != null) { - setIntel(cast.mIntel); - } - - for (int i = 0; i < mSysDamage.length; i++) { - float value = cast.mSysDamage[i]; - - if (value != -1) { - mSysDamage[i] = value; - } - } - } - } - - @Override - public void appendObjectProps(SortedMap props, - boolean includeUnspecified) { - super.appendObjectProps(props, includeUnspecified); - putProp(props, "Scan level", mScanLevel, -1, includeUnspecified); - - if (mElite != -1) { - String str = Util.enumSetToString(EliteAbility.fromValue(mElite)); - props.put("Specials", str != "" ? str : "NONE"); - } else if (includeUnspecified) { - props.put("Specials", "UNKNOWN"); - } - - if (mEliteState != -1) { - String str = Util.enumSetToString(EliteAbility.fromValue(mEliteState)); - props.put("Specials active", str != "" ? str : "NONE"); - } else if (includeUnspecified) { - props.put("Specials active", "UNKNOWN"); - } - - putProp(props, "Is enemy", mEnemy, includeUnspecified); - putProp(props, "Surrendered", mSurrendered, includeUnspecified); - putProp(props, "Fleet number", mFleetNumber, -1, includeUnspecified); - putProp(props, "Intel", mIntel, includeUnspecified); - ShipSystem[] systems = ShipSystem.values(); - - for (int i = 0; i < mSysDamage.length; i++) { - putProp(props, "Damage: " + systems[i], mSysDamage[i], - -1, includeUnspecified); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisObject.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisObject.java deleted file mode 100644 index 3d12724..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisObject.java +++ /dev/null @@ -1,125 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.SortedMap; - -import net.dhleong.acl.enums.ObjectType; - -/** - * This interface represents information about an object in the game world. It - * may contain all the information known about that object, or just updates. - * Every object has the following properties: - * - * - an ID - * - a type - * - a position (x, y, z) - * - * Many objects also have a name, but not all of them do, and the name is not - * guaranteed to be unique. However, any one update is only guaranteed to - * specify the ID. - * - * - * Unspecified properties vs. unknown properties - * - * A property is unspecified if no value has been given for it. Since object - * update packets typically contain values for properties which have changed, - * other properties will be unspecified. To avoid instantiating a lot of - * objects, special values are used to indicate whether a primitive property is - * unspecified. The documentation for each property's accessor method will tell - * you what that value is. The "unspecified" value depends on the property's - * type and what its permissible values are: - * - * BoolState: BoolState.UNKNOWN - * Other Objects: null - * Numeric primitives: -1, or the type's MIN_VALUE if -1 is a permissible value - * for that property - * - * An unknown property is one whose purpose is currently unknown. It may have a - * specified value, but we don't know what that value means. ArtClientLib is - * capable of tracking unknown property values, but this capability is really - * only useful for people who are trying to determine what these properties - * mean. - * - * - * Updating objects - * - * Most packets which update object information produce objects which implement - * this interface. These objects will contain only the property values that were - * updated by that packet; all other values will be unspecified. You can use the - * updateFrom() method to transfer all specified properties from one object to - * another; this allows you to keep around a single instance that always has the - * latest known state for that world object. - * - * - * Object positions - * - * A sector is a three-dimentional rectangular prism. From the perspective of a - * ship with a heading of 0 degress, the X axis runs from port to starboard, the - * Y axis runs up and down, and the Z axis runs bow to stern. The boundaries of - * the sector are (0, 500, 0) [top northeast corner] to (100000, -500, 100000) - * [bottom southwest corner]. However, some objects, such as asteroids and - * nebulae, may lie outside these bounds. - * - * @author dhleong - */ -public interface ArtemisObject { - /** - * The object's unique identifier. This property should always be specified. - */ - public int getId(); - - /** - * The object's type. - * Unspecified: null - */ - public ObjectType getType(); - - /** - * The object's name. - * Unspecified: null - */ - public String getName(); - - /** - * The object's position along the X-axis. - * Unspecified: Float.MIN_VALUE - */ - public abstract float getX(); - public abstract void setX(float x); - - /** - * The object's position along the Y-axis - * Unspecified: Float.MIN_VALUE - */ - public abstract float getY(); - public abstract void setY(float y); - - /** - * The object's position along the Z-axis - * Unspecified: Float.MIN_VALUE - */ - public abstract float getZ(); - public abstract void setZ(float z); - - /** - * Returns a SortedMap containing the values for properties whose purpose is - * currently unknown. This is useful for debugging. - */ - public SortedMap getUnknownProps(); - public void setUnknownProps(SortedMap unknownProps); - - /** - * Updates this object's properties to match any updates provided by the - * given object. If any property of the given object is unspecified, this - * object's corresponding property will not be updated. - */ - public void updateFrom(ArtemisObject other); - - /** - * Returns a SortedMap containing this object's properties. If - * includeUnspecified is true, all properties will be included in the map, - * even if they're unspecified. Otherwise, only specified properties will be - * included. Note that unknown properties that have not been specified will - * never be included, even if includeUnspecified is true. - */ - public SortedMap getProps(boolean includeUnspecified); -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisOrientable.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisOrientable.java deleted file mode 100644 index a5f51f9..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisOrientable.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.dhleong.acl.world; - -/** - * An interface for objects which have an orientation: heading, pitch and roll. - * Technically, all objects have these properties, but only objects which - * implement this interface have them exposed in the Artemis protocol. - * @author rjwut - */ -public interface ArtemisOrientable { - /** - * The direction the object is facing on the X-Z plane. This is expressed as - * a value from negative pi to pi. A value of pi corresponds to a heading of - * 0 degrees. The ship turns to port as the value decreases. A value of 0 - * corresponds to a heading of 180 degrees. - * Unspecified: Float.MIN_VALUE - */ - public abstract float getHeading(); - public abstract void setHeading(float heading); - - /** - * The angle between the X-Z plane and the front of the object, in degrees. - * A positive value means the object is pointed "down", while a negative - * value means the object is pointed "up". - * Unspecified: Float.MIN_VALUE - */ - public abstract float getPitch(); - public abstract void setPitch(float pitch); - - /** - * The angle that the object has rolled towards the port (positive) or - * starboard (negative) side, in degrees. - * Unspecified: Float.MIN_VALUE - */ - public abstract float getRoll(); - public abstract void setRoll(float roll); - -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisPlayer.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisPlayer.java deleted file mode 100644 index 74ffd95..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisPlayer.java +++ /dev/null @@ -1,637 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.Arrays; -import java.util.SortedMap; - -import net.dhleong.acl.enums.AlertStatus; -import net.dhleong.acl.enums.BeamFrequency; -import net.dhleong.acl.enums.DriveType; -import net.dhleong.acl.enums.MainScreenView; -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.enums.OrdnanceType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.enums.TargetingMode; -import net.dhleong.acl.enums.TubeState; -import net.dhleong.acl.enums.Upgrade; -import net.dhleong.acl.util.BoolState; - -/** - * A player ship. - * @author dhleong - */ -public class ArtemisPlayer extends BaseArtemisShip { - private TargetingMode mTargetingMode; - private AlertStatus mAlertStatus; - private BoolState mShields; - private int mShipNumber = -1; - private final float[] mHeat = new float[Artemis.SYSTEM_COUNT]; - private final float[] mSystems = new float[Artemis.SYSTEM_COUNT]; - private final int[] mCoolant = new int[Artemis.SYSTEM_COUNT]; - private final int[] mTorpedos = new int[OrdnanceType.COUNT]; - private final float[] mTubeTimes = new float[Artemis.MAX_TUBES]; - private final TubeState[] mTubeState = new TubeState[Artemis.MAX_TUBES]; - private final byte[] mTubeContents = new byte[Artemis.MAX_TUBES]; - private float mEnergy = -1; - private int mDockingBase = -1; - private MainScreenView mMainScreen; - private int mAvailableCoolant = -1; - private int mWeaponsTarget = -1; - private byte mWarp = -1; - private BeamFrequency mBeamFreq; - private DriveType mDriveType; - private BoolState mReverse; - private int mScienceTarget = -1; - private float mScanProgress = -1; - private int mCaptainTarget = -1; - private int mScanningId = -1; - private final byte[] mUpgrades = new byte[Upgrade.STORABLE_UPGRADE_COUNT]; - - public ArtemisPlayer(int objId) { - super(objId); - - // pre-fill - Arrays.fill(mHeat, -1); - Arrays.fill(mSystems, -1); - Arrays.fill(mCoolant, -1); - Arrays.fill(mTorpedos, -1); - Arrays.fill(mTubeTimes, -1); - Arrays.fill(mTubeContents, (byte) -1); - Arrays.fill(mUpgrades, (byte) -1); - } - - @Override - public ObjectType getType() { - return ObjectType.PLAYER_SHIP; - } - - /** - * The ship's energy reserves. - * Unspecified: -1 - */ - public float getEnergy() { - return mEnergy; - } - - public void setEnergy(float energy) { - mEnergy = energy; - } - - /** - * Get this ship's player ship index. This is NOT the displayed number, but - * the INDEX (used in SystemManager#getPlayerShip). - * Unspecified: -1 - * @return int in [0,Artemis.SHIP_COUNT), or -1 if undefined - */ - public int getShipIndex() { - return mShipNumber == -1 ? -1 : mShipNumber - 1; - } - - public void setShipIndex(int shipIndex) { - mShipNumber = shipIndex + 1; - } - - /** - * The amount of coolant allocated to the given system. - * Unspecified: -1 - */ - public int getSystemCoolant(ShipSystem sys) { - return mCoolant[sys.ordinal()]; - } - - public void setSystemCoolant(ShipSystem sys, int coolant) { - mCoolant[sys.ordinal()] = coolant; - } - - /** - * The energy allocation level for a system, as a value between 0 (no energy - * allocated) and 1 (maximum energy allocated). - * Unspecified: -1 - */ - public float getSystemEnergy(ShipSystem sys) { - return mSystems[sys.ordinal()]; - } - - public void setSystemEnergy(ShipSystem sys, float energy) { - if (energy > 1f) { - throw new IllegalArgumentException("Illegal energy value: " + energy); - } - mSystems[sys.ordinal()] = energy; - } - - /** - * Convenience, set energy as an int percentage [0, 300] - */ - public void setSystemEnergy(ShipSystem sys, int energyPercentage) { - setSystemEnergy(sys, energyPercentage / (float) Artemis.MAX_ENERGY_ALLOCATION_PERCENT); - } - - /** - * The heat level for a system. - * Unspecified: -1 - */ - public float getSystemHeat(ShipSystem sys) { - return mHeat[sys.ordinal()]; - } - - public void setSystemHeat(ShipSystem sys, float heat) { - mHeat[sys.ordinal()] = heat; - } - - /** - * Whether the shields are up or not. - */ - public BoolState getShieldsState() { - return mShields; - } - - public void setShields(boolean newState) { - mShields = BoolState.from(newState); - } - - /** - * Current alert status. - */ - public AlertStatus getAlertStatus() { - return mAlertStatus; - } - - public void setAlertStatus(AlertStatus alertStatus) { - mAlertStatus = alertStatus; - } - - /** - * Get the ID of the base at which we're docking. Note that this property is - * only updated in a packet when the docking process commences; undocking - * does not update this property. However, if an existing ArtemisPlayer - * object is docked, is updated by another one, and the update has the ship - * engaging impulse or warp drive, this property will be set to 0 to - * indicate that the ship has undocked. - * Unspecified: -1 - */ - public int getDockingBase() { - return mDockingBase; - } - - public void setDockingBase(int baseId) { - mDockingBase = baseId; - } - - /** - * The number of torpedoes of the given type in the ship's stores. - * Unspecified: -1 - */ - public int getTorpedoCount(OrdnanceType type) { - return mTorpedos[type.ordinal()]; - } - - public void setTorpedoCount(int torpType, int count) { - mTorpedos[torpType] = count; - } - - /** - * Whether or not the ship's impulse drive is in reverse. - */ - public BoolState getReverseState() { - return mReverse; - } - - public void setReverse(BoolState reverse) { - mReverse = reverse; - } - - /** - * The loading state of the given tube. - * Unspecified: null - */ - public TubeState getTubeState(int tube) { - return mTubeState[tube]; - } - - public void setTubeState(int tube, TubeState state) { - mTubeState[tube] = state; - } - - /** - * Returns a value indicating the contents of the tube. If the tube's state - * is TubeState.UNLOADED, 0 means that the tube is empty. In any other - * state, the number will be the ordinal value of the OrdnanceType in the - * tube. - * Unspecified: any negative number - */ - public byte getTubeContentsValue(int tube) { - return mTubeContents[tube]; - } - - public void setTubeContentsValue(int tube, byte value) { - mTubeContents[tube] = value; - } - - /** - * Returns an OrdnanceType value indicating the contents of the tube. This - * method will return null if the tube contents are unspecified, or if the - * tube is empty. - */ - public OrdnanceType getTubeContents(int tube) { - TubeState state = mTubeState[tube]; - int contents = mTubeContents[tube]; - - if (state == null || contents < 0) { - return null; - } - - return state == TubeState.UNLOADED ? null : OrdnanceType.values()[contents]; - } - - /** - * Sets the contents of the given tube. The tube state must be set to a - * value other than TubeState.UNLOADED before invoking this method. - */ - public void setTubeContents(int tube, OrdnanceType type) { - TubeState state = mTubeState[tube]; - - if (state == null) { - throw new IllegalStateException("Tube state not set"); - } - - if (state == TubeState.UNLOADED) { - if (type != null) { - throw new IllegalArgumentException( - "Unloaded tubes cannot contain ordnance" - ); - } - - mTubeContents[tube] = 0; - } else { - if (type == null) { - throw new IllegalArgumentException( - "No OrdnanceType specified for " + state + " tube state" - ); - } - - mTubeContents[tube] = (byte) type.ordinal(); - } - } - - /** - * Returns the number of seconds until the current (un)load operation is - * complete. - * Unspecified: -1 - */ - public float getTubeCountdown(int tube) { - return mTubeTimes[tube]; - } - - public void setTubeCountdown(int tube, float seconds) { - mTubeTimes[tube] = seconds; - } - - /** - * Amount of coolant in the ship's reserves. - * Unspecified: -1 - */ - public int getAvailableCoolant() { - return mAvailableCoolant; - } - - public void setAvailableCoolant(int availableCoolant) { - mAvailableCoolant = availableCoolant; - } - - /** - * The view for the main screen. - * Unspecified: null - */ - public MainScreenView getMainScreen() { - return mMainScreen; - } - - public void setMainScreen(MainScreenView screen) { - mMainScreen = screen; - } - - /** - * The frequency at which beam weapons are to be tuned. - * Unspecified: null - */ - public BeamFrequency getBeamFrequency() { - return mBeamFreq; - } - - public void setBeamFrequency(BeamFrequency beamFreq) { - mBeamFreq = beamFreq; - } - - /** - * The type of drive system the ship has. - * Unspecified: null - */ - public DriveType getDriveType() { - return mDriveType; - } - - public void setDriveType(DriveType driveType) { - mDriveType = driveType; - } - - /** - * Returns the current targeting mode (auto vs. manual beams). - * Unspecified: null - */ - public TargetingMode getTargetingMode() { - return mTargetingMode; - } - - public void setTargetingMode(TargetingMode targetingMode) { - mTargetingMode = targetingMode; - } - - /** - * The ID of the object targeted by the science officer. If the target is - * cleared, this method returns 1. - * Unspecified: -1 - */ - public int getScienceTarget() { - return mScienceTarget; - } - - public void setScienceTarget(int scienceTarget) { - mScienceTarget = scienceTarget; - } - - /** - * The progress of the current scan, as a value between 0 and 1. - * Unspecified: -1 - */ - public float getScanProgress() { - return mScanProgress; - } - - public void setScanProgress(float scanProgress) { - mScanProgress = scanProgress; - } - - /** - * The ID of the object targeted by the captain officer. If the target is - * cleared, this method returns 1. - * Unspecified: -1 - */ - public int getCaptainTarget() { - return mCaptainTarget; - } - - public void setCaptainTarget(int captainTarget) { - mCaptainTarget = captainTarget; - } - - /** - * The ID of the object targeted by the weapons officer. If the target is - * cleared, this method returns 1. - * Unspecified: -1 - */ - public int getWeaponsTarget() { - return mWeaponsTarget; - } - - public void setWeaponsTarget(int weaponsTarget) { - mWeaponsTarget = weaponsTarget; - } - - /** - * The ID of the object being scanned. Note that this is distinct from the - * science target: science can start a scan then change targets, but the - * scan continues on the original target as long as science has not - * initiated a new scan. - * Unspecified: -1 - */ - public int getScanObjectId() { - return mScanningId; - } - - public void setScanObjectId(int scanningId) { - mScanningId = scanningId; - } - - /** - * Warp factor, between 0 (not at warp) and Artemis.MAX_WARP. - * Unspecified: -1 - */ - public byte getWarp() { - return mWarp; - } - - public void setWarp(byte warp) { - mWarp = warp; - } - - /** - * Returns the number of upgrades of the indicated type stored on the ship. - * Unspecified: -1 - */ - public byte getUpgrades(Upgrade upgrade) { - if (upgrade.getActivatedby() == null) { - throw new IllegalArgumentException(upgrade + " upgrades can't be stored on the ship"); - } - - return mUpgrades[upgrade.ordinal() - 2]; - } - - public void setUpgrades(Upgrade upgrade, byte count) { - if (upgrade.getActivatedby() == null) { - throw new IllegalArgumentException(upgrade + " upgrades can't be stored on the ship"); - } - - mUpgrades[upgrade.ordinal() - 2] = count; - } - - @Override - public void updateFrom(ArtemisObject eng) { - super.updateFrom(eng); - - // it should be! - if (eng instanceof ArtemisPlayer) { - ArtemisPlayer plr = (ArtemisPlayer) eng; - - if (mShipNumber == -1) { - mShipNumber = plr.mShipNumber; - } - - if (plr.mTargetingMode != null) { - mTargetingMode = plr.mTargetingMode; - } - - if (plr.mWeaponsTarget != -1) { - mWeaponsTarget = plr.mWeaponsTarget; - } - - if (plr.mWarp != -1) { - mWarp = plr.mWarp; - } - - if (plr.mDockingBase != -1) { - mDockingBase = plr.mDockingBase; - } else if (plr.getImpulse() != -1 || plr.mWarp != -1) { - mDockingBase = 0; - } - - if (plr.mBeamFreq != null) { - mBeamFreq = plr.mBeamFreq; - } - - if (plr.mAlertStatus != null) { - mAlertStatus = plr.mAlertStatus; - } - - if (BoolState.isKnown(plr.mShields)) { - mShields = plr.mShields; - } - - if (plr.mEnergy != -1) { - mEnergy = plr.mEnergy; - } - - if (plr.mAvailableCoolant != -1) { - mAvailableCoolant = plr.mAvailableCoolant; - } - - if (plr.mDriveType != null) { - mDriveType = plr.mDriveType; - } - - for (int i = 0; i < Artemis.SYSTEM_COUNT; i++) { - if (plr.mHeat[i] != -1) { - mHeat[i] = plr.mHeat[i]; - } - - if (plr.mSystems[i] != -1) { - mSystems[i] = plr.mSystems[i]; - } - - if (plr.mCoolant[i] != -1) { - mCoolant[i] = plr.mCoolant[i]; - } - } - - for (int i=0; i < OrdnanceType.COUNT; i++) { - if (plr.mTorpedos[i] != -1) { - mTorpedos[i] = plr.mTorpedos[i]; - } - } - - for (int i = 0; i < Artemis.MAX_TUBES; i++) { - float time = plr.mTubeTimes[i]; - - if (time >= 0) { - mTubeTimes[i] = time < 0.05f ? 0 : time; - } - - TubeState state = plr.mTubeState[i]; - - if (state != null) { - mTubeState[i] = state; - } - - byte contents = plr.mTubeContents[i]; - - if (contents != -1) { - mTubeContents[i] = contents; - } else if (state == TubeState.UNLOADED) { - mTubeContents[i] = 0; - } - } - - if (plr.mMainScreen != null) { - mMainScreen = plr.mMainScreen; - } - - if (BoolState.isKnown(plr.mReverse)) { - mReverse = plr.mReverse; - } - - if (plr.mScienceTarget != -1) { - mScienceTarget = plr.mScienceTarget; - } - - if (plr.mScanProgress != -1) { - mScanProgress = plr.mScanProgress; - } - - if (plr.mCaptainTarget != -1) { - mCaptainTarget = plr.mCaptainTarget; - } - - if (plr.mScanningId != -1) { - mScanningId = plr.mScanningId; - } - - for (int i = 0; i < mUpgrades.length; i++) { - byte upgrade = plr.mUpgrades[i]; - - if (upgrade >= 0) { - mUpgrades[i] = upgrade; - } - } - } - } - - @Override - public void appendObjectProps(SortedMap props, boolean includeUnspecified) { - super.appendObjectProps(props, includeUnspecified); - putProp(props, "Targeting mode", mTargetingMode, includeUnspecified); - putProp(props, "Alert status", mAlertStatus, includeUnspecified); - putProp(props, "Shield state", mShields, includeUnspecified); - putProp(props, "Player ship number", mShipNumber, -1, includeUnspecified); - - for (ShipSystem system : ShipSystem.values()) { - int i = system.ordinal(); - putProp(props, "System heat: " + system, mHeat[i], -1, includeUnspecified); - putProp(props, "System energy: " + system, mSystems[i], -1, includeUnspecified); - putProp(props, "System coolant: " + system, mCoolant[i], -1, includeUnspecified); - } - - OrdnanceType[] ordValues = OrdnanceType.values(); - - for (OrdnanceType ordnanceType : ordValues) { - int i = ordnanceType.ordinal(); - putProp(props, "Ordnance count: " + ordnanceType, mTorpedos[i], -1, includeUnspecified); - } - - for (int i = 0; i < Artemis.MAX_TUBES; i++) { - TubeState state = mTubeState[i]; - int contents = mTubeContents[i]; - putProp(props, "Tube " + i + " state", state, includeUnspecified); - String contentsStr; - - if (state != null && contents != -1) { - if (state == TubeState.UNLOADED) { - contentsStr = "EMPTY"; - } else { - contentsStr = ordValues[contents].name(); - } - - putProp(props, "Tube " + i + " contents", contentsStr, includeUnspecified); - } - - putProp(props, "Tube " + i + " countdown", mTubeTimes[i], -1, includeUnspecified); - } - - putProp(props, "Energy", mEnergy, -1, includeUnspecified); - putProp(props, "Docking base", mDockingBase, -1, includeUnspecified); - putProp(props, "Main screen view", mMainScreen, includeUnspecified); - putProp(props, "Coolant", mAvailableCoolant, -1, includeUnspecified); - putProp(props, "Warp", mWarp, -1, includeUnspecified); - putProp(props, "Beam frequency", mBeamFreq, includeUnspecified); - putProp(props, "Drive type", mDriveType, includeUnspecified); - putProp(props, "Reverse", mReverse, includeUnspecified); - putProp(props, "Scan target", mScienceTarget, -1, includeUnspecified); - putProp(props, "Scan progress", mScanProgress, -1, includeUnspecified); - putProp(props, "Scan object ID", mScanningId, -1, includeUnspecified); - putProp(props, "Weapons target", mWeaponsTarget, -1, includeUnspecified); - putProp(props, "Captain target", mCaptainTarget, -1, includeUnspecified); - Upgrade[] upgradeTypes = Upgrade.getStorableUpgrades(); - - for (int i = 0; i < mUpgrades.length; i++) { - Upgrade upgradeType = upgradeTypes[i]; - putProp(props, "Upgrades: " + upgradeType, mUpgrades[i], -1, includeUnspecified); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisShielded.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisShielded.java deleted file mode 100644 index fc7d39c..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/ArtemisShielded.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.dhleong.acl.world; - -import net.dhleong.acl.vesseldata.Vessel; - -/** - * An ArtemisObject which can have shields. Note that shield values can be - * negative. - * @author dhleong - */ -public interface ArtemisShielded extends ArtemisObject { - /** - * Identifies the type of ship this is. This corresponds to the uniqueID - * attribute of vessel elements in vesselData.xml. - * Unspecified: -1 - */ - public int getHullId(); - public void setHullId(int value); - - /** - * Returns the Vessel object corresponding to this object's hull ID. If the - * hull ID is unspecified or VesselData contains no Vessel with that ID, - * getVessel() returns null. - */ - public Vessel getVessel(); - - /** - * The strength of the forward shields. - * Unspecified: Float.MIN_VALUE - */ - public float getShieldsFront(); - public void setShieldsFront(float value); - - /** - * The strength of the aft shields. - * Unspecified: Float.MIN_VALUE - */ - public float getShieldsRear(); - public void setShieldsRear(float value); -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisObject.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisObject.java deleted file mode 100644 index c268aec..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisObject.java +++ /dev/null @@ -1,238 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.Map; -import java.util.SortedMap; -import java.util.TreeMap; - -import net.dhleong.acl.util.BoolState; -import net.dhleong.acl.util.TextUtil; - -/** - * Base implementation for all ArtemisObjects. - */ -public abstract class BaseArtemisObject implements ArtemisObject { - private static final String UNKNOWN = "UNKNOWN"; - - /** - * Puts the given int property into the indicated map. If the given value is - * equal to unspecifiedValue, then the includeUnspecified value dictates the - * behavor of this method. If it is true, the property is recorded in the - * map as "UNKNOWN". Otherwise, it is omitted. - */ - public static void putProp(SortedMap props, String label, - int value, int unspecifiedValue, boolean includeUnspecified) { - if (!includeUnspecified && value == unspecifiedValue) { - return; - } - - props.put(label, value != unspecifiedValue ? Integer.valueOf(value) : UNKNOWN); - } - - /** - * Puts the given float property into the indicated map. If the given value - * is equal to unspecifiedValue, then the includeUnspecified value dictates - * the behavor of this method. If it is true, the property is recorded in - * the map as "UNKNOWN". Otherwise, it is omitted. - */ - public static void putProp(SortedMap props, String label, - float value, float unspecifiedValue, boolean includeUnspecified) { - if (!includeUnspecified && value == unspecifiedValue) { - return; - } - - props.put(label, value != unspecifiedValue ? Float.valueOf(value) : UNKNOWN); - } - - /** - * Puts the given BoolState property into the indicated map. If the given - * value is null or BoolState.UNKNOWN, then the includeUnspecified value - * dictates the behavor of this method. If it is true, the property is - * recorded in the map as-is. Otherwise, it is omitted. - */ - public static void putProp(SortedMap props, String label, - BoolState value, boolean includeUnspecified) { - if (!includeUnspecified && !BoolState.isKnown(value)) { - return; - } - - props.put(label, value != null ? value : BoolState.UNKNOWN); - } - - /** - * Puts the given Object property into the indicated map. If the given value - * is null, then the includeUnspecified value dictates the behavor of this - * method. If it is true, the property is recorded in the map as "UNKNOWN". - * Otherwise, it is omitted. - */ - public static void putProp(SortedMap props, String label, - Object value, boolean includeUnspecified) { - if (!includeUnspecified && value == null) { - return; - } - - props.put(label, value != null ? value : UNKNOWN); - } - - protected final int mId; - public String mName; - private float mX = Float.MIN_VALUE; - private float mY = Float.MIN_VALUE; - private float mZ = Float.MIN_VALUE; - private SortedMap unknownProps; - - public BaseArtemisObject(int objId) { - mId = objId; - } - - @Override - public int getId() { - return mId; - } - - @Override - public String getName() { - return mName; - } - - public void setName(String name) { - mName = name; - } - - @Override - public float getX() { - return mX; - } - - @Override - public void setX(float mX) { - this.mX = mX; - } - - @Override - public float getY() { - return mY; - } - - @Override - public void setY(float y) { - mY = y; - } - - @Override - public float getZ() { - return mZ; - } - - @Override - public void setZ(float z) { - mZ = z; - } - - @Override - public void updateFrom(ArtemisObject eng) { - if (eng.getName() != null) { - mName = eng.getName(); - } - - float x = eng.getX(); - float y = eng.getY(); - float z = eng.getZ(); - - if (x != Float.MIN_VALUE) { - mX = x; - } - - if (y != Float.MIN_VALUE) { - mY = y; - } - - if (z != Float.MIN_VALUE) { - mZ = z; - } - - BaseArtemisObject cast = (BaseArtemisObject) eng; - SortedMap unknown = cast.getUnknownProps(); - - if (unknown != null && !unknown.isEmpty()) { - if (unknownProps == null) { - unknownProps = new TreeMap(); - } - - unknownProps.putAll(unknown); - } - } - - @Override - public final SortedMap getUnknownProps() { - return unknownProps; - } - - @Override - public final void setUnknownProps(SortedMap unknownProps) { - this.unknownProps = unknownProps; - } - - @Override - public final SortedMap getProps(boolean includeUnspecified) { - SortedMap props = new TreeMap(); - appendObjectProps(props, includeUnspecified); - return props; - } - - @Override - public final String toString() { - SortedMap props = getProps(false); - StringBuilder b = new StringBuilder(); - - for (Map.Entry entry : props.entrySet()) { - b.append("\n\t").append(entry.getKey()).append(": "); - Object value = entry.getValue(); - - if (value instanceof byte[]) { - b.append(TextUtil.byteArrayToHexString((byte[]) value)); - } else { - b.append(value); - } - } - - return b.toString(); - } - - /** - * Appends this object's properties to the given map. If includeUnspecified - * is true, unspecified properties area also included (unless they are also - * unknown properties). Subclasses must always call the superclass's - * implementation of this method. - */ - protected void appendObjectProps(SortedMap props, - boolean includeUnspecified) { - props.put("ID", Integer.valueOf(mId)); - putProp(props, "Name", mName, includeUnspecified); - putProp(props, "Object type", getType(), includeUnspecified); - putProp(props, "X", mX, Float.MIN_VALUE, includeUnspecified); - putProp(props, "Y", mY, Float.MIN_VALUE, includeUnspecified); - putProp(props, "Z", mZ, Float.MIN_VALUE, includeUnspecified); - - if (unknownProps != null) { - props.putAll(unknownProps); - } - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof ArtemisObject)) { - return false; - } - - return mId == ((ArtemisObject) other).getId(); - } - - @Override - public int hashCode() { - return mId; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisOrientable.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisOrientable.java deleted file mode 100644 index 2a63d1d..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisOrientable.java +++ /dev/null @@ -1,81 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.SortedMap; - -/** - * Base implementation for ArtemisOrientable objects. - * @author rjwut - */ -public abstract class BaseArtemisOrientable extends BaseArtemisObject - implements ArtemisOrientable { - public BaseArtemisOrientable(int objId) { - super(objId); - } - - private float mHeading = Float.MIN_VALUE; - private float mPitch = Float.MIN_VALUE; - private float mRoll = Float.MIN_VALUE; - - @Override - public float getHeading() { - return mHeading; - } - - @Override - public void setHeading(float heading) { - mHeading = heading; - } - - @Override - public float getPitch() { - return mPitch; - } - - @Override - public void setPitch(float pitch) { - mPitch = pitch; - } - - @Override - public float getRoll() { - return mRoll; - } - - @Override - public void setRoll(float roll) { - mRoll = roll; - } - - @Override - public void updateFrom(ArtemisObject obj) { - super.updateFrom(obj); - - if (obj instanceof ArtemisOrientable) { - ArtemisOrientable cast = (ArtemisOrientable) obj; - float heading = cast.getHeading(); - float pitch = cast.getPitch(); - float roll = cast.getRoll(); - - if (heading != Float.MIN_VALUE) { - mHeading = heading; - } - - if (pitch != Float.MIN_VALUE) { - mPitch = pitch; - } - - if (roll != Float.MIN_VALUE) { - mRoll = roll; - } - } - } - - @Override - protected void appendObjectProps(SortedMap props, - boolean includeUnspecified) { - super.appendObjectProps(props, includeUnspecified); - putProp(props, "Heading", mHeading, Float.MIN_VALUE, includeUnspecified); - putProp(props, "Pitch", mPitch, Float.MIN_VALUE, includeUnspecified); - putProp(props, "Roll", mRoll, Float.MIN_VALUE, includeUnspecified); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisShielded.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisShielded.java deleted file mode 100644 index 922b6ff..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisShielded.java +++ /dev/null @@ -1,110 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.SortedMap; - -import net.dhleong.acl.vesseldata.Vessel; -import net.dhleong.acl.vesseldata.VesselData; - -/** - * Base implementation of a shielded world object. - */ -public abstract class BaseArtemisShielded extends BaseArtemisOrientable - implements ArtemisShielded { - private int mHullId = -1; - private float mShieldsFront = Float.MIN_VALUE; - private float mShieldsRear = Float.MIN_VALUE; - - public BaseArtemisShielded(int objId) { - super(objId); - } - - @Override - public int getHullId() { - return mHullId; - } - - @Override - public Vessel getVessel() { - return mHullId != -1 ? VesselData.get().getVessel(mHullId) : null; - } - - @Override - public void setHullId(int hullId) { - mHullId = hullId; - } - - public void setVessel(Vessel vessel) { - mHullId = vessel.getId(); - } - - @Override - public float getShieldsFront() { - return mShieldsFront; - } - - @Override - public void setShieldsFront(float shieldsFront) { - mShieldsFront = shieldsFront; - } - @Override - public float getShieldsRear() { - return mShieldsRear; - } - - @Override - public void setShieldsRear(float shieldsRear) { - mShieldsRear = shieldsRear; - } - - @Override - public void updateFrom(ArtemisObject eng) { - super.updateFrom(eng); - - if (eng instanceof BaseArtemisShielded) { - ArtemisShielded ship = (ArtemisShielded) eng; - int hullId = ship.getHullId(); - - if (hullId != -1) { - mHullId = hullId; - } - - float shields = ship.getShieldsFront(); - - if (shields != Float.MIN_VALUE) { - mShieldsFront = shields; - } - - shields = ship.getShieldsRear(); - - if (shields != Float.MIN_VALUE) { - mShieldsRear = shields; - } - } - } - - @Override - public void appendObjectProps(SortedMap props, boolean includeUnspecified) { - super.appendObjectProps(props, includeUnspecified); - putProp(props, "Hull ID", mHullId, -1, includeUnspecified); - - if (includeUnspecified || mHullId != -1) { - Vessel vessel = getVessel(); - putProp( - props, - "Vessel type", - vessel != null ? vessel.getName() : Integer.toString(mHullId), - includeUnspecified - ); - - putProp( - props, - "Faction", - vessel != null ? vessel.getFaction().getName() : "UNKNOWN", - includeUnspecified - ); - } - - putProp(props, "Shields: fore", mShieldsFront, Float.MIN_VALUE, includeUnspecified); - putProp(props, "Shields: aft", mShieldsRear, Float.MIN_VALUE, includeUnspecified); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisShip.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisShip.java deleted file mode 100644 index 1dc4056..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/BaseArtemisShip.java +++ /dev/null @@ -1,181 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.SortedMap; - -import net.dhleong.acl.enums.BeamFrequency; - -/** - * Base implementation for ships (player or NPC). - */ -public abstract class BaseArtemisShip extends BaseArtemisShielded { - private float mVelocity = -1; - private float mShieldsFrontMax = -1; - private float mShieldsRearMax = -1; - private final float[] mShieldFreqs = new float[5]; - private float mSteering = -1; - private float mTopSpeed = -1; - private float mTurnRate = -1; - private float mImpulse = -1; - - public BaseArtemisShip(int objId) { - super(objId); - - for (int i = 0; i < 5; i++) { - mShieldFreqs[i] = -1; - } - } - - public float getVelocity() { - return mVelocity; - } - - public void setVelocity(float velocity) { - mVelocity = velocity; - } - - public float getSteering() { - return mSteering; - } - - public void setSteering(float steeringSlider) { - mSteering = steeringSlider; - } - - /** - * The maximum speed of this ship, in ls (whatever that is). - * Unspecified: -1 - */ - public float getTopSpeed() { - return mTopSpeed; - } - - public void setTopSpeed(float topSpeed) { - mTopSpeed = topSpeed; - } - - /** - * The maximum turn rate of this ship. - * Unspecified: -1 - */ - public float getTurnRate() { - return mTurnRate; - } - - public void setTurnRate(float turnRate) { - mTurnRate = turnRate; - } - - /** - * The maximum strength of the forward shield. - * Unspecified: -1 - */ - public float getShieldsFrontMax() { - return mShieldsFrontMax; - } - - public void setShieldsFrontMax(float shieldsFrontMax) { - this.mShieldsFrontMax = shieldsFrontMax; - } - - /** - * The maximum strength of the aft shield. - * Unspecified: -1 - */ - public float getShieldsRearMax() { - return mShieldsRearMax; - } - - public void setShieldsRearMax(float shieldsRearMax) { - this.mShieldsRearMax = shieldsRearMax; - } - - /** - * A value between 0 and 1 indicating the shields' resistance to the given - * BeamFrequency. Higher values indicate that the shields are more resistant - * to that frequency. - * Unspecified: -1 - */ - public float getShieldFreq(BeamFrequency freq) { - return mShieldFreqs[freq.ordinal()]; - } - - public void setShieldFreq(BeamFrequency freq, float value) { - mShieldFreqs[freq.ordinal()] = value; - } - - /** - * Impulse setting, as a value from 0 (all stop) and 1 (full impulse). - * Unspecified: -1 - */ - public float getImpulse() { - return mImpulse; - } - - public void setImpulse(float impulseSlider) { - mImpulse = impulseSlider; - } - - @Override - public void updateFrom(ArtemisObject eng) { - super.updateFrom(eng); - - if (eng instanceof BaseArtemisShip) { - BaseArtemisShip ship = (BaseArtemisShip) eng; - - if (ship.mSteering != -1) { - mSteering = ship.mSteering; - } - - if (ship.mVelocity != -1) { - mVelocity = ship.mVelocity; - } - - if (ship.mTopSpeed != -1) { - mTopSpeed = ship.mTopSpeed; - } - - if (ship.mTurnRate != -1) { - mTurnRate = ship.mTurnRate; - } - - if (ship.mShieldsFrontMax != -1) { - mShieldsFrontMax = ship.mShieldsFrontMax; - } - - if (ship.mShieldsRearMax != -1) { - mShieldsRearMax = ship.mShieldsRearMax; - } - - if (ship.mImpulse != -1) { - mImpulse = ship.mImpulse; - } - - for (int i = 0; i < mShieldFreqs.length; i++) { - float value = ship.mShieldFreqs[i]; - - if (value != -1) { - mShieldFreqs[i] = value; - } - } - } - } - - @Override - public void appendObjectProps(SortedMap props, boolean includeUnspecified) { - super.appendObjectProps(props, includeUnspecified); - putProp(props, "Velocity", mVelocity, -1, includeUnspecified); - putProp(props, "Shields: fore max", mShieldsFrontMax, -1, includeUnspecified); - putProp(props, "Shields: aft max", mShieldsRearMax, -1, includeUnspecified); - BeamFrequency[] freqs = BeamFrequency.values(); - - for (int i = 0; i < mShieldFreqs.length; i++) { - putProp(props, "Shield frequency " + freqs[i], mShieldFreqs[i], - -1, includeUnspecified); - } - - putProp(props, "Rudder", mSteering, -1, includeUnspecified); - putProp(props, "Top speed", mTopSpeed, -1, includeUnspecified); - putProp(props, "Turn rate", mTurnRate, -1, includeUnspecified); - putProp(props, "Impulse", mImpulse, -1, includeUnspecified); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/SystemManager.java b/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/SystemManager.java deleted file mode 100644 index b6555ca..0000000 --- a/lib/ArtClientLib-2.6.0/src/net/dhleong/acl/world/SystemManager.java +++ /dev/null @@ -1,395 +0,0 @@ -package net.dhleong.acl.world; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; -import java.util.Set; - -import net.dhleong.acl.enums.ObjectType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.iface.Listener; -import net.dhleong.acl.protocol.core.eng.EngGridUpdatePacket; -import net.dhleong.acl.protocol.core.eng.EngGridUpdatePacket.DamconStatus; -import net.dhleong.acl.protocol.core.eng.EngGridUpdatePacket.GridDamage; -import net.dhleong.acl.protocol.core.world.DestroyObjectPacket; -import net.dhleong.acl.protocol.core.world.IntelPacket; -import net.dhleong.acl.protocol.core.world.ObjectUpdatePacket; -import net.dhleong.acl.util.GridCoord; -import net.dhleong.acl.util.ShipSystemGrid; -import net.dhleong.acl.util.ShipSystemGrid.GridEntry; - -/** - * A repository of Artemis world objects. Register an instance of SystemManager - * with the ArtemisNetworkInterface and it will keep track of all objects as - * they're created, updated and destroyed. - * @author dhleong - */ -public class SystemManager { - - public interface OnObjectCountChangeListener { - void onObjectCountChanged(int count); - } - - private static final OnObjectCountChangeListener sDummyListener = - new OnObjectCountChangeListener() { - @Override - public void onObjectCountChanged(int count) {/* nop */} - }; - - private static final boolean DEBUG = false; - - private final HashMap mObjects = - new HashMap(); - private OnObjectCountChangeListener mListener = sDummyListener; - - private HashMap mGridDamage; - private ShipSystemGrid mGrid; - - private final HashMap mDamcons = - new HashMap(); - - private final ArtemisPlayer[] mPlayers = new ArtemisPlayer[Artemis.SHIP_COUNT]; - - public SystemManager() { - clear(); - } - - /** Manually add an obj to the system */ - public void addObject(ArtemisObject obj) { - synchronized(this) { - mObjects.put(Integer.valueOf(obj.getId()), obj); - } - - mListener.onObjectCountChanged(mObjects.size()); - } - - @Listener - public void onPacket(DestroyObjectPacket pkt) { - synchronized(this) { - mObjects.remove(Integer.valueOf(pkt.getTarget())); - } - - // signal change - if (mObjects.size() == 1) { - ArtemisObject last = mObjects.values().iterator().next(); - - if ("Artemis".equals(last.getName())) { - // special (hack?) case; - // this is actually the end of the game - clear(); - mListener.onObjectCountChanged(0); - return; - } - } - - mListener.onObjectCountChanged(mObjects.size()); - return; - } - - @Listener - public void onPacket(EngGridUpdatePacket pkt) { - // this ONLY goes to the appropriate ship's engineer console - List damages = pkt.getDamage(); - - if (damages.size() > 0 && mGridDamage != null) { - for (GridDamage d : damages) { - mGridDamage.put(d.getCoord(), Float.valueOf(d.getDamage())); - } - } - - // update/init damcon teams - for (DamconStatus s : pkt.getDamcons()) { - final Integer team = Integer.valueOf(s.getTeamNumber()); - - if (mDamcons.containsKey(team)) { - DamconStatus old = mDamcons.get(team); - old.updateFrom(s); - } else { - mDamcons.put(team, s); - } - } - } - - @Listener - public void onPacket(ObjectUpdatePacket pkt) { - for (ArtemisObject p : pkt.getObjects()) { - updateOrCreate(p); - } - } - - @Listener - public void onPacket(IntelPacket pkt) { - ArtemisNpc npc = (ArtemisNpc) mObjects.get(Integer.valueOf(pkt.getId())); - - if (npc != null) { - npc.setIntel(pkt.getIntel()); - } - } - - @SuppressWarnings("unused") - private boolean updateOrCreate(ArtemisObject o) { - Integer id = Integer.valueOf(o.getId()); - ArtemisObject p = mObjects.get(id); - - if (p != null) { - p.updateFrom(o); - - if (o instanceof ArtemisPlayer) { - // just in case we get the ship number AFTER - // first creating the object, we store the - // updated ORIGINAL with the new ship number - ArtemisPlayer plr = (ArtemisPlayer) o; - - if (plr.getShipIndex() >= 0) { - mPlayers[plr.getShipIndex()] = (ArtemisPlayer) p; - } - } - - return false; - } - - synchronized(this) { - mObjects.put(id, o); - } - - if (o instanceof ArtemisPlayer) { - ArtemisPlayer plr = (ArtemisPlayer) o; - - if (plr.getShipIndex() >= 0) { - mPlayers[plr.getShipIndex()] = plr; - } - } - - if (DEBUG && o.getName() == null) { - throw new IllegalStateException("Creating " + p +" without name! " + - Integer.toHexString(o.getId())); - } - - mListener.onObjectCountChanged(mObjects.size()); - return true; - } - - public synchronized void getAll(List dest) { - dest.addAll(mObjects.values()); - } - - public synchronized void getAllSelectable(List dest) { - for (ArtemisObject obj : mObjects.values()) { - // tentative - if (!(obj instanceof ArtemisGenericObject)) { - dest.add(obj); - } - } - } - - /** - * Add objects of the given type to the given list - * - * @param dest - * @param type One of the ArtemisObject#TYPE_* constants - * @return The number of objects added to "dest" - */ - public synchronized int getObjects(List dest, ObjectType type) { - int count = 0; - - for (ArtemisObject obj : mObjects.values()) { - if (obj.getType() == type) { - dest.add(obj); - count++; - } - } - - return count; - } - - /** - * If you don't want/need to reuse a List, this - * will create a list for you - * - * @param type - * @return - * @see #getObjects(List, int) - */ - public List getObjects(ObjectType type) { - List objs = new ArrayList(); - getObjects(objs, type); - return objs; - } - - public ArtemisObject getObject(int objId) { - return mObjects.get(Integer.valueOf(objId)); - } - - /** - * Get the player ship by index. Possible values - * are the SetShipPacket#SHIP_* constants (that - * is, ints in range [0,5]) and NOT the - * {@link ArtemisPlayer#getShipIndex()} value - * - * @param shipIndex - * @return - */ - public ArtemisPlayer getPlayerShip(int shipIndex) { - if (shipIndex < 0 || shipIndex >= mPlayers.length) { - throw new IllegalArgumentException("Invalid ship index " + shipIndex); - } - - return mPlayers[shipIndex]; - } - - /** - * Get the status of the given Damcon Team - * if we have it, else null. It would be - * great to have a good first guess, but - * I can't seem to find any pattern, nor - * does there seem to be an init data---even - * the native client just uses a first guess - * on connect - * - * @param teamNumber - * @return - */ - public DamconStatus getDamcon(int teamNumber) { - return mDamcons.get(Integer.valueOf(teamNumber)); - } - - public GridEntry getGridAt(int x, int y, int z) { - return getGridAt(GridCoord.getInstance(x, y, z)); - } - - public GridEntry getGridAt(GridCoord key) { - if (mGrid == null) { - throw new IllegalStateException("SystemManager must have a ShipSystemGrid"); - } - - return mGrid.getGridAt(key); - } - - /** - * Get the type of System at the grid coordinates, - * or NULL if it's just a hallway - * @param x - * @param y - * @param z - * @return - */ - public ShipSystem getSystemTypeAt(int x, int y, int z) { - return mGrid.getSystemTypeAt(GridCoord.getInstance(x, y, z)); - } - - /** - * Get the overall health of the given system - * @param sys - * @return A float [0, 1] indicating percentage health - * @throws IllegalStateException if the SystemManager doesn't - * yet have a ShipSystemGrid - */ - public float getHealthOfSystem(ShipSystem sys) { - if (mGrid == null) { - throw new IllegalStateException("SystemManager must have a ShipSystemGrid"); - } - - final float total = mGrid.getSystemCount(sys); - float current = total; - - for (GridCoord c : mGrid.getCoordsFor(sys)) { - final float damage = getGridDamageAt(c); - - if (damage != -1) { - current -= damage; - } - } - - return current / total; - } - - /** - * Get the first object with the given name - * @param type - * @return null if no such object or if name is null - */ - public synchronized ArtemisObject getObjectByName(final String name) { - if (name == null) { - return null; - } - - for (ArtemisObject obj : mObjects.values()) { - if (name.equals(obj.getName())) { - return obj; - } - } - - return null; - } - - public boolean hasSystemGrid() { - return mGrid != null; - } - - public void setOnObjectCountChangedListener(OnObjectCountChangeListener listener) { - mListener = (listener == null) ? sDummyListener : listener; - } - - /** - * Get the damage at a specific grid coord - * @param coord - * @return The damage as a value [0, 1] or -1 - * if we don't have the any entry for the coord - */ - public float getGridDamageAt(GridCoord coord) { - if (mGridDamage == null) { - return -1f; - } - - Float value = mGridDamage.get(coord); - return value != null ? value.floatValue() : -1f; - } - - /** - * Convenience - * @param x - * @param y - * @param z - * @return - */ - public float getGridDamageAt(int x, int y, int z) { - return getGridDamageAt(GridCoord.getInstance(x, y, z)); - } - - public Set> getGridDamages() { - return mGridDamage.entrySet(); - } - - /** - * Set the current ship's (fully loaded) grid - * @param grid - */ - public void setSystemGrid(ShipSystemGrid grid) { - if (mGridDamage == null) { - mGridDamage = new HashMap(); - } else { - mGridDamage.clear(); // just in case - } - mGrid = grid; - - // fill some default values - for (GridCoord c : grid.getCoords()) { - mGridDamage.put(c, Float.valueOf(0f)); // default - } - } - - public synchronized void clear() { - mObjects.clear(); - Arrays.fill(mPlayers, null); - - mGrid = null; - - if (mGridDamage != null) { - mGridDamage.clear(); - } - - mDamcons.clear(); - } -} diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/TestPacketFile.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/TestPacketFile.java deleted file mode 100644 index 6c8a756..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/TestPacketFile.java +++ /dev/null @@ -1,333 +0,0 @@ -package net.dhleong.acl.protocol; - -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.net.URL; -import java.nio.charset.Charset; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.BaseDebugger; -import net.dhleong.acl.iface.Listener; -import net.dhleong.acl.iface.ListenerRegistry; -import net.dhleong.acl.iface.PacketFactoryRegistry; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.util.TextUtil; - -/** - * Class that can read and write test packet files, and perform various - * operations useful for testing. - * - * The test files don't contain the raw binary data. Instead, they contain hex- - * encoded bytes for easier reading by humans. You can add white space for - * greater legibility. You can also add comments with double slashes (//); the - * slashes and all characters after them until the next newline character will - * be ignored. - * - * Example: - * // ToggleRedAlertPacket - * efbeadde // header - * 20000000 // packet length = 32 - * 02000000 // origin = client - * 00000000 // padding - * 0c000000 // remaining length = 12 - * 3c1d824c 0a000000 // ToggleRedAlertPacket - * 00000000 // unused - * - * @author rjwut - */ -public class TestPacketFile { - public enum Mode { - READ, WRITE - } - - private static final Charset UTF_8 = Charset.forName("UTF-8"); - - /** - * Reads a file name and a ConnectionType (SERVER or CLIENT) from the - * command line, then reads in the file, parses it, re-writes the packets, - * and confirms that the resulting output bytes exactly match the bytes that - * were originally read. - */ - public static void main(String[] args) { - String fileName = args[0]; - ConnectionType connType = ConnectionType.valueOf(args[1]); - - try { - new TestPacketFile(new File(fileName), Mode.READ).test(connType); - } catch (IOException ex) { - ex.printStackTrace(); - } - } - - private Mode mode; - private byte[] bytes; // bytes read in on read mode - private OutputStream os; // destination stream for write mode - private ByteArrayOutputStream baos; // buffer for write mode - - /** - * Reads test packet data from the given File. - */ - public TestPacketFile(File file, Mode mode) throws IOException { - if (mode == Mode.READ) { - initRead(new FileInputStream(file)); - } else if (mode == Mode.WRITE) { - initWrite(new FileOutputStream(file)); - } - } - - /** - * Reads test packet data from the given URL. - */ - public TestPacketFile(URL url) throws IOException { - initRead(url.openStream()); - } - - /** - * Reads test packet data from the given InputStream. - */ - public TestPacketFile(InputStream is) throws IOException { - initRead(is); - } - - public TestPacketFile(OutputStream os) { - initWrite(os); - } - - private void initRead(InputStream is) throws IOException { - mode = Mode.READ; - BufferedReader reader = new BufferedReader(new InputStreamReader(is, UTF_8)); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - String line; - - while ((line = reader.readLine()) != null) { - // strip out comments and whitespace - int commentIndex = line.indexOf("//"); - - if (commentIndex != -1) { - line = line.substring(0, commentIndex); - } - - line = line.replaceAll("\\s+", ""); - - if (line.isEmpty()) { - continue; // no actual data on this line - } - - out.write(TextUtil.hexToByteArray(line)); - } - - reader.close(); - bytes = out.toByteArray(); - } - - private void initWrite(OutputStream outputStream) { - mode = Mode.WRITE; - this.os = outputStream; - baos = new ByteArrayOutputStream(); - } - - /** - * Given a ConnectionType from which the data in this file originated, - * attempts to parse and re-write the data. If an error occurs, a stack - * trace will be written out to System.err. - */ - public void test(ConnectionType connType) { - if (mode != Mode.READ) { - throw new IllegalStateException("test() only valid for read mode"); - } - - // Set up PacketReader - ListenerRegistry listeners = new ListenerRegistry(); - listeners.register(this); - ByteArrayInputStream bais = new ByteArrayInputStream(bytes); - PacketReader reader = new PacketReader( - connType, - bais, - new PacketFactoryRegistry(), - listeners - ); - PacketTestDebugger debugger = new PacketTestDebugger(); - - // Read until there's no more data - while (bais.available() > 0) { - ArtemisPacket pkt; - - try { - // Parse a packet, then get the bytes from the Debugger - pkt = reader.readPacket(debugger); - System.out.println(pkt.getClass().getSimpleName()); - byte[] in = debugger.in; - - // Write the bytes out to a ByteArrayOutputStream - ByteArrayOutputStream baosOut = new ByteArrayOutputStream(); - PacketWriter writer = new PacketWriter(baosOut); - pkt.writeTo(writer, debugger); - byte[] out = baosOut.toByteArray(); - - // Compare against original bytes - if (!diff(pkt, in, out)) { - break; // diff already wrote out an error - } - } catch (ArtemisPacketException ex) { - ex.printStackTrace(); - } catch (IOException ex) { - ex.printStackTrace(); - } - } - } - - /** - * Returns a PacketReader of the given type that will consume the bytes from - * this file. - */ - public PacketReader toPacketReader(ConnectionType type) { - if (mode != Mode.READ) { - throw new IllegalStateException("toPacketReader() only valid for read mode"); - } - - ListenerRegistry listeners = new ListenerRegistry(); - listeners.register(this); - return new PacketReader( - type, - new ByteArrayInputStream(bytes), - new PacketFactoryRegistry(), - listeners - ); - } - - /** - * Returns a PacketWriter of the given type to write packets to the OutputStream. - */ - public PacketWriter toPacketWriter(ConnectionType type) { - if (mode != Mode.WRITE) { - throw new IllegalStateException("toPacketWriter() only valid for write mode"); - } - - return new PacketWriter(baos); - } - - /** - * Flushes the packets which have been written to the OutputStream and closes it. - */ - public void close() throws IOException { - if (mode != Mode.WRITE) { - throw new IllegalStateException("flush() only valid for read mode"); - } - - BufferedOutputStream bos = new BufferedOutputStream(os); - OutputStreamWriter writer = new OutputStreamWriter(bos); - writer.append(TextUtil.byteArrayToHexString(baos.toByteArray())); - writer.close(); - } - - /** - * Do nothing upon parsing a packet; this simply forces all packets to be - * read; the actual test work is handled by the PacketTestDebugger class. - */ - @Listener - public void onPacket(ArtemisPacket pkt) { - // do nothing - } - - /** - * Returns true if the bytes in the given ByteArrayOutputStream match those - * from this file; false otherwise. - */ - public boolean matches(ByteArrayOutputStream baosOut) { - if (mode != Mode.READ) { - throw new IllegalStateException("matches() only valid for read mode"); - } - - byte[] bytes2 = baosOut.toByteArray(); - - if (bytes.length != bytes2.length) { - return false; - } - - for (int i = 0; i < bytes.length; i++) { - if (bytes[i] != bytes2[i]) { - return false; - } - } - - return true; - } - - @Override - public String toString() { - return TextUtil.byteArrayToHexString(mode == Mode.READ ? bytes : baos.toByteArray()); - } - - - /** - * Used by TestPacketFile to capture the raw bytes from the file. This is - * used by test() method. It also ensures that any parse warnings get output - * to the console. - */ - private class PacketTestDebugger extends BaseDebugger { - private byte[] in; - - @Override - public void onRecvPacketBytes(ConnectionType connType, int pktType, - byte[] payload) { - int packetLength = payload.length + 24; - in = new byte[packetLength]; - int offset = 0; - offset = writeInt(ArtemisPacket.HEADER, in, offset); - offset = writeInt(packetLength, in, offset); - offset = writeInt(connType.toInt(), in, offset); - offset = writeInt(0, in, offset); - offset = writeInt(packetLength - 20, in, offset); - offset = writeInt(pktType, in, offset); - System.arraycopy(payload, 0, in, 24, payload.length); - } - - @Override - public void warn(String msg) { - System.out.println(msg); - } - } - - /** - * Writes an int to the given byte array at the indicated offset. - */ - private static int writeInt(int v, byte[] bytes, int offset) { - bytes[offset++] = (byte) (v & 0xff); - bytes[offset++] = (byte) ((v >> 8) & 0xff); - bytes[offset++] = (byte) ((v >> 16) & 0xff); - bytes[offset++] = (byte) ((v >> 24) & 0xff); - return offset; - } - - /** - * Returns true if the given byte arrays match. Otherwise, it prints out a - * description of the packet and the input and output byte arrays and - * returns false. - */ - private static boolean diff(ArtemisPacket pkt, byte[] in, byte[] out) { - boolean ok = in.length == out.length; - - for (int i = 0; ok && i < in.length; i++) { - ok = in[i] == out[i]; - } - - if (!ok) { - System.out.println(pkt); - System.out.println(" IN: " + TextUtil.byteArrayToHexString(in)); - System.out.println(" OUT: " + TextUtil.byteArrayToHexString(out)); - } - - return ok; - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/AudioCommandPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/AudioCommandPacket.txt deleted file mode 100644 index 77d3191..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/AudioCommandPacket.txt +++ /dev/null @@ -1,17 +0,0 @@ -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -7fc5ad6a // AudioCommandPacket -00000000 // ID = 0 -00000000 // command = play - -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -7fc5ad6a // AudioCommandPacket -01000000 // ID = 1 -01000000 // command = delete \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/AudioCommandPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/AudioCommandPacketTest.java deleted file mode 100644 index 14a152e..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/AudioCommandPacketTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.dhleong.acl.protocol.core.comm; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.dhleong.acl.enums.AudioCommand; -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class AudioCommandPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/comm/AudioCommandPacket.txt", ConnectionType.CLIENT, 2); - } - - @Override - protected void testPackets(List packets) { - AudioCommandPacket pkt = packets.get(0); - Assert.assertEquals(0, pkt.getAudioId()); - Assert.assertEquals(AudioCommand.PLAY, pkt.getCommand()); - pkt = packets.get(1); - Assert.assertEquals(1, pkt.getAudioId()); - Assert.assertEquals(AudioCommand.DISMISS, pkt.getCommand()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsIncomingPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsIncomingPacket.txt deleted file mode 100644 index ebe164e..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsIncomingPacket.txt +++ /dev/null @@ -1,14 +0,0 @@ -efbeadde // header -4e000000 // packet length = 76 -01000000 // origin = server -00000000 // padding -3a000000 // remaining length = 56 -5fc372d6 // CommsIncomingPacket - -00000000 // priority = 0 (high) - -// sender = DS1 -04000000 4400 5300 3100 0000 - -// message = Hi.^How are you? -11000000 4800 6900 2e00 5e00 4800 6f00 7700 2000 6100 7200 6500 2000 7900 6f00 7500 3f00 0000 \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsIncomingPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsIncomingPacketTest.java deleted file mode 100644 index bf563f6..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsIncomingPacketTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.dhleong.acl.protocol.core.comm; - -import java.util.List; - -import org.junit.Assert; - -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class CommsIncomingPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/comm/CommsIncomingPacket.txt", ConnectionType.SERVER, 1); - } - - @Override - protected void testPackets(List packets) { - CommsIncomingPacket pkt = packets.get(0); - Assert.assertEquals(0, pkt.getPriority()); - Assert.assertEquals("DS1", pkt.getFrom()); - Assert.assertEquals("Hi.\nHow are you?", pkt.getMessage()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacket.txt deleted file mode 100644 index db75d3c..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacket.txt +++ /dev/null @@ -1,47 +0,0 @@ -efbeadde // header -2c000000 // packet length = 44 -02000000 // origin = client -00000000 // padding -18000000 // remaining length = 24 -4b4c4c57 // CommsOutgoingPacket -00000000 // recipient type = player -00000000 // recipient ID = 0 -04000000 // message = Die! -78007300 // [no argument] -5e004f00 // [unknown] - -efbeadde // header -2c000000 // packet length = 44 -02000000 // origin = client -00000000 // padding -18000000 // remaining length = 24 -4b4c4c57 // CommsOutgoingPacket -01000000 // recipient type = enemy -01000000 // recipient ID = 1 -00000000 // message = Will you surrender? -78007300 // [no argument] -5e004f00 // [unknown] - -efbeadde // header -2c000000 // packet length = 44 -02000000 // origin = client -00000000 // padding -18000000 // remaining length = 24 -4b4c4c57 // CommsOutgoingPacket -02000000 // recipient type = base -02000000 // recipient ID = 2 -03000000 // message = Build nukes -78007300 // [no argument] -5e004f00 // [unknown] - -efbeadde // header -2c000000 // packet length = 44 -02000000 // origin = client -00000000 // padding -18000000 // remaining length = 24 -4b4c4c57 // CommsOutgoingPacket -03000000 // recipient type = other -03000000 // recipient ID = 3 -09000000 // message = Go defend [target] -2f000000 // target ID = 47 -5e004f00 // [unknown] \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacketTest.java deleted file mode 100644 index 4995d81..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/CommsOutgoingPacketTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.dhleong.acl.protocol.core.comm; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.dhleong.acl.enums.BaseMessage; -import net.dhleong.acl.enums.CommsRecipientType; -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.EnemyMessage; -import net.dhleong.acl.enums.OtherMessage; -import net.dhleong.acl.enums.PlayerMessage; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class CommsOutgoingPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/comm/CommsOutgoingPacket.txt", ConnectionType.CLIENT, 4); - } - - @Override - protected void testPackets(List packets) { - CommsOutgoingPacket pkt = packets.get(0); - Assert.assertEquals(CommsRecipientType.PLAYER, pkt.getRecipientType()); - Assert.assertEquals(0, pkt.getRecipientId()); - Assert.assertEquals(PlayerMessage.DIE, pkt.getMessage()); - Assert.assertEquals(CommsOutgoingPacket.NO_ARG, pkt.getArgument()); - - pkt = packets.get(1); - Assert.assertEquals(CommsRecipientType.ENEMY, pkt.getRecipientType()); - Assert.assertEquals(1, pkt.getRecipientId()); - Assert.assertEquals(EnemyMessage.WILL_YOU_SURRENDER, pkt.getMessage()); - Assert.assertEquals(CommsOutgoingPacket.NO_ARG, pkt.getArgument()); - - pkt = packets.get(2); - Assert.assertEquals(CommsRecipientType.BASE, pkt.getRecipientType()); - Assert.assertEquals(2, pkt.getRecipientId()); - Assert.assertEquals(BaseMessage.BUILD_NUKES, pkt.getMessage()); - Assert.assertEquals(CommsOutgoingPacket.NO_ARG, pkt.getArgument()); - - pkt = packets.get(3); - Assert.assertEquals(CommsRecipientType.OTHER, pkt.getRecipientType()); - Assert.assertEquals(3, pkt.getRecipientId()); - Assert.assertEquals(OtherMessage.GO_DEFEND, pkt.getMessage()); - Assert.assertEquals(47, pkt.getArgument()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/IncomingAudioPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/IncomingAudioPacket.txt deleted file mode 100644 index 79961ad..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/IncomingAudioPacket.txt +++ /dev/null @@ -1,21 +0,0 @@ -efbeadde // header -48000000 // packet length = 72 -01000000 // origin = server -00000000 // padding -34000000 // remaining length = 52 -58e088ae // AudioCommandPacket -00000000 // ID = 0 -02000000 // mode = incoming -// title = Hello -06000000 4800 6500 6c00 6c00 6f00 0000 -// filename = hello.ogg -0a000000 6800 6500 6c00 6c00 6f00 2e00 6f00 6700 6700 0000 - -efbeadde // header -20000000 // packet length = 32 -01000000 // origin = server -00000000 // padding -0c000000 // remaining length = 12 -58e088ae // AudioCommandPacket -01000000 // ID = 1 -01000000 // mode = playing \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/IncomingAudioPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/IncomingAudioPacketTest.java deleted file mode 100644 index be18291..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/IncomingAudioPacketTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.dhleong.acl.protocol.core.comm; - -import java.util.List; - -import org.junit.Assert; - -import org.junit.Test; - -import net.dhleong.acl.enums.AudioMode; -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class IncomingAudioPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/comm/IncomingAudioPacket.txt", ConnectionType.SERVER, 2); - } - - @Override - protected void testPackets(List packets) { - IncomingAudioPacket pkt = packets.get(0); - Assert.assertEquals(0, pkt.getAudioId()); - Assert.assertEquals(AudioMode.INCOMING, pkt.getAudioMode()); - Assert.assertEquals("Hello", pkt.getTitle()); - Assert.assertEquals("hello.ogg", pkt.getFileName()); - pkt = packets.get(1); - Assert.assertEquals(1, pkt.getAudioId()); - Assert.assertEquals(AudioMode.PLAYING, pkt.getAudioMode()); - Assert.assertNull(pkt.getTitle()); - Assert.assertNull(pkt.getFileName()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacket.txt deleted file mode 100644 index 64dd669..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacket.txt +++ /dev/null @@ -1,7 +0,0 @@ -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -3c1d824c 0a000000 // ToggleRedAlertPacket -00000000 // unused \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacketTest.java deleted file mode 100644 index ce285c6..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/comm/ToggleRedAlertPacketTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.dhleong.acl.protocol.core.comm; - -import java.util.List; - -import org.junit.Assert; - -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class ToggleRedAlertPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/comm/ToggleRedAlertPacket.txt", ConnectionType.CLIENT, 1); - } - - @Override - protected void testPackets(List packets) { - Assert.assertNotNull(packets.get(0)); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacket.txt deleted file mode 100644 index 742540c..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacket.txt +++ /dev/null @@ -1,15 +0,0 @@ -efbeadde // header -20000000 // packet length = 32 -01000000 // origin = server -00000000 // padding -0c000000 // remaining length = 12 -fec854f7 0b000000 // EngAutoDamconUpdatePacket -00000000 // off - -efbeadde // header -20000000 // packet length = 32 -01000000 // origin = server -00000000 // padding -0c000000 // remaining length = 12 -fec854f7 0b000000 // EngAutoDamconUpdatePacket -01000000 // on diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacketTest.java deleted file mode 100644 index fe06a12..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngAutoDamconUpdatePacketTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class EngAutoDamconUpdatePacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/eng/EngAutoDamconUpdatePacket.txt", ConnectionType.SERVER, 2); - } - - @Override - protected void testPackets(List packets) { - EngAutoDamconUpdatePacket pkt = packets.get(0); - Assert.assertFalse(pkt.isOn()); - pkt = packets.get(1); - Assert.assertTrue(pkt.isOn()); - } -} diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacket.txt deleted file mode 100644 index 94b4882..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacket.txt +++ /dev/null @@ -1,22 +0,0 @@ -efbeadde // header -4a000000 // packet length = 74 -01000000 // origin = server -00000000 // padding -36000000 // remaining length = 54 -3c9f7e07 // EngGridUpdatePacket -01 // unknown -000000 // 0,0,0 -00000000 // 0.0 damage -01ff01 // 1,-1,1 -3333333f // 0.7 damage -ff // end of grid marker -0a // team = 0 -04000000 // goal X = 4 -03000000 // current X = 3 -07000000 // goal Y = 7 -04000000 // current Y = 4 -ffffffff // goal Z = -1 -00000000 // current Z = 0 -9a99993e // progress = 0.3 -03000000 // team member count = 3 -fe // end of DAMCON status marker diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacketTest.java deleted file mode 100644 index 0044ed8..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngGridUpdatePacketTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; -import net.dhleong.acl.util.GridCoord; - -public class EngGridUpdatePacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/eng/EngGridUpdatePacket.txt", ConnectionType.SERVER, 1); - } - - @Override - protected void testPackets(List packets) { - EngGridUpdatePacket pkt = packets.get(0); - List damages = pkt.getDamage(); - Assert.assertEquals(2, damages.size()); - EngGridUpdatePacket.GridDamage damage = damages.get(0); - GridCoord coord = damage.getCoord(); - Assert.assertEquals(0, coord.getX()); - Assert.assertEquals(0, coord.getY()); - Assert.assertEquals(0, coord.getZ()); - Assert.assertEquals(0.0f, damage.getDamage(), EPSILON); - damage = damages.get(1); - coord = damage.getCoord(); - Assert.assertEquals(1, coord.getX()); - Assert.assertEquals(-1, coord.getY()); - Assert.assertEquals(1, coord.getZ()); - Assert.assertEquals(0.7f, damage.getDamage(), EPSILON); - List statuses = pkt.getDamcons(); - Assert.assertEquals(1, statuses.size()); - EngGridUpdatePacket.DamconStatus status = statuses.get(0); - Assert.assertEquals(0, status.getTeamNumber()); - Assert.assertEquals(3, status.getMembers()); - Assert.assertEquals(0.3f, status.getProgress(), EPSILON); - coord = status.getPosition(); - Assert.assertEquals(3, coord.getX()); - Assert.assertEquals(4, coord.getY()); - Assert.assertEquals(0, coord.getZ()); - coord = status.getGoal(); - Assert.assertEquals(4, coord.getX()); - Assert.assertEquals(7, coord.getY()); - Assert.assertEquals(-1, coord.getZ()); - } -} diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSendDamconPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSendDamconPacket.txt deleted file mode 100644 index 766e30d..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSendDamconPacket.txt +++ /dev/null @@ -1,17 +0,0 @@ -efbeadde // header -2c000000 // packet length = 44 -02000000 // origin = client -00000000 // padding -18000000 // remaining length = 24 -d901cc69 04000000 // EngSendDamconPacket -00000000 // damcon team #0 -00000000 00000000 00000000 // coords = (0, 0, 0) - -efbeadde // header -2c000000 // packet length = 44 -02000000 // origin = client -00000000 // padding -18000000 // remaining length = 24 -d901cc69 04000000 // EngSendDamconPacket -01000000 // damcon team #1 -02000000 03000000 04000000 // coords = (2, 3, 4) diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSendDamconPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSendDamconPacketTest.java deleted file mode 100644 index 795baa9..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSendDamconPacketTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; -import net.dhleong.acl.util.GridCoord; - -public class EngSendDamconPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/eng/EngSendDamconPacket.txt", ConnectionType.CLIENT, 2); - } - - @Override - protected void testPackets(List packets) { - EngSendDamconPacket pkt = packets.get(0); - Assert.assertEquals(0, pkt.getTeamNumber()); - GridCoord coord = pkt.getDestination(); - Assert.assertEquals(0, coord.getX()); - Assert.assertEquals(0, coord.getY()); - Assert.assertEquals(0, coord.getZ()); - pkt = packets.get(1); - Assert.assertEquals(1, pkt.getTeamNumber()); - coord = pkt.getDestination(); - Assert.assertEquals(2, coord.getX()); - Assert.assertEquals(3, coord.getY()); - Assert.assertEquals(4, coord.getZ()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacket.txt deleted file mode 100644 index 6d9e0ee..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacket.txt +++ /dev/null @@ -1,15 +0,0 @@ -efbeadde // header -20000000 // packet length = 44 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 24 -3c1d824c 0c000000 // EngSetAutoDamconPacket -00000000 // autonomous off - -efbeadde // header -20000000 // packet length = 44 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 24 -3c1d824c 0c000000 // EngSetAutoDamconPacket -01000000 // autonomous on diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacketTest.java deleted file mode 100644 index cdc892e..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetAutoDamconPacketTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import java.util.List; - -import org.junit.Assert; - -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class EngSetAutoDamconPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/eng/EngSetAutoDamconPacket.txt", ConnectionType.CLIENT, 2); - } - - @Override - protected void testPackets(List packets) { - EngSetAutoDamconPacket pkt = packets.get(0); - Assert.assertFalse(pkt.isAutonomous()); - pkt = packets.get(1); - Assert.assertTrue(pkt.isAutonomous()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacket.txt deleted file mode 100644 index ad337f7..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacket.txt +++ /dev/null @@ -1,17 +0,0 @@ -efbeadde // header -24000000 // packet length = 36 -02000000 // origin = client -00000000 // padding -10000000 // remaining length = 16 -d901cc69 00000000 // EngSetCoolantPacket -07000000 // system = aft shields -03000000 // coolant = 3 - -efbeadde // header -24000000 // packet length = 36 -02000000 // origin = client -00000000 // padding -10000000 // remaining length = 16 -d901cc69 00000000 // EngSetCoolantPacket -00000000 // system = beams -00000000 // coolant = 0 diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacketTest.java deleted file mode 100644 index 5eadaaa..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetCoolantPacketTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class EngSetCoolantPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/eng/EngSetCoolantPacket.txt", ConnectionType.CLIENT, 2); - } - - @Override - protected void testPackets(List packets) { - EngSetCoolantPacket pkt = packets.get(0); - Assert.assertEquals(ShipSystem.AFT_SHIELDS, pkt.getSystem()); - Assert.assertEquals(3, pkt.getCoolant()); - pkt = packets.get(1); - Assert.assertEquals(ShipSystem.BEAMS, pkt.getSystem()); - Assert.assertEquals(0, pkt.getCoolant()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacket.txt deleted file mode 100644 index 1acd144..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacket.txt +++ /dev/null @@ -1,26 +0,0 @@ -efbeadde // header -24000000 // packet length = 36 -02000000 // origin = client -00000000 // padding -10000000 // remaining length = 16 -aca55103 04000000 // EngSetEnergyPacket -abaaaa3e // energy allocation = 100% (0.33333334) -00000000 // beams - -efbeadde // header -24000000 // packet length = 36 -02000000 // origin = client -00000000 // padding -10000000 // remaining length = 16 -aca55103 04000000 // EngSetEnergyPacket -00000000 // energy allocation = 0% (0.0) -07000000 // aft shields - -efbeadde // header -24000000 // packet length = 36 -02000000 // origin = client -00000000 // padding -10000000 // remaining length = 16 -aca55103 04000000 // EngSetEnergyPacket -0000803f // energy allocation = 300% (1.0) -05000000 // warp/jump drive \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacketTest.java deleted file mode 100644 index 689c3da..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/eng/EngSetEnergyPacketTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.dhleong.acl.protocol.core.eng; - -import java.util.List; - -import org.junit.Assert; - -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class EngSetEnergyPacketTest extends AbstractPacketTester { - private static final float DEFAULT_ENERGY_ALLOCATION = 1.0f / 3; - - @Test - public void test() { - execute("core/eng/EngSetEnergyPacket.txt", ConnectionType.CLIENT, 3); - } - - @Override - protected void testPackets(List packets) { - EngSetEnergyPacket pkt = packets.get(0); - Assert.assertEquals(pkt.getSystem(), ShipSystem.BEAMS); - Assert.assertEquals(DEFAULT_ENERGY_ALLOCATION, pkt.getAllocation(), EPSILON); - pkt = packets.get(1); - Assert.assertEquals(pkt.getSystem(), ShipSystem.AFT_SHIELDS); - Assert.assertEquals(0.0f, pkt.getAllocation(), EPSILON); - pkt = packets.get(2); - Assert.assertEquals(pkt.getSystem(), ShipSystem.WARP_JUMP_DRIVE); - Assert.assertEquals(1.0f, pkt.getAllocation(), EPSILON); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/ClimbDivePacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/ClimbDivePacket.txt deleted file mode 100644 index fee5534..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/ClimbDivePacket.txt +++ /dev/null @@ -1,15 +0,0 @@ -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -3c1d824c 1b000000 // ClimbDivePacket -ffffffff // direction = up - -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -3c1d824c 1b000000 // ClimbDivePacket -01000000 // direction = down diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/ClimbDivePacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/ClimbDivePacketTest.java deleted file mode 100644 index e90364c..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/ClimbDivePacketTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class ClimbDivePacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/helm/ClimbDivePacket.txt", ConnectionType.CLIENT, 2); - } - - @Override - protected void testPackets(List packets) { - Assert.assertTrue(packets.get(0).isUp()); - Assert.assertFalse(packets.get(1).isUp()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmJumpPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmJumpPacket.txt deleted file mode 100644 index 318ea6a..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmJumpPacket.txt +++ /dev/null @@ -1,8 +0,0 @@ -efbeadde // header -24000000 // packet size = 36 -02000000 // origin = client -00000000 // padding -10000000 // remaining size = 16 -aca55103 05000000 // HelmJumpPacket -cdcc4c3e // heading = 0.2 (72 degrees) -3333333f // distance = 0.7 (35 kls) diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmJumpPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmJumpPacketTest.java deleted file mode 100644 index 3a93ae7..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmJumpPacketTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class HelmJumpPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/helm/HelmJumpPacket.txt", ConnectionType.CLIENT, 1); - } - - @Override - protected void testPackets(List packets) { - HelmJumpPacket pkt = packets.get(0); - Assert.assertEquals(0.2f, pkt.getHeading(), EPSILON); - Assert.assertEquals(0.7f, pkt.getDistance(), EPSILON); - } -} diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacket.txt deleted file mode 100644 index 5307f2d..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacket.txt +++ /dev/null @@ -1,7 +0,0 @@ -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -3c1d824c 07000000 // HelmRequestDockPacket -00000000 // unused diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacketTest.java deleted file mode 100644 index e6249fd..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmRequestDockPacketTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class HelmRequestDockPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/helm/HelmRequestDockPacket.txt", ConnectionType.CLIENT, 1); - } - - @Override - protected void testPackets(List packets) { - Assert.assertNotNull(packets.get(0)); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacket.txt deleted file mode 100644 index 5a7cb26..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacket.txt +++ /dev/null @@ -1,23 +0,0 @@ -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -aca55103 02000000 // SetClimbDivePacket -00000000 // level out - -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -aca55103 02000000 // SetClimbDivePacket -000080bf // hard dive - -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -aca55103 02000000 // SetClimbDivePacket -9a99993e // gentle climb diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacketTest.java deleted file mode 100644 index 760bffe..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetClimbDivePacketTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class HelmSetClimbDivePacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/helm/HelmSetClimbDivePacket.txt", ConnectionType.CLIENT, 3); - } - - @Override - protected void testPackets(List packets) { - HelmSetClimbDivePacket pkt = packets.get(0); - Assert.assertEquals(0.0f, pkt.getPitch(), EPSILON); - pkt = packets.get(1); - Assert.assertEquals(-1.0f, pkt.getPitch(), EPSILON); - pkt = packets.get(2); - Assert.assertEquals(0.3f, pkt.getPitch(), EPSILON); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacket.txt deleted file mode 100644 index 86f5942..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacket.txt +++ /dev/null @@ -1,15 +0,0 @@ -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -aca55103 00000000 // HelmSetImpulsePacket -00000000 // all stop (0.0f) - -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -aca55103 00000000 // HelmSetImpulsePacket -3333333f // 70% (0.7f) diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacketTest.java deleted file mode 100644 index f16c919..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetImpulsePacketTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import java.util.List; - -import junit.framework.Assert; - -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class HelmSetImpulsePacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/helm/HelmSetImpulsePacket.txt", ConnectionType.CLIENT, 2); - } - - @Override - protected void testPackets(List packets) { - HelmSetImpulsePacket pkt = packets.get(0); - Assert.assertEquals(0.0f, pkt.getPower(), EPSILON); - pkt = packets.get(1); - Assert.assertEquals(0.7f, pkt.getPower(), EPSILON); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacket.txt deleted file mode 100644 index 0a1be88..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacket.txt +++ /dev/null @@ -1,15 +0,0 @@ -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -aca55103 01000000 // HelmSetSteeringPacket -00000000 // hard to port (0.0f) - -efbeadde // header -20000000 // packet length = 32 -02000000 // origin = client -00000000 // padding -0c000000 // remaining length = 12 -aca55103 01000000 // HelmSetSteeringPacket -3333333f // medium to starboard (0.7f) diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacketTest.java deleted file mode 100644 index a74630e..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/helm/HelmSetSteeringPacketTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.dhleong.acl.protocol.core.helm; - -import java.util.List; - -import junit.framework.Assert; - -import org.junit.Test; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.protocol.core.setup.AbstractPacketTester; - -public class HelmSetSteeringPacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/helm/HelmSetSteeringPacket.txt", ConnectionType.CLIENT, 2); - } - - @Override - protected void testPackets(List packets) { - HelmSetSteeringPacket pkt = packets.get(0); - Assert.assertEquals(0.0f, pkt.getSteering(), EPSILON); - pkt = packets.get(1); - Assert.assertEquals(0.7f, pkt.getSteering(), EPSILON); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/AbstractPacketTester.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/AbstractPacketTester.java deleted file mode 100644 index db2cc24..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/AbstractPacketTester.java +++ /dev/null @@ -1,98 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.lang.management.ManagementFactory; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -import org.junit.Assert; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.BaseDebugger; -import net.dhleong.acl.iface.Debugger; -import net.dhleong.acl.iface.OutputStreamDebugger; -import net.dhleong.acl.iface.PacketReader; -import net.dhleong.acl.iface.PacketWriter; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.ArtemisPacketException; -import net.dhleong.acl.protocol.TestPacketFile; - -/** - * Abstract class that can be extended for testing individual packet types. - */ -public abstract class AbstractPacketTester { - // Are we running in debug mode? - private static final boolean DEBUG = ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("jdwp") >= 0; - - protected static final float EPSILON = 0.00000001f; // for float equality checks - - /** - * Invoked by AbstractPacketTester when it has successfully parsed the - * desired number of packets with no bytes left over. The resulting packets - * are passed in; subclasses should evaluate them to ensure that they - * contain the expected data and throw an assert if not. - */ - protected abstract void testPackets(List packets); - - private Debugger debugger = DEBUG ? new OutputStreamDebugger() : new BaseDebugger(); - - /** - * Loads the test packet file at the indicated path and reads the given - * number of packets from it. After building a human-readable description of - * each packet, they are then passed to testPackets(); subclasses will - * override this to perform type-specific tests for those packets. Finally, - * the packets will be written out to a stream, and the resulting bytes - * compared to the original file. - */ - protected void execute(String resourcePath, ConnectionType type, int packetCount) { - try { - // Load test packet file - URL url = TestPacketFile.class.getResource(resourcePath); - TestPacketFile file = new TestPacketFile(url); - - if (DEBUG) { - System.out.println("\n### " + resourcePath); - } - - // Parse the desired number of packets - PacketReader reader = file.toPacketReader(type); - List list = new ArrayList(packetCount); - - for (int i = 0; i < packetCount; i++) { - T pkt = (T) reader.readPacket(debugger); - Assert.assertNotNull(pkt); - list.add(pkt); - Assert.assertFalse(reader.hasMore()); // Any bytes left over? - pkt.toString(); - } - - // Delegate to subclass for type-specific tests - testPackets(list); - - // Write packets back out - if (DEBUG) { - System.out.println("Writing packets..."); - } - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - PacketWriter writer = new PacketWriter(baos); - - for (T pkt : list) { - pkt.writeTo(writer, debugger); - } - - // Compare written bytes to originals - Assert.assertTrue(file.matches(baos)); - - if (DEBUG) { - System.out.println("Input and output bytes match"); - } - } catch (IOException ex) { - throw new RuntimeException(ex); - } catch (ArtemisPacketException ex) { - throw new RuntimeException(ex); - } - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/VersionPacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/VersionPacket.txt deleted file mode 100644 index c5707c7..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/VersionPacket.txt +++ /dev/null @@ -1,24 +0,0 @@ -// Legacy version (2.0) -efbeadde // header -20000000 // packet length = 32 -01000000 // origin = server -00000000 // padding -0c000000 // remaining length = 12 -4ae748e5 // VersionPacket - -00000000 // unknown -00000040 // version = 2.0 - -// Modern version (2.1.1) -efbeadde // header -2c000000 // packet length = 44 -01000000 // origin = server -00000000 // padding -18000000 // remaining length = 24 -4ae748e5 // VersionPacket - -00000000 // unknown -00000040 // version = 2.0 (legacy) -02000000 // major = 2 -01000000 // minor = 1 -01000000 // patch = 1 \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/VersionPacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/VersionPacketTest.java deleted file mode 100644 index fc76c9a..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/VersionPacketTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import java.util.List; - -import org.junit.Assert; - -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.util.Version; - -import org.junit.Test; - -public class VersionPacketTest extends AbstractPacketTester { - private static final Version VERSION_2_0 = new Version(2.0f); - private static final Version VERSION_2_1_1 = new Version("2.1.1"); - - @Test - public void test() { - execute("core/setup/VersionPacket.txt", ConnectionType.SERVER, 2); - } - - @Override - protected void testPackets(List packets) { - Assert.assertEquals(VERSION_2_0, packets.get(0).getVersion()); - Assert.assertEquals(VERSION_2_1_1, packets.get(1).getVersion()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/WelcomePacket.txt b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/WelcomePacket.txt deleted file mode 100644 index 881b5e0..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/WelcomePacket.txt +++ /dev/null @@ -1,14 +0,0 @@ -efbeadde // header -8c000000 // packet length = 140 -01000000 // origin = server -00000000 // padding -78000000 // remaining length = 120 -dab3046d // WelcomePacket - -70000000 // string length = 112 -59 6f 75 20 68 61 76 65 20 63 6f 6e 6e 65 63 74 65 64 20 // You have connected -74 6f 20 54 68 6f 6d 20 52 6f 62 65 72 74 73 6f 6e 27 73 // to Thom Roberton's -20 41 72 74 65 6d 69 73 20 42 72 69 64 67 65 20 53 69 6d // Artemis Bridge Sim -75 6c 61 74 6f 72 2e 20 20 50 6c 65 61 73 65 20 63 6f 6e // ulator. Please con -6e 65 63 74 20 77 69 74 68 20 61 6e 20 61 75 74 68 6f 72 // nect with an author -69 7a 65 64 20 67 61 6d 65 20 63 6c 69 65 6e 74 2e // ized game client. \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/WelcomePacketTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/WelcomePacketTest.java deleted file mode 100644 index 2d83c14..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/protocol/core/setup/WelcomePacketTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.dhleong.acl.protocol.core.setup; - -import java.util.List; - -import org.junit.Assert; - -import net.dhleong.acl.enums.ConnectionType; - -import org.junit.Test; - -public class WelcomePacketTest extends AbstractPacketTester { - @Test - public void test() { - execute("core/setup/WelcomePacket.txt", ConnectionType.SERVER, 1); - } - - @Override - protected void testPackets(List packets) { - Assert.assertEquals(WelcomePacket.MSG, packets.get(0).getMessage()); - } -} \ No newline at end of file diff --git a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/vesseldata/VesselDataTest.java b/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/vesseldata/VesselDataTest.java deleted file mode 100644 index 9537558..0000000 --- a/lib/ArtClientLib-2.6.0/test/net/dhleong/acl/vesseldata/VesselDataTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.dhleong.acl.vesseldata; - -import static org.junit.Assert.*; -import net.dhleong.acl.enums.FactionAttribute; -import net.dhleong.acl.enums.VesselAttribute; - -import org.junit.BeforeClass; -import org.junit.Test; - -public class VesselDataTest { - private static VesselData vesselData; - - @BeforeClass - public static void beforeClass() { - vesselData = VesselData.get(); - } - - @Test - public void testFactions() { - testFaction(vesselData.getFaction(0), "TSN", FactionAttribute.PLAYER); - testFaction(vesselData.getFaction(1), "TSN", FactionAttribute.FRIENDLY); - testFaction(vesselData.getFaction(2), "Kralien", FactionAttribute.ENEMY, - FactionAttribute.STANDARD); - testFaction(vesselData.getFaction(3), "Arvonian", FactionAttribute.ENEMY, - FactionAttribute.SUPPORT, FactionAttribute.WHALELOVER); - testFaction(vesselData.getFaction(4), "Torgoth", FactionAttribute.ENEMY, - FactionAttribute.SUPPORT, FactionAttribute.WHALEHATER); - testFaction(vesselData.getFaction(5), "Skaraan", FactionAttribute.ENEMY, - FactionAttribute.LONER, FactionAttribute.ELITE); - testFaction(vesselData.getFaction(6), "BioMech", FactionAttribute.ENEMY, - FactionAttribute.LONER, FactionAttribute.BIOMECH); - } - - @Test - public void testVessels() { - testVessel(vesselData.getVessel(0), "Light Cruiser", 0, 80, 80, - VesselAttribute.PLAYER); - testVessel(vesselData.getVessel(1), "Scout", 0, 60, 60, - VesselAttribute.PLAYER); - testVessel(vesselData.getVessel(2), "Battleship", 0, 250, 150, - VesselAttribute.PLAYER); - testVessel(vesselData.getVessel(3), "Missile Cruiser", 0, 110, 80, - VesselAttribute.PLAYER); - testVessel(vesselData.getVessel(4), "Dreadnought", 0, 200, 200, - VesselAttribute.PLAYER); - } - - private static void testFaction(Faction faction, String name, - FactionAttribute... attrs) { - assertEquals(name, faction.getName()); - assertEquals(attrs.length, faction.getAttributes().length); - assertTrue(faction.is(attrs)); - } - - private static void testVessel(Vessel vessel, String name, int side, - int foreShield, int aftShield, VesselAttribute... attrs) { - assertEquals(name, vessel.getName()); - assertEquals(0, vessel.getSide()); - assertEquals(foreShield, vessel.getForeShields()); - assertEquals(aftShield, vessel.getAftShields()); - assertEquals(attrs.length, vessel.getAttributes().length); - assertTrue(vessel.is(attrs)); - } -} \ No newline at end of file diff --git a/lib/artclientlib-2.6.0.jar b/lib/artclientlib-2.6.0.jar deleted file mode 100644 index 782ea019da56118918d3762e27e850c6d115bf38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 343846 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

bI z;%=2gu<__8JQcuYw{3HWgstZ2OmZAu#Y2|DL5otTyPPp05rrLzL0@f zI0;@sBixig6PZ9W#5_uOy%}n056e|F<)#=|1v4X1S)^MRTy-uVO;CmT>{olFX?MQz zTqRmz)1s`fRn9BM>Y0j?SVc}39gMOe+#Wh+ML8)oVWbT60ga};unhRK$c(<~tc?`s14H&o8@A3{{Z|No2g-xQUG5|$YJCnye8M9h>;^Z|&G z{SXBbG(jl)abiMDKseTZyohF0h)G&CYQ59Wlh1n?_eh(hEJ=lO?tP+PvgFe>A$Z|{ zf`|Of3eOgg&y@Ms`&-)1Pwp7Jfwq7>@bd)l143KLHk5vFTe00yb8w@{=&(6|G;|US zndfmudaiLzCF(3w#=%SKA`a5~Nm_c(ggG2hx;ug>gf8fiaYVaf^b(8;>1)PuVR5^R z2vmYb6o@KBX9z2x9^Wa{c%;w*P2i5isY;EXetw3Ig85bkL-JSZo*HU0L`X`Cp4MB8 zHcTexfMkmb0L{Yu0zhDbdC_6`ccm(i#{~lT6dcJY>RX~jKw*e)fPS5+`6CM_%{sfx zHP~bmrM;&x)8brAGs#k>a;kG;a!fjfNS-QnjECH5YZ^;r#YY=J9$QhgnS!w4I+it; zIpdboDWcisdnsm9UxcfgLPl0!69@;aW^4!lhe9?a z$h@_C{A<89uvV&R(yO?^x|zB{a`IQgJtfFwkCo(d!pR$If(sPY@RQm z*3USg6FIsLH;w#kt=>XwN(LQ*D*_{<7_la{5-%Z)40^WeWXu)!b;(C)ek?5sdgFBU zw7EbvW8pb+c{g`pVs*xb`ZepIN>&z6sS(l^@F0LL*u3QX?CaJ%fij zraMLtyh(8BAMtZy(Y&UM!KM&-W8VlQ!;AI^+Oy)wcZ6$%ExO0#4^EP-^Z02W3dYVs zB>!dlia+g)0`+TZLrY1qb?Y-%DGphi6HxP8jk2XC>v2bJSFfxOBsA%$XjnPQucCUr zw9GAec9mb6+#A1qXtH?%3_X>#JB8Oh<`5r5MUbrZezUD_WihJ4I8DHpM_yy}Ky1uM zOUD&a&xupF(6vB0=iZuBhF|AdjRMk3#G;5IE=mpYic#&Nl_oWoa*t*Yyb90o?>*e? zcy_!a<1-I4ZJzgq6lW-vit(;5D_wuy|tk*Q4`Qou^(z0#CR?4`WaC$FWGa47w@|H z5ziN^H{a1!Q0(P9u2!$v#mUn^<3|)bUd?*l?F`EaynFEO)iL9Eo=~|5mH|bWI8?ws zBS+Y%BfH4+Lu~yJQYs?t212UW0Hi4;Pif>WhL{msA1g9aP0=oGVRocTY>!r9oA6J* zkP~nig|$TGCJ{=lP|1;q#g2Z@2zpP@t>nmPE_YP59K*-_6{%}6$=Kd*)2uIlzoruD zbx{{sGm08)OY*X1>}d!8I3?NG;$Y$v9*GPh3bJve+~UOBBwSvhPNvQ&&ZD8F*dN0z zLJ0QNGS_P_>Sh#GRLSj_rs;8+#-ET7nzFQ022S^o3{ zot|(eKg_8^yZah$tAk`Zw%ONXxzPgUX2FBrJFT6Az$Jf1cZA)(_(4s*cqhRreDq=T zZ2hdk4@(IS%?93IgLt`F?<|CS>zY_K1Z_Wz9fLKYL$zydE!|TxV>3-%d`-eoXIonzlJ?L~$?ks6XWI z4wG2hBcsrIo#{u2Z7Q@4cuN^XYp9}|*-}c=Q$ZRWrw$O`*A5`x=MFI6_XG}mYZ-*T z#12s3>x6I|dqE-`zd_zl!Xei(@+pTi@+pQh@TrC~@hOPY^Qnk4@+q~AylWE-d*|yj z_1^AE0dI3qb=7lQgc!B_Truu3>_ekKbvmjLG<9NXwb<2eO0No5wL^0(+1Dgbq6xlE zmP%1XF~G$9l8us( zI1{N=vF7ZeQM!z?)pVvaUNA+2*x0npPQNggLuz=fP*? z&1p@yW)%xswd#3CRZLa$ibBoelN!|un|fArt&rS~B74V}Pj+v671@q6o6_ojjFW-B zy&F?onPe4*rXI82d%>-%Z%ulIb&3V) z$`3sGqP0NYwRMMDmCbeZEs=Yp#h4XZo0P`(4DQw~RW9F5vnPXqUacrz?~pp4=aIfy zD7~RDtmox0ldggTMp2)(0frHVX@-7;XU|dZMp7QMHuKC@611USRUJ`RX2vl z`_MiTbaOKzGs18?nEvh}PSQ@=PJ&F;92FcT95oge)8^Bb(-xx4CoFZAqAW(44pYIV ziuakOk_)Dp-CbJdB(}^(5Gw||C=EoypZA>fzQTh{ZMcaT;!3RJ09H&tV79-{2F&8k zB;ZdGdEc>iTi$|#>tHnspN+v=Ox?7Drgn0VNP@OgyxVN{_8W*y+>ealcc zWL1iiq)-@5h}PE?I{PwU+!dtqQFGM04iQaZ?-;@wLK_*vE5cH-Av#2PLV*NWCok_zpBxwbeX;C(I{oDei^t%<2tu_Pt`tA zAg8r{l|L-Y#%bQXAOpL8)ifHgBTEG)z-6OYk;LC@3xwhYJ_Y-TXij%U*2K;(e#^lw zZSG>9JbS#0Ua%#=*Y8X(e#^x!0nW}Y0?rAJz=;iwz=@Mhde(<&KG)D-XdXF z5Y~WGLq7+__lnTx0dhuinU7YS#Hxh03;=tw*aXJB<9XZ%yBrj{996>ZyI~LKvq$%v zuexQ6#k76E_=(K~yVvG``7uHc8tt*3Oxq3NEM1{#f)MarOqQkmW6(_A{x_4iA$IRz zp#h;M)wOonzhiS?alM`{xBn#o$Za%R@$M(Y!*2TB)Z498ey z%>MgvN5UUUfiW$Sl)Bdypfqn5NDqJ)M&(HOGw-d4Nfr(i`KN$*aDkDVX#Rel`uDAp zfTx#0rW_amD-WXHL!mfPJP&4{#Cw`w9W;;awjrPqv?srSHIvqo{$Q>83fj0@u%Fia zR^$Nb027ykH@i71A)`GyXQGr)l@V#2tKE<`V?sEQV>C82s1ihZf@^0SQ86m zm*bFRZbOt&3(KI%po%2Q%!llpt~gq(akU6acIvTSb~rLB#%?Vo6_=JKx$wxz{L9@i zkc>qkmn8%YO%_CO-_#l^M=b~MSd4uJdW9?vVwy2+8ld4EiD>qok`$(s4a4)pJpn34 z-9se)cZC`>HY27|c zzSNOucSuNl!!y$F+QqH6P)NN)8>F6h+H4eI?q!_GT6X^^?QG2=Vn%aZU|ZJCY>_W{jv0>h(2hPe=P$WqY5 zNPty!ZU$#ZeP#w;PHe5-#my$;*sEIEV@ev1WG=f-f^E8k(GfC3BJGdzP2iq^3g=uM zEA41t#Tig04hluL)*ik&ut91qmqJ9HWJkps1Q;*m@}7D`EOq`gLi&epoYg|HM@m!L2~37v|NzUI7u%_#sppLbSwk6 z=*DtKM@wf2A1+)SgVgk9nes3f?x9s(2%H?AtGGc~laOWm`Nmd{&|lCmP5_!WpTfBa z3`u^i4aPcGxkjOO5bfAOlc*2dE%~DYBbBH3`eXe{F?T2LP@4BWP0?e6SzT2-aFw-B zZH?Ty*Rbjv*!u&-y9Y+k&IM7Wj5yZiee>Jz+m**xAzxW-VJES%ogQeO!<%i(WQC_m zjo!!Q7{6M@Q)S42zbKhLl0@P$nT##bs>r@z_v&64e{Xhcd27qUoJ+QxP+$nUJ7>%v z*|2a3x~rl^5x7#G2@uZYcC<#88#zDTo7d<%>r^`Pgu}0pgbVUI;|d{wS7XsNFo{7K zxI@`q5~z5Nha7$<#Rqtv^N2 z%)0P*T-e&GZS`mS;sXZH)4*WAMy9{=MLX9%&|pAw3yG=uVhqwQdgsdQyBB?NObd%z zqDv_ZH&3h{buMat;Qi4X!WBrVcZ9}oP(~CY;)qkQy9*|+)>ba zCw%4Z$5O7QZ(U{XE^x+9y0*GHgYC8a7s=ds-{6wmFF%M&mYzs=+bC% zo4nUOSs;JuhvKUE<#r8J_&m(+x^6rSNB_BORIJOGapSvIq57^>{?qBAn2D{4qlJ-- ziIe$1YnGD#QL{k&OtlBAVMCs^Jgk)|-W*^d7y~6!QokC(A(< z&aCbw@pQ)vFV^%qbgTVVFM_T#>=p~@(wwGtHj`zLTCN2-mLcWViJ#M0x75>9wa#@9 zDViT8%ls8A>Xte4HMuF*idCcjUbe)j47)KR)fFi(2}8&=tOy#i)U?7)=RLqB%lZ|6 z^G)q4OzBpr@uI{Ipp?xCWmT#x&cvNJ8Ra<`6P{K8rbTk4cs;wC)T(?koS z5HPWN>Z`ca9avJfj=>lf*P1&euL19wHu zW}f$#k`8x_*K_-X8Tmu8%*&~z;2_zV5^Cv<+lD>V4z)jfAx9-gDMu~FT=s1CV)lIY za`s&IQncj=^9l1o=6$9a3mP-cRPb@(apEz@l*ttFg7uM)h}v-|8r`l4x_iVWeuAGj zY;>NyD_*UZF{mmz)nRtrtDdmr(~VdLc1?BA+vyB>FB}^jxtDPtWr<%I*1USsebWbd zyD*#f1C)C#?uHW@O6!+d8`wpctF?F@G%~HyZ^_@j`BZy@Z@wX17`JWLf?EMM&=Ea5EYu`-5J$Fei10M!MmWzv?>hlnc_uaRox z4UIkD1v*#$%X|$ISMlntYE&+2*P&{J3-}9W82~My$h2ma0bn-ezv=)$GR;w!zbw|E zTc%kyVh#Tr`8OlR@WT+;G-)+|m7-DOvT4=HG)jHU`XgrZXcmm=%vIikWCBN7V;mBU zMRoole_4_e%tdv+SO^A$b6Ge)hz6uCh!yCnu{&52>??!}EGWbjtSpiyc5pQpy=_{H6Rb@GQI)w< zv!ZK0rcZgn%0{tTU8-*651TqqZ82cmd<3?+V7$3#E%SaJ%sa4{FC?!!wA}ukRkJq0 z4*0G=01qq%iQPDO&USJ)91snAfM{csw%tNUM723|-_U)g2dCRVYk$%EzlTWIR)Pby z-_=U>ceV1L3WNU7x%uB!3xvC}8p@{~qZA`IK7T%_6tE3Y(yvl$2}lYO2&Qpy)J*7L zd28XRb48T24y&!F4z#EB*St4fP~$%- z$Wu>KeqWv0PS-pqoAz%9MX#7?*Gn)a&i~ zN6SERk=w`g-Gk)P-2w$zeXtW()k5jx>XH+!NIi+n`vCf2fY>0rgiXJN(TV|S5>H1! zY*1Z-yD30*i0;ki?IOD@4bRPtkDLMDzlRyvCbzHZGYDXV=+ZFVLF}_}uc~i_=+f!9 zfq#@WxIuih4cPd#O?0a(w?V*fx`_E-HS8Z;WzZ#5pNMdp?=?sQ|zqmIS05a7Gze>rv!{f zYZcg-dgrBFHBTC3)={V*s+$8Em(>Z0P=^FsbZg{Uka8d`6MMn^z+O5-c`?7|#Zsom z)y9jHO(jVdnM$3=rcWjnT@%X0ein~fcd8qF2qbR94Osk;0K{JuVGZ@cZV?4oh=+A^b#=FEl*1J?ddMMAC zlf2YOdT7s~&b<`3Gy!%{-eS9*Ks$p^CJS-s&p&<5cf}YVjRNv^%RqfeFHeAa;h#(T z>Og#B#NMA{0>tjLfP0bdcA(yW`Z3>5v><5xCf=lbO~BxAwNpH}uuo>Vhnx65p&5O6^?scqr6KT2-!;$-CC&s!SzqqKFqr z<+O3R-v~u4i=$!cCGBpuIomw#a|XB(>{|dl&2%Ze@tLypl$}l?%O@H_xh%&TNfXP^ zwbP9(kd4n8_SM2+f72*_b7C%9@@&!Q7;IauiR&%P7K^I;LAuI2jrcc8^0H!3ZP>&z zP(lTT+-q{ET_P(bRBZb%)T3enZl_ltw{Le_Qq{wXs-@H(e`ri*PRg#TenP`|ET@|( zndxNlU1)Mtwbqn1mZg;$pQQz=+9&I*10#$YOWAo*Y0wYwtra1h?WMkQ7Vb^cctcNG zMhwY59n0ezUN^pqBB?s2uXhWG{chflH;eILZJuy>(Wy<+@f2+`%l)JI(3uzH|4G|s zv80@?nlOOKcl9J_4a*+$tYRMgy+eGSLoVEv%bsu(X&P9ufXFtRwR{4a%Cj<5BZq2P@7k5|)2X*DG>XE%b zNGoTUnX)_G?V)@@8QR5}S#CcavDQ9i_t-^K3T~OsdCSD+<32X6#VySP&d2~{oxq@q zQZII8^YqcHI58FTIDxqCLF7t@>G@{MwvC#k)*i|es@0QjTnVT5Pv$~wnerjf>ORrn z*~#sr)o2;$Clu%fQ)qgKM|v3R&k2SI`dSeXHhLV}y~vGp$W|s~H~EV#=w%=1`JiOZ zad@6+bUnn*mwvVsFrnZ4+9^irI^a?&3Pr&!gAjRGng$HkX7<3A5U%-og~?3!Gb_@NSBtIx-$F zZ1>7r!09VGGhG@PgOqnB;Tb}{6%$fpYMouoVJy-(F`*-Cm?!4hRRC!tj*{i$`q+Ll ztvoZBOqw|>+IjT~hl&xCA>Ud{?&zbx)>*dMej1cvFvVDM3#Mt0PAlIe{N~mcJcGYo;54rV?+|j}%7(4VsVh`s8R|;xDULm; z2C~q;{sCtKn^E-s_-0A$ze}k9)UzgG>uh5Ef70M`|5_y0XtSn>^+LY?gr;mmVjzGg zm5B}nAt3@>9ML1=HtK4hPSB{7;#VR^ocRp=t}xQM5JNar`drV&*@OaI+4-F9;q^h&n{wG<`i@vx8NrVD6F;nN5Ze-IP-?YHLqHZWVZ22|42? zJ-v#yl~L=YzYuHeI}E;rQxmeK%q{avB-gFUUV%}5;M8}>2n9#$K-yXv8H=hgZlscU zeNMJ~h1-`-+oxMZ<88p^eig%OKLy<~#`GlKZ#QAT_#h}aYdg(nYHM~LbsY@>i|T9o zbAZ!2v&M=q?o(5NI0XAv&0+II#TFgDYY2a z$I%b9ZXpD&&?ASFDJX8+I6sb;4V2IZ6rYTa$%W>-rQb=H9$h>ZCTee2!oNP_qBbrK zVMNa9DmhrR0&ppTYDz6o=frUW=NFXf>6jtp3!akUXm=sItB8KYFpYUypgMhf|Es>e z|3bGf*iWw*-|p&ZFXsFbgdZCJ?g8T{F zF3kwd8WZ0V2uYKwT@0+6);y~^AX3z%FBr6VLCg^xFb-|Sh;T3aSx<|#Jm2j718+pk zzI`U+rv`Dt&^tTFTXuJ^o!<2J_aoGgSLEf(wV8dVB=*RcwKwq3`{ zP!(2frLlg4zM~e5`J3EmC>Wu zhyzU)ozk%|cT>9jJBC)P&oj&?=%nmSNw=3|yNqRxZS{~nRXrHc_^)3Z$Jdo6%vsrr z?}quA&{|<@B4^WMaZrXD#%*7G@aT()3yxLZgUEFB4ttNe;0lA(+X}ZOp*&srqm0Z! zKmN6d6LWirP4HQ@-wm@zOm+~fZ9Jd5HO~5EXjwnMuprU{CMjJ}e&O3`QxFRbLkfF_ zVWR?Dc0V^Ao?Ye+Q}it0@B!@YFd1{UKj^+R7^2?F!6h!MsIi5qwyD%DYY`(m2-| z$nJ8gReZ-PAqQW8W6$#jC7M{UgRspdQXF(DWx*>`CArhbjz~N;D|-)PkL6YjI~DUI z8YyQs=dNG2z}N|ANS7d2s&WrjG^D(HV6}IbVjt`}QO*e@gH(>mIX6X^0x#P3c?-8A`iA2Vkv;w+^I8m~!*KlldHVWRU;PKm2>(qY$eI|sSR4GavG+e&N9fhI zpv^iga^RzL(%6Z%X@he3D$?R)NRkp3lm8|iNB$S-IFVcSZ_@E3`}6(dh|53B9W^v~ z4gC0LSsd|1AI%% ztaG%hL}nae7se$ImQHkpTHRb`_6^?E6N~cFy|3%ol}$z*tM|Eu?r|)t$=obl?#2pf zgHX0>cJ)2ZD1H0?c6ZXq`0{h^0%cmZ4<3VqlXF z)=Xv5=E`3a(t1!sSWQf{5NiGwLdplJ2cl8O!tWQyj5o7T*(BZ|uD{$j1+J-E7Q1+R zNmJ)0yP9)a%=;+fp1!mNMvRq@%^uveyPlr>xSqVU{(OB~+4%{*U-p9(0jd!A?#DU< z$zC%)qB{>bT`BOXaN<%`v?8@>*CDC9U8>CXZa0VMeKaaM4Wp(ZU~(Vxrl!6PcL=6y z{FDaOu2KE3?B-AO?mj4!o`l738g0s|vfzYJQZ&jsGt|TwnkJD!nx(-eU6VCYae+i8LuIni(p9ld;pdmS z0G)aog*SPZ@EvJ%HKjeH#_W=^1yM~Vl%!@+&PZ{BLKDd_b^W!iXN`A&I5h9wo^yS& z5=|lhHJZ?#(E^-xL+a}4B1ox_iUK5CN;GDM3gbm3OBtmGCx^DlAxK z^oDN!J-GsfpQxuy{zdql&xUFLw-mpM<7>izw7b-_dhV;ZezM@yP$~@fMzm;RZ4}Rw zgN+eIGjDI>gASuMzPx>jZgyx`PpKt2yfofLn$BjnXdMuJ{AgmoO`d_lqPrVvwYmZ1 zb4gl&Zv=C}I52D66&}w&ieQOvAQTE4^ucP<1*Ig4kQ$9xM1#7~MsmQqopi@rg-8GT zFQ)ODzGGtF2sLk42_tVWH~5W_cNC4WXNU(w5Ad&8!*lAe8+Fep9Aivgn(>1X|41A< z{HfpkCmK3Oq!hDGlQfADhlJmy=N`LV7XOAXTS}!$G&=yz)=n|ty<+v*kdbm$cM0Sz zreacO=|kCM*k;SueFb81j^E)OQNt^nq})yj;xP?XX`u?ZYVaGn#$krxhRwc>dhM{a zz5tpk_{iyeYC`zw5JQU0HNqkUfOQNHI~Zyx*IY@r&fXf1Y!r%WyXM#Ab^=IXVktQR z)FVfI9T`N)<{D2o7ugHsvp+8(avOu@J`Tc&ZP#*s3V5NnA&XT~j8y5J289VvlTJY) zJf5^M%aVla(^M#xR-RuUu1GG@H264@Lui1-{l zEzQ9d6e=eGS#-VO=N6s<9$-2BiMGL=JS>RjH|h{v#WDPG57@kS;fN@U(9G}0du=9g}RGn>~ zl2pCeDJf)!V-eFLnt#S%?wZH9)hSh*LklDsD_x#}xG336J#bp++~p4;sT^v~bjKQ& zEtNg@t4n&(q&ohpKBo&o+nMe@ymq8F{11=cK-M|Q{K*9S@Ms?Cbnr}DTkb6rtu67U zWAB~D)>4+Z-BuA>(&r{_4&oo~qmaWtwgA~xZm_+gp<{YWryJKc<+hWEJCaU#j|Oxi zIlQfVl#Y-x-$ZY^&ek?zxweN-+se_kk6$pW067lSlvUrZ-yRilidxzZ2f~{zw=QXO zuJ-6s6_v9O-&!ips0}~$krM|C{ z0ogrEh|Z)P#igmQmI2&77o=Clj>_ujd+q?!40p9{2qU zBwG3nxwi4A=pN#ID`Z+muTtB_AdU!{heCi>hp3`M+NX{`gf27|WvD9>ORBXGh)W#p#L^536+{T@`s zC}UL=Q!5`f+b9U{Eoz>Fo#k(t!D=AN6{VZA0<$O#OVJmfmUPWVtH4;zQUs%Np& zud>y*`s`Z{45;yJRAHmn#feMXF!$0V>bIviZWYbssmVoQb`U71nYCqWg{e6Kv+=8^ zp>N`DSvqLt;=FodK~BeFZOZK&K{ChFq{jBv2y2SLbCwBdU3hhP7Z(kTV`I|#AquIqvO!n=r-HqTIi=W zXq4Nh$XPh4-@vzoVs&;bG~-h&hcc5GV)k-z)K2}5;wLq_L$k=UY^>q_^TuQ^={Y$< zW;HRS2HPRl=6h61ECx5~8jCDOCx$1+Hwqh@gWbvQ>U6ocIsu3~z=-|824jbH#NKD0 zbO=5mA7zL=z$RmtbR&cA7i&bDcqPA`r5h;GX!jq!;2i1CPZO}}Z;HeuhohdbCE`UaiHuxaPscbmUQ zFgO@01|5fq%fxN#K5$#SM=`h%Y6d-nnajj&=iYx?xJNQL5vm4VhpEfdW$Qk8OR9u+ z2PNv(7X$4Lju#pd7cWEfhioC>FQPVF{3BsT$O(m*q_ty>3g!Syqp;zI(&>0n+9yIvqSb~c_X+C?1WaN`aU(Fo%h_;FMW9z|j?;j*Y`gmD!@55kvMgI*v2 zp!9$paQA93BM2bOAz&4#RyT{3LCz``i;zLhDr_7ojg(nfGh7&!d@u)K7&5uUs#mCI zEE^sfqIgEDm#k9fP_b%NOP)liL`}`T7_t~Txdf=!ta9_HR?AxV;F7iQSL?>1X_2>x zqear7TFr_WN)4r+Ll{mBrCt~^#HknMk}nf4SCd7o8Pa$*tU>}(JR{T9E+KeStW(nE zl#`ls3@L_iQ(l4o)W5|T+}!J zTI8s3ANd)?sK}a?#^H`3)>BGAdaZ8?_f)~nQvF5&Ueg`|Y(vmq0<2@;o->$HpurJ7 z9s05|CBD23c0goEFfQFj&79>EopkFaIlz%&Ff%Yi6-BZJG+9F~e?T)z(u&Ab z!zbMaM>NF+VQKk3-DpcN#s#i<`6At{JB0H>XR`G(;umfHHVY<{&anDnC4W#Au9P;7 z`Z=UQh80h0r{}K2l~~aQ^*2gw3iHO@gWnZmtLt(Gz2%&pm4^25k4E}#3|F7@;|6A;+yLoFZq418Tei*+DOGrbr(-1*j4n-i5G4xCPTuU`X&~hc_5GWQ& zIYJYOpvKUc{_z`{E4bSYoD1HNAA~$WQFMY_UKGQ|0*YqKt2I9NrpIi!<#6O^h3|dq zX47rD{UY0|_I=(=?vkL8^V0;vCn?uyw*A2y!lo3B*>g@{r_hdTOq4EV*3%PXp9)?t znfN2&ftn0K@ZrSPdFa`JMR$Qsxcst{(x#6}k_>pXjHGzh$3vA2mOWKC3=#KI*qT9!~eX?-&^M2dZJ|Uwtuy#7G*)G3hu^ zW_DwSC>Gs75g!P9=w0`(03S=hj~`_vv0BGW~X7@ip!KUAKhFls9` zZ0KX|U`nBHf9BE>p@6#$my~s}U_gwj1uHR(sg}`nlae}RfA!AD9G8g1G)>B1VpUf1 zef^R2B=GR`JdmbQ;jlHV8bl~+A;Q)$EA|m>(+aJfR$%PrQnDx_TP6z%*NPp_6MG~p ziB2z#8*a8XYOtbNSOh>T7!Mg)tciqKew@(<@BaiFoX`(y1{ASl^ibI#_oCAMq6Divf7iNveO=SsT4 z|6?6VlPxKeMruo3Oc5Snl$UNA?U3g9_YaMZtlHI*Z_)TVsD^MMTOmO0z_rxmD{gms zx>)}}yA(Ly-D>b+u=%duywlj`&v*|pVk_;hFut|CNc8LU4xmt*d+b$<&4PQ!$Fru8 z4^AC^G)A1B-q|$pd5*pudd-4+$@PkR2<*idVcnAZGy>lcxp|Huy(JE4Kok+DTM)*n z77XeyEnw7xX3n~UwrL)Cr0m6Zv|PE+^gvxabQ7aIQaBL-f%Cbf8xU(oVZl=$2j>!_$Ckcd1B1oO>ec zQjI6^jIZs9aimDI&zvcjm-1MhdqV4$o;h>AcSSn)AV_sV*f+LcYB~3y6m5dux%RR4 z;rL(qbNzJtc@4TL#KqF1cJlV@n?qX&<+9xmXa0`w>3Z(W;EB7h!wGjgh#0`hHxPH8 zy*KK-Jr#HH4#HP)ze2$KYjsfW;vL#g=)~;E`X%c~YRNq=C zp%XlPDPQns_*V3!Pqi*%~Uohdvkr$lFuZY}J%K&kC@91-Cv=ks7+bGKYN8;>Ic3nR;7vXguEb zp?aiXhgsJ+MdF4**{j193tF|RyK6)ixS`vD4hDmz5=c&x-PV=;?3=%TL-IXLdR|ZkIeUw=cXMwiAKMbfJ zHX}83jwhlk>!|-MCHyJ%(;fSS;%|U8q12#2k|fbDAq9&_PVRtGR3}LsfU|Lo_g!;q zOQzVV)QCxfX4J&my_fKVtqJoT2Z`H81v`ym3TUWejf$K|@kp~5Bq@)_lC$c1fzB{3wutVqK zumC`1mU8cxt?}93Rpp2Y=9MVA1|8Z-d$S|XK|dMXaAxJ4?huD<70I@9FmLYFF8#;4C+Hqa!U=+}Qvg1es>c-&HQDZrX`sv$a5Kt#p&W{|{sD6eel6t!Y?l?=M{HU) z(UP!rsi4cfF%6oP$!6zt7lgNr(guWFneMr-elFf2-mScUHT!wg&yptAJ?K7nxL#s3 ze-m*Zx4=UCZEQLAovX=O%3DtHWeJ7E=pq#LqM`b`%pHeUGkbku%iI!knRDpk_I1@A zw*}VB-c>z~Qk@BhvK(Py=<_B~Qe$9fax|OIyT8#VX#OUqtHS!ty>fQX0wOr=nHBZM zk#Xlsh=WFh^XEtV&om zYO>B)qitG8t$0$qx=Y?>sIU_5$XLe=hq`EjwDRrrXde4kMpZR+x?iJ;YD#{d!rbY4 z8Q5B!%SBnune)D5~MUmV4IoO>a&Kx41mpFV#->UgQ+Si zFvDr1kl{JcOCTpuh-Xo#3H%sCRH0~3dN&0tI`5IcaQHWsbb z4Ey2Cy@g+v`=EO&(k{*cTNHC@JV%xI)+O2k-Y`bJlen}cBFtb-wk5MsswPrd%xT(D zc#^emii&cT1cGegm?Gk0;Rx3t@`C6kQNh$6^H+RgCZ;?6PrGb$+4>`6GX*o<$gTO2$FDc$(-obxKk(SH!PP|_>@l=fjg6weuu}nA4 z6UiM>K${5`0k{5DufNCqj-r16HHWlwVxKWkl-j%S*4m=bd@oo!ib+zsOoT&4Gu$Ci zlxC={e?{%fsoy~5FOX4_ocr=P^@_MRL{tV6kA`WCc$NSXsg(*UZIE@4BuX>+BRQAO z9z#%-KUExQv&2UBdw&1>e)xWPz71k8+VZAhPiTd0HB{!4)vl=#@v6KJX+goH4{H7W8ov{wI)!L&}B8n-A? z%~Bb4V`zW8a)>zq6}-9c70sE5J9r=8vc=Ha&y+_{R*V$6ytSHeLkB}j(eA5IL^owt zgfC)f$L!gpkf>PwG|-rWQdS+LjQ=y&6=fz7{|rk#ez>RFnl5qFH`_}%%|;@{sWGPS(I7k2VCw_rtb){kHjpr#4D zYFvCJuL1UrCGP?Dvf0OQGO^V);zV90A9$oUxqBGnw^Bx~$qZbY7}-P;6E0=xk!wj~ z%LvR9)LV|&G%4&pf>WRB9Jw+s}~@8u!4o zFm$z$m{_BLCgUL!bzatk@m=X%n&0}4n@9AJS$`Pcxd^KFIP*BwWpLw|94%=T?_|i? zT%_n&1%ubpVlP!rW=EC;v-fBsd|lZxj+s|k;I!w0C*Y#kil_k&4pXWEk8jD}>yS_a z+UN?amjUwq+m!A_`?NN=wuSh)=f{74(oA*|bHIQa{y&1Y|1<^r|2%1BTSGlZfVJrV z)&BwN_!j@0G!t((gKlP7fA?lK*Dq285tf1wGvg0c)_{4nW8frJY~j>%&VSZDEAjW| z?ZqS6&Z4G-Nsfi%jNv@VOk;Ps{{DQr0`nC$Rg&v}f@h@!w`Clxf^QM5WSF!%7wY&I zY1SfDh>ps^A>UCjkX>&hL{~hjFd~NF6123&1&6xDR|2sAb&DYywdltchZD|lgxPap z4vrIh(Hc&MEVB_wPZrgM`!KLXzgBGf#b00jMwID7y$`T|3ZYr=tl5l?on9rP8OC3;7D?rS9Z%IW4D&16-=hr(zw!CR!TVnVk^9{7YBH_KkN_e_H!K6?16%K%jcAc**yD+~wEJ z@+v(fSrV>C(GfkR>bS^+THaHHPR<^p_GP_^PMqE8AcbeD7ts)xUkJ_lF&{h|TajLM z1S;El?3afVc21UEuA8V71Akt+P_<}r>mx$e?79QRS0)==_*;CJ&)CqJ-G4bhs-w^@fq9Cw<#X!6kg?eWq-%|bTF($vlfp*78jnT^^OB1`W7r03|D1Z!rcMR&^ zmP^%(`y1<7a*4gP)Y_ma(?qWnxTGeqEXu4=B9&wHLWaDBffG$NCNxPQx-UaQ&k^tZ z42`2e=zgOnVMe79Hy`iL5Fg1&Bra`-D{g*g>g*-AJRiQ?9O4;1)(H~){?_$7u?X5K z*lOiE?w<9l2!j%e;jzLji_~Qr9>v6J-O;R_A-`C9K?L(C9gzqGcNtYQF46C}wSx!EO@ z*)b!;n>xfyvsC60qybF!P=dYVwl>yo#FRFbJQjK~^6S%Fq?F|@IF`tXFq?&RuMGt~ zdy)d8yhFa=oDuVM?Xcc@%tRs1GBY!RLrnP{w%scHz&N|=Z{PU`62$Q1u!*xqf!ncU zF}JKm^Hp;o2S+HIW`<4Aui#VYX3_n%0z(IME^so@rqFuXBQi&~x@BY7z(8UJAaAn0 zmsjAd_zM`{4R+ey7{uT^vi*)g-UB+IZ^}KJSI!(yzd-PO#BVTWvJnJV%(?5V1dA7Wv+f;yD(WHe=KvKl*4keFGIw7pOlJ}1ErmDNvtIv zcRJ0izB3Qkz2hE;u4K&;V-J=lZM2;Jvb8%SBF{`lSSIz7f0Cv;=dTstiqIWr^tNR~ z&s!O)jGUO`UFwrDhI0ScHvGUayF}0#q~i^%u3*>DETbv}!$9?n1cpgx_qbxX{VI1c z)v(9NlpL#Wl%P89Vmwhdc}=KilnUh~h)B>>?T$vAX&qCio;!jNgxt_jZDVctD2hsp zym~TEW$`ILz2dgCO59-tn#_kIfhhfSaa034C91q~elho0Tw-N~NSjp?dSU9sBtw|> z;r_g7dQDnWEFVI8#?o$Wqj1#&G2;S%TQ-yMVj>@Z@&r-A?#ZJYB#Tm!UNcW6BpDe#g`F&OR1$*{nELu;9EFYpt`%#l9 zNrts_suOM00gv|d9o)wb(5^h-JzCvZ7A|IqpI7NY<*2gz`9Eu@R*}H*ZsisZUJ$7| z{bY1|FJRt)vJ~gNM|s>&nIL8Sj*#s;$3kTP~(10RQ|EbTs9JuZ49}m@zwcWoZK~Ul@u*fcq!i z@}3GbkeY8&D@@A*>r{i85)hWk9bx(~SmfQqX%3}DfoxLSU12*HFPRr}ahZe>hgc2Ly4qjBB{e+D)R70E*Net%R)j5F z9GqIE{#Z+^AsUW(xIC7=c$%|OfZrGEFCynus47Wy<7*t)fn|2;JBKxtg}jS!UgLX3 znMR3VtJI5r+F(%Ud!pMXkX{m#W{K$%OJiNIG-wDEk5@oJfXeZn@79WP*YLLO&{V zxhC#uhlE!QbbknZj}D%0y4LHg@G`_E65(pd*&52|JJ7c!^=HfLt#cx>Ee|MKOud2h zNk@R76Pa$p*ey}`3sj`l8l0)+ev{3Gv@VXU)65r6gMv2% z=9kRDSw%{Q)qyGHXcH<>6a6CmObh(N#^|0-x*d{HM`)v6fNl|!u8pAuQT0{-#2q9s zlrAn5o=%vmQC)4pq4=!Hc0~=mXHhFw&DgOWT-gJcM)-pocakXWsWFy}u9xF+vnjF! zCanF2lwlU+Og5a2Hcw}=rz?#sja?CWXS)P^%1$gy4Uq@&M0z?|@ATwq<@x8@UVP>r zL+2bDeWwfDwh-o#D`Rv9>e?1)S6{R7tbnIw7v7S|n~ejg45m%mpb8c!^jtG^bHeE` z(3~{JCH~wr&|EdNbHeE{kh~`76>)nJUn5yS7qPpD-)NGbM=UPVEwUIV!|i;(7fAjz zbi3Fg6+Aa%z!&j7T4=kp!`8wSh?Lo%cEEe^%XlmJkjL?*^0$HHbwR&~F@FnVdm8)p z#8}JDcHz$-X$LF`%`-dRnx96OlC)PBappz;(GBqk%SEfjO_}o*Jze+6oc0Zst^|c` z28n8d4-L|8@Fh0+9HG^1$zyD`+D>}XY$nX5s_Am zW*o8|wjZ`-Wd9{)wG77BBZv%fB{mQm)<@TNozxTOcS%Lfv5klXkjd%*GC2hWKqkxo z?tLrs=bx^CM9f@421r>`?jrrV^ueh$NrJ_u0jToOa)fZh=SkhLVB>Dn%#mIZ zeOyrhf(dhD{J>d(Ik1_5NdzYA)G?{3D^_g&L{QZVMk?q4P_kA53PNXHi!WB`043`c zK*?(Ot;V~gtVuSbG1ibd;8;FvTi0oE`dodj&J~U)VgHDfQ1gWnY_8RaUC}r=YbS}? zwn%$Li=)065NnLX;a+wbSHc%hM;;M;Wuw#6?6O3WL%p2%jd+B#yjgFOYJn=t#7<51i#*YwPlm`e!k;jn;m!B?#2lfjalnvTm%obfBGw;ke3HmAc ziX+iflfkJ9c;jQFxKCE_Yv%AYUW*sR&S}1-3!C*p%%u4A-DwU7&Zymu{)b)7j2F+# z2iNXH?hHgu2%D&fYsgqaAiM}YXfScvFM6MTl-iln4xwEnieO|txyqn1Z)~LQFY5C_ zOF^o_JG#=Iz(LllE}q zQr7YRPs*xqzY8?ZE+7y{0>F_&7oq0Jg%srgKGyttcp8Dhe@R)_{vRnTN;?BcnLlWi zoGyQX3b@K_CCVYBMx(z1e}ziuyb>qEl#}_%ACslxXa!C;UCgpU+n$UCe*!}(+ik1G=Sp$e=24De_H}d3j*a;tYv-1Y z5OWWGSq~Xm-WRY(fc}%`C5u2K0EC-6v+X9!#qGLlrt4MqPEd@pnII?H&3WNQV0}J|0Ws9gg zn9YnCR73)Lin>}v1qbq?6OV*IL*i99P-0T+3=IcmIM38LFv5zgs2Gx)69VG6r(=y= zGX7~04{cT#w3Q@GvTZgig*_oqE1TPsGMwqPqdItZv115I*z)Xw=7ogFmKK7gq*eVGZ$ZOtAT{){=m>>?>P z7uwkb7emZ^Idwv8HyNoOXU*u`Z~v@ujIUiawsEM>x)IHsIeOWcS|c?1lnDAs;h;9> zw8>>85>Gnw$mUFll47|EsUWyy2@Ta1j&sG7L!M*DgH(yEP?GmO{h7XS0N=TQEnlYS z^pY4|;s)i&RY36Dm<)UUeDvf{w-$HX=Y5Avu9>prTsX@>~=@|%|- z)uG?Ty(;)kL6g;fWtihoVJ}&2zC#>D4}y9z0k_FOg^6G#_pz8mlgI>SF>jj>#(b>a zkI{9x*MZGq7dxBv*58zFzcP4ztz@>>t&_Nwj?n^Cr>_E32Pt>uF4zysb)i=?mFcz_ z-5cx%(^Ym*7~y838&1fRe4hvb58(Nbh4u`ef%c4+1nq{e!^ML346A|G8eReI?rQ>;K)Fl0>&6&F^I;xUYvt*v71_xHLiw)nJ_tLm%6MXb+dltjcgE9paWs&z7&XhV*C=2D4eEn0U`*uCS+Nr+e{y|f zIbOh;nz^ykh`+Ged}8H6adC6ifQ?96qu6&jTFVNqTzk_a-__E=EEYejwDm8UJS zgY>Rcns`A%l@u%}e$ewdm^3%v*ge35udM0-y@F)MTb2u6v;+ZC3j}Wpx~8oh;@~s8 zWFDL?Y;skzSmfO8f!u*(FU(EX%$I|9*%G{yw6UKtMzvkNA_A zUfn3dyCk3r^BJD+Z4Iq0Xs1}q19d@(I)+FG`W=S=(f~AUIwjVPhOR1^*|Z0 zq@Jh@O7*EedBWFdZ>@!o#ZLP;3~8fv2qZ=gLYYiES)#?SqLTlsVzjJQQ<}ElHTJVP zZcY2JIb-gbew-+had_$A@SHdelT6hF{mE_E>t|GW!ocUCC4n~)0x@d>doaaq zCx!jT83&I@OF`*~W(lDZP)RYV%Z`HQPN!4rwZO~n_)OF4F; z-Cyi!x+#729V6tGibU$0gH~T62$gz)G2wc9645IKluwo5x+vo2*ix0t+!Y+hTl6A1 z<%{-YBJyclmx}ms2T?Kz$XI_`;gVlEzjmC$+)8xX11fLs^ex-vAJi*bn-n6f6>qlU zBj$~b?-1a~_Ln?zSt61a23kSzZvQ~mp>c2T8JP#I+?iCqBXm=pM{l#~$kgh9w8b=$ zyvQH;U@N!!eC+%D+l_IcL<;H_KyI%C*b@HJ8)G?3JvSr!|37@YC|O-i(+q%bgDKqq z{0Zx^21z5Ao0UvE3$uPkfNi=STPU7u)LuyN3mgUl#_u}93ByGc#|6h}(`oTpsl;HU z%n8q{^SS?`?RFiC&dYNr#fEapt<&@$eA|2Ht@$C#q5E*=ulp^0FYRX;I<05*ubdII z&DN{o6p7z{bPk@vdqNOdpOh=F>HQSPRFEZUx~gmgpTYg=$E+y&ldAv7nTp^|0DN}% z8xFwQ)B(9Lc|$>*wxgP=_syr5{3Zy{)5ahxOs*gwr}3(=&3uLlq`xTwJWn`5&=1uD z$!Fx$3^x>707#o)!G`!0U(Y-Ii^FVWxylX((f*_O?#6Jq5@c?su}Po zwG6%`_BbBm`eBZ1P^=kz3Tz|ZG+Dh(az6vDg8co&sLg{!uS)&;^OUxIM^eU!9kv}k z%_!OocYS#iCSPP`iW1f)Ep52suC*tP9@d0dwlYSKiyCxwp{BJy0V zDbg--t3jb#y$tf~dCn~C?uENV zOB-xwZ%W<(0h4-|{l4k7U;H(65>J~4eg<`0bz4eQf1>2Uvg7`&Mpwb2(f_GlT1^$+ zO3@&i`>Rx{W>9g$J-~lM-l7qLD}L@?gzBX1mI&cQKTE zu7Zz>&0+3QK#y1DmWCYI-#1r_lQ)(abOphQUALpHnx^Gb`S)%vdqmXZtkj_YK4xRl zdUvsb3tgD%?va642du**yNoD>l{2eQb63_V-tQ==%#ao{M?x`7Qv`e(9o+HbTTiqdD4Z_7h!XoZo# z>cOFm#5+>4Aa5?5yBCWXzUS0(QJb>gP;S#5t8T$Y*n^udo2L0WfyQj zIzlshtnhvKmAge6H*IXnY|-wqyjiik=*iGGBfYago$dGC1Q&HV0eths$IG7PH^6CH zkdtdOcRc{px%%TS@z`vN5g@uUNdHH9rI-#eWj0lK9C=)MoM|lKp!3jatl_}VSdg}) zwb+@PwxBgXX+djIZK|`_S?H$z5PqyYWs$zZY-75;*g3?6^>$Z+;+ThiGXnN!H^49> z^pnEwPiM5hD0!!#@vdN^uzj`vc~28EAb3YPCN%4|K36(LqfmHsl=&b>w$DDX~kyH zOWt*!THzpx0_DCsnF6VT4zU7(e!DQGaCxFwlUP)nMhyUqR;@(Sw5eXUgtuUd7)l>Z zpF*rdt%ETxQ>#$RI78SVZyuvYvOv4|Ju$>F#FBxcudTmTOtDPVJOt2aQ9fs?lQc_P zcBs=VQ#B7%B5Y7JPgJ68&@7uQhdo7H(O(QbhhH(SL|mb9{$UA)357|I(gz!YO_SE2 ziNImW7^1EtXb_&HVzIP_Zx|ApRH>7%BQnlNmAx!&lfO(&-Pt5&Aw~VYG32jL&>(o( zszVJQg{tih7v#E)`07|aypY5c~| zA(U46$em|}a$5?5Sxl-k!u$zA29$Q}G4 z%UkZV7RU(=2SY5LK`u5LU3Bfl&Zs z7YjQ&Q6ncfA_q1$nIlIiJPRj!%w~Yy%iYHpWjlp*Vjf~tsQ_B}TnMIGsqhb{#+u~? zoskb&q9vRD3DaU0n$`dq*HD#D5UW?LD|{bO&hIeTfgqUz$c!i!M~sa*E9m?Yw(zQ9 zaW0d|KN)c&&Ic^+Q7N?pt{|LIE434@zB~t3k61oKxCc0w%-?=qAidxI_Sod6#a+2_ zJs&xJCP8!t@h(*DKxo~e2_aa2|E(4_VBq2C4Ey890{(yAF8%Kt=f4hA>K=bIjZk>W zq&+qstGC)=&PW5gI>4wb3;0@oio16N7nvm&UUB?cvvL=2FcKGE;699kcANNt;zJAuh-8r|>I&H)EQ@j8fp2_-BIdgWmbN@@wE%{%iuO z0x<`^^UH*-haH5Qhh@zINA`7)TKw6QN)BF+OZ*El7;Z8QT#QUCCF0qZbrduuvqf|- z3Nk0}HciSXTPRulsYpR&IAakEEQ+7BWCRU@v5I3LhoL^o>r0#{E1dPb&hUVbG)sD9 zer#Bc!+_~p%p~3`s;{tnVl?mr37DUo(bVvGEWRR@QiV(*?2@8hcp#rveIetTG1dGl zED-^Hec8g0(A`Esu@ejk70L9nfrx=zj1_Y|f#6NT78(k;I#w&Ax`C$t>^d0ic18IHvC|qi~ z)B{;-U!kpvis=fNREfltKIKlFxZzOGcYi{pdO?9p1j0nMyXZiBT_UzBZ432Q$5E~G zn#DN36cMb4t%p~eKYtstZu!jW*dPxD=WZ2xyrA(@q!!?aYQqX#ISWq2+-Oxx&!8cN zTD6=YLP~`@4lABGNt1Vki{QT(P#39Jn2MSRZ?l3_R!gyv^xHX9#Hc3E#$pQnB#~v( zKoT0GY?W4?;%0)ld4k_KCDx|T(Qw7LPGYYCdArb7X>SVh;%~|8q;7)2iJg>U9FOMX zmAiognwhjzZ=K3Wyt8vh|5={Yq^UH%RY{C&zLA`AtLhQ@OPM1Q7Nu7z4pM!O{ek^v5g`-2n&p}?~FYAKmer)fWNl_TmRXJWQsQX;X8fwFla=XGlN#@ zNuXPJKjaxUelxNeGaZiEh#D5~c3IO8F;$x6BcDGR{hcC-7w} z!exjr5A-8~>Gm&2##vE69?(a-T-hI9h^MHzU3@t}?@Y5*fc3#En788oiZAD2rs5Oi zJAYgk=))+~6Xdjl&*jGz@H(6$*{n97ZU8^~Hsw!$U_7}u>+kmQmp|7!(4zF7IpaIK z0hBv2aZ~7Sd`C9-0hGMI`ag_6;OS_b{jI6LEHi-}~pibB9pnYb0x~{LC@iW zrgRJAe~Y$$XE7l#yWIR?DHy3&N&Z$XAHvj%6QWk2Ekeg>=8|B}5tF8F+e>8_b$rwd z$6KHuBB35pBV6L|=@5ky9kqnD>KQahK7or+gGn$$S#0!)Skw`S?jNhht^(oWiT5XdrkuNB z>UHuD>y-pS*J2iAk9Cxr=Ong#6SU`ei(55V473B7qH6C;{bPgX4ID^Rhh#7dD%<94 z4Bry2;*v&RRE>>*l*qWH!y=p%a8(jYW*GP!te*@O z49bMu{8Jnz8*&U`wI?w3<+t|(+^C6o+ot?)6mai^+bnm!wS7V?%XEx+usu8WhU8hu zDdbk^9m4$s_07^+M#CCLDaSXr?}Xecd`=i+j?{4|CzM%!PID-8C{l{Ms#Fl1ikgaN zIA#0d{+ckY8$+&WO#SLq=_e?-UW>jYP2=@Uxi$kxrFpiv5fxQ91T^MbZGbkUXtplq z1d(GITpD;Qmx!M8VTh)S{S$K+3q!-KbOeMl4h08uQEANzDGVxo+Wclm*A;>-E^DP9 zmGkk@RwxGC912=aA5C(DkyA2jM*L?|SRVqz0tV^*{tDvE8gSqAHkKsTmF-(sP(lOS zvBe;%s7c%HyG`8U&UhGs*Mm$`{+Dx`S98m;&E1Mnt{&TU?U6q91*wr2x+D=}YTB1v zLt97BZ(F!Ms87z0uUkLQKo$2!uG|U3=vZrrtD@n{AUwSEGm~vFSJ|*7M-_%`)obqB z0}$A38zWWmM#tkqjI?M7bW@B^&O7H%u-_JI>%Ej-vQ*DKi8zW?2XtKU*Z0`9A4KxI zQ8}*-+|3JVWEh0~^P-ywXs~hPz>VkcBI(KLnJ5aK%<^hkv?%3)1csf70>rX3O-Ebj zQ)8-;^2rY66>+o3O(J5-3=QUk?9eoB z9HixLy;?*s$yMwV!8EdD*H}1*WGD^}`tz7=7&@vRF;Y9rq|L{$uL*tnNn4-uwq{OSOwuyTG}9O zxGj3E(bUlD6!t6)jyN?^-1UEhe8%r_G#f~V$6R5+kUT-I!^9hEt zA9xHey4FF)kc^->LPu5Xl&Th(-)+WcMAPmTe~c(?@5RMQL?Cq3r|-!$n89hs_~6V! ze{PAy3dppFStrNEK&}YgPf_yK<>0~Qm4ttqJ=*b?lZfWz%BEk8 zoz!;?GrSFDI`AfK#jOC8)EXjZ99G(7-7Pd*^`Lv>LPw<@V`~k>qDNq*`Ce!7UxjS; zN@)d@e^j-dq8G8HffNlGoBoh)Od|hwVqsLiZN!%DQ8&CUCNf-lp`MwGgD*=_HaRpU zz4frVEBH0TFm&;otAa~Z^yD-ZdkU13Ow=LEi#;98xcfJ|#*fz8>b^ytU&eJ))IS>* zjiW&tCXF%suuT|80@SS;sd_6Lt=Rc(6VPo5K>-P2W9;UjT1HScpbf*QJRp;0&y!|< zHlHKGB3JJJMDWqvM5%0GSr|1+$3-2kq~vgKWowfae1DpDaAWqC<0OLx^j=iq2=wYf ziT-jvX6~?@vKF(fC3g2^T@TLwc`Q|OcGvLBx?Vb5MWZL9k4{)FDUIJL7BlFbI9H~G z$P8zSjF+aw8DhaV7vE{l{k#ags5D`^$a-BG>r{k85a?R!9WhH-w?z7pT=-0VU5YMF zrY7_e3)vtDy1IyMCf8d>3_?d-b5&ZColksQjN-b02~IB9MIo6kkDxo*`Chs)!lvNi z6_z9CrU2@dzCAQ2FXBzOJyExK>l0J^n7m*DXUQ?hfKvM`Ra`Y=%r+9`)|uhQmPCs< zM`<+0BgT7W;mj3-mLy6@scPN~&RDT&4#`{tYZVGPki&DNx(i2TA@etC}oFrX`1Ak(c9hAH>qXvMeU55InPKT*`MJ zuIyTNp)T!ecA@leVLjy=6l&DKmd{D9X{Yg8rJMZ*Nv4vXl9B^!bO;~6k^?8T*0q#% zjiz2ND(o9MYc>cPQm*Pcn{;l$sBHp4ba*-+P^PNgQ;N3KZ^q}6+^%34Jd%p)n8lEeO<~d*b!Ndqx`7cF1YVP+9UJvD`|mrdd|B&fpRcj^py4; zlR|%>DzN}qi2_xN-$im?Wo-N66t`WK0}0WPp2B9%Q5^pHUbB&3;k8@vv0Pw>O{f8d z!!`6ArTs5_mHesS7>&Y@ZZnq(<2tacD*Za-5{r?S3d{!~Q8mN?GQ>xG1;={L_HDsu zjwt69D&5QiI8@zXbC08EhNMT^?kilYX)#7X`#?v+_;VVLlaN;v^>b+3VZkFo16sr8 z4sQEhBgVg%)D@^p`~L|Jj|PCl|7ohTqK%Wap|G*Bk%8mCbHm#I#SNcfT3Rugf0eVC z>*r~LAc#YViT?u*L%bdvI>$?GT_>)EtpgmDARs=zyb_(9>Pnc@1aO>qF4OFc4%eGs zZxvsU>BFqYu`ER_OmbHhfeV8yD-J*l_a3xIHpJ zY&h5K0r5FBsKP3%mS=49cdM`mT+!B1zq!NyBYJt1@k^}Fq28qU6bM9%Yi=+^i-91R znJiH=>$guZ+VD70k_?MglX&GKUIm-}s)bbDqAwJNOzlU!=zL>(gG55lusr&C132Ta ztQi4Z&7y=w(X3;`cm#V@Bkz@B?2Sol>1-!NgbO8-0oD0vN2NY5uF_u7w7oN}ve8jE zjO?j2(cq(=H`guRLXzO82kcSBY53{mE4&=^aS>Q$bHw5}*8o8jZ9F zl|;5D$A&07=}cNH{@O;cyA0`-BX>knwTWb?aGwX<+-_UdDk4u)Rmlum2Cj;dfD(|eqa1EVtth{*5B+yycm|?6160{$C z!6bO;XK=~z*ZWiTx@-60Kr6Cr03Eg-egGM>a{6(4?(zv{-L|<=7p}MK%IQ#u9Ewwd z5bmqT(R3a*Th8MYBulvIOkfjrPrb zH>CTjBl!xf-~AZOdWrH~x+Z;R8`T;8r+9`RkU{F@5OKh^sY<^}7Pd61;Ctin#kgHk zJ4|pN&V6Mku-3Zm}-3kcE-(}q;R^Akt*bBs-u4E=Qpa-@b4t}FI z;;afBhv-#G9ydF#4{Ej+7ntS;iYlp}G?MC#bFfH99zeCN=HLImBk9h^uluZ~InO)rQ21+sw6j|rHqn}YpotW7H~33bIK(O+(*E?zLEdOIvpnShrVc$Y z|Ck9js3t4RtQ^3^_ggGuqDC>qT*eEMEb(j5_sCBxE^MBTpNT^z_Nqys3OL)*UZ~P9tLx@R zjAw5%bMTDZVS1(IE_rDzaP^xWqdi6qH=cyr;N<$?t!K}BWL<-D^Q#fLV%f}QV3_Sn zYbi4*bHyk~p$5w#)W;zuleO!u?!rFlNDvC< zUN>BBl_Phcu>^?d>oy)U*%@~{Th`WcdU`y;Z1FPq#Zuw+5Ks*x$43KagGR7XQ5-`| z?;u*#6lN#bD{^B1rb_Q=Do9W^Ugh7TZpwY|C(IxNnK@&w)4e+MugOyk0qxcs!5#W% zMe*|bsS|4=>`u0Z7|~v-^ARfNi%#P*b9D;BBg_gnI4c}tR-D&mcDtR6Tk(6*u{lg_ z)U$t?0}^Mfs~JW)-=ezCy3#J@E}u-V-I-(y;fHuV6>XJIU`OhiEAv>euDuLAZ>qJ($&#YsU;I#sRv!-xkE62->OsSDQU z>h+`qsVop`1rdU&vQ}Y(slzf+3rkWrWE7%L5?tlFXfy^EbmMc#V#2V@aO7gHQxPfQ z|4V|Q@BfZO7j&?yg8t4wT1~Xn5(Dw_2L*J0f{k;SR;9hy+ z^~K;p2Q@-36H;$4O=j_pu`~%tcnAIhBks(~HSE#mx&Mm#RmJ$k8 zz+1&pbvWm7a1Bg{-bXdoNT`{_~gj>dV2-sZv&0R`bHy%vS-&*R(NK(ki43S;I+o$4ll-_QRHg z?DI^I_Zv>H!)qQW-JTXQ*l&dZ)XW+Y599*$3Vy2L0Va7vcm84|LQ>(vqpif?$jAlx z#l8Gc41^S+$#7S7DP06R^+6PbnsHJQWQWmkaTzAX#tOn?qjvZrfKY^9BE|yK5=Ij9 z9#TLsxr9&l=%LtSodpu4As3%3Q9_pTGy`WWLx-^CPlk*)kDlSxVEu)w%yJ!)`Uo?U zMYP2UqS=Txi^Fv59;#GJk}EKzd5Or3ws?$mBwP-Lq8u}4A-?_QxaPLFHHOWMZOnqq zw2~aJ{?XK2QW5)tG?oL)4pTIn`oJ`LHOa%S(W+)G`f6Mi*x;W=w*>>W$D5cIUT+!Z z2?j|Tnhi+OeU#tJ%0w2V!%>&a3mLzouv@HaepBYbwP&{(qD-d~Z;eM!(WI-d;qSj& zLu#-BSM#+^lZ}~V&A=dDOwv%EuCEuLr(3ugx)w4NfPDgm{Ef8K$W3L5X|Yl?om|`b zj$;QKr4D?f7r)>9+vmd`T7D6NY?-pI#-tJzXf^B3)>A)Nbbg@DS-Npr*syOrRd}R& z28=RKe^K*-`q?+*H;bu?*c%HHgnN-9G?R@GH?$vc11v zi8o8ENAs&V53;J**K1=ALFY(z3KayLgy0z;g~(4ht3$FUJ#;vQFea(=$gq z@|w3f&YVgF?YEf!gws8vu;?OZF9eSwM8J{!YPq9*ghDLbvDSJP5b5D*r5D>7k zr+I-rwJkfWac!lod#`qi0&Ksn#ux&AX}YyNc-V=Nkj=Xv1sMgEK{iB>ifg?4JsTc5 zHf*;rk_qH*luqDth-x>M&><0WoHj)Br6}^;QdPq%@r(K0%V@4%BqB!1{a$NF%8aX`>jg8VCzm=8PPNR?NTD?pLBZ3_<--%QYIq4SOz|KWFFvV}K3H2AW3s3(bObLwP#tVIo z@x>_YTwLfYYYr+-?xb*ftsPEiCoa6ewugQAgXJ?UyNhfLycVMe9WKa+=Vr+P9u;7d|r>=OIW zD{zLdzSyQJSe5;hVxCU6_{hcMn!ROw-r*y@;96R4%${Y%-6gDmew`Q|GZIB+1A8f&(O%>-~XHxr9fzDEp?6fm>7eD zq3;^*OlAL2R|7T1k2Mm&_k+iWChi-=CrAhs!v{fBv{))$*088jwy3IUs%rA;=F!#V z(lEGEJm|jp=)UQ&)BX7Sm%SPLpd^CM^ZsM|rtKwrrz@q+g_hOFc@5=9_~P1`nEb;$ z`Tc^jAElHsk%BTYj*rR^Hc2OGxgCZLssY7PtG{}&9f?Etu(xsBu<|5iR7DyTQ?(xL zVrz1n*a63}e$+*pT@+TTB$KtFiuvZCR=FKxgTw)@; znM2U9_9RDCM;aCLwcfJD=7i;JYs^}y9j`;uFz_Vl|6=SdgCgy=CE;#p+}#RyC>nQb z+}*t?8h3YS+@W!IcXxMpcWvC=8Q$;Q`R<&UIT1H1qT;E4PgLx+_Rie7G9#dpVIqQN zlxxklnRUiV%~=SHD&}4M7wc*OC0A6VTnTr$QH)5lE@@EgRduF3-F6&Otpl-R5x8{|zD$E+gMl6i3} z8J$hqCSC&v@Wyl_*poeRtr=ffH;m5bIJ(yIuMlstd|I`glH zZ%iVhk~S9}lU&0GD8~#~`3wmPuW)X-aWk18Od$51>lMd#>tPu>3swHO`l=G|Kh#U= zXB5pN?<3Vo8fN6h8@luE>5KGspA$LDPL~bEzczH9ju3~FAhgG zr&nh;XQyZ5H>YP)$M|as8_kuxMkDFk&r(0{me1Nfhc}K`6q?!Hqm5A}LwRYhfX5nR zwKD>$eS`c%p*&$Os;3$u#tM_5421JA7f+N*`kgzGwvOOMtgB}dUA?{&+WY6w_6|^G zWztKH`EjWhDl5XBWrSrs0;}VO+wquLWFyP;%5mUGg0KqOnLLiQS-2Y8&3C<(Z2!_A zRaI7YR^iz$ZYgq5AI+|Spe)U6(!Ik|T36HpUtox;lT89sq z&+P$Tl{|im&WJp{=oI+3LsCu`Ya0*!LXjC3#j|RICz>Uwu!bic?>DwX755eCuizg{7mx2ZWWU>4W}n}mN$5JuqotdQ7&{w(2nHzV*%GlfmzrL@m!~_B&!DDj zwXD84-_J;Q19TOxRoq`=^^h;vSr7D-p zz?MU)y@n-TW@14&Dfv_!9@=45I8CV(TkErB9;5>_+N}-Pau4DIobA^7ZP^ET0S|U-gSPyG-~gnZYvsEe z1_E4;D$}~YUL<=SK?4{6M1sHhVy;Jwk%Jn92lF}u_Yg)T>?k;WVue_bMX zT_dqLboX3Bb`2xdICTHIMC>|7vU6SS15ynfJ_^Y zkt>|R19VtGC}|hU9<*(q4g9wF-zk78;0S;N(2tak1V&mQ`i&l0_I#MoKr zww^1=!M8{?PTjN5_o|Ov@MfkITS$t+dZ)9?$M&xp2V8|DK?yt;|grj@K;!33RR8*`f7Bq(pM|v$H zTd3b2Nb3@%iy7mDe(6A3@~cMJuO<>PFmM5=T@yh=UU{eSF#_C0S8@7{JOVOtceken zfFu%eeg`7gTFO(Q;{fkf-t>J)E|U})zXEZU*e9Mj^ku6OY1VO>`ZNmIs|0YRzvFLc zx0?r}F)8CLo0wc-qYc`q^6z+8ygk*zKoCVyO-R1tmFDOMqf!0+-OM ziz$F?G8Qev=&8hPv%f;dQAZhRD;0Kag0>sz>vRT7)jfp0Fa20zq)YQ zQaCy-N?3{lh_PCcS+h*qq63Fi^}DM6KqwuumdQW}9jcbaKv;i&LJ|yS{7cm>iSqD| z`edro#1K06AoaPSV@(`&eF}}a;Vwy>BKBCr7szT+=6+ConN^IBf3n#$5S)&wYDGHs zY%#c;b(T)k@GhIFYGUlq{7F9|Gjl&%aDB1{C@8Ex6;K@k!lzKPh*h823$esp1sR1| zVw|wp_cesz>+gp;hFG%S^tJT6Np~zER$C{5RqIysDN!xZH_W1koS|~h2=_UKdCsDT z;gjFfDUmqUEj7w0pJG=V$Vi`ZR9_@1R`Y^3Sq(vhVV;v?Slj}qF9q7C!qtRHu+_1B zUM85q>A-u^TKQA-YQj_zP+{m>9}tsU=F|ZVi(BZl&?san8N|;V4>AsUTLWTnYn}2- z$1l)*)77rm}zSVl`RVAjG2(e0xKYV4r}YN4ZwstZGt(n&(+0zv-Mn1=q0n1B7NG2x(hftV-* zT757M-fAcmnn2R2Gi|A?R2Opn8WC`x^JNOK^n0PhFK7}enS7Y zKOii^Upq|3pC@eGe;HE?#va&!vajiYvajKQc1`Dm3=4FF3BY{wCkfN>5AL@TtnOFv zM-9t`Q3x}DW(?bf&c}3zHpCo6+t*6_LDk3+Ew68js_)Z3>>q$xh>WR`CaG>=i%V=} z3#lK{pX@IgRtqgfH$kDS@%riGWs9hv++PVZN;g41r=BKORR74UAJG5g&lSdxtg5N~ zqp0zbG`kx_pFQ1!s;Z$aZBon#TEq&%j@bnTQygtgN*se7~q*aDaaP8k31+p zXMnw6z|o-p&B=gFHjDnAnF03z1b^?V*FQLYa^>P?nEsMOg1H_Ndh@ zG$p9G1Z-BBuAsC&DVxop;CK*N55;-xuvfB4^r--n*74&!{ywH6XOO}5`}Mb=z)x&g z@K^=(q#*GuuznxSxNi$2xJ%*cS%mpMyi{;$p-(>c@&rv^FnmUV;FK-IImoE)(5>MjxQvMS?i&Tdwr>dC z=F`}1c%{B_In<9_sNHf?07)?^6L{4iBaloHwz-hh6s}ocb~b`K)^X4ClmZ9PfrQO} zLRjmN#|`Cq$I!STg)}YfBQ}x#`9%t2n?7vt4ddS-MV(j1FV|1TCLR9E7moj7z{tNt zivK;nw{DN70^nV>aGI?WraG(U0mn?W;|%o8zDET zDcYS8a^gy>>i}y-tXH-3f!w4rPaJK;Hl{SpWvhS>B;lVcA3|7c{ znsjg3=4;nj&dNaC5rw{ceqoVE*Lesxl0Z z(t>pGX&!057bQJqzE&v;t^d`9(el?gxRr8Sn`wTA_Uuy226rvBi|IM)@r`AVOxX#x zaCND47tRXRK%m%XIqecbnEcu5&&z6o$u8;_;EG~wPL)-(O~-*NX~PQKiU}0aF0f?& zOo@(NjteBe+OcfQ-PUOn6JTkJqQ&Lw3fi&zq%lrsk%dYFqo!!GFE(2fGb+hVIMnR$ zc`u$dzXwrdoYsk(Xn3oUpSqkT>&V%6&NwO>(iW`MJJAptm=zCMWRLY#4{!I1Emdi~ zXQ%S0%Zk;jYBie0bBN+CiM|z2n^s2D+7DUgZos6@OZ8Mmt<=B4>y#Yah!&%toaGnF zsU4J5TdNSJi{TlFvsCTHm=FQK5Bo|5wubk~JW{5NLQ8c2s{L}MVRRbiq(7Z7rQAPC zil0Xy7_wjTC;TksHNr#}KhX()HsdN5nw$`Qp+;BVSE_w6-opu8<&G?N{<>_s?6LK{ zyNp3f`9j^2!_QovTgx0}gnV6-L2_yQBC7m#B)UrGmLgL5{j94tZFyJ$%n|T4J5uY9 zRqi>(pyN`%d6IM2wwn)_$vaow�h5QKjy~&%ZI&n)vcfvTbLat|By^wz}p}*{iG$ z?<)xGS?-UVa{@{mf?*m*@p&r@=O1WMUz8^<$QIJ>4uO2;lDKRyKVF5uh=P7*%I!gc z6-6UW&rCh+$osI(;h#$BnTVH82R1V@m4N}KjAPUQh_)UsafH+C9Pa@ei1pKqx2DiH zi&U{I#sSXE0ZNW2x%M4Oji3BECPLi(!B;CjvNPsg&@EJ^Uu0a8sd&j6FrbhRsHmt^ z4nq~_Gf4FjaJ;PeS*Zqz>#48~2k`>YZoTDS3YSVQmZFj}< zHWrz(Z=O*O5RXcD-4|UQ^4Hlth6U7xCWi7&wNC==A?qND#gIqX*7r3BlL>++c_lzP zLY_A{P=!p5cD`D(IItJ!nFksX0D}Ri#djD?5VOR&54FBmD~rqdL-0_npTrWWY_o%5 z55+xVqKP-)>|6zgmJ^a7wT=m{PBCVBMgov3{`_fQ(gcU z!snZeItfi6G7&Z^p0AUhh55rmgHvTgy}P;bEte9v)A6HoVP@7pA8)7Uj!H4Ixufu| zu?x=0X5-OePWH|Z`y0&Pn6Gg#cp2k8pA)--ZTR%Rva#sx(v%KIbAsq?!xAwdlPjrQ zk}7Fjk}Ij<89&GE`aFcT8E#}C2yf^h_;1>J7;Y>BQ1-cDbH|)929mJQ!NwlYBN;Z; zu#LU4Y~r4>dl>h{U4X{8zX6*#(Im5GPiiWr95@{mDZ1q}VK+Qeh8g8C`08v21x z`8~iJ+5qSq^UpCoc38^f&6TTkAB)b1%PHYX=c-Bjt{*EM;xoT<=`rCb-Ez7E0xo@h z8hq3_j?z*h0(Yx%j2X}!GbHPY3F(u{2D+whP%K6duBJOPjovXVC)k?IQs;YGrWhPo0+nO5HLKm`l zNR?7_Quzz{imQsl^~x=ajh@AIv6A(q>)^dsnO_$lk2|))XS)wc2>;x-JgXq;pM=N- zAnYLsgY+kNUVm|HBgu*u4}3RpFGRRqKp2CNgG!$!LO7M8AgNA{e4ZayWk5!P$R+I- z_NSa?UIukPG4Q`k0&iisNvp-}qI_arfH{?3{%(}Uq;=rQ9YfN;l9%BW(c(Nn0GJ~$|>l))mT2rP6P;fd`ls)kUO*ke(e8^ zU$X7INoom?tT?;%J; zo)TB-o2GsLeVFmA{X8Radr9Up&T`IN&QhG|v{{~E7TQPc8QG;jA)nWbHlY^a(H}KH zY<`1r%RC)&=1XY9K%UX;dl=y1{r9ryl~chbTrYuV%cZ8?lsH5Q$-#6Z^*&Qq*}|ll zAQMsCH}LzwffBr-rhESNGneqi$ie(^Gv|eO|gctsO3olNJRG2o%%uKE&89C9j=9j&FTTk)T-2~hDM)p9p$XG z{bqd&$%xf=AiS}EAYHvt#S%sJxKYLuW;NF=dMTDU!%aVKe?tlcXtgh8Opvi~$*ESn zOrxwHh-r>t&MeiZ4dNbCtahqSH%eamUL7=M_fIfKt)NBY5<#t^MWuS82KfSA!(V5Ou)S-FekXDj^8!%hj2;CD$-dk zieM@UXiRjh3E2T!r772Ka0^GD{W?pfFqHy8&$6a8njs2@BQ8RA z_oCasteIIsvTd_LVeV?-a3F1BRxfv*A$mZ0;@IpWntG}QUeukog8ezynOWcYjo~bH z;tts`a>u`7ULd&Eapt~2ANK1C3{V8wmUaY=P= z1R^AeT|hc@(eB_!zar(%s50opmou8$8FbGY4MXK|J}jSbvON7k2|bsrOy?tPl2cA3$X6HGRgo^8wGV)F+!V7URM zk~7bSS>GA|jpkMWqLvhnDPS2tU2S{|ggm1k*0~z)BK1GX*C_CaC zF~OTyn&)AV`I&&aK2?aL$8e-0hICd{NRUJ7fH6j*M<0T*gG8mirJA_D?GpA+q={=re8 z&{z2Vth#3p#R?c^^3E#dsl(-y5@G$xH~ozFnTHhQsk!y=WT9%+Wnw7+mrvzVg?g=S zrbG}c{lR!CSiTfk(G}8@xMZ$W$9xL+0ck|7j_ys6`7ne(#@7)O#4SR%v=y}b9pk{iL@S2j0JpGBi9KtU`EEVog)+`}5 zpS^|aqyp~EdfDL9`Ib4ML4#n5H7Sox2eGv@;|O2y=o-l%S0;@pmq&SwGzXQxw+EmF zpY0#&+LU<(|6tkf@04cA85U+vL8nOb<^R9Sm!xB&^s5mfz@addyzvKNqH6(77kQq-`izlvYB5EL1iY;PKi&S74LUUA zK8$2`h}`xp#rLiN)JQmtHNp<%)RJHn)mV`6 z$zQ7vh=M_46jp?8n-I)NGJ&ZO;EYk=&B2ecAKsVMlFN;G_hbMA`H(8hbr;Qn5rF!8 z?2*A(p4j;^T(FxVK-|F9v3?u{jFr`GZ{UH2t~j^0H@-3sLvC{~d(a~|VUDC#J2V80 zr@-ZsxPp2c!?2F!yH)10Zn6B;wAGVBjWB3A;WEYMm*=CfIcqRGPLAfMUI0X?SWK^< zU0Z$=;FcGTm43L)cpEyr$4y@CB2?%_dd1X;ell;@0?tT(@%Y0yk4+)EydS}hLe1#b za(r9%jIr?8a70?x6%{FLxF4a=L2zs!4;ih{q4`uWcVXxj84R&K8odC%b63FGdSaxT zJCzAY7}*%Nm39lPqp)6w_k5#pVK%0+HVfP!q-=|qL5Ky3{6)?~+1aZA#Ly2{^UU7D zN=PEy)pdB~WmEt@Q^9hgetSUb;dfU>T?8`H$|ZSUDQ5VDhy@C2Tusq-{#r6me#s2;oo#{&1XN${>O{ z>TLmaYPa>=XI%rl6$8Ar7Ro6k&GYqwt($;ji-3p0{PIWtmd~;u6b)lEe-sw@D+I5u zuA)Um;$Yl+M&|2xDKFk<^Pm9w3`{DZaV4s$g{{LeVo}hahV(O*I>C3oKccP#@H^hV zbj;a7Y#uRs6E)yRtBUt*ybBI#<>aR3(O8l_Y?k=EjcDK9p@8lW90~g? z_e;3;mQg*LhWe|zhBB3PoR<0SFE*ORvuqJ&vZ>s3h+0aOGM1drkYeys0H^W<^Ao>P z=~6>^x=9qV{U^3J-4t^MoYG9Vlg+qtyt~V z$%K(U5Qmr4m*Iv4PA_)G*OUPc&c=(+M{qCOz7BMl@*tayB+=%rPT-G-&1k;#J*Z zD(k~q?nE@Vp%rXO-F!jmw$k>eMCrGGCHR4)yG>&~yF>I{RrR(=TDzpy3BM+K(%aWe zh>lmHZovTE<1kCkOIj+@QhNNHd^XQ;OJq#EA!+m1dH&x*Z(#h$kKeilJ{MMQEuq{5 z<5=c@-nE(roewR8PnTpiDnycoP*N62PpEX5;2m(9hJMWbX!J=EX!H@{cw+z@BVQwt z%3$F8s&t%s{RV)aEZLDmjx@i!X{T*vxrLlW`z^7bG48RP_bky!x#iEB%H-Ak38`r* zwa6FbEo~h$3^Q00wcD;+(50Qd1EUP*&@NvQWlGnhxy>z^#T|4Z-adkvS5u;4zSZ`M zA2(c$lJ?;-fCHN1(MBlh7tYJ*7O1+g8L|nadX_1s4P(-+GL|Pc7K+!x8&FmLx~$k? zJnvW6?!EQMI6D06^MSg*s|oB;bMdbI}3hsKR2u+`J1MY+mKzbw`4GD(GR$|Oki8r(``UEH1G$igdE63)cVGJ*q16I2j@vdNF4dC7R zS(jSi6HgSYkurNR@&YlU4)+S}36bo?)EHF+{S-MOiNZKpZCGzK(!^iB4WH{@im6_J zIU*aN4QB}VnK!)%cbgKML83$+{z}}J3C{hw(wkI-Jeb!ec(2I{uAR^xAF{Grcb_dt z?YEDvy*gMH_OxbyIfU=I76bcj)N|yR%;{;Q=(qQJDK|p zpFb$*T_W5F(pv1(&irP7_2;VZ#7rCWk*|sLNGi!hQ`t+jQi|GGLs&DtS$@A!T+`4* zOzYNAs;1$luSJXW$4-)}A^kWlhE6Ls+Cza1NOxd^gNwVpeo^p36@PaGmVosqGpQ#x zk`NNyMtSF2q2b16+^af9xT8kSn(JkK<#(o~OEq zNi(;llB-A@QU{6*erPpJM4UYvWSk0PV@l9<0-3DqwQjv^guy_FJ}OozD~y4${|o&+ zxZ6WlgHBR2+R?q(ww2VTk46TY?kq+I+qH2+;dldh{O31x*!A z^NIzo!C9kCAJ@5Y@uP{w7Q)3AxH_x)h4Sf^`Z-pm7Pxw=^o8=pmIJeO5zR)QmgUvE z-5ix5@e;q(m+~!Ed$z&-U9)Q@gw3hyM~Z}FaqVNPW^Kj)sJxG}?GAhB4vavvTMjYs^ zkX0{I+T$AJ>`|K4oKpWqW}j(+3nt{%rKSZ`!AGPnvyU(vne4@2irMzX@syQ%7_Kx% z&plqu`5V6F_*lZDW_C^nz0qk}GI{MhxqEjtQ|*qT>O>7R2mu_G?6d8p=cH?)8@V}| zG#5Ikx~tdWr*IzXFFh?O4^zhh%+w3CEZ#kaQ6S`%1bl2wc`Y#j+?iVQ-9;=$XDY_P zvn6v?!Gzf>TvqK-tN`se^pB-4u-t+eKOD*>*%fMPaY{MHHWZP|b+qf@u}u|_VHzie zm&wf8)$KN8{zfpS(__po7;5b`WUujn3v&8XYafsLp^+jt06V1R?56|2#izB0?QOJ`W-v=1Q23{}Nj z{lM8c;IaNYb|8;Qou@3v8IE|4WWzpQ8MWE6(LqN=zwO=~L3m-yx+enVtIR`1UK}h7 z0Lz;TfbK?ALcBW30AxGF)kGBpWE*5;vzo|1SzdU;cw2juk(`cO3%p^hG>nUS2`I-G zS@xkixvx88w4PR7+e_e`W8%%`Vpg4L^V%S+9p4{AVuBt2~2UfmXD zM<6Wp071PKgyP9?NFX$D<{V!AmK)_oK74~%DK*Au`^|Hf$Wh_`6-kV^osV9af4YR? z^xjgCe{&u%7FnbXcVeruB@)>QO{Dwq8X(LhtJW#|(4cnz;~kMdw^dJrC_a@Cl6 zFE^brPz7&ukn2PVVzMZI<)wSFf|5V<7B`)u3uxphpc)CV`w`?~AGn}B`LRDr)S26J z6AjH9RjLhVD}!KuLg(@z#51Mhlul`@gA7}G&V`QXfwj>2VY@F9FsFa0Ep~WH1$Pe? z<`T|=3V+KXM=$Bit{scvn@b=-+<(QWGi#HOD~ViISj#9;6|e{48By6ne)L6w`;wa6 z6Y6am|2FyA8OWeBsDa-b`uLS5n?sCFmbvm9WIHM}td$lt-=@+xHD`2zD#dTPdxwE` zWov&t!G5ASuBsfdkb6JU*koHWbxUqo8_x_{`GaOG#pZo#G!9f>HXn?1byWz2)y6Ha~69 zB2rCS?!=WcI$my~GfyVx%)E3Zi~$JR2Zv8O4X3=%+>;Yb$-yko16STpObpXZ2 zT3evT*@rePrM=d@fVi#oJ3QsWFKgT-4ZNMK|2Et2i8S{R7I zip_;+%}a*U?Em>Aibh>i!`S=-MZ)#7dW_SAUZ^1oW8vb?%JAlr^Ki`*_UCAXchD?| zYYMo_8Y(p4q#I83c92OJ^PTDIA3jDZRZp2#Q}U%)kQqwsF$Q)L4u?#|!jHoZy{pvU zMV8B&I!6d3tW>n-c{Se0N%6+wq$^jq1C4G}%hQ^Jd1Y6A%~z;MKF4*pz%DLA;z$b6 zw&q#F)(qJm@(~thp~b>lWr=m$?_sdyiU`CZRL}=vme^>M+$k_whDkP3#2{Q7C$ith z2wjWf$=S@zmCRSqo=@4*{0(t3?5|>(n;o%j`}R*gK(X~Dq2N!L4g(k+ z78)`ArbsL2^iQvyKx{BMy-+Cx2YjL`d)by?-GX%Gnk0^=XPZ%_7}8OYV6kU#CK0R_ z@?+)R7T(WoNcADV^@2>o4vOc>=&30G!BO`%n*%ZNR%k2YDmc@ZZ&l@Au|-j-k*Ino z4}{^7uMyAPhOjn_>I;G&aF}q8MsXxtal6W~%V-gPBi&TYIi#oFG!YN*!eR3-Jh#V| zLmdHj2rlS!2=0g9e^+70KY_EH5g*E;cc+V=lkGWEZgAyeM86TWi6|d?0!#^nE1RrGEOv#iNG)5qDtxBPnPWqgj(G9pf{8 zUc((Gp+()GVy?x%S~6#bY`P0oE^it`id%MYs1Ws@b>Q+k@7?9yH5)qF&dsfH{Z+>9 ze65*q@}+IkbMry={kl_c5_~Bvm4=C?2DjwT&32m0zKGIg_jNW^%K*6Z>igk@*Qs6hAj+?$`ThDA4*nJ90&*%a7);><>+W%eQJ4B*jHCl&NbB( z1QD)DvPnt_Uu_@Ih>>Z(KB`yXRaL*|@BMe^*5?!|?>p zfX0(x{dz#HQDl_3;MU8C9b9Y(g)QJKXWV!}#IJ(7ip=)}sG~;pwuoL@8yb2Nyve6u zEhgfl4zh{Z1@rp2rjkwUO!8d54lyrLMxndqv;r&c!H2TRn0G}QHSraBfWz^JehqKu zaOwRK+Zrpz>+VBh6pZzK6ADv|8|@lv7~AUo_ce3>kHVHHhek?Ncy?xHN&Dym*s__T z+PXpmxwab<*J6s@VXtM&Leao0ZkB{GW^d40zOi|Zw}$jz_}x)p8dbrp$98hby(mPg zD&%hU@R;k|P#AH6VBi;CQLnW;0?7XRFgm9m6Hv|UP`IW+8Us_W&fhsU!((r~ey57# z3CtTI(I9FFJ@mfTZx|3-SUlo+vjZkfo@D%*0CuK?SW{Rwpi^zRNkK^VE{b+edh9@R zjsnqWRpjCo_;g!#79Wr&6g{PV$sAk)5UJ!+S& zT=baM2Iu?X zv;`p}c&+YSR(zqSYC{@b_uoJ6v^ezIU&|O>HFi`K;tZ!NkaLa8SdOUk5QGw@4Zuvs zdth7hD%qGZ!E~+&!`L}rt`OeMn2gVRyF2(WX{Zl9^|z-sO%f9U8weCnfO@! zO&_G_y9iPz6k z`gmimST1Ip*b5cuyFmIhaUWK+gsU`WJ^46-tP*zF zp$@UzQp)cMXF6HkVYE1Fdio6e*x{UzTDDVckHI`PU4#hZ*=~re7eHUL(%;wI@?Ln7 z#9hRACB1<&IkiO*=PpR*)*R}k)bvvl(~VTpyZD0cS$dNPIsDj+XY7(fPYXrC+ zNGF&)vwL&MpInnJ1fUYksf+qCPN+D(5Ewo$E(un*NhhDkz^&9>HlRQ7G6acRkR`Y@ zP-CqiVT0Jc3#Xl0NzWB%UnG*Dq5S7?8`W2+X`15m+YWu={&)X^UhY`^X#-PM@#0OC2?Wd5Iw?Vi61GdQE3qUG$C{ z_rjT^aFDMq!q9YI-dR3$2PMZJGw*xIHOabX$Pm4n`jUy()RX&KgUyyMW{DK$oFQGC zV4PaW>xw6^j)`9q^M1s+3oE_5z|ig{BJ}c-b9rTl}xA=ow3h?dn&@V9DW5mt*pHhRAG#zdJuA48NLf(IsO_C$dq)J$#iZ+{^_FS2A{MEY5k`7s|@w0$+{ zK^*58&)<0c1TJi}=}s_|ljWd16l=2J3DnjIZx^5TE4NUbwe9=C1m#ZCpcMiAezjvF1iIIMI_R|GXznoskhPLw1gp#(apz+I9+XF0^3v^ zA?w7skvQ9bqujUkdE(}t7VoitFAa)HDr6jB?38|9pW^G|65%Xc+tw*B-r~nMMt{on z{rIvgRHhi$(%a^t^8REtL`sKb`}*$MLC!~IANdF^N5VJG=C1h=F z_g~yngsPUkk_!5}lU>Yg9ku@q*wMIKb^~=itV&fmQJ|DxeolD+SWeL16yQ@&VdqP? z;b=2}W$dA(Cv1#PXalJ*Ld2YNz4I6bFh=jJpET7Jg0e8)T-Z3#GOxTlbG#np=YNC$ zNxM-hMvFLz+>LTnkk4(lqs}|HOQBmF6w*7B{^wlfNH>;Q6?njGSrkYye?E&(7@X75zl{ z8xUJ~R>rn{R8En@iuv==vXuRp#EsVpumPQmCR=I&SE((rYoeV`p(Ve&8CeFLRdul52rQ zdRRkJuxl{0qe2?zpMZ}11@|>JSPmDz>E#kuLK82M_MLuUL9QuYabe>?Tzom+5S2w5IX>fc&T_-N=&Y@90&Yc2^DtlHh`1PELHPKaC- z4zBA=1&2LJoRr;{IzRb(Qr^tjIs|Nd$h)AhvuW2~o>((?x0KP*_f0SPiy$SJmoP?= zxzNOWVTyS97e}Q1@glaQL#v}h;~|Z%@@0xpQu(0hITJ0<@~Dart)GGYF_&`58LnXQy*YFtS4H=u zE@}Rf^>5`%N1kQ>Pq8~f%5q~?)J$Au6y4#XNQcI%iW^0OkQ+rqZyaBsPghO29Zk$L zO7^IVk^zB3)kLVU9&rKqb z_W27&^dt(5-uVkev|lk@8@yK1xVo_NR4;CO{Nv9bB=7+ed8~01!5ck)ZcSTp>v0FH z;CCceEVAzkso?av^C1O|((jGMwkDT}e9}<|8p4*SP)s|6>+PB&!x$o@7V;OVkzz$}8X@cAtO@S0LJluUw;h&Kcl z8h9LuUC0G0k3fOsaup)1K$2l`b1iO(OB_v+H2Ex1COhyGL5{TW+szKUqlt^RM*3_o zsugc;oOVaFXwwpHvDu~p-ATFhX%Jb1R|r)9o_t^9a+z>uD1s2hV4kbFYoj-euJz)u z(|Y+k?VdLJi*4{m)J_%wlD=Zp!4)yz&Laxn!fxRs?xx)<=H}7#6pC9&l)6KXOLSX0 zQ6^26-CEG=jnMboU|O5BJ4)?FsvZ8fD^K;MAH- zIy_~_;sY+5mjdxM;1HjSKt(dyCBqV3GHjfCZ;b|&6Uk`Cw>u+@sTb2z12=AB%Q9~N z1eb7m;(MoqP(D$frBb6A^+;Wo5ch}TIjiWQ+S6ws-}JmjeH*w3cc%>3n-*X{inLle zZJq0*w}J_BV%(!HaC#y}P$hgO`gk$rrJ|-A4_UuGkl&hQ_TjINo2wJCC@YUfp#5Q> zGKHN?j8Ph?oeZ7Dc2Y9X=#G|JfTmSR`UJkSdGbQvJB&5_VJ5R<$SeB>_wT!wvbYc% z<0r#K^|^B~|0hiT-`3jyN-~xROJcR{)1sxNN`j*Ew z079#m^mqA{rOt%ueR~D!tjnKeu9O%30gD&_(S%jiM-Kr#u|;iB`G&9aFeVNH)|AuT zC2pnn*(n#kt!c!UfMmN&frsrkItwH{TRD<{?VRm(_8)TZ{G+$~fsrxwRBCRUaG!YL z7~0?StR+CQr)IqSXIP2SP+SB=q_L@MOU=9ZfQYLslh}?`hdip|Duuw-YxWQ{K!+~p z@k()ytyh7Cbe)~R3Of9CNd~T-dQn;I%7#y-mV`z*!R~pQ&*P3L)bMelX&%^)XE_p2 z$2+Oq*>c81Tf-sM!!c_3=zYu^NeV|=yY8h8E$yY9-Mo0ALOC%LM*{QhEqzo0DaOir zxXwZ&+KrmQYX~>=Lmrd&>TKZKriLTy$$oWP?yb%uze9R#R8INOU}4kIE*0OEf=EQm zOOnX!Af2VhoCiEed}~Im9o>f*fq(*~cC?V>)BpK^$mTTb@?A88mzoghs(_m*>{v^% z9J;@5H*sx`x8-cwJA>X-bGtPVi`9MtJ?={@(9&Bs*rdDNEW(fdiion*TICztTIDRg zZCuxDV0H4Nz}m_A@DDjR2bn+a}|ziM_!ztqRHPOP)qYl>vt6m-e(jHF!}SgUEXpUG?&wOyJ)V$a*GLwe^k zqJoy5ui3bvu(*D45z`Mr(jLVv%NEp~PI=x)*p>ccD#$&WD}ItR59{_B@^tfFUk9zt zlIV>o8)`VJ@0Uym#J^XditVsc*JpTp^=B3S#|r!>4@SxLv+6AWIYE;B^Ce>CVCVWT zdMsY?U!H)@wNFcq^^EoND<=G?WFd11o|aenMc;h+%FsR1ECP*2j7UBcC_iG6VCj63 z-oCym?4(OjEd+}uB)cC>q}iV@C!Y{*R(?6nJ?a)&7ekSgzOM^EV{(GdKjj(yn^d*B z$b=M>D=d2}LA65`=f*YBW0J=wdO!9xyXaOv1EpwiNGM#e z5u^7Dq0ZIs;JqC!S?d4tsFbXtxYSj^}JAAv~1?C^6G1e2x z6qo|_Xm6NRt;6{QgvdD}}5d zq^B62ndp~t6i}OTJWz_%Mq{IWIHK=N3ZZ`mhDV8_V@FB2H`jR zc;{TdtTJPJvvwJY23i>T118k2ett)@V{z}FfH)jQa2>{M1nM(zGfAxXu^&D(= zMTpqc`v$qxg6vMLaQdUOInKala}CDQPzPE%9KwB#Xd5KXDiuzO0gPKvG^2MND@wkT8>i zJSDw|T!)3UF$O7Qo3GPKUPbvxR5WCxAT?0shbl(=TC5+=+|Qe(8uuT(y<8E00{%j~ zF&6&h^Zl~FGUaEE0^Dkevl6F9>nBM-2Z~JvrrOy`b)P{ij}42kg<^PM_S2jXZQDaQ z=N|T@02Xqag6PpbinnNe8eCV0CN(Q`Fy*m;QjN0(`y4H#$Q#26_-dQkOVP_S_jS`T z=1I9>E9YcqH3J3t&E#5GO?s8-BkC>ODfCHh(<^{^J0lTN{QNKxZvOwp*;~KGnQiOZ z5F|(uJVm$`Zo%E%-Q6WP6c*fF@>Q?3&pzFK*52QB^$+|3y!Fg6 z@9_+op7s1XOm4Iv_D0@lszxkZt?yg%Bgn_dbGn}b1uaIa0q)w_^_y!5vdl%PWofp<4P7`ch_C^$X~ZJ$YUI`{as>POiDlMlPCv63#!JQ7 zIF7nFzwP#oQ~OG~vj%s$Vs{cpj3mqE30lkJB4qHvr%9Cq+mtsJ$aBi71b?MqckIYY z^L{Ts%qTxo_AhZf@3)IP%~4l62yg7(GqY0Jq0nQK<2%3=i_i?5m^s=EJ$srw6Bst> z{)P3cREeRvwW38Vy;X4%`CK)M-}p02Yvz-@iPfu}k3&M?!QjFV*MHN{BSde^GhGR8yg!2I2k%y$~2L5Hp>Y3wk1PJn}hB9?EzhO4n5 z-OF2e)r*T(D#X=tH|*3k21!kv-IC8$L1_X>10k(0U%;hfcNmAi z9kgr@k%P9`+&!(yvplCdpz}-o`JTDpSN}yD6S(&6ijCd04q2{#zB~S*YhBZ6VfbI4 zeBLoX00P<+rmwJjdWtN3->i3;g=2W15%G+95nYHw-KPVfpIVe@7qPp=CIi!gV|eAt zAP$DN6yOT{fGk%cnAE#kQ66x7i7Nbo331r@`a~hbgva4An561V4KWT7T{)*ius6{jme{f{3!+m3(cBKlfdf=3!be zey|SpB>9HiT%IK1nxmP@vOw=QF_M~Fr4Ab<90Si(P7?1giRrz# z{Da5zPm{~2HSfwW26-vMP`Zcwa%qz0>dSxeZ*LUMyJqj%-_WEeIhejM+Nm2UT)QvC zn>hlVDajuTo^Xfcm7j>_@Ba1(<_KpD7N^UCIX| z*g7Y!qV4u@M3#1J(f14`!_cU)miP~%;>mk)3l3uY<0HvsG~hNx0?|+WiRss9PC^4n zkiS!nN`A@0Qw3d$L7v;R7$D${f0WtRwdFHkK@^_^$$K|uaF&bpF^t|17A|Sgs>68I zk@Z$qpH1qy@f>1E zQcopydKr%$P8+wfPnu;p$9}A;!p3asL_p&w`(9+b+I-%-qyobYo1Ct3`4KRLazR%& zi%Mb2GBJYjI8x2GmzY?3$W%Q(TUsaX)v^*Uc<||)nUz?X!3u9#O2Ioh)ah{YgT!C^ zt_f{Ga+Ecx@k}g>g13;X@o2h|y@`0okuRo&Cnf2s0=WFE1-+-ATjQeY`!-7$@r(TTpoGLMQn6mrzwS z<3&Mql|#Dbki5Dp_VCC=yWsD$o=DTwG9bHc)#Bnrob#LhM)~If7V^ki_?prPov4bX zQhB;B3|!(h7|xy4Ls!;7+g<#*%0Ze!{CFpYq5RCiUHc>JPvLZ_tvVg4{U~JG58Jd^zMm%kP2$ZsMPgz1NjiCIfHtezpowoB=u_D-o63H} zgqXteBunz01&AC4Rg~GEl=z{XHgLb;pLspt{aOj6Okev7 z@(x|h|AfJ@--D~sh(C1@~cNy zL-dtgkO#y06f+BU_a$tQ5{a~%wy+fMYT%toR$!kuh6T3hnp!vF!sp*Sb!uVP7y$)x z&<7;zO+y{u9l!jn@riWoaoZXwHFp*lAPA~|c zd&LiaGa>GfI=L?_JDYf*rAZe}&_s{gFiRXcQ#?Th+5S8`db{&R%P^+IJdc5+Adi@y zFd4P2mGEwVHNR@0xUYlDX_l|`Rmpcr+AEUU!3&eGJrPSb3nV9nYum-(@ENwPAL7#~ zs;tqeEpa_MRn#Y<(s{(|P`zLrV)+{5P)iJA1WBduqnmh9fXZTRr&Q|c*+mdL8l`yiUEq6(w@nO*e%=OW{>UPEG z)v~|^`U`Yfdxf)hfUJQPf!F!QL3zjhO7dA#)|XCLhj;GA*xiQ&k=wG+=Ij{}#27!j zZVd1|sr?q1h-0Q?9EHLolx4*gL$}ewl}-j#p_29|Ry)45Rr6CZtbmCL4& z#lCLa_p${!`-Lm#5WyHk3+IKB9pi#r!O!+>jRM5ewqyq|!XblkVBMYm3qYS7lM) zI`vs?H!A5?p<+9Z0&Ju4EFZ*7)pO1v+>L!J4GRim>xoi8fE;n5?-=VVkn)FSR{kcz z7eP7%GVWU0MjP{yI6sloJw7`>M#uZEs{aTk>l4?I(~9@0Vm;^8bvHl z6D}v;-HcY*w=+1=^z_>87d{Vo90V`VG^#tspDuu;=lsh*YC6>{<%ozo9h1)-?OQE- ziJr%n&3~;ACh8?bIKvf#$AN6C29RQGw zy_2tt~QYlsRlZ$x~G8$A}K&D`D0 z-C1Ml;Za6qh;~hv$rYk*PivdfmVLB_ZGu{r2v+kOHm#R9zo1IJuV~(|kYm`Ly-?xYPXYt_xWmf^A0~ zt|0{>7o!AaHszy6%#*^_Ip~}a_XL84*up`0*hrl3QG@8~81Xnr8ZKsgRrrmEm|+uh zY{$q`*tW>&jsZV)QnHaYPJK|2m)%1?% z1f`R~Vr89&8LsTJq&60;TthB1ecx0DO;$d(C8BxvWE=Mr9IAb~U#@eb43%pwQ# zdoJGNuS%0gBZ`ERzu0-?6U92(V9jL8e1c(XFV6X4q+U2Bi+xFp(EhzOA~?$hV_vjT zAsIvVv+xRrhHm{><6g?a9742>YU5y3^Rh=$wye44@G^@>*F5o75YJ4u&n%K!OYt`O zMtY1{l*xYP2_RBF%~4{oIRAVy`Z=^(%-7kK%toDSE8jU)shU%{NlREwNyrXpOSqfF zrn1KS5zACnXc;y!UW=A%uzExf2^FTt!z-M^B%GhMD^fB{MdIN^+FZq@oLu&x9MGdc za)*GLm59q~-t=|qAanVBXgPhR3yy5@xR=AUbUuL68vW%kD*RZ!)ucZ#$aZyTwdW-m zc20}O?oKlht@Sxy2zw5-FF2Ys)Z(Eg+W8?Ynp+eTuX(4GliDi%q#k{lnspC6s-Hd= zZ4H8kct9l4~SMm>v7t%&Pk1Z_w8_mwq?=ASZk`Rq#lwDg?JYn z%j^vk&-ud?Kt?tsq`+b;Y0u}%la2scLP1X$c5|jUVlS(ZUc$VnUTm|_h7fJ{@tETZ z{3d&_q>)&@H4oQ$0yC{N5iSn9kLg07F^YZyy!_Sc5$Y?6dn3XE%a|yZ(E!ktQBk8{lN$~xzY6KQ3n&qfKdmk zWz<`L4BSg~KxA z^@Ms{LT|Vj`MM=^;eCvsut~Ew;+(yW;nVD-T-HkO&9P1j!FtPKCcW(DT5o-W^W2v~ z%cUCuy-`=OWW{-cvXmiyAxitcjGyzsmR!F0yc_lE;Ep~_PDLq#CoDy@cwSxcOEhVq zGjF>{Cyk#a6vwOSXNlUAe4IhIRJJt3RKhWI#@1*Ly~ohDpT=JdJ@{wu%6>VAX&}2| zK5r-XA5+3rmi6weK(>``Uc(1UM@O48Z3)+}pDc(P+xHYP488@eFkeh_$5YIK@LQ4ix`d?ow(GNK=#O-E_2cSe4Uo?KiH%bj}H)6p!@bXWHG*G3+> zIn@V#U82HuzGwa(=J^n@AU5*zcX^pdbZwVe!6rrYCezdAY~MNd;cEYNrRXD(uh{3B zPIAX!oJ(9!oogEl@=u~|m{(!MUm)MDGI$7xX)4`;H-HjfvNz?_X^d`)GHGvAYnl5y zXqa=3xYsn}<^|pUz&|swlU;IYv*vCVzxFQCXr8oULM94zlsbSwqf?!nCx%A@Md@%W zt2%#rztMN*ZbE;SvMMK%#v77nwH$F!>WNU&0`}B?AzyD;*x|upVgNKF;T?`q8 zO$}`o?VViyiw+d!WcmbAeCG!9rBrl|hx9}hkzu{mpfSA=NT^Od)95Co(-K`)v&i8B zw|WS-V$djaycAK9pWV#&ed(_6-mVY~zW#vt@Wh|?^QL;wFnt=tf^$4?291lhrlM!z zEp9=87Y#RAAcdLp=~!5g-V9xBittu^g;wGb-5NlN2GKp42mQ?=A zqGaDWvB-w2Rgt%iqkxaNzGyVlzd$B?_dTbX5`|SUZPz5_<3n^ZUatskKdx@?h5*_w zsekog__>_YWi{=ygNXo{#2U<}t0X3&FQt-aUT!x4ukxXQY#mPDdYHb%&!R;f+7kEQ z9>DvB?Liw=ApMDzhd)hX{n0Ly-L{gF3jUN&;8!MC{sU$G>2r$M7&<#U7`j*}n>yRu zxcztCQF&Dw{9XCVEWwSF9gEMeN$Qr}8e-5&D1qT>n@xwah5e#&4f9>I$q4)pkbViD z)58}La*=tOesHmxyM5Wr`~q>3Z9o(yMP3MyH6HAy+jkj1)|{>xj@`I^r*Ou4qZ48c zd&*Rf0L<8d0o|MxlH|(hUsAIi1vA`NdG1pGCM_Om#bQm!5R`1wz8Axuw>f)qQ|Yg{ zDARR%o<4B&88dwq?$6o8m|?grg&(Ol;zHWkZJa78r6Xl5KK;l|9OCZkC|r_8qju__ z&w?#Mudyc02r$Bz*-h?i8^#>UOr!su=O`tVGE8J`ghR`%E>~`-Hv|lm(*&&k&go%# zVV~71AlA*Te?;tkYyvIYW$rx-UM*670s`o%4u_e{Fk71`g>o~G;h6!7VSyT-9{TL? z-!ZrO0uun1A3>(K?eCIebCLVA=aP@|L}>%#rz1<}aB1Pas5OZc>#J<013kA-{Wzj@&tQ5TwL+04IF+ zYtEh5>*pEkFP9J7q!42dbU{+OP1Q+4?~X}Rx`BS}IfMlO77rC2`>5Q=CVHErTYSW& zo2N6X#*565dwNwmAEMZcduUOyZn)h5N{3D_iH&$W71(Dxxe&kVE{53e;bt9q?Ty_n zcA^rG;Kxg;31a47UIk0#hhL7(6*x-+iq<+-<*LL4mn~ZLr@1WJbZT>6)D`^#+w@7~ zrAOqmHH|yR^C}{o|!=8t-_0 z6$CEaxZk@nt|i`@<;#^3r*oSAI`%zbo43tMaQ;0=*-8J1?cVVm$#Ku8mUAIRsc=Yt z=0@Sqrx}$3QKm!EyWpw{0He>4`Dtf#$ zJPO?9Qdg;Ubl3628RO|KJ0CQ5^qg*ZUYT^PXy7*NTfJicijUP<3NAgyAj1@9PAYQ& z_I&vipNg$^xW<=1$54No8(#T27#)SfYrGANim9fm{=9Z;;}fZ1Ghc1JtvM#nry1C%S>`1wd-rW64{~5}x{TzmXXNO2~^>_HJRw?F4-e#uG z!bbS|WO z=8qXB07=B`)>v<@$7z2#`XoHX85|WseFYk`w4zozU zVv!0Wu?+M}%}$%v-ArtuA%5AF%0V1?eTSlzmK#ck|0A>8dP&hg#Rz#_&GxSv?;ri2WX( z6+|{a<1C~QOBsY1bx5D6&3++XXec%dYo1GZMW|$<>3MEz9$d(eWmMTGn;qARUdi+1 zw-iRLVv6qiSU>dLC$b(!C$yz2g<8{`-K_KD@n@l=LFPf2D*tHz4uk{+Y9>dLLu;k^ z<3Eqm{t>|Wtngsk!2uid1 zmzceX!ost~Il{d=E$s6tb+pqS>U>cp0A4Z%hx%!UaH|NPOyd&B~eP-Z4HK8y1L_ zwqf0MGoiX==o5amv)T#nS&3*3%=sCY^T34bBKnf*jv*#pLA7-hJT&{jDI{}m+FQMh z5OUY%OP*VOa4q;~{GCkLwPl~WA$3=h>^p8m3dQhUuvzh1y+%g(3U`vBz4s2c$*<^` z5AaqLtc~L~@^O$Osh`aEkK!PbiKt!Ey6CfzUQ&n$wo2hvYBnN7U;Pe=q zenDmjY@C`9@|cqlnKt;NtkLVIC#}ArS^4p!iXEtOYAF9`DSR&7!6uU~QoVlom z$WJmfy-B1WsbMGFqc6`5x|^gWS2Hl(yY^;~^6nL3cfjX;E7Ht=L0kU#nrvB- zpE&jQ?yn*KgM$iY16Ts*;6M8RT?+rN4CEBX5PAgx8S@eiUek4)j7I}7RhgL3LY9|M ziySvSwTW)@Pu2u45CYO`Bonn^F?TTXT(RNS>0p?*pKfY8{jRRn}6 z)N5D3w6$`5_Aap}ddm*_jM0C)0(^6532D6B#`A$7l#Xm|O^FQ_aq8sFY~uL}c`-v9ZcxiyZQri7CiP6po&gW(1JT zp~lTo`r3@{SoWn{OA?}IQ)g^p)Iw`1cM(LQdd^E}fkJ58VCu!`>D`;fs$w zG1DR!7h}*DBn67r!fPZ3_6kOX*Jn>J0Z=cvcbzz$0m4(>Qeu8?ykZWy?~&KbMDdwR9;m zGu|iDAh37{aaUo`(P%1Pq!AyTrrNO##WF7UvRZj3S^RVj(xBgwY_6=fTH6_Pb1XXX zrroV@Y%_x|5*$G+wDpPr%#~Eu4UGZ##-h>;e$l2j{Bv+K@oH;b;H5eDBB zGp(FLbLT!BW!4+JgIa7LC%~ZCeKWpt@4#0oCq6?LJiNSQU@+bINv?=SU2b`=N8WJR z*RS98W+yY6rJv3~R~1Q=v7g;_EjmVuuAizShZ|F)dRUvj ziea=A_R1J)c+=%?gCx)77AB8(+In4k7Djt+`d*4H$p(}3Mw#Ll!v<``(BAGWEv~ra z2bLVDUAcIyTs;|cc~t2v;+MpB6j;kBWx#YdN=2)^HTIy$@ak)5GZc`KpY($36)DI0 z#suyAc_`2Up&+W5o@`OP{^RVb_{~SByr?x^iA`!yav)F=ZA(##A?|`Hf z)(VOVG3XOvoFX;C^vj^OXbEYM_h8(f)~_d!k0seObw`9X37EWtWWRj>kQeFPDAq67 z@W9ga7k8%l1*57otVogF%3$4!S&xJMMW9#`Lx=LNdL~cd^e6Eys>B@Q zjjeQA%ptvP`2`2;dDB&n444QNgeU%0E9#l}uP&9{NwL_lMqUHd)@|uY>U(V~8OPja zIs3S3RZkF*Ato%}o`du}3R7>-I>^+tDT4EQMGA=m&xZit4oN zMHaiV%$c2YYl9pQ92zqr5i}&tMERD$ZGVezk0 zidhob@%{Rye6^&g4G-TezogOQh*wy>)GQfDnxqAp+7V)ta+b^m9Vrg^0+vryO+noO z=M{yq7ow64#SLyog7*#cP2)WruN*ltsw{ciu1N45s{Dx%cW~{u#(DE%w8d!j8zR9Q zdSMTVkWR`AR*w(|DS; zcIGq{_cWdotBSLqzIIKw-Laj?$P3%C_qo@4C4*)9^14{|%71I7BFhZKFFS z(x&eK-IxcCw~X^cFrkxz(=7Gom6kjW0G0`myF_t?SxQ{+GoK`xrf;7M1-m|)=T7#r zH*P_nYr@tz`P>=*x;fkULu&#JO)0nQI>kWxnZ?vc(rsw&Badt&nIREgBaf#q_Pw#+ zJ(1E?ZjLu9nV^8+_Uj?d(Hg}lT~eTj(8rZf>=C9Rx%l!&?E+!@dA_0M7kZZ?H~2nr`jbxUo{U=E~oMbVsq4p3Adm=S}uraiF`~ZrZk7wFoUZ=LDi)56*_?n zbK>xX-h()TkNwE)L-wcw*T{yH5+G%XLo13Zda?p=`{o0R6D{$9bK@>qo8Q5T4m@Vf zMX=j4^Jvh;ZUM^FSH<~<`>jNnXcge6V(d<}R#7K= zJJUa0!@uZN%~oMf5yQ`pb47_p6=P2f)n)i+tlig#cezkTY$eixI7dxwx3JREGOf`U zBC?5_SNcf^^ zWEqw(vF6T;IvIDJaoje;+vmbibFUdf+=2Z$FlWro_p-i53v=69|5kF&_C5QVn#V8c zmJ-=9)e$dhfKLrx@C*y`F^LHi!E+}Z7N0!xaCQb;@(HtOX}PV8699^f2X3kShul=@ zHGUbMSdNaZXfDCQ=AcwzXoo*bZhjM7l3~4?d|9A9OlPD(*)|0f_F^0-o8v-3GpuP5 zl~kDF5e6LKNqQR28k9pTG4CF?+z-3C58G;h`#DH{WP&O3MMZ>djm6=UJ75il-F&i} zZ```sehYFGaR1wR7EmZVdG+~Gpv*25cfyK-`WJDM*Kh(FXB=^2{9HAf*Q{$O=WVeu z0FmDPAlcNqVFkZkowVr0q(<^tiEH51ZqLy`ewFn_gLH-Iz`??0L6(O=lhlcC%0&a1TOpnXABsG~tb9{Tp^v-CFq>&ppIh#{20zllE$4_AW$I!W9OVovi6f zgIl=9bbYHWBo+@D>W)65jUi&-2ZJE1_W3`-4?4 z{tr|yW@m2spJZ|M2egrQ#e}#KPI?RyD+S6}tP1k+=t9=@x z;jh&Ob*jMPzz_1=At%3+#CYao6qb-_kw?3TVHorfbEDv~2nY-xj z=KYAh|J!|~UWJ8kZX5cdy^-RGt@5zB*jw``Q!#Q~8Yrqh*%$d3mlLscY%(F6h`=^F z8s>glyuL9+CpmsZ&40O5m%WF>w-~03`b-*+)g3;#fM7dRe?mkSd)7riFS%jCbYof( z6#oOqKL~XgUCJGb?nlzIBo-T_SS6*_RGd169C78r)tBtu#_tcZX@UB=G>;JH4$;M^ zBixfaB)goeF##NbavSguTS_2l;BBoXB|biY+GXXOUxe#`fmZJ1=dLI5(tD; z1u@uzMO6L646;1I39!tfLdyAHdQGV;6+xt@)iS5mRt#N8ZXUC3p-23=;YwDJ5nyil zn3x%+uRjC>3fg7-P2_8WLlNx~jxd!|e$@512>(tj)0V*j*so~E)ywJC2F8)jf8j`9PPO;ifq2_nBf7bz3;P2|%FZ&Ge1R3!{|1r|dSpNg zdG!@I9I1xwLa9ZY0@YlJqm1pY7g{5b{xhkZ7#K(zf^_P<8b^NJSU*zqt@x`j9ec~s}gMX6^`y>Cy7(ACNsW3pc8~EY(C6~EXg;#uk>>73JsLC2N9H@ zQQJ5|)+w@z$&{!F0)NQTuwFhyezJ1yJI$`0`UPFGe>n)ns3 z`&0Pc-^Tg`e4t+(z{ac-xDWfEWSo+&Ha5zJ#$ea>|5`E?YC6ty;uvr0@?;XIJ?!pq zvBIJFZA7c^OM*mXNK)1e0|rogjo-0I6-~tBSRwsBAoH@KOUjyaGePm*aNZO#)tj4s ziw!e0T1j4a?p$}inhrjcyed)qF7zSxO25~i_xd?i;}iY7c~ z`G-!2QQj>x!xL@hc?!vNklixs1{_XSy&ey?DYks0EuW^zFYKx$n7+aG({RLwWt?rj zZPpLOmp%(1`S0G1^XUfP@<*px)tocN*3goh4-jK|Qrz^mqj)khv#(iCl@Gt1#)6J~ z$jE_uBR&gdDc5z;hu5CYba1@hg&*MrOg2ZPirzQ*pP~gBCFA^L>jMgRSA08o%wzh9 zqyjc?>a!XfgT{cmiI0)GwE&UL?EoQ0RqIT03R|sE{EA9^ukM590NbB-28fN)VIcLw zk~u%-3)(BdbLZt1S<}0=BjrRrei?Xf`>l5jaZif8cLjAauzr1}P%yeP4hw>)tjhC>kWrVJH(HKN zPtZq9zv(iFga|w=@K07jYZFaZL;{o-8XG$&P%1*RhkxL*_XyU8oN9*>r)KCQHdWL6 z^>}@bH}-h??T0_{fi&*8SrlL3ewjxEq{BhWHhj|E%Aibf&aR)EKZrY04AW@5Z!18= z$XAB?1n_wdgIf(4Mc+2XrPb-A6U>v5fVD4|CQ0nP!H@U!g%5uS3?)}rb59-AhV#8S zUlC=sXVs*mpoD&1B2nD!CUSXi*_TgUe_V1SLscRssvlcuKv_Yv4ykX5RUuAw{A)me zn0nVOl8y>UYm%9fw%5`Sm!@Xp@Sr=yRr9hv%` z-GZH3#**+3-4e-tCI$*)7a|8YAx5$~0Go<7Xd;E;mm+Ri$qk9-aU|PXS=M@)q>`T& zRl%i7%2H6y9`OnMp?EQ_$WJ**um_W?noOLba_j%M%ja4sCM6tv`FsO|mgGMGEh$?E zR~u(=f?;X*w+zGkj|}7Yx?Q~vwW3nOHPY_wPQvs=~}CRQR|p@ckya1LYgd5 z%B#PlmG;HbDbtacGQ%`weDH2k4Lc4os@33EExrP;Wu->Q???^3S(nu)TzA?v_xv?w zFlyb{I{M}v!Wxxqdu*fKLv6ESM`TjIz$B|+*HRD3QC@RWEi5$>a{&X&*Do~6D_oZl z9+KFxfSoF~K$6f>iybnR=?#AzDWb432b1)>xNw$~MTdAu0PW?cPi;5Ksv)&%3Hkj@ zjtJ1OzAZC1;Pir2V!=IS`6uq??jPyJFTtYSLTqvQMO36Fz}g@_l)KP+DzgJ}9q!pD zkFQ+7$KP3;LDcB=y7DLrW!AakQ0d_jZ7~IBtOY+OOe9VAM9Wh$0jJ<}!q&_uSF%s{ z^JOD`!}|Lau`n&J0Wkr7MD46?<0x$Ij4wcOtjYSk0Ctg~1{+E^_`+*8NHrYRpU=}b7&ngyjz+7@9@Hfx2E@_I{5v+H?f2wyo7gHxYLz_S9 zEPuYm3e=A6(1bAF%v$K^%Eam$u<}%E3KZJ}YxIj3w2f?p=R=8~oWFjztJ52=Wou6g zL()eh?8ai6ac9od%6_40Tz)d&2YaTElctm7Zx7eEJYU~sT1>}=&w>pgfDCTZcl8=H zAqpU!I(x7KWjH&y(m-=Xg8(pepE}8R0z8J(>*lqXhc&LVc=WM+5Gx`rr*LmkTKChr zu4l2FYFV!jRv|f%o8wrg2O6z3-AhLiH_zE2087FxBe2$kS{*hnTE&t?3)Z*Pqj(DE zzYS)~CU%~#R65w4)pUU5B|Zb5Ds2(Xhd>xWCeyCNeEB$K-yCFRBTY$-75TAW_?qJ1 z?jvoNT*tkZF!8IxQ7C@|PQD@L=MF;vlYWDzVoA>n@^74+Mp(?lC_gaC{ZVH5HbSMa z{)W~#5{~{H4-L*fYgV?8_{AsT^V+ZrtYU^38&T^ zd0Tyl^;b`Gb)a1-1T1SIu&nKtVtgMQ2FhcBKNDiS?BG0l^^mQZQQfb^@MA9j9OjU+LeYUXdYc7Gh z-*Z%NMJ?Dl^k%NoJ~ruDYk))fCvYeie{`jvrOD^p*6+i7V}YsqoQYn^LYGpLXKn=; zxm6co$}fwi%xq{n?)4uyX3(l#NSav3y~i)PkCc*1G;EfprXi{R;vj&+A9Oi?9o%*1 zBrSAc?O3uK{cg4c)(sqp4b^r0=8kOI)Vq1qxd6UJ8z00_Y6!RTReERQGuYM)Aw*dH zT#Yt!FqD+J#aa@u_Z0%Vv+e6wI_U{`YB!8u*UXw87&v2lw4nMVWh|xo^q}sm>2%1r zbAXso_d>=w?Ve-ZE=b6L@|^PRoB&r2LokuT{M*ct_bB=# zIK+_$n<9^)Cd51!@TGy}Npim3TLd>EqI_2`@-qS?^WW`EkkzEon?-en097{^w7c=K zHdi6O)o&*hZ3JD8sS)16EghH|^ZTqZ z9sGOGxq%-!_`?>0dQg+~@qyfFG2J4COL&-SImpO(=IOfrby`GtE&whK`~Kk$N$D>9 z*&WKA4zo`A6&R8Wi~~x6k=?5K2s)KSWaLiNVnIW1<_7m;Rm&m}?%npH=Ws=02v*{- zHrX-i{ZZwG`QcT@4%ar=66Lr%y+jbHT`NZf60BbK$1i%RJxqBlkSna%EjH_Hcaokq zvQn3@+%PyQ)N=%Pt+}*2q&^2+;6x6AnWc7&8X1N!bd1s&f=2DvjG53gtCtCi$oG=L1zQZL9qnlua<7XmzJUlm2z=ZWTLLQ8@Bwv@x52@)a6%UBbQzg~YXnALIK;JAPUjtdh10Q;oOKR3q1iE8~2HCnaa369QqamVRk9{Eg=0>)b0>lR7e7~05BT9 zc{apm#=?YIWnw_hUuG!Z*ACG1BFbv(7A z=BNoPv@AJ==#m|f4>|Xm0w0BK&W(bI8$eCaeToy8{nwLjD#IG>hjA1d*S2RI%`O;c z)GDQ_z-?DzPM?+uKAm!B9Jmn!-fLcB4PAMyVH0vY_D2CDWp`g5X`>XXd7ovD`$j$1 zEpIb+K*8KeFiEJ_ubp7(1MrGE+%uN1Ir#qKHLKORacJI{VsyY3R#AiLV?T)%qX{Jy zLY@&DvxsvisJ>wwY+-e&d$u*s3y9q;c%IpKUJTfz3&pYDtQqeI%HA6ic zo6n7;yw4SoGM1&kJ2-*mr4ue(VjeSVXl}#RC_FZd>QBiA1DT{Ewb@CAgEuDFTa9un zFE$0j-ZmNAmah|e)}0SJxH1K){I|o_L)Yc;v(}6sm#_=pQghwkGai1x{;BQ$>e}EZ zJNt!QQUQdg$x-$p^sR;r?I=^yJ9C;h2imbibweW8+455m)^FTglqGc_>a8tnWW8V)1{XZzp>b*MBuZ|2Y^GfC2AcRlueO zof73jlC9P05^vPj9?^+NRPm2eAIVd-Uc8p{#HB2yR=>Z}qr>-u@yza7KvD`bfxN5Y=$CmENgo!!IDWQ>)6@o#uSRr_`;Kk-eG8wfaaa-4LD2^ zKmp9*522q+Jo}>h?D{6NJx1F*Hw{5ajG~)r7mga(y?-+>k%&IGy(Yqd4651lB(Z48 z2#g&NpEU{h7gn}Sg&JXAqjr5Uu!y?Xqun*O<_mvUBoHo&tr5FTrZU_z7RjawFuu;C zJ4R-5kHPi4r9e9+gzz=AS^4;RA}QihjZz6knjuMF3aJ38DuhQFq<6mBRB z3eo|qbmkuxGQi7+z>_Y{f0ZaW0)x})!Y12fdb(R!qk4-({a{-}Pyu-Ul~gK^f<20n zU$$w^&2gE%O=q_2ze2DC&Xf(J#k;hD|BtkHiq5>vzILlpv6IRZTTg7;w#|xBv6G5z z+qPY?ZQFLm*m?Wyy}$1M#`t#c|31h`M#jj&@5a2>yw+TwxtSTdW>_%;>35 z(kd5OMIaitZ)0k3Kr`ntz#pCKQQ6^X!bwdjQiDzj!(SePjP&aR*7OBYKt=Lb?#Xc5`CP0Xd0<2%pdavk@=3E ziYLthw)X2ZDeVy|UAM@z!#B&A*<)4-ci6Cxc>I9O(~w~YbabPVb~GvMAweEK2j*@E zZCn($texOtd%+EL0SkYF`qKRoB!hj!zD~qY0?|#Bz2Cz-n9Hg4A?F;{{5pl~W3uQx zf#F>SPm~5gF(td<@A;A0>Dvy$jE8-*@d5yTle(cgEixN>DF&qI1uLo{e2V)EA@d}I zo!V-*oFcP2$>O3p-G5)Z zt{dO6i$B+{^{0a1{~w&NO8SofSpfa#>lymD9e1`0zm7+VS`O_Q4EtPLUhW5tI>V3~poe1SCWjf~k^r2QsfwEi5&t-qJGFMnG2v`u{K3(z zPY>+2XsiLQSm`ge3`UG6EGF=25?T3iI%+l>LF?3Gk7^o|83~A*P{MkaRkZ4%vrvn+ zU!^H;TVIz-C+07g+P3v*OP**OX626{ZtisK{@$_HY=(WdA4Iw+9f!)|p$XWJ;Rz4{ zp8TRE2^CzSlEqabV+&><-lsY>vA^610F&rIj`MILcMo%h>f9tmHxz`(Ci821PS(QB zn!AJ2t-Qd?WnuM{*{l}%q)sFQ-FCGqY|fA*065PXkburj9#9Bz%z z(MQ>hR`mdh)Ao1X10pfBc#>sJH$}Zy1$PVs=LP#v_Ts*Edwn@av;|uQKBk5n#wF`7 z`eEmZvaMq)wEC9yVfV4lk2i|&APrL|@qRfSXLj7Xh5?3RIoP3!DK=xIv*8GB^q`-A z->aJ4++|R&oQ@Oy+)m2pHc0>61~UJXZSd31#^}e-zvk9_c3k}@ zc2w~%*b($6fAJS~v_P=_hH@&op51m=1g zJ4x=7?Cgi^mk(Yq?@yH8X5~jywpDSFP&nE{=0nGyzI3mU4sKjVb5se98ks4XdGZ2X zZ+2jtQ#3gpiex2Z#Y!a+m-FC`@*oEyKYltULQ6x-Ya_O;MPG$|(*fkK%y2ZzMR+s} z2gsk`QQ_iM z*-i^}8jDNj${a557Pwms%Txre_&9y|hax`{7twtY+;LSS+%7$sZqjqm^`=hzrweqPD$-k^+&B>#a4Ir7_0?YnY}KUN^Df@c zD8_)@f$=*L6{YPdoij zQ25`x?&H7O58g?AESIQ|zp}T-6tnwF_YgqiLgr3?F*o3vq6qo{D@ol}G9K6iam`;Y zApGm`3s1b!Br=M$oZyp5;Y(U(M`7FHY15?cm;7r5VKfmAQw(LKz)HdpB}74rj0iA# z>>f5!C8?cSp+XKDFjc|if$;pwVZT#oYqI7Ny+neoN{o52Pw1?{zbt7%N?+3`15Mgf zQK_tl$~Nh=Ww{6}Dh+r+(IEW%g^{OYYYL89DC7O5}hgLXV_C}rS!+B z=!b0?*$pv?;wbA`>ORBWkHsg_MQNFt&+Ja48;Nf0Z=WD`(eM5G{Psr=P4Sj|^a1!B zAO7)W<{~mw*r#Z}@jelwWK1_(DM3~@V&av|Hor8whkM-NwkYQ0s>IwASQ7VYjnntJ_;?Lhq>JD$F-#0ZT**)Q2(McnMLq z7ncAbCzclVxC|S5OwFgJ)LG5DV1m9dVF99Jhu9Oty)M*c)n0axiW>*2-l;{cR01_r zYyQ?r8-kTRYob1z`W$I=6k3SUDkJ3ga^tGH`+)d(0suVy(z}D9YWf)Ln{x1W@QWn# z2>-FGmOY%J?jAs4_6dd$Orb>HR^~j)smY)SD@Kh-Xm_AN+xp-al(M?QS@;W=}?fj;_DDpV$YZ9)chO+ zL?FT73VC{^g^MKSs%dAVU!#!o3p~hizfjW+6hEHRR1L~z;7^DX7J(!Y9{$^1aU9pi zh=~{kwwn`fj$fGPf}F>AqQTPHS<-|9G=_oFt}=bjaPt|_a~RMuCq6vW1nIX-TAx9o zS3&&zI^}I_vOq5kIj(D@a#wE?XA-X?czlUt16%;nD1$WAjoc}J}V4*tVf8HslRD67*1J3r(e>m7*-^q5}N4$$6Q99EfVjs9J-_r4TJG~(2{ETooNI8z1 zi}GOD;o|;@$3~UNtPMJ#QK2x$GmV)h8_DItHKkB9#9QhLCDv_+bm=y^^wv2E)sb@r ziLPl-cUJW)B;+Ukg~!rN?F%nD=aB@qXzi@VF$X%3*nkRFoj>nLTa?lCFzY;s&HjXd zyO{qAkFAgzmBV;m@U_uo>((fvQE^#9A@I8%c@S2+W^*NolbA8B{iUzqgtHoJh(5f` z-)wzu?Wz)Ysj*K6z3xVdJkAybFT?PJ{hAa53a!O!z*Z*~L|-8`3I>OO-c_C1ULL|o z+pkX6ChQuIZcO`WgH(Z6R1@el*UAePrAYt0!LiOpEA+9x6SL0L-!TA8Urlupaj{&1 zDrE?NldZ|$PVqS;V~qc3TZb(SpS)osXs`Gg3jW7}hx`mF(XB5YdGRki7On<)_(}E42Au5USIkKjg7YY;i?jh!Ms3?#-&yn%GS+`>757nxbi2uxO zTOh?SPLMvn$;a|az;G10p9d)v+NXUjG((x{O9&BP?@2r!laDxm8!#z%^CIR+D9+ED zL9ypcvkiS6xCeDkQ7LGBjvu%JNuypAyzv}(7v$;Co=JhtH-5>_?%fzPHizaw;o=Ok zDoe|vhJn!-ZmrTyRyII00I$D7L(CeEWcSI%f?EsF^ZP_KtgEbA&wJ?Oo!w<4Ak7;J z0d|!@Q0<#+fim1!o9$s1LP5hi?}Xp-F-V{p1w#%$hoE=S*vuvJxz8bI<4A zw_Zf@^7F-8s>I>>QH*9Nnxp|ctX)NkZcM!jn0yhn+V0%53Zh~kJ+&$7_tZQwG*nP9 z8j`8j`PsW~dqm z?GK71H^98cVmO*?Byg`N3S6)i*n{f)taR9r%S^CNjMlVB_GV^~oOU3VluUmtp9Rs$ zWb{@pp90ESEx;QlbIbKDaeU-rwkpn>FvzD|edgpZP-%aJKK=$W1R2VEbp1X91_6=?*GSXb4qL{<(Eo{dAq?K4||dl=+cOZY zpwWkn1UB8q1-?m?<)5!m8QxW>sL6i)7?QUGO)^4wOp!4HS|uE_NH6+={4^T%2U$JQ zOq4|$tTemye*-NRZ-b{aK1I}DllcVx2O{e4mHMx%v_j=?@nq~{SxbfN`w#(gz{eWm zg7n#H;R{u)ceNnSFwl?)XU&4r5mKcOfHqC|T%zjtmd)it^ha4K7aN&XofpT)doNM6 zn_r0K=ceF@_$0M@y@+4M8g~i7nYDV10IGXl^HCOuqO9 zTeR!_<8pg@3$0p-VEwiWWku~^D-8E@^^V4p8$?HJ|a>M|W2rEX{{!*w*NS>Kj0u2EY)7oDOIy-Uu#!&DlWbhSh=YTH7LPIK|q zhd+&4HN!WVZl4+3Y|n|muw<7m@`x>1P@#2nt7_$-tyCJ|c* z*#QTEPO?ddK1`rLJu)a;2?We_mPHqz)TdqXpugoIOkf~w@ftG9k*iw~FzLWG2!lg= zEdho!n%715N?Xy5xYjX}@~SCsgF(X@)*Q0Gih?Y?2_Yz{rgPFgkRhr}3&lEEL7`mC z+n)DfJls!HK=_9=u(FlKNG^$ZXv`wezOBpBiKUw+lOZ)^G}M|3!b~K#K!89l{UPXNQd&vD(rn} zHwocLjVfg2#rkk6U8y$(Pzq;j1i#lRhORECf4m9)jJc$R_=V_Q;ftFWtV{ zMRy9EKf={_QaT)%hRQtYZcLBmBk1@lIXnc9Kwebna{jP@mETo0(HG}sM{2ztuE)*3 z697<%{N}()M}G~v&T&G273k!Ei9*|uae`4?w{V%oTx+`68TC74AWqX%kQW)hTxJYh z;;ujGo9FZrh1xE*MQ{hT5MHhl{lVw^(D@7%we&MVZQv``i?K05c4jhqmLTSfnpstlc)9XIYrV zJ0Fare6*wY52H3G9>#xdyhJ{DUjDw^y*9z~0_7vp)b!T05h)y0e`g!SL$IeJ73_C~ z%8Do0<`TuV-Bm=!P1x=>#Pz_;vfZsi<^kqGMzz@T_Z%9<+uXw-caY_U*F{M_#)jKX z@DOZ|G9=pFQzCaz7_ysml5U?esMy?NA$O4Hh1PAxURhzxr@uw|UyfYaea6dn(B?(f z@kU<>V*E*ei}A-BUFurS5_>EOC!Khg>WO1$w7EY-_9Dm&sOyZsqQqEbb1(AO9W_1t z9Q^XCB9e4Ie@Xnh;fMR0^W|4x7V)e4fK0mcE^YdI0`EKN?&V_;#7AG}53Yb;qmKyh zrvtNKk9ah#*RVyCt=HJ{;H-vVWBqn(R7ta3tfPlYvB{bSV90S8UD+MCuQkwV)jNDl`a{WM$yn`nQ!`wo*lE^nE7-)OAwhE z#q{a31XSx!quqr52v=lZtX2dbYx4iHnUkw1E}>sz`(qLIR$4~fvB}^!V0vpw@v>Se zYj!Rl;a!=c+_*npu@;J?EEJYw&O*O_PnH_}GY__m=A0aF1DVNJg;G#P`W#=-T9ho? zHi{h8J$JV^l|38&)Ia_V`bpVSj@j>(8~#AUkY6J!&=QCEw?v58ah(n-Ck%uFSQSaqshNnhe%Vu-lgBb{Iz`tD=jDQU*CRF8g0l)`A|$TsSv!wq(`{whCM@w8u)^3q&Kr zr^R!&o?O1-%u~qDQ7>n54Y$SY)d_@9%c&tz7Bbo-TTc^kzG&6~INrb$U+)3qHqwo` zh1wT(-nt*QZH-2hR25EFrnz0gqpO(}?RPhQ+&z@Z1k7v*szm_aiy9Y4rl>FZ02ThW zSIkhn^7CcrF{KUw_-??49G{Z>GR(Lf+042{I6PQ!W_r--tmHJGGk(U zrcEiEvFYe@tt@TDzD+GimMCUn(xpOQ<<((Kz^t1eSC}(A?D+CX%8YHihLZ&YN{xHm zW8mqq#!)zqjJ$-OX(&3!A+?8uY5_5*=A6$s(F(?MQ=+Ajlob^B{ncaTD2HZYQ#!Qf zkOX?_fodIvB@$(VT1pRU9SN*tAzJA9bT%#`&OXm>HB#$%@!Z*smqkI(hTI#F3J{m|zu< z?^dx!o(xW6;aOT)L`%|pv|pjifJJh$(L;Vtsf@NwcD^`15qP$;EttA#E+c9_OMpyQ z8sp830r~?w6FA};Sismwye4soj1!@@!gf3@1udLH&4_;UXL>}v-b*Rw3RM~|h?xjq zBjYZS6fP7hA8l?@4(wCOI zHXP@v+5S@vx^}rM+FU&40pB9?WK)8-V&Xz1T3|KQ)7FPR=RUWe$4}T9A4VJ5+%9)$ zFcLf1%x^kQ;3MoP2YQ`f(E8+vy9^+j=>n0z(%5+y(8ojB)O^!I7Hs)KiM<7&rvhv- zK)4vej)J))d@B#v5BQ?W(WOkU1ZC6kP3ya0!xsx|Ju6t9ua%D8rv}B}x7;9(!g6%H z;oz(31K~i{j=r$=PZ4*O;cOkCH$vK!eY1?r5%ykW>sml>gtBS-W*L^F?TrIp%@|1Y z)oFDL3Ta+->J~q7%AUli+YUt^Pa&j}8}%{>ZI3gvi-RkKgDc?A z*f+c~A?{Uw@WyWumXKJ<0TE}`mIe96D*AlUnORm0c*A!R3hC48;2+rdLlZD`o zkg5|j)t%ud?YHIcEXT`++Prf^+e6pvj~utZQgMdh(4XbQt}55QFx}5hUous4NAO&T zM_&D)zd2eK(5cTwS(OW6xyct)n=-cu(d=q*ztXS<*j5oukTfrTPaWawdX_Rn}or3EAt+;eh_;ydDzxw;WJWP#vdwo^APch34s^Bf3>2Qgu;EmWp zPe-Ce?*PY6tAxLSB1`ox(W*IGk zi8pcf`&BL|1i7{@CACzMLXS&}a@IK*sV5ScAf<3qiJo=}-*c zxZ%*YqqeX}e4ckE5Fy!_X8l&w7GIiNOiwc)hkyf?e8;jza3s>Y0FzjK$Pqy#u!U}DMy29-+gNz<1G`Vr6vf3;03iShTI| zr|VSTmGfIb1iutYxhmLELs;O%9%Eg?J5vdEHV%4ZN^4+%a3D|d_h@U?5Z6cYA(Pr{ z;6!>gU4Cb+g5@g!uN>v4xym1`fB!y7oYEORP@gs+=9e$P|MU0x`>p=Zv?*0650rU~ z4_PPHx@9Q=Ur;O`XyPv8@4>!yU_OY*A*9i@^pH!2PR_Bgmc|Rq>ZX>{1~nCP3p$Pc zDys?!xZR~BeEA9%vgc-(E4}7FKYK@3RGvNS;>Iub_!nMlH#ra9J}%uiUp79*xvqD5 zi@s7NfDmZ;DCoOKh(>yZm8PTpvcT+d?xDjR0An`^ex zPZ8#D8pS^QdFv6BpPEJj_VUGaf+sUie$W^Zq9T8rV2bi#GKC1y@#8^-W(DNG60 zibXS32(UAAR>lL>LZg2;r}EjO2;Yf3s+0Z+Iy?Iw33Q4|181M zq5u|#T4|6|>)#t2v^$sSLd&xlbCdQjZI?Q<TSY*yxz7FuBXw(fbY#?@moQWLoMM?6oarL-~oDcaV42md1g}O|q$2UV5Ue;WMyG(#vmZ^9)_M}h- zf~N>Wu#+dx(K^390yyvBR+mR)L_ezZ{deRbKwdNAvJln=bq8|Fo;-G1bx-fm~aaP{`CA#fNJdGz#z zOm6x3EKt?dwFZl{o`q_~D<&~kkIhz|hQN@GnvUXIr zXHcOV-%GYm`pB`&sHB%_1-j8N$oG^_vV~4}GGblBATAY`7$AQ|(XPQC4newPYWchj zTdf}E2)$5e)(;N$s|yccDbyCuOa93Cp1W1$qBF3G@{02jeJu<2(SrfTy1fa#Qq4aA z1O4vjNt_{!!wvS)|AEpTTnEi^?U7+wX<*NsM&m%a6iyB8wp5^6y*xrX;`!UMQh#>P zb9G58jGEzhNOong60s{4i&5C5OlUCibf!#eD4+!N1!Xu$6VMLzQ-zrKLO$Cd17EEN z`#Z%-ORcTG?S(`#>ptJea!9{r$ob5U6Tj+xsLceT_Nb4Vh-~c2TmabOeg4DxlVX;- z8~0KkDPuWu*o0@li}jCXA4`IiRE!Ht#CEi4eOi}J!UshRjl~g;GPT5rd^9jB{_F^OM?%l>+y-+9=dM>|EBmD zx?lvtD*Vt)Or0#RSmtwenk7W(unq_>ssSeIG@2_q3}Q~ENPTulCT-!Hh5&s>{7!Sc zL2bBAQulz}S|s2RG2y`g5IeyWFRu#-)WZ+f7f2H$@Wu*xa9ipv^94p3-ge%qMd(rp`JI%+oOsBHG-9l4aZ9VSe(Z3W-KNOTr|{m;+=vW z)`yk*LLr(?y}O^tk#UOcoN)GK5iVp6#iz)%8%N+u+Qkp1BVFXS?j|mI_;I)S>MMe< zGp?{}qyeur>X`06*aP(8uRO$823nUQM2{~`&08#sPZ}Vyhnwi;BwW5>19WAeQ3j1k zbcv#Br^pwFl8YqRInxD7EX+=<89Jw$7gg7j?BQW)=C6{fbwRTh-wcx#eL0b?BCxL% z?Ra+ahK&xT?2!8y{WNaP3f)RY$%YR{>g6GRf^Hd5KdjJ$7>>c&Oc**1q+ zcqg+)8%f&}2E=7}lzScsO=c~{Qyl}Nk*&WET<>ofT>=KKtpu+6b*>@=u2uuKT6C_c z1+LBouDEC)SqL6+T#CMMZNhX2LVBTXP=EQHnEG{-1hiAsW$)y-=mihKBRqkN51NM( zq*oPU`xFchDQKr`^MUXNa~87iCM{^t@2x@qEkOYrKeX3oM2{kyaiq)CEEHc}d{9=m zZds^qJe1b;J;xVyf=8M)YB?b9$3S)RyxA~%s(J>^b>W#kh-2*0#B;TGG&i&hB<&w$ z9$Mm8NccAYbEed)D)SC!tikGd^+cROqYbv-TZrRh@DpZ=4ff7<{yd@XS|fguG}Egp zeX<ko)DQMiLQg2@?)+1dDaI7g*VG8$`h7FtulP*m<5VSGgb4$wX?aJBa|D%GQ=D?)zj)kq0h$e<+eAK{38TyjmvQ?l4%9fsTa1bgPhP->Gw&Qv%IB6n`s#0L|r`# z>@)2x4;_~m58Q7Lzp^~xw=b-GY4TPbowM?Z|u_BRZ-eYbD^uqU9`KS0Ix#A z$cKRT90S$t2WhaMB}?Di+bgz;C@uyk_eMDzT+lAbU3B{=ufsGvyb%De3dp>%w4J5> zRo5}Tn`Dm_-Yiw_jJ<(r4XALU+0<58I(Bvg47K+T3X^KX!o7}g777n{dvZecirEA8 z+OkcIfuA>;Ro?pzThdy-O_hbQmCwtW$Em1U(HRN^&;{W1wBCx__BbPH3|}{SLVk;Qp=h2$@?k@q1gf3=p^q9|&WX<)0cNMNGzJ7cK+o$Av#gsU=C(@Z~9h*{IPN#i3?? zdR7%ilm*25sSdhOOpUoKwbyLfbm73|C=BqmNHN6UetZUcd@1yb@0>WS)3e+s-w ztIO6<$t4G>b7Uo!+h){FR+5PM>@4wd=zfftIJnQmG9bj?dUpu}Wk5AKZdr);2kLrD zVvJU2lX7i4i-c(TbH|9V*bvn=(;AA#j=@BeVyCG&p<8$1G@3$){RyQ7p1os z#3CYHBF$u9)GP0drBqRuIB4ug9U>1j?Iyw1wP)iMc+T(}JuONtG4?bg94%|V3WbW_ z{1J!p`Icshpcy=lEaQt}A!cF($uu)#;C^t7a=sF6yZVg)X(}v~;}V;8=IKPtse2f` zHtI;YCL3N-%*W42&W(EAF|Sv>SMg}U1{A?m%Sz%+vU4Ku12f*D(|$#>J@@f**A4N?}_V_qQd_9VzK=NUcNujwn**NACrXX=JG{udKAd=`%sYUB@zr<`WIZyu1kDmH>5dcxVRx1lQ0vsV}@ zfLB55=c29+X-SdZL$;!A(vHu3Cf8JH`|)3*}W z+htlg3oJB+0IUI@Y6MnpdM0biXfUUw%|#5<3F;;P-F6CWJP_ya7b?KfNH`2G7wuj{ z4A;Q(jG-*F4eMLN0aI(Hd&voMjKm|(OBEfKXq2VQESmxd!2~?m$m)Kv zR7pDxuBiOqAv2W8ToDTLTiH~QYt-UQdD#; zl6xS0=zJN^zX1MDNdIQa2Xkz7L?F5w3Ep>2=Jw>2t_xN}0Oo0n9F>#hB(~0-bMdS^ zC#HPO_e8QOR|4e!`ovq52v2&XgPW##g)VcIveOhBPXUtES29(S*8wZ%jB)Zy?zgW7 z4UhIW_iz~pd(Ehy_|ze@c$p?XwuI6OBp4|G)1sBCJeqY|oDd)7IYuc>89c6dK|xpu z+B}2P1?v~x3=05sttSoIUO=>lw0fKcc3xNCEjJT&*v{X z)zBk&rWn`WQ6#s`2Ej&8>35sU!sn_rpMN~hW6Ppo zqD&CZ2OhV5AWBZHOx*11tOyTb@CZU}A)g*hAL2_7g`RwqAZtk4cM5Zj8N9ew@4JA# zLj2=JV`v}phv3)RoG)fOT1)B(0q-R1N$~| z_(6iF+d34-<78{tW{sUA?|A=yzk0E={$&0vgI#|9F#WgptFViqk_{NV| zu5;TZol8$o?}9|T^R0GAd6-0A4wZJ`w=9bv28Kz`1@QsGE3T|B1aH^o)gI6ViL(q} zj7F!mEbOB6!t2e$>#L1_ViZX^+B8|NcyS?vynrZ!cmng{AvcINB89ev0x&$xKXd4H zaADQY9q$qm8aP6>NKo(8t4R;=K|LU4%jmZ|Q`>T(CEROuB7-W+VYsogV~rNqg=J!F zm>M`ES&BKuV>lF{Ai)k4Y1Lz!nW@bVcBD%%qxd7oh9rb>M*r$a=wc^gN~PturMoPS zJj%%YU`mZ>I(ayvHUOUU#`{yi)8{xV>rOP}cUIOAZ#N6qI|tvA5WMRISS1$<2GZr0 zJr(_|{=}}<60Zvgw=uU-q}M>AOKmuG-hnfkN;UM4;?M@Evc&PZ{{*W{d58ugKV?q% zr_7=IZ$5+gKZ8K*|JFJMsxQA#Q~@6wp3)2$_=pO%1pIvDlK9JwjeuIF1TJrC*C{Gc z5HcAj;4pDoN;4;xSea6QxqKN)fySnSg@>lOc=%(@`yAeDloHR*!^9cma?kVi?Q)C# zMayBP`@{p+#ToDWZBpk~7ida~`z|HAydH=;+^nv0-}=yO)|5CuWdy8SxJNDq=vruO z0Hz%Us*QNR5fz1txG<593i%5dK(`M7Rz>z0>q}eq2wh3hT$l@1HL_g>_lT(z7rRLE z#}RB(uIAgOW!LFr;+{v_SJtb*^p2dZLf=bBCTy&T2VJSYNjNPoO8gxVtY=Hg)1ySj z!Xo>?tV~eKz5z<(!+dXwt*qHYFc!FpBN#WP!{pZI`Y#9Nc~9Yj3xb@GwY~fpq^pd}{j+Mb6qzVK`##0Yg%Zl`A5s<+jX$OE zr$hlW=(7xg_V(XJ4&r%YNKHnwGv;Ou-3H=sxn@nYP)#40#CK()2EKR}_J25GpGV)A`3Tq|_q&i0)xEs9O)+FC@ECB_};n-RNJ<5hik3 z?g~vv6-DM7-{tF*kWXWj$eVHDCK+3_HZ8_Tsj$bSGhmAV3Bk-+*WrU5zs# z<-gU59JMB87}J;>awYZb&D3eCaZFv1WzAeLC&^qSdl9Y#!FXq`*k9H3UIZx=vK!*B z^Vmn}55sqInGS$b>TtaMlPIrRy;kkoQ-fURj%gt=6r-vwB%e(#PzNo6x?(1&rAqBx zkwJ^@{98n2+TEO(ULhnt+{^(28uyfNodZ8nUR8Q8uiW9#t}sHT@j!Dw4A}}Ac_~~} zdvV%}wq;#(yS3p)#h@MLHatKvC3PaD#^hYVMo;<6eQppFi8KT{x*Q)eQYV&@+AGhZ zhBQ2wMBa#9r?_6WienmPVQx}gOcOGxz8l$HR>&*qIX9ddTe(}2qftEX-uGr3GActV zwNmxe})nFKPdhDaq4F0{Ac04 zIO5QKoyOcaia5@HhRXjIyDBMk649AzwT(yGhUt3^FRcll|A5WNL1(r_pd zaUQm?bbUT(K#2W_1)Xyom@Zx|*0tw;2R*-)$$6q{^aO6ZPYrOYR&Rf!_t3+@N~$qS zcE=?7c?;d>;1%pMVZ=n8Q^Z;AFS!1-g#bI6lP4D5F6rPL+9{}~8{r}wzU^2O1x{=W zc0!-h0KHq7sqJ$4^%WV{epB^$*wM>x6aRxy$MMh$dncJ6YcS)k5iV^iQpM}{CFuf0 zuzq|nFMs_f4U5k1DfAg(ND@4Q;cz?WcQ&*>w*;0kQx~5})S480Nf`56V)-=QGlPMZ z%suW>(ejj2eCvaK0S1OgrpPZe^OCEN z8NL{IhTcdK+gy=5=*)PB&tSy}rkS$*THP>+&@yYHzkRzQW^AKIQ+x?pSk|ia_CPm1 zWNuuqzkc8bP~;Ceko5DqCd%q$Vy7_g;8Vw`+xLHHX|7vQJ-e?wNxWpiF+pI?uQpFD zY+ye!HabFF<`{YWVq3cAIZ;70mJ=K`^@N#>MuLRs%~7^|*p(7xn?n_|orGQ?UdI*t zoSn{xFZ`^*N5$>(lA5(!VZjqwwN5V5goVX^KV9gh@a?tNDL%m=oIce44NL)O`hriy z)^`MVMXS%7w>bFWk!KwrX@5vFlF?)K9^et%PA|gaKi=*?$sh<4o*iJT;6-@Fz-U0b zdDn@aMrn=hj}@ds_OSi^0cj^M_?O|UE~FdpfTT)x)KhB$(WPq@{5AaIkNQ01WG=Td z(}(R#(_{ERKRg30)p++MdR+Jm-R?n^n%N*m63E6Wv8h*M%ngaWHq(5Eia|w9CZ>~C zQmxW05vI%3d@kp-lHIy^m{$0CpGXICe_2FC?w>cVBg2eo`NONLE2C6ii|6b?H|yYQ zgwn@XePM-6E#Qzzn3HKUdzf25XAp7P)nd_Rg|t2XvL%x0&~*?CgcK))X|Cy40-amQ z7!#Cv?hMr;2|m^9>p!Vy4ASNSh2l4bTISE4|1Po8t zwH~3Osrp?N3V3xLghL+eTs&z)$BmkEQGN^&W}VY=u2^21vOndsIIqZ5WD4Z# zqgpr6?u{wjcueAiQQXWfHBM3G#x8b-s5!z_d>??0M70%}E(I2bbe4F4swZBGUt|F3 zEJ!9^O9hnlp+>}zl7`jJkdBf8g7p>i&B}FCtfm^7FxBP0U}y*NN!p#Q?9H7$_U-Rk z8sj?>9apK8(SmA-f-97yeftAc_6fAiksC<><4{Pn2HLqQ(yHA;QCpBwH0qO9#)q#( zqZ}8kzF_xak76UB$0d%R?AOwpocxfQRda2zJPiX8bwZ!57%^avnZW9=Cla)W^9(dv zdILc-ECI6;mqZWfD^@OFGHc7X2>V?HZE9RiNrZ?_v3KO9I#PXiJ+hOolRB5~t)UoD zZfsm1OYlI$sCNiQ>TVEpPC}ZS#y-A)j1h!gqz-<}Naa&(;xVRIY4_5olRGzt@4R=g zchT&;=QrBOBS&F2x`@Mm5_G}V>xRRCrtx_IWbww5m0pnO*{pwsEE`0k+ z>1Kr~X&AQSs<}BzX0ql~ol{l)G3^-j(ES;k!%7~~Sx&pk#NzV^9prtqw%#c+&YFY!fY2ZVL0Zm>Yu}HLk-WI9Ag7KUee5oNY~L=d zwI`e8HP)tc&gRRtM&2HNe-5VW<8t5{^Fd`_aUF7|77;c#TfZj=qODf}=Fo8eB0;Mr zhg)X%1NM7KrXwf~_zqANDZB}6VX7M1$PdyAQNKlG0(^H`Z!~OB4n!95sw$WMofGp{ z&u3KL1G@CJiCkVcW0~o5gx4$Exrey�z4V7ZbxS*-El1CnNh1I>I)$@#5f`;+S*j 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 GhW`PCBtXRg diff --git a/lib/ian-UNRELEASED.jar b/lib/ian-UNRELEASED.jar new file mode 100644 index 0000000000000000000000000000000000000000..99d7b0e97a2f61ccd84f21e6b5c628844353ca21 GIT binary patch literal 610138 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

vS(r+!?mUbq$aWN35!y|DY-&-J zjA)Jq)n+B1_JaKN!Lu%-KFj9&rO?_Ap*2Jh?Ie8Df>Q>&Ei~?pYil|^rF2%2>VEU` zffn7SyX%ias?p|Xl(078#VCPMMn{L zp0*#rEML_x!<5|8c127~lVmea^v2$hyPq-7q5}q=?i6w2oDRw<=TFusGKOSBvSw#w z1x8TmFZk2!U&I@on=mCA!c2c{&JD5D+z+4GI@SPxj6I^j&5->Bd9iwyB4U7~l04@b zn`qdVJWvV7;Z&#Tt~R}kZ2Eh1_mTRWfKL6pPF!|BR(rpTitp{$K<+ZZA4qr8M-@ZS z;GP!4==mmiW&qZ4^%`?4q|?#lnt7)OgcTzwq0IsK9VI1OVHM|awE~_^bZ=Pgq|L4K z9_QefZw%@gLVcD`oDrTtGJ76(JpMmuKjXh|v2{Nw8|ud6=}giYn^gA&4F4U%n9y3*G3mNErz| zS^rdCvwdpcNdD1Jw1sNb%zNw`zHu$w?7QpaIN@6-z>01QzbWs~$uzzYVgqzoBX$Zm z{2}t=Woaj^qPX(9-@@}6QzzZiesCnVS?DAi$qTilPFP*-I5&Z!q)OZ!jXdqn29Z!w zoC$88{(@ezC39Q;w^KwkhIfCnFE+a8&&aARST>!lZHJmijNV1sPyI=Y;&)WxsI>|` z;I?>8kK~+d#4xAiP)y_8pp;@g5=%*5kPgHFggZW=M%cPq6__KT9^@F>?LeZRV(3Pa zd=iSccdNBPYvONKwa|)O5i|rrIF4`s=+WcQa5wAtLb=y}WsvZ@RCFx^!O79a!Zp}bZJXF@JQ4eTyIdJ@;n%8`7l zDV=aY<_^@vA03E@$*)*)S5vuH~;ZOgp+ zs1T6@NV@Cz(ikrJl<3wA)`9}?=|h=7Wl3NZ7mU;<(1kd0 zcB5${XG>q}RdKldbhh^K@)X6%Q;2#II<6>0Ukwe0twg(AWoeAtiBW&^2-YG-;#~E8 zi;y^arwjH8Za>TO#8`w;yHAE_Pwu;`nDCIvsBjwm@Cbp3ThZ{>_Qt+EX{=~ald}2U zE;h*`h_@#2C^lE|f^Cl+E>Ei1-QfdvfM8U4xTdZ4dA5iJ12{-wXDt`ogI|>m)9kou zY-~aZ=o@g_eMg0th#keC39_?|wfrnq`j^2k`2%F|sY*RYM#T!juAJnHa!ZHEqyE># zUQQp)smsnBlvoU5H39Mg0Up=Qekzh4>BD%u!t&ApYjSdNFlJm3#EEpi4{Fmp?~HS2 z%+?Iyc@n&)nA1S@XUz?q6#?$`h8g6cNcYedOwoC*Yz|`OAZoN!zJ|T8fh?XO)JQltbqmZ4__DudMAA!Op} zg`);EWuI`!>7?y2@jo5wI@*?NSs7D#a&NJ^z9x5`cHvupm$j;<8c`^@w#gwRk3A^5B zaZ(He%~Hw+8havt?ELMwfV7V4)L83CIi8

&*O84kC?ERoa`G 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�b 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�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

Jog? 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

nrIn2-3uCdzzcLDo_@q9xB##?D1 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

>G zm{jSattFc)LIWv3L$QJZDM+E7yn&UIvtCz0S^k^sYj7a;7U^mr(|@b%Cm((-7&*Rd zS{U7QL+@Z%T;*`ql&IJ4|H{-G1re@PG&ZUoPASa&4h{cS8ukmFQ3r{tlT%SraWlg^ z8VHe)h+e!5*cz|f7iy6=dc{Thj{I(rWL~5$#WHRJ2izY~W&qMMh!E>|QQVU*!faGPzBoS{I%s6+<`tD#Sj zlk5{Nlek){GQm_NP_pVafb%eFlrBKev<;QI*DEK}7W{82oS zh|w2wu`sP>PmV$Fa|)Cfd*GtOb|8U7oMthi9MEQ{RzzjlmNb@Hk*+tVqoxE4J-C@gr_obDB^FTem$(-uVF_DkCHQf4qXyy^%$vR6aOJh_SLRtrV*0+>sm z{!(IsLvaZTj+oK@HnOR#1!7+-br^Eg$BVMwhN(!9!y1=}()2KJ5UIg9^Eugb@!VO~ zip}LKkZiKC?N*GdcTQlUYQ;-#I-Ii0um=b`N zVA8W+LuyowT0d*GZEs15Amc#nSBZB1=hHFI*jaQ(D*uhA8Iv;C`!xxv1GIE3B4SZLJwXNLph>CI-=@V+kuA}o9XkpLF=G-p;{KlUIHOU5(Tkc5W$B z>*9HdIUKM0K17LiTQQ5!n8Pm$n@tK%J1L(B!>H-&$yBKj0H9*u7=Edo7RVelTdAL9 zK}n=nx@6*nG=kb}if5W+zy&(M2gJMhyrk<8tjB4y_xv-%wLdR&X|yBwM1I2m`wiR$ z;RW2KWKSinOLiBdW7QKhYLrp$^@Re1LvpXl)Q*oXU_CZh2wlzmtj>9&`oT#++0OLL zR`Znj0BvSy*7-mV^KnJ&+bI`8+iW=cq%eQI>`eOO;<$uCqzGniYhJIYaI`w^cO;{&iFYwaTEEbHTY@0A(+7N}={Q|4{@SYR|W@|r9 z^~(9;#w``260;BK<2n7ey-=G@w2zLR(}QQyJ&5a~hU;P-%@mJJAnSpHyS4ijc()TU zBhn?Uqllo6I}Yg|t{8!i4jSn@^FfoEW<8)l(AMCCRcR=&kyCCWxnJkA!_z(&``bV( zv0(6j3DJ5D!S@@m-T`gqm$YmvE;R1ZHSR5$Bxsa*g`bb)_LQbR3yvY=l$G~Z9! z8eV{=Jp4$!!oA(yR>OaL9#Y2OzQwajq#j!EVzIdGv%&+I#4fwsdC%U&UHH0Ysk0EH`qt#~51tku>(bG|yVsIZk^Tp6)oHnjH^G zLxYXe5F|RvLk6UAk#0^Sc?V^s+HdwfK(xz<7$3c{NUK>#i)0$HH34v+2_J2f;rgnJ z5mngToLX}vD>YuuiQTDT=-V8IA6&K& z{jpBjy7R@=Q`XJ3+0EI9f~H|ZYTMw>G3C?Qs(D4^#^T}D)lUyQH-8o;`gcc|&F|Ij z@uq%I3s5W)e4IjToO~QO#z@`>3a6V4qUOs@VGPn5gMp8dnQePqH3l-oM-PNcipRHst3jgwH^Y z31w0v3}bm4LJm5AQu4WzgWlj?L?N5tCVl6$R{B!Lo`soh&OVQ^tYqJ|NE!k*ZWslTxcQ5or6WtwIPOwA?o1L@PIBlZ@TIczZGva)3B@5DGLn5tfBaS6 z?P-MEHkE9vTAfcS7ZSX(r=pmaF3oFo0sWqAe~4_XvY<4^xe3e2M|oSiK&lpTbTaS? zOxQMp|6{0rgF4$KjlE?A`BuDiVNvDWP@&#XkZ$pb_+9haigCRUq@hQ1A2_#^nQ!eF z(fo#$b9TT<(g8QPmWFB)~J$)YkBM1#PgUuw=!WdnozusZn~y>f)?_(B9iIuF5NiE#>rWOZdL zh2n6|3=^-h$Cvw9v-4H6GlQmWhj0gr=^Zp+8lhu@nbNt16P04YtUXh?6H^B1J+}W? zKSdVg2TFrU51DF|m~#l-t(m@$X9i^@pG6bhV!0uuXiJLOT`7!3)<4)^(X$!~->8t& zV+t4+tLAM-D2sv^TABKI9CLAANn-pFs3=!MC=P#^*g*GGh&QU_RX94V9T&)z>X9(2 z#uiGcgbM^z?eZ$*|LZktp}v1{>#yi`iKAL@1h!0L=D22UV?`@9&`f1^^XBe05`yAx z?5>qvIOAXuHNj;fzRHH1|*Byn4iT*?{l%9vxD zQbb9*I3waw!(brTJ_i3?__?wO?9f%M{JgIbP(m6VG zh5Ymrq`9;>I83zxOueEDf@D!G3FgTgI#xDu5EqpU2ZTOuTow5P`@mO~dQ z7pWEzi}+HBRvBWWD_hA{xQ~>Lz0o5(J^P?6rPN;66$<+s*5(&5|?~-_VE)N1q6N*M=Y5(l~9jTj8QCm9XAi{naQJyrcjCF=1^_<$Di z*RQXiV$=UrqW--{@js(c{w3>h)IR(t>xj)#*FU&NLjyoWI3s%pJs!qlmoFb>}}4 zAc*UsP)!@dYT8ET1FNd6)E)9hbRQyylE>~|#K7C%(!`zVZe&1pymB3GIjMncLD~9t zUaa#5C~mHj%0%kot}07Y7_xOf1`(Z`DOUS717&}!ySFDqP%pzynK0>Vn5xj#xtNi+ z?mxdd3&&jwMk%L0C;M#5#s;|6o5N6@`_FeE~VWeo+CSKI;|tA@=Ai zKy)*>^gMq+$BO5veer1!x*6VEQ0+R!vj0Ba6vPa}oAn;H6lczFd2(@S9)V>i2uRj4 ziHJnmWpp6Yvm*)5hTZkxU?9m^#R4D&rxsHY6OIhpwd?}SI zR7o{c^zQ`$B_BnO8h3OURTEG8#feV~DQn>$Bw+;Vr6LPL1lHG^eVV59^90Bw0YkNc zX(+G8ya-h*&MBTzXJU7DOGRD#KwTgqOJa2?$!nXy?$q~8K7HO!1C18vzFck?N@F5D zx;X>3hBDjV`%Q2joXuZ!r|*O>w)@d2`~s4Muh$RKXsSNo$ntQMb~YNOf1v|ObaYMtIa)iEOD zEqt8RJQTky&{fg%WfdhTEk`e=qiQz4aR@xDvg(Pvgp#B?JF%!uFp+Tk>HJOA>rMae zbb9|ZHL>A7P=~20zbd#NI2S+P$Bd7MfUY}$s+NFh5N+6s4|(}i$RY%7QTybt+Wunc zp%>B9;h1tf6)(F-CEn=4@!!cFspe!;uW3XyfyxI7fUNdyaHBc=#Ou`y%|qz%*y5qujBE4dAq zNlQ)>Um!1|pba}%Qm1g0tDoSUN;RqnI132 z+w&5h!4-m~dg%U}i1CD&z*bE{M=cMZ%N@)4OH7_r8#`ZK8&@l+sJpvhHdk}=kFDf9 zz@;(BgIt-+wGe%Kl1-G#hU|w>z*%(iOrtz4i4=CJqyG_j@ntb+84^$@XIaYcv?ak= zvvVY;!QlKE%CF2S0wc7j{*-(yjwwOa9l1383oziQsA%FXi0&w(<**?BVFZW7!)P9X zEyKBjOE$fGy_4s!O|_YBbJOm6dl~FZ@8h&|nZY`nz=HbZgzJ)mmgd`JPos`U27HhY z-;;$P(gG6NY4skarM2@pGk{z0c)uu)*~b$Et|;Ot5pJxqFMYyYc~6-VlmiHoL*Fv8 zdIOq*%kokp$rjNnk)fw7Y)xkkz>-j5j}%b5sZB2oLDw#q6&8sU7e-n3By|bgw$8wA z9X9)x4GUD$VgyVwOJ8L**K2@x&5e{ zr6ms*@mJx}!D!dlePH0T!46VBFC01J=x!`N>4X<`ztIA~Sc=f8nB9J6)^U|^46fhT z-e@@c_jd=@Gg8$>1Xhov6+^j=$y$-s?ltzU6OOH99I2=;E~WoUB;OLO@ifnDkxb)7 z=H-hv|{yEfW{!AST-3s%RK8FB66MBCmqLM zC32jbZjjzi2K5-KG3~zS^mDhzwkoCo(RYokiUa^H!u@umeY5smu2>PQ2W&yBR)b55 zwYNw0`|@P+N z^S!+gu$^il?_P{C4Rxa4I{jjF6*p(=tF3_3D6KXjrgdln{YW$M$bajyq=@_lwsB3w zf1P=DD>v2t{71+`HaJNpVOy5gSsT`Q0?f9b>qqVzkedn+3UBuZSfM(kkoPY&?f#Qi?^Ds=6VEjG<4!2JAl&PGYS zO!z9SZb4e0!PvxT3gIKZ9HFa!0xYiK1cNucl1pRh*3K8m ztz?3rNyVI=s*Ti{p%h^VlkO55q#+?e8o}rcc)S+gFJ?CZmBP>POJF}X-^`r`F!D=? zEa#sD=J1i?i33d$1E%!Y5Y&!OpcoXQCjt3w<5bRSfC_zM4ndQ~zA=jl6>)WS#gG-AgpeSlgv;&gT$#wpVdT#&$H3-;0JlVQRyu4|LJ=1i4`n5~AHtiv0E!BEb5< zJ=SXoGEA0|@b`E)z@WD;KphlM#PznQmZ-Y>?=b0rrqckdLFC}B5+z7soY4@Ac= z)9v*U<~Y5eX#Pu_|D3C*xB_;;hNGwBy2skDcL@Fj(J_?S!H|osqS5R+FxqeR1qI2? zrCpCH6vUMhD%~*A=CAH!`w$^RKet3B)4?nI(KHqPd0|30u%|7VpokygVpxJcTb``b zuBAU@1MC6WaW4vHuiD6q2!HJiSk;h|Nr-5+qMpHbD!smo>Lf6-s-5pjaDWb)2%CRM zBEA>}ews}_vw2Ir4TC@cb>m?9|y}D_CYc zy?3;yi}k#%{n-RbmhKf699_I>4}mP-YLD9q?KO#dH!;{`1$6h`hkEY840CX`{d}@~ zMvD0zGfv`H-5+J3Jr9<`m?o--!0Begd(Q$)g=w|eIBcB{=5@hy{ZL|pP;sBdQxb@i zaLNKa8zk#Rzl*#%MyM0=*EbNooyS-c?s@aLVTUD?N2lW0d4(gQKV};IlA31n27`Ks z=QECX*p<%bAdqv(P0uG@NB6}e zS}?)7C;y=-a>ZFaLPw3jO_Gl{CbkS^w-s0cMbOf8R&Rgi1Fu}=TK}uV$SG1bvDaUC z%^{85ZKvs@+t=XPqHiqqxKK`Tc7SCKHf9gdfRE^C6Ly;74y8EcnX?qCRoW1U7nny? z&3U@8?Z@ll&vKr=EDUGM44fI;O?g_Fz0(!V0*^d}bhG^ag zH~#(YafwTd4Mz_hpXu|LOW!~F0~mP6e)h`K&&<>5Ps;E=`NY3B1Tg={hJgRo(kAO* zZfxVEZ(wEo&o**pO~-X1G;T}Dlzj>!d%I1NJXb~Cgx27>Vm3BwjV#bCOd9u-8-n$} z@)qMb>c#yzJJF$E5GHB<5I4QOl)UAK7ZNV>3ztFq46EZU?|-z-Jh8I>-WDxTYSSZ#388NNFY zAT}!BhG`N;>s7cmEadu%c(e7N@x^8=qRQc4^oc1|V)#RSGw>yXr5szh)Q>uJm|QRd z`VXO$lZuK4GnN|N+PCf4{(~2sZapbQ3O2f+wR!}R8|Wu$47UI@Bg(S_$$HN7LZH9N z{KkMCN`^?pfxv=QI&oea1vVOe%GzT{8Pzmd~HkhVNI; z@*e*vW4*|9sGZN{i9gICp?`#D%sWu~?$BRa8eUg{4mBS(M=*C^HA@Ur<*n2UCDu`8 zwnobCw+>SUhs)IdT9)SO61p`YKftiyobQtd#wNNW~KU^`vwO%uU*1+gX!24D{ZUeuBXCo8jliB z`sNr8yHItp6>_P_K(a`Q9v?bl8{K4W6lKd9pT^zo@^W}nohY?ei7v}YHqF>q&kyk7 zC_dqhM*k`bx0m@t4xKfOm8){EwgV-w>$RN(jyU2BSxI$9K&-z95x^#WY8)#d$&tz7(S6r%~pw08F!nm&He&&0G z;EKvVxqBc{jGca2is`sX2!|BX?nTM=MxxJ5HQ2vj34H|IMVW1Ms8Gq(<18)wbLIFz z=H!Qyi7bsrP$(#Eu3?_XgMZ~mVAGj8;yR04wg@M$Vq1hl{VuD9>O;>9b`D_>P0L*Z zeMzYb z%qt~aRLvz$#k>pOcnSWvdV0T~uCSHWRk^Lrd-LaP{*=9hBOXX%GNZkI)`O-6K#F)A zD1~VyDY)n?W2N7*AnZ`e}(6?rZM?>dd z>tPjd)L!^5bb@#h$xk% zT>46$3hMf`rG;^KiIU0$5}+6;V6CGg~|!aE7$ zSRP1j6l$KvK3!z98=b^@WoA7tu06^4WWvDaG#j3s?W-adaurT))R?mzc${d1wIjIn{UmHt0l+my6rk@%6h6*V-*0GmcalT_krF7N6} zOZlLRK{V)KNc^~Nnu8&zY&7ewL2?FIk#at8c}nZjUUuMaMA5G&Y#>=I|B^61Pfc)} z${c4uJm=)}{G!@%hvx|?>z5GcWvyJ^s9rURKQESFnx<@aE;PNspiN)2)~VDKf%geH z{r+tlP2mba8(H#EI|R=`Uv7y~VZc}mgaH~&1yjdUEN^5cn`zw8Jhr3SlJJhaL?Ox* z#Ug}Eb^?hn!Mu*Ssv0bX2JMRSke7q6cGzTHFo6EH@VD%CXokALtMWRb^v+%a{t0wS@zIu&#x|fM086V1+Z60NB>y zgwp)*`0uctQp}6d%?wR-X_wNlVe>ky6FAmCR zN=;6YxWUWW-xA)xnq2+NbS3%}xe7|g>4RJ;o!{e*rB*Y2aolB`kPCp#2n#@Wka&X` za%QLvLoxepE|TQ6_>1$}GF37guM0}e>TpkH^IfZF-j!A0W;UqXI>OpAXSmS{m3tIp zJ<$M-Q2XiX=m+BM)Q=A^ZhZScX{DQ8+LkHRk&icw@q6?(2G3|%a=nKKj!|!VVeE1t zvIEWn?upd01|hPdpmpTZVuWaD$fraE7|v3w3JF=o_NC`S-461|Rv~eol^#}*xHchG zxci{8cUDzyqDWuDN!4sYrac2jU1?sr9+2SY4Pc0xc0r4q+<+Q1a(V!?3(WV{NCfBH zB7xNiJgF1q6&~P{ia$}@Cj$f*8>OT)l18P{7DyTO=ULJr3f_vcgjJ`&+WGB>8c*g{ zPKRY@i|pBDN8Ed5cOl1@BM_Z{YGqDf#vF`xxzKGBuXIaLds_1-W|fHP%*!bF%jXo7 z1C)x2%7M!yB$X-eQWksuA^x^9n3G>Wjz#b2|DVgz|LR!(5dCN+Ys+;y_^+&w zh=QCf_>JF7^eM0@QSzV#!QCIfM!Q!mj7P;B>T4f+u8qcRHr%d+YH6mscwJpa6HHU^ ziQ2GfBCX2l?5|5pfN>Leq;mwnG2(K1lO_*m*StgV5M$Se`@mds0FYZp~38BQ)Y)S zeu9h&a>#w1k99(&xEod>&M5Uyts!g2RMB&CxcB~iadbvhqD6i?zeJ5jAa_yMfe3&; z=e$EFK?*CFm?7vY@mQd}xE5D!F%8yure8;5B0S)de8xtF-AL z1*z}v(>x$#1zg-qC0D$-`G~=VuSr5l#JL$_LG|oMHHtr)u0R$Zn}D9LcJ*6My;2cg zlm~KABX`^xqXhv+IrWk;3*_OURyQZD^z8Xe)-1Je5kOq)oQ|6nh4kZ##j0t=T8+m4%%rxcAT8LuZU0W zB%6Q1x_q>CCu4>i$66!>g&ZGDMY{|Z(V`RQ#*6mX3o~JBa!DLbf6flK zhTU&|J-w?B?=2PuMR_4D!Zei;4gY5zj=l<@kFvHLej&$vf>kT}eC7s_sL}>|<{am- ztNy3E-~X^twsBo=i60xK`WGAh_Y{ZnKc+bUw9$Y3Px)tJqquG}&j-()>8UWUX?6-D zCP^zZHzYU4Tv{rOEGz*)UIgduxJT@qxsqb2=(Z#1wg=|+3z%XLppOzaIBipnBp8nZ zU-Eo&HQn)OV#4S9_7%#HIVmxWj*97`*`=@rw(Y#lsjk##^IzuDO^1gLLL)p*j z3;K}co({;I-mYfbyOchd5TOnO^bdBRikaOQ^YkqaL8+<(*HhPN7B^6NXfiQ^WYB(e z5PKrDkn-X|+_y^(SJwxRNX96Y%aE{@^QHBKJj?nidx2kmEPnM} zvkHG^;8{Dqqps1~hg-BdCTlCdG`&*uvbIqMvlZga{cbI%{<#pSg1GewIjOLm#<}( zSLUjURSGIAP1=SL4;pA@f^v;PB;^#z2RHxOp=`tkdEgHQ7dFwb}ZPR3>=^w0O^*;_;6&wRClD`G%ASze8*LO6F{V=Z5 zFB9yBslsFC#!bS)T!lJ-FHfy!Gm7Vd>P1g@<VfUi}9M~ucFc{gh{GuLZg!hcCYr)qLSgS`AKHUN%gPu==FlfSK(RulGIBDC* z$lZ5K_u^G*!Y!9bCY1x95Wj>qIPnxF7DRy93Llmm3a{5igp2Q6{nIdPb&I(|DTUk< zU`?xN62Gj(PzT|bpI|DX;^yy`LME9!1NCqcIiQiy*+ye9!Wk-=M%s-~Pc?(lmp@>T zZ_V`AXhaeLBz+Da0LsrQkIga4z}`t1nVjJsVyypF8UPz*ADd$$@f<5vstHu=3dwB zdsLvcOEw;M$6U(CjO(8PxZ>e!P8TYpHcz;4LA$#yFdBBr$n6%w-}WTHC7&E8?G`3e z?$37r3>re0$3xPpH#I(^h%}rvGse33=|MObnsj)JT$HUYIUwd4Yp%P zaHtE@2XNiUFY0GlvX+lT9LvyzY9U$&KX34(g*7$?atb@<^mh(M`G_R678=G5h=a{& zs=NW|?wyRN4g(!cSKE^>U#Y2h9thrTs1iwh*rgJJ8~A#f$)nHz3ysVJc`-a3o~Xp9582V&YWUESotMAaM7$Cv>mzx!N<$ef1JpAOd?Zj2i!dV#UOJ6Aw zy5Rx_G-xrmG; z{&;(pT{GaYMZwmB<0bztV8gY)1k?!O4FwvSiBB@DW?}-htr*r`zwbZn>!9S88vMt; zQvTzz>;EgkmNs@Y`=?;5Y${?ZBlAMxL)7NQ3FIX$QRoTIxhx7a6$J}Om{B|g$~Br* zNjl&|y*jX(m#JI^(#qs~V3cqa><8vJV>t_P@UZc`v$CIEZ)m5)(I{f2>tAm=USGTV z9A`UDA5Hi8zW)gWJ)QiuNWPFmbJUdSVI!PoJg)|yk@veXQ=%$_zA(NKRfiTfe4d4_oa&Y z@1{5S;yE$MOL_4k_~~{fi=SWKQ5+S}DmO|C?x>7Cl$@H>G|2FmmjXIfG zh=GN$XGZ>=l87D*D4EaYSpgg&X4H#B4Vm0ov>H0d8H#yoe+Dyy1o?Pr)Fa`&5Q~(a z)k;U77^Rz&E%rz8Wc1H#J;>Utd1!Aa!+_MluR~igC;F{ z5K%X+qFdaeHGj)F4RZrFZ{8`stYh7!v``T-NfM|4)M^#KOqSSmkr~t@tX>Gp_#efwk{gJJmwkRj2)F97d zuU-b83=PnChox>Xs!DO}d??KQnC0F~P(~G~PL$MEeCNi$a2*8NBKvP!mBp7W;!T7ZEZUBWZbSzQK4lPcYRM3SWL z9Y~D;e}sYzJw;My-&p&H!px3X;H4STY>T+CCb=qc9199eC!|MXqaqUy=}6xPp$yrw zVy%9$P_J&;V%fV#VpBoHu7B>`YiaZ=s*bTxYnl<;^-T~$)2ZzTIO&|9N~m|oPepGGJ)&1knN##ofn*YXv6Qy!=KIJDR(IJ zGGqqG@iY-|h*<|5erZn~LZVA@!>EUzsKU67HS?nkP2ryY$iR#i}){`zehEtdw## z#gx5q7Ocu_EEO*H!NwhMcYDo;eKZ&LXm+fq@f{)C%JAG7;%<{kd{vPa*6Tc>v!!Fl zdkWK^^fDGpr&%xpF--N=7(XQhZ0DwT3?e)qDrdqbM%jF&zY%TgBPi7dGK}W~LZ=rR zeQNy3t*248mB*N*hTF#KfQ_B(S;EvhGPC-|NdrVV_}T+>(+W5-c(&R+Sv@;raNm9% z-&1eBC1qDD83LMpQ36!~!9E6^PgB*Yl%Kz#I1SE^Rh)+r!Y}=f8O|>+$BGnGm~Ym) zEtiYUJHNjlZQ`eW5A3q&zx4pD!#}XPJ+?eimR``Y&imR}KZVkAkK=o_H|vd83cI?t zp_?%idZC*^P8^{0gc>67kta|sWN^lW`WldU(g#kz{yxLqyieY)f4pAr$booTKKWrF z+6)GflN;g#Ih2#PuLseEuj?%& z?5;)80f#F2HD=I#@nk{O)o;ya3TU*ySMAdKr(>FpH1}bPYBO3=-u6L*YBN@n+_gmI z3vFCP_4dAn>2ol_JvGdXOLNj=`TUU9gPr1%R7qv!5A)UokvsK?~+i`Sqj55wzh>l-eNgPPVRED2!$G%7-9y+J(^^hD$lB5c& z{CpJdU^kC4>xGW!Y(5~T9*Nn=%ECGCzKFEQ#Rav?iyGIaK!Tu<#1r5KqUj!oFQyW( z-4QbM!|)>qt{Zn7pLI0zYo0bO2)sdbtZ=nvk}L$oACRDdra-~u5s9VY!dA<0si0$= z6*DFmr!Nv|>u5(S;R{b?xW4P9K$pxQM4~%*50)mrkQo0M>%^5)7$0ZIw3n#kRYi1y-P7WQp{1qm^JafL zbW|rr!aA&&62yAr_T4Dg20QOwizER4$J;T1$iidHn=u^D_Qnu9#lY8!zRF<`1;?#7 zj#U27+J7#bX0mF^nugc2g9Gzz)7Rx!E$$e8ppG=R9toEapC!3bPS7O%;n(O94S1n+ z&>riJa#^(7;enMMxytm5H=E38XGtfRS|1EkVeCAlQ_b*xYu&;*yJ*A}>M@|6f_?22 zTNdCNdPRAYSW2-pmN9%)Wd)*cQfYNaOHAZ)+XBQZb@_vdNXV{45W{)nK+Y5w@bchD zrgYg;i98tQ1yW;65)w@_Myk9)QEH(OxDhR`MmNSnoHFM%ulAob%rqm;az<{Hh0TYO zMSHWGg-QS!64}16AW#ouBM0smnal|5JX`(P0+m{_s=UKl8gO%BIb{d9>sM8x;&(&- z_--mxUyRbOprnB@36auGMcW^SepI_|HzMsfP8-r6HBZNJj!Ce| zm&b!ePP%*{WktQ(&|@(%^DCqY7)6X7U<@^p1lJE8%p~WioHZKYyzQ0S_>m|})=YAi zUbK2vmavf;J})WVA$W1lL@hJxIjC-S;latq!xQ|b19r`Lz9B<`scTKQ0)BhiMCz+a zCRmGbIPq0>QvqEa?@K{nvv4v3hR^yNyg}J5D2D1PYpSl>-U@%WF&}*&4n4Ww+fsEw z6+ueJzNmhIp#W;dt&YM6v-N#a%p>?u*u|VTC*U_8s8Y1qsA&I8ZPGYzyiW;ZzUm<0;r?1R6K;TLPw2CdM$q~X<;^n7)Z_BN)FZ}@aaWKI# zqw~7pF_0x0fqQ(!7+eQg)i6d*=EiuW3uiAu89bM$KoKIEFWP7~5E08aRN=}=ZCO-!mZChgX$osUSiphexEcu+IPpfL z&%DpKQY>Jfj80L0W}B$6){@^2_E4~EpqW^w*@TmxO*(QcbwwA)xY`*S+xeySEqp@F&R zz=3K*V`;Tz0RCsT0oLgCVkhwWVS#W=WzqvK{v5tMP$P&B?4`ifj?M4v>n$c+M)H|` zB|c@V|GN49Z*3Q)Z4Lfb&8t9oY6@Y$Z{oOROjtw{n}Nd+-;4iPV?w5zFGfmdiCbo} zl2R`OcS>k4T(frW>y$FT2CN_>ATwXU3l*XdO)8j{Vpk_i@y&#Uv-)Py4u;_(=a)|LB?U0Kh8wPJ#7Vi;KLTv4Ztw+^ce-oX(yJ^oYJ4 zno_MRbP=H}y$T4wertkE@n1bpl;RU;`p(G`2#SQ{LZvm^*;(mk<*@crOpIMAflMX^ zSxglr9O+7jsDlX&cPia0i-c4(-B@8}@pTON@Z#ziR(SOupSuFDx{Dnv{48;{EVujD zaVXdTWD|k=2c68UF_D}e#M@%! z3-Z7R^beP0^(PO_uhUi!&B*!`m#j?YM#;>fgdFc;vwEs(XkgJUV1t)H4e)QQs9Se2 z`Gfu08;d1lATj!}FIJbuDJk$dQs~-PE5Tt^f6Vi6Z?bcBt4T>!R(|7VShkt3K41Or zA~8DXN!3q)9HrLFkfq%Rk$b{@QJ!3N#n$4a#IlX<4o+jJs>etQ)g0M| zB-9_E!OC7t$0*-d728Wfjf9raXx1iXcT!Pm#n3`R-DaL1nC!nfKY++E2CX)WybC{j zGJ}{c4_e>9oHyi_`zu;jhX@Tfaz-fXvi- zb|}LA*xEr|Em0aMZ>!#)QhCkz8-xBu=m{trt!iWO-tjy7mq}=87W~HI)JU`PJa;;iJ2nhTHOs-6DX_fKH96NjS`6LuVihX)y%!KRt)a4^YNjF#wj}gGddI3ec`B;lM zqmH}EbR(D+8trJks7jVRhRL}5({zzEFJu^J5JLX*7fiu*i{GK00?i8r9*)2pgtA?S zBV~gYHaXd*1)A#VtkujeiX_Y8jVJOB`jf7mU`+O~Xkp%AU`Tg~XvaQSnLVM7#@y?< z5I3+!S{f_9+S5$eNDj-{<^?Nz3XgY|>jkj4srEhI011P5H7K(}?=-DaEm(_Q-r4rJ zCnTzMAoD8U5Q5Y>=ucmNjhq(Dw+Ct4!;jN`k6ARHVOaAKe>u0VJx=Z)7}V9A8X|6% z?3=P>*P35nTwRfj!RoC%`Ng%x@{4}}S*=W&L=dK{KdAz9*FRIoVRdN6$lXFwfE5Fx>c)lJjcD7SsBu1q_rJ4aDiED#JrVqxgx-HVv}NkF2ruEQ_at9qaYJbV5Ks zRArNSqh8W}yMJx^@0qi(jH176Lf=RaTv6nqLVHFGC<1ZrVjuU!wedKBwR2UEC z7femzvW;#aip66Fg|afYgJ_FpHzQm1QhXpQyS*9&x=BPx3OxFzl^Hc!=AVT*hJbn8Gb0ED zirR?YV@MNDb}BFzQV(lp6)Yf0X8nTHbFl8f!T5+V&!zBGMkz@s3wM|;6RX?X*3FFvpT|2p1_uMYbi3(J6DyXJDp`&AGie@aeqY&%EMdM^Pu-GP9?u z70wYF>WnCmX`g4qkybmnZSvRgC{;SPx{<-`L+~DwRt(QM*)19E0%CN|U&S&Xknh$x zZ(+6}JAtF7zbHS1GFR@ohU{fHE?q+(=@Do=w z;5c1L!3t4R?XOL%o|K7g9ToI9u%*H?8M-lqd=$SCo5V8RHb=nPTemHP$MFsA+pF#7 znBO)$HXPQFbxf&A#<@ur;f(-h5) z_yGW+cGHHCL8VriOeF=7);O`ar=d`2CT5mSJaOCn-C2)=@y;{up5HF*;`s@_h7u|6 z{tkh#YS_LL?M{r01zslM0GX8^&#&issW7jFLnxV*d@Q2wnwb1->?xesBFKplS#mhN zfdhM;8LL{Vg#j`i5Q@rA|EH3tR5Da&h}2BP5 zv+A{=JK^n{rCNW7oi!*eWSW-5t7_ZY)JY>`!$Xv(0V2OE+wYlARg&8TCIM?X-H#}T zO8XlDX2@<3ziji=^IDzv;uW$uZOudgd2MW`m?`AW6Ta5MCn&phF zH3!W0aTKJ8{K~UnPRYuiiho^V>TTC8Ml*knZma?t(WN_Q#rgkf# z*1vrvLPIteD`N=SQna_K5=wwT4apgso2v-xzJ=}Unr*Mui zcwcb8Xt3-*gkC2@H$2-+-~KHewdEE|+xU@8b3vkH=3Y$YqR;tP zax{6|uc28bg%Lt)0n*xa{Axl}W*y1OCBz4JP2V$H?me@wZqC<46bP?ICb{wkVUEor z#^P85U~~c4{^4m?dvxz8$k^SM-qsiUr)*-1Egl78eY~|`A*K{q?6F9la82?(!bCbW zvEs(4xWS(!mjc}aO5k$m(Zwsv9-IN#sUZkqt9aRKeO8ucu%Xvh)5N{~s+D!sNtw48 z)qC;!CgnOErXajij>U)n=;_0xQb8$bt4z#}%L#mB@HO+xR*s;Hz=I61r%c#;Zzd0+ zwQCr~_G|ffl1!d1DB4C&OwEGtu`%pcFXGAo&<75oBu6+Q*=ZE)x;SFK!gFSn=PORE zQ$DqrkETFBQh;Zuy2t#OstV zF})hU9A{(Z)bI}J;8GK9!%4Iu*rSfRKjgXYi8JX(>ZUM+p4#A^GBe=~z@O5=W}UP` zdv&2`_59BJOa%ndEy8qnE%5n~>>HJ^+G9%QauRMHZ}yK?N?mRcHhUvxHZ>-zNxybe z(;{H6CWJDlk4;x{Az9=X@rRqRFGcbPLMrd4*Rzek<6E%CqGtO#;_Fz&6+Z22%XCT7 zeq=UYUe6No0l4+Pg*>9qOaV^&t=T;)9{23jHrO?|No zK(ss{ZJeF?K;iEkLDAmWuR;GVk-&+OZTj=9mv^+H0yk}t%WnM0vc$VS%PipA<&?;i zJ5crY!+mK-iwfk8z`82@*-@v>`|MfYK{{#Jbqloy`kw9B$;I;e*Q!~f`tO?1aXFhu z5!Hkl%tEo=(L0zIvB~UJomw$`RCI-bg~x!N1qKdQpUqfTZ;qQ#`R}9*M@^!@t8B}y zbWzg)<|Bzaf-}AlKc(~M{7^vlf7;27hsb)cn5ypMBtJ8K;Tk7Uf}zI z(w6(fEwP=tNPM|0jz;5&^;@V}=CwNkJq!Ike&Mo>@XksENdvi^uBB>eLDi3j<)R-G z0Z%lea7B#^L=C2T8@bd#=ae<)LE&MtC3KaY8>HRoAmk||;dCda9I^<{N|Ta(3z0IZ zpnPBXU5_ze6J0Q9&VUxjf<^N&ZbXkLU3Cyy{DJOM$hE1VGPS!Mq zJ$S*`W z5o|z+=Y?<1*4xOFg28cZ3Q=Bl5+en8fEH~rFS_HIPsL@cy7PB+Cjj)+w`>r0GhMu4;X9hKC5UGNS$ zC^^kMa#0D>YWpbBQwM8zj>#rgVUFDx+ICbUlXo<>UqY0eF-i~YOCyUw3rd4FEm+7HowVks?Mxm_n)Yi?P(WDzuN zuAeck$Rc*Q{HSZ=0W3d8^33Vi=*@Ceernko?xDlS_?OdHwv9DFrx+PcoQl7l$;p}f>7a7(~^iVB^ zBvH}~;$vX`K-cE&4pys;`*TJnVv{%%taPeUUQH2C0pau4XK}8?l2Ij+LQ-O zpd1Ke_Q9Ai!~2V^0{FeV8XQ4V_SFLn>qeeIi8pdu(dfQnPDq3+F@hG-GP>(wxO#qM zI&C%^TCT&{R<#~oM`kqGryNz1(|F%$^@dTF=@!>8MUc2JeGsPSsd|A0NH^s&S79Oj zV+%fUsGgwqOaOIO(eQ%Lz~Rcx7btlko@=`E=UUEKi_=HZiYjq!Us6WHOqk?dF0K~m znDWh#)FQM5llSuqGpoFi)ERd67Z2uVXzEq0?86ZKTMT7~6}oD-4(o$EBIggd-*gT- zYp~+_Im7tmAL#s_)lmPI6!!1$uyl%7llh$TIAjvH1|*2o4kt+!HjBDNNAxls2s~eC z4xEG1iXVhi7}8&T7=YUiXOy|29Jzcsc5Y+*&RJLY`uy`^TKs}ext1?6{Z842m)#7K4}!RLD+tqI2MDxx)MP({?rN(y)dMS zoDfg!L3(~>{8oxp@owB0ueFFIe3a~kIxl||LysTvYqk&sNDp#sV&aPe{3*z!_P00R zX~VeI#zAPnhE!`woMa(+M)>an=DMUH>pbdT$FkKPqq&_R6usT=xHn>zFhdHQPLPb) zm2lPO@37~!1WmNwx)#Tzpc+72YNeIJsrqQwLZJsTCqUeM%H(3mqpc9xJ{ybhH;epZ zA@nw-xGs;%l4SX%leDvRd#!`tslV%HQ7DUbv)sa-PrAXm;lc`T;$uy`4K;Hj zw5_uKUgu!#1e>VOag|D+()>TWuK)ba>)%pl{%xIqS8kQ6S~i$1$X?MtAhooOKyJH8 z#}e{LQgK@Irh8PUu5HpaWNhh_VK>n1#O(6*LLVMe9YiL=jXzfEDZAsjh^~fOj=W_% zv^UR~ON-9RvaGL0L~P8 z)mcDsm4dXarg%4aUfrdzKSW$h2xaMn+i~rCtw2-dc{)^UleJ3!KvcBaHa~kc4=jFJ zo{eLnY;BEA)BdB-fiPHHqrKIc^I(dAM((=am+ne(y?2 z&?@cx)X~8-rd32TKtVu274=SNkO!1fpW<15^PaM$KnX^ZZ?Q1+t`;PoKAeOG+^WU4 zn5t753A5^5wI9U;Y7-$_KUm(RymL|v$J!+v+>gTPx!H=J`TM6%O5+Dz8W|`sEHZT8 zt-j~d=y7q=glH$3cr3Dy3#KAhsAz1!60t1_DpyXRT!CjX)XK9C`r|+lqa;UN@mT{} zep{vTn?~}AL)rf|-n%hK#R{=?AiT!R43&Jiy|=>yR1eZVGb-NUAa0Z8*TEwA&8VCF z`dc~5jvXaJVsEqP_DN%E9=Bl-(pLk_Wyn1jOvDbn5LWEvFXhJYVHsdA2%&@2A+XPJ z$K#uE!6FCC`;3YR^$M5L5-_JEYfaXpH?i*S=-p?M^d^GP~H2esY60Z4I@X@_s zVmj2M$@DIETlT3i2aLO~SXGuje(fx5S$7$6XmOcDpA3Q4wv);z+an31h6qQmh5&Dt z0PmQ#004t--I3zZfL$R#*wWzc5D+1g9b6>}jN8p*|8N`9t1po&n<=n$ETkr|e>hc7 zJl3we3DcelxEgN}5hkfm_|;4fCS?&1lug7=G}F_!fY&W8BQ1*YmVFRV3?l?8 z!-Wb(KFuYxJlU7uO+FIhfViEO$QtrP{g&xKM|!h1RptTxHbYPH{s*p95wUTHuI)5^ zV5^?9?~1m$Z!_nS6@F272ce7txtU_eR3^NJPO(2_2Ys+vZ+nUr?beTlxmpp@2y9FuwA)nl1XkZzLueU}h*i_#SB%v2X1Te$`?M4hYgB z^TjDAs~0G5=}wmK>yT<#YSU_uEkmh%2GN(@Kn)b`0je%iWKqE zS0aQ5rb}W20AD_>nr%^qH@VbR3eY~3`RyqHdGW5v65WFb0nwJYH2UhBpbl6IN(K`r}t5i%N zZz_(L{PSFJhnZZ(B3xx+g?&&^J60}E2X5Yer+ReMl88J@00q`iCV`@Sdy1A~=jQY* zab0&G#4K+c!vqeAi{CmE(&?=EoS}g>HQIkHuk%X1#DKZ6MWp+L!`3I%d;nAJBc|fl zGHjYYppB>puUBQ9i~hci-rh!vW&0S*W!K{1V^><#RhQx3tL5I5$nw2QctF$1EnZ5_ zRtL=kw~`joC|~-BZr}bcUvS%()d=WEF>UG#%Lqe(#};S$6gO*d>@D5MjaCnN-dtt* zS9KAsp6-h6a87|W@9Mq7^LB7ebllu}lGMJ@Rb>)@MoQ-DQ?xM==zdaRu}-Y95_Z4_ zVPZ&G|LlUI(5hQB(xtu=K(GfjDC$5(gJ=iZV>wYP_JkoOoLIi(oMr$Q{T&zGSOe< zTV-%9-ECR5LeYg*O<~-bOjkMA#=RkyOCadKGQ=c__@Q(g8|><3B-vg0?2OyBFJBM< zHXS>gntJ;T90rnHuFBfkr=d0TuAzwqW8x{x2uf- zy~6%@x}k+UX<7e)xLl(jKS>b5H3l@l9x-5gca-;()Do9Z+!BYTvnL%PF@rDye(3WK z^_zpS?*cd|K5MPeznqu;Z*j1oy^Zz%O3xM7q`%4`X_egbuk9#P+9Lz^J3~f3Y9JKo z6GEU0#DQ%VXAwfzGbWrw_LIIr;66bV2nXEsjFsaWtsjjSB2|igopW@b%`T@Yr^5w`NJ!THA#XM6dTb;+eHVCl_0s7>RGf$>7sX@k`U^8gRDa0ho?Pprm8MH+#?c-46|n&Ld9fPRXH z1}*mP$ib}@dGo;%=Blt!j*5{neHeZu5#2c5oLHy7Tx8tw?cv~y!EHMuLNJq(v%anh zjSNaLW@W8u6_Mw;_2(qqEqce86wS6tx+OniKYjWx>O)((9;D(R-c1}A^wrlHSQ#{d z)Uj!WpZBLd>6d|X=+oFC8p5%U^9|S-3%1ryIzD+8ohFO*Kcplco(T-dj4_I zrlieKbW#cC&9}b?=(HiEl7mlRjas=|Uu+>VMRbuZ%f;Un&fy-Jm@dbYcf@@`cwAso z-Cqo`A|(UzR*wmNOYaMfr(zOI%yJvJ2~q)N4=2dGz1~Kmp*i?M9D&#lr-n9Y$J1|) z&r<9yIJL&xy@Fy}0g>Hp2(Ase7FIr2f+03?46hfgksivL5t<-pM=r^Vzwa)@p8tm4 zVEcKQG+Yf~BvNNU<%FCO`oRRkY?*4XxR$(`U^CKv z@dj{{j9#_%{>th3wPpcGmyE@57a_Bu{Q1sD%-?Z_pnG}<`&sAm{iPuN-x3V}Pn`Xs zNROY9UZX<_u1+XnvrQ5kKwQF}`{r98At%@bX1hDLySuzttCd>Z`HHn>l^_?IC^-52 zLHiyPbFcxWL+Ds+Qmxs6=N3=RFv9G?T-e`UWn=^6wtP)((jzgDY!|jm+BCFF&U-q| z*=WkT{H)_cCENg08ISE4&Iz^@H!I;HAxyZPAwrF{ZW~fmgBP}Xr;Purl2XEcjJsDH z{W4F-T`=AqM#a_+eME^bCNF9pN3!i1zY{ue6eMDPAMUPoRcPsP041!j8)&;(N7cZc zbw%nJ=tM4SgNGXD67qZV-DSRAS6AtC%|)q&MIitygHa^qSmgE8Y^|L&t5HWxd`(aI za-#=>SKXC`IKUt;VH8H6@Tex{s`?1>KC$Qp*AjO6Lg5&?oRqXe;Sn;Eg5EBXc`wNV z+3bpKGKfl4!aHduoWEAqWh&P01D~t4Rc0C1Q(UCegr0L3&0BYR63`o{^Y^J-W?}p# zdaDxu?yXg|^L=rBjQky)BCV^HAlqK{DPhcbds;3ZNPfJmsb~lK2<)f8nsS%_In!xK zXXupqxxxAImm3_}&%U&Sy#cMGk%J?xy^({Blf8kF1FeCL6|IY&rG=5bqrI8F5v`e? zHLb0^jiZf$jpgS{d!yg~u%hL2GBmRh`23}3Z78c}U}5A)3%qQiv2d!*Vmk+X$5D`w* zDS2Axj8boP#14jAXpagc@nu6T%-?mos&*VAKyei@DroQcrzn^v@)2s#Geb!r|Krsi z&AoFa$_9Q@7^MzD=a(lqjI7$ps9y1=jUicCqrcR!KCmsSefFf3F>lGD_2Zd28 zEec)~r53F!Unu9=GO8KawUa*pe*>#r0SUVL37hTzZ(wDd98GNg0oaWMDeFGGPhd0s zv+>ZrwrD9P&5A0iTvSDnK}8Ost$;@0Ds_4dITN$SCwTQic03xR@qC#l9xelHU7G=Q z*@jTD)J|X$UEnXoR>j7Akqp9%tZuv$#*An^gMvOB&Qe?|BjNmrZB9f8$J4w3)M`FqlE;8(8NvyHqaxELe?*o9U?F%&3{a(`WIAvR^`N4xxYjiZt zOl&(?1glSrg6A*LPI=Jg_|y}--dk$-5X08+)p`DA1@mVZa~hU8(v8URW&7Uj#+nXx zb-t+TsB8j#K*Rns=4Mj~C^^f$*FP>bX>+NYA^KdNy?;0_^3Sb~|IYXS*X{qv2!Hy1 zQmmA9?{DAd36cT$D!|V|CEJ$ES*5!hX0X6ZR+!}OVO;So6h7CT{>SE%2c!2gjvQuy zeM=(tMh)s2#;x8-VTKJ>;gD&FwDo~71X;23X_iymJ>$==K*05a!DiC|b8a(k&b}HJhRcDM+rE!XB9H25$EpV8uOy z_tXk;nu*GK#pW^1GgE48vGlo_s#g^#(QL!;J# zSH~;RL&u0TrecrVmzc;uP_Xi zNXn;7xzmHkp~FX{zWtH%1*|Vum=;I!{_^v~xGbGuNgCdZcNj(#1Z_>U)>=#;gPA;M?zzU%wF1Gf?kN3(PBXKiHMd?>F{XfFVFL z6u-UEkjxih>r9VNPG0iA2!2QEu?91FCrH^R10*RMD#M3E{V|xc0~^kTpq9v~lCjFb z8~bWl4&PNNzOYDi%VHm`UO`<~yC;=BTs999reEe-e>k#m+M#lMLS5)UFs|!WAN4s7 zn%V47aMUJ=x)Bhm(KK{IJp@$J|!5|5s*{f3eORs{5qL#kv& z%4J}-sRQ3ObACNLcEmCS>uP7fFg-^Re8qTuf!;{!l=Dw+mx4Lx6A#uGgU_#ECW`nA^i>65|409!>2EA z{3T=x|7Bz=7&-nK+<%YS|JIM6ISu18r{VQP_e1dS79vDNt=_*2($N7oVEJ~vyj5Sx z>zr^9b-9Pi)=FTW1I{hVA`kKxchzS3;G{- zToJ`H|BC-K*!M3X`R~2RQNYH=QqTJDa{NZ@pLl#<%g=|E48;!n8rUyID38jl-OQaQ zS{Z8($o0b8(Vr8-iFt(9R7!z$7mjKQTR$oDlj&zqc-+8QD5)i9ZgKa7#5Es-u7R!` z9>r)T)NUS45R?pwX!PUIDXgYULxWaK23-N_4eR0^mk6P|mJhfi726yoxy*_o=l~OF zG|iU=kXdh|9H=i(J{lD4P06#R-?-^f> zLGMJ0|D@w)badd#ZKl^>Kfazz(p}1IxzN?8o@eRZ8-L=E1fh~tYDdhA6ym_@dwbaH z@;d;rK32-7K9P$4%iWvQe~P84k);)_fTfw0zMz@&KQO8UVlN)_#u3tb?l-MwyCSe_ z$k;+FVMuJyhnIZk`AJ*AErzRvN7w7~P*tyKC-XAWN!Vyjb0X!J*KyV3nd!|-S@bUVvU@bcpQJ4}&kL}@$QfMm z!Zw{DMr$*Yq86%?YMc!)b$+5YKMRxuNZ z{&diRS6<;*Hv~mRwzrqAx5(y*bU=#5+XE#{yHn7F9^>9^V$Cfzr20?fQ#<)K9NWy=hNaN7Joy2``F-R>umSN)xH z1Oa2#;YwcVvQzqy5cR`;e&neve7WEJri_VaO?X$Y@Uzl*AVIPYZdf8Wc%0+-1(^4b zy8b$mgdykCY?{9W=08r-fB496VC0SLoIcwFf;I*ge}~WC3Qw1u--RbZPw!xNXfvOA z29x3@ct{nt0s6m!?W)R$Z zNTdK$&^ew#toeXEP{|+7xyT=*?odDvo;95Obsy)74^(z7qXomsGL#c3OEDLt`9@!Z z|6r->We!%~PXL}ipMPC{Dt^BGk6Il67l2Qm`hUerjNET>7yNic@(3s<2YKB|!TEL# zoMD&&I;Y5g{;Y*e5tNyG*K)UyhYn+dnRW_G@-fvhwNb?w@CUbn)f zYCh4NS7tj*n$0&Ij*VL6ZqGl}Q~ZT?85|f9WQU3Kj9;1Tij64uN5&$JDxMOa2~H7I z+I!IgU}3zKhC)DwUb6N|jEnRenvVC*+T)OY{yk0#lMvTz+Bk&ohpV6Q=S8T_j!%hK z_RoKO{J*E$I7t1(tN*gDWO(2vUf1EvHml!RL1c||85>G?J2lIV5SG=>h-~V(;wggmKph$MS%q0G$h3* zYX;1ZQJrt|fy>)MW-DEEhsq_#5jf07N5~BPqL#2`d0b9rOGzuPtEfUoY<}@88e{!y z$^?oD8%wSu>rA>nq>=6nTp|&M_2GIsF}p3q=p*7+C7K#0oV-mj3e z4EHpVO*^hTsXDbb!U@?_06{fD{2dcz?pdF?mz4TNZ^`nKE7PbqR&}iNJGGG9@jm62 zt<+V&&0D4IiqmZMw!x#Xntuc$DfxNk>?f9l|39%*F|z#ZJ^oz?YRUCT_k9kHNvOV# z!YowFumpp>1_6(SAF8-n4P{B2g(m96S%Ypwc+h=)=6-EyUdxC3Qf+OcR|p=V{-};K zU2wYjc%`b>%QTO0nQPWCJ0SyAXCEdY2~4HR6I%5Ev6kQ{8DM_~HR4|v6XwgPRG@Ud zmSk+`y@&=(O0-_t9)7$Wxu?~q;PBJ>yrSsgPi1J zi9lV0aOB6uT*Odxk{em?O`PtpUVwlcvnF!=GS;o%al%+SIjH}cNWTBW+Wxa*jP-N% zKUe2pch&jy9USfT4E|R4D}EC0|K1Rsq~f87WrF*!;O23Hszw5ZpAGELWAnA`@%^#`m$v==o)O^Zt_`F(uyy2`!49MQZQ@RI zH2dc<-3`bRthI(cX9iDOvI`FPb?)LJ8FcG$(YD|MJiHojMc&GggjQy(OLPq8-KuYD zLwSvRO^~5{Uk;{gJF70U3o@M`D=eBS>&rE)yRyg8{4$(7U4`*d>4F*h`hp2-I@-{{ z?+S5Pd$C&-M{1KOyRBERo5h~@mp=J zP#okwhBnzRt^fAm-x_H_(zju}8Wk)X&Vg*xjgo%0>UAH?Ol9lzh0cc=qyNFN$8=Yc zBGAgU!2be7??$F{*^iYTr#Ojj&_fz>o=KCUw6+`&Fp6SSmc~}8$qZeD(Lf;h>s&}Y zsGswi9rsE#XL05c%F;s%(EtK>QbtOXYi%4#pwhW;l0PO$x=OUA%wQ2Oc+d0@NxZzlpyzmzNZtvKd30tZ<**fG2wyN15ZKW+@BxX=Q|VcQYT@kxk1RbFh-~Pc ztl?OALY3n5j1;%8H*h_!k{Uy(HyStWwe@e#QlhT6T5EiPk2a9icO8O6pQn{sFWseS zPbkeTkq=ISU+(zflu{NUj^Kn3jh}}n4T)`Z)y5# zylic7gGj4g5@aTA5-ewf?>ONm-_Q&x(JMdNKV@E=%q9P+f7f zah`XMF^(TG`tsO@4Wu2`W*6iCICB@|_I>y53Bas`6p?ZrJF)XQHXLq`%78t;BxaeR zU}YYZxHYEi35{n`^2W~bbfg|Xi-RnS;u-?E($xa~v6e2!Rx$;;Oy=3Cpru8vrv&&E z<@+4V4u*El)D-o^@r5(k)UpzqAv_$T}8WVPq0gaj;uWTg(;9*;(XyRnorr` zR}wUVo;3ZLkqG^JfDM}l`Pxm04~;J6-l6id580j|s328Z_G*`W_NH9cg@&UcbU~y> zTsi9IgquCfp$0i|*t8UsACB5Er>AP|mAc7qP8Zoa?PR$eExkUHE+YGFyYZ)Fm~2pp z0&PEc2PAKvx2)%6dDz=hCD23CG?bR9$$k}*uRUKbKnd%K>^0bvswmLPq-bUpmJwNe zi5S1-k@l=uEGku4Uw0x7iXaGa%$Q%XM?ZwG7P)5LnV8YY?MIusig){RbU2{`!1SRl zHNy%yair3NI}-W}fc%LOznb|{GMpzyGD};sK|iL(m|Q!zgBT@DGpt&JmYU7)OwB{$ zIY)t9=iZadK@kdsuS(fg(;wdF8Tf#$d%@}Z?xa#C_F?O<(yX2rHBG`;AuA^@6b;;9 z#8koDdk7{;H~Wky*8Qx*59q|sxdf>5T^n?97HmA1{V@*GCv9znUyH0#1uZ887&!f{ z?CW%NQ5hr%>3ulS*4~h>#ayEDu1O}{#*@yvP+jtVr(@mJu8duA{z<0N&nSuG1)%&p z(Z3jF?mEQ62)d~Kd@aQ?aj)TV3;kK@U+E;Wk0P}ZiWaar>y9IV52xvKL5gRv$?v{d zpw2Lc>;Wy17SneVx)|P6Q8`vxs-Tb(9yp+3f6owR$WOe4lFnD7v~fp#{ZT`RtUdtE zke;tJzS}{}mX~C5(}V6QSe_dplL-@^uDeliN6Ty`j`HYUMp0V!l7Pe$;&4A%LfFH; z&YKHTa-$}$U~H$2C(jWR* zAb1s<@AGXYp;>yB?O^5U|FHH>VWKtJvS_WcZQHhO+qTVBwr$&5W!v^Do2zW&)ZcyX zxBK?pz5Dk0&g*=bFPRw`BXUHH!G@Q83c9SX!Jg3{FCTEGj`1APoS&OQd*?%<=Yb&~ z;0s@GbAoQow+h|>UD(-qMlS8Yjg{)!cw^S>;V4{DH(TL&*k_KfL2|Obi-qI&&lon{ zA%M>qfzuA4ui@;)pJ=-KTung<#6Y-l28hKRprdmOX^Gf7C!x>rgOhVi?kVRGit|p- z3<`FGRL>ATl7^Qf`_C9n$w=Eq&mcZyjVF0HJ$upk42!!SoxQ{yGdHz2gv+$EIomre z-*ff~MmOQ(gTo%5lHN1eUV+3CqGjG+Pl&O+VdxYB>7EWnFzD`54o>kYKgn|0YT*aZ zR*LY8cWmeG^~~=M>P`_{GXwY_zQTHHce47$V)`GWr|wo_dgnPfMsZc?l_ccehlrjl zISRfWzW!n-$_s4M9N*F7G6?@usl)nz#7_Qd1IbpEa{A8s;g#w!6l;?Y2P$1Am$f8w z7-5n<4^NhW>*7C96odw(#!Xm7?@YD|nrAg6d!T9G zS%eHu5N(_W)za)rlT}&JMBAy{kj$@QUkBrMk-e-nG&gF6fHi4&Ryf@|{m==wk^dbv z)5vT!CoU9&#Vp{(?v*pasNRAXi3PoPS2}TH3N0ClJWzbQ>)+71d8O5Ys#mBWko8ke z!iUd;+=;pFX0MtBR0`I&&CcP*4zePJB!cPB4NlG8&*)3CK|BJ^sym{^8VDWeTzS=4 z_^&{1y%*4bYzwB+3SGhoBQ$a-5Co0}&5tS2wU2PB zu&!9ld4SeMV0aUVUA2YZy8D2~JQS9+E9L$8+}ENum12VnSXyW{Bo=)NH+)52T}jAh z0n)Dx`LQ{%?7YjtLMqtuaB~t+(H3%)mCoC)%kk({QM&g5RfBhfPv9L_}=61Q0 zNxy+5^yfi$w~ruI8O7s5h}>Mo^zavE0aTQd1b!Xe{5k;hv8k>=WODNN>Qg#dx^=;O z>B3q_9E!af<5@+y-B6#{nsDmw*jl7!6hT0TGnq5r;~uHv?8p@0aLt^6X_GeCYx*thxME^kFW z)*BLVx{dDslN@6|s3%e0D(8C~i7zvF?{M!C2@5ij{UU>*_~_trj2KK^msEgpmD1UU zpYqdNkOX%h7qw9@;S=k(qb1p0CJnpq`Bq{K2f>~v$BrgCnq#I!!v3xCHp%e(s&CrN z*;mjx1HG9$={ZYC>Osb-%t;S=AKx(kR-HuY4{@EnmttI~@X%NgXR)~UG=nTDn`Z_} zbY8){3crWB(&Q(-Tn@KC26x~aZ;wnzQjJGgQO4)~yZ+d&O6p418ifkq%C13Q@g(o- z(PE=31dc9pqaL)B3}jV*5G6Y3(15eRL?r=X&|``Y+JpyM;||G)*1Z#f7}ppbTD;ku7#8n*9F2Gn*AaD4RYl)#@qKN}nG;ev z=1M;G&>^p!8h@pRFNf!D3DnWwJC7Jdcd#rq3qehxvQs#2JxCfRD;wC>Vkq@VIoP41 z+H>QZPYc|J4}Bl_L1{2T-q%f%x>Z;FzVdk!uFs^Bg#C)6T@iI7l==(x8+eaRb=%N_dl+JwWiXvjqv^s-?2;K4i=0{HQu@Wt>m;HU)+WRP(fQT9fZpMvMO} zqS@OYJ<3oJat&ZUju&RVTt~-ss($6VR?~a7vHXvdukr#Hmg3wj*y_|}Hj~p;+wt_q z%g6B>h@YCe3d8U(!*-i}s1~^3V^38nbX2z}qL~Msg{J8Cljo~e5At`L3DmKOH-$2A z25IbTBiogYRkjG(mMQoORJLYx)d{xZ?}+(rHK_-}0e1(p+5~Isq^Ag$kS4f7dy%^m z8;+Eo>Aa$O7{q1?D1{&vdg;@!eO4jjZMSsUWICvF1w=DGHAyzZ15YtA^muY*h!U5w zu+cdl9EHKK3TqC-(sf&i+G(w3eeoon#C4cU4Mea+Ol0W<;ID?I{Hl?SOGwO4*3!p_T44S6PQ?UDByD1rdDc%z1CMbq z60rp;0+J(4MJ7!^Ntvuy&W;0)+BW2z64ghpJWAqss`2m2x_%Epzk2$7{#WE&n~i9{Ksd}3;N6d(T*#RFs} z_3WC-C1FvF&Ct+hA9y#>55k^>n-8pu0HH_{-Wmz?dB&m?43W##FL_ZN(`LR?lo3hi z8yP6BU0zw?gJ3xIJNAx&o*Gr5>0>;0zkxdca)9)hm?KO9d_$ZNh>y|*TJ1mA`-?Q( z%3~eLe#;qy!2i>Z75;am;h%Qw-#71HABDe%M3|ZVKl(=R>KwVTb9$+`^`*kC4lY#oIoQuw52JJhfJd zk)w&Y)Bf!HN=z^(kq3 z(UWv{(kLQ#mM}G7L$1T(9r73mU~DEM_L|lpN5C6=L%?{B2mg%kZejusg(e&g#W?=h zUfQMl#R}7uO2BY+*8xjrKC#(y>A+%WGn%5gqfVNa3vEuwU))#jwuA#rO`6P07(a^7 zD-x1L`@ZuG&8DZ<68cY=VdQEVmg*0iL}XGhWOm+}BppTz$X(W*bf2Ugj%4%n`p($p z2qhvpiw2++*%FOXY}t`wNR|{S!+!YJaBi9-6~@(^3}ILVJN&RQ(C$CPFQc301w#Q* zqZeLMkDE442L5SulWjGw9D<@f#F8LGlUgj`_{cJ9!u^({uSl?wM`W0nna>FAVg(go z_K62hEuz|&sqOCxS+BZ3Nf)Kii87eh8!t+rf}P!AIM*fv1hSu&w^l%WFq!EXuZT2Z zy`A*DRr31hNTw9IGnxy~z->X3;l=3Y53?P2^^Q&_*=$ZJE8d=>n*$FzWes}Mt*d*= zZcTuve0Zc$jYi7|=9*=kz--AI7IJ)m26F49N4dE@H;i)j0lzbdlNWh&GLIV~z1f_F zY`6izG>=--^21D0G1tR~Q&ak<#8O?&6-i9@qyViogiZCqXnzQ9P(#U#DflTrCtTT1 z=5GDgFRc^#Exd}9zK;+80JzOhRw`L=yaf(67G~ZAjJDmS=Tfg93c6k-9lgs_%}L-% znH_&Vuc`+HA-u*q`?1ja|Cp6pfX#Y6gpy506iYPcOIy2gj_oc$WaS$TVbWGKPq7&~ zb0N2f7shrQX`aN|^5P@za%HQYG=!8dylq~(!D<2Q3eO;shnt*#tUj!X&8XJt# zqu?ek`!p`l9in8j1oiNEQQudK!fu>Bk#WBFgy!T;EaQcB$327S;P|6ppTjvnpONxN zoz!H$vaX7(nVlYmo(+4~7##3#pF+mi!Sjp>4|)KD;5--tD8v^`yb}H#A}Jcg$4O6R zAgSR;5+aXm#G1_$Ye$8T{W*6G+Q#oLp_T-aMM#Aw!5X^IctkeS!7fw?ppipz!wrEO z53>%(J>0f!zdOySh`jUttHR|}`@~_pD*YhQxh%G9?LIDM&Hgv3(S`R{SUCx9abVq8EHbQa!y z&PLs;?G}P(t~rE(mE&VAcSfuZw2*ivo(mjU5G9F&YOh_Uj?<_B;CF7HEg~mYSX!M4-)x{m$eT?3_U#qiB&&0 z>yI+-z)!ZV`%dcN+=g~ky18xGfb0Ptf2P>DRU;v@p4QpZE8?8oh#9GN{&c$4B(uL4 z<)jgi*=Gi(wcEq2adFLx(qa%$^#t-I?9_@w7Ln+9+xPys@xCcLyizgbe7E$Huqzn$q9rBrE6@|r#nE5-_W8XM$ri|1Lm z-%=@Qx_K}5d{yj`A+o%e)FPgI)U8+t2E!dAe1yWhNRWi>u?aRDd~gEYwJZ)*;0mX} zZ)Vfpu|92>+Oh3Y4mXIo~Yo($ER z$xX{W*hU2?6tt<7p2Rxdqp?Pl#u`JJj&Pyzuj${WdK0QZZZSuoTJk?59QNrSsR*Lt zVS#~}lHz`w)5~gkNHQJMWryzZ2)q_La$+ln%XvuBTX7?d2+~h>HuSV9+#T2kL1W`g zAwPzN>(V#05_zk#Lxh@A(@dDd9!-9llatsu+r6p?%;XwRRanffE^p<{YxLxuw5M-G zvp-_uXR4a6ajl5NsFA@G+u*tEv&&L|0xxdXrah~8h2fgaM=hBVoWc zYe-45Z`-6Wo+FNoZkUoDcjS2S)-24y+QZQSg~OVA)ctG%>ySo^W+HyiGgB zV6RrHz)DfI*eg}jek3Wak-9;w&BaAz?jp{t0NW=39hSRk<CW z(+=rf!5WctcXYZ%!MuUEow;JNE*16@1zkDM=fN^S*|4>Dr%RUS>)AcfSXd;-15j|>4ziQ*^ z>536|~Vv9~WIgdMZ#r-1y2fK$s0(2e;00eTT0 zxwzVOb3`Z}#Iy_%gDGsM1!3z}fE7#`&8-n@$bv;jLd)qPYGq+hhgNZ{+jXquwlCtn z$#1v%SFY+1y8`2EubLe_>36D6nb7tgCJw1tuda8_=Dr7nl_?KLIoDpkK40|bKhGtn z#L;V3drHqU_lVtOt8|ul6{Kf9((l+`GBK`NH&X<@(oHe@1*$yCG5c?q^W%HI~K+qaNt@c zhxJjq=5}cmv<_H|MhO7Z*78cGkWLZ#N?KCFzdXlT93;C{%z)BO#;pxpT%AEX)NNIL z{hIfAwzhg5eP?MrxCy{xTPsVuS(5=)dBwXapo|HmFtU-MNn(qrajoG@gU<7mZKj+J z)pA!=*4+mNnckj1Zvvw;B)@88*WCl6ztmLag;)g>Em*?)RH!Cx*W`1FTq|8IrkGVr z@j^_8i2k%gXqGsUXH^VoI}*iy?2G7>PL?Z0*g`9vXkM6Jf1zdL5Yv|HbH|{uAY{kz z!pxAU1nkww`&J!uN}|_OcI7s6g*k*ml@C)0sX{?A;Vhp61uyO(XOd}HjnmY}$ViWn zdutJLRUs9IE`hW!=dNsuM=xe5lC{*=eWz1h55cZy>OQChw$HSeZbO1qwb$LPoU8`y z;Sq{(5$+3-2XY!O>_r{RdQyeR5OZs~R+J{|E%q%fY~aO!c~%4UsmFyID6wN302RX? z2OKJmf+yMCzwZ0vx-e>Lax!2=@loPAkHJnisA;EGalF16z)VQRaSjs|(mGg-Kldvy zlOKjJlp>~M?+1vhq0InSP+q7E9eaip@lqCX)aLV{8|Jkd^RbcB(mq~P(6~x5rQC>J z%FEg;;5n4crmbr&l_y`6oDWvga#Xo(cJ&lDt9w5l`0K#NsC24SkUOW%lgpf=KZ?8- z{;~<9gvW)!*Xe$ihJ4vDA8K=L zP-V?X1M`kMxJ}-G^tT~Ur9U@Js~Mm^-Zpv90cG#jEpUJ^$5FS2<`x3&wUGC3N=Z#& z8gYYB5nyk4nmn5TKbvL%H%0!C%?^%^&_VE$i%Z#y%VD0dwT_XRO`V?}weFb89a7as z=r_#**h*|8>)bH{Sye7SvkoJXT3eR(iLH1yBnP%f@`0zJ_k1oAM4C9Z(5`!_oFVBT z-j4vXzE!p3LuflX_5<6Ie@ zDVP)~x+%TkilPCbogomij#ULPxx~Y9pb! zy|Y5J%=yT>$00M4lRj8SSxi4uE?19)ttE1i{OLd!c!G$FHM}nkVzxd`S6~k>2fO!& zbbYx4RQ}lEAX{$d={M(Hw#ISXnS=2$7m|DP?>>LJV;$)o5SPr}*}_o_KaD>Q(7RL+ z?+6QH%j=dn+vqQpSKWU|_@=e{t&DcnXNbYPqDtCwZ|)tahXU38L(#3__Dx^&a+)7^ z5zdSMXkKezAGxzl?~zZ>oyl2txt$at%l*M=fzSyHd}jR&%Ag|w<1Myn20XhiZLA7x zI9_p6DI3mJNLi2-i+QT+@7=$Lyqi-&7XPGk-f=79b^>!#Y^Ke-fSq^Ux|MR@w8}g~ z#6`bT%8?C`L)tw)i8M>Ioi2T;zz=Q%@XhxoIrXJVP^?e#HFZ2^9N1^z{DW}-yC2=$ zc?G*ytBX6FiTubWgR%wusS1Kk)-~+D&JsmsbC^8v{3Fy?ogu76xvYEPC|RIW>kON} zWn?%1?6ZyanDBEmF|l_B@mU1$$}>wSLB}d;xJ7EDMQZ2?S}w*cWaOm)ef7Haq)(G= z8y)v4?tnKWn6eWlHa@Nm$o`CLQH|926NxCdji1J?oGy%;r2Gs`kpX+DM~_&nC+NjJ zM~;pjM$Zsa_7^I2y)ZOGdH1M#cNAy$dRXl&7oAgTErW$`wyGxxfmb5J7bb6j-7eDo zJ=ve326r5}xfHp57|A!-oB=n7_%q$X%(ctXbZLvZq)obYh8}dYVt(#Ht#Ghnc~pdB z(W6Ma3B#ZEWQ2;uY;gqDtvV^<3_M8vm=pv)f#{UR6sw1X35eNPrtlNijMLxKtDKVM zQXICNPGd}FX1S?Err!}zTeFOD>90%t-=MV_u3@j8n6VO$jU-16yi*VB`%SlwDKtcU zyd#hrkjak5#-WSw5$4n4MZ@Vz_hu?HW2xRhcyDin)=p?dC)TOg`1+%T6$9~*_B-we z)-4X}cujhKQY<}E35MJBWdF1qBRgljS^L#-?nfcf&zlyYlN02v?eFDhj3tyZY0pPc zpNqIUGha|bOwu)&!b_^;ZJR4kkh`OwF*jVKX8A|4x~PYjoQ(xm3PuaGEgf}{!?{cEqj9M>-6eO3o!dS!@+B3)Ma_*CbwMr&-lGMRZl z>Q(5?DT#U;z~A_*b7L%1IR_;eLW;xiGSVgRtCZ{39X*l|ls{~GQfSwckE}(fnJHX5 zm2c)b*c)=EYVdl!9tzA|MCL3%PMw>P|4_(9cb>Vsa@!g6ZVcwqfsiK&QkyMS87C!8 zAZ`efpLz7Cq?ED*uPf=doP{ZHv@3dTP(|Lz6SpwgCdlksv)|QLe0g{sP+})!id3)k zu4`WGJFAqSt!rkRg%c0{@UH7(6)h^78fS)PYMTzp2gVr9=!iBfgIM>`>iuv{)KKew zc1}T_9vThBwUyYKamdDeVmEs?^8aXkUQL=or9USK)gL#YPT(3#>M+kBvY;+c)KS*{ zC|@Z3F?Z#9hB{cytFZcOi-`I%Se*mskr;Xe0DJXe)yhLhJ?BbYr_Z;1xfDn7o_yma z#&|H7Zxn z#$aIwJa1TKuvhzQYqLuR3Rz;SejDIr98|hTQ6t`;JWX9wwH1@7!FYh0NiHYP&nKDe zCW@nM52eG!>H4|Sw<x|Hi4wrT5`av8H1WOH@NC@#I(r{4a&8ejJO^$vMnaa$cFnO%!FwR|%r zbbzCFAFpPT5Mtz_=Q9|ZokXRAOc`xLF|hr-kL49K5YzK^$?rv`TUt*p%#pg2k`91q zNYJ3Z5f59SEJBe|m6QfJI24AKN|}4=MWD(k=d2Qk9c`A-sTEcszd(tSr~gTu8Jve- zaI+C%tU>sDwWY{eb(}a5R`TFhRyslY$f^%Bass+0;U-LVndOi6CLf6hWu$YJA%nmP zYG;0eNP#0S=;Kg8ni^C(O8#?f&2tdr@a~awDzMVu=z=!}G)vV%q{?#tCLd>~zK1tD!D!YNdw+UOc?Wx|}IRm+Cz=icUNGLDCFa z{YdrjSFk~+VIrE`oV48E^)Bue^%yZ8wB39p^N9<%irHjL><8My7Jw7o75y|H3FW9ZGeyf1;52O0?jaOs=k-gx#q10jHQSS~C z2Ye!f8Tl=QaKcl5a-y%8j2rB217PuBY3p_VWJ1iXp&LO13#0?f8&6Co7EccI2fv;+ zrnGiM#v8HwdIJQj-xk8Z?9wjVfrpaQ!-hqO0*V;^abGB{0Isgg>dzSP&>J>#2p;lt zJYR#}I;zxKnUJ$YqMLqha-O|NS)mv?NYJUdrLW-9|CcijYJJp^w0VvbX{!)TQw@mw zGIgXNWsr}rs>HN&o1)-RLj=(t$pSY@kK}XB;+~3bg@_=Tzl7iJqop_VTW2{;fv^L8 zc_By6uT_6`;p^SK*Oo}DGBVwsj!t(z+=RIOHKpGmRM~?8^eB0qyZ5Mt#2iuHHmuX>i8{U5GWtn&p+{ z2;M&jF7fg*ewhNTwMF-fVzk`Y56VMBgbc(*VYFVT&(Mu(9xU}*QSI0}J^HtcwImyp zzpWTX2^RtmEQK%zdi(R4O)&+4Lyw7bAYI@IX9&Qj!n;eaTM9B_BKS-YIBP))4{Fo5 z#`Pvj3+vM_mC=;9=pi9V2ufhsLUe3wir+zDt6(!sJp}ZzN~uyBb%fgZxpWSM_Xkw0I27KSs_u2)|bSO zUdT>d@L;M_LV(CE2^Hq6uq(1R``jAn!P^P*0yU*w7f{j~TUy4YK2D5V{ydWG=$RD} z6ABu%5nHsJ*1F%5Tmcp|DNZ_;(#eD!_8jlE38GvA`>58-mX(TfGYG?A)NbxDxf436{~py=uDWxYlnn21W@>h(J5 zu|YXJDZ)ab{syu0bCN0PP0MO% zg+&fy*#TbG1I;!&dKlJR02H)ld!!?h=I#YA~ItjW*bplkZQb|MQGgRcN4sHu2L0v^07IgGqMVY%i5xWXiG^?$z^ybbH;2~ zM^FH;s`%%x;gfdozRhw-Yvs$eX5=7)4mJ1sRVsT<{Ry3tG9QjFBWgQt=3rVcU zm!+K*Rw6IGgm8?}%()ud%&e42D2EGW>t=`z44d*s^OB&x1)&U(9q2lsZF~@+*Jpx! zDhOQL(3BZhCNHraVM4l0q`1A@(=;Z{wUhV{4*#}hw@)?CCXTm94%Gsaf_=sdb+8aK zVouTeP?n}SN4L95t|zN5{!9M}(}a+NpBt>E`jq1Ua(l*{BuYxD?1XbJhv?GwC0e+y zVdA4n8!f~B%+!*Stp|rqv^Dz{1{Jk0tE{BFi_A91XPIo{lr!>kT0f}o7wzgOm@>2= z#v8)U3N*`Lt1fIpWuCLW))RD2RclU+cW&**yDwxO#|OT?TSXf@T8KyMWnf+j9ifm&qq2Jo!)**S_Wo}fC(i0xv{JXCXbJCb? z3})(avOzPiYSz-doOsgIRk;$z55J9f3&L{R&`}R`r(2V>=Q-Us3*+WLEw_E`m?OCR z;TzhTOK|0)Ibo6vu+$Y+&&%oTH~bW?0ECNOt2%?^3 zC1;Jy4KFXsq?Per&{1?=cojZV&hM{7RsrVf2l9xkrM@L}wip(V; znO4!4dy}A9{Iz$LLumGclnu~`cvDt~k@dc)^7}-bf`m6QrTEpA;mjiiU!#mnOL%(=fJrhMON`m)NCl!l<=P=?GW)LS<#Zn+?-p zM#x~1sij8aa`MXRTBpM)gvJV_M>+f_ls&8IG3J)*Tn-hdf_HU6a=abw)?>TxJ=W?g z>@A(!gdyT0*Hg?iBKrw$_`>m{>WrxY>H*Vc7Kg%5&f*rMAg%5tdp(W@UDIr9cHJ=l6@pd^cBs$&)jCyqv@lO2V9og^#oi9{bcqS^b0p{P~Hd4lx`Es;B#x zvi&$xJR7iZ2D;c-nR-ui&g)Co4d$@!+>k!hL3ly2z3XCjWHD32@;d-`b|7_DERe~5 zZXW8c@`1X$avhtkn+Pj7CHsb7L&yPObsx}zhj(X9`B{c~IuRlaR(AVxyP>(dIz2sJ zUrbu*5}vx}UW~O-3N#eA*54^=>64V`%7Pi|0mPAsVYU<0@9p6e-3BBQES7&JEEj(Y zn9oOu&{x`3#CkY7I|D5`31CL(lXN4HJuO%`ajZ&#w&VH0(}l$5`#i>q#pm+c#jn4b zoU}-@_*^YCSs1J(%4@gLf|~w_8ud7;5vs3JM^VT@mtUIc(%xJSwVQVGhQ8+63h3&N9RBY9uvf#=iD^+beJ-c^|Gasy^ zQFjhQyWC30GKd~BGn7XAHs4_FaWKdeGVHJm&d~=iVX{FjWj)4fW++0C2fn=%27d6J#ZO&y&jNH{jzfXS}7=q~XbfL?+#lAMBE zBSc*dvRs*V_5;K=L{~G1NKajv%HEjdJlJ|uZwgqKj?UIyjHrTd8 z(ZRNfxn(?#hpDfD+ldps2D3Fp7c~0Ho-0ndtlZgP^QTq1%0zjZNPsFs@1|NUgLsD?Q7_HXAUDkoa{ZY`%f?U(` z{_8KDz*60hfadH_utd)u^Rx`l=1gZ@W)xs5 zcN>ZPL;m(|a3f_7Ped8+<$7r4=<2obh(DyniT*nN4 zEhw5>5UUjBN+c#)jr#~I;ZY=61>Y`^5S(1nk!0l(}Tyzqj)j1J!6VK!hs#>75!JMH;V*kkys6m+f zhLZKlCZ`EZ*Z&LkbocP@Q9*T+ek0G{9c8QkV+5hlztau={Ym?KG@+CoAOUjl@<1(q z113^ndo!JpjrDwqsEpbs{p1vI_76xmucDhCG|uV;(nT2JjjJptI{ns_Tg0+imi0SJ zDAejne~Fs3I?Se76r{BPz0;r4VO7!1;%r_c8iDnOa`OgmH8x|c(FvoZ(;f}#CNMoH zb;j~C7c0tCAb`cHXNCSZBzdhY6% ztY0{_9{-fFk&cBwm!;yUQ$bxj_~^z8&XF{$(n4J!T>WkoUe^f9GmX4|1v4ViXN6vs zcuR`%wP|3o4vG!`-9ZC!LjFmG&ugJDEa@+bNdIBRM}L+5<&iw5nmzIpt)6$iqvcj z29C3_`7jR@_bUcY1x6Gf!X27ogn=5fU5Q1FnRz|$xZ+*sU932E_nHICy~n$CH$xK7 zBk8*&NwL7#Wf4*%Tt5n* z)6n7$trIpLmY2EPX{yP6rY5zau^@#qJzKdNqDyfaL-EPRIZZlQnDPoqvbn`xHt@dLsW5+J&YQ%gs+q<)UEhy);g9e z$2AuS>V2Kg5&W}0K9`wgs-&a2!8=9Xo^{mXk~2dYFLkF&T^2C@*^GdsHJY{u*!ZeTI6{dBbig~b_@BpxIKV=BJx%Koyh zH7RUv1;_dkU$#)2kN*yeS&1RPmLSV6>oi{jep8g49S!fy`wzrxQ7O9h{E#{5tNEo} zeiR$|fICR-eE4#}oflHFF&YuC4z8W}G@wf*nwJBR{Vt|EojK_upa4IzWuE{c)KE*2VD8;P2VR{o#wl zeqhoiKnFIq3nOZa0t&TCR9YY!#TTg;4{ny?z5%G!iP1bbMeRscxarM})&3Fi4Rr8| zgm@R1xj>WNbCWECf0oqg4CysgA>vMkeTNK5%`(_5NA8{!ee9{|3eWx`DcqreZSbzi*&xI0kPQgqrWA88;cnFr-j{yqE&uv zgO>Ar84&bAS;ClW&DqsMs*}yt`Hb>0ro0m`2K$-Xq}C~OJtA-r0v8IeMrvaEbEP;f z&53+jCohh{L)+QZaWh`xgKuz~dpj1jk2_=fTWJ()V)7soWYYnM*`)XbeNsY{w{{pF z>NJBVvj3vS=xs&cqSFi9K=*aSwdqQ%)RTB41Rp(W#>9lvyU}F@s()E^{5Si*ZI`ar z@%Qa0_Z?*ZuWJaA|NqS9zl(bOhwJg%?D1C-v4D!YMmURSX9$&p0^bnwwVhj9%!`#M7Ri3 zZ}a}FH{PxY%KxMHD>kICV3fWg*|M_TQH&&lI71VQs){kgc-RXm)Qhe-@vh1ed>`8B zc!6$Jh$~7$+B40t?18In(SmLFOwi}^IZ37N;ycfc?6vqwoE=gyEY{a_+ir=n11gT2h^_QNP`L`i6Uyo?{lGfq zVt)yPgl)D+m9DXDGz(&xKI{|shDob)Mtj7YJO46867yjB+VFe0EgP5TBIJvr(B=R) zOg-C(X+oSJ3Y7aGJz>4h#EL4WNX)Su>T;3W^?FcU11`OEZg<&%u8#)WR|6LGp-tkj zzgIE#$5fBbB?;LCd@kMc6<^m01cQ`X9rzP6MIm3NYOHG(VIjNxcQ6Z)BqaF)XIfWP zK|(c#-yXO~2AemHKC@V~g0t|9{J4Gc>+@l38o77BbZm_@g0dp1du)AzQi?rN3%CQ< z!1mb5mi&<=CDc%D8qE$AF0M)F)troC*7!+DY(7W!1Ztfy;(O2{A+C~YuOsO#F`DP= z-!l0Fe7FX*zlmPxcWd!~ZRdZ6$^U@t{mbqAH>MsxBRNP9KRh#~6vWf?Yx1;>Fl8w4 zmvVeJe+Dc`hlOH-MD=KQN4So5@F|IZx?T77J4P^fIBr`bP$z`9pqOkExFkAyHVIWV zs0Gfj8M@@~BE6>AJ2~kO|D=$>Tjyx4jNWwjsa%s|aMegg(r2A>YSTBWRW|S7 zQh11eOwfjnRm3Po9f(MpvKK-Jy^zv4q^7iLIRR!^G#vJbg?#M(sk3cy(nqi|I_Fg(0-PT+gRK^vQ2cO-<@)3Ygu)jUQ6xfg$tsq>r3{p+ea)fucq z{Du^=|67Fnze(r)2SicPaa$0D@3P{G=M#qT2L`l|f@F3Tq&Z<@m)S4LXJ?lT(*gQ$ zk4xq;Mbdz*U!2FA#RG;*ddv?!?tZ$uzpt@I#3v11ScKy$+~i_%Gd26|`*Amt3&1=4 z1gZ%5?VD-xaqYyx5Y4xglH%xY!U9#;0nIrC%|DpG&}7LKe95-#EDnGf*^F0EdL#tG z@UIMgEo=5vIBA{hj)w*jMN6tJ5b<}eTSOeC2Ge4UWp*SLrKhy-tnsoK*=&Z+lwD5* z+<)kG=}bYQ{NP!c6n;{X(=YdFWTsq0D(+o0Jr}E>(yAy$&p&+=I1r}1#xSYE4Z^YF zB6Xmu8#mO}Ka#&XJTXWbppeE)gC~bAr1)rEZ%6^!POXVqd^b_cV2@_1QZzDYXsV~6 zXJhU&NJ-`fp3YzowfG^#n`Db!CoeVh+I*L2)YX}AmCqO4K$1-LaJ0)z&<^>ei$T*^JSYcamFKishT zUau9Z5@EbE}GIhom>CYG`0dnypo8;#<{1N!iwiWj*) z=h*Ui;L449SNz_oWqI;Gx{u`!l0Q^!PXzHS=E%UH*|RpjRzvFYvgIQiU@B}|A5TMs zsn4b`2vpHcRvRxu8coX9tO!OVXChtGRNo%%21QeS8RJam{2kzw{_5beI)OK%d4)LK zRk`6GeI?VrLC2>i4UQA%MvJMz3Rarg`;gnB3+G~5oz20Fny@;B+ASji<_Q-htkx;2 z)8+LT9yzx``T*t)@2x4LT2`hj7q`$U=b{{xG_RMrJ!%+S+PAN47}5>!z1ie;UciM~ zkK=L9vfjXfKp4-u*ikqpujKjJ9%dHa8*LaLjidla<4ZPUJOv4Y85ibN?hrt=2Dm(K z(XrKI3&;_$G6uk8hSRLJqFnr?!LwD4sH_gsr^AHS}34YjLvAcFn6}TT)B;p zDV?dOk(c|cG>Kgd(`Coh+`RiUC9i9AJcX`DWW6Xlg%?RGwz7>P#@y9`~M>_F-6_2iIg@;21)0Z=xRPVVircCTwkUJmq*o z4Wm&5^}EP!r)&EO5Sj9WC^gb!vMeV!+Vpzgb|Qrk(lrV&nn{UDAt%5F4Gna#Vq~XE z;$LW%{t(Mwx-V>{UKu%^rp6q0IClj&DFxg= zq8v|0&axk?BB^sk6*S4zfW`Mm36P{Iziq97-%OaHZ@qhgaaO z&ox6SYqCmw@j8CTh5>U>^d_$>eNWeM)}BwTv7%^Am{?EqefUy^59$s+&gjG~b96Ge zQbWCV{92xXr1s`zX^`>A_sZk)>H5GUU2$>s?!*u2HD0UbPqq1*ytmuqJP8Vud#!e( z6Xt17ZQs8ofH8wj9=d#E`u+Dx|JN%2vt8#uSmpok?1g`TbY(521%BkuW}2W9g}65n zgid~_6>#0U4a*-ipvKe#QLz>)<^HVY76s2h?-ZW^?)>+CH>-Gu?yS*CQWy04xQ|(z zJa5_Gh9jSk&rhIUA#+4Q=!Os-MZVJ^oXggj^y7+hEz8w9o%LUl6$V^cDT)#@o?0c@ z1Trnnzg>(%JFq(UB*W;XS%bc3uhtY|*E z=c_Q$bRQ+(ZmiDUiA>Mde2XRfdgT0(^d47R;dw$B!1$I_gy#C%hWeA4TcGU zjV7x#ml@3>vTMxi6lLqUH>w|MH0EaLmcTjAZkyzsb2Ryp1iG=rEuD%YQ!6P$FuUga zO6gQ50(6Jug(j)LS<#12L)5NJBteCG0)A+l#XZxqai`8V!Y?;Jz_n{GRtIDdfmg;AqhQQ*#_Q@vwl(gjTCy8M9;58q9@g%cRW% zQME%WS{4tP1-XJULmD&m%Go31Uqn2JQ9^gFH%vZ^9Ay+BK+4uF;yPisRTV{iDJ5Sn zVEGYWqdXcJAR)~_-rl42^XiYtxQ>#S2}vDBG2eAvkQg-47ww<}CFEa<^J#mEk5t!U zp4W(8G4PWaq+(jRBiwX(`Cj;)5itWQSz6o z{Q4iz0_zmFvVaGyJ1_74S#L*4`8Uu+!-t+`qC-YA&zQbcnIF9JzBRG^I$*SS5loF!#7Uxu&|BJP^3ah(MvV{{YXoAZI65QS0-QC^Y-E{|d zcXxLP?(Q1gU4uiCZznTzx@WpO=k4#z^Kh|mxcdET)v8sis_w;L_=_4>ctPG~)lI)W zw7A>)8EfcDe`Rd(w@i^Cwiwu!T}{zZMc}s!TSjp?qztJ`c!qC{AXw?d&{@4-@IPI^ zWx{sW?{3>-zTYMlQO!qrC+5Y|-{H-L=lmRFLnzwpa1J^^y#B2Z4Fbx0TE=087)X2W z8N)|gH2oRt_N4$=_8we8U`#JIWN_F5W=!aO0Lj_@A+7g->H-EVA_m;HsUytdhS+rOaobiM`eGjR!#-Su)KZ9z?Aqqkth z_Lo%#h;bl^&ey$;&8~+meXl+hzLu&ZPD)n2nNhG3qcA|ZyrZ^474>6r*(_U9;tcvo znl)CXe3BChZr177s-rd)Wb=az49V3yk{e0A!AEH~96p=VaFyhN}lh4TH+ z{<<*5J$1dg#yE#QaDMohYM&d!VcETwcs=>D%yo#YvJedAfCH$7B7@6m?(g>ah~gsNm=N ztpV^J^J(eXQQ)>c??2c-`PfcnRSJ zzG$B2!iV)|cm3Sx(Q8dVAIlCNyM9DJ?U3tIwGp1}e*bMWobnWO6$jxZ=l=p;{^#oa zUu#_dez*4D4<{L?98*q4Kp_A&9Og=~CIFAD6~j>4u95CcK}Gb%p0WJu ztxx#WmETd|e*Guom3kOeaN%6>h5K=*spC0QkAtPlOWrqJJ!JuJ`XY{%8e~P>*x@6SphcoxB?Ga2_3h;;M-)My>)skrSaW#d0 zfv28JvJO=T>T${IK^JB|aE0L!Q1qJVo6S+DS9>H9xPB9<9mnEu8e$rS>}%X>uf;?@ zRf*J>`B_X6ha5sBxT!gXt`dwHM5@{EY~r<_-yINzSGT=~S{V?R^Rl`%ET@)0J_HEd2&^_X!u0e7%<39g=4( z)Xo8E*%+yB_TGJuW@h~r1^dvwG{m$~sfnbh@n8$(1k@bZepxl6X*RK#3?y;&5>5DA z$qH4OQ7N6TSj46(^F0YL&KO*h*pw{2BTuvrmMW z11$mcz}$M_u}aN_H5O-A;Q?@|7=zM**Dq@dEcspI^zhmF4>KwpT}WI?^r50eq{>RV zMH``{G_Y3?Q>a{pKHL^dN|hq%N?b#5PzzV4sUNcBi}GhyE5!^3V_AYYXr!5+~s7+jN;^mvc zdGEC2O>GX14HqWm&qhjdzl_~h65R$Ox1U&-V?pC1a@@SC^`CDxkG9`;K=nMA&V+na zd8S~R8)m56o~brl&*gt3|J?K#PGRt4=>wi;FqJmP4b=2vhy^L7e-Yx%u0cNTlFJO% zhTtZWRsxloWI}H=o*}|8qK&>Efz8WxAkP|xMxxi@V8Eswsb4mx`iiiD*N3k>A6@ms zL`J4w_CDZ#qh)%H1;32attp_}>T{8wwRwJ!OVf$i=E%zXP~WmW2dF5vnvTndM-R1# z(0D>i3emccX}_hOBlBD0vF_ma-T!^n;+xdw1qLVvRsI(M^iOg43qTX)HGcu9&xVh1 z-<+73uy+Q4bW$uJ*~pW%kTW&7vho~D0RHFtBEDWqb1@0`=DC+BBabODVwJ`7Xc;>u zlL4#}op_^sNlO`-Diql;!+Sw_OXHaF<$xI|VPVqVoeSO6xJdwc49Ox#<)d9pA5ZQW zhLNHshk^o_Xs%J`EaFd@;jG|E74+O6NbTzssTxcXyZPmBriZ|G1CC8JU}W3|Du_#| z7`tN?(BeJ$z$78m)n*Ir7x~-pZ1wGq5A|#4)yU)#op|LpKY*)&*&^m;*}e=nde7$y z+J|<$efo-kD?NDZ&4Wk!oeh35*U>}Gk3R3s;lZM_9GMHSG9mKyxUKI5eFo~350P8c z;Rj4Uu^!Xy2EV8CC{NaHp?+edi)-$P^pAw~sJRhmmMcKkN>tvD=GQrDr+EE9?s2=< zWO!9`hldXj`pqvKT3x@dU)1jEFUkL3f%LCsz`s4<->=~RI~-Nkbet1G{junh*RLXW z!o=57#MgrXK!c^;nipncNTG1CfN_0Rh_1N6B(B>VEf@HK>`n1YN|-x*Z~L7$GfP=f?Q)*3F2MJDYKDV%qsN3dQ|~3*DsO(6(QWdGoWo@XoZ1(pP)D_P3XAgwa=b zc+kOwT%+0gJ@EORO=yZ=HFlT-ci|5|bnBqW4p7PLBm@`(dkawA5kH6k(8#u`A`CC# zTf^qq1kuV;5%SF$6G-CH_tZxMwll)Msp-o-Dqai*ggG_q*|77nr(MdWq4Pt0AKj+M zzVUIW)Hg;-Lg*&S>fWy&K712w(GsdNImNFp(nn&<+a{QWZ0*BeFa% z1ld_Wd+v@J4KTo3(&VAppP#oy(N~!doXU$(Mg#B=15pRQ=2m^0c190-H$UxhhTuv~ zS>Fz5CotgT#@RwJYMxjA2}2hi_bF@v#f=5ROJ zJqYP>d_943p3#RPPrgl*f{U=b!~4#%2H9C$&ML-2z^g5>c##WF;?L1$A_d3AJ$A5) zDMi}3im;4C#tx6OX@sF7ocZ2mx0Lg`$nk~^GNiri<8x&f0KK=Li2U3gWc2N=?(ol% zk60K&wW|_zJ)%(NXzg4+$Z+7BnlOfU3=Dk9{a?~=5}sVgjyJFDVSV%3 z?e8FY+@maMuZ4Ypon7OnwD#2*E5)p0*{h1O=Zd^|jn5j?ic+NHNo4F>5Rkl~#8igC zu&PB^-YBL=+8Kp9Jnzy?E*=VEQB_>#uoYu;b^D~kEDXV=31&T{l}=cWDT8g1!_MiI zPj!EhUiyH$$UqQgfBhq7^ZzB%`-hPK&3WVaqrZX`?2XoRQ3kfSx z6UZ7yADH2PYR7n^I5#yzr+0<`$749t}7nQ-skkc*v zC?Tv7l#`U4RBz|0beHrA;2)F8%TL|!N1^cBuHEmnbUGA~!#LZI<9J;q zMa_Fj+>_T_fckb?@4SSfu=_moJlyV_0;l?v<@w(cZE^<4zx0I8Xdwc{OO2M11UYbLJ|+ z))Ge7ITn6q*gJb|JlQGvNKv4witinISidvZ_q_shDt_uLZ)mHl=Kc2eZ%2oBPS{-? zC?^Pk`l0_?j1d2KK9Ij1^7;GgRDVkijY^uo`c^-RsHv>V_53N^!1rd+jfAf?Ah4-m z#L)yTKe?^a#B)qfvV5rz;qCqu^uf)Yj^`ym!nA1t)_fYmDxTYs{qUvJ@nGER=k-3N zA8`dBgsy_!rq9E2>7k{VOMXA8rf}g_YoEhr-9al_Q){szpkg0^g)a7L%9dL}DCgTGeaS2ue!?rBbzm ze!0T3!LW;Tqo&a$M4uX%s(ob7*1I(r)WkFOwie6FRh4y;M&f{&#Y?h|lih3KKRyarLzDb${fo`7+ zYxcR``OC#AiHxl&1&0|3+&osTtdl$ZTp|yu1wLd|FwQVPkPW=1j*Y}{_;egqtg2Sr zewvI@plbC$ymHPZCz0()hD*!V|LL@0Gd1omHUP1nM|MjqLFkcjWH~)fFgAQ|#G7{+ z1BH}wdyasyd;1QV`duByutNH*4FtG#HGdu8h~A(w#p-7E9sC`Regn8^93*5K>Y{%{ zGrl1xBkkEU-hTS9y)h?tnwb^uGbjYHN%vy#13FcU-x#7NHdelfFf+Een+34%I>$1(@R4C3chF$^kMMiO=+TfX&I0+$_~ zv$4^FEYCsf8Gk8B#HC4kOtu@xa5m#!!>*K%WAJ#=r{@%XMBt$0V#hyb{{dU-DuB^p zMFt>lwF-LRT3VoraYw9VdR|BhuzPpdfXxEb%kTGzXCpzysMTCrucj?$IoXtq*BSSLHE2&F` z;qQb8pSOzl>k3ZR9~)+Z|IQoz&pUg6L$XR0O;;3U)E_dAsV)p+)Tqz|4y7>-4T>cg zX<&s-2&i)ktH`iz^X3llb0m!VCIWA5-L@y*eHwV@<7fLQ*ZnTJv+efXKjhQ^IXmE-J=ldhc|56utkratbsebH}pdaMzs!AKo#Mzos3Bxm8cJo(d__EU_f z5Y{p@nH;M~rH@g^?ThUO>%U=)x>Lr?so01^InI7y3WAKPlBBQOdY6?52M8}9Mda4! zbg`4bOAs@G?9I2)If2fd;DeC&uf$r7RZN@>xIL%{&O<#KZecG^Y2-@Zv<%$d3Ok2` zH)TN^Ktz$JM9eN_^Vg13Uu_=g4%uz-M_aBE6#2?nrAmiExz}8((wHZxx9PFx-E)_N zuv#l9Sj?A~8b4c_;N>{)jFW08=*T)c+bwfO5NR@GTDQvxwl3Xg+2kPhx!VSuRxjF* zqDshwEAS`1Lc&Bpe(I*wET6S|jy;72?DWlJ1T_PyQW(;JqBY9iW8V{kZm za%nT=!)}ee^6r^~*Z>iT_piKPyGz2dD#pL{+JhfIcN2ePv((Guu}j7Ej2E6HE1can zBG5`8L)QKZ=T;xa9_uf8maPW*YIH^>LIm}buNIhCYFB~A;tOa6Mu!DczB$%W@m^| zg%pI!d(!ABW|e6vf(Ye|D^Jp1nnT4!E30P6^(u9NoV4jpZagM_#*Nmcb~;$7N**!w z0K$y(a&|U)Fx>5%ihWPvlB$|&L!%{~V+pT2liv@b@C8d$nj6{pm@`$SyHGO zVxn2o2(&nq7XQf~ghsQte*OBejIP7q&R?tur;&%!&W}|t54L|2@( zul_c#;tvbDP7e(^stviaPI0g=GqfJZJBRR7O7*H^bPrky@tov z(BYAjTm zu>tw&yn)p<&qBl}B$9q{rC28}G^6|>68#pb(Hg6bT;tJDmF6*VCDAqNbWa?ODX<>jjgB9VY99Z^41Z$ScIip)q^cfc z8TupAJnKd+IY&)!4c}GNc$Ms3m8|Bo+}cj8?2iq2ZHR{tJsq-xLyAi)ts2KR;0lWT z<;N3dWI~O4D-!Mp+g~RRi1U~h1Mr>zBQLNbhJ3b04VhI*E`6WW%K}*lW4RN}YeWQT z;Ihu;ihvBB5WKKSWS5z`_9Z)AOw$A}#`o~l3i6i8pAQ#9>AKJc`OdtX6JvE9;BQYi zhBaGk!RE5|z^xl3y`+4(g?3um!rXXIMD3)v6ng6RjBIWvsdsE0Tg7*8Wio5z1r?~$ z5uU-tg5^kV03*?%WsDXHr9fu$L%S`R2`eS4{^#R+otHLrs^fbnmg%`CK3P)g(Dhc% zhu`9)@Otk)94O~A{I^2)e>PP`{++xJY7+ddl=<7n+W(s1kyZrt3B2PW&{@j$5Ft?C zz7+?n%X`F%5DKCwBTyho1aF?;KzkRrGJjFA1IqB*Z+YJ*nffLePa#LjAytNXrev*L zxL-QUPIe$hC?!nXCTCsv%r?OLq zNO4&@XUE;T+w!87=$->l1Tx_Xkt>1kb5>c{?(hg+mc@IVbnKDr95qh| z>Hz)oV!Sx5lv;IN%A6--C_JhZtJylIPZy_xJcz-7qysi6Bj!|f@P@Pkr9y$KLUL&09v0Y#U! z16(qlM4|?*jkQ%WRvm8qSp%bKfc{#qv6epF<6Boj;Qix>W9k| z&F74`HjyE9d3KkbY_}N2Sll8^ zfQGsehC1$*4@aB@;_xJq9W%0UBW4j`!&!uq-^DjDp)}+JjhLswiSk;ESe&=HfgVwG zi$KPafTk4G4WLvL9!g5La#%{lPBB4?E7P3EA^J`>9d4iMIIkv`zyYBR6_L#MR&UJ0 z!cY-0(j$2Z159!a>1j*G@R<;&6U-XnGE-Ok=pZ8csFwm>;ODLabKNKt`U;V}kB$BR zIe=r;wrt!C3Kh#gmN9?LrusKc=%0ql?;0j{Mgp83Q8=4b7wNenm_b>$d`E#2S{U-- z-RxOS!TLmykpktcFYBsuxznklp2Oi9C!@@9WSP8$#kMpv_U+jOY!4aSBuab{6q7qd z!<`iL9LEjSl0`XQow=Sl*r(GyOEpnT%rHb`%cJ7{OC~wb4rP107mR(lC&MYxZQL?*AB+3Qws50KZZ6m8ba`m9Mnl^HQ$kG`BWLd6 z8|kp|`e~fvwHzMzB{8n9?AR-Jc|036Vr>Xx>9)l4!%xD=c&8uWPOi90Nc6G_^aMm} z<`v+d9&@;ewX%>UK25#7H~0zjE0eO?eQ%=&l`+}>du7c3yh{CdWsLHO!yF%?_bzd7 zogX4jH)2u{pVd187tmn(FxdM^Fqu}rbSl|Y@w3=i;-n8-fm?`4-~*|=I|4I=nn49p zVsCj$JO|gSzvwn==yv%&!*2m300i)^R>k_A4JX)ZcUtn>MKuL0PPkLGnQi8rG_0)^ zsoy|YR>xt=Y$aNyaS!#d=r%ToXxP$D*)LVN-C3iS!Jnl)N0k1gVTSia~a)}gtdYVN+ z&_So>e``|U#5INzRe;waJXD!_%Cm0`rSmd9WM{&9MSq!?%m*vVbjxVeMm$ouX_i_a zm9VDbzo^67>YvXhf-`{*_ifA)zO`!K`P=xZ9-GY;1QaIIkFeEFQ6_2Au+v4ju?o!u z(_diL8u(N@=k)rX2|1_ozFxL?4jhFR!JytgFaq$o#b)YuuK9 z2$RN~&RnEP#HeT?j}MAw7dB8IviRw+Q5wJftH_WpLf&6YKiS3ZE$sIXNUtf87D@$;CMbv)@_OG|^N_D0 zbSR|2eOFL}=H7&YC{3`1C@mx#@o6lMEn46VGQ6!SK1OlJQEZU7G<+kO@M~*%-(tJGq--xAB2ROdL0>76k^51l0TEvW3_pseobBp)fx4ON=>;l1 z@aKiin4lp4jxlTM)5mWUs1da4utDV+J~dV_fW{DiSQ7JGG>R&Q(L^X%1_W>2z2I3f zbgKcgP=b6${VO?Dj>2#S*aAYs3Kh4tkS)^O5e%bLYz~#*Jx0G@xNBe{~E*mKj(7);h^&0p|awCI#D2! zv=H}--1w1b@u3Mv!_mUP}Qi0YTqN1-_1Zm+9yLZ>YwLWK@KaA@?v{Ck`4k;ZYc85{a*wwP`$TeX^A2M|DH| zYr>;HQDS~aMllGX8Vedoulk}>a~eFmG549ho|F(sdf|>;ssZAbbDXsdb%ZX)M4^U) z1B@d?e=>5sx#l!FW6vCpp5_Fa(B6sdvwDTeo zYxNo{Sj??^s94e|fi}m})@!`!OGK{P0R$4h5B`LWY}s+v)Y1I$1J}ZibAVjs2}m7Z zVMnVJS+5d{x<;jAVc4o7;Xb12N0PG$rRq%&?Z=)%OROG#ULg+wU)C zMH(R@?d#f^eJj?JCs^(TdK2XB>16ZIq#X#uN>Y%~?XvZkC2g3kE$k81GB)L{k|%p; z(L`j!yXl-ARK+`;ben%Rn3qM zcOE+(4T88Lc%m#O2LWjySZ3fzAHjEj1y;W^I&}bh$AlhHB!Jk`|0ChjL}`TftKapS zsMNz2tPy`Gq{Jydy5cZSl_8M8hUl6VrA2jbC1Xe69?pdEF~U<+{F=MPz77RuO^KB$ zxPF5mDJ0-izD7Uz4TGAD*vBHHXdkd&-*mm->t{U>#fbXjh{s=}g8!Fq`oE|kXvRZ0 zd$k(+Wxki8d!+7R#iR6x2{@doc1IL&BFk77ag)I z(>`R(MqAvoh($6nfOflU%J-!!?&BsWqt={aL^yMzT!f0rWC>UjRM)8W&v;XhCxX|D zAtp%-IMB}f%W-212CK|3A^GX@NTQ@-wnhVFuSCac5q5mrF!2j50~4UXJhW-Pa^{yz zfXmD0FYRjeV@%=shB$iB+!~aW@ZB*SVzp_h@rjay`LE3OtmZ|>MU-!UdN>HSs#36% z=ZHwq%!YcsLi~D&0-jb{bP%{u{E_d8{-yHu|2)Jmmz$NjwSkbi%YU8%{yTJ0QdgXl zL;Ycctsz#fx1z0vS_p^C-(N_zXd!Ask#~N}9qBq6%v5@eu$Ar$?i*nH=rw(kR{>@2$`1JVmLjvg$1ti-^Iv!1g$OjYTz;|YUn8Ad$tT(cuiJoVw~ zD!e>OE7e4+2Y|jaBW8sFBuXQ@+fKcZ$ubo$~ zo~499>M@oIwh!JuyWWxq-7f)@!4`|WA6!E2+J9+i7al3-3t^;k?dKn0ijyy(>zkIA z!xjLf{~$X|c$$CEMgtu5w(x(O1td##$mq$B?~({AJ;+Auw6%#F!w)#NYULGpxg(HK zzP#9$m^bP&UvR1$2$WeX`jq3U#OWVBX6BKwUM|%C++c!g)cX?EF7`~KQ}p4jHJF?^!qX^p2Va9e-wnJtK>8WL zXFFFGU4U^!lK_-uaJj&J7W|B99jquGfTQeS863eRNYN5RUx)c{PWozR8(KW{z)$gr z6#v$1;5L4E93Q#%^b=jWLR3O+a8grwVTW@8_m$(lTEtWA3ykZVz*`x;5EF0Aa7=!v ze4hGHD2w>iX3c(U1MJ+p_rzG;9fUtNnwieQ)NWE~SsB%yewR$AHpGaNpzw+QV_Exe z=I4JALjOU*e$7uH`fl+2vZx)ryGZ3%i|jm2J8uxm9FaQ zawW#l>=YnzdT*;`Jrfg49yGXsuFH z3M)=mvlvQz_(}3r+Kgc^Zfwx*Ivgsk%Bx$ zZcXF>v4j1c}KHxYcNl?64Uhz)Y%cT+!3R5bnh z8_%;xZkM!1KbQHimCYTxj0n*=iFSbM#F?m(8h&UhMUaul_D66dIgD)h{us*UT6D`Vfn&dwjaHUFrsBmoD z5N=H0;N7#S4m#CUUH$wb`wRL~Bk0Y9K+p&MM_$GE*P-tZnD;m1fvT`gKv)>-*SrX_ zJUOB`3K$b%!p0Bn)=T18%aZk+;h>4xx3nJyL4w`&c#{TxB4&g1eMTzCb}-5Q?cC?L zV#m(K5Tmc=B$(ah+>VP>Dz*rjEYqDXUn0PI+k!0;U<)&Kh$j1dN9v&3?zD!RTSlM) znaYVK+R|bHvkZaxtseov)F*SIl!XZW^i2X2qIZF6!Btv+8)wjr1I_dN*dsA_zOmLO z)fff-kXox-7)tOAhE<*^X9&`Bb;Y^m5CWl-ACW)*^&!Rb+2#gx0=mi!QP8?uNIZHq zjwILcnbnBUP6-)l|64v1X-DP_gZ`mC+7g16A)7bmLNCG^(RU^Y?R7Ez%16z7+LP6J z;T1lA{U1hqBt>#{bdj0`AF#S?iWJtF=mR;S*vRt;LlW6Y?BMEK#`HLj%K*e0*})SA z(ud>fE!DE$D(94k!jG5De&C#T&y+Gmd_?D37uCF-`myO%x)wt# z|2P!y^;mqscst$w{b`p;k$E~I&i$e z#AA64%)br$Wbeu0YUXXrYds>h?HnkmG(+bfQ6Q909m5iPe{k(L{OJdUz$H~oa*u(8 zu1#|7?Qc^imF7x)EC{w1{z$=i|KC3U-{ebPQ?d_askQMDURH$LmGZ6(F{FSN^e*AW zlm5W0nHIFyAY=4%z5l)IKr#5?m&|Y!2WpMIS(hvFTL8DaG9j6Mx4Wc@2EwdI(1&^L zk(85+yM9#z#Oe6i8YTaG?^8{+I}xOD!4Q*ucDe1`Ed{!?PPm$y!5kuE>AU@!SJ^Ap z^8abrp1RBduNACasf37<2CS zlmQjb_JqM0*K*EazKOT3QEA(_7=Sh8jwF1#gbv^TwkyfJ&ni4pM;%UI4en75h>*7* z5*skdX3+@d>e%v5BU~{jK=1b!Itc58AAWHm!|SBIYda z>PbSXa<`rG0CNQW@M}zZC!YIa+;i6T;Ivg=sl_V9wi2i00#ZF@g%lTJ@e0~8-7?s1 zu(4&EumA+T_o~VQeb6ORp%05e;g`md189yY@wFuT@a-LQIW$+hWER=Pxn2a~@KWAq zFZq>xk~)Ss_;77|N%rr1UjoRb%2Rr{p@Q95T5AQLgE^bU zyLUE+&WVB|aC@#eB&pRoF6^iEiddEP(u0&v4cJy}*VLL7-+*4W?9B1bQ747eG)yRg zTi)Ibv0%OwVmPD@)$iy`5$#Fp=S~ zKjwxiG>mB4My<;c3ZDHMbB$gQ1X}5Z#M<|Gjd+2(fHlv_j{7|*6uQ&k#GQcIF~Z5< zp0J^xp!I{m1KAn5o;V^homh+0gI0;DP-I{}hWq2|eGU$~3PmiwBJzY5N zNEN_^ipH|hpTEnNmNtgSAyB+9|B-X?{B`j9Co%IM*wrHgMvuy6+m*N7K$IS!!&L!* ziSxtfBjA;5n`*3CUA#x52l_TUFE|g_S=^W$OpKRr8w^S22rQi?s&dwt?L(#Pg@GIZ zaN6{_)HS9hCmD$9*w(Q&Pg#u7bq0>dHJO&0b(N~fE5ofdRJ@RjSDIJZ^kll6EQ=EU ze5DJ|6MQ~0SMg2__GYc!$|aDPncYydyR3<*N=j?&90NBB zb&XpS4k6ODe9%Bg?ISuDrSk`ej*hwCS%C;RP*|tCu4%lg3=G1-SH$n_<$6FNRa77xefxp+~I85fLT+O+UhyCmv&pGWq?= zz9KqWEGwjrm~zqg2pN^=`X>i_5!Z#23qgS@h*zYKBe7l}tqQb8U{j8k3xsXHf5f(b zv(5)`V{vOcXDi2lR$R)W$b*VYPA5GM*d$?j`R-tv;o+SCV@v2rX$r)zx858Z3I4}Y znXQD6pI#Y%)t1*QkLeMIO^L9j{RNXm4{Q4wmoJm8V-MN7onUIcX<^WPZTkz6gmdhB zomb}+tX6Z(fKF1bF-Q2ZZ>_acnQhl`X~-DC9)wO{ot7G(wG!O%l*r(}B?s)4`Cmy( zIt8>$A!^oYYgW(;#h1bc)*W{o0P--WXFg;0>CL!2xu{h;bXlq3PR5XVBpoYBZ6@vB z7ZBW^`{Ape(MMMV5scAwVzl*EeG9`~7K(M$mQCrs*UH19@bH;ngBEX{i8v7r(0_J# zWVfe+q6?r$%ZDGa5opC;1UH;>)V2{XyZHjOWDip1Wzq+F7hO{E*O>=wV$~7gS)JE< zt)UV>IZ~o3l|>p|cY9d^qK+3Mkoj90&$NZ?9&>()y@%2BAJi36=Z zz%q^FRT2iO1APd--bL-H7ZGNtqBHPDF=3{tUZ==N9Omo=_?0+O>BaK1rsr3(<{rzz z7>;=HWS5bhhKDzlu=pgq92ppg7TAl0R^BV|0c*b{hqyF($GZIZCPQyVOnXb6)lB@_ zze%%^QDA&UTYP#Cye&gibdt`C(M|BUJ&`M)9mWGWJPUdAeg<(MnavNT#oIr>?bzqL zhgIhYZvgb@ty+duKxhDG!^BCeyu0l-$p<;@0P1o%BKo+)ZrBPv5En5+>qS3}P%gNS z6Ff{AXQooZwy;ff225pRCAgl0S|c1-Qq?%pxy?;Tp9aNf=%nBYF$;a;Oc-tl#V$tB zZPGRGL6ft`p^A}N+wA0OJc?vXI&!oDR*I_h1hv1m_vG)j zn12kG|IozNLC}U6Tn!q-w`(Lyf7@|wupkBjk$(DG55(92PTq|5>51}iNyxd)L3=Q zN;s4TKfJQT*YN?8n-)J#NkqNtExT%`-s_yW8|GEJL4~Ax5;%*XU<;P`8kr6AQEoBF zob;jw!*$tG5{yHRbk|oDxNXFhM#Jc{I-%}hnlzfHO2S(}r;pso6k(Dv__{fbV;#t!B-rvJ#^{!2K62C+A)Ft~scCw_u( zxF(gDTtY@Ptkq*rz-0oQxk5a4&(E#wo_AUwak6oJ<9Ee1O6kxtOGn1JU4OgRFK*6< z4r$*c$;%-bsx__wYi+-JuEl4S*bAma&D?4oYgAdQRSiYr+OS5L&L^}|NltQa&o@h3 zMvuWh6v77UZ%ZXKrqOcG#bx4M(BB>g6B_yBXGy4HB{)BzEg=r&MDg4*!Y2mxH3x`9 zdZN{vI0B7E8l}Eico5(;lcKc}dI5_Ibx=lv)r_!6bfBV85p>Wx@uHZA>Q815>-UrpCb8L*ygMF%89><3}@dwy{sEcI_zl%G#|Ra53ydDH?UY zt}U0*8MTqDP%{+!Z`Vapwv6W7fZIUEg*B#8oTu4J^|55O$tUG@|8lMaUlO1#=SRav z>1Uzf3u+?cay)`~0*&QerLf$D)OpThFU^Y`APvN}plr%g^x1roHHWCzicpjf8zK!$ zCvI(zJ4?3CeUz~I}hKwg3LS=>s zk}#bZ0oLvBrP5E9vnkNSkIQb1%tO%^4yvEuXVcKeGCh#B3fL+eVe-1Cn)$9`SiJaN zVg#zVfKTlRBkjokxQ3ei+z9FmH{X0269Z_P(>wJ8CR>3F zJfQLWj8T9OpDlX~w`kHNQRN`r{5^mK8?2Jge84CUW5clE5*h`UEs}~%F2ClzQ656+ z7Jy`A*JFJ_EP@G)%VFtnAhAl{Y7fTtWsmLxga^h5rcK&O2iTm)ht z+2B!jUMdwg3;u%=T=N9({lzxVvAA61$1QwvHFg!uD(*ZT_*OB^&dTfS-$Kh9G=;|| zP?VVb5!e2G67WwV0YHl9Cx1dSS%NQ?c}FRl1ef+w8zX?M zk*&NyNeqb+#yOPr9S^Pm5?`Ys#CB@V&75(de<6o;s9gUrw?Pyhu9URSVZT=C_%zv>p z?rLhOWc?x77D@@t20?ixD`koR6>R1NrfZbcC|YN|lu|}pEuW;65J`jAvuK8m2MwVd z8vLS>_QHn@$7a_q@1M7j-Dpb8LYN2CwsUUA9N23Zo$Fgb>o$?Ghagk;D1CPxRxq00 zB>6)hJU+K` z*KgYqRDcNJy!2+0sdK6jDk+h1K+u3AryiNhL@)0`E}6I)F{z4x>T-I!%{!Kn1nni1 zB0NK6%nA>mIkgYuT7tPdDMoBRICt9JsF7RzB7o#TDb~XlY#XS-yu-G&ID&Fp4J}c0 zb_q*s^I(d>m{WiXs}a4pdV9$(@(nz|ccM~G?jF6(=yj8wvW{7Sf&ILM>;oaLzygwT zIx@aBGV_twA)p#1V1$GDw-!`TE+5gNA#649*iaa|wZdZ#Y21J^ZW-=EuTj z90~KKDV)FRH->JuVeL<2R6ti3uCdI<^@&A7JG|GhWyGLOmujmX+fPB z?4&-WPI4bOWxee+zCMTB;Tf!EMd(Y3gNi99_%m5jJ&NbNSjU5E!9_Csvh1m)0=N4sDG{ zrJxQUz-I$z9a8B&kV}->7vC`7->BZxrWB`VR+-P7Dv4Y&S{eMV5*0R1V`2jiN6Yf@ zo=HoML2Ei3`;9p;XHLCu>i7C_w!O8svcuy>|~}61`-%q8GT)YnBsl8;WbjzOn`!o9*0wp}J%Fpku6+ zOV1#9sS!^(P=Qn~&vN6t?)J4mW(Y-MO`{ZH!N|I=V-P_E%a6V`5@32+hS zA3!!BPKi+>PSEqZ(r=Uc>VGb?o(XxYyA7`MF=FZm+3rfALT=*cLGKhsM$gHI%+uG` zJJ3!}b}B#!J=JoV{<*!WsN2_gWqt7r4QW|(W6GhrL{ci zcs+EUMee01meH$i)a^VV-}J`NJDx6?;}%83Q5&=Sb*}j^;H=m zCWEoDqiMV+16MN*N*j$g(4h4YIt(9L9C&@#y-?c0ZRl*5cc29G3R{t0-lCh`Ir`)4rmx zsu&8OtxZrij2XOG5&*?v`LRWa#xXS;=AWuAx~k1EZDx9D`klog@x!||fCo7}G2{Ws z?U!~Da@>i1&asq!Z!S7I$&MA9iMUG?W55Ucp_qdi^L_7bT#9w2s=3w4^qLHjZ?dhQ zWmVJhJssdnWi|3!o;OcqwpEq3R(68n{p)cVHK9{6GwQM0xVbtwgT>Qo*m`MYI6Vr? zn2(HNjfh@~cn!DwSm=q&&!cJP#Dpyi_-=5-EhwL{`{X1oQ;eV+{DcaU(aKz4h|(V!P^$vb$L42PO)>hQbT;Kq%yzio3XsS2Sia6!d|dlP=)Nnx%AyoL`~Ah27ay&i z!mndc!4B`-l1-xh12+iF%zNGq$*_ZuLP7{cb&fiEU(wVokEjS3S#QaseDKBqEDM)o z9SDV5^U;XsM7|5~G^M6koV4NLQu#^!>XBv}8mRP|0fuKAgV{%nfgAVCV-u+&fF(|( zGecy9qXPL6%UXH|`EyK3ak046E&N2SRFVcS6*1eK*5*QGq2{A5b($0 z_)^Rv;GMx;otpH3v-vTi?O4lv6Yd& zlRk(M{`x5d`uR6!NTLdyC$=aWx23qw$_i6mI+JvFkBvA1r%OUpy8@@Vk!BT|WL*p@ zsSCM2b>(^EKIm$X1B{%88MrlILvADJhN7?#5kp}{R3bNMRsd{!LUwx>eDbV{ns7@5~`}3wLEtuQ8AH?}G0;-)%*sYq>lV(NMC%YO#s*%I(Ch8isIbSV| z`cv;6)8?o&fw}@_8kwqu!V4)8@X@lC?wY+#P9|))V|ya9gNiF!OtEaKQ3p`OOr&LP z>R(w&z7ShoP+}!j0`5aJs4V%JS(=)p}k$(Q8jdA|Q}|9kGdGw;sK z&h~))j~sinUgw|e?pW}1mZlSrBwDQiR7GICOZeHW($h9fgwHiBCsTDPE zM~jsW`fal7v~8hHeCCGAYu0A=YuM9k;E3d@qmteC8#-Tq+kb|0@#37llV@!#s_j4Z zM?&bCiCZrWX?|$!72(x(?)!$k40Sm6**SN~G|%~!tuOb#clBOsqr|DxmYP1#Teiz> zcFO)$6S^3+?-V`nY3hqP<2&c?_1nLF;H>u@Do@$HWqz~r!)NY!<+ymo6U~V`=gpky zn%O8h^wqqJ*+PR_uUr;rwmF}ET`PL_v(v{P+Pvtoqxw=EeV?3jI{QUUo>rZ)Bgmn7 zhsqw6YTY$_)NqmI-r(+SPE_r0S#|H=%K2@o>|TEC{IYhrk6T&PTKwsWu61~H`>wP7 zo-G+L_fPJ!;EpyXU6z$x_bNC;SO2-x7xJX?(@9gN`LEq-DYjw zWYc%qHJ!z})eBOm-Fd!!h{ce;b4*fK&7ZK+7H=PUp1N@@_0|Hn;U~k|R@;zdcFFN9 z&$h40hI&0>I`vtf7JAoLuyI0x=uGDNbCw2zO!2Kb)5eca@0Ve<+Agwg_9{?n^=D; zT)Spo!n9FtM<+FEm-RkBbc^WX>IZFH*B|S$>0#jAmMh0bJZWobeSN0?wzjhi3$`2{ z-^E6-|MNn@z002Ut7m%u80u8;X286GUkYkA%joiLxOKPl(ca#j*F4lQFbcos)O|tH zl{p`FY(Kvt(eAfv_r3Zlr#Je{{1KJyw{P56ow1)b?HhP?i}A>|sTbaVa4(#9a@)bv zUb;bpw7z?JwW+t(qPzAZk7?e^hb%f2R>dTH%R|$YDhJIL@dGU?WxMV!pEBrtRA;@~ zwhwx|^XeAfWYmu)AJ^zTd$(bl=;M&SLFUF^t7V`4H7&_~sUZBe{nt&ZEn)`UCfV( zh5g3-oIK{EuV%9mpEg8}bU1qD>%#H2?~OX@-tV)%Ud;|>tr9hB?;jgG`_7SH{PhFR z)|~n}^4`6v$yF!4;MF`~xM5q>WglGh@`K!OW^KD$=lkJa?;5YxQhG?Ygr( zs*ExjJp0LIfZnCAt5aW3 z+!Q(O_3-94(Yy^3(l zieC|N{<<3&x&ife&(n9uE9j-SK<% z+o73@XN@!6akr4)^PtfVtM&o5|ZI^ex)d)U6v{<{Ieo>ny3%5SZ8c;O# zTFBJRr?Re%>C;F%ar4`=>EG+(?B6x*TZzA_^ljQnzt531>zit)z38X!;?um9mAh&C zH)5+OpXQGb9L$(^#&~5fuk_W`d|%roSF-)~J^h1q&QRTf2WtK>&mFpGVZ2$jhfUMN zzik^;%etU)x=((c%ya8M3DQRg_t?B7sHo%ocQY5AGrIKf`M{wIv(|qL$?jo0$7tpk z?acL)-#g5|pS6(#jhs&mltil`t{Jo4VP`7HvHD4`+>Q8V`j9!==EW^ zo1b;f_qsJk6s)%i8`{9QOG^E8&D_zvti%}w$31gn*Ss8>?qku!jL+LXH1piE;d7sw z8k`S5(fnql#_ZObm#q4IjvsJjzsc9YXD6>L`StwKiz>?spJ$HwSo>#Ym8)BqHmwt! zvTj!Eyg3CcuC-4Idf4~K!p_h9owS#o(!M*=HFK8T`ezX?b3QfA|I}=0hnNxF6QlI< zMmG<;^E3GSlm&0JIxYx|HGe&*wb^#wlh3ns90cE%Hcvjaqf+zGw;gTl@_BZzY(pOn zjOQ8j(@4}Bof9;;`?=p|7G7BRE6wt-WwOEO@Je&uRX_EhYjMe-ckuhB0# ztdry+1`DN23sTnMx&+Z}>_C|ql>fd~K%Gn5wi@}*t|~I;6eoP}OZn8x#9uiMg*kEYs4T zkUk^5kA2?JISo#>o;`C-)cYy(jROh?&**#NbEie+o@O3-S+nhmJd^C|gMQbnKfx-k zj+SB8^Pq!!g5%OEb`M>2Nw?Bq9joIu`stcZ36CG#kN*+!;C*Js%7TQ8?KcfFIz8)y zP^+&)yA#1Z58fW@9=WpUX-i#`kr&=gY<>QM;nwE1E?+i2*yKK|g;VOfieq!WE-YU) z+55x{7t@PBZ<&M+nCs#ZH*rhU@AZ+javWB?_b~3exMu#Va~G=Q)|~aD`P7~jLr;5! zS6X9XZ-4HxUj2e8Gn*W{B5b8qe&e_Msex84CjVHgvpg-P!Fh||`b$3N92;#0dEjVAUd9BP|zV#ON)qioM^)2Htai{2y zH3pfd&Ds*26S{SOocordAyxf<4n5q<>6_8+Ny}nirq3~$G}gPeE?;MoOP|+0Z@k{0 zd8hfMJj2^Q6U)0-$-kR@C*zvM>#z1tN1d&|H@$U{|2*+c+bR*}MZF_`=~t`N{BV<( z38&r<5XHpq8S~8DK5?=0#k-9?Ru_EjcIChftDNZz^7n7fuloJXhE}Iuet$Ew$V~7{ zGi`Y2hp_seuZiL+b>4r==3=MsX)~f5Md#|ZcfHopV5wP!A-fhFt6VASW&2NFqiY|% zTYrvd!;OdjozhzNY;E;w?eFZm0Y(1hwe@tfSD2=a99C}nm8oA=Zw@HznU}veYwMX8 zFHW6awP?*rtz{E?>fByj`Re(Ctan2`TAPQ&Ib{kBw%gz6asPgt>$~hu;f7@qK0RpqVKtmx)9J5768 z=V)Qzv)^e?Hg1|#qm@lomwK&74iZ%~;dN?~KcMx#8XW{HDyDUvy*2N;;UfJ7g)2Ae zrxgtny4?9V{&?MOTjDl_w=O!Vn%K+Miju&`f5ME3Spq*QQXq~KM+6JZBKSfxfiONg)~p*pTHu!yBPcyu z{jXG#c#eug_qq65Qc@#e4F{`CM&$)*IT6ZXDRwf#M`2$Z0=`7XHITj0=gXPvx)RYoFU0a@T zhbS=b8^@1}k7W}*V%Ge19uVk-&x8`JU5%??mco}V9S(MZ!bwoL4JCJ*T)9pnVXP=h zAWvoC+fB6(L!==Y4O61M(SgY(nikDcx;t;zszqqN3+N1K$>BBRNyc@U(MetySM$SV zILA`&yUFg*HvyE;?bp8!XUQy;E8QJ&uN8!LlH&PyU3r52_~LLu9M-zMM4>Wtu75Ff zw-5O3fsbZmtUh=u-e%~E^QppX21V7VV2 z#Gq6E5A-jxMf=Bui}|vA`O}CdJ7&NqHewdjh~i=s)K@H&rD$rs;P5c;yBo^V9Hg7e zlj$hnN4tszL*oU)kR&#}r{dya^Nr*N=UAewY1Y?eDOpJ3ht z`WEA(o#F`Qvt>KQpN^z0OHr-m_a@AO=Q^Onp!?HMdwDW_f`@=!+1&2f5|A?h1YFbM z@r)@4_U_J6E=yh45xcvPv}Op=wAgaq^2C;;HQ8Oq((5*jNlxpD4?+9SZ!CHf+02%S zWhq<1bJX!UXse0{WQ4&#KO+Fimg*#mj*jgm2#JV^5C}^+HZ+&^2vQ;LDY#WG9SG&6 z5E}X_iD1D-s8`(gdKwVQNg?R?D~VvqMrab7I%EtGG^7xI1SpAM#YQmF8k!V}Ky09k zyO;iH1s?BSALS6F<&)xH?{)phGvJiD$Wh3o|NK@CQc^z4joKLgI2#FqHUff9fiptn ziT8;cED-;x@?<%Xv+L>|&7t;Ngejf4dkeVAW|Pv){f%x4G@gduoGuftMsk+SqNCI1 z@DBrJcL^V2KhI1=aE!x8C)stQxQS&cYg?E1wJv;Yr?w;uaiir)b>zni_GCNBl*-E?xI;r--_Z6rOp zGO`G(m@XxOlFU-sxZ}KbkE-!_aYm9Vzdx&3aBnfXX&EZd+3eDer^DmjMDb4tUzhDx-9&ZtnTbD8<{MDyiIXUj8fMVttTsPM&uKARK>*Wt7lX z3oE}SS+yd9iKeAN1Er+1qI8tr3u`zg?-Y2ar`^3k^#AD?K2_{;8zY|&Gz_vtqO9Ny^ zvi+~@_ob!M2rLs4be!8gM<`uE_|oop(NrG5UzhO`#0?gOvR&PPf3nd9DE~pKysTxR zglv}DTMKG@Lu%oXmu~1@zDox#qS*@1dz^o!A-sglP`50j8h_2T<|LJ+s$b@2_qz}g z164avLN#sW2`!tH^^Fe+!TM84-eN0W>8MtDlngv{Xc9@$wUY`MEHmr^de_;{K!ZC1#hPNv1}~q=Mvzf#u+2Eqq~fQ1xT`&yg!ZhF9;$$_ zn!VVg|E>ra(jGW;(m&=c52MU`<+yE1h1Z%|5I!3poqSR;buXJGN#QKT>mD_+>ItP6 zBR|tw{}rB0lr5V~b;!@j%V*=B323|tPD)p*^ZhtWW~m&K^YY?&BQQ=k3S%O@i4uN)#o}=W+E_FGu!jG1*lW4T|oQ>|# zIuBaYIq&sY&XQRwZ_yOHIY8wa@H(S^8Wc0Lu- zSEO{VFrA}h8LN<2mph#*2EjpSG`gemoykoyyW!F%wyBl{jTfWg=#FX=mWE{~j53y) z#n`(0V|>Z;aVrtibe)tvPo7w3K^Q+iDvnB>vYPQ#jVhaMK*s~Aq2Q5)%3`p|5j$Qg ze-l=ag;Tn_?Y}~41eTA#oBH^G6H?yCdXix?XSF-KU@CX?PvG51FIDJI($ zi)1PJDJfsS4P1mg4MZ;=Pu|Ox7$X+Ni9$qCX8yt$lJ`SPMARPpCLI2$$;*KuOUaUlEHs1 zO-pB~{-}D+Br*%P1N|920&I0efp9WFpaDXn__4A7?nfrYPmNDo3+&O(y`{o6|G3f! zEE5(i={~{?{AdA$WTF2_j0q<0JN}a$c)XDpRD)p|Gj;ES?c@%c>*x;YTBbj$b-9kyi=QAb zWY-#h+8zMOR*+1$tLPeM$t;z93+j%l0>NZn$etp`;HCn>AtJG$)_tn5+k$Cp_!RnO& zwFo5APJH|!7buL=u{a=#{Bui&EcUhxOr5zEF!6{Ldg{x(Km`~!Z7+k)FC?=&aZ)9n z(^FMISbS-})V)rU>vHf#_tsyZbHQ+qPW-doK)$=J`+2q}+4SUx+KZ0*!5DJLjmHw_ zmc(H*rtvGOFbCH3!q|{*mWl6FLSa#MB`SVQWq^=f({$wQ{Ky4_oE!4Nnkv?|WB=Z3 zCCkrRFU)(o0nJ|zlel(NtFLNuLGg`D3Kk{GPdYy)Etn=X#4pJjKrS&mKYfTs=9K<45LOO_8AKj&o3Bm4MiUEm;y@{wWAsjwYd< ztG}UYFf7)7->e))2G7S}kOP%A*SF+?;wK6Zj}ma^Zk)l$F2ew)2QQ%ap)@s71CGt0 z)rHfx1^^32w?KD4722o+#^Q0#+?vlT0&6aKq+2T;8&(y2-{0;>zU%oF`xwU~OuND- z=v45{TzM2WYvrf=JR>93Bs3Ad;CdOWe#%BJd4x5}zn|Nx3e`)*I4MU~3Vv&5Zh8&c*62$1Z%sR^2*z%sMV*_vk!6&x zNI`Umo#3o05X-Aaj%_`d-B1hMxZvOl`La`h@*8SSsN?*JFv&@(s?zpQ5sJ;-kRq+c zK5)L<$O<%f-@R1@VsZE3-mPIIvq}$AcVeibIF2yBa^lC79Dyy(vHXxoL7c4ew}XLQ zR1CsNh>C~KbtZnQqp=wbdu+S;6D%`AQ_?f6iEa5lxGFs~Y!FBcmm={&pz3IB5^qEXK8%ND%TYVhByJ8-1B*rCo?od! zGp&j}v9yl|iMUlxLAv$S9I{vhtG*++=nDV$U=^X*^!kD$4Wict}Y&D|ga%YI~E+i|Wo^pv_Q6awelS#%3y@uuPd2 zK72S2lud*=bWvnCnhQt|vb|V-@~P@tcltDle~;utFX$~Ft0V-QsPEp^E~NGz3IC#x za!#A5EC7q6NYmL1*+Yro$z0@<61a3$meUyj<}Zt-WSf9bHOb2E?o>74*xcEh9B3Gg z##xRT61scsKT91j7LVfoZ#$6LZ89Wtq)Jw+`CPEz^3i5a0p1h z{=41qiJLgaZcpKDTc{2mo5?fJ9{sL}#B&jAz;r==0lUW(hpQ~>m;;T&#{A7>0#cev zhxN*Vbr%9yA(gg;@sq7#Tr_eKP30k+Kvu>$8jnq-L9^Sl%fU%TU=%=88MIw3G?rJk z95>CAME5BGI#FJ7em7^Z(n_KiPSKFNisa|RS>I>wAy??sL5$Ng6W#Zz1;{2d^}^J8 z$52q5hkbO@nH^LQj>YC+uO~m*F&>n`8SSr+l-#5spUmMWhR>f0$FxSWq^-M^r4AmO z%Zy1g4(ozPE2-3c`M6qWEGjF0>9K`SNyb^UpZJ{S4EFEUJ@T1cpKg^o3{ZAbL3jF$ z8gOhPUw7S^{t&ix$4HCrb~ay72aLtzoN?XOlc83&6pvpnbHNe_!_8cT;p8kD##%UB zC7;KJ9i0T@;E{&tQR(C*zNQ8on@8t{HqCdUMy!jxO!F9gM;$O0kDn~B&LjSK5IoYM zHu`~5SaG;&OdOshpT;TsA0^)hjUS~7lP~$Iqp?}cIn~i709Nr3*7T6o;kg=EEE08E z{Ww9Kkz`|MAeQ|!aBfR+NBW;L#yP~tiMaSe(i+Fb9oCr!BjWYT~g7-8na3mvrCK(S5c^IXEYgD2gvs(0M2QI(E(b4Vl zRSh^cm2_nMzID-2bHx7>mcc2PU7Z4j%8qF}qQ2G6&cEaCXcxuk??>P5lan zhGUD)Y~lm3Hw<*4KYD`jm@bM2NH%08Qou`F*B*ma_qZP!&zNH(n-{lrzt$rLyAl#Udj zpQE~fEKUnVJGzh*dlQ_}o!3ccmGS=WpqDkhv_!)qwh(bL8gW85q-!^|LD{@+ztmvB zaM+n5)p@Pyx6NY}~V_T5`HK7sP+x5$??w$H;fot$s$G4MC|D?4yS> zm3pd<#^&=PRx`{v+}4G!wQC zDw=iAUvs|+aTRjz)0t|xLw(i7WD}bHx||r>w|SpoC7or~4Nx1AMXROt`2}PWbRz)i z7JM406rg*2v;xPhYP!s|1{~!&iYj^us~=xQC^m_y?#GuVAOgmto}riju7#-z#Nux3 zWXsj07di*-X!qDNL@6BXgrMKim6a~FrsQe}fi?t|IZ_U39<3fCn@RiFXX`qHNnNC8 zdK_9^tR^0d(9FV~UCH?A5=^9fgA8nJQXtNDDb3Os2i9Wh2Jyk6v@>ex7EQAnhG zN;T(f3ny8#0kS4-;g1yc5ZR0_3-51@9knGp`DiD7GC@r|7NO_vwCPSVCfT=6&t3>p zIm3}`$z>ezX?fLqR{`XRoJptWJ5y8!W7GIE7zvVgF$eRW zVXe-QdWh`sqbro0*_@F$#&?T{r&9#LX@>Zwt+K~Ws9vq9!8jg?a;v55S1q`H{&37XgwAhdcGvAO1-w?inHI1ed zQ=>+~KdQnkdT01C>`+nciBdpp_V(}kx!)A_>_MeP?=@b(T{RdMYc|`Kn^gdc7_8BG zspBqXP&n*-vRU0W`!}GTqdTD+Xgv-kaOdqGC^mD27E^L+184-8qszu>2UG=OaaVZx zZc7rs7r`A}r)&I1KI?{YjthofD1U69+|sJgLAmb#Ec z3u!{hWK_3SlV&?$6q<|O98MIf#Zfg;r2)xI)cRfZn!N<83o!fTNC7@Rtu7#|C7q7v zPay+<9AMH0cFp6Cha0NOUOJLrT6s>0-mwpH5Qv*2=uDh(Q7u3=pMyK}543=7PcgGc zXX1x9)PrNO`RvZXTyo}g84&3}A9I&G8oBCL!Lq2~lktbe0D6r;r!(=p`zisk+1pjP zbC)|{s-VH>Oq`pq8VrlI%AxNE5!P0NHM+n_daM$Pg{;A6LH`rmvDcLMK`K8MK2;5g z&D)00`&_@5!=q5Jh;E)^FI2=~5qG;5e=Iu-Aedmtn91#{45rW%v z6vXkOzG>6=aK?sG+Z$^AQXP%WWW#bjjq_lcDSA-4;K|phz@-W)>9i#+V-AlR9&h4B zhDXvQ>T7a`B2yrx9gF-fWq+Uk^T>MjV2m*7!PqP<)zR1_8op^)q=z!(5K3U0#M?NK z%b}DjAyLvYCW*JqdmSQaaRW@Fp#t={L*eGISlpZ=pTW(#D-VSNMug!J-EW<)sUj4c zzD}Y_@3Ennw-PlKU7*gbrz#LDir-%}<&$F#(%emNz#ZpLW|Ys}$zyMf2Ero_!z7wJ z4FeUS*xdQMS2~NWn!IjO+?{T!DiDi1&mD&bu>I}@p4Q^(;=Kh?_*WH7UB-r^Mq6{n@f7hx z6>~RJXewR`b271gi}t&ZHY!4~xvR9bO%7%`dFJSv=zRCBtExaO?)r|Noz0#if9b>- zr*v77Y~3QyIw}~CS4pdC6c4Ychhor?s>_DBs)xvC($me-09SGGZlIf@$BjPS)x={F zYPYVH1KSxVdT@p#flR2BAIPVzukPv#tFom!-|t>3La`~#X?fjr2b%1aR1(bWr794M zyC(yF=#e=E>E(s1{+x0Ag;AVBc}bymE_q+WiU2>-G+n(*}*PyvYH;J z*2Hs`iaW-V%D|}5Q8U=M32Zu2fEQ4Tst3sO%B2RHB^$1!x3KWTmBIV_pyxrZ$9YcW1K*bNp9nwUhdY>Xly3GJg^M)0h6teis=xz7p(>si^TJ-oc!1eH}i2i zpQBkA)M4jJoS#S>BM24A=kdzJE#@NFHVj_kL3v57SoHv%k(^5o-%688W`4^XYg}G} ztUMPzH{IX-j8_X-8jj5SYVbPck++5?z+dbsJ1Zrt2ghngv*>_3Utru6sV*l9dxkkQ zqevVTN>0O+TrDm(bc~3THjA*BQn6wBW4I*`(?#?(Z0E2Xr!2;uJ4jc(fHZM9~o z=IC2vYU55RxsOc{s-dwtT;8iokR|N8h|Eh5&fNE@ zjKm_ao$;pzTLCl*X3-`+#o;!tCXox06_NLg2WnukXms;B7}yL6@HB##rg6$s?obZFxS|%1!Ifs- zQYzV|m47kg$7>9qr%NT>hFEUq+H6cbmU()~wR$f`$@T&NNoCCT7jz5JPCAhXx z$2*KSfI7Wkg^>V6O%Uu_SlZW9FrSAC1z;oj&1F|_Z>((qj z7roRBBtg2QaBQLu7>mgmgZArwpuH@lJTSqKJC?IpBvjZX&iH9?jvQ!PiP)t*@Lo%m zpxEqn{Mp;o4HlUrt1w$sZ2CO}MoRI|z91 z(Z$oOb+u3lh|QYdOiuqbu!mgsNV7J*gK97=)^_c+OTz(Xo;grx&t7Q59mN|jSx4~| zh3rE6U!JGoZmw`QdLmw znmlJEU}8eZ&JRW0*+0EiXFJNh*d~$%`7=)y!Pw;e?rU0MA)Fy!U$T*k`>P7XV(+X@ z;OGjNEYNNsIk@J9aL4hF2^ZtVY^;;W?=9?p_8;SczP1R6bS)$nsfxzt&pmKm_;6&0 zTsS#Ba%vf`G7^ixjTU{4(&6O-m_@r^l_c&!4nk2hKMFf!}~QG zRlg1l`Xt3(%}FYPvDurNu=ShW{viDqxsG*y9E>^=UlqB+@Hv}V_cJzfNBc`731+rc>8mHTJ&)1NR$$SUMUBlW z;;_u=>JavA9f-5R*rqKtm~!31hKY}hh%$3bio;tRVtx|Yye!Lv8J#QGTO;Xd)slQD z)@`p6vRP^y4+yG<*L``RXay5W?b{i0M0@e$#1V;xJ~6Tqz}cIRcMN38P0!*aSH^3V zuEFExvgJA*<|J3fTa`OLC)JFFzEh=m_=*$mEZ;9_zA_%Hq`i+U2zl@F~0X=?8O37XK zM=)f%6S=Yo_lb#Rkm`1< z!-E8nIssB?Rd;^kB$cIV7lT^%Z()05cz$!LrAB^}Bh(*RoK2|i&SVjuGUKH{XfsM+ z)-Oc@Sqi?Ynh|FPS>$y=dM@={u^f42O9rLur=Agb;0{xEY^A+hKCI&akZWLpUK1W) zUQ>31$pm2;vhPZ}Bpn2r1}0c?p>F?W696~*|81f%~zUm24Pduy7HCR z?V)=^_(N+-^mbgoA~Q+Q`ZJfzeX2jUxdErB0K)0ouM3tHS(1kdVq=la`Eh)+fRaDG z@hCSo-Uwywc_Dp~eau@?A{qc^I3=e2MzmH9hSkjDclRBp4U}W}=oaYLRv}8sc1n?$ zvE76i5H;#i`|1!&o^qvI;0P8~6!7$)XqM8R29vhgL+WpQ^o*!6rY{vpE^Ps4G=_o~ zQF&d?T;l;D5+5A_7ceES0t(9%nFS}f#8#j*pTXGn`B z*n`e9Lcc~|_214;X#|!D33bdz=p%p^HIjUJ^%!~;PCT(SZ+CzDiWkVd-l)dtVMKdR zu7X(#TP8UzABU)#0p4lH9Okc3t}9k}Wj=oGHCVWbY!z*cj>wcsI=+25OJ=FOKfU?d z_VB|#5Z;awe6YVl!KEJG1DEs5h*Zrt7rvc=)OA2GqojKdR7yHab@M^OX2B3lUW1@p zF*Z=4a6jCnCqwD(@mZN9y^xJy#+1@+262?jQukxlQLi90pFKR9=3+Kqq1dwQ&i3er z(NEmSZW?mxj~>tagexPQrFi%jmuCLpV=?%k6~8}3q3qJV$vtG|@|V|7UwH)K8Bm^9 zd`6Tq!dZ$(U)ZCw9}V~spE=c#c|wJ1U$OS_MY#9KG)5I z-gtIPVnpb8E455GNqLZ{0 zWUg!5j)G2mVZn67fm<0G{@R1rT@_RpOu)aTr94!_*FL*lfr3l~nc0x)^Tz8hukvN>u2%LA?0dEgq-J!4?U>rR1ony(sY>8=xWC-PuF zYJc1q1y~IABrY{>wMaEsY=V!#ZWjf(QTw_(kk^4bNpY;RR5e`JD1ji(Awr(9J3lmy z>W9D~7je^myl%N_plV59qvz|TPSwaA8z!LGlWN&vt5rk&d&3v0Cgs_? zn3q3;tUx{j$u#nybt)qN8Rw9pn>^$|%k9s?fqVnVG}Em&s)p<-5{6^JD?}b@ZO7Zi z(Llw}mghw=U3rUYs9t=bARc8+N#QOJy4Sa~6C}~MMHgaELBHRo8niq#n}gnu@Ej&@ zHR$!A(Aw-!5ltWt6N#hwLixTt^lkBUBLH^+usa2;v0Fu8u_!eD&zpbjwZ4+omSl}k zyr@fdqe!IW6?;{~#UxYd>z1-X#cwA?rva3_UF|{{+v|X8pd~{oc?~=IQFk|T&!!t7 zd(n^?DngbXDkJLyt8t?xSqV^QbbpZ?8H;*;L5{1 z^Pr<)RSc{3TS`uxTAx)3Q@YP1^NzYRitp*6m(^<_IXk%dx@s`2Lioz2EMKxacMUv- z9-B3Lz(z?ZIj4tmR}dW$`)3Cf+k(_4dGQO8%N z(X#~6k2#3`dq9b;_qK>}KYl=OY%!AH#0j@8vTAjTlmCRX6yGgaSv?z$S`G5)S%O7{ z9Ax{T_!h?TgQH|DR7O1?{Jkxj6B{-qW(oGcR8Blg`EMVe4he#zoUSH02kZ1ko^*1Y z>5s#d_89^hi3ZPl-! zjBu9X6}<)=nOz5y)L1Q{)0UGa2ic{|y=>CAxEwxcizSj)7@pEo_U4Vai)JZpyfLr) zcyvm4vHh6ND<|8?ll)I;%JUYnc)bP|6?p5gi<+K&++d@ec$V_@ttRN`A(Qt3HMFbr zx92FGEO@dxuhZbO%^J8#J?w#`T_qQ{Udi^uf0!u|&Qg48@znzYxZxCpDy?{~r##ud zB}>Z~8KIsN%i1PpFmCw!BM2aK0MOGJQ@yzh_Ys!1s}s&P$2kq=3&RDncR7%8LQ$d1 zV>4_`{SDuz-T#;mXIOSqWE3pB`58|70=`eXzh^La(X57O_bv3q17tFCD2$#zT_Thx z`JYBs)U_U4yf4NP?Tq{@k&^F=m4{#%A@Xi;o?PkN3|U{&cOShgR6kcRU+3 z(jB6){b* zEIJz&j;QfKYNzEEPvaohJ0^s!ujb{DTWEaV3&=I5S}uD5N4YF@CkDR(Z_MNQizm>CONtMa?a9iKQ<7c4R)CMDgRg4#h2x84x zArm7O#fd^hQTQ*#0`hM}n@KXcQ-J*eEf9cz zmi-Rmq>f6i_vi6p_8YG(9rWs7|Iq;W9nl1|`=8pUo(^QQ-@n)Cu+VRGah<*wX5W)S zA9O%Hbji2CS?Gqd+W(vdbTaDnEh8U)%|56uy42&(ECrT4*>QXg;9R84Uw24t1*pf8 zS?CRmZ*9H+^mL?DAIkjG8ET{d`+ztL{G>yjF(mDNf$w=y;I*<;1TT4mPx3JxM$UaV z$H-ziAjtxWCk5R&TODZf=uO!>bu6Rb-L$nH1H`ZRXou^FD~eSL`2QXrlzKpmr9fb# zrEiGoui^$pXNV&6;%1?RWJ5puykuNSR$u(B?1G zNyycbih1#|{{ue#&>o9`md3A^T!sS8p#bfD^N*{jKy1my<$tz>%kFJ0H|FJ#t#=!w zkPA+zg-qQiEon0u3;SKM&a=Ug(o0Wr@9g0mcJcOKLG|}qn^Lp

RXg*>x?w^BuC& zGDk;p3)8?0s(?rqi^Px*JsLdq27S1*Nn)GS!>bA~i0Y+AkbOpmUfA<3UFi~xv-cXz z!-WyNB8*j>%K{XC&B8Rj-0D*Tql`0WT*MHLITALatHGCjb#-yeZF9*5^QwiNdVF{?A|{W~wAi46C3e z-v=c~WgxOlOc~YbIN3&kbMF!h+}WC(0al5}-qZzFfRur?>u|yQGe9H763$BU$*w6f zI+ktV&I108o=gLm)>jvhWuSRVQ5rc8aT^BGga$TH4)5O~fNc9lu9#A^3-&o9!8uS3 z*t4;kcr5c~XP?O=8%Rf?yP#JC#7&ieV-K)pTdA|^P7^ZTSO#b}%F1Pi{~uVEvCaI~ zY$2y0bCI}8bqF~9U>Kd(`gkaX1?QxuVPu=P zdD(+JV%~PZ(gpDZZ}lNrM)GR+`nnHjVK9;o2Fo7GBGPj`vaM`nnjA^2B;?Y>4)py$ zV6x0ixqq)M*_>sB4uf`59o)PmcMhRs{1z)cqa@qDVT;z~lKXP%0FZXlv_9&9u?!2C zb}Wdz-c9Z$p$!Y@#~q8Bu##=q{<$-XNnU9UK-#e71Jwaz88-NR({Y%u;OSzD%#zAs zErZxt!z8Z}ASWSY8`CP|Os!(); this.gridIndex = new HashMap<>(); diff --git a/src/com/brindyblitz/artemis/engconsole/EngineeringConsoleManager.java b/src/com/brindyblitz/artemis/engconsole/EngineeringConsoleManager.java index f3309ad..2e69c6d 100644 --- a/src/com/brindyblitz/artemis/engconsole/EngineeringConsoleManager.java +++ b/src/com/brindyblitz/artemis/engconsole/EngineeringConsoleManager.java @@ -5,12 +5,12 @@ import com.brindyblitz.artemis.utils.newton.Property; -import net.dhleong.acl.enums.OrdnanceType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.protocol.core.eng.EngGridUpdatePacket.DamconStatus; -import net.dhleong.acl.util.GridCoord; -import net.dhleong.acl.vesseldata.VesselNode; -import net.dhleong.acl.vesseldata.VesselNodeConnection; +import com.walkertribe.ian.enums.OrdnanceType; +import com.walkertribe.ian.enums.ShipSystem; +import com.walkertribe.ian.protocol.core.eng.EngGridUpdatePacket.DamconStatus; +import com.walkertribe.ian.util.GridCoord; +import com.walkertribe.ian.vesseldata.VesselNode; +import com.walkertribe.ian.vesseldata.VesselNodeConnection; public interface EngineeringConsoleManager { diff --git a/src/com/brindyblitz/artemis/engconsole/FakeEngineeringConsoleManager.java b/src/com/brindyblitz/artemis/engconsole/FakeEngineeringConsoleManager.java index 5d14a2a..28fa649 100644 --- a/src/com/brindyblitz/artemis/engconsole/FakeEngineeringConsoleManager.java +++ b/src/com/brindyblitz/artemis/engconsole/FakeEngineeringConsoleManager.java @@ -12,10 +12,10 @@ import com.brindyblitz.artemis.utils.newton.Property; import com.brindyblitz.artemis.utils.newton.SettableProperty; -import net.dhleong.acl.enums.OrdnanceType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.protocol.core.eng.EngGridUpdatePacket.DamconStatus; -import net.dhleong.acl.util.GridCoord; +import com.walkertribe.ian.enums.OrdnanceType; +import com.walkertribe.ian.enums.ShipSystem; +import com.walkertribe.ian.protocol.core.eng.EngGridUpdatePacket.DamconStatus; +import com.walkertribe.ian.util.GridCoord; public class FakeEngineeringConsoleManager extends BaseEngineeringConsoleManager { private static final int MAX_COOLANT = 8; diff --git a/src/com/brindyblitz/artemis/engconsole/RealEngineeringConsoleManager.java b/src/com/brindyblitz/artemis/engconsole/RealEngineeringConsoleManager.java index 5aa719a..a30a2dd 100644 --- a/src/com/brindyblitz/artemis/engconsole/RealEngineeringConsoleManager.java +++ b/src/com/brindyblitz/artemis/engconsole/RealEngineeringConsoleManager.java @@ -16,14 +16,14 @@ import com.brindyblitz.artemis.utils.newton.ObservableAdapter; import com.brindyblitz.artemis.utils.newton.Property; -import net.dhleong.acl.enums.OrdnanceType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.protocol.core.eng.EngGridUpdatePacket.DamconStatus; -import net.dhleong.acl.protocol.core.eng.EngSendDamconPacket; -import net.dhleong.acl.protocol.core.eng.EngSetCoolantPacket; -import net.dhleong.acl.protocol.core.eng.EngSetEnergyPacket; -import net.dhleong.acl.util.GridCoord; -import net.dhleong.acl.world.Artemis; +import com.walkertribe.ian.enums.OrdnanceType; +import com.walkertribe.ian.enums.ShipSystem; +import com.walkertribe.ian.protocol.core.eng.EngGridUpdatePacket.DamconStatus; +import com.walkertribe.ian.protocol.core.eng.EngSendDamconPacket; +import com.walkertribe.ian.protocol.core.eng.EngSetCoolantPacket; +import com.walkertribe.ian.protocol.core.eng.EngSetEnergyPacket; +import com.walkertribe.ian.util.GridCoord; +import com.walkertribe.ian.world.Artemis; public class RealEngineeringConsoleManager extends BaseEngineeringConsoleManager { @@ -67,7 +67,7 @@ public Property getGameState() { if (worldAwareServer == null || !worldAwareServer.isConnected()) { return GameState.DISCONNECTED; } - else if ( this.worldAwareServer.getSystemManager().getPlayerShip(0) != null) { + else if ( this.worldAwareServer.getSystemManager().getPlayerShip(1) != null) { return GameState.INGAME; } else { @@ -84,11 +84,11 @@ public Property> getSystemEnergyAllocated() { Map result = new HashMap<>(); for(ShipSystem system: ShipSystem.values()) { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { result.put(system, 100); } else { - result.put(system, (int)(this.worldAwareServer.getSystemManager().getPlayerShip(0).getSystemEnergy(system) * 300)); + result.put(system, (int)(this.worldAwareServer.getSystemManager().getPlayerShip(1).getSystemEnergy(system) * 300)); } } @@ -103,11 +103,11 @@ public Property> getSystemCoolantAllocated() { Map result = new HashMap<>(); for(ShipSystem system: ShipSystem.values()) { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { result.put(system, 0); } else { - result.put(system, this.worldAwareServer.getSystemManager().getPlayerShip(0).getSystemCoolant(system)); + result.put(system, this.worldAwareServer.getSystemManager().getPlayerShip(1).getSystemCoolant(system)); } } @@ -122,11 +122,11 @@ public Property> getSystemHeat() { Map result = new HashMap<>(); for(ShipSystem system: ShipSystem.values()) { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { result.put(system, 0); } else { - result.put(system, (int) (this.worldAwareServer.getSystemManager().getPlayerShip(0).getSystemHeat(system) * 100)); + result.put(system, (int) (this.worldAwareServer.getSystemManager().getPlayerShip(1).getSystemHeat(system) * 100)); } } @@ -142,7 +142,7 @@ public Property> getSystemHealth() { Map result = new HashMap<>(); for(ShipSystem system: ShipSystem.values()) { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { result.put(system, 100); } else { @@ -158,10 +158,10 @@ public Property getTotalShipCoolant() { return totalShipCoolant; } private final DerivedProperty totalShipCoolant = new DerivedProperty<>( () -> { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { return 8; } - return this.worldAwareServer.getSystemManager().getPlayerShip(0).getAvailableCoolant(); + return this.worldAwareServer.getSystemManager().getPlayerShip(1).getAvailableCoolant(); }, systemManagerChangeObservable); @@ -171,7 +171,7 @@ public Property getTotalCoolantRemaining() { } private final DerivedProperty totalCoolantRemaining = new DerivedProperty<>( () -> { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { return Artemis.DEFAULT_COOLANT; } Map systemCoolantAllocated = this.getSystemCoolantAllocated().get(); @@ -226,11 +226,11 @@ public Property getTotalEnergyRemaining() { return totalEnergyRemaining; } private final DerivedProperty totalEnergyRemaining = new DerivedProperty<>( () -> { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { return 0f; } - return this.worldAwareServer.getSystemManager().getPlayerShip(0).getEnergy(); + return this.worldAwareServer.getSystemManager().getPlayerShip(1).getEnergy(); }, systemManagerChangeObservable); @Override @@ -238,12 +238,12 @@ public Property getFrontShieldStrength() { return frontShieldStrength; } private final DerivedProperty frontShieldStrength = new DerivedProperty<>( () -> { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { return 0; } // When shields are knocked offline, they go to a negative value and come back online once they reach 1 again. - int strength = (int) this.worldAwareServer.getSystemManager().getPlayerShip(0).getShieldsFront(); + int strength = (int) this.worldAwareServer.getSystemManager().getPlayerShip(1).getShieldsFront(); return strength > 0 ? strength : 0; }, systemManagerChangeObservable); @@ -253,12 +253,12 @@ public Property getRearShieldStrength() { } private final DerivedProperty rearShieldStrength = new DerivedProperty<>( () -> { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { return 0; } // When shields are knocked offline, they go to a negative value and come back online once they reach 1 again. - int strength = (int) this.worldAwareServer.getSystemManager().getPlayerShip(0).getShieldsRear(); + int strength = (int) this.worldAwareServer.getSystemManager().getPlayerShip(1).getShieldsRear(); return strength > 0 ? strength : 0; }, systemManagerChangeObservable); @@ -267,11 +267,11 @@ public Property getFrontShieldMaxStrength() { return frontShieldMaxStrength; } private final DerivedProperty frontShieldMaxStrength = new DerivedProperty<>( () -> { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { return 0; } - return (int) this.worldAwareServer.getSystemManager().getPlayerShip(0).getShieldsFrontMax(); + return (int) this.worldAwareServer.getSystemManager().getPlayerShip(1).getShieldsFrontMax(); }, systemManagerChangeObservable); @@ -281,11 +281,11 @@ public Property getRearShieldMaxStrength() { } private final DerivedProperty rearShieldMaxStrength = new DerivedProperty<>( () -> { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { return 0; } - return (int) this.worldAwareServer.getSystemManager().getPlayerShip(0).getShieldsRearMax(); + return (int) this.worldAwareServer.getSystemManager().getPlayerShip(1).getShieldsRearMax(); }, systemManagerChangeObservable); @Override @@ -294,11 +294,11 @@ public Property getShieldsActive() { } private final DerivedProperty shieldsActive = new DerivedProperty<>( () -> { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { return false; } - return this.worldAwareServer.getSystemManager().getPlayerShip(0).getShieldsState().getBooleanValue(); + return this.worldAwareServer.getSystemManager().getPlayerShip(1).getShieldsState().getBooleanValue(); }, systemManagerChangeObservable); @Override @@ -309,11 +309,11 @@ public Property> getOrdnanceCount() { Map result = new HashMap<>(); for(OrdnanceType type: OrdnanceType.values()) { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { result.put(type, 0); } else { - result.put(type, this.worldAwareServer.getSystemManager().getPlayerShip(0).getTorpedoCount(type)); + result.put(type, this.worldAwareServer.getSystemManager().getPlayerShip(1).getTorpedoCount(type)); } } @@ -323,7 +323,7 @@ public Property> getOrdnanceCount() { @Override public void incrementSystemEnergyAllocated(ShipSystem system, int amount) { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { return; } super.incrementSystemEnergyAllocated(system, amount); @@ -331,7 +331,7 @@ public void incrementSystemEnergyAllocated(ShipSystem system, int amount) { @Override public void incrementSystemCoolantAllocated(ShipSystem system, int amount) { - if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(0) == null) { + if (this.worldAwareServer == null || this.worldAwareServer.getSystemManager().getPlayerShip(1) == null) { return; } super.incrementSystemCoolantAllocated(system, amount); diff --git a/src/com/brindyblitz/artemis/engconsole/config/ConfigurationLoader.java b/src/com/brindyblitz/artemis/engconsole/config/ConfigurationLoader.java index 7487a22..d22a94c 100644 --- a/src/com/brindyblitz/artemis/engconsole/config/ConfigurationLoader.java +++ b/src/com/brindyblitz/artemis/engconsole/config/ConfigurationLoader.java @@ -10,7 +10,7 @@ import java.util.Map.Entry; import java.util.Properties; -import net.dhleong.acl.enums.ShipSystem; +import com.walkertribe.ian.enums.ShipSystem; public class ConfigurationLoader { diff --git a/src/com/brindyblitz/artemis/engconsole/config/EnergyCoolantPreset.java b/src/com/brindyblitz/artemis/engconsole/config/EnergyCoolantPreset.java index 267a2b1..22f5fa0 100644 --- a/src/com/brindyblitz/artemis/engconsole/config/EnergyCoolantPreset.java +++ b/src/com/brindyblitz/artemis/engconsole/config/EnergyCoolantPreset.java @@ -3,7 +3,7 @@ import java.util.HashMap; import java.util.Map; -import net.dhleong.acl.enums.ShipSystem; +import com.walkertribe.ian.enums.ShipSystem; public class EnergyCoolantPreset { public static final int SAFE_ENERGY = -999; diff --git a/src/com/brindyblitz/artemis/engconsole/config/InputMapping.java b/src/com/brindyblitz/artemis/engconsole/config/InputMapping.java index 074823e..1c02902 100644 --- a/src/com/brindyblitz/artemis/engconsole/config/InputMapping.java +++ b/src/com/brindyblitz/artemis/engconsole/config/InputMapping.java @@ -1,6 +1,6 @@ package com.brindyblitz.artemis.engconsole.config; -import net.dhleong.acl.enums.ShipSystem; +import com.walkertribe.ian.enums.ShipSystem; import java.awt.event.KeyEvent; import java.lang.reflect.Field; diff --git a/src/com/brindyblitz/artemis/engconsole/ui/InGamePanel.java b/src/com/brindyblitz/artemis/engconsole/ui/InGamePanel.java index b2bbfde..f1af76b 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/InGamePanel.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/InGamePanel.java @@ -1,13 +1,13 @@ package com.brindyblitz.artemis.engconsole.ui; -import static net.dhleong.acl.enums.ShipSystem.AFT_SHIELDS; -import static net.dhleong.acl.enums.ShipSystem.BEAMS; -import static net.dhleong.acl.enums.ShipSystem.FORE_SHIELDS; -import static net.dhleong.acl.enums.ShipSystem.IMPULSE; -import static net.dhleong.acl.enums.ShipSystem.MANEUVERING; -import static net.dhleong.acl.enums.ShipSystem.SENSORS; -import static net.dhleong.acl.enums.ShipSystem.TORPEDOES; -import static net.dhleong.acl.enums.ShipSystem.WARP_JUMP_DRIVE; +import static com.walkertribe.ian.enums.ShipSystem.AFT_SHIELDS; +import static com.walkertribe.ian.enums.ShipSystem.BEAMS; +import static com.walkertribe.ian.enums.ShipSystem.FORE_SHIELDS; +import static com.walkertribe.ian.enums.ShipSystem.IMPULSE; +import static com.walkertribe.ian.enums.ShipSystem.MANEUVERING; +import static com.walkertribe.ian.enums.ShipSystem.SENSORS; +import static com.walkertribe.ian.enums.ShipSystem.TORPEDOES; +import static com.walkertribe.ian.enums.ShipSystem.WARP_JUMP_DRIVE; import java.awt.Color; import java.awt.event.KeyEvent; @@ -24,9 +24,9 @@ import com.brindyblitz.artemis.engconsole.ui.damcon.Damcon; import com.brindyblitz.artemis.utils.AudioManager; -import net.dhleong.acl.enums.OrdnanceType; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.util.GridCoord; +import com.walkertribe.ian.enums.OrdnanceType; +import com.walkertribe.ian.enums.ShipSystem; +import com.walkertribe.ian.util.GridCoord; public class InGamePanel extends JPanel { diff --git a/src/com/brindyblitz/artemis/engconsole/ui/InputManager.java b/src/com/brindyblitz/artemis/engconsole/ui/InputManager.java index 376a8d4..8e4cb5a 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/InputManager.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/InputManager.java @@ -7,7 +7,7 @@ import com.brindyblitz.artemis.engconsole.config.ConfigurationLoader; import com.brindyblitz.artemis.engconsole.config.InputMapping; -import net.dhleong.acl.enums.ShipSystem; +import com.walkertribe.ian.enums.ShipSystem; public abstract class InputManager { public static Map mappings = new HashMap(); diff --git a/src/com/brindyblitz/artemis/engconsole/ui/PresetManager.java b/src/com/brindyblitz/artemis/engconsole/ui/PresetManager.java index 8f5bd44..d0ca078 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/PresetManager.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/PresetManager.java @@ -4,7 +4,7 @@ import com.brindyblitz.artemis.engconsole.config.ConfigurationLoader; import com.brindyblitz.artemis.engconsole.config.EnergyCoolantPreset; -import net.dhleong.acl.enums.ShipSystem; +import com.walkertribe.ian.enums.ShipSystem; public class PresetManager { private EnergyCoolantPreset[] presets; diff --git a/src/com/brindyblitz/artemis/engconsole/ui/SystemHealthSlider.java b/src/com/brindyblitz/artemis/engconsole/ui/SystemHealthSlider.java index d19eb4f..c575417 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/SystemHealthSlider.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/SystemHealthSlider.java @@ -1,7 +1,7 @@ package com.brindyblitz.artemis.engconsole.ui; import com.brindyblitz.artemis.engconsole.EngineeringConsoleManager; -import net.dhleong.acl.enums.ShipSystem; +import com.walkertribe.ian.enums.ShipSystem; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; diff --git a/src/com/brindyblitz/artemis/engconsole/ui/SystemHeatSlider.java b/src/com/brindyblitz/artemis/engconsole/ui/SystemHeatSlider.java index f064a19..c6b5200 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/SystemHeatSlider.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/SystemHeatSlider.java @@ -1,7 +1,7 @@ package com.brindyblitz.artemis.engconsole.ui; import com.brindyblitz.artemis.engconsole.EngineeringConsoleManager; -import net.dhleong.acl.enums.ShipSystem; +import com.walkertribe.ian.enums.ShipSystem; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; diff --git a/src/com/brindyblitz/artemis/engconsole/ui/SystemSlider.java b/src/com/brindyblitz/artemis/engconsole/ui/SystemSlider.java index b1d3387..3bbcc6f 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/SystemSlider.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/SystemSlider.java @@ -20,8 +20,8 @@ import com.brindyblitz.artemis.engconsole.ui.SystemStatusRenderer.IntervalType; import com.brindyblitz.artemis.utils.AudioManager; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.world.Artemis; +import com.walkertribe.ian.enums.ShipSystem; +import com.walkertribe.ian.world.Artemis; public class SystemSlider extends JPanel implements MouseListener, MouseMotionListener, MouseWheelListener { private static final long serialVersionUID = 1L; diff --git a/src/com/brindyblitz/artemis/engconsole/ui/SystemStatusRenderer.java b/src/com/brindyblitz/artemis/engconsole/ui/SystemStatusRenderer.java index bb5e3a3..823217a 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/SystemStatusRenderer.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/SystemStatusRenderer.java @@ -5,7 +5,7 @@ import com.brindyblitz.artemis.engconsole.EngineeringConsoleManager; -import net.dhleong.acl.enums.ShipSystem; +import com.walkertribe.ian.enums.ShipSystem; public class SystemStatusRenderer { diff --git a/src/com/brindyblitz/artemis/engconsole/ui/SystemStatusSlider.java b/src/com/brindyblitz/artemis/engconsole/ui/SystemStatusSlider.java index bbf1a1b..ae1e642 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/SystemStatusSlider.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/SystemStatusSlider.java @@ -14,7 +14,7 @@ import com.brindyblitz.artemis.engconsole.EngineeringConsoleManager; -import net.dhleong.acl.enums.ShipSystem; +import com.walkertribe.ian.enums.ShipSystem; public abstract class SystemStatusSlider extends JPanel { private static final long serialVersionUID = 1L; diff --git a/src/com/brindyblitz/artemis/engconsole/ui/damcon/Damcon.java b/src/com/brindyblitz/artemis/engconsole/ui/damcon/Damcon.java index 3d7e4fe..9004f07 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/damcon/Damcon.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/damcon/Damcon.java @@ -47,9 +47,9 @@ import com.sun.j3d.utils.pickfast.PickCanvas; import com.sun.j3d.utils.universe.SimpleUniverse; -import net.dhleong.acl.util.GridCoord; -import net.dhleong.acl.vesseldata.VesselNode; -import net.dhleong.acl.vesseldata.VesselNodeConnection; +import com.walkertribe.ian.util.GridCoord; +import com.walkertribe.ian.vesseldata.VesselNode; +import com.walkertribe.ian.vesseldata.VesselNodeConnection; public class Damcon implements MouseListener, MouseMotionListener, MouseWheelListener { private static final int WIDTH = 400, HEIGHT = 300; diff --git a/src/com/brindyblitz/artemis/engconsole/ui/damcon/Internal.java b/src/com/brindyblitz/artemis/engconsole/ui/damcon/Internal.java index 54b2120..03bb0b3 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/damcon/Internal.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/damcon/Internal.java @@ -2,7 +2,7 @@ import com.brindyblitz.artemis.utils.AudioManager; -import net.dhleong.acl.vesseldata.VesselNode; +import com.walkertribe.ian.vesseldata.VesselNode; import javax.media.j3d.Shape3D; import javax.vecmath.Point3f; diff --git a/src/com/brindyblitz/artemis/engconsole/ui/damcon/InternalConnection.java b/src/com/brindyblitz/artemis/engconsole/ui/damcon/InternalConnection.java index a18859a..a3a3b94 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/damcon/InternalConnection.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/damcon/InternalConnection.java @@ -10,7 +10,7 @@ import com.brindyblitz.artemis.utils.AudioManager; -import net.dhleong.acl.vesseldata.VesselNodeConnection; +import com.walkertribe.ian.vesseldata.VesselNodeConnection; public class InternalConnection extends Internal { private VesselNodeConnection vesselNodeConnection; diff --git a/src/com/brindyblitz/artemis/engconsole/ui/damcon/InternalNode.java b/src/com/brindyblitz/artemis/engconsole/ui/damcon/InternalNode.java index f357d02..7c7a661 100644 --- a/src/com/brindyblitz/artemis/engconsole/ui/damcon/InternalNode.java +++ b/src/com/brindyblitz/artemis/engconsole/ui/damcon/InternalNode.java @@ -4,8 +4,8 @@ import com.brindyblitz.artemis.utils.AudioManager; -import net.dhleong.acl.util.GridCoord; -import net.dhleong.acl.vesseldata.VesselNode; +import com.walkertribe.ian.util.GridCoord; +import com.walkertribe.ian.vesseldata.VesselNode; public class InternalNode extends InternalSelectable { private VesselNode vesselNode; diff --git a/src/com/brindyblitz/artemis/protocol/NonShittyShipSystemGrid.java b/src/com/brindyblitz/artemis/protocol/NonShittyShipSystemGrid.java index ed70e63..1c38624 100644 --- a/src/com/brindyblitz/artemis/protocol/NonShittyShipSystemGrid.java +++ b/src/com/brindyblitz/artemis/protocol/NonShittyShipSystemGrid.java @@ -5,9 +5,9 @@ import java.lang.reflect.InvocationTargetException; import java.util.Map; -import net.dhleong.acl.enums.ShipSystem; -import net.dhleong.acl.util.GridCoord; -import net.dhleong.acl.util.ShipSystemGrid; +import com.walkertribe.ian.enums.ShipSystem; +import com.walkertribe.ian.util.GridCoord; +import com.walkertribe.ian.util.ShipSystemGrid; public class NonShittyShipSystemGrid extends ShipSystemGrid { diff --git a/src/com/brindyblitz/artemis/protocol/NotifyingSystemManager.java b/src/com/brindyblitz/artemis/protocol/NotifyingSystemManager.java index f1508f3..f2a497b 100644 --- a/src/com/brindyblitz/artemis/protocol/NotifyingSystemManager.java +++ b/src/com/brindyblitz/artemis/protocol/NotifyingSystemManager.java @@ -3,12 +3,12 @@ import com.brindyblitz.artemis.utils.EventEmitter; import com.brindyblitz.artemis.utils.EventSubscriber; -import net.dhleong.acl.iface.Listener; -import net.dhleong.acl.protocol.core.eng.EngGridUpdatePacket; -import net.dhleong.acl.protocol.core.world.DestroyObjectPacket; -import net.dhleong.acl.protocol.core.world.IntelPacket; -import net.dhleong.acl.protocol.core.world.ObjectUpdatePacket; -import net.dhleong.acl.world.SystemManager; +import com.walkertribe.ian.iface.Listener; +import com.walkertribe.ian.protocol.core.eng.EngGridUpdatePacket; +import com.walkertribe.ian.protocol.core.world.DestroyObjectPacket; +import com.walkertribe.ian.protocol.core.world.IntelPacket; +import com.walkertribe.ian.protocol.core.world.ObjectUpdatePacket; +import com.walkertribe.ian.world.SystemManager; public class NotifyingSystemManager extends SystemManager { diff --git a/src/com/brindyblitz/artemis/protocol/RobustProxyListener.java b/src/com/brindyblitz/artemis/protocol/RobustProxyListener.java index c9476aa..56ef5bc 100644 --- a/src/com/brindyblitz/artemis/protocol/RobustProxyListener.java +++ b/src/com/brindyblitz/artemis/protocol/RobustProxyListener.java @@ -5,15 +5,15 @@ import java.net.ServerSocket; import java.net.Socket; -import net.dhleong.acl.enums.ConnectionType; -import net.dhleong.acl.iface.ArtemisNetworkInterface; -import net.dhleong.acl.iface.BaseDebugger; -import net.dhleong.acl.iface.DisconnectEvent; -import net.dhleong.acl.iface.Listener; -import net.dhleong.acl.iface.ThreadedArtemisNetworkInterface; -import net.dhleong.acl.protocol.ArtemisPacket; -import net.dhleong.acl.protocol.RawPacket; -import net.dhleong.acl.protocol.UnparsedPacket; +import com.walkertribe.ian.enums.ConnectionType; +import com.walkertribe.ian.iface.ArtemisNetworkInterface; +import com.walkertribe.ian.iface.BaseDebugger; +import com.walkertribe.ian.iface.DisconnectEvent; +import com.walkertribe.ian.iface.Listener; +import com.walkertribe.ian.iface.ThreadedArtemisNetworkInterface; +import com.walkertribe.ian.protocol.ArtemisPacket; +import com.walkertribe.ian.protocol.RawPacket; +import com.walkertribe.ian.protocol.UnparsedPacket; public class RobustProxyListener implements Runnable { diff --git a/src/com/brindyblitz/artemis/protocol/WorldAwareRegularServer.java b/src/com/brindyblitz/artemis/protocol/WorldAwareRegularServer.java index 0a8783a..0d41806 100644 --- a/src/com/brindyblitz/artemis/protocol/WorldAwareRegularServer.java +++ b/src/com/brindyblitz/artemis/protocol/WorldAwareRegularServer.java @@ -4,14 +4,14 @@ import com.brindyblitz.artemis.utils.EventEmitter; -import net.dhleong.acl.enums.Console; -import net.dhleong.acl.iface.ArtemisNetworkInterface; -import net.dhleong.acl.iface.ConnectionSuccessEvent; -import net.dhleong.acl.iface.Listener; -import net.dhleong.acl.iface.ThreadedArtemisNetworkInterface; -import net.dhleong.acl.protocol.core.setup.ReadyPacket; -import net.dhleong.acl.protocol.core.setup.ReadyPacket2; -import net.dhleong.acl.protocol.core.setup.SetConsolePacket; +import com.walkertribe.ian.enums.Console; +import com.walkertribe.ian.iface.ArtemisNetworkInterface; +import com.walkertribe.ian.iface.ConnectionSuccessEvent; +import com.walkertribe.ian.iface.Listener; +import com.walkertribe.ian.iface.ThreadedArtemisNetworkInterface; +import com.walkertribe.ian.protocol.core.setup.ReadyPacket; +import com.walkertribe.ian.protocol.core.setup.ReadyPacket2; +import com.walkertribe.ian.protocol.core.setup.SetConsolePacket; public class WorldAwareRegularServer implements WorldAwareServer { diff --git a/src/com/brindyblitz/artemis/protocol/WorldAwareServer.java b/src/com/brindyblitz/artemis/protocol/WorldAwareServer.java index 89b3323..ce16787 100644 --- a/src/com/brindyblitz/artemis/protocol/WorldAwareServer.java +++ b/src/com/brindyblitz/artemis/protocol/WorldAwareServer.java @@ -1,6 +1,6 @@ package com.brindyblitz.artemis.protocol; -import net.dhleong.acl.iface.ArtemisNetworkInterface; +import com.walkertribe.ian.iface.ArtemisNetworkInterface; public interface WorldAwareServer {