From 18feea5fedf768d64d2a1e22a1fa0ff6b35d1c7c Mon Sep 17 00:00:00 2001 From: Daniel Seiler Date: Tue, 2 Jan 2024 00:08:38 +0100 Subject: [PATCH 01/12] fix: optional party phrases (#1377) * fix: optional party phrases Don't return early if there are no party phrases * Update VanityUtilities.cpp --- dGame/dUtilities/VanityUtilities.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/dGame/dUtilities/VanityUtilities.cpp b/dGame/dUtilities/VanityUtilities.cpp index 99087365..6d5f996c 100644 --- a/dGame/dUtilities/VanityUtilities.cpp +++ b/dGame/dUtilities/VanityUtilities.cpp @@ -294,21 +294,20 @@ void VanityUtilities::ParseXML(const std::string& file) { auto* partyPhrases = npcs->FirstChildElement("partyphrases"); if (partyPhrases == nullptr) { - LOG("Failed to parse party phrases"); - return; - } - - for (auto* phrase = partyPhrases->FirstChildElement("phrase"); phrase != nullptr; - phrase = phrase->NextSiblingElement("phrase")) { - // Get the phrase - auto* text = phrase->GetText(); - - if (text == nullptr) { - LOG("Failed to parse party phrase"); - continue; + LOG("No party phrases found"); + } else { + for (auto* phrase = partyPhrases->FirstChildElement("phrase"); phrase != nullptr; + phrase = phrase->NextSiblingElement("phrase")) { + // Get the phrase + auto* text = phrase->GetText(); + + if (text == nullptr) { + LOG("Failed to parse party phrase"); + continue; + } + + m_PartyPhrases.push_back(text); } - - m_PartyPhrases.push_back(text); } for (auto* npc = npcs->FirstChildElement("npc"); npc != nullptr; npc = npc->NextSiblingElement("npc")) { From 85672e060a8757ea460e88a06352d3faef4e9668 Mon Sep 17 00:00:00 2001 From: Daniel Seiler Date: Tue, 2 Jan 2024 04:50:00 +0100 Subject: [PATCH 02/12] fix: signal handling (#1375) * fix: signal handling * fix: flush WorldServer logger before main loop * fix: consolidate signal code --- dAuthServer/AuthServer.cpp | 17 ++++++++++++---- dChatServer/ChatServer.cpp | 10 +++++++--- dCommon/CMakeLists.txt | 1 + dCommon/Game.cpp | 7 +++++++ dCommon/Game.h | 9 ++++++++- dCommon/Logger.cpp | 2 ++ dMasterServer/InstanceManager.cpp | 2 +- dMasterServer/MasterServer.cpp | 32 +++++++++++++++++-------------- dMasterServer/Start.cpp | 4 ++-- dNet/AuthPackets.cpp | 4 +++- dNet/dServer.cpp | 14 +++++++++----- dNet/dServer.h | 11 ++++++++--- dWorldServer/WorldServer.cpp | 24 ++++++++++++----------- 13 files changed, 92 insertions(+), 45 deletions(-) create mode 100644 dCommon/Game.cpp diff --git a/dAuthServer/AuthServer.cpp b/dAuthServer/AuthServer.cpp index 52b35678..857a27b3 100644 --- a/dAuthServer/AuthServer.cpp +++ b/dAuthServer/AuthServer.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -28,7 +29,7 @@ namespace Game { Logger* logger = nullptr; dServer* server = nullptr; dConfig* config = nullptr; - bool shouldShutdown = false; + Game::signal_t lastSignal = 0; std::mt19937 randomEngine; } @@ -42,6 +43,9 @@ int main(int argc, char** argv) { Diagnostics::SetProcessFileName(argv[0]); Diagnostics::Initialize(); + std::signal(SIGINT, Game::OnSignal); + std::signal(SIGTERM, Game::OnSignal); + //Create all the objects we need to run our service: Game::logger = SetupLogger(); if (!Game::logger) return EXIT_FAILURE; @@ -74,6 +78,7 @@ int main(int argc, char** argv) { masterIP = masterInfo->ip; masterPort = masterInfo->port; } + LOG("Master is at %s:%d", masterIP.c_str(), masterPort); Game::randomEngine = std::mt19937(time(0)); @@ -83,7 +88,7 @@ int main(int argc, char** argv) { if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients")); if (Game::config->GetValue("port") != "") ourPort = std::atoi(Game::config->GetValue("port").c_str()); - Game::server = new dServer(Game::config->GetValue("external_ip"), ourPort, 0, maxClients, false, true, Game::logger, masterIP, masterPort, ServerType::Auth, Game::config, &Game::shouldShutdown); + Game::server = new dServer(Game::config->GetValue("external_ip"), ourPort, 0, maxClients, false, true, Game::logger, masterIP, masterPort, ServerType::Auth, Game::config, &Game::lastSignal); //Run it until server gets a kill message from Master: auto t = std::chrono::high_resolution_clock::now(); @@ -96,13 +101,16 @@ int main(int argc, char** argv) { AuthPackets::LoadClaimCodes(); - while (!Game::shouldShutdown) { + Game::logger->Flush(); // once immediately before main loop + while (!Game::ShouldShutdown()) { //Check if we're still connected to master: if (!Game::server->GetIsConnectedToMaster()) { framesSinceMasterDisconnect++; - if (framesSinceMasterDisconnect >= authFramerate) + if (framesSinceMasterDisconnect >= authFramerate) { + LOG("No connection to master!"); break; //Exit our loop, shut down. + } } else framesSinceMasterDisconnect = 0; //In world we'd update our other systems here. @@ -141,6 +149,7 @@ int main(int argc, char** argv) { std::this_thread::sleep_until(t); } + LOG("Exited Main Loop! (signal %d)", Game::lastSignal); //Delete our objects here: Database::Destroy("AuthServer"); delete Game::server; diff --git a/dChatServer/ChatServer.cpp b/dChatServer/ChatServer.cpp index c9bdcd9c..3edb9d9e 100644 --- a/dChatServer/ChatServer.cpp +++ b/dChatServer/ChatServer.cpp @@ -33,7 +33,7 @@ namespace Game { dConfig* config = nullptr; dChatFilter* chatFilter = nullptr; AssetManager* assetManager = nullptr; - bool shouldShutdown = false; + Game::signal_t lastSignal = 0; std::mt19937 randomEngine; PlayerContainer playerContainer; } @@ -48,6 +48,9 @@ int main(int argc, char** argv) { Diagnostics::SetProcessFileName(argv[0]); Diagnostics::Initialize(); + std::signal(SIGINT, Game::OnSignal); + std::signal(SIGTERM, Game::OnSignal); + //Create all the objects we need to run our service: Game::logger = SetupLogger(); if (!Game::logger) return EXIT_FAILURE; @@ -101,7 +104,7 @@ int main(int argc, char** argv) { if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients")); if (Game::config->GetValue("port") != "") ourPort = std::atoi(Game::config->GetValue("port").c_str()); - Game::server = new dServer(Game::config->GetValue("external_ip"), ourPort, 0, maxClients, false, true, Game::logger, masterIP, masterPort, ServerType::Chat, Game::config, &Game::shouldShutdown); + Game::server = new dServer(Game::config->GetValue("external_ip"), ourPort, 0, maxClients, false, true, Game::logger, masterIP, masterPort, ServerType::Chat, Game::config, &Game::lastSignal); Game::chatFilter = new dChatFilter(Game::assetManager->GetResPath().string() + "/chatplus_en_us", bool(std::stoi(Game::config->GetValue("dont_generate_dcf")))); @@ -118,7 +121,8 @@ int main(int argc, char** argv) { uint32_t framesSinceMasterDisconnect = 0; uint32_t framesSinceLastSQLPing = 0; - while (!Game::shouldShutdown) { + Game::logger->Flush(); // once immediately before main loop + while (!Game::ShouldShutdown()) { //Check if we're still connected to master: if (!Game::server->GetIsConnectedToMaster()) { framesSinceMasterDisconnect++; diff --git a/dCommon/CMakeLists.txt b/dCommon/CMakeLists.txt index 1354c051..5300a4f2 100644 --- a/dCommon/CMakeLists.txt +++ b/dCommon/CMakeLists.txt @@ -5,6 +5,7 @@ set(DCOMMON_SOURCES "dConfig.cpp" "Diagnostics.cpp" "Logger.cpp" + "Game.cpp" "GeneralUtils.cpp" "LDFFormat.cpp" "MD5.cpp" diff --git a/dCommon/Game.cpp b/dCommon/Game.cpp new file mode 100644 index 00000000..b057478f --- /dev/null +++ b/dCommon/Game.cpp @@ -0,0 +1,7 @@ +#include "Game.h" + +namespace Game { + void OnSignal(int signal) { + lastSignal = signal; + } +} diff --git a/dCommon/Game.h b/dCommon/Game.h index 972eea46..d8113497 100644 --- a/dCommon/Game.h +++ b/dCommon/Game.h @@ -2,6 +2,7 @@ #include #include +#include class dServer; class Logger; @@ -16,6 +17,7 @@ class dZoneManager; class PlayerContainer; namespace Game { + using signal_t = volatile std::sig_atomic_t; extern Logger* logger; extern dServer* server; extern InstanceManager* im; @@ -25,9 +27,14 @@ namespace Game { extern RakPeerInterface* chatServer; extern AssetManager* assetManager; extern SystemAddress chatSysAddr; - extern bool shouldShutdown; + extern signal_t lastSignal; extern EntityManager* entityManager; extern dZoneManager* zoneManager; extern PlayerContainer playerContainer; extern std::string projectVersion; + + inline bool ShouldShutdown() { + return lastSignal != 0; + } + void OnSignal(int signal); } diff --git a/dCommon/Logger.cpp b/dCommon/Logger.cpp index 83a97aa6..b4181205 100644 --- a/dCommon/Logger.cpp +++ b/dCommon/Logger.cpp @@ -6,6 +6,8 @@ #include Writer::~Writer() { + // Flush before we close + Flush(); // Dont try to close stdcout... if (!m_Outfile || m_IsConsoleWriter) return; diff --git a/dMasterServer/InstanceManager.cpp b/dMasterServer/InstanceManager.cpp index 51aad2cc..193ff940 100644 --- a/dMasterServer/InstanceManager.cpp +++ b/dMasterServer/InstanceManager.cpp @@ -134,7 +134,7 @@ void InstanceManager::RemoveInstance(Instance* instance) { if (m_Instances[i] == instance) { instance->SetShutdownComplete(true); - if (!Game::shouldShutdown) RedirectPendingRequests(instance); + if (!Game::ShouldShutdown()) RedirectPendingRequests(instance); delete m_Instances[i]; diff --git a/dMasterServer/MasterServer.cpp b/dMasterServer/MasterServer.cpp index 2de212a0..fbece646 100644 --- a/dMasterServer/MasterServer.cpp +++ b/dMasterServer/MasterServer.cpp @@ -47,12 +47,13 @@ namespace Game { InstanceManager* im = nullptr; dConfig* config = nullptr; AssetManager* assetManager = nullptr; - bool shouldShutdown = false; + Game::signal_t lastSignal = 0; + bool universeShutdownRequested = false; std::mt19937 randomEngine; } //namespace Game bool shutdownSequenceStarted = false; -void ShutdownSequence(int32_t signal = -1); +int ShutdownSequence(int32_t signal = -1); int32_t FinalizeShutdown(int32_t signal = -1); Logger* SetupLogger(); void HandlePacket(Packet* packet); @@ -73,8 +74,8 @@ int main(int argc, char** argv) { //Triggers the shutdown sequence at application exit std::atexit([]() { ShutdownSequence(); }); - signal(SIGINT, [](int32_t signal) { ShutdownSequence(EXIT_FAILURE); }); - signal(SIGTERM, [](int32_t signal) { ShutdownSequence(EXIT_FAILURE); }); + std::signal(SIGINT, Game::OnSignal); + std::signal(SIGTERM, Game::OnSignal); //Create all the objects we need to run our service: Game::logger = SetupLogger(); @@ -286,7 +287,7 @@ int main(int argc, char** argv) { if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients")); if (Game::config->GetValue("port") != "") ourPort = std::stoi(Game::config->GetValue("port")); - Game::server = new dServer(Game::config->GetValue("external_ip"), ourPort, 0, maxClients, true, false, Game::logger, "", 0, ServerType::Master, Game::config, &Game::shouldShutdown); + Game::server = new dServer(Game::config->GetValue("external_ip"), ourPort, 0, maxClients, true, false, Game::logger, "", 0, ServerType::Master, Game::config, &Game::lastSignal); //Query for the database for a server labeled "master" @@ -321,7 +322,8 @@ int main(int argc, char** argv) { uint32_t framesSinceLastSQLPing = 0; uint32_t framesSinceKillUniverseCommand = 0; - while (true) { + Game::logger->Flush(); + while (!Game::ShouldShutdown()) { //In world we'd update our other systems here. //Check for packets here: @@ -355,10 +357,10 @@ int main(int argc, char** argv) { framesSinceLastSQLPing++; //10m shutdown for universe kill command - if (Game::shouldShutdown) { + if (Game::universeShutdownRequested) { if (framesSinceKillUniverseCommand >= shutdownUniverseTime) { //Break main loop and exit - break; + Game::lastSignal = -1; } else framesSinceKillUniverseCommand++; } @@ -402,7 +404,7 @@ int main(int argc, char** argv) { t += std::chrono::milliseconds(masterFrameDelta); std::this_thread::sleep_until(t); } - return FinalizeShutdown(EXIT_SUCCESS); + return ShutdownSequence(EXIT_SUCCESS); } Logger* SetupLogger() { @@ -799,7 +801,7 @@ void HandlePacket(Packet* packet) { case eMasterMessageType::SHUTDOWN_UNIVERSE: { LOG("Received shutdown universe command, shutting down in 10 minutes."); - Game::shouldShutdown = true; + Game::universeShutdownRequested = true; break; } @@ -809,9 +811,11 @@ void HandlePacket(Packet* packet) { } } -void ShutdownSequence(int32_t signal) { +int ShutdownSequence(int32_t signal) { + LOG("Recieved Signal %d", signal); if (shutdownSequenceStarted) { - return; + LOG("Duplicate Shutdown Sequence"); + return -1; } if (!Game::im) { @@ -820,7 +824,7 @@ void ShutdownSequence(int32_t signal) { Game::im->SetIsShuttingDown(true); shutdownSequenceStarted = true; - Game::shouldShutdown = true; + Game::lastSignal = -1; { CBITSTREAM; @@ -889,7 +893,7 @@ void ShutdownSequence(int32_t signal) { } } - FinalizeShutdown(signal); + return FinalizeShutdown(signal); } int32_t FinalizeShutdown(int32_t signal) { diff --git a/dMasterServer/Start.cpp b/dMasterServer/Start.cpp index 8ef571f3..1fb9c212 100644 --- a/dMasterServer/Start.cpp +++ b/dMasterServer/Start.cpp @@ -5,7 +5,7 @@ #include "BinaryPathFinder.h" void StartChatServer() { - if (Game::shouldShutdown) { + if (Game::ShouldShutdown()) { LOG("Currently shutting down. Chat will not be restarted."); return; } @@ -24,7 +24,7 @@ void StartChatServer() { } void StartAuthServer() { - if (Game::shouldShutdown) { + if (Game::ShouldShutdown()) { LOG("Currently shutting down. Auth will not be restarted."); return; } diff --git a/dNet/AuthPackets.cpp b/dNet/AuthPackets.cpp index 8f0542cc..9ddf7bf7 100644 --- a/dNet/AuthPackets.cpp +++ b/dNet/AuthPackets.cpp @@ -55,7 +55,9 @@ void AuthPackets::SendHandshake(dServer* server, const SystemAddress& sysAddr, c RakNet::BitStream bitStream; BitStreamUtils::WriteHeader(bitStream, eConnectionType::SERVER, eServerMessageType::VERSION_CONFIRM); uint32_t netVersion; - if (!GeneralUtils::TryParse(Game::config->GetValue("client_net_version"), netVersion)) { + const std::string& expectedVersion = Game::config->GetValue("client_net_version"); + LOG("Expected Version: '%s'", expectedVersion.c_str()); + if (!GeneralUtils::TryParse(expectedVersion, netVersion)) { LOG("Failed to parse client_net_version. Cannot authenticate to %s:%i", nextServerIP.c_str(), nextServerPort); return; } diff --git a/dNet/dServer.cpp b/dNet/dServer.cpp index 9a3955b6..702a2d44 100644 --- a/dNet/dServer.cpp +++ b/dNet/dServer.cpp @@ -39,7 +39,7 @@ public: } } ReceiveDownloadCompleteCB; -dServer::dServer(const std::string& ip, int port, int instanceID, int maxConnections, bool isInternal, bool useEncryption, Logger* logger, const std::string masterIP, int masterPort, ServerType serverType, dConfig* config, bool* shouldShutdown, unsigned int zoneID) { +dServer::dServer(const std::string& ip, int port, int instanceID, int maxConnections, bool isInternal, bool useEncryption, Logger* logger, const std::string masterIP, int masterPort, ServerType serverType, dConfig* config, Game::signal_t* lastSignal, unsigned int zoneID) { mIP = ip; mPort = port; mZoneID = zoneID; @@ -55,7 +55,7 @@ dServer::dServer(const std::string& ip, int port, int instanceID, int maxConnect mReplicaManager = nullptr; mServerType = serverType; mConfig = config; - mShouldShutdown = shouldShutdown; + mShouldShutdown = lastSignal; //Attempt to start our server here: mIsOkay = Startup(); @@ -75,7 +75,9 @@ dServer::dServer(const std::string& ip, int port, int instanceID, int maxConnect //Connect to master if we are not master: if (serverType != ServerType::Master) { SetupForMasterConnection(); - ConnectToMaster(); + if (!ConnectToMaster()) { + LOG("Failed ConnectToMaster!"); + } } //Set up Replica if we're a world server: @@ -129,7 +131,7 @@ Packet* dServer::ReceiveFromMaster() { break; } case eMasterMessageType::SHUTDOWN: - *mShouldShutdown = true; + *mShouldShutdown = -2; break; //When we handle these packets in World instead dServer, we just return the packet's pointer. @@ -236,10 +238,12 @@ void dServer::Shutdown() { void dServer::SetupForMasterConnection() { mMasterSocketDescriptor = SocketDescriptor(uint16_t(mPort + 1), 0); mMasterPeer = RakNetworkFactory::GetRakPeerInterface(); - mMasterPeer->Startup(1, 30, &mMasterSocketDescriptor, 1); + bool ret = mMasterPeer->Startup(1, 30, &mMasterSocketDescriptor, 1); + if (!ret) LOG("Failed MasterPeer Startup!"); } bool dServer::ConnectToMaster() { + //LOG("Connection to Master %s:%d", mMasterIP.c_str(), mMasterPort); return mMasterPeer->Connect(mMasterIP.c_str(), mMasterPort, "3.25 DARKFLAME1", 15); } diff --git a/dNet/dServer.h b/dNet/dServer.h index 5df5bddc..b0a3e11d 100644 --- a/dNet/dServer.h +++ b/dNet/dServer.h @@ -1,5 +1,6 @@ #pragma once #include +#include #include "RakPeerInterface.h" #include "ReplicaManager.h" #include "NetworkIDManager.h" @@ -15,6 +16,10 @@ enum class ServerType : uint32_t { World }; +namespace Game { + using signal_t = volatile std::sig_atomic_t; +} + class dServer { public: // Default constructor should only used for testing! @@ -31,7 +36,7 @@ public: int masterPort, ServerType serverType, dConfig* config, - bool* shouldShutdown, + Game::signal_t* shouldShutdown, unsigned int zoneID = 0); ~dServer(); @@ -81,9 +86,9 @@ private: NetworkIDManager* mNetIDManager = nullptr; /** - * Whether or not to shut down the server. Pointer to Game::shouldShutdown. + * Whether or not to shut down the server. Pointer to Game::lastSignal. */ - bool* mShouldShutdown = nullptr; + Game::signal_t* mShouldShutdown = nullptr; SocketDescriptor mSocketDescriptor; std::string mIP; int mPort; diff --git a/dWorldServer/WorldServer.cpp b/dWorldServer/WorldServer.cpp index cbab98d0..6cac52d5 100644 --- a/dWorldServer/WorldServer.cpp +++ b/dWorldServer/WorldServer.cpp @@ -88,7 +88,7 @@ namespace Game { RakPeerInterface* chatServer = nullptr; std::mt19937 randomEngine; SystemAddress chatSysAddr; - bool shouldShutdown = false; + Game::signal_t lastSignal = 0; EntityManager* entityManager = nullptr; dZoneManager* zoneManager = nullptr; std::string projectVersion = PROJECT_VERSION; @@ -124,8 +124,8 @@ int main(int argc, char** argv) { // Triggers the shutdown sequence at application exit std::atexit(WorldShutdownSequence); - signal(SIGINT, [](int) { WorldShutdownSequence(); }); - signal(SIGTERM, [](int) { WorldShutdownSequence(); }); + std::signal(SIGINT, Game::OnSignal); + std::signal(SIGTERM, Game::OnSignal); uint32_t zoneID = 1000; uint32_t cloneID = 0; @@ -212,7 +212,7 @@ int main(int argc, char** argv) { UserManager::Instance()->Initialize(); Game::chatFilter = new dChatFilter(Game::assetManager->GetResPath().string() + "/chatplus_en_us", bool(std::stoi(Game::config->GetValue("dont_generate_dcf")))); - Game::server = new dServer(masterIP, ourPort, instanceID, maxClients, false, true, Game::logger, masterIP, masterPort, ServerType::World, Game::config, &Game::shouldShutdown, zoneID); + Game::server = new dServer(masterIP, ourPort, instanceID, maxClients, false, true, Game::logger, masterIP, masterPort, ServerType::World, Game::config, &Game::lastSignal, zoneID); //Connect to the chat server: uint32_t chatPort = 1501; @@ -313,6 +313,8 @@ int main(int argc, char** argv) { uint32_t saveTime = 10 * 60 * currentFramerate; // 10 minutes in frames uint32_t sqlPingTime = 10 * 60 * currentFramerate; // 10 minutes in frames uint32_t emptyShutdownTime = (cloneID == 0 ? 30 : 5) * 60 * currentFramerate; // 30 minutes for main worlds, 5 for all others. + + Game::logger->Flush(); // once immediately before the main loop while (true) { Metrics::StartMeasurement(MetricVariable::Frame); Metrics::StartMeasurement(MetricVariable::GameLoop); @@ -363,9 +365,9 @@ int main(int argc, char** argv) { if (!Game::server->GetIsConnectedToMaster()) { framesSinceMasterDisconnect++; - if (framesSinceMasterDisconnect >= noMasterConnectionTimeout && !Game::shouldShutdown) { + if (framesSinceMasterDisconnect >= noMasterConnectionTimeout && !Game::ShouldShutdown()) { LOG("Game loop running but no connection to master for %d frames, shutting down", noMasterConnectionTimeout); - Game::shouldShutdown = true; + Game::lastSignal = -1; } } else framesSinceMasterDisconnect = 0; @@ -460,7 +462,7 @@ int main(int argc, char** argv) { //If we haven't had any players for a while, time out and shut down: if (framesSinceLastUser >= emptyShutdownTime) { - Game::shouldShutdown = true; + Game::lastSignal = -1; } } else { framesSinceLastUser = 0; @@ -513,7 +515,7 @@ int main(int argc, char** argv) { } } - if (Game::shouldShutdown && !worldShutdownSequenceComplete) { + if (Game::ShouldShutdown() && !worldShutdownSequenceComplete) { WorldShutdownProcess(zoneID); break; } @@ -822,7 +824,7 @@ void HandlePacket(Packet* packet) { } case eMasterMessageType::SHUTDOWN: { - Game::shouldShutdown = true; + Game::lastSignal = -1; LOG("Got shutdown request from master, zone (%i), instance (%i)", Game::server->GetZoneID(), Game::server->GetInstanceID()); break; } @@ -1289,9 +1291,9 @@ void WorldShutdownProcess(uint32_t zoneId) { } void WorldShutdownSequence() { - Game::shouldShutdown = true; + Game::lastSignal = -1; #ifndef DARKFLAME_PLATFORM_WIN32 - if (Game::shouldShutdown || worldShutdownSequenceComplete) + if (Game::ShouldShutdown() || worldShutdownSequenceComplete) #endif { return; From 1941679d27814f73a393073684226c4f147009c3 Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Mon, 1 Jan 2024 23:53:00 -0800 Subject: [PATCH 03/12] feat: Bump standard to 20 (#1376) * Bump to 20 * fix warnings and errors * thanks RakNet --- CMakeLists.txt | 2 +- dGame/UserManager.cpp | 2 +- dGame/dComponents/ActivityComponent.cpp | 6 +++--- dGame/dComponents/RacingControlComponent.cpp | 2 +- dGame/dInventory/Item.cpp | 2 +- dZoneManager/Spawner.cpp | 6 +++--- tests/dCommonTests/TestEncoding.cpp | 2 +- thirdparty/raknet/CMakeLists.txt | 2 ++ 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index aa7eb9b2..5d47c595 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.18) project(Darkflame) include(CTest) -set (CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) # Read variables from file FILE(READ "${CMAKE_SOURCE_DIR}/CMakeVariables.txt" variables) diff --git a/dGame/UserManager.cpp b/dGame/UserManager.cpp index 18387366..9afd38b2 100644 --- a/dGame/UserManager.cpp +++ b/dGame/UserManager.cpp @@ -263,7 +263,7 @@ void UserManager::CreateCharacter(const SystemAddress& sysAddr, Packet* packet) } //Now that the name is ok, we can get an objectID from Master: - ObjectIDManager::Instance()->RequestPersistentID([=](uint32_t objectID) { + ObjectIDManager::Instance()->RequestPersistentID([=, this](uint32_t objectID) { if (Database::Get()->GetCharacterInfo(objectID)) { LOG("Character object id unavailable, check object_id_tracker!"); WorldPackets::SendCharacterCreationResponse(sysAddr, eCharacterCreationResponse::OBJECT_ID_UNAVAILABLE); diff --git a/dGame/dComponents/ActivityComponent.cpp b/dGame/dComponents/ActivityComponent.cpp index f4865a03..55bc4c08 100644 --- a/dGame/dComponents/ActivityComponent.cpp +++ b/dGame/dComponents/ActivityComponent.cpp @@ -33,7 +33,7 @@ ActivityComponent::ActivityComponent(Entity* parent, int32_t activityID) : Compo if (activityID > 0) m_ActivityID = activityID; else m_ActivityID = parent->GetVar(u"activityID"); CDActivitiesTable* activitiesTable = CDClientManager::Instance().GetTable(); - std::vector activities = activitiesTable->Query([=](CDActivities entry) {return (entry.ActivityID == m_ActivityID); }); + std::vector activities = activitiesTable->Query([this](CDActivities entry) {return (entry.ActivityID == m_ActivityID); }); for (CDActivities activity : activities) { m_ActivityInfo = activity; @@ -93,7 +93,7 @@ void ActivityComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsIniti void ActivityComponent::ReloadConfig() { CDActivitiesTable* activitiesTable = CDClientManager::Instance().GetTable(); - std::vector activities = activitiesTable->Query([=](CDActivities entry) {return (entry.ActivityID == m_ActivityID); }); + std::vector activities = activitiesTable->Query([this](CDActivities entry) {return (entry.ActivityID == m_ActivityID); }); for (auto activity : activities) { auto mapID = m_ActivityInfo.instanceMapID; if (static_cast(activity.leaderboardType) == Leaderboard::Type::Racing && Game::config->GetValue("solo_racing") == "1") { @@ -532,7 +532,7 @@ void ActivityInstance::RewardParticipant(Entity* participant) { // First, get the activity data auto* activityRewardsTable = CDClientManager::Instance().GetTable(); - std::vector activityRewards = activityRewardsTable->Query([=](CDActivityRewards entry) { return (entry.objectTemplate == m_ActivityInfo.ActivityID); }); + std::vector activityRewards = activityRewardsTable->Query([this](CDActivityRewards entry) { return (entry.objectTemplate == m_ActivityInfo.ActivityID); }); if (!activityRewards.empty()) { uint32_t minCoins = 0; diff --git a/dGame/dComponents/RacingControlComponent.cpp b/dGame/dComponents/RacingControlComponent.cpp index ef1d0f32..5b93dbb7 100644 --- a/dGame/dComponents/RacingControlComponent.cpp +++ b/dGame/dComponents/RacingControlComponent.cpp @@ -312,7 +312,7 @@ void RacingControlComponent::OnRequestDie(Entity* player) { } // Respawn the player in 2 seconds, as was done in live. Not sure if this value is in a setting somewhere else... - vehicle->AddCallbackTimer(2.0f, [=]() { + vehicle->AddCallbackTimer(2.0f, [=, this]() { if (!vehicle || !this->m_Parent) return; GameMessages::SendRacingResetPlayerToLastReset( m_Parent->GetObjectID(), racingPlayer.playerID, diff --git a/dGame/dInventory/Item.cpp b/dGame/dInventory/Item.cpp index 06c6900f..e68cdebc 100644 --- a/dGame/dInventory/Item.cpp +++ b/dGame/dInventory/Item.cpp @@ -249,7 +249,7 @@ bool Item::IsEquipped() const { bool Item::Consume() { auto* skillsTable = CDClientManager::Instance().GetTable(); - auto skills = skillsTable->Query([=](const CDObjectSkills entry) { + auto skills = skillsTable->Query([this](const CDObjectSkills entry) { return entry.objectTemplate == static_cast(lot); }); diff --git a/dZoneManager/Spawner.cpp b/dZoneManager/Spawner.cpp index b602c17c..31188907 100644 --- a/dZoneManager/Spawner.cpp +++ b/dZoneManager/Spawner.cpp @@ -51,20 +51,20 @@ Spawner::Spawner(const SpawnerInfo info) { std::vector spawnSmashSpawnersN = Game::zoneManager->GetSpawnersByName(m_Info.spawnOnSmashGroupName); for (Entity* ssEntity : spawnSmashEntities) { m_SpawnSmashFoundGroup = true; - ssEntity->AddDieCallback([=]() { + ssEntity->AddDieCallback([=, this]() { Spawn(); }); } for (Spawner* ssSpawner : spawnSmashSpawners) { m_SpawnSmashFoundGroup = true; - ssSpawner->AddSpawnedEntityDieCallback([=]() { + ssSpawner->AddSpawnedEntityDieCallback([=, this]() { Spawn(); }); } for (Spawner* ssSpawner : spawnSmashSpawnersN) { m_SpawnSmashFoundGroup = true; m_SpawnOnSmash = ssSpawner; - ssSpawner->AddSpawnedEntityDieCallback([=]() { + ssSpawner->AddSpawnedEntityDieCallback([=, this]() { Spawn(); }); } diff --git a/tests/dCommonTests/TestEncoding.cpp b/tests/dCommonTests/TestEncoding.cpp index c103ccbf..54ae03d3 100644 --- a/tests/dCommonTests/TestEncoding.cpp +++ b/tests/dCommonTests/TestEncoding.cpp @@ -26,7 +26,7 @@ TEST_F(EncodingTest, TestEncodingHello) { }; TEST_F(EncodingTest, TestEncodingUmlaut) { - originalWord = u8"Frühling"; + originalWord = reinterpret_cast(u8"Frühling"); originalWordSv = originalWord; GeneralUtils::_NextUTF8Char(originalWordSv, out); EXPECT_EQ(out, U'F'); diff --git a/thirdparty/raknet/CMakeLists.txt b/thirdparty/raknet/CMakeLists.txt index 417e24dd..d4dd1e60 100644 --- a/thirdparty/raknet/CMakeLists.txt +++ b/thirdparty/raknet/CMakeLists.txt @@ -80,6 +80,8 @@ target_compile_options(raknet PRIVATE $<$: /w>) +set_property(TARGET raknet PROPERTY CXX_STANDARD 17) + if(WIN32) # Link Win Sockets 2 to RakNet target_link_libraries(raknet ws2_32) From b1134b340f9ef61a7571d5387992df9e9524d3c7 Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Tue, 2 Jan 2024 16:25:57 -0800 Subject: [PATCH 04/12] Add config update function (#1379) Update CMakeLists.txt FINALLY dont ignore cmake module directory move to separate file very cool feature tested that this still works Co-authored-by: Aaron Kimbrell --- .gitignore | 1 + CMakeLists.txt | 63 ++++++++++++++++++++++++++++++----------------- cmake/Utils.cmake | 47 +++++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+), 22 deletions(-) create mode 100644 cmake/Utils.cmake diff --git a/.gitignore b/.gitignore index e093ba4b..12a3b284 100644 --- a/.gitignore +++ b/.gitignore @@ -122,3 +122,4 @@ docker/__pycache__ docker-compose.override.yml !*Test.bin +!cmake/* diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d47c595..06fb3992 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,7 @@ project(Darkflame) include(CTest) set(CMAKE_CXX_STANDARD 20) +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") # Read variables from file FILE(READ "${CMAKE_SOURCE_DIR}/CMakeVariables.txt" variables) @@ -14,14 +15,13 @@ string(REPLACE "\n" ";" variables ${variables}) foreach(variable ${variables}) # If the string contains a #, skip it if(NOT "${variable}" MATCHES "#") - # Split the variable into name and value string(REPLACE "=" ";" variable ${variable}) # Check that the length of the variable is 2 (name and value) list(LENGTH variable length) - if(${length} EQUAL 2) + if(${length} EQUAL 2) list(GET variable 0 variable_name) list(GET variable 1 variable_value) @@ -53,15 +53,16 @@ set(RECASTNAVIGATION_EXAMPLES OFF CACHE BOOL "" FORCE) if(UNIX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17 -O2 -Wuninitialized -fPIC") add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0 _GLIBCXX_USE_CXX17_ABI=0) + if(NOT APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -lstdc++fs") endif() - if (${DYNAMIC} AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if(${DYNAMIC} AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic") endif() - if (${GGDB}) + if(${GGDB}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb") endif() @@ -97,47 +98,61 @@ make_directory(${CMAKE_BINARY_DIR}/logs) # Copy resource files on first build set(RESOURCE_FILES "sharedconfig.ini" "authconfig.ini" "chatconfig.ini" "worldconfig.ini" "masterconfig.ini" "blacklist.dcf") message(STATUS "Checking resource file integrity") -foreach (resource_file ${RESOURCE_FILES}) + +include(Utils) + +foreach(resource_file ${RESOURCE_FILES}) set(file_size 0) - if (EXISTS ${PROJECT_BINARY_DIR}/${resource_file}) + + if(EXISTS ${PROJECT_BINARY_DIR}/${resource_file}) file(SIZE ${PROJECT_BINARY_DIR}/${resource_file} file_size) endif() - if (${file_size} EQUAL 0) + + if(${file_size} EQUAL 0) configure_file( ${CMAKE_SOURCE_DIR}/resources/${resource_file} ${PROJECT_BINARY_DIR}/${resource_file} COPYONLY ) message(STATUS "Moved " ${resource_file} " to project binary directory") - elseif (resource_file MATCHES ".ini") + elseif(resource_file MATCHES ".ini") message(STATUS "Checking " ${resource_file} " for missing config options") file(READ ${PROJECT_BINARY_DIR}/${resource_file} current_file_contents) string(REPLACE "\\\n" "" current_file_contents ${current_file_contents}) string(REPLACE "\n" ";" current_file_contents ${current_file_contents}) set(parsed_current_file_contents "") + # Remove comment lines so they do not interfere with the variable parsing - foreach (line ${current_file_contents}) + foreach(line ${current_file_contents}) string(FIND ${line} "#" is_comment) - if (NOT ${is_comment} EQUAL 0) + + if(NOT ${is_comment} EQUAL 0) string(APPEND parsed_current_file_contents ${line}) endif() endforeach() + file(READ ${CMAKE_SOURCE_DIR}/resources/${resource_file} depot_file_contents) string(REPLACE "\\\n" "" depot_file_contents ${depot_file_contents}) string(REPLACE "\n" ";" depot_file_contents ${depot_file_contents}) set(line_to_add "") - foreach (line ${depot_file_contents}) + + foreach(line ${depot_file_contents}) string(FIND ${line} "#" is_comment) - if (NOT ${is_comment} EQUAL 0) + + if(NOT ${is_comment} EQUAL 0) string(REPLACE "=" ";" line_split ${line}) list(GET line_split 0 variable_name) - if (NOT ${parsed_current_file_contents} MATCHES ${variable_name}) + + if(NOT ${parsed_current_file_contents} MATCHES ${variable_name}) message(STATUS "Adding missing config option " ${variable_name} " to " ${resource_file}) set(line_to_add ${line_to_add} ${line}) - foreach (line_to_append ${line_to_add}) + + foreach(line_to_append ${line_to_add}) file(APPEND ${PROJECT_BINARY_DIR}/${resource_file} "\n" ${line_to_append}) endforeach() + file(APPEND ${PROJECT_BINARY_DIR}/${resource_file} "\n") endif() + set(line_to_add "") else() set(line_to_add ${line_to_add} ${line}) @@ -145,10 +160,11 @@ foreach (resource_file ${RESOURCE_FILES}) endforeach() endif() endforeach() + message(STATUS "Resource file integrity check complete") # if navmeshes directory does not exist, create it -if (NOT EXISTS ${PROJECT_BINARY_DIR}/navmeshes) +if(NOT EXISTS ${PROJECT_BINARY_DIR}/navmeshes) file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/navmeshes) endif() @@ -160,6 +176,7 @@ file(REMOVE ${PROJECT_BINARY_DIR}/navmeshes.zip) # Copy vanity files on first build set(VANITY_FILES "CREDITS.md" "INFO.md" "TESTAMENT.md" "NPC.xml") + foreach(file ${VANITY_FILES}) configure_file("${CMAKE_SOURCE_DIR}/vanity/${file}" "${CMAKE_BINARY_DIR}/vanity/${file}" COPYONLY) endforeach() @@ -167,6 +184,7 @@ endforeach() # Move our migrations for MasterServer to run file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/migrations/dlu/) file(GLOB SQL_FILES ${CMAKE_SOURCE_DIR}/migrations/dlu/*.sql) + foreach(file ${SQL_FILES}) get_filename_component(file ${file} NAME) configure_file(${CMAKE_SOURCE_DIR}/migrations/dlu/${file} ${PROJECT_BINARY_DIR}/migrations/dlu/${file}) @@ -174,6 +192,7 @@ endforeach() file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/migrations/cdserver/) file(GLOB SQL_FILES ${CMAKE_SOURCE_DIR}/migrations/cdserver/*.sql) + foreach(file ${SQL_FILES}) get_filename_component(file ${file} NAME) configure_file(${CMAKE_SOURCE_DIR}/migrations/cdserver/${file} ${PROJECT_BINARY_DIR}/migrations/cdserver/${file}) @@ -301,20 +320,20 @@ set(INCLUDED_DIRECTORIES ) # Add system specfic includes for Apple, Windows and Other Unix OS' (including Linux) -if (APPLE) +if(APPLE) include_directories("/usr/local/include/") endif() # Actually include the directories from our list -foreach (dir ${INCLUDED_DIRECTORIES}) +foreach(dir ${INCLUDED_DIRECTORIES}) include_directories(${PROJECT_SOURCE_DIR}/${dir}) endforeach() -if (NOT WIN32) +if(NOT WIN32) include_directories("${PROJECT_SOURCE_DIR}/thirdparty/libbcrypt/include/bcrypt") endif() -include_directories("${PROJECT_SOURCE_DIR}/thirdparty/libbcrypt/include") +include_directories("${PROJECT_SOURCE_DIR}/thirdparty/libbcrypt/include") # Add linking directories: link_directories(${PROJECT_BINARY_DIR}) @@ -368,10 +387,10 @@ add_subdirectory(dPhysics) set(COMMON_LIBRARIES "dCommon" "dDatabase" "dNet" "raknet" "mariadbConnCpp" "magic_enum") # Add platform specific common libraries -if (UNIX) +if(UNIX) set(COMMON_LIBRARIES ${COMMON_LIBRARIES} "dl" "pthread") - if (NOT APPLE AND ${INCLUDE_BACKTRACE}) + if(NOT APPLE AND ${INCLUDE_BACKTRACE}) set(COMMON_LIBRARIES ${COMMON_LIBRARIES} "backtrace") endif() endif() @@ -409,6 +428,6 @@ target_precompile_headers( "$<$:${PROJECT_SOURCE_DIR}/thirdparty/tinyxml2/tinyxml2.h>" ) -if (${ENABLE_TESTING}) +if(${ENABLE_TESTING}) add_subdirectory(tests) endif() diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake new file mode 100644 index 00000000..c0c67ef0 --- /dev/null +++ b/cmake/Utils.cmake @@ -0,0 +1,47 @@ +# Parses a config file for a specific option and appends the new option if it does not exist +# If the new option does exist, this function will do nothing. +# file_name: The name of the file to parse +# old_option_name: The name of the option to find +# new_option_name: The name of the option to add +function(UpdateConfigOption file_name old_option_name new_option_name) + string(APPEND old_option_name "=") + string(APPEND new_option_name "=") + message(STATUS "Checking " ${file_name} " for " ${old_option_name} " and adding " ${new_option_name} " if it does not exist") + file(READ ${file_name} current_file_contents) + string(REPLACE "\\\n" "" current_file_contents ${current_file_contents}) + string(REPLACE "\n" ";" current_file_contents ${current_file_contents}) + set(parsed_current_file_contents "") + + # Remove comment lines so they do not interfere with the variable parsing + foreach(line ${current_file_contents}) + string(FIND ${line} "#" is_comment) + + if(NOT ${is_comment} EQUAL 0) + string(APPEND parsed_current_file_contents ${line}) + endif() + endforeach() + + set(found_new_option -1) + set(found_old_option -1) + set(current_value -1) + + foreach(line ${current_file_contents}) + string(FIND ${line} ${old_option_name} old_option_in_file) + + if(${old_option_in_file} EQUAL 0) + set(found_old_option 1) + set(current_value ${line}) + endif() + + string(FIND ${line} ${new_option_name} found_new_option_in_file) + + if(${found_new_option_in_file} EQUAL 0) + set(found_new_option 1) + endif() + endforeach(line ${current_file_contents}) + + if(${found_old_option} EQUAL 1 AND NOT ${found_new_option} EQUAL 1) + string(REPLACE ${old_option_name} ${new_option_name} current_value ${current_value}) + file(APPEND ${file_name} "\n" ${current_value}) + endif() +endfunction() From bb79528c0eaefdeb124041a6f4a356abb46e72ea Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Tue, 2 Jan 2024 16:28:17 -0800 Subject: [PATCH 05/12] fix: nullptr access for logger in master (#1380) * fix nullptr access for logger * fix nullptr access for logger fix no save on crash * Update MasterServer.cpp --- dMasterServer/MasterServer.cpp | 5 +++++ dWorldServer/WorldServer.cpp | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dMasterServer/MasterServer.cpp b/dMasterServer/MasterServer.cpp index fbece646..a66bcfc2 100644 --- a/dMasterServer/MasterServer.cpp +++ b/dMasterServer/MasterServer.cpp @@ -812,6 +812,7 @@ void HandlePacket(Packet* packet) { } int ShutdownSequence(int32_t signal) { + if (!Game::logger) return -1; LOG("Recieved Signal %d", signal); if (shutdownSequenceStarted) { LOG("Duplicate Shutdown Sequence"); @@ -900,9 +901,13 @@ int32_t FinalizeShutdown(int32_t signal) { //Delete our objects here: Database::Destroy("MasterServer"); if (Game::config) delete Game::config; + Game::config = nullptr; if (Game::im) delete Game::im; + Game::im = nullptr; if (Game::server) delete Game::server; + Game::server = nullptr; if (Game::logger) delete Game::logger; + Game::logger = nullptr; if (signal != EXIT_SUCCESS) exit(signal); return signal; diff --git a/dWorldServer/WorldServer.cpp b/dWorldServer/WorldServer.cpp index 6cac52d5..31fd488c 100644 --- a/dWorldServer/WorldServer.cpp +++ b/dWorldServer/WorldServer.cpp @@ -1291,14 +1291,17 @@ void WorldShutdownProcess(uint32_t zoneId) { } void WorldShutdownSequence() { + bool shouldShutdown = Game::ShouldShutdown() || worldShutdownSequenceComplete; Game::lastSignal = -1; #ifndef DARKFLAME_PLATFORM_WIN32 - if (Game::ShouldShutdown() || worldShutdownSequenceComplete) + if (shouldShutdown) #endif { return; } + if (!Game::logger) return; + LOG("Zone (%i) instance (%i) shutting down outside of main loop!", Game::server->GetZoneID(), instanceID); WorldShutdownProcess(Game::server->GetZoneID()); FinalizeShutdown(); From a84ca1f00dd231943ffc0ab2cb47f260ead747e4 Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Tue, 2 Jan 2024 22:52:11 -0800 Subject: [PATCH 06/12] crash and log fix (#1382) --- dCommon/Logger.cpp | 2 +- dGame/dComponents/BuffComponent.cpp | 12 +++++++++--- dGame/dComponents/BuffComponent.h | 3 +++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/dCommon/Logger.cpp b/dCommon/Logger.cpp index b4181205..1888f1eb 100644 --- a/dCommon/Logger.cpp +++ b/dCommon/Logger.cpp @@ -16,7 +16,7 @@ Writer::~Writer() { } void Writer::Log(const char* time, const char* message) { - if (!m_Outfile) return; + if (!m_Outfile || !m_Enabled) return; fputs(time, m_Outfile); fputs(message, m_Outfile); diff --git a/dGame/dComponents/BuffComponent.cpp b/dGame/dComponents/BuffComponent.cpp index 32d7d1d4..1819438b 100644 --- a/dGame/dComponents/BuffComponent.cpp +++ b/dGame/dComponents/BuffComponent.cpp @@ -95,10 +95,16 @@ void BuffComponent::Update(float deltaTime) { if (buff.second.time <= 0.0f) { RemoveBuff(buff.first); - - break; } } + + if (m_BuffsToRemove.empty()) return; + + for (const auto& buff : m_BuffsToRemove) { + m_Buffs.erase(buff); + } + + m_BuffsToRemove.clear(); } const std::string& GetFxName(const std::string& buffname) { @@ -216,7 +222,7 @@ void BuffComponent::RemoveBuff(int32_t id, bool fromUnEquip, bool removeImmunity GameMessages::SendRemoveBuff(m_Parent, fromUnEquip, removeImmunity, id); - m_Buffs.erase(iter); + m_BuffsToRemove.push_back(id); RemoveBuffEffect(id); } diff --git a/dGame/dComponents/BuffComponent.h b/dGame/dComponents/BuffComponent.h index 7187f8f7..7f7b44d8 100644 --- a/dGame/dComponents/BuffComponent.h +++ b/dGame/dComponents/BuffComponent.h @@ -140,6 +140,9 @@ private: */ std::map m_Buffs; + // Buffs to remove at the end of the update frame. + std::vector m_BuffsToRemove; + /** * Parameters (=effects) for each buff */ From 9116317834ff1d9528c40f8b784671d35e9cf12b Mon Sep 17 00:00:00 2001 From: Aaron Kimbrell Date: Wed, 3 Jan 2024 02:36:17 -0600 Subject: [PATCH 07/12] fix: improve our docker config (#1373) * greatly simplify docker * back to gcc since I can't the libs to load properly * fix typo add set -e to entrypoint better copy of entrypoint.sh and use proper entrypoint * use debian instead of gcc for runtime comment and organize it a bit drop gcc to 12 since we are using debian 12 as well * explicitly include mariadb libs * Make the server not crash in the case we are using only env-vars make the dockerfile have configs in the expected location incase of bypassing entrypoint.sh * remove unneede var from example, since it's in the container now * coments to dockerfile * Revert master server changes * Resolve conflicting port options between chat, master, and world move chat_server_port to shared since it's used by world and chat * Don't error if file does not exists when updating a config option move update before and use bin dir var --- .dockerignore | 4 +- .github/workflows/build-and-push-docker.yml | 56 +++++++++ .gitmodules | 3 - CMakeLists.txt | 3 + Docker.md | 46 -------- Docker_Windows.md | 58 ---------- Dockerfile | 51 +++++++++ README.md | 37 ++++++ cmake/Utils.cmake | 4 + dAuthServer/AuthServer.cpp | 2 +- dChatServer/ChatServer.cpp | 2 +- dMasterServer/MasterServer.cpp | 2 +- docker-compose.yml | 106 ++++++------------ docker/AccountManager.Dockerfile | 14 --- docker/Dockerfile | 58 ---------- docker/brickfix.Dockerfile | 7 -- docker/credentials_example.py | 4 - docker/database.Dockerfile | 3 - docker/images/Account_Creation.png | Bin 29369 -> 0 bytes docker/images/DD_General_Settings.png | Bin 59281 -> 0 bytes docker/images/DD_Server_Startstop.png | Bin 27402 -> 0 bytes docker/images/Docker_Compose_Finished.png | Bin 41850 -> 0 bytes ...Docker_Desktop_Installer_Configuration.png | Bin 18792 -> 0 bytes docker/images/Docker_Download_Page.png | Bin 241760 -> 0 bytes docker/images/Open_Powershell.png | Bin 40513 -> 0 bytes docker/images/WSL_2_download.png | Bin 19544 -> 0 bytes docker/images/setup_finished.png | Bin 35545 -> 0 bytes docker/resources_example.py | 3 - docker/setup.Dockerfile | 12 -- docker/setup.sh | 41 ------- docker/start_server.sh | 25 ----- entrypoint.sh | 8 ++ resources/authconfig.ini | 2 +- resources/chatconfig.ini | 3 - resources/masterconfig.ini | 2 +- resources/sharedconfig.ini | 4 + resources/worldconfig.ini | 3 - thirdparty/AccountManager | 1 - 38 files changed, 204 insertions(+), 360 deletions(-) create mode 100644 .github/workflows/build-and-push-docker.yml delete mode 100644 Docker.md delete mode 100644 Docker_Windows.md create mode 100644 Dockerfile delete mode 100644 docker/AccountManager.Dockerfile delete mode 100644 docker/Dockerfile delete mode 100644 docker/brickfix.Dockerfile delete mode 100644 docker/credentials_example.py delete mode 100644 docker/database.Dockerfile delete mode 100755 docker/images/Account_Creation.png delete mode 100755 docker/images/DD_General_Settings.png delete mode 100755 docker/images/DD_Server_Startstop.png delete mode 100755 docker/images/Docker_Compose_Finished.png delete mode 100755 docker/images/Docker_Desktop_Installer_Configuration.png delete mode 100755 docker/images/Docker_Download_Page.png delete mode 100755 docker/images/Open_Powershell.png delete mode 100755 docker/images/WSL_2_download.png delete mode 100755 docker/images/setup_finished.png delete mode 100644 docker/resources_example.py delete mode 100644 docker/setup.Dockerfile delete mode 100755 docker/setup.sh delete mode 100755 docker/start_server.sh create mode 100755 entrypoint.sh delete mode 160000 thirdparty/AccountManager diff --git a/.dockerignore b/.dockerignore index 7da6456c..37ff8f51 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,8 +3,8 @@ Dockerfile *.md logo.png versions.txt -build.sh docker-compose.yml .env docker/__pycache__ -.env.example \ No newline at end of file +.env.example +build diff --git a/.github/workflows/build-and-push-docker.yml b/.github/workflows/build-and-push-docker.yml new file mode 100644 index 00000000..8f9b3720 --- /dev/null +++ b/.github/workflows/build-and-push-docker.yml @@ -0,0 +1,56 @@ +name: ci + +on: + push: + branches: + - "main" + tags: + - "v*.*.*" + pull_request: + branches: + - "main" + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + # generate Docker tags based on the following events/attributes + tags: | + type=ref,event=pr + type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.gitmodules b/.gitmodules index 700e7536..4ba6a43b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -14,9 +14,6 @@ path = thirdparty/mariadb-connector-cpp url = https://github.com/mariadb-corporation/mariadb-connector-cpp.git ignore = dirty -[submodule "thirdparty/AccountManager"] - path = thirdparty/AccountManager - url = https://github.com/DarkflameUniverse/AccountManager [submodule "thirdparty/magic_enum"] path = thirdparty/magic_enum url = https://github.com/Neargye/magic_enum.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 06fb3992..6d30a63e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -100,6 +100,9 @@ set(RESOURCE_FILES "sharedconfig.ini" "authconfig.ini" "chatconfig.ini" "worldco message(STATUS "Checking resource file integrity") include(Utils) +UpdateConfigOption(${PROJECT_BINARY_DIR}/authconfig.ini "port" "auth_server_port") +UpdateConfigOption(${PROJECT_BINARY_DIR}/chatconfig.ini "port" "chat_server_port") +UpdateConfigOption(${PROJECT_BINARY_DIR}/masterconfig.ini "port" "master_server_port") foreach(resource_file ${RESOURCE_FILES}) set(file_size 0) diff --git a/Docker.md b/Docker.md deleted file mode 100644 index b06bd0fe..00000000 --- a/Docker.md +++ /dev/null @@ -1,46 +0,0 @@ -# Run the Darkflame Server inside Docker - -## What you need - -- [Docker](https://docs.docker.com/get-docker/) (Docker Desktop or on Linux normal Docker) -- [Docker Compose](https://docs.docker.com/compose/install/) (Included in Docker Desktop) -- LEGO® Universe Client. Check the main [README](./README.md) for details on this. - -## Run server inside Docker - -1. Copy `.env.example` and save it as `.env` inside the root directory of this repository -2. Edit the `.env` file and add your path to the root directory of your LEGO® Universe Client after `CLIENT_PATH=` -3. Update other values in the `.env` file as needed (be sure to update passwords!) -4. Run `docker compose up -d --build` -5. Run `docker compose exec darkflame /app/MasterServer -a` and setup your admin account -6. Follow the directions [here](https://github.com/DarkflameUniverse/AccountManager) to setup regular user accounts. The server will be accessible at: `http://:5000` -7. Now you can see the output of the server with `docker compose logs -f --tail 100` or `docker compose logs -f --tail 100`. This can help you understand issues and there you can also see when the server finishes it's startup. -8. You're ready to connect your client! - -**NOTE #1**: If you're running an older version of Docker, you may need to use the command `docker-compose` instead of `docker compose`. - -**NOTE #2**: To stop the server simply run `docker compose down` and to restart it just run `docker compose up -d` again. No need to run all the steps above every time. - -**NOTE #3**: Docker buildkit needs to be enabled. https://docs.docker.com/develop/develop-images/build_enhancements/#to-enable-buildkit-builds - -**NOTE #4**: Make sure to run the following in the repo root directory after cloning so submodules are also downloaded. -``` -git submodule update --init --recursive -``` -**NOTE #5**: If DarkflameSetup fails due to not having cdclient.fdb, rename CDClient.fdb (in the same folder) to cdclient.fdb - -## Disable brickbuildfix - -If you don't need the http server running on port 80 do this: - -1. Create a file with the name `docker-compose.override.yml` in the root of the repository -2. Paste this content: - -```yml -services: - brickbuildfix: - profiles: - - donotstart -``` - -3. Now run `docker compose up -d` diff --git a/Docker_Windows.md b/Docker_Windows.md deleted file mode 100644 index 984bbe57..00000000 --- a/Docker_Windows.md +++ /dev/null @@ -1,58 +0,0 @@ -# Installation under Windows -## First Run -1. Navigate to the [Docker download page](https://www.docker.com/products/docker-desktop) and download docker. - - ![Docker Download Page](docker/images/Docker_Download_Page.png) - -2. Once the file has finished downloading, run it and proceed through the installation. Make sure, "Install required Windows components for WSL 2" is checked. - - ![Docker Desktop Installer Configuration](docker/images/Docker_Desktop_Installer_Configuration.png) - -3. If necessary, restart your computer. -4. After the restart, Docker Desktop will automatically open. If it does not, simply start it like any other program. -5. If a window "WSL 2 Installation is incomplete." pops up, follow the link and click "WSL2 Linux kernel update package for x64 machines". Run the downloaded file and once that finishes, click "Restart" in the Docker Desktop window. - - ![WSL 2 download](docker/images/WSL_2_download.png) - -6. Wait until Docker Desktop has started. You may skip the tutorial. -7. You may want to disable "Open Docker Dashboard at startup" in _Settings_ -> _General_ - - ![Disable Dashboard Autostart](docker/images/DD_General_Settings.png) - -8. Install [Git for Windows](https://git-scm.com/download/win). During the installation, simply confirming the defaults is sufficient. -9. In the folder you wish to save the Server, right click and select "Git Bash Here". -10. Type `git clone --recursive https://github.com/DarkflameUniverse/DarkflameServer` -11. Once the command has completed (you can see you path again and can enter commands), close the window. -12. Inside the downloaded folder, copy `.env.example` and name the copy `.env` -13. Open `.env` with Notepad by right-clicking it and selecting _Open With_ -> _More apps_ -> _Notepad_. -14. Change the text after `CLIENT_PATH=` to the location of your client. This folder must contain either a folder `client` or `legouniverse.exe`. - > If you need the extra performance, place the client files in `\\wsl$\\...` to avoid working across file systems, see [Docker Best Practices](https://docs.docker.com/desktop/windows/wsl/#best-practices) and [WSL documentation](https://docs.microsoft.com/en-us/windows/wsl/filesystems#file-storage-and-performance-across-file-systems). - -15. Optionally, you can change the number after `BUILD_THREADS=` to the number of cores / threads your processor has. If your computer crashes while building, you can try to reduce this value. -16. After `ACCOUNT_MANAGER_SECRET=` paste a "SHA 256-bit Key" from https://keygen.io/ -17. If you are not only hosting a local server, change the value after `EXTERNAL_IP=` to the external IP address of your computer. -18. Change the two values `SECRET_VALUE_CHANGE_ME` to passwords only you know. Save and close the file. -19. In the extracted folder hit Shift+Right Click and select "Open PowerShell window here". - - ![Open PowerShell](docker/images/Open_Powershell.png) - -17. In the new window, paste (with right click) or type `docker compose up -d --build` and confirm with enter. -18. Once you see the blinking cursor and the path again, setup has finished and the server is already running. - - ![setup done](docker/images/setup_finished.png) - -19. Create an admin account by pasting `docker compose exec darkflame /app/MasterServer -a` and following the prompts. - - ![admin account creation](docker/images/Account_Creation.png) - -20. You can now login with these credentials at `http://your_ip:5000` (replace your_ip with your external IP). There you can create your account for playing as well as generate keys for other people to join; use these at `http://your_ip:5000/activate` - -## Normal Use -1. In Docker Desktop you should now see an entry `darkflameserver-main` and when you click on it all containers but `DarkflameSetup` should eventually be green. That means the server is running. - - ![server running](docker/images/Docker_Compose_Finished.png) - -2. For troubleshooting, you can check the logs of the various parts by clicking their entry. -3. You can start and stop the server with the corresponding buttons. Once all containers are grey, the server has shut down, and when all containers but `DarkflameSetup` are green, the server is running. Note that starting and stopping takes some time, please be patient. - - ![start stop buttons](docker/images/DD_Server_Startstop.png) diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..c1316a60 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,51 @@ +FROM gcc:12 as build + +WORKDIR /app + +RUN set -ex; \ + apt-get update; \ + apt-get install -y cmake + +COPY . /app/ +COPY --chmod=0500 ./build.sh /app/ + +RUN sed -i 's/MARIADB_CONNECTOR_COMPILE_JOBS__=.*/MARIADB_CONNECTOR_COMPILE_JOBS__=2/' /app/CMakeVariables.txt + +RUN ./build.sh + +FROM debian:12 as runtime + +WORKDIR /app + +RUN --mount=type=cache,id=build-apt-cache,target=/var/cache/apt \ + apt update && \ + apt install -y libssl3 libcurl4 && \ + rm -rf /var/lib/apt/lists/* + +# Grab libraries and load them +COPY --from=build /app/build/mariadbcpp/src/mariadb_connector_cpp-build/libmariadbcpp.so /usr/local/lib/ +COPY --from=build /app/build/mariadbcpp/src/mariadb_connector_cpp-build/libmariadb/libmariadb/libmariadb.so.3 /usr/local/lib +RUN ldconfig + +# Server bins +COPY --from=build /app/build/*Server /app/ + +# Necessary suplimentary files +COPY --from=build /app/build/*.ini /app/configs/ +COPY --from=build /app/build/vanity/*.* /app/vanity/* +COPY --from=build /app/build/navmeshes /app/navmeshes +COPY --from=build /app/build/migrations /app/migrations +COPY --from=build /app/build/*.dcf /app/ + +# backup of config and vanity files to copy to the host incase +# of a mount clobbering the copy from above +COPY --from=build /app/build/*.ini /app/default-configs/ +COPY --from=build /app/build/vanity/*.* /app/default-vanity/* + +# needed as the container runs with the root user +# and therefore sudo doesn't exist +ENV USE_SUDO_AUTH=0 +ENV DLU_CONFIG_DIR=/app/configs/ + +COPY --chmod=0500 ./entrypoint.sh /app/ +ENTRYPOINT [ "/app/entrypoint.sh" ] diff --git a/README.md b/README.md index f647aaa5..72bacc95 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ If you would like a setup for a single player server only on a Windows machine, * [Verify your setup](#verify-your-setup) * [Running the server](#running-the-server) * [User Guide](#user-guide) +* [Docker](#docker) ## Clone the repository If you are on Windows, you will need to download and install git from [here](https://git-scm.com/download/win) @@ -347,6 +348,42 @@ certutil -hashfile SHA1 Known good *SHA1* checksum of the Darkflame Universe client: - `91498e09b83ce69f46baf9e521d48f23fe502985` (packed client, zip compressed) +# Docker + +## Standalone + +For standalone deployment, you can use the image provided via Github's Container Repository: +`ghcr.io/darkflameuniverse/darkflameserver` + +This assumes that you have a database deployed to your host or in another docker container. + +A basic deployment of this contianer would look like: +```sh +# example docker contianer deployment +docker run -it \ + -v /path/to/configs/:/app/configs \ + -v /path/to/logs/:/app/logs \ + -v /path/to/dumps/:/app/dumps \ + -v /path/to/res:/app/res:ro \ + -v /path/to/resServer:/app/resServer \ + -e DUMP_FOLDER=/app/dumps \ + -p 1001:1001/udp \ + -p 2005:2005/udp \ + -p 3000-3300:3000-3300/udp \ +ghcr.io/darkflameuniverse/darkflameserver:latest +``` +You will need to replace the `/path/to/`'s to reflect the paths on your host. + +Any config option in the `.ini`'s can be overridden with environmental variables: Ex: `log_to_console=1` from `shared_config.ini` would be overidden like `-e LOG_TO_CONSOLE=0` + +## Compose + +See the [compose](docker-compose.yml) file in the root of the repo. + +This compose file is for a full deployment: MariaDB, DarkflameServer, and Nexus Dashboard. + +All of the environmental options are listed in the compose file so the can be pass through, or you can edit the compose file to suit your specific needs + # Development Documentation This is a Work in Progress, but below are some quick links to documentaion for systems and structs in the server [Networked message structs](https://lcdruniverse.org/lu_packets/lu_packets/index.html) diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake index c0c67ef0..3c58241d 100644 --- a/cmake/Utils.cmake +++ b/cmake/Utils.cmake @@ -7,6 +7,10 @@ function(UpdateConfigOption file_name old_option_name new_option_name) string(APPEND old_option_name "=") string(APPEND new_option_name "=") message(STATUS "Checking " ${file_name} " for " ${old_option_name} " and adding " ${new_option_name} " if it does not exist") + if(NOT EXISTS ${file_name}) + message(STATUS ${file_name} " does not exist. Doing nothing") + return() + endif() file(READ ${file_name} current_file_contents) string(REPLACE "\\\n" "" current_file_contents ${current_file_contents}) string(REPLACE "\n" ";" current_file_contents ${current_file_contents}) diff --git a/dAuthServer/AuthServer.cpp b/dAuthServer/AuthServer.cpp index 857a27b3..974ee27e 100644 --- a/dAuthServer/AuthServer.cpp +++ b/dAuthServer/AuthServer.cpp @@ -86,7 +86,7 @@ int main(int argc, char** argv) { uint32_t maxClients = 50; uint32_t ourPort = 1001; //LU client is hardcoded to use this for auth port, so I'm making it the default. if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients")); - if (Game::config->GetValue("port") != "") ourPort = std::atoi(Game::config->GetValue("port").c_str()); + if (Game::config->GetValue("auth_server_port") != "") ourPort = std::atoi(Game::config->GetValue("auth_server_port").c_str()); Game::server = new dServer(Game::config->GetValue("external_ip"), ourPort, 0, maxClients, false, true, Game::logger, masterIP, masterPort, ServerType::Auth, Game::config, &Game::lastSignal); diff --git a/dChatServer/ChatServer.cpp b/dChatServer/ChatServer.cpp index 3edb9d9e..1642ff9c 100644 --- a/dChatServer/ChatServer.cpp +++ b/dChatServer/ChatServer.cpp @@ -102,7 +102,7 @@ int main(int argc, char** argv) { uint32_t maxClients = 50; uint32_t ourPort = 1501; if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients")); - if (Game::config->GetValue("port") != "") ourPort = std::atoi(Game::config->GetValue("port").c_str()); + if (Game::config->GetValue("chat_server_port") != "") ourPort = std::atoi(Game::config->GetValue("chat_server_port").c_str()); Game::server = new dServer(Game::config->GetValue("external_ip"), ourPort, 0, maxClients, false, true, Game::logger, masterIP, masterPort, ServerType::Chat, Game::config, &Game::lastSignal); diff --git a/dMasterServer/MasterServer.cpp b/dMasterServer/MasterServer.cpp index a66bcfc2..3b829c48 100644 --- a/dMasterServer/MasterServer.cpp +++ b/dMasterServer/MasterServer.cpp @@ -285,7 +285,7 @@ int main(int argc, char** argv) { uint32_t maxClients = 999; uint32_t ourPort = 1000; if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients")); - if (Game::config->GetValue("port") != "") ourPort = std::stoi(Game::config->GetValue("port")); + if (Game::config->GetValue("master_server_port") != "") ourPort = std::stoi(Game::config->GetValue("master_server_port")); Game::server = new dServer(Game::config->GetValue("external_ip"), ourPort, 0, maxClients, true, false, Game::logger, "", 0, ServerType::Master, Game::config, &Game::lastSignal); diff --git a/docker-compose.yml b/docker-compose.yml index d8c3c40a..3f79784c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,104 +1,66 @@ version: "3" services: - setup: - container_name: DarkflameSetup - build: - context: . - dockerfile: ./docker/setup.Dockerfile - environment: - - DATABASE=${MARIADB_DATABASE:-darkflame} - - DATABASE_HOST=database - - DATABASE_USER=${MARIADB_USER:-darkflame} - - DATABASE_PASSWORD=${MARIADB_PASSWORD:-darkflame} - - EXTERNAL_IP=${EXTERNAL_IP:-darkflame} - - BUILD_VERSION=${BUILD_VERSION:?171022} - volumes: - - ${CLIENT_PATH:?missing_client_path}:/client - - shared_configs:/docker/ - - database: - container_name: DarkflameDatabase - build: - context: . - dockerfile: ./docker/database.Dockerfile + darkflamedb: + image: mariadb:latest environment: - MARIADB_USER=${MARIADB_USER:-darkflame} - MARIADB_PASSWORD=${MARIADB_PASSWORD:-darkflame} - MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-darkflame} - MARIADB_DATABASE=${MARIADB_DATABASE:-darkflame} - volumes: - - database:/var/lib/mysql networks: - darkflame - # You can expose these so that DB management tools can connect (WARNING: INSECURE) - # ports: - # - 3306:3306 - darkflame: - container_name: DarkflameServer + darkfameserver: networks: - darkflame - build: - context: . - dockerfile: ./docker/Dockerfile - args: - - BUILD_THREADS=${BUILD_THREADS:-1} - - BUILD_VERSION=${BUILD_VERSION:-171022} + image: ghcr.io/darkflameuniverse/darkflameserver:latest volumes: - - ${CLIENT_PATH:?missing_client_path}:/client:ro - - shared_configs:/shared_configs:ro + - $HOST_CONFIG_DIR:/app/configs/ + - $HOST_CLIENT_LOCATION:$CLIENT_LOCATION:ro + - $HOST_RESSERVER_LOCATION:/app/resServer/ + - $HOST_DUMP_FOLDER:$DUMP_FOLDER + - $HOST_LOGS_DIR:/app/logs/ + environment: + - DLU_CONFIG_DIR=/app/configs + - MYSQL_HOST=darkflamedb + - MYSQL_DATABASE=${MARIADB_DATABASE:-darkflame} + - MYSQL_USERNAME=${MARIADB_USER:-darkflame} + - MYSQL_PASSWORD=${MARIADB_PASSWORD:-darkflame} + - EXTERNAL_IP=${EXTERNAL_IP:-localhost} + - DUMP_FOLDER=$DUMP_FOLDER + - CLIENT_LOCATION=$CLIENT_LOCATION depends_on: - - database + - darkflamedb ports: - "1001:1001/udp" - - "2000:2000/udp" - "2005:2005/udp" - "3000-3300:3000-3300/udp" - brickbuildfix: - container_name: DarkflameBrickBuildFix + darkflameweb: networks: - darkflame - build: - context: . - dockerfile: ./docker/brickfix.Dockerfile - ports: - - 80:80 - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:80"] - interval: 2m - timeout: 3s - retries: 3 - start_period: 40s - - account-manager: - container_name: DarkflameAccountManager - networks: - - darkflame - build: - context: . - dockerfile: ./docker/AccountManager.Dockerfile + image: ghcr.io/darkflameuniverse/nexusdashboard:latest + volumes: + - $HOST_CLIENT_LOCATION:/app/luclient:ro + - $HOST_CACHE_LOCATION:/app/cache + - $HOST_CD_SQLITE_LOCATION:/app/cdclient:ro environment: - - DATABASE=${MARIADB_DATABASE:-darkflame} - - DATABASE_HOST=database - - DATABASE_USER=${MARIADB_USER:-darkflame} - - DATABASE_PASSWORD=${MARIADB_PASSWORD:-darkflame} - - ACCOUNT_SECRET=${ACCOUNT_MANAGER_SECRET:?missing_account_secret} + - APP_SECRET_KEY=$APP_SECRET_KEY + - APP_DATABASE_URI=mysql+pymysql://${MARIADB_USER:-darkflame}:${MARIADB_PASSWORD:-darkflame}@darkflamedb:3306/${MARIADB_DATABASE:-darkflame} + - CLIENT_LOCATION=/app/luclient + - CACHE_LOCATION=/app/cache + - CD_SQLITE_LOCATION=/app/cdclient + depends_on: + - darkflamedb ports: - - 5000:5000 + - 8000:8000 healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:5000"] + test: ["CMD", "curl", "-f", "http://localhost:8000"] interval: 2m timeout: 3s retries: 3 start_period: 40s - depends_on: - - database networks: darkflame: - -volumes: - database: - shared_configs: diff --git a/docker/AccountManager.Dockerfile b/docker/AccountManager.Dockerfile deleted file mode 100644 index 60226339..00000000 --- a/docker/AccountManager.Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -# syntax=docker/dockerfile:1 -FROM python:3.10-alpine3.14 - -WORKDIR /usr/local/share/AccountManager - -COPY ./thirdparty/AccountManager . - -ADD docker/credentials_example.py credentials.py -ADD docker/resources_example.py resources.py - -RUN apk add curl libffi-dev build-base --no-cache && pip3 install -r requirements.txt - -EXPOSE 5000 -CMD python3 app.py diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index fd211291..00000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,58 +0,0 @@ -FROM gcc:12 as build - -WORKDIR /build - -RUN --mount=type=cache,id=build-apt-cache,target=/var/cache/apt \ - echo "Install build dependencies" && \ - apt update && \ - apt remove -y libmysqlcppconn7v5 libmysqlcppconn-dev && \ - apt install cmake zlib1g zlib1g-dev -yqq --no-install-recommends && \ - rm -rf /var/lib/apt/lists/* - -COPY dAuthServer/ /build/dAuthServer -COPY dChatServer/ /build/dChatServer -COPY dCommon/ /build/dCommon -COPY dChatFilter/ /build/dChatFilter -COPY dDatabase/ /build/dDatabase -COPY dGame/ /build/dGame -COPY dMasterServer/ /build/dMasterServer -COPY dNet/ /build/dNet -COPY dPhysics/ /build/dPhysics -COPY dScripts/ /build/dScripts -COPY dWorldServer/ /build/dWorldServer -COPY dZoneManager/ /build/dZoneManager -COPY dNavigation/ /build/dNavigation -COPY migrations/ /build/migrations -COPY resources/ /build/resources -COPY thirdparty/ /build/thirdparty -COPY vanity /build/vanity -COPY tests/ /build/tests -COPY .clang-* CMake* LICENSE /build/ - -ARG BUILD_THREADS=1 -ARG BUILD_VERSION=171022 - -RUN echo "Build server" -RUN sed -i -e "s/MARIADB_CONNECTOR_COMPILE_JOBS=.*/MARIADB_CONNECTOR_COMPILE_JOBS=${BUILD_THREADS}/g" CMakeVariables.txt -RUN mkdir -p cmake_build -RUN cd cmake_build && \ - cmake .. -DCMAKE_BUILD_RPATH_USE_ORIGIN=TRUE && \ - make -j$BUILD_THREADS - -FROM gcc:12 as runtime - -RUN --mount=type=cache,id=runtime-apt-cache,target=/var/cache/apt \ - apt update && \ - apt install sudo -yqq --no-install-recommends && \ - apt remove -y libmysqlcppconn7v5 libmysqlcppconn-dev && \ - rm -rf /var/lib/apt/lists/* - -WORKDIR /app - -COPY --from=build /build/cmake_build /app - -RUN mkdir -p /build/cmake_build && ln -s /app/_deps /build/cmake_build/_deps - -COPY docker/start_server.sh /start_server.sh - -CMD [ "/start_server.sh" ] diff --git a/docker/brickfix.Dockerfile b/docker/brickfix.Dockerfile deleted file mode 100644 index 3323cd65..00000000 --- a/docker/brickfix.Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -# syntax=docker/dockerfile:1 -FROM python:3.9.9-slim -RUN apt-get update && \ - apt-get install curl -y -WORKDIR /empty_dir -EXPOSE 80 -CMD python -m http.server 80 diff --git a/docker/credentials_example.py b/docker/credentials_example.py deleted file mode 100644 index 2112fbed..00000000 --- a/docker/credentials_example.py +++ /dev/null @@ -1,4 +0,0 @@ -import os - -DB_URL = f'mysql+pymysql://{os.environ["DATABASE_USER"]}:{os.environ["DATABASE_PASSWORD"]}@{os.environ["DATABASE_HOST"]}/{os.environ["DATABASE"]}' -SECRET_KEY = os.environ["ACCOUNT_SECRET"] diff --git a/docker/database.Dockerfile b/docker/database.Dockerfile deleted file mode 100644 index 68261e44..00000000 --- a/docker/database.Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM mariadb:10.6 - -COPY ./migrations/dlu /docker-entrypoint-initdb.d \ No newline at end of file diff --git a/docker/images/Account_Creation.png b/docker/images/Account_Creation.png deleted file mode 100755 index 1b8135dd738ae36dc872f0331a9132529959e6cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29369 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 Ll4Ruz<9GiH9zlBp diff --git a/docker/images/DD_General_Settings.png b/docker/images/DD_General_Settings.png deleted file mode 100755 index d0e694aab2e00551a8e38bda645522f0f925b97b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59281 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 diff --git a/docker/images/DD_Server_Startstop.png b/docker/images/DD_Server_Startstop.png deleted file mode 100755 index 8f482bb7a4937e1d210648fbea9a05cf7fec86af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27402 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 B0yO{t diff --git a/docker/images/Docker_Compose_Finished.png b/docker/images/Docker_Compose_Finished.png deleted file mode 100755 index 549915ee93f7693f7cbabf4902be3307eea071d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41850 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%0Ae=cqmOu;afb{+V) zm}W##oBsaaU6nyM6~^CdWGz zKiK*l)p@(vKF1S;zUey}Dcw&OLOAq@_(QaTl&+{_t|#_jw%s{YoI_s?I!do@_a4E+L&7dU6j659K?q=l+SJECI5YNt8N zAKy2WCs0yqW@n~<-DA%6P95WiI6BxXAFxHLo#<84$;D~FrTfd)dvmR;T?pO=%?QoK z5ja>O7{0_to=ZFLX#-Z1e+^0(8s3?*^A_2;KV6k_dh>H)GaE6yIsVM6xOdwy(+71B zdiJ$-Pvhqd%ocXfa)c8R!b*C&<{UNf_)D{4J`Nh1{D;0+e)(ca)!y-Cif6M6m+z7d zD_bs>q-Qj7?SMXr)jqLioYuM3bOSg?EFjPOmNSKZF?-h4g=8U`Ys9`DEI`ZZSKnE(P>hd=>T0QA7bYR~?Wkz$; zo!M&_PO&GjG?!-rg9fAIvXuf~*Y&Sk)~b;0Z_95#HNuK^Q-JmFeaja1F}z6vk~E*B z3s6UMOlM9=l4)-V`l7BnT>T;je;4WDX*E=)=u~{Y!!&%t*2q(Kjcb^$N$tv(=C?vHdH-Ir-)Zn|9Y*AqC;QiwXLl+@aAlJllx3^)g34_&bS8RLAQyL@iNXPq zc-j*dvny8|b8ok{x$bEE7`PATEdDr9$zP=osOPJ&yB;`nrr<}z0n1#Qgj?_7m~U(R zO6Pu4@$2P~FpdEz6;s@BUmx@qM1IL!nYXrr^~&47%G>o9zf$`}>Br==QMiRgm(Mrp zipKL;mrDW?)SaW`XJ0P>Zdi?pF)HJvhtpeP#8&qX6HM}TNL`e-t*TnRtm6ki!jTe}MQ;$!03AJ{fX~+m!_Nf!Zbji1 zsXq=&%eXfB(cG2>c?6*hYSDdm-G^v`h*35{2L~tCcLLN&u|ar8Jxh_RD=nuV6vup< zp{7W~>$~~r$AWo0St)ANC&%_{x@sYf>t$H!J|1@jt{)t4KDBw(Hf_IJ6SN6K6gY8% zNI3_D{0@9`)-8&9Qoe>(3USQwiU92d#q#Od;2CyT3FDPE=KPpmyOM9#-BMK4NLZ@- zUA1j#8 zM5J^|=4AKXxpG>^CWey8%b4|!89xK48TXHb8S(5Vv&&81z3)5Ym%J6KKs3B0R891V zo~3e+0}D4j0uKhyVmGHK@FMr&{_uwA4~EW6u!|U3`L@dLpvrDh%#T8_v6+u3hsaMV z4m)*BU)%17?paP-!Ov2}m?+cN+KijJEvZuphD4uWAzt>`Pu6P$N)u%nz*?Wi5K*Lz2$K%h?4_wDM+PurBKTDILiRgyp!_x+N~ zNWH@fWWI)clMDOmYwah=&*G8V5FMDE=Z6QvX;clM2z^bdZRSm@{C$x*%jPs>O_sriq&6DDZa~yrJB=tl!k+c-^KeS;wTIRcZ)6)<+rFCHO4cox?R!gNMUsOEqNBu#6Os3ofG40U zilK$q2vAyRythGzd06&JrKjx5fe1&7_B5-5Q@Rz`@oJMf$Bo$0U1wkXYU?@sR~|4` zJ*{i7sF)XS;Q=eDw{G8FOGVL~`BuFtLt310uXS6igv(ccrDjhAg$ay(q~mDF1DPzC zH)wUfwb!JpmV7bTkwwVSf-Ds^_4qbiRL1>nR?$rwNsR}swnaKfG1Wla#Bj;L#JieB z&6QObX+nhdEf|)_>KT(SYKw;H@Dsv=LYfMZ<*YoN?_cHl8=JV-;?%2l?0V!Wwg_$&ooyD z6sVhLwND%d$ot30qi)Q1Wv;wRy*6Y`CDXU2_|Jr#DNn@HDER zJLd!fr@oJPQ|}a63E9GscA}>W-gVS<-+BhihR#~dOW5WTxOL9jkayw5pn(E*`cu=5 z{XF{_y`}UpZ2;N%{ z)lq=k=}+onJ_39h*2ODaVSo(cLE4+GBN{nr=O44zEo90;j8*OiGj_Z!m*Y;0)1)3O zxQIF229SXwZ=chmFfZ(=20Fq>>Mt+ z!W-wHLJ}J{icw6HZ-Y>^wtMP)g9)ml32ZOUyc$~9yUR1Zu4aha`s6COjm~M5>+pC* zJ#EsK5Bri>;g*fi0yc7fxI0YQ-6KCfZn?%sCmcFM^D2U#9lp2NB|0X&_(ZDG#*$LB zuG4oOvuYZU=i=Ny_-@vH+QohaK~8Nxnaryh=gm7`wg9lQQbTUQtx<<}?*za_mTFdh z`if?I#lN3~XipGkWxK~C*bA9Bd!6>2<3LA#<{|wL;_G{RfZMt(LO($dea*1bhRrGn0Ye|M>6Z7!D-7W6m~Yb?1ve#zaZ5pP872I%k; zdY%XM*tVs%xamwgQhwbiH70puQx@r+Hd#dRZDz^JE~g@`BwHW$%X{2hVsv+3bVQ+I zbz4&m1UEkN%xif+=+8f(LJc52ROu}NL|Q`c5Snxdp@$wA{LRdo zH}Ads2V||Rb-(xCbI#tM?HO$(TSV&Z4znK(t4Kc&%9uK-4Rp^wjX&+4S*zD029?UJ z*^I{S{C3?ZOULy#Pye|rFYz}T8E?k7bv8bB1 z*5Ac#T^aTCGOOJ+4JT$;*T&%VgYwnvfw%~cujbitP7u#ttAp7DdFDY*G! zoKv7@uXZU>YMf*_CG&D_;vAdu`McfO(YE{=lmCB}JXQ3%$IrfBUZ%5-j2?8~~?9QN-K*HAJ1B_{VI!C#AoTQq=mqw|#2V z%gGW=DQjy!hxyl1Q)h$h8a0;>dt5?sMIpa<;uTKWg^uUGRhcSQN1aQ9I(QZrK5a;N zr(k_>1CRDLXS7QNqOmMw&93MUvC5%=tx;m#*4aa>Q$$h(7Y2k(}ttCiaEUeVT$zYPmN{kT< zMM+@f@p^5V`hk8Y6UN3&xPq#dTw<=aPawN6;a$%@|V_05ag zfrASflmdkC*OzG=i6rqS2pQZSZ#osPK?VJi>!7?c2nr_Fcy7xi^A4%lxs5yUlygL5Dza2f$NqQ$UbD0@p zrahuz`Q->zW%5h%M8N!ZIlF%QU8d@5B9|>dVnEp15p3;`sU@{}pi6cOq#!(KB?UfC zqB-Kf8rer{t{m0>qU=-46}2Mu?`db2Lcq;gKX<+rm);OLgwMk-+o+7MJVc4NA8wxZ z5ZaD0MUPwtbp zJmwGQ0p66E`jb&xiuK(c{YXjYxukIFOPIm@z5_?3Vx;@+c%X-*0@4KwsODarC0TZV zUBN;>m02mH4k3bjM)n$L2foQY83L(gM>R)KA=w)$C;`wg6;#>gsof3pydjM60?* zB;p#!F7It9)!|FH5(jH-z6*2^?lsA%B~;kWI!vD8ABCUjY9**anTK@2$`hY@_ufrR zRS&%BxGQZIT**zMpsTzZ$0e|GOxBE;V`pZU|M*oCa1*L|^M)E+E{I|FzW!bQOIfjHe$@)l4eY+Es_iZp-)`})PS_Z)ZVNBaS9OhhSb%ug zBPx3E>*rG!-eRrcj+A$!A{yl=H7Bo~v+~pvw{|l7>t&0P?j1$5{#nW;Ez5=GBnczJ zyd_U9?XG@d&T!Il6uo!1Tq9@0Us$=h`4!LD>65^}f_qGV`HbjhzLOvhTF*oy{vK3m z3+Jr97;$`m_o{CqhZ3Bh?8&-$(Q|!M!my4Qc{NPq`EM5Rl;-jgJb3B`)5jk$(JhtL zs&VCw%>XtF&v?SF&ayGZFE6&7uGkaUOuLRCutTeN)p}{+F*>hrtn8{9zE= z(z5(!fMLOsf$XYnRjXms5s2jWyuoGLX8NvVr5R7EPQ}G!S_JJz|12HtlJ=bBh^nC< zb5<)m)tzP48lV@~6E;Y$y+$c{SoRx!l9{-@-Jx@hX8Rk|qRpng80+qNHET;zZCcvb zolk`81y135RB^eKIB}+X6Xz34Hb!;VX>Y*Qttua0$d*4Ci!S(f1m#@F(O}w2iu-qK03MsB8u-1mmH1AjnrH!i2_FFg0CVhP( zO}}is-&sF@K7IVf4=L22-t&IZhM9*iK|u^MTh7lpP*SjXxlom%go9UT2Jy}vVH>pUq*+1wn=<0`ez-Xynm&&$s%Ze5Hy zrv>no_)p*}QVbQ-$5i}Cv5TM|QmE!)nCZ~pj4^h8HtsetF98s}9P@qWaSUk+nk-p! z`l^)MvaFL~Q+qni#TIKJ_ld~G*KT1s7{Beyyb>Tx=^q4Te!q?TWXeDH#}7%&z?vn6 z%D)#nxz3dFX0v(jA0q1C(5&6TprEKy!VihJYFY%8%ic}u^zk9BYn(ujx8Jp z_G`sul!es+WB8XLD7YGvXI?L+cMw1|yV5wrmmWF2slj?an$YbPYq-G3@FT|f9vEXV zGK_idK}Cgt2P`eywk5=6lXd83!1KW?Wqf=h`9fDmHRUb~*babG8uCt;+D>Vbc8T@5 z47hx*GuVaV&R~=dAt#u8iHvN!2t12PNLXe~>@TQITi7h?Lv3K~*JG|EkUnWsiIlicqE@k~}Sh+^Z=6LVq?jB07{zH<+#EWcbK>B04D01;cHH4hIhc zrJ2Tix_78aQ%~?GqV&Or8n1|aC?mY=I_S@>P5$oPRvv5_n5M#@KJ@aeY zRnK5w`0^dTpZ)wk(QJ^v7n=hxz`F zwKz)e>~#Y7?mIe(dzYY&vTsczP&2PcoPWw9PD zlB^!KI`9{5w<8z%&|G4C6=l^5PiVGk)bz($Hs1miQ=KB`O`|URur`#hSknBVA{V9= z3|Pl;h3r$*xJPqS7_|^{M1+wV{rH?P@i5}qaV~_<;+~kc6q%2#*!4@i5nbwP@Rz8D z(ieS9@t|Nq$ru08Y?jAop8>spPcG~2u1}9D470W1I4HAKk9dt8-~aS@2CBI;&k_H1`r|1>P=_PPI9 z^~3)D*|1|R)`4NWD~;E$WfdUxl@jb{TMt!(B+1=NuV)s97n34=Reg=*6oKmtG=GjM zy#rd|?tpw3Etd0Pk=e(xp1BgG()|ZL2H{>PayKr3jX& zrNV-NUKXd()B#e9UeyYIL4ZbNT8e>4%p5e%gJhUu#Azt}J-VwgIHfDV5G+4L0wOT` zKfEMeKCC zUT+#NtwPH=M!_KI%4aSn5BmIhSTM1S!nw+R{+Ln817M?o7N)=L5}E!fSz7ZXV=UjM zCGDZ}o6c4LK9w;pmJHo{vW(NdOM!Yqg3{Wfsb5&`t-e)HCZBfKwX#h4({OiZD_pf8 zIX28m4iakS7?jVGW$>Lkd-Y+<u~IN;%Afk(-}!lR zGZ&){b$BEC2USm<$dah)av-F9;CgpVlg4?@xH{d6kYq^b?^%(08qXTL%(tO#>9moErOiL zWv&tiUi|>-ChX70)jQPL1b&~XN%pnU;=V}Lp-^mykI(~S5FRg-*k-5FiZHq1U$VsI z1eq22mTb_Jg~!o?wSHz4uD<-#`+Ez|bVr%~3c+=Bahc(!+m7|yr#&XH`s29@8kv0` zW-kW|!@1DK`D&yM5<_Fqw(@Vq5PKwVevmc9WG&<11t!~OS!r_-J75@n8xZu9J_Lvvcx2V z(*IPYH|}0VYS$66X&cf;GRu~~G%5I1`q!rJxeFPcbPC8l(tn(ivdEV^(tYPw} zj#N_3tDjTHEm4{=#L+ux5aO9}gULp`_!Z)*Klf+h#ZX-CYQ{G=HWafFs-z|Y#3pu$ z+x|@s36LWqs0VxQ(Rwd@p}iGtxpS&t$x7IV83bz6m4sWuoA1hkiCufn7gYTg@(;u0 z`jqx@Wu2c@D2G=x-G81Y?DqO^rxG%Q?3DmhM6R^OK{fnStb9g(p5FcpS3g!Z>GZ2| zJGbgY%^Kr$Kx%O`aU%6+&0oF!UpGewpMIK4)^vLqj>BDi>7XBCyGgg-WhTK5I$;{7}82R}%P3-*FQ@1(IM{h(ppYnasq{>8)Sb&n&10j;b z>!(W@f=q(4=|{^W0K&=CQj=9G&w0KchvpPT_(#`fej`dRf;(z`6o>8(<(Jl@^ft&# z(GP8^?~;r8M0R%g2-gyXeCV;ei!e_t?OgQW5awl8UFLgYS;AOf{oe32hyc&Rd69NA zyhyAnu1uq;r+mxI$(b-J`+0F;!62Oq%6#y);BaF(_OR&WL@>qVUNdX}1K1WXu>`i& z2Ax}OM0~4m1Fo~?cb?H=WSkAJUCOAQp)sEa#7{rr4+pjp#cb?$6ka_ZhqtNbJBs=z zl5omz{~+nDgD;&1p&K&K(`6XlTr^uxWcw9N8|tGA)B_E3iw|hLXT$t&sHc0~xRRDD z?pwB{v9Mf0ETR|EuACpH$i8|TDqZadpQY3@+Q_#>6<&*KBtdvS>Cb)dmiRUZ)@H9K zkGha0pKnc=;$GZR(dyA`RkW<#`6bX_m}|zlliSm-mYwqBTx1 zu!bF@YR)U(8gpRUHGNMh86Q6>nxd!uO`6J`>kexdI^u>#`pZIPAN#DKaPF~^&pv&+ zm{WW4zB5V2Mov4u64F_teQA#I@Kn20sL;6#6K^$o0srA{n_P6w3&@BJlR_tCx}Puxks#-Y=x8X5zvWYBpU` z_dMQW_m1b&Z1wB|q-16R%(6f7SFtA$u{nd2cX?c(VA!qNlZ#!q8KZakoV&f zR}ne95s8>a;l#+($Y_5qE8HGUrOT*zQo`+s+ep5@ACypFhtVv7Q-cGm!&OSJGfNt# zweQ*;WU$1}a>R+R1xycr_MCFAV6HLR+>p68+@H?#n=P{6@a#qSOdnJ}BsFMvo~D`+ zwGlu!(hvZRag3O$1r`M^2vnOF#WL*nEZ+@0vwHj>BlhF)h#v-i?t9>ZzhtK7m?G9c zJu8x?X1~faug+6lv#vZBb4?CeIdN@j9y_3LnXVU+Gr&DPDSK$1ee{>CZuv;0ZZXz# zjrkb)^|J=+uF4q~HB;Z4vnd><`y!NHORAbwZewBkr8J#vU)jg?lErebWIFAXz_I|8259OwOaKo9|Xl z@)UaZzUO|`+H-P2p+Hug)>)=Mn7r8Clb&fPTqu76!N5c$!1T0pHJMCUPPp-kukJG2Z<= z`CTG_yPj(8bYAq>%9rE(VlKi1A)vkO?=d$H_V{Hg&+i(2N6V0*@h|+B%bTqT2Rqqs zR~&)Qy8378lD+QxSKO3ii^yjxW21Msli-W5OUsf9PJ$&%u@=Vzk-2?K4?;ixg zO{1e1etoaec+P;e8Jeba-=}Ka4VA40Le_A`@c|F=1blBZ{+2DfQh|P_0?RZpynLnn zYhE#l`Oso*v<+DL$iWgWD!}xKpq^V~c-Rb7(TA@0hueh)q5i&D5$|$kkr7rv${3Yy zMdgzPI5v^Xy?*&N79ANja)*g$k<*BFvL&*O2C=)Bx8g(^z9MVv-l$=ss`6+=BAquM zq~(#2zt81@i?McSJU}O8mQ=|K$!ox?QiyQ$*jEm{Eu>)TEA!;fRC z*`+P+>XdojX}xPi;ho2m2_pQ4`$0d~?Ui#d7J#@&e!$^~!o~S5GPd}lq|az;(q^4V z?;xG`9IrR{E#0##L@eABqAKu19nP8FxukHW`@NnI4=PsXq89twkNiEXdIO)JsSoP zO8qA0LrG~9hG8pSC_0u<{8Peao9;aBp-GLCR>fIM@r?Z2 z%{|wivGO0-w>}PjG?}w>cBznqQH7s!s9!mfmF(s99F3vX9Xy=tnVH|>ujNgnjE_tW zhP&lOk@YuL$xYMybN!B-)Sr9#_u3oMBVei<9qZ!ij9e-#13}RTY#QY*2`}=n6rzh> z<%ZC8^m`w!os^iI#BK_QT#z3O-he2l+dw}bA~T+aWST|60+O4_LwbQC{e%QRH7TSk z!-(aKqdq((x``)IFn^U}5j>+3ViY=1;kvlQ+=>t!ikxtWC^qA{RdlnE{V>{0R=)CF zL|~cA9bcun5m(it3{E=Lm$K)JC{daKe`V(=MH|2YzK zNl~T*X`_xFI9weL94OFB5fH)N~_kO{L?i zW2Li89zwrs#D1k5UvrPM`ns?DBdE~2`#q^0!{>OwOO<(TFf=TvPt=jCACDd+`MvZt z0rJ9#G*#=7acF9NGNp6NM0Qxw%3-$@w22%9262}^m9-=|Bk_X{&3|KHDTc(Oy&8)P zb<#$`x_9h@ql2QWA%*7%KZn@s;VqQvk{8$(96_mQ|^iQ1fP_LS9h5Hu&yZL>}DhskZ%23_vAWpk=U4@TuGyIsD;bL)KbR!YL`}GPoZDHgrj}E*wth=@;={ zcgUqP2@)-?2`}a+l!mqI!ldV_6ry~JDj06TU^E!-_|s+Pc9FDnj~8XylM)r8x<8V+ zanH%v3?hmFldmdV_br6P`pJOWV_!x9E&~caV!;t3B@#cup90T5&`3M*%*ktiJsS!l zO!#DVPP%Xa;?_sND<<)<)7!DDO;0P_aq6U%44bq;>o&1aV!aIyqFUYppWzs+o6#v* zjbDnSIPu#+zP&plhvH2XG7r(Ioe8g;Ba*H*@6k+I_+1xDJ7v%c@B*G5;vzIzB&Gn* zlLD_a>2xs8gHlV1!r&#Vi3)-9EG@TJV<>^?BL^XI9xkhQ)>px;Pjcmi)m$ge&S`Z^+c9wnSgs^1{>dWh|K3#O%mYPf5xfNP8CTboFPZA1bwDLUrnmc;^9{K{{z)CJEYoY0;H4I(7*9{EeQDCe!qXaUd6NiV@ zujxQ5)NUDve&CLAgr=&Q@Vw(&)I@roEk9(nO}JJOKdPW-kWBtM-TTfT=CZJ)p#7LC zatW?y4p7YLM(m+_v?=7y$k1A>qpaP%e5E zt%euM2K|Wv0o4oAww8esrgV~&SUDoaiDPh?hnl^;V_;qZ6Wkt|;>+WiMNUAmhF~uDx2|`K)e!PIoNstYy8bMA^7T)zOyFz! z>jXJSG~R=?D5V!QVvGUmD01sKukwDs!;-Dr0v}YxKv&f!EB9x|jq#k4q3qH0vQ-X} zR!K3-br=5O?tmOxpd?}?A6s~#S_X1xBTgRm11i4EtQAC^SJOz@6Mg)sknE#ZKHip_4xn%DV&U2y= zLiMeYJo5DQQj;pWxET{Ad#D9Wpe&_>ybT=u4EJiaNJJ!C_T=2G}H>_@YBS z70e!Uh}lzTWq38VI3myLZV2hFP`6=>jYWQV&vR?j**+O$kXc)_l)5b5>N3h{ruB6K z|1STBk9~&7^&a2kj9ORbij%(bw&Yiy>AafhvAU2h?Mo<;nlG=|@)P@|AEjoV)bNH6 zb0T!}d2aY6)Q7aWZ{N4FvZ8#Yll{QyXlrI7u0k7cyj!4O0(2ZfgxhJRSoMxuzTH5P zdnF&=syIXh8sqi$Xz+igsE(aBo~JeY$j){>jn>QXy@i!OW!OqHpV5=7R}y^aW2asW z7iU?vm-!CnZyw)=c_;N#-DaKa5j7iLr1r1jXRRLb>)s-BEuL9d$flr@L}jjOG3wZ! zCYND%7wM(mK^@;em!7ciVqhit*T(pVw|lzuvyoYx$0v5I%~Pvj7$swWh3NxI_FZsq z|IPu=#mb8uTrg=|9N&PIkzZOr8CEV<-i;CszNRWVG7avcnWzmgP`Y>*TLHYms~{gu zuDl58H=(Lir8lyd^Tb*)UW05H-YvXjc&90lDj+(x%<2AAHU#{J)PD$L5SpwNqCcJw z;%+f9%;$>13FMP==6X^__95k7(~AF`66(fax?jGn-#axNs&FAd-+&nyG_1^~o|4!OyRHjv4PkD>GV_cGn1@UE zMk?5PdV1JO<0|C9XR4|Cs*Lk`E3Bunp}})-J<|5F|g?xxs1J+s|PNu7pkUpk|XA z8h{M(4$AU~+ItnIpo@vq$tCcrlv=QNk2*a;y#)U$?00IK62B|snDIsX!?a9Q#hz}C*z>UFf!V1WVk`QcyZst2+(jWA;IN_zC^40bWUaQlh%DTndy zu;UEd-w8Al;^m%3?A_F+J0Vj% z6h`u#5`R7Rd$L1+E1z!8H$pFZbF-lOrs`MkQjVc;PiJddp%+h<)26(q z*`n2}J^GkLmZu=k)2op)Dc?VOLp*stlf01NHAEq%MR}j=Sw5_LT+YZf(S#l$m#jsb zWR+L^AQ==L2Zo(=J;aOer8a|xPn(&u-{ZaVnwZ@pu~iRZTyn6SBuZ`0^63Nn&s$$n z-7A7FjCx`{W*^o3B&*;PbV;Zh`AhDaD`H}okkygw@)&16R1x5r3N{(9*c@s!rE~U_ zen%9rW;u?>Kdu}l(KLv5%>?N)-XF*65hGz(*`iZ03y#W5T3^8+pZqU@b5HN0$Pc~O zeJD(&2cm?4{lJqWOsDAl=ouD}7}1}2o&M)fEY_Yczy zPxiPdOehf;Oh)gRuY>!G6|2yY17haD+DdcW3WsMH7yeZP8j4yIMdMvfnRq9A5 z3oWW&j(Ff*WYH1>l~uX4p=LPBw_5Bee0Mp)uX3_W$vIvch7e@2+GlagUMZY;ldl*U z0Nmp~h{8s|W|LaYuB@(Ci}m{dKJ8R2jSuZV^>(M{5X#dSH>v>r%y!q3zN#HQrn*%q z+r5$`FTg4PacNQ>_#|<6@%#frecEL3vc>j%ibFI!Iz3~ye_zvGja09}-mR&=x{RCw zvTaE?YVX>xkNE~ zh(yB=CY}QSe%yi=taPc8+W4Ir`w^Gx^{gelyO4Low;cDSsI&4OHI+~6OncVA! zWv0`i)T9soRKRmcPZkH_VJA!eoaKVS<|*<|A#u5BZ^*oFd-+4eDyAKcza{~5yenCo zWVL1-;ZRUsW~EEGK*lo?h1F=Y>Ti46)t%%)z0Xf;#-Qn`UpciCwL^=b$by@;jVju% zRQf3)g$F%aL%0{DjdoeKpuR&9tc*7FW)aZ#g5mR+L$x56$pi3Zy~h$fJ? znG!r*piM|jOPd3)i^)HFj6~^+IX+-bGO)cUO?x;4qB=&4po2IFDj`$kak)X2mugZb z?9fXc0y<#XdwFl#+2rC6=lX2`GH>4t05+lA3vk{yd4rQ|m4TTax+KGLdL=7035SNm zU2?hd3>9znnR$6m`uuN*X&WHf00B5T4L`H7zm`W?3v=E)$7j3B?0?Z8$aHK5o~8j^ zW%x#l!ey#cSHOit9T&@)H$=;z<7&-BW!lvK_-BL;n8CKA!Iot+l|hPl+bp}$lR`BJ zrvc(?Gs--Kk%C^q+mSmFl&857&1sl%bKa2W|Tb;sY;6;ptz`E7&K5t!JZ8yqC4xQD;TM%ZXr@^_b3~JgvuM9 zaKGcj6c$+LD|=1u-GyZ8ht>dZmE?_**dm*|VGKPN>*PjYi>?Ya)&{2Xsj_g1V?G7@ zQS!-%wEoWrB4f+?rfAhNOV*rG2TTA`Vf zCeR#^mqYudd-suw2Xu`eHt*~Wh zdq1DhW>L^3KdU1ICfdY~3< zCr^73p7$)6*+5y`Tj=yoCuIEtnn%CgzRj&gv$tq*_Di&{|0Qtvzk_k`$A5u(|CC}) zOku2c6KT_`rt}!8EUmM>G;7xL1eluWHFKE*ApH}Z@!s+u>9JWOk#tdH3~-75T5vn` zW!cK2z=sjUux@bDGJ}X4<9X~5Upjz9mvJQaMS@T^nYSI3%20KOM@|81mtuxV!Qz1m z8vDxMUBfkgB1T*J3ED?P)dw*8v%j&dUD=iiWb<@} zC{$DSMCMaXg;Jz1{VXZw${$%rVaOJzU_wmlIdB~ zACO1G-3QPI4q?!B2ZFC?6xAKI#vat$d!6L5xwLz+nPnhXG2~|0srM*?E?Eh!#tKbU zAr1*i%QKhxXBGX9>y5FQB zwB8_)+hxr1T6Zi3g-4=7t?)absK8=c)pG^3D!TBQd&*Du6+x15a!5}KaaO=wZs(>~ z@GA9lJeIYdGDNm{TM3;<`x(>y>gCDTr`Sv?gt+79z3vd)i+SL^R?Gs%$RY6IL6py` z?c+jSlj2|pk&fDuDD|?33$zy$<5#JjS4)}g-=_R`ZSR4|y_5d$!gzV1A*k>WRy&Tq$$IIhUj|Z) zrsifk2tTozpV!(6bdebD-sj>HoNVB8dpUI4tko5eW0Y}V=tY{l_t22)k!pyM%8n-G zAI^d7eBo9@D(+=F@DtwpG!(J;pv4QysrEvx1Jk&b%kRe!gO;ehBEcplB2Lr;hwf3m zQq4425&ZC$Q6Qd(b%BN-8OF`nio9<cn|t*VF7BL3;`?nk=IGhn%U` z6JtNY^fW&7q(L*UH%~4ZmaNsUNMwRO==K=PU<2g1<~PwGtP{LDZYFDu=XI`-l+L9!otN;JL7j|c}VaF-_A;-b0;tGf05O_({A#78G9*N4y$~!6@S?^Is zZObCVpmk&u(E?;6w7!$+7WEkoqa|10b9H|6t>>xkRs;#@lQ_0 zv8*6jM)4)Bzp3}ju*&||6;scpC~eaxGaC`u+UXBzejAXSwb{#3=gs3?Y4cdr_1fsV z#Q()_`Tpde-S!`{W(hfud)BtHq%{OJ?xTWC!B%NRuLZatoDw*2x_dd}Fb+XMTHIJk z8#;l1cht!8FU&HiwZ;V-1Bbh+ztW{h;5SmrR*D*Efbds2jnfI5!9N?8m}Z+)+No%1 z)huh2n{=^LTr9nkuZ#LC8GMTzmSFA%=UXH%)i0%6P$^T`pEh_;ZQ|FLPY&Taeo`xR zZ!gWl1hC?l!R^Zlcs#69t_6Lb0uN!ch?u4`8fxIl)^H-z6#)$E4a!K2R$&FQgE|WM z0Q(8MTKyoZ8|xvNh|Zwr&lwM5A0^exmh8~?sSzuhbn`*cQ0Q>BQLSce|G7slnGm0# zpB?l}kyZ`Pb`QbIr#J?`stYnk%EluEBB)Fe4_w^)$oq2Gl3$=xN#ev?H3>u6xk{;f zHJw!^(St5mPlx;n4MpOLQ_w{FvqgwMzFg>Usv#itTP^jw4z=H949RNIhrP$b0+uZ3*L62Cx`kic0xLE0)KbS(#xEfX`17!eBa&b`iYA_Grk*#mu;EWZ3d}5_R~Lp*-P9DI=Rao{OjQf z6K(5mx|Y()l_o(~$epd#>umI$J!=vBQy=q(hBDH$N29%+F@HJ!fsL*f@IS=-zt`-Q z2F~gKF6+zbF3{?^%-6odL1jS)?LiP-Jh?LGTI0LH)g;kXvVh%oriouR5q&-*g?fzD zPUEi<`0naty{vdp8dcn5UT5yQw6uhF zGR>nS8Bsa~w4CBn=$Qv~4v7!j?MH<2@dn@PA`e>BkjjE7+m-I6zbK>=DtyZjB8K$b zzbe>xB>B^>eeZb{Dy>DYkgTNgOc{;y5bq~1%JIn|ckL;$*3?!_Fx(%5sJu}gT_-O$ z_r#9;sesDqHmgIg7x}EO^FXfJi2`GIUB3z%U?yT}I}y8@VqkqzlS=ii8~CH!8E(q- z`;LTs?^N7N=o{^_uuezQzXEabUSm;tLwnkJoH@#n9inedOD{CHdf>mvW00F3XXey7>Wca1)BQ8qrU6 zidh|Yh%2V|>juX3H&mICF7Nf&Cihiof4A8^#XK6~pE%JC?=c!060%3GQD6zT66b1S z#i=eKt9N3orS5gXLN3lW`0tBvv6(l5>4PlFZ#BilYy-@ z+x<~2?k5Gok6n9+@4OEuyR-~2F8-v-&Kb*9%Ip#&nDi?Pi)%C8{-r1h`WPQu>f%nC{C*HL*8k72AMb#2t3pEFDheqe`b;jlger+SX>A($Q-TgBJg>p&NrNf1bgw(Q&%wr?&bm7L3597M z(56Xl=mXLEKs|YUxt0nuL3=F!!A{~}J+P(tQ`%naK&8hDSF%VHIRzNxJuwFU)axmA zrE=4Mchff_7i8b`%_GPW`Zhm}GgnSb;1WsbQrX|Ktd0{W+v8?bMLj5QLx?lZ>j#tI zTnaDN2|OpUhRcLkA|EttFzezt?_^+Fax(Dlc2Dm}iVz?>0K>nWlT(P<>mPQg6iWBo zIK=p#4abW+x58E(k!q{v%CWY`fWl-FO{hgiS${)~W9+n|4MAT$?e_p1Kr zV@rxb%e5|LZ>0vhDYYHLLnjj<2bi<+i2!x|^_rgX^~r6QX5uD-CVe}Gusm%#wMo5E zS+)`T!s~6t`v{Wy>KZ@pU+-y*5|YH8@N-LW%B#ellm`C+)(rYJ$RS#>y)0WMbpGsl03OFPAm+c#3qn@b*Hrg2> zgA8&cW?ZEudOPSNb&Wu~jke}nz`Wwy+d@u2s(pNn(f=b816JwR?n>R^)5xqX(Ri0K zk5J_oF_A`9AnBUGx}%Diq=8+|8OzB29WEy=ZA2v1=!}*xZHHk{M*HR;dsAySy8D1Qfp2WG511?ieg%CmuhKbE(!#6$e74)E?qVm8u5NndKJ?&^j`t0Q%_yJYZ+H8R1M16RrsMZAr zIwX6*seC9w^`s~mDvS7sECf}BDHV%5o>Vl!`pxP=xmj=ofoyGJJHV~*y$=B3djYQ0xG z8I(UtPc;VY54?9lP~kw@=)-B8VsF1Gyp$Bxr3Vt8LW@tWm87XuQ}DKka>&!!5cszt zhr(f3J-yUg_&nZ*bjhwUnTGH~Prhg0DjmvciNv;;&NuaX0kt>A6@#3ER7~~SbQ92` z!zica3c3wVQ3UnyKCGj}Gg$|8_RDT1J$b?T!`(DXS#sa5h~mP}eyPMz0aj z`nGrjmw1Q+=1#{5&zbx@y1%UfceYSe3sQ_)+*tR}Renx*^IYSa@8Z9-Q6JItxGTX^ zQL`_Tk8IsF{ynXZk#_pGZ;m@p*mK(MUb|rYFAKGVi-W$fQQW3A-bi>WJ*o=__%FFp5UA4fMv}FbH;0pXkat`QIr{|L*fkmEM1{1|j3AhM0S?Jn)nfXNX z>4y65p;?^p8Is8zTQZ(y(a1RZ+%+dR*Jcj&+}73>VNHM7Xtx->>GW%yz#t-vnHQ=g zI{_c2FkL8lUzp}B_5CR;G_pEF+5c#eXXNEQi%Cz9x_K9!HST92yqopQxM@wW$L|tM zbKhOgu+;p+W5rLIE?940eD%0j>at;u(5M~NceQBAAF#Nvo&#c+hNgm+60m|k=dtXv z8}S^(7$Aa#Xx>mxWN+Xp-&*HaFct%C#9IB@3NQKudG;D6_JJ~etj#+OJ+7d7qWGE^ zSCy;qYlomY-yu-$of?%PlHgP`uKTMNW-3I1=1xZGg<~91nSWAOYRBxJQlb0dL(W)YNpW=~_`cn+azV>$jAB=yBN<|+cV zs+-2Q^2AO>ZNr*aAr<5h=eEHp!Xk=v$p4N*$K+@#j$+Pr)(+CdWW6E6ny_jI-tBa) zl?6?#5079|+r_?-gIRsfsJZ5uvy`g3ZemLnHcK6y3I`qDW<8FtT2ePr#rY5{Yf{OL z@fRG)4Kq+r(I`=NW`NDV2Pm4_{y|)RfwddJE?7(IFH9Vh`N;rYDFe2BjddY-bZna|PN!qrPRDlAv2EM7IyO4C&U)Yf{=U8Uxj1#Pesf*Vn)Qqt zHJ(wA3^5CfeS22#m$nf)8qh~l{`>#_W0R6_$ZcY*en7yiVE3496fgWZHr;dxZY|!%4 z?KlNnTe$Wer-p4-#rqcuL37@t8_zrg=AP#`g=cO2)&f19%$V}L0ufK@8~^&KJ?2Dm zxa#$xDjl|JU_bAWSH3Dr8jdxbaG8}5P~Fy=jKRZm+c9Tk6{fTd82-nwYz%AIyYqao zW^&K(Vw4#yG_3u+JO;FJ|v&d*`by0wSOLctWo0Tfyi1L`(PG7r*_z zUtVXHpDz|f_4V}+?r7|sUFOQeAwJcX_WMMGsS%nr8$f`8V2UvEY*QB9dT#A z`s#7j#Y`3F32@J4mZ$Ah_9`l<(|lL-?{2S&&$fqpo8EU#Qi|JQC}a{R$KZZ%mt4He z44{pb;Fi9^G5p!navLRfeP<8?&d38c;KOZgTfLzWQqHmbirrkqq?bxo(omvVIsGC~ zdZvHMZU|fCm;_uXMvZK-Dkh|mBulb#N_1PK`{fd-ED2^+o5t>o!8p2fzIac_wgZ#> zP)jxTv$uMWii+d?SR-DkzCsp{D9Fq@qcnto3V?54yjg}Z)dR6|=gXY%X-+*#XEM_v(E+9IsePt4j>#lUwmz9oSI@>9aS~)CgwM-?LwJbqk zO)hjXoNv@iWyRN?zpV&ENje3wF&E-$k~|$)ORJ0a(^VSnA34j>`rMy zW*c#6980fH_K$HnBef6P!8;fO3*wf7u*`psb=)1zyN)w@D}&9T$xqfQJNCTU=1d9b; zWIAD^ z%Xm+qG_13nj*3k*d20S{`Sb#wPl%1E#PnLC@-D^*WyWJVL(vyU7_U zyudkTlzxK$RzcYQ&CQCT+Ogh0wpc%SJYgO;j6pxOgZo4+Ok9$Iz7e;ES>#-NEE0ia={Ip;|&s9pHxR%Hix({=k-ov;8c#jNj!1SXDaUe|v+n1D39Q&kzV}JdP+E z@dWWQ66 zX;k9j&@ z&kAV2Obd$%XS;mNUaz~lZkL#HO&1y7AZRJ>C2*2LHWJ~08-P9Z9w}xPr_>K=^Nd9l z)m>5dCPs_27VhMwu0;&yInx22ub}Kd?C}YG4iGD~K2aoM2_rFpn)gYz4#W57x487= zh{$AGQa(CSDEchJc%Um_Ln|S{AaftK$72n`S*iA!zt#7PzJgn8WGRVKSZDh_AmChh zTZX{DchaWd-b=9vkzpQvcM6p9)Db}1X3!|2%7RIg1wVLfnXaX+*)T7T-}59i|LaM3 zJHMdq*;N+U{8M+iam{r6Qr{=heS3*}$x%9;###F=!GYDf-rFVfCbUW-v9U}x?NzR0 zsbl={1iE&&68!f@(N=cz+41?Aw|Zuj+Q98!2zHll+LBc5*wjXv8oK(0vvgh@Uz?a1 zw(M&~EV1!1??u_8tIiFxWPFQRZQq4A4Tgpsh3G~|=Qj$)k}25}YjH}ad2^NR3@r1H z(f0d8&jnu(mb+=Sc#pGkxg2XUX=&L541O#DzlZr;p03ISnx#@7fS-b#KrtrAxbL^Z zIK-%Rj|uner1nLj23v0@wt_;0EonJzJ|^k3kAXt)<@h_*<4pfD%a-irvYCVz*rDSIe4WY0)oQL1s5&l3UpEFIPw`9EMZ0UWKB_*4^qPoi zA$LxpLW|W-?Bk9fn)T>A=^qVnwc3u zSO;)B-Zt*T$nh_te$f?ue=8`2zKPta-cI4<+Rx;%w9YBHmiMxiYa<0d{uX;w%2P+I zo$3;Ue$5v4@8f}7*GXvnF0KEp^s~6>2?l=9%M2$*c02^#IW$@i_IwBQ?g&WVfYuEd zF5eV~L)(z{FQKM|MKkfbB2WG_p#QYs2os1QGQiJ2_PKN+W45^2 ze_nCexXBGWN(Z?=YIJk8(V7@V_&@D3?5sjkMQ`0F4=O6T(k_I$ynk<7p545| zH8Ga-4e&0>Ejc^m7vov74?agi=x>R=rZW!srUYA&po8PtyiGOrBg-U3Zh1wr1>Of9 z7ufV%h#)6N$2vOzZMk|yAXRQF)>_6=fy+}gu;o}(NBy@NFh#6A7 zB1{zq259dXsKLr?aqd9~mCsO~aywG7D<0-q#SNzE^4c^d=ksK8ECkT=Aq*Be*;Z$X zFVf$opgi=t@t94RGv4vR5YenWPHb^&}KDV`He$H!b3w# zBM`Ceo=i1SD69Q53$Z(+kntRXq==Mi=E!~F)^YsI$TE|#ImML~ttnVi!HCYKWwbKVwDP4aCBGkJmA>QwozgNDoTX^mV9r%1*C9W?(3VuhTi ziZc!YclpfwI*}za&z*9|pIM)Kkp~s^<;Hl|i&o1J371&1g$5t>BlyP(V7$bY3%4N{ z3l&;Sc^SEXKdgdg<~d=I`C1~Dd+5}<{A|7m4l`Op==MSOo-V#uxKgD*P+caQF$6bk z9jMnBk+puVhh{mex4iyAow`R95L&Wr!lu@3!~Numi=bbkTr;R!6oo1?U|3YQ^ZRJR z)4Ibrx{4U_FsT-Y+AhdThH&n>Q^`8ribN88(M7Q95BsI6^!s?ImG@+=Pu?y)5WI(H zX1nRucj(`xP+e5}haqV1Ib8T{IXd88d2}k*Jt3b0y1F}OR(K?1h#2An`{fn6G|x^@ zaUDCl^iDuU%t{kb8#%hGGs4 zxW?dN6fw}}uQcfVidX35Wk{XnhaMBVL(R|#+@b@}hUcG%`F91OGRSd%s~-Q%1e-uR zD;t}`lDekRWEzWo+wE+E=! z?uC82+(-INtu6bu-sRu@NRiw4PT_l z^*iS25g9%wY`^8V7mtB47c@8M_84~%TQ>u1pO+8-Brng1YYyEvvPRohY#Q}JL>^91 zuqygo#JkFLQ0&m#)VZn5whU{I$e)s2jJX+&G*^XJY(unJmPu(WtW@gjuGpmf(e|2) z-}pWv8@EnzKD3B}r_KE!#Dw+sxm9(AzPq?vNpzfz7@zHRo$6_|UddAH0o7bUsnf(B zD*~-lgi2e{(zxjSaEJ8Xj#lcUXGqPOUvso~T7_W$6xJuKtg1LXg7n*X;a8wRqTDsd zcMr8P<3#cMk!tjZ2F467C{EjWitR|KY1o`6@qacWw|8n3A#LUIz?YQxM3M+Vu;UA8cQ{t5Y44IF*~{m(WH6pt6MZtTz{_#xv9Nqa z@Ij`o#)p@i9ysL#%+%Ps@ZBY)E`$yaLI9biGvbL>hn4*xBm?21@k58H(K&bH`G!)x zvi$1xw)?BbZ3r2g-r;46qW5DGCZPOxp*@(xM?oL_t)Us=lT7Ky;wW7f#rcwVa)#zh@Poi$3dV}~fp5DU1 zHH-EX;r`50ZoT;8p4D_7^*!;_MQ8Yw7rm!ZuBM{a%=?ZNsHVBIwXjFOv8$;>(q;tc zB$}yOmOz!iCtX&qgmqqc#?7^_G#X&gDsJ6-#-ngDm}Nf{FCuon(`HzPCw)1|bv+M}*qk)6s3bmN+WL^K61<&t{%V!D4=^?T{pm>kP%dwIv#j_2 zooj@O%D%EBc|WvKf{3q>pguOuu*M_(^bmL+LHL?wLAZ1|<5(sxlF73~r@V}^MI1iP z%x|n5OuSp;q2JLPE;#WBkii{hHjDWxP$r;G+FZ*2`Lww%B8$H{Eh`&k(nW+BJ9CRN z(1%n+lVb{a-JPBm>DCE#fAH!n6J-jKAJJhFx0@-UtHq6W@H~ddGeB4rqjic_;>*1~E??|2KmzBDSrxC?GRx^!4c@CBr`R z{E*wstU`HB0UGH3kkI}PNI2fSUE|U>%5t2iJl0tJdT&5F&fb88!|IGsRkVripnAtc z5`5(@SFb7$qMY~CZ^;-=H~5zAd9kaVfpL=U-!&&a_1cB2~!n? zP;%Mha=GkBg;MUfT1rdx9zrHnzVkmqHsi87-3Nx|re_$a;VTteDe-fx^JR1IagMhO zauw1z`qLWZ7u+uwGPN4pIR;&Yu6!5=DHEuA$rfO;1Y5neh_5m!+F`t<74yZQ^@Q2P z^)QQPhw+xCjh;LsT0ZALPAx084ws)%3ps`V;QL%S#PHpUqn823c?5!rUS2sD${BG| z1Y3?6>U?t_)|~0Eg{Wc;za*tsDmog|#=(S3S-J zChnhSFIHnR))o3t(PwW4BOkYjjIE~lga$apZr1S!MkAHd?#?c((?m;1^6CmpP6`?f ztKl;#NeF3f1+TW=_UBs8cpXYm8c6gW;6Zk2fnOF^ydVX%8P};5r`fZ7)C8cAkPwC8 z&@##yfz+6@+glhzp$Hw+u1XMaoJ!wO#N)OKpSDD$uG%*BKhxKq{xXt$|E|>gk>Fb?X8aNmbY#J5N^_nypLYp>yM-w%h5f8 zFH2X0E3^M2xUKRCdU5}WZWy~9Xg9p+?JC`teBBn?)gC{lK;%e4A70~0FRp=Tv4cai z-qY}sVE$b{?RSj!l zC|$7|sZ^EI0v{u?=wKcKWn(zfbSe#ujE8w`7~IDA7|8IxdPjTh)j1Le{2@gAWG!i$ zoXS_W;553IIzrw;LdsmyB=CvKTw1bJ;UPA8bhr#;USho{#)$a?t%iv2?GQ1e4ea3$ zGP6a89-MuE+&xa_>8M^#X2nUkLY#cs+2H_o;d$iPAs_baB5>^bfcrYH4povx)2jT3pqqB2&;wz~PK9g-}X;grbm(6$+42q8H{%0P!_ zNkel>xQosU6jlC~|3k4Ml{`cAbk}GZZa0sLNrklqn6Cfstcv@q3%U$Xvrk3Kf40`X z$0n+iTnI7K5}NYMJuH+c=R)mb%} zewD)IivUTm?Pythc0zvu)uY4{N<6sQhF zkxH#(8e#E9paV_FcRd8TArHY}ngc!kbxNiKgC`7&o+yBW?U523pWK_8`^xNe;IJm* zFll~V(0P~fV~FK^v@l)d1_R6zt>{JpOwzOf`*!DBYRH6Kvk6MfP0;@HsjRvyT0+JG ziczuVW%0cZ{cxlftj?wDSQtU|e0LUB$PlJjg@YCkH_s%lnzmMo(|+P!LsTt~(2>In z4b!qwbuWem!$Q6;1q(qR{m4zHF&{TKHVMh^+F&umBcw!@adjMZrgm(=GSbK-X0SkBgVMv^Gr31uA^*iId?qY0QMtt&LGS(rU#+u{LT`<*X}&ee z&_|q*OJv_BjpLn@U9b_QXEGZJ$UNWpns97o8fGk{u@BIrDNiyCv)PQ!Nw5Oizc77A znkcqQtXxQoy)pDW_HD3v3Q=e`5W0J#s}ceIO*8aEkNhTZj$Z8RThAbZew936+pn1& z9=x`ApD@1b`XKS-T}^!3p?2HdU@qdvuKa7Cww=mvzNWF~gYfvDzT_E#tzakiSSddC zAqSW1H*ld_@4o>^7o~H)$bvXt3_2mu;8p;dOft{swtlBH!G_nb59IpxroKqYZsRlU-brBej7hJyI5t{&Zun)e*Y&Nc;j=@ zMSH#$uTUN`h5uN+A?+sh8X7vh78n%;AH?hN0}A+eSUWmFG!3>Q zldqU!@+ny4&BI)a&p%oIIdnD4d1h)V*(Uev^_&TUufXADiIe|U1#_(qUbf3BjC=BKXp@=DDFuby` z(i0B-PjG2O5Jdaj&`ESwxY3Cta~D&MFh}V|iHO!%u$ctnKX|37s39f7_6Ax~Z_Y+ngi zD*@5DW%(r%oZewd#p?Tql1V9)$_V?t3k8E9D7(XTw*;q$c<^-aNItVRe+q=XwV8~v z$@Z77E@$t&3tpZ3E|~N}mzSGdCa3&-2BKku4^Bu(2)hKI{gX|L;d{cv$-_BmE33d! zYHazFL+|V4mW7)RbDO;Wrl$vA=iTlIH9fWeP`R`A^PjT|ISUI{n(4y?GZTngxr{p+ zMs<8Mnma#~wz9Ces2^&-TyV1rh?#&puLGXP=b$;Xs6teWjth4rB#dDlMfR0wZclV+ zI#?6q)9?aeG5Te=6TSpv%&y4rcdRSm-z;gufVuNe4Bz}0^e7nywVs5x`~i%2EE2R8 zXEy8V$GvNRQ1HPQtESMrv8$p322qd8jMuYTNO6*x23ToGrrBr@<`O~U z{CBwkkAa!PhP6ujwoR2(nB1+5G1w)zopqVYo?|LcFA&QabcNdxrzAlY3DQxBCu1FUDNp=S^P2P zcEwXc%A_$HnMmLG{Cs>uqzV$zdlY}mgjf-jYra_K(Et?o!y}y5=KZ6VAu1COMtg5 zE;lZC;2t>pW5?$Cc7n-)n?}04k53NB4S>^WR-><1mS{6Byu58xYP)|m%*=f*#qK&d zRl|1Q5&bv!vhBtNcC--8#Hn=`(E_5K6{MxTKJ{ z&@}mIUR%|8rz!g1v0oYL3S#w7s)QLS$la0iD-H|Y45Fn0aq67wU@}~PV$C5LJw7${ zb-%HC;_^7nPDlxL;yhp6ZcZfr6RB2UzjSIH?InD$He)ptU%=h%Eea7$+nnh)PqG5-$bI)k+jZ9mxtDeAA0#0fF=C<;pOcHQ=Dd)_(Vs^5ROaa)vRQEw zS#!}z_~*z1zB+-MpfvFZBy*cWOKVB$K1oOe%9KXa%Go#xAxVLjjA7(T4&JPRDhh~B zV9JKGU({fCKv{k`?@gGR6j-?+tq4X3_VzoO!;6x`Ee!^zjn%bJV;@!N;-pcA5I0(} znr@mSSiTPl28|J6OFC=z$i?OZmSj_=PO^3JE-ubHG2CB|6O@Y$KagD`qqLTHrVH7z zUbqL7_~#8kDVsa=tud`3kQqx7u~D2dTL-Ggvv?FkH!f2!`uIN?wL7u9+Vum>nY^RY z;Bfo1_v4o)vjEzC?P~#6aEu~*`8@XMZFA)=R_<_cI~-XZDp=)osnT60YXgMN5&Lem z4ReZgPE+u+U~>J|NY+oecD$O<@4uYXJ`K` zV5Z9PnEzwmV05-v=6+g~ij0O9bbW2l&p-a_RlaL<>PTIe--Spd;@N5-G>_Q#g|LWe zFIg4Sw7n;hcxEPd3~jv_JYZtfWqNX4;!isVi{)NseaLB0tUv&CIiF^znZn?%J*g7s zZR$`XL5I2=6pH8^K20wDWG?AsA-7+6ijW3!+VcHTHoMvjI+$g&AFTP;zLRvu8-h?H z3O+7u=0I6<4M($~MG3CZpds(l zA%8YxF|JFaZ5Rg-$B*Z5b|6GZhwT>Dv9ohyukrBA&m7h0MN?w6^deYR#LJslSF8vH z4g3s>c8kknBNGw=04t@fE@AA;v-c*|$!s&j&p&tY(>+Gau=ATq!(Xhl_8>|Kz?=bQP+v`$k1(8a(c&1*bNA}j&fiv*&VPWYh5&b41!M^*;9UK~( zXY%GcIyRO3WXY=F;v<$>rYi^&ppDI*OMV3s1`_s*CjvpBTt0-%2r`i|y2N2PU_%`@ z9x=Zyxy?sDOo@2vN_c#HyuXiNW9QH6 zSpuu9Q`C3x>WIc8h~p7wYYvkcoJ2U3%8NY3PluqV2f#a=dTA(7C{jOUTPVwtdo>m2 zRU1B=#LricNOlb(h+`T!U=5$K6ia(19p)E=Q4NV^S3#oG;snXh_4t+>L|Nm$B_~_R z3y)7COw_%{93J;bs;gUubaZrRGL}#AY`7?;CPf`ax8BrO(6SwgYymwD*RtQ+4>@}2 z$#HR$9DhGDvnLlF8#@wCB}w{Quanyc4p#5kV_nhxx|;9ibEaW#r*7_t_mlppA`N<2 z-Qq*|EfIlC&N!B}@M8}6>itpT$!s-4_2n9PTbsviEkq5NYX@v0fO!-Bs4CB+iAfZ{ zov@{xYbo&!ZKT3cYlm?(Rej7`pe{bL)$itsX2?q*L?-5odYax(I?ds8V215bb{-eE z1dc_1!*KM$W|p26`#n7OKM*B!xF_Nr?3Dr8-cK*9m~Cwp zsT*a``HT=m5k z2CKE7kUp+hCh4y^TnkDyyfWXC^>m|0D8dHP{(k$9DmTO7KKem!dT1K@@20hAht>wG zaQdZL$g!|D4&jkeaTp(msHjSHD&k@z!@vxMCqdb@{}$G}>)ijdMOMh-Ll|>udyR#% zBGjXaDjN=N$xEfnx#~Jn(qL)gPq-H*xQoSPFLjaDl zvNE-E8&G1(pujb~qBhuGSYFP?Mgd>m6r4=(Jb+BecTH>JdJ+;EN*a7NU^W3Xhtx3t zcIzQ-;R^~|dXZednAf=oYZ>~b!*ZXE47Nb+gPP*_W*NWd9j-(Yv%6mFqy#3B&0Xj& zGk!o_>S{5L-;hS7Jdb!WqglV{i?7I2tFNW;40IpQQp$cmMumT{I~Yg;B%zF2Y^45* z9hqv`4$15Q#K=Oyf15`Q=;Yth0m~DN1oyhJ(BkMMP=>*A!ZIA-n<2CK|IwBGauu1wJkA84$YocBD zxE+gzyo5!LsdC@8i2gqtxO9jk=4~|C%j5K2r#?`67kGa;YpA?Jr(p;_x7C;1^O~N2 zuCWCEu@yF`Mu_d)>G#*&lu`t(tY2W;P+e0dUMs`1=HRjY%`Z@j{0@Ju7u^<3`oD-q3COvho`Rq>W zdBT*ITO|J9{H1U00^jIP5*%6KYB5h6h+zz}8`=vKf-F}9QDF^u*W0ltjZ1+jq+F;u z8gMQqi#{26^Y8Z-!#L{OW&F-PXT%9-JRpifKp0wDt28(~3`>B669LpWlU3{S1m8yP z)!Iim1qUNf(RpUu&p!08e6#b)Oc(ZWQZAe9Tz5YlKg7PB&4iAr3Tzw{us<&D&2~Xf z-Xoi>wz1ONDx%YAu?%WGp>9ie!N433q8_Iy9yYIT$KCi*X+)?DUk5FI`?%a$&qYg% z3$)YH>Ttz4V$$+ItXL+gn2oVcg^U>;hmN2L%g*H5-92X-?*06TPsw5Qc*(1e>pbwx zZ_w$QaG(X;@!pMLUnkE<&BXm6r6@#&VwT5|CT;|qu!HZV3mp;{~^ewFqK;nJG{_dl4%Qq<1yDwC8z13!c1QdHYz!NPJG2n83FZ~m$ zc7`TxiKEqK$(A3)ACCVHB3Lg*ny^S=w;n9uHz`K=FtL;7KDb;Kb~~j*+UW?dw|4*M zz;S@o#`F=AQEts}`4_>?V=eJy*Qrk7Om>Wilb>XE2FJl~LUoSU`_m$}B9r4beh}ep zi;K>tb^N`HL&0e?qmgRwToqnzBU?8q->lTqf<{-1@Iv)hdejjlReK-r58ZoaTv77gH9 zXXgHv)sieD5+JME#?{ws3+WYpYcG5@>+Hdy!+EFT;_klIy!Z-Rgc){8;)_ri=5Fu- z_oLCy@sNbA%3CkQ#uqJd3=83YuH61O)=1S*HTF@lv3<`s+dDB|0ue;r8R2y8&LX@% zYxUW3ZGPX%{Ro+QdRadj4*5oen-2s(6<3!RZDPdHq3y3riJCmh z%a{yl0EoBr--If9Qwa(7tc-=wv$=~_rOp}#i$R58W#)$~M3PMV4q+!^AGt-&O1281PY40)=;e?UZ}R)__~uJePD zUW4y!xh#4%oVrrG39Mz)6K>1zi%iTDR>^jeDlOYayiJLY{`YvzWO?gG+g)jFJAYx4 z<}~KazF6N%{F0^cRyX)_nU8$qk3|r+l8?M*BCdyV@`Q28Ti8)W>en5|>v2Fc%|va8 zhkE_#yGzF{52Q6B)WZa+!>uEJ4XinVMyCG!P4mj6>P8J-#q24dijZ>zSDmoh76mWs zu25)OW)~zYO8);#Q+D=g%Kw$9r4frDrM2yCCOZAziqws{7NPPb6Ke+`DZD7plqr_! z7by{@qs!%1D^;S7j;!vw`;LcubCqk5tTZ;unRYqyVb_X6ALLh`hqY|05t4w(K8!Ab zQK{pn{m5~UTK(wGQ$^)>OOiJarL7lcV*;)|Rp-Y_5c693_hxz#F){261A9p0{5_yJ zPH5~cp64_7ZLXJ-<2IkQ?6V@!oJU?~e-osoY`{qJhkJ0NAYfsh=oI&8DIEXEO6_J< z8Z-EP627tPh48||j5aWzI{RXHI$Kbrt*_jJVNMpL#&=+)9hji^}( zOOI0_G0`6Lw47>1BwYBX6%F&Q%O=|eW#{##>L^p8L&$I-DA%8WG)B9;pO@>@^gGFk zu50qWeH~{BTlb=2wGMMgX-`WHrKtMBRD^!`D+u^f^)I7iW9nBIW_Yu?dR}^ruLqZ< zYr^;_I1yt2zldXi7u4U@qaX7w+&{T&!whlz$Moz~9oFPJ9T#x$g9-37$Sk&?y&u*j zfp8wphaWMrZq;Deg<=IgdkUlXs0kC=<&QKepwm98F#uUP#;hCm*~O7i?2QAPO0{J6 z_9_V1ZOUD=SL%F4_Dh@`t2JNic8_>z&QSUrsM*aNrB>X-b24=b3TL7{&!#OBY5zc6 za&|P}h`yJ?hEd$s7O~lOD>wsVVmIHFz<%X=cahm((c=MaQjT5>Jv}!goFfA9H1l(w zW=q=tl6XUCWWDy~Lu&uvGbXF!=A!F=ZpT)<2!rBDcTCqwGK3IM9lQM|g^>mS1?% zQ1b6^G@io+;`)EyKnCEh0?c- z(>puRVk7Qz@2FgkPS2DbNtp-!#C%wjKjP8W2U^zq`7(PCpXA@M$}YKcaXpxTH)wJF z-g%JXQBaK8RFCd~BHCyoZgXn?Wp4SrW<+bd;#imKrXPfxnv+4A_!$ggSFKghMLO4j^ z&+I!DQ*uTRELRs-TA-}eTZT#L>oT&Lg;<8`*r|G0J6Y;ra-3HYe>c<-%r~A;O}Xe* zxk7iva*r4FI8@2`J$L9Jox9t5UQks!e`B=y-Xm%6a%HgUMvO8yH&>sK)+eC<;A&ub zhBCtZ^aTq3w)>e%nZFjN$hNc-7&Ss(jr3j(E_XxT#ASg^p zNy(7=QHv^du`^+^nR8mABcsl73ddE=<}VQ&_E1*Okm;dm;mrhGWC#xvEFQnYRN-Rp zY|)wV;M=Y0;g0C|Xnenh3s(Ydw{T|M?en-auUN0W0_?(*uu{90j0k$1dbuNG;M7l) zV>>M^YS?fHpAeO$S1s+)u_sL-g%@@y&FMlZ;Md9@?w*|6^SJ5em)keTXm zsq?)W;L=(e>$Q{5B(Ld<_|PX3@01ut$28(jRjVU>QN*n+J-H&#BbsK(2p$p<$6Rt8 zhPjxs@JkPn2k*Q?; zqc-h`&4(J(&h1n}{P-@s@rhE`JT6M!c$(85VED$HthYUn0s@BKzE(^EjltGSe;0^lUpBDSa;b3H%1XoAj1xvk?{F0Jyn1 z<>%)_hv)5@bN`>o0bO2e3lQiB{f>rMSsrWQ#pi1pX|eVdkQiv=B>kAdxmE--E~T#$%U+=)#0`K#ysmj=Tc#)VmNz&FuMF zX-_M`%Md#*3*j7ttC#Iba#64qUbMZrFL+IN?tBceGtG2gl|*l=f$K-3xW&p99Qr58 zr{nta1TS1Gnn^I%Uv{HW;-^d`w>J*|*4ibaL-j+?=eG;z72)kL!O$gJQG*n`+rJvx z(-&d&4Nx(LbdPo$;V&khhFdj4q~zp-D~KwH1@YYEgIFBn??=v~xQf8%vjo{$dSwETC9E{ycFb+vco-zR!;7!BS++|9pHU zWDbgZ3)w_EC7!sU4C$5@VDK^l?|QqAudpxB_miV0`Ujdh(ZRVWyDF|a=H3mqh{L8I zkLXt4fapFbpFht9yg-M6=KtRb{&vWprTdpQy~mvWr<$`G;X-3*aJk9Jrd`2=Jl;(* zEB22I->>a}9N}p$ym(#jfa>{u0EZGI)|+luQ?2LKc*;dGklKeDN;{-HHR~Fj>=0{f zZP>cM-k9UA`P#TJaP5T$s@Vu7NpT9o^Zi z%b56LLJ_yjZN|KjUBke^_>9!d#TT`TG8Uun%iJrof(U@T$Qqkr`YvHk$;#Fcmzj$M zoOeWoAx1c*zQuRcDrxYrZeKc((Xu8~GhvaE0^9SJT_D$ngdpDZQ~d@Argq~ggA7kS z2sgvZzT493GG?=#1WxATb@RhscX+U=1Pny{%-#Q!8Ngs=I5Fl=CIsc7?R zG;vaOh;X+5xI8G<2X~F5U~~aF*C9a?*-JnTy|9)y{w?bgW~(tk!S00paw>*ZvNrny z;{9e#_1S8i`u+KGGAQXSnZAn`^H{nYY>5uQngf5KJ@XzIo8l zCbJ-CzRZD~FDWjgb$dIPlruzwpSD~m9%%+NV~+VjhHw{+E-_o9I|hMVDH;r)6K^m^ zokluIpCUAI*OQxc9`eTFhqTsqwcrw`$i5NjrmEFp#%JL3j&lEO$l6_}DbgDD>VM;- zO23c@!6!{Hw|FEp)w{RhwZ98>HDdC#%|Ms*;x!XILm0f*e5`{!C7jPw*=(WFXqnr4 z4|_4m(M?1hv%l76RpL8A=k-DYN*7HggO!~4+GYJA$6A@H`RtgsQ0_=e0IyKf`}jo4 z9aXLUPjQb{jS19eyV;|{+r3ysighV9wg0z+{6zTQm>g#9Ure4Tt&Vsn@Ou_W;tA^F z_v#sRTbh-iZod=qIzwmkxeXspWnK>zw#-#%VilHHkT5BB)hwSnhu@_Vs9nIDQ!(>p z>$IFkY=mvcc7MF)I~K{*FO{#Dh?WovV?R{GL3$*`@<>i|jaieE1erPl`W^2opU(;} z^f^qy0;}Yu$Wz6lBCZ>dH;FD>@qigUSL&e2?|k*g{dNv2J}ZG1(ePt`cM}Al3U90E zguj#Q`p#(W%DG-zl|C{}XAtd4O#^ejY}dQx<5g>QtUyjEL%KzBvDJ|3n{_m1yzWm| zAO{WSK+4Md4d&)>$FZZX=oOOs=Q@};2X20;48vh%s znErZOaMmxB^|KFOYhjmCA+ruAZtXDRHCI2QIc;_0%6?}3N;{E4PpG1(LPhsrB&cBa zC>B%|@?(wt;zm!a;SSU`K!>>YVfP6K!(iwG(LTC{wvtNheDzI;J24ukPNZgbR#j5L z?axo0NgxS&p!UK4y%$^+jDtSIlWD1ynh(BES{q-KOLar8XcS|Vu}dKg=M#S&X_I22 z>!kL(0~x4J9sE_(8CrROu9fQnWrgU0++X1z{r-j6dLh2pJnfFR9Oa2a9*NOPo|jgd>x%E&D`VARAj zcw<$Ke&jpj*og*GgKlo0o2))qIPR^;YzH$nZB|D{fY?6#Zzrn2Qm?U7wc;n~cz1ri zsIKmvS@O@|{l`1sEaJbysLOvK&}>}9^7sF%IUSk7IR`m%oR6^6YRl5IZP|zhI;0st zoFzYd3_~;_pAd0QerLBFs z+GfJXX}1;Cbk1eC5tF^z?n8x&R6@o;2KVyfQ5!r+!cCg<+KOQmUk45IOH52pomX-U zwtM!Py1n>Tst1G6O%T7&Ti$(_aa7#ZlN7dIHLl){?IWS7KRGjIG6`IwEOG!B6;?J` z$9|<0$?A@i`sWsIj!ct3tb-#DX>3d&SbXwfgZD0LZVe!(=^%(n^ysFK@TV*KF>-t+ zf@u+Gr_S@NAaTU_PX4tUS^y;$c)@U76t?6kM>Sk|lH)sXM2i)by%W~XZKl7Eu7BDs z`f)Ko&3;C7Kx0tv1=HMpC+7+G0Y-VX>LP^glC^=|k$XQKfe9-9^IgYGeBBAg`};l; zG$r4AlQ&H@J~O=Ni1l|VclOPYpX$Xm1hHT>CCDW4ob*M*px)|v zK=)jr>;-X{AP_B003f6SU7neC_iDxHdFlasq5B*R^zh4*8G@y@Z!7dJX81*t7o~@X zD5IZ-p(MOdPQh*&dJpFd{r!90{fvTvwEPMLpRN?M#`qDTA!Ubk5T3=n zQe5tg6})|K2Sg!2#UB0JHkS~sgI4|n#Qr0)W!=U57kIJa(6hBs{zI^{t$|jK+isSk zPAR|{^xZ%2$LUc-E5?Y-~&T5BZ`{bI26&$V*)S2hR4}1ss21#e9&t*tOOPnIgF;%zy!hx|GMaSL@C#)7jbh#ThdX~ z${5=`iFl#Od|HkP5ARx@W4K(4=`dQmmpGNVqgdGa#ZgU_gI&@?MiL%mb%#NMrLdq% z+ik+ojY)!XZxX@sr!DGx8oEyk|Mo6HkY7Fp+Ko=fLE>hK*jThQ9X0N zb-9izy<87G+~j344s(;>kv|&QoQzN zAA=c%sE}nD#sI6kiNXlj7|bGd8pqPby)T1P--7ks-WT@rM~}d?><(Cwoc|X!?G<^A zf9OB>XCZ{sHJDyaIH$w@cpDfuw=4drQm#*UA7Q|S_MpLGt|Fna3M?e^o!>Ps14EEjDgBj~yXUyM&ZL5|1I|zJ6X5~frxXj7fpF-dCAb1jDKc& z`s(JE5TQ=n(QLpC#MKO_Zz4s&<0xr`IvG-G4o{pru(}QnEclDqo{?gLjMn`?nwH~S z$LoD}hd;=@u{9o-pNCzL6*Tt6@0^rL|kT{7WIZ+7D#J(pKq!VPc7ew7HVM zEvuR!uF59%WYT6xbc2T`tFT%pWQ1;~fi&_GAXC_T#U-`LJC8|3$h74Q&1_n*--+$? zj~}|hXw_M@@~^v9*5}5lI`nO@IhG?)Ty!vY|5oJK)AcL5aq89-d`nhp@0;wPPK@Kl zN5I|@S#KR#&_Q$Ni|*<9hY!@c4py*l%tLQ5Z_v*R`ToqRB%sTOWQc?#PSQtcZ2c#e z_V!ONrEZ-g4RyVK*GxMv7F$DArI>4PexNMZO>u6r(^ns?{&5)za04Hl;0AelbaD-m zb;0)5PeMzcTe#aIqswNITElUu6kh@l=tI8o zhCMdJ;=9C8bl@N~(Nkr}0LAaL#f0cx8{gx(AlPhWWi#*2y~mx}eqs3koxHqUXhs=O zv;Q&rywH?9RRW*o;T3Iec0GRlKw9_pLV+;$F}ij~F?l_7-3RI&UJqmm<>j3DRAWHRc#wLis1mKkMvt?XVRbjfuD48)fJxUdf@g z+*KRXzXZRx3LF4?UQ%;&qnY%#hNoqu2Gx!Kqjm2iK6JX^Ieh5-a@+o(uE%}JTzkX? z!d~ zI7EbjNUo__ZX?W=^Jm{&+V^m8y*$z2VhqBqGqit=yMx8w?iZ-5B~31whdow!y5H7# zdCAD3q&D^|*ZBz&hccmm4vFMNGfVI-K7BE;*e^=kP!fl7-XUMY4z|4SJL>Ui2<608gGl~APbEl-A zqDB(1^_u_QYotv_{=FJWJ8r}e3nSzbS3IDv>x#bV@G41msvupBRNcTkv1b-HR^bP5 z(rFu=^7S=WJVCiD9(9*a$t`C%Dy}u0E=`iaC# z0IixWMe$TJwt0$Dw4PyU^}M!|2-qsCqXB@QSMHLVFgpINfj{)pA`h5D^Gz{kRg-b~ zMXggmktnVHjSfFlqL4l?=*Y-{jAYN%ix*a(==D;A@~ZU`r{qNXR;g_j_BEgQ%Q(L@zFLx8782^K4m*BWw^8dSGI7*6s3wvViuCAt|MX2a_=X=8#?O$_8 zjZ-f{`hGpWVUgj3JRu;6lq)G1O2lPF@r{q@Va=W8`L-P{Q}GooE)FxN&^s9P+dX1u z@d)92`Ayk2%D#+sNGgTq=lzs?)}6gk_#xaWbk&xxaM|L!S?} zgXoG~m~0V3#R|jt>M185q_vW=nPMTZ+dGEW9#CFko)<$Ja%zbpU^+67C2$ja65^@^ z5Fo2KGSDw?kRn(E$ysJS7G8EBvv@_AxRs-=r1+qdN%0bJhzC5XSYBkhV@@DrrE|^leM%;=prvzgnJA^IRHdpDsCgU{~9@(svl2mKXFX(Fl3Tz-OZP zKKFXk6^lgvjlDYpdc}QfGU{lX1hKjZ-Vv($IxxA_%L&1Urry?vO>bcNc?sSRfNL8I zg;o^!T~5%yc0xfi`32Lb{>}vFWs{X^?Zx7q&oq_ijZtK_5(~vN>4a z)kSY=>~PlsXx6y5PaFE6)9a5A)pu!<&JtUI!(UBurXOfk;h}L7J+6B<#MBz-9fgQ3 zmoxS)Tg9$~8LbC8x3&vJKJaS+Tlm2gKd+z|x%|$Nx~KLFT3Da2u%tGBjO}_n{)|Sx zDt|GVO^0@P+58Op+rKU}x2pAUfc1sYn8*UJe%vr7@HVY?dpUZKID*UbQ>(NNFY3kx zPr!i07v`27V3bcr4E*JB4>W6KJ1((>T<6Y?=2JWQ|ImeZ6)ERZ6};WDAtB8^e==A~OHK}|y6}l{ zhXBj4PfwMxtx40%r*4d?!sLpAFTCw<=4HGQ7ae{$LXVfo5-L75HLW0DMu+bg-lhem z!2$bUxXs3$pS`IP6BG>SVi5PM){IYm;x-9ns`5Iu44qDg?rWe=KY?Rn`m8H_!jcT$ z5l#}vq(Gp?%O>9gG13vJqfnTCEHkaR09d0v@}pA$P9pfPD3U@qCq>`V;E~*>+r#_$MWiaK2?|pHnom+Mep>Z{y;9(jI!L zbUt!ltZ^iBt9T=2ZU%Yq*HSgF>$?(VAEu^lovjiV86Z|ig>6&~Z{Ba0BriF(@!D61 zpGLYZe4_ZrY((9xLTdCTw$x47AoOX~iF`NiiR3vfdlk+QoV5wUNvQa2a1^;1@u_2? z5h@t{LUTn*syAzTo~!YFJlvrsSFc*2o=IM}@@7=jEcJbV%yRzDuSl(eQ13~~o*LWS zvtl87Qkqyp?t_G(y%oF0{5494tAvUrreCT`Tm;ZNzM7OUh8y2AVFPXMoZN7hkB&3t znzcPD08n}Vp6H4=mWOD5nI#i$dSc`V#hyu}Mnx5EEeSGLV`D<{|9QyzHQD^Jrx$T@ zOR?X~NNmrdUN(y?oa=^rSoO<@XD}tBviYGJy)^kl;jgN$!n6|w1ax$91v_RWy5wdr zc(^t;vN}UTbX`opiCBH<@&3|)Kz~$KKZ)LuzC#@$6n#juE8>br*x4l6_mtVfqh_U4 zTs6U>k(s*Ik1FEJyFo7u!pu+Z!0dR46)SGjDa8@ulLRiykCSNFKm`YF9XNE!5$5X$ zd-EmtaV{}c3dW=L%)8Vt+JqG=B|ux?+>`JIK{ngn**(RyhRk@HE{!mA^a*Ay!|DVa z+nQepS3a|Rc%rl~#)f)VkOC=R&v%NZ8)y^GbTp}g2OH-Xw!luZm+w*OVHZ~v=i5Hc zf`nRcBZ`k!+EnaFPkc3XQd7OV`#>DLQL^jUHq`MtAw6Wjw2GM-W`jK7D%F=Jioe`spupY&qFnE z0)iF_&k`S>+sG5yujpIDSCUQas7sIA zIY3^sSB9gSW~L!bICVO1eYR^SDyTnvE-{afl=XD*rbJT6*`tn#mN84$oEP+nz*jH z+-G|-DlANt4Mt*X@V{Hq!p$n$`A zY-B~qp2D5H|DpaqI_7+N6veeDT3;U|ku6zu3#S*JeA6@WXzK-6t&bNppec1=-JE?M zQgJz-NYpss&{*n=XHxt0+56^L;uX^!(7*2DKdlNS^kh*XvUr-w7HsoZ@)^QDT6%qN z_>@NClQvD=5a$Nm$jM{_zT17-n{>C@*XL==F;B!HeX;e#K-UzobRwvp(d>@Bk%1i_C%2q4t`CsB-(ktzW~j0ugfmP zhYqWX537dJv3z{KZA2DNi(N##OZ$}f2H{ThqohsBZbkdq=yynarjl3+esASc>^(Sw zoZJxLg!nO%;7pGSZXe!b1MSe!zCREIdcX`%X8PROpud!9KiVqtAu%fSsMO6(x3Kd zOz4+xE=3nX@_pJw9*wq)Dg0**)jW26@`Fadziz-pd+4lsgvx#O6OhH2e?15@ z{f8HW@6nD+%Bjn$m z0=$j~r&&8gWt_PVePvS8I_w7Pw`@7^emU>>^v@!TI)JpJHG+ki8O^bZ%@|n|NQtD! ze5C7^CjYFXr&q>13?RLc_i|jEeX{o-QDqkT%+mfy;=76wVNLE!`n04b*&GkrBMltU zzUE!yWf$gK1P&{jR_0FX!f0kl)yM7Q4#!=oPnI1BHa=(DPhAuXJ1*IpV6Ig{>#1Q* z^d}$?yV4A!wxP@yp2N>qz){I4@{$UegAQ4%v-&qrpES8Psf3oKT1VmQKU=@U5E($} zIg_(O&T&=ux^ia^8WHZEc2ZiTXeu8&dYUB#jfLMrLioES>RrLG(qW}&rLCI@1EtuX z5-P&_%ZKllso1mO%yMm1=ikMtsp$~9hqcLfT9@k_4APeeb5BxUDi@RIU~c8j9axnF z|M+_h(~Jfe8$&{`_n2{*LZF@iI!!Z*(LKJEq$EG+7HsP%>#G)uCag;)g+my=H}*j z=|`#5{M@ZYxc|ytZ}MU3jL2-+)7xCyq1keUCX7#8Hh;p0%f|ggqq1 z()u-V&p1oU%U$Sn!e(39)&(kc$6?^GUul|SKb~TOJ0Ew3QjH)UM42#KD!;NWdz#`7 zOqyz!%O#ihwE85Mkk$$qs&Q@&KHlz;g+oF(xA*p^t0b*9AOmDOFqqOaDy*z#?S`1z zkAPrn|wU(GPxTE}J=}P|Lbf+AR+06%$dy*d79f-MC5^B3DG6u(s+R+W zhTA-|ed=p`S%zuH2+JKft(3(otg4EBQy+!Nd5ZPjZwq*@?4f&oM?D-wm zyEKxT+;ou+x{zcyf-7&t0~Sh}Ok949VN{Gy_WS0qyyqqYuiXR!ufw2LVQUT*Xy(Q? z8Nxgcvbm#q4vhMUsxVP{w+nWH{4BY*CC!Nowu$UxkF&1{N{wE0>mQci_Fr#dh4!r* zdKa(93~FNg>(Z*pE}~OH^7F*6t<>e0=vgaNjO>!yrc{R-Gm4^8h}k?&UkDg>DzKS| zG=okq`9=+NjlV26!8qSHD(5Bx*#5JQJpRdW^>p!yuozB#-Ca5r*nIh(;Fs{E zj%`*mb2U))hbZ%ZtgXUl#{W47cTfW45JrM3bWnQ-GMzty#>{)Z<8w=9SLK9Tgn7v7 z7{KaPtUqn*VH{M1lG?Y{nNpG{JcmnFzZ$IU?sD2J_tu~p@R9;60oTfu?PNn&6CxS5 z`>VJTZ5X}#_?*LEIDLLBf$l2sf%EkaT2{a7z3I>g(it|NFX>PCT&*a07nxT?;Q14v zwU*vjgO|X1if*sh0B&wcjWZw4b5)e)E4miVQ}d!Y4Ib} zLjycc(Ee$f<5b=(kJWFol0CkzBhEFOSaDpd@!MRcvB;S+3)}>Ub#IaCVsLJuYQY;o zt%&nbTOL78!j_`BL8XC>+W$RG9k+T@05ECuoLvHz$5S+KtDPSTENC-KpBp~6KZ)h< zF+qz_n^Bd8r9-0eD0uajlRQMxh*YPsfOL$%`V>r(1uC7qACG1I{(fl|Bh`}WIA-_t ziifK~T@pP(sWW;=&6i$gN9S1s)kOJOL3%&fWM@R1!?ImUa~SUE$=|UN{$O8&PU4y! z3_{={G!*pXu*@VJlOJC%(cps_JWed4>-2K_sZ}EszngIS3gn% zm>4KRc6;`=dM4$E0TJ25+3}7-*A%fSF|1k!M-~}BApdcH51}yTxcDqWllkD4ZWN2W zLX*wA1?smG_qZw^)OsVUhi(CgiNUIMrV8=-wi)S#-MP~5z|Mo0l70sRiME8G6?c6~e0Y1#A}`?0(I8}Gdu;as8*Kfo}x zN6VPde6x~eRVV{#zr))8IdC3}y#7;z{75iQD{S^(PbPX=Gc`xs+)5%{FA>4{npz zX@)7~rN`jXHR^MYQ`ODZkeb7$8$Idx~LSRwHyd}NShmf*ps#anpV<3Mi zxPqo!!by%})&1kst?hvAI+^&z6Z!js06{piU*D*yvJnM3CKFt#t-cpGodG#Cyc?;Q zfrL0pTejd)Ge*)w^XG=Th+y{xa~n2O0%k9Ll$H-7J*KxZ!H^9<*wp1|Huq)jSt1vP z5O?5vaAWErC2Cn;ea;%6GuiyE)ONM5UEkW8E<@8h&rY9i3H8s=36m!thp^=rl_<|a z!}jcl^#D=VGU>lO#C{}Wac(#^D}PYzqq!S9l9cB~#U0L`6iC)v4ernBNP{bR4#NxK z>GLpBVG__srZll*{@eg^( z{M$>(b8QP2y5Ry2ZtF|skJntUD(b07zVwQoJ4tc^Uki9nB$)WMdt`QO8;5l%C48AzGrZ3QeMw~K>7YbL{^sa6v~#E zqBoqRX~gR_{F zp+mVo{wE_-X*yUKoW82{e;fSls|Vog@45fm%jFu$;{W}Dbm4!${#)m+o`1*ZWX}4~u zmt9epfi^Vo@Ic$PAX>O!@#&;eO{{f?`S%D7ICb%0NAFh&a_>(9eEevgx>DeiVX4m@ zgDv|;5a2VJG(4IAD+i`|Q{z89Kex?mjqMo0D^4OF`{0kY2UhcO!yp?2bvt(|4i@qi z_tV~zIqS=_2UWJ~Cj7~KDHfMA4^%S0W58>j6<4>66i6$%tlxx&$_Le18J4)<%+b2O$0PO`1#Jzar?-}9#u&Ej8Vng;%-r#2t+K>ss&3*_jk z*L8EGWJXsdLWwlRLOP&Gm3qeOgarqaABJkZ91Gms#n)7E`eKX%-;H5iTuOG7aFcG+ zM?g1r+i%)VJn!Tb*hAygrvlRCvl>LoSaVt*$xfINm|;w&qemi5lqa?C+pP&ZdRi{# zQxI--)_N7@%u2KW*wF-2yDwxdGAY-e2YJsrGxX^OpNg4^#Ja&o{5eCv(QDeJm&+DK zkqq*TN~7@jW6%Z zCvK;M;iA!?o|?2e_|k~-f7MyO4P92<^&?!3Eley)szr=5GZ@SLY7NyBSzFjA6R*{>nZfy2^$Mqa#Ww`z^&n}NY!9&H=b8P(_Fpzv`*%c zWb>k{@!x3?P~GtVg4cbeX(~=1ztJ%l4n8viHc(pxnDXRLldxUtC``??~bIjEnXj z7<*_U?~%2a*U>nk7u?aPd0jXfIw``-vaOU<4w zHo{MTezFeahuUle(B(ou^reR7uW_lxR<_h$P?gV(Ibx=ozW(_(xXC2v)T}8>29+1; zuUzT;Db#oi0`##2mDvEdtE~w<_YAK}o2W^%(8xbsN*H-vE*$u~q3kkSlJH2Dj?J)l z(9f5f!Nf0S|R`P(4$pB0p+e zZWoZJe`;EJ|DBOGKO@>Yn>#&*yB?&9mb>VS$`(D@Vupw;srM^m3{Y|QSQ4QOj_5#j77<2{ ziK(9dXxv#G0{8tNdPU^-|JW->xPT4AAzk4XNDK+{AbzL_1f+mK;AV9!760OoOtx=& z9UykNeU{{yzhx*2C=~Y&?of7u0!=N;M4^edRb}@7LBon-yVl2 z>nh>0#>B;>bmR3PPJa6%T3gY91$FexGnE^HaP{@X2n5AGzbSv@AjhSt(<%sqc}ASL ze~nm?!37>?o2P=(EMrC@ACIG_p6VM|cjx9T*FNZi)XSpvl8{A(y(40?(=k0iD1K?e z)KK##7eb8cI_$0*2FjB4JKS4Is5RmZR)U+C1{C4o#)!_zgHIW1iU5RDz4GlIkg(_v zY^=|fJxlvpSKR>=)0l=w-b9h{(M$7YKka{F6FD?S2+S9AtGEi|X>rB)bZv3lXx}2E z*=58Gko%ypO({=jGU1u=On(!Un02J``-M0Z^I@9i15UEsCq5cw#iai!(j=i5oWCme zlwHdfRgDoikrQAEKIoY(J~dlZq{YUu@5K$wGiftl&r1`^SNNRcOU9AF{Ozk@!S^3s z!uO>vKXSVu;KZEtfIx29Xkv4C?dQ0!m5lI54lPIyYnxq*JX`Xnr^AwJdW`kw>w!JD z={!b<7?A!{nCO#v$%(WJk;S?ODk^#{jjl9q_AZZ`K+NDK(IOXRUAeRdf>3nQ-=V_1 z<7GX?l12cW@@t^ZHEzalpe}v8F{14-a-d}#jrOr$-|%QN$`S|S>-fgB1Lu3OBxntJ zQf#ao>CxvLNn4AjD-7EbBD<0Yc|F9&Q(yqhyY_MemTs+8Sq1W zYOt_7Lb5KRg%KRt==AxbI$F$yO_3=Zh`;KjEI`8frDX=)xa+UsC7Msi`pYYf+=DHH zXF!n(c{sEU^4#Ykh=)!fy#hfd3eE z_2n8AmDW|;fluFG9Q^$aN@s%c&K#lo~v@l^LoP+V{ zGTgSp;GsmcvC0GC{`DG{%x9l#^`l?&(foUklM)GTepy&PUUnw7!(M4TJlf66;BU6K zxv54Ii7W9o!xa%}*;Nl`Vl_y;gks}{kRTq5cN>Q8^q6F^|9el%*6&L3$M>G9#*1Q} ztIqV(R>yW6?OxVZRC6dT;7B`RR&A^0^@@G!#WpRRD0!-_N~es)?>oe zk;L%eDz@oWw^jU&rri}?5Bm_Iqf)qE$dCM-Zi_S8Mw`4YE>NF8-hWhI68y{N&c`Lb zNf;Sy_mT@{`l@WR`jD&RVQ~G|zgOjTZ@?x71OD&k#v6U|WIdvlE}HR__nzdKb~Tpu zTEb*~`BmGu9eYX*Uq@4)$Tsozvj3(hvY}pkd}XfRbNaq>L8OfDk^u^k+gW&!{RtE!YCoJk-& z`hPh=+emA$MX^fQ%9Qw>XG00$mKk1&h}J{?+21bARMK4FV6SRs$Rt*tDOTM80^g5% zcigQqJpN1T#^8z)R1%ZwH{ag|RBr=|pe+}4TZ_g zd&-*QR|hCIQ*{SXaOiTO05j<;CtO=20R(Nu2C7d;x!Iwu3d@TvGU*$&l#*APk(y4Z z9{+J5(&fGBV({086>*>?1y-vQX^cWas52r|ic&uwX1MpiC_$1%)C}qXFls30G+GyC zKel#B`q;e?S)M|E?by_F@X~ziTiY0BQ0u78D9D|5xxqHt-={*#z$Lh$wS1oyG=dI&5f!$6s123wo0%PS@R~TJJrmNFi9gyHn5!CYp z$=^jsqlNRk?m-3s0G4yjT=Yw=T6e?9MNZn{S~~6nG~_-}UUq~bOEuNN#3|Dny)BV016$tzbQ}B-i@xLXsLh}UzBTs0`hho;QX^Y==2TAj~FGGe;)-D^y z+6eoRm!8(<2>lU7J>00H{hGVViwYU^mgTH9?Yj3hnt+48uAYW48Zf?rhX-?pW{lBn zWRJZQQ*U%i8={UXFOs3EW7n|;%j-$EYh&)+8cPY=5}P9F_t2N4GY?yHUS7HGxfrL( zf=v)r^h1ve%cP?nEy+#c#a0w~ z5Qf?KF*NjyB`FnbP3YG%dE7jGJpA8-ULEYvdh#m03tTt!>LQLi%Xnj2f6*hw=H8o<&WM;} zh}l|=whz_i?=30MQnc)evtitj+n7Scb@bJ4H&DoWA0Qh*DE!IzpUVY;*piJJI{e># z(E(Baom$Q1A+--HAlX)q?-?k66T2Drc&O!G>oB1cC5#$>ckg zcxUjh2HG@dOhCq;{hKD38lh983XO6sC+C}8(nf!VUt=62*CkeNkNy35xKG#`k6mHs0QYr4Vv{U+Ya_On13%l|cZC?3~rA^&&_QaS`vZ@(e4 z*Zw)C{R)qa*rb+Kch}=~o0dow$tO;Ib$i-eNmf zVy>LX*AwFyq~GD)jkzaAlO(0!^@}&wl|DlrVHON? z;+qsrIX}gAn~|t{>Z2l!gu1(p@Y1TplNCp zKfu>f8p=o`Ab&MMu(qU(%wSdm3C#l_3)QDrok3dWuUSIt7X2=0D3V$|>RIiQA31yk z6UQ_$-hU4uIDmEZhjV*0PfXTRgMws8b+2@r@J9umdGD0W`Ws_4J&XU~)kAcNa7TBR zo(&3f%d3;k`z>l-*=poCxi6UO3~u}83r}KyCi(!i$>ezoeq7pq+y%F~WTvEW*udK; zp`GYIK>`ln_wNQCM*qHi9Bgq!#0k%(j0>eg($!%LB9qkf@d=v8zo?a}kv*)lW5^TF zeh+qXblPXV`9S3?QSE9>14Qj1qj#TG_V^f4u6yiIM|nqs(eaHw!k=+uze7C9B~D`J z-=aQDnYl^idPABvj9!s4I)z=e?)HeS>ZUj{w-i@`5BU!zQLHR&UQ-jkbG^OLmaZuj z`&iG5*h*2(SLpcl?z&I^om-4xoh^5#dMo;5ZSEWSQ1DL_sSJThllZI!y|agOgxY?^ zyo@97ovb7mh{~_0s{u5SDU_UNXIwX%^g|xf66nYihxG8>@E8djE7#x=FFN3n@hNS8 z{$*pclw>;@B{7;V$NdzDyf0#U_grmz9^3Es#dcN8TXq>+LaVK$C`??dVF?T(>Uj%= zR9~fpO>LAxy%b+_zxzK3eGtmh8X?n#!r{Ajt@W^o-o37Ab@3CC>w&K_{US5nvCa^r z&O%;&$LuV(qz6*DT9*MZ@>WxC1MTTr7U-j)Xcuta&+igZhW-Dp{*+nE;i~1YWWIUD zc;}wQ(OPR0Xw=&1;hvN7v)cFA<*5}jUp#SbptpLRSTSxSMh&A95nt2@VXl3ks1YZv zlk+gIeLM5Aij8(v?ceFk{G(jFf+66jen;IUBeQnqQS8$#hq} zIeb?_FUy{wk9lh#H-nW&kp@L#(8}X2IQoO>7EdoEwrcGq1QoINm3Z7 zcsVQDC{PbS>x&7fUOs|6$d8C4|3^H6;deAk|1bHMFqk5;OnRrB%_C<;*5$%Lb0qH) z-|#godC@Z4Bd5jt$w{l#^lNqXwQ`LH>h9jY@?ZRauX=p&l++Bw(ZuPBwNfOVQ2_x^ zF#Lha`Bt1Hi8mM~HkN3~34b2r z**5X1PJW^ol)B9VN-kEA5>u3KGjj%MMg)1rMeqfUPt2p!yU@@I*rLFkQh*&x{JagB zeC(AJI%JK~quihkZmojw*VhpZ3hr+@HiaVftf!Q2baUJxOkXkrak$N(pD7A063gDB zBf8^@Rax!(zUfVy5L{Qcxp>gQPd6>vk9j)2Eg7_q)$s;6uOgsDinfR<0ymwVr+g=G z!pc2`R-a}Ig+XNCI3DPsmw2Wf28K|UXhbJB80c3Dqz50g12br4MA~6ql-d*I+a`Fe zj!%zU@)T5XVNtoF-|(}$x)$4?H5rp{al~>?b7DvXO1xD%J78-zt`B$j;PH*m9<84( z7OO4UGyLwgIc-;C`@cKiu{6}hvBa6rl(v6^Nsv!a{F{hl&qtJRJzW2C%xXI-=7gsM zIBWd4N%=@F-KI_KHyskURD~}z#;h4@M4=ZfRPn%|9qm3v!1Ksoq8T8GV*`HUKvV8% zZbIp0yL0jcz~?2g6V#@}^b!idZaZsBBucyKV9T-jt*H?uWJaj{Yy`i4!X9AIUQaPz ztX#p^9Uka+Hwa+r1|wgz!fVQBL?}Q=Xb-^(F;Tn+(vF)2i_A|5G0XH}&AMvQ&5P}} zEv;UEm(1JVnWTR{WkV_xX|a+fY8xgc*G8M4EoFT6{nOhT^cRp7*E!V2{RWH_qBX`o<=jiaq?skRi9FGl{0kSPz z-vh3!`RpICAh!^h)|(Rr(~RxRMf_T8yIQvJA@BoXePMxe+C^6mUFP=Q(vU-jAD!nMr|Ad`4gDf}mG6;_H=jHD z?<0e6H=A&B+M*lkn3%K{(rtQU;DI%(J9v@1Ct)Rkw&5tIP)_!F&NZG!K zasK8TgzmQTVer8wYRmn$7Q^PI{mqz&YvB9+npUGJ;GGj}<~5hmUvF+ZDa1_d7xjYk zM?=Xkx7x;#4Z1>ZJ!lmvda93v!K%JHA6G!@?Mw>fmpFYzo#4L8$3t)E&2~&|ER_}Y zpPY9GCXmMrfO46KS~N|jUp9>GBzc!zI%-`Gz9d{NM|L|NPRI}l`as`1HV3Y-Id{W9 zCLbq>?A)07iz}svSQ5nrepgM}F%lE+h$i5CzqccfIqmT6Whi3^JRVutzn!>x8YT(i zw)Hosp@8s!tvGp%dNddM?YGU=jxU?r1JIiD0fFfYr%HnKQRP`j4<4H)EJ)u6CwAXU zz-K4;+i8yETSvuSm{YCrA$nTQFhSRI;f1)(~z*n{C33=48F!2p*;OLSmE+;z8j?SL+VtP;*P zse5*SGtQCAv?9GhLfQIH-Q_Q@O`nSKNn5G7v-L=vZk*zN2vaPjn9ir68}t!L37?ve zWkhS7@%03Hzh2)IKK?wWX)I9WnJrURCmD<;;z~^D-P_*Ta^VB-L?J}Iv|zvcpQ(E4 zhMV{g_lz^FE4E9l#w zcd=fD&MC|E>w=$6DtRkG3AJ+t8pVZQEpoi~N(cb=`ca@0Qi*{+N;WpkKzlOqob>{= zK$I_Q%bZO-Z=+lbhJM-kXi_7V0CqdCaLh@c^YleK4_-7My13fY;;*@m&p#(bliyV5 zW*lI=B4d;G63er74Ig+th2J@tkDorBPVH^xu)&|;Q(5*)bvDCV!B%p_|DGSDVFVeR-$#IOePcxPyj~ zS}b-|6XqCkt3ER-*im$Q50O}|avdUn+*>1deEa3w_%OaQH$O3pzO+@*-0rx>-sdrs z(u3r!QOnCo_dC7)$FP80ELo(yOQh|WRP0J$u%>{yZcz3u`(rkthr>6D)5wF{{-!)z z?>CHVrt*(^GarNj+ zII68;;TcUS0}Y4eqwu^8W}}_<?xv&DzC*X(>(URa`qh_8Wz0fW?n^73v$SSGr53J-~e3Yw9?(t0K zYU+@l*O%}G8Ct5grH<{@5*K_|p)|)72pl1HXM)i49_fG0sJi>5?(rY>Jt2Ha4}F2@ z;5~B&6F(t!+6}lELrv09zZ6DS!lx}c#-XS}M+k*)C?#m){iUpE;{*<+BYD~6h_kix zX#ELISow|UjwFDlS)F}XZdN1-ugdAf;3bDzv-O(`Q2?f3=`jC{A%Xnep0)E&p^`u4 zWXO~1-|gv!rT5rd$*wQuH@n+zas@`wb`6hHAp3vXYI(QERJ{Qgs&RT zUG?*fRPi-XHE(z`WHc5qQ=t}DXUW|OLnNE;|CekN>Y_nm-JJhCh4b0}MOs^3$N&G4 z*5*<{Bob0m8Gwd$Z8{k>W*!@`ks~B}`yiaWfOasV)bqYS^9E9_+on_Px_^J><)9vO zPVlhh<-kW$t&))Lps_xjaC|qp6SMgaZzr-hj5}4cP!35w_+I_SY)>P&e^%(QcBe^A zEeP*sOH}^eOKC+(GNO#Ql9*k#Xi}gw~eoUGHjlpZL%SFc_@FQeYk|mW%e7PAYemTnVFyuC+y#z2VrSSM* zZlWibhncszYvts%GxO%IgHWx44yQNUvU4s^P zcXw}br?@)=cWH5l;!>ozLvez;y9al7IoW&vznSx$_ac*-T)bB+%bxZ8gijZS?1swB zJfDvo{2>H4K|Tz6RI2X`uK^B_wa9CDgTz)K!y>Uptt>i&`%#oJS8kWM1+}?PI|3NT zAP85;2e!17YNP27WI`hFeVe@6dCGZpwngx&T!4n!|?vynol`s57kVSY5;L3U8}= zXnVboIHUR~_5Nak8PIjCQ8pYjydX05$QUSP7qF^eeJr3o7kO~iHR}C)qpmBGn7LbJxV2VG;DLG)s5&7Sybft%&izM4i!%)RBz;LfSZw9pajoRl-wEPC z9ry54L5Huz*ZVT|udNVidYng12)(I1K)QGyqeG+9gkhO7SG?E0(HvBY?7W>h*wo|# zb;G^6Zk#PA!P%c0?mU0kO0izLbEI-`=E9;v`<3Z3cxq}E)H3me+L|Q=l_<0J}}a`apZ|JL}EaP^P|aygIG$R z@H?W}F&#sBSW^B~&<=^SR##0^mGMo^qC4`=K-ZG4Qy2x`<)MZodu)a)*-cd$P_;e3 zdCSNur8t$Q*}bVdrbpMNHS&EPZ8UFr_|p(ttcnAS%ZP{fkU=6R{(Q_4xS^bG6U}$} z*p(PwkAx~_0*YNFzfH<3cjs@oV;ocx$LT=>_|Zj`3~OvgNGJ?WWzzZsR?iNZVDk&a zezsTLBy~g1{soSmZgEX5x-c<9CrvcwLPuwbJS~rB?`LY4o}2HspUkfbsbi)(cL^N3 z@!iUwvMu#dH#0P;zuQajx3QdT*YbxCtED9N9?trH<;i;8R{$Ln39A`CQ=BB2u`&PYxGxqTkj(*qu<`6e#-4*olSLnVT@e00^q(&CJiYK5D&b`FHCQUdzquW zrW9=G<2*2fs&o_rx$o~%Y|F*biS*dbq?$4?gT&(%4QP(yq~fVkgF@$UOp z>;6epAhQ)!Rr|t!sG@5v_ZT&F?}DKw?M^8rF^S4kOw6PiSd$;iu*aBi$CH#4A}W5~ zHEGOv@p64nK}GdRTbmc+WG|wp$Km(lgu`UFfh&(=*M(}RD3K_I9It5SWNRTonsX>Z zm{ZcOsPBVP2tVr{IF8x05UgqFj~IO3Mref(Bcme-zi?BEc)z8$cyg3go5DiKR;TxH z_^kinHtz@gVGo(UEegsGj$il4bx!wc8_y~}5zZyYCV}uRr;o%0?k|g{-<$pYc+S`* zLc&La@iK#Uqsdhl4Y`b+RmKYqcd#a+xHMteAUA{I?0ANLk1*uJIk9xeI^D?wJ#QX7 z@2O~uBv=^xznkJJpOCn}(=Uh@udMgvrs8Y|F*Q|tU`mF&e?;sMpR7j>0C|(?3R6$= zbd`B8p%ZETIPk%`JX#iWCrEs&pieq6`xN-oO@&E7V)-ru;y2pSdfs~u2K0`4oQuSB z<95%+j)to@+x}UL*h`) z-AG+$`4KRO5#Ad$*Fr?=S&GGW*yYX&^x4iLpv->LPM!@8O-Fe!{WxV85;gh)i6cw~ zv*aPGf`0-#=3JQt_=B#pqy&H1zT~iqH(eUYhA43uadb#c$b||Z`_+mg3Ah|US zYoGS$ya?BtQ>#20Hw!oM5=ewPSZ%Mo#T%fc!&P97yQ7(wiuFnHr-=|vy@Pzf$2B= zppk7#S5me+SAA5ox_hV7zFR?q_Y|8=;H}`)Uk$Ny1LS}9GyTkh&g@GC`3h#dvYAS2 z)S)v={^J}k>=2uOl4m7>Dz>DlI+8lgebQR1YmSKS?Ae`e z75(#%Z(SU3b9rUthNPuFR{=H7;OjasmrejajZ3G4GGo1SpPuuN8(t;%%Fc_7p2xG` zP*74%f4v&nA(>GpevuS=zGi(U8^AmmHEtaXo2_?!;j_URcbNMWqXPT0gv31kEt2JU zJp4wG@0zRMJ{7l80F`dmDu({-5$-kn4SB!e3^sD?N4_9oz#)MAV8Q_{$xCHgMI6c< zHZEtRU!%>)r1hXZL#5sg=CEO~@%H5dOcj&A=j_bG4H(tQa@VxYMc3C>mlxMKo=a=D z8>(S9Uz>?mmzHHEeHYk<7+FhZ_Ri(w=;3m6=*8NRc0t=vqpPvEV)arN0ZMsdI=ru~ z)9zOf`kMcgbU>LAfvd{f|C`8FF@olBGaUDUz$p@>nH)TGnGX258IJ7p6a~B{ttbyM zouxBQVYT|WuPBBA5(st}Mv(87NMynKy@Q8gHpo8O79H>t7tifC2v_;ykozVr&QwaL zGOML)-3VPP<@zhx=Q86pAM;`^%#&(!8lkCCb_}Pe$(srAck?gNsG9D52dUZ8M|%wq z6&AV>A2Q`d@JY3*e@(cqF=|bh$#1X4U=^9a&ZVVoD2PELOYzCBA3BkU!)}#P2Qmr_ zyMEg-rL5rrU%0M0CZa^10KvwnfyS{W-3wd_uv&)ysuE_qHTDsZY>2}ugna`Y?*2Su zAV=5XpCM<|Okw}P!JT8_`A_{t@GkkEvtvI#TvM3{uYdbVn`5L)(1gKu4Fx%);3rwx z@c4wxpr}y=CzZvMm(0>fKSfe{L1KE%3JFlyJ{dPPYPV9jt@LQ(&fVqiYMW%JL}+fcCE#v_O90=ezYb$Z{Of-EqpO%{EP;ZSbLDejqjd!mD;vq?>gANm0~&8;)AgeEfxLNd*zaT6&!h9j_#Ie{V&04`d1fd~n5C z;6-D}T6e^+DEkHbaV?8~DG<5byHuw9-oT{xzLw}r&Gm$bM$$|1yI`+huOXT=dwVTT zulo0-0_0E-g>YApq&!*=iV+CCq|1vZt2T5(BaB2cAu3h_mKw}|!_a&7DqEsc zRY8aQgJf;*oe`^!ESmX*l%C-tmvkjq2iH~PT)Lw_x*#=gtZN?)-4I*Sn=9Y)%F<{a z8v3#|Aj|c&4l|ATx4_-xqC^&9gsh0FA5+j3yGou<(1~1^r>XhA(S_SEhzq$3U_dORC&N#3%iWLHlC^XWcpE0nI!)BCYonN*lCZh?6tKSPEsK>cXHrB zKyx!sQn8nmq-3{Tt$+qi$#Jme@9Q5~d9@fzDx|77e$~>9Lvc0hBP;S5CV$94W=URU zA%4p=!mmzgGc|2ImAu(+yrV1$&fgPRP=u3E$gqM*AMqCIdK2wYE`hl_bNA7YT^Psv zC-|fHj=nqwrb*?4*Gmcxnd)uJS>&{|_zU-~IGyiTn190ft9QcewLJF~7hiWR7P&1@ z?i`lGA~F?B0Xz{v<&Q`Fg4MSAvDnN4;T0Y?-Rg}!B_8nGmZ0uI$rNG)=56Gpz6x z^im7H*z05mOpJ_ROT$z_qd-qYmJK<%>+oz!;@s`OqVk^Y-h>(_g1#k16$Wv~oxNeC zyw{P6)W${=%@9pA7oD#W*&n6OM=aF@5)dR7AGT>W!Ycn|41*2hL1cPKtfiIVu z7nh5yz|Fu`Gu@flSq`V0YNi>b;qhXeKs%Lk!3Z2~tbKfu40653@^S?R{T75Q2!Tc0 zp81bPSr}uh-fX|*tfmajY?z_>8K}~?&DRZW^@YjkD17z&&U`^E_P9z~Nh5ocNr&))uPa#*7rvC;u^8PV4NNJ1X{`IQW4)IFBan~Eou>IpQsvp!sdo>=hy$^Qs zcqg>X>W}=SSGZq-=r{(qgu2;JQk3W6NY+|iBn(eth%V@ahB2;};$LPBl0+dCh)j1x zDSue;e=cQbgVROg~`p#$i<3>;*qO0cPk155-T(9vxMwsSiBR-3B& zV5_3L*p-DNqi#4_n9OY4B5S;%hFk!);n3ha+NsZYwx#cKK0$ z`SSHIX|I&Dyzs6*UM32)*bgNL(|V=xyh|F~51!**?@^v98o^T)A``9r$W+FYEL(iI zm^}Ir$9K8dBbXWdQrczq^>y*2OzPbtrdmA{DvOqRucqYCC^`7bWoAh)@U$q{kfICh zN46xDS(ntWV38tfM^&+2*B8z+F;wK^K6#HU+|?7~;J4A1nT6t+8!_>-n1qSVEa=cS zEIoxiRQzGIii}kE&jNY~IRk@&J2@Q1uO^gzr|ac2O{0+n;R~JTejp1CIVVIlAl8Dtz^7Z*iKHYz>99&i}hzrbOHjg+s|RB zgc18W{%BTK_`^=$6=HC^KiQ~opy0MeU@bsvF`hi^TwO@;I+Ps+Qqd62iFbrCmIy3W zseDe1sRmPBO(fN(D%S z{Stq8x}+Gb4xF28oC$7U(44u(p$vtDL{9l5mT%0OO!s-x(Idzc66)o9{szCbdpm(3 z&Fd*G`)0Kcnu2q|StsE_lWt^LI0x(rPTSk8A;kK%bJJ04%egc;W_6+ejpx%ow^dMP zxt><^X+YJG8#xT8moL7MP2WdF7D`CG>mk>}%)ewK7_OMW7;H&iL&wK{=& zc1@k)5~1Z>Bk@;6kkd%oEtWYfY3i}?+X*3|)QS1cheVu=bOFA!LKc3e3KT-3?w6+x za>y=**#GtB3&dEbGX4c%V1@-anxb$w^75VL7`v$0cS( zn~kJybp;0Z1C4N{%_M+$wJz6FH$mq4*84HUJV`*b(-pm-@UvFwM(>Hi!5h2#@i@lP zbe1dizIaq@91Ww7#T113B(F9B%$SG)$MQO992wN-f; zMn`7NdQ9kO7EXDDFfcHb17=^#vUmY0TLM>yd}bD{i;6_YB4olo62Fb89RkZluBbx4 zG7Bv_+0KXFRuiY2>l0~;2#mMJU7?^N_Jxham$>%*`>tZ# zAygqAVqe;r~Ko|L3*ze=~PHp>$C4Cn#YZy{7$~oG+v4Qj@bf z+7hCP;UFee-m+0%)#4+14ZF90%?PLKZxjUXW-)=+73h?(=~@sieUJCKa!)X-P;5km zBM(vcfuEUo6#jMnxqeqBU8s18S-Fp3`V!*3L{*^pjOeIb+vtySCm2}*Res!H= zn-=z}1-da5WIT{3P74`c0y>_zT_7_Cs3muZ3IZs=x2^7Te{2b%V48=B~6w_9YsIn-+3FX`r{1g zH#k0wBOPPv9`(0YvBg1JLVB}1@YBULw_$-@hWrJ1A#pRs&RsTQ#s&XJQZ1p|-cxm* zW@FrM@t%*KHCVzd-H<9ltKoC1TRTQHQ|rgIvsa`_J=D@oK&&+LO3MfP``T@-6qbf+ zPwnC;X^uA@@nF-M^K9hnn(s&Si|yOE%>qohUm0`FzdDe#E<`gRiQgiF} z8 z>w|IZBjO%7hX1TsV%N0ErNFd2vrVjalL-sQ#y~k0UNt9W zWJKOXDPUn;c(<^}Cnkz-z#h7eV-L_*y(r4dr-n1KvDL*%U*)N3`WbQ=e%pTd-Nx(R z;I+s&uI54nZrph><@Yu~SJ;sEQFKl#>vleR4(XTpx&OCXX-|HGlFXgOB|DSbpSz}F z$?AkoMajqjJ2N9S90&P$E8dv9KpXT~M!*NJ(TLjb#STU2^^KaxN{@-=Ce9#ovCqD4 zgdT&3@%*n!&38%Og$ngg1yVvxcVI8PA};S>pOlb#%s>+bPb=Xsqm<@dC5eVtH~)k5 z{yQxkcl&<~_ILju=#^)W?tcL|{HDKsp`Kg&6`wK8C7M|8q}M3>a5K&eW0AFso(%$V zW!%B}0?vaCC*$Q+-_9>6xR}!v-b&F0pu;*sq?$TS_JLI$KJs6VWwSEpj@D&NTm1V1 z+q{45soT&2I-K^}f`WjO)v#pqh$_4fzCSMqa^yEVx>qvJgySNZ^go;Q-*4pFL#$B7 z$5Zb8gkD$aA@(}dTJ<}=z^id-;0aUP<(Ujax;pxdUs`~8I0}6+ji@c?wD-&Q9)>RZ zRzWN*x*Ar~N6b|cAGVv}p~*5!oUcBH9aLQ?sSgjpw)Zz!t;Cera6{ndA=$%f6~o%= zyNO4p(X=b}d4}giq=c{_vAbJNiGl3)$wGDc<|{i4Imv>zvzK))pIm2_cfu(Aibedg2G7Wjz;W z+F)BwyUG);Yn6IB?EQf%A|=6k*zst<<{4q7NS2qPm0p3($XQ%%Mk}S`*W}?zlh1Hp z4M`4K=0$N1?@yYe;9}#P&a+_wlC4Vmj%!_k^s8U=%erO2W(fPgI~Ss?fEyQDc^VBdGXX zX}gX%OUbX;r-&zJsdW6%(;|@Jsip@^(|Mk8I;dofsV96Es=8&|=vJz z5uDEMFB)2H@`zv@Ajpt3_(s|7udb|1zNE|DsW0 z^0Qdz+!*l;#-6uW9)xh@Q^XfAgL=w7JXl8cs9$z6Xbc;aYVS8kXY_sWIl#9pkXB#D z5$^6xI6}1`XCRH0!YmXonEGVtqk!440uq4_;6X6DJhmz5&27)3M7xd-0YR@nx&~IG zm$c#H8=I_ATd=zQ#RWa=vr_~6Eep=vR}^Cd1TCwI z@~oI#ML6+z2^ZnrYTE4u3bG&fhsmx90V+YoZ=X2m9XDiTWV#Asg@0^*9%DIZ%#)EH zPhzWM4_(lZk_rocHGX7bJ|XL#od^*78keD;yDqHAX3h(o`+oUE(*e&U%zpxexu6J! zHC|3loP1vvdbk03m^Dy!TBu`dC&$gutzm3uQYt-+=5w)KgN4SFikcVkR$nK!620x5WsDj!J~E84Qy zW4+t#*qW+?s*<(H2-gbXG1#uQX|A_0GeC0T)?uSNScT^sA+Ln{;K}S;o@SRUo>klK ztq7%(A3BQs+b&L{N-7B8n(I(SmK1IJ=pqHUERU3Th(>! zh81r+)3nqqfjvbyhV3#+g_Hn-v69$}Ki}Nr-dH_IvVFIx>O0FZrD91K%hZ?fhidii zSWWsje^6(Ow7Q>OOi2T_Ualvk%QPx3AY|B|3=WrXOBOj>{e%ulS1x>K!PooDT_qMd zJsyS%ao9E6z(O&{!$spi!zIJ^^Bd3u5Eq$sChxgl4M5ACYZ^yLkIeM3yVt~m{x~w~ zCx!)el|f8I1lF(9p{|Sl%I73qBlcZfANQ2affEbGw&Ny;4zaW58t+c!2R#p?s z>(!YvPU}#jxXsgB!C$dp<J`Ok}|frnL3F@9h5rY5Z5A694}J08{?~0RAuX62^$=P5RD< zaRsHFo}i|UoguHK#-s;5`xZ~++T6k8yjuF=@WTf=8r;}phc;|n10Rw%j{!98*O9~v zfffKEVYD$wdh>ds^S(VbC2I&g&>2PF>IOj}aoGwO8}8u1I?8Q@%g_OdHRRzguXu5v zEGXnspy_QzFG~on@NH9^DZkO|@}zdTgHJUzD|BM>!~uOLIsRf2z~*uW6Ii&a!7_hQ zdI6zrE`h7bV6FCJ`^9a)uE}hXhJ%i@t1&Gi1qGaaxRsR!zuy61n(2k{@8?|r=3dOo zJZaI_i_4+wPSLu0xw0qzdwh6&D@DOJuWCIXfwPWxvf0i*%ztm1q42Giwm*FN=u~;Z ziGhPp7PCHjgS2CAHiRJIjzgtZ9&#~gbirrgjofAU&YvlWdq73naLU?Iv)-TA*st)E*5pkKNs=_;@ zU+>!EbH?ZcCbH~?MTj)1rIBFuj5-qRiPr=`n0Bk*CnewNWY1B|sQ$zQ zQ9IuY2te%{y3!ual~JQ+hlGUm^ebtZ^fB>Ejosfm6B!D(@oDNyzW^w2!7L+XLzpq7 zLQ_R^46`ET!KVkUXN%@O<|IQA3{ywF7DFOHI=x>}LFDS`>1so2X^%)L@ectvZ9(ZH zqo@71`@m$Wp%mzmUx&fsVvdq4Db?QkY5d0)hF)PlpLhD|vARACxC|z7?^2G|e^tqR z3(x(JmvN(O^|%1s3lA=tdd69GGj8twPf4ixzu*6ht*x9k&fNdF>;Gdm;p{U5Bywa? zHtT!a)wGy$GQ?cjM-rFSlxC)S%F2OmMV)>k5~k356NVuJIrxz6wJ-VY_i7~mqq}qE zUNhpV#N>{X=1n_gMjXOyyh~w-p?+VPM=8Zh5-|__{_Fa@-&JH+`v_MGxEW;eG1OR?& zpbdYf#w1BWh^H9sbnI%_@k5r+3jaCskLv~lk^Gb`^dj+Eio9j(|`921!;E(pbp zaaglbDIsvdlnmu`BmCU&S7;8-Nl^Q;ndNE`BEt2@rpQweJ=ajoO;x$VMMLOEc7;d! zNZ6off?`e9Z5c|Mtk24RZ7zW1+{pnb{+kNQ1o_<&9To%!VRvGLNZ_#rCr+)sw)!v} zO~y{1*q?W_SdeObJn$T(yz|#AoRPX^Ct-ejmC^iLZQtGL%2clCr>XAORLu|9a-00; zZJ0B~%Bg-|7C5&y1KStd%=oS6`A}Q$P6p=fTB|KDF>3D(III@~uA)U0TzQV>N@G6n z&lTD*gus20EZz5>G-{^Pk1PB2)$M0U zj-DVU;DlQVK0~Tz7LzYl!*IoFL{)1_*ia+7^8#ZWZ7^>4ceoTx0??f=5AAK3Y3ekB z{XE)#l#~Ey%A#}LJQY99M_|%TZiSKl14tMFt6iR`fp)BuZ;csKO?2;JQ~zGN{eMAI z-2ah?hrZ;|O<8zXT`h!9+U;fq1wW|Qs0H~a07So`B`un^kQCKpr*#We*O&FWE>8jS%!l!n}(BbA}GSC zHF&tGcd@BnRBUXtf+Lu&GO@YmiUidK-?(i*2sFo4@^A7d2qBxVTjBJVX20GXx!`W)HsX=bo91Mhe}cy{IcVP!B%G6b77`l z=7jazv?>xc)j{~%>;tlh7wNY&l`rx*5F^S8%b@Fti4k!HThARTb8;$PeGP7Qtzvc# zJV56I)SfWw=Y~6|tb9Up3Px=B%bK*y(^R0vtjy|S1w|(9^W_-*1UTNW-N|HsDuJ+X)%|mQl zTnPTVq2VB)=tcW0N>N{jPZ8@6&9&)nHgb!rhdd~IYFYatUM{Vmf!Yf={<~sqk_b3~hXc&!^Z0?j$K$w)>_7-DAcAHkv3vJBp=P-j zx_X&L^8J`IzD}d9tceW=2I^VrWkOab?cw9Y<-X^G(TfKVJO)AI>B_J2mQWSNoWk1r zBgY>m*7#4&XbE3`^toAPxjElJwrjoXPWBDo0x5Uq2_T{aa6kD`Gw)ZOc5^;be-2X zAY~zOcl*zkot4~QzfPNqljR2G zOgg0bAryW06R8#0E_sgQE%nZqaYF;*6DGb7-YTBGiw=d&P=?y$9F8ron9o1mTVKb~ z-2>Q_j}&m?8N;GM<)}@fI@Wx{$@H+Worp7W7DC6>I_3X#Fx9R@1UJY2u!lop8tw%4 z?PjEBFB?X#$7_HQjhE20152k>8Bdz_!_DMs4kqF-`@jqAW>@pYs8m<-Dk6%WZ%l~j zW+@ReLjBsnBnvcR^3t0YL3`-%Pzs@PB8}1X;J6E;LkcJiTi{Ti4DzsaOEa{Za>-A5 zYlDDJjf(DZ{nn|o>Ba*{{ju)*tT_6M6o* zfp`5fl6JX)N;Z$6R6t;zjP$<;dZ(0a3ywFfIYI!O^zZLHm8o6x&|$>rGaW~orZ~uvvU4?G|1uU6PLSm z8Uv6*JJ7+PK5rl`z+WDZ#!3PuQ5Xw zr8*u^=86LWyYBn6-9I)RJ(#3+b8Pi=VArvn1;>^eoNt9Hn;VUH&j_}5 z!hj7(BBc#;0xK|tAatkbZjfPB;w1W3Jq&O+v*Rd9Zt#iL$lvTqdhvN$Tu;SAnCraBj=D$Lasl;^HC&I;Lq%So2 zp0Cp3!|N1O_brWabmk>fX?j?jH{c$?6S8<T$8w>ej~3(-1b;0SggIE6w28koZEjAlgO?%$pV` zs!}WFSlMiLpQwyoh<@qsH z;zyolBb+b7?+jnLE4%eU4xnWHR#FP~8Q^<;38&l;3rzuA?VqGPx-wut*(M)GRz?Oj zikOnQ%LRYA`c2CR|5nc}xW@0pW!&38jP)lyHqo?^hZk5nQ|Cjh06EccL=z@(!f}(u z??wubFPx+An_edy9VFd(?l~rNCjcRcK6t=2V14G};dv6QgBP0a?~m>$>jQdVh&MDG z+3nq5#H~EgDpWeE`_&Z)*UMzZgRcEr z?Q;IncD?qKjmK|7g)rDMnp63Ws_v8?$JuhZV3BDl1wRXh{z`$Ym$$=?yUH%vL-pQ&>_VazzHY`wS4mcHNrvZ<7ik}~hIX1x`f zy##m0I}V_nPPUoJyIOjb7BbQd;=*1scaA1{e1hc@!8>_SbQB7+Cd_#GMdldRDlO4I~KOHz0Z0NaI-;+3x@q6sOx?7%tAIviSm?^@u+{I|3oIKT|!e@ z49hM3P;;Xeg9)98QLIG0w^AQ)`DCu|sRtL^XuS83>Zm?qiPW;IU#$W2EF^@cIRKehXoUmiem2jhy=z*#x>dlBbwmipY3^+`B{QD{{O0}wsz$HE?OX*~-34kheCn2(iJql|80W*i!b2R)e z!*|Hm4%;A>CpuYeM@{T+kHmHO_+(%uS=XNskZue`HO%+)9zr5{#@9mQq));Sl6^Lbq2+nsV;21ik4lkA> zmNQnWNIOY4`BiUmN%SchauELbJ9=T83%;?^pk)rrFe}gC5#e_wL+#3FIF}F1<{wPE z60opaKu;6A(lg>*Rrw9Vyz9cbPLz%*K0tXt2cm9VA3K z0aCWnizwzOI3o&Jfko{C$0Cd8SlgFBy9`;aHgXYFz^=upE^yLjh%e~C_`Z4IlC-|$ zxbQCiaqlsS-H6CeMh*+>m(Bb9YXLdXW(6nhc!iT=+#qvvvErXT5b`(?Y2|#u`v)r4 z&kM!LdMy6Kh}4vAJ}nd3oe%38NyJ|2XO%5m_-OKGwWcE6^)o&%6N3Oz2A5s;q_Kz5 z&B4G_p{%cyMq1e_u7`Z2n6^%%iC2FnqzVCz3b-IcXerXo3fB&waE! zwQQ_A4vo5}N6f6%S_l}a;hs=k5Npg=jh`8Fj6+Nu+TzdD6EacsjbFN;FZ6V>$WEHW zc9Cdl$=>H;i*huh>4QFB6LxqSk034M!jJB@d*QT*`3fEIwgxW#`5(@!EwT8_a_I4K z(dZ-fsXTpMAHGX^g$yA=WP(}I_G_Cw@B5gv$78*y=M#CP6MshX9?&KogW4mWwE|5m zCYhTC`boKwj>e@kM_=i*Q(J;@+EriIA(SbeP`m3Mc0wEZOO^Vuank@~&*-I9XUXbZ zVb5VTkGG_49hxw+B~o{Hda)kvke@<9a+s}mBCm)A>wRA4O&WeQVMq3c_7(DZzE)U& z61VF&#MZ{w6gQ34jIgsd^T$9B?=iLhC!4T*01VV~G^!jQ4-ejo$61f&hEMor91BOs zi$5F+`2IuP>B}qF7Uo_)d?u){-Mi+j753s*)39sHk>Ku*-ygzGxZCHj_aHmU)&v~> z&}DfXVV>N+dZQV2q1T-;mKpJ9h28^kG|7{mV~Hdu4_F@QYQWCFy|GpvPQjDq8MF1v z+KO~c=OF!h6! z#PxtYa3pZ>y=%7{>4N)vU!dU_+XjyPg%&e!v$C?*ywAte*Xs6fURa^~`g(h--Tbon z+#c-pvDJiki@)IniT6xZtMdCS?2-IYXA={1q>D{}1^$(6OkA6!USf zgtYNxRcEf=A;!UCC2}m|2<&dWcHe_Vw{knu(3Aq;+ZMRT+6q1lm-|Qhi$0qScRB6B&zJKwnHzv(bK5S?=RY*( zN{qL~$l!}}=%gP&BJz3;wc>tIWaT=DXJ*;!RRxp5cE2;@{1*$Cjh+U7;k zgAY*;y`o7-{>VTa+L>iBYfChoNw-4~l%sjm)Z=T#+-MP}>Zv-r>u%dt0G*fDVi ztg#WqvBhrV_rp)k?(MD-$yNZr(XmZ?5o;Pk!Te0y-T{o%Fn&GNbl)X?e$5B}Dz5ZL z7+CIO(>Zy}=^Zun*bX%K4D*%T5j^P5u$y+33}&t8q0Y& z|H!Yd#unQ|qCI5r)VA(?P@dE-U6uN20UB`9iVYQ>fUPPZzNRfMY|iOS9^vVx6*VBq zO0w=Oz*Yt8unQ`?a^?|WKEkO{WNv-s8M!{xePbCh#Ct49)|Cl4Z&`b=dnL2QeErSZ zik=zd15>wY*tjR{z98wZC-8*F>N%YIaq0=7)&Li--fu!MIRGR1x;uuvc4ne!(EKh= ze+fv8n&5Q2Xp#$5RQo-2$G!V?-V=WxU_RyUzQs%8PBhuIY3#DoNxedhDiC z)Syew`y%9CwHEW+TgeFZ`kpu6PLOTTx^e$I*M;B0w;$!l^}*+%8E}riSx6mV3kCD_ z$d)Ibd4%jRwmVc|8;+NKw4Au4H~n8(dBTDUDquCdC-`&_0f*(}MJE(U@J}b=X`*8A zXJi5)vB~wC2L$?#5;_D#=N<cA z`_+bH_geCL`S3d$gL1qc@t~<{1L7S=4~t`AYeqUc0-O1>ofkUORxDA3MXkcZP(<8* z<-ZhKzZDy=V+>1L?2mqbNTw?8haVU=ye!m_C9^R${>;vfx!U;-x6%l~9GYcRKg8Z@ z{k0{o)bE6Wh2__nj$`}!dd1A>Z|8J0>zT=a4~-@mWhZ>n#n;kDd>*;4zKUKBJ$V7=x2z_e7BlaBCNReBxYE!QkQxloc9j92? z`fwZXLr%dTqj{xb7KSFuInDx@lTR7c;G-9{X+F>`&mF?5abmSpsltw_TK}obZQnCA zm(93$&|JUTa{Yb#7d8)pBc`m=WqFiNix*=|77x64w@m`Owd^V4w=c_N$41VDNvxdg z7Q9^Ob~SU=)52ep0Ed|@g}<(x49+5dfzZga6C}J86w2}VFR=%DS2s~M%ZGjRWB|fm za=Qh_0{4cazVbGk{WZ6iI#p~$S$bNkvbin!dz`KihHyTI*R+<(5`1D2`O}c!Y9|l@ zN5lL(NyMYXZVQ4J!EE1UdXK~g><2(`#;?zaWMx)GlvU{8eRkzpp5ADclgWP;r%Ify z`3JaVaMiih4^xX*V`xtb+RQT$3HxOllIErg$uu6y+Mnmum3%8E2~!h}RbD2f;3Zcq zZ!Z*3qhtNhp!`$+@1Ly9WlF}8ejG7MyC~x$5vB5vT;JCwe|L|HVZq5t6_|JJF$dQG zFRNJCn=oD!z`O)lcqJC6$Nk^Lr6%dbj?pip=Q$BDj|=7Z$qb8)(7tG^{7xIb+Rqds z&6YFBj(p0*k2lB|9gq1Q8g8b2IpXT&j3k&Oz^1sT`ttsDhtZJOOg6_Z9kYQzL%J*s zTSd-6lra3-zXD{8B~@1BHuc+FC=J#CwEd{-)V;Z5niD+2>UnD>z&#$hJZ4j%U*Xer zyO!2?gc8I?bWI!k>f`CoZl3dbn7cBXse&%IIbQe;74>OW4eywAv2Ho83$LrULk?lrY_34@ps(7Ki`|blG5N8w~S4m}= zhZyC4cy3B*^hdv$9U9OJ_RECuxO9bX3T@DfY+keLEqtoX0A^+@`p;gXY#K(PDl`ww zNI#wEu~-F_HVx#WCXID9;HiGJgXYHU1~%jKd2}=)O4mv|!*YXVfCly{y6-cd`HMT{ zEAW1S^9};edo298t#t4AUYZ~N~JC4KzfF4 zkoX?%c(1B&i-w5?ExK+5cYC0HA}*mR%5Rjs67lV|9^PWk=bS~jwv(v?xhf|5XRj7I zAd%EdX;4XcgDGQ4)ZGkxE6^OPMTH7>7&f!1tiwAAX0ov6&$wRgASF;6g1@vwt?WCz zR&KuHl{}bh;D3B1Q^>0O6fSP7qPaju-gI#8Q@<8pf`n@~e>p)vFZo5T4}O2`!jy_0jmR727Mhfm1nm~{)` zDB(om4b?8bF3V4vuk&$z%a@qcHQpP3Q6#Jcja>F^TZ$T~g|npcOZ*-r-xn$=9G#uT z&Xxa0-cUBC+zzG(S8y>hFi5U*#0Uc~DEFHh=MR&~kM`>7GbyDJ_{CxBa-*-?Kh2KW z(MiYjSQ7=l%yw92#E3SazrrEG_2&57ck5Rp0Ip) zhVAMWr6ZHAk;7T@^JA_t2B|7!^58QuDcSyzYb$t*{{|XKWe)U?3BqG{C&(l^i4*&& z5O2=}JiC5@xo>e4t&K^+F{N89z6pE~9Uu-53A=KdMBE?45&mg%*_XNj9!lJ&Q6WX; za(E&xp2!-=-J&qIumPEswCYjQyU5CtNgLROCx6_5HqE?|r{eYgoox_UE)K|jf4X`} zotasLS{fTezCYg(uQCR25@tiWxP05oDNU!<;W~)Ao$>Fxe1(lmN*nxH!@>HNOs6@p z?>`#qphJ1hBza-=Qh2_Upw*ycx(t25Oj|c6B(q%D6Z$MRl^O3+o8y&3BCUKy=ac8G zN54P#fwrJ9iT(4Mq=KvVF+*HRLYJFkyTpJrobN`G&`#}PariYd42WM)z$Uk^`T)p(b4Fw+5O{SA`4dH$K_{LC>;J$<^$VncvZKYo~efR(aQ_IJ_BWpwr$(&*tTtZVsvcVwmlPD z6FZsMnb`h%?|sg>`7Zk6{Q+IiT2-s6>SMPBJ0qEVa7bv_Q&T$^W!3wuX?_eNWLhB0@hs4FeOmO=8(JHlCIWUs_p(q*Jhbt)RG8#s}0GBj@&H$eMGgmV5-qjc= z#rJ~d2BYC*-Vq{T`Q_k?<;WTfdR$)l=JK>n|!_<6OG z$$~LSV~)5x6~UVWcp02hLX$iGE>ZHYQt94Gc|_L zcW>KO@{Clg=<)nTj2qHgXI;4y15}TjEpA^8!nL@L=v6mbbc;}2lmgH zM3LW%Se}%w=0Zi<#_+gH%15<2SRY~S!W6o3V-JS}!HT zZ{xF!b*Tp!C6{ivy@Zr<9E-S5bWy?DP*PHfHsjb|V2~zGrbXIqEM7v|8fx~ucvONJ zGDS8hY+~CziG@hx?REP$H5{}n)Z>`$NJu#Yf6S2FmY#Z1*WE7SBWnc`4%}fky3Kha z%?>IykPKU^3tQH}_Op(_MI83}2qD ze60m@BiERjzb|w?lPoX%tiQuBGiC7au!V{XT`TNKXk^lv_*~G--TF;l1FSQ?a2{L| z;By^EN@vs?8Q0vj=U+-0`Y%B520&;1(E8uJUXqj)lThY>ywIIL-gPRqu{2`mmmTGd zRzAQGPGQr+jnF%bz|67a%x|xytCg`|-`hqiC`iarttlR9B94NFHwhb>vdDgawGf?} zpjKX431eci*JyI6u~zrZ(HpKJd+vT};!B}`w-TS{md>6zg?U)%uNzZsY%D@o7opM1 zgx|^h1>60_29kUhyTr?_xpJKzj@#KHN;KA25Tia+f##JnxAPu9J^_K2v9+yjEFir` zvi-7q6_}CIeMV48`+-i0jHFSc6_xv2ac6NHuAz0FgogzN)1u7N>8f$e7+w<#t4{P$ z_c6Cp^Gs#%=;#O<8dhXOgMrz9N@}yq3(K@OE2v`3O08B0F@QcVE>^c~H~z3XLqnyg zsY!T|1_MDYxkeGG)j!nm9=WqL9|Qc~p-PSgy>*gtRD%Bx8nGz`hTXlL!06*?lf{tn ziscr(nu~wPcmxz?{V`YgOWL}H_Q{tWEjP%Y@6NcGGZ|scqj5m;W`~O`tu9NzEe7L2 z*Kd~#Ud+!%@VKIBbdqwpkRKWfY%mj=h`Z%xNvhot4G}3C1NTY6(8>F(O+>5!S1DzW zJEAqF2|Aw%cNK1akxOzAHA+S!{4S!H%m++SKinPtRuuYH>K1;)9h=))Oj9HZhJu4i z>`8hk;!bH&Cjlu*`g+K4Fn&CaSw%i7C@9$Bae?~-3`~1O8b|I0CP`BJN&m31irZnO zhYd)SE2bqxEhj%^hQlbSs4WpjF|($qz^W;@&1aTNIbt1wcCPJ2Jx7VrCk7LAHH^7N zj$_?brrcA@_tW)t1D#VXPC=~Tp~Nu0ErY9vM??{^ucC_2X=hZ8y@Gc6&oz6$ZRG(6 zCl@d>)hVhd9lfXIBsS)|!zNT4K4g!+Sx6jOkc=UyecZ@21;-&ypnot?&xJ>(eIu?6 z46*QOMRL~lp2Q8ijYwaDK)6oAN2z=tfAuWz0DTSMjUs_cLxj5pj~k$)Xi`+1NPI9X zUDM27ucpnSb|90P7-R0GG7o*f_dWFCl(ji2zBom@VDXQ&%r8Nr`q@p&RAWG@^8DDG zF6(_f9ZKZsO_N8|a`66VuTVIu`7myI2y|I!RB;FfGWyBP?tyOn4fhh_QdUZ`WWt$o z@Va|+L~s2-nUga*ma94vnxYybJ*A!%bRL~@rg2s|OAo`h9{aM9tS;Q_H%iMn_?vC z0b|UW34vTVLRGpO7Mv~iyFq#TA5=%8C(Ub6x}5}0u~jZ4wb2+_MuAYV3w1#Ve4;&% zr{jlAzj{5ElskQ7TPmw`nY}nWO=-a0EzX?BaSm%X!K>2@|YF&wsS`x8qW4ULT^!{qk9uD`Fq)R62A=sso#nd#@PeX>(HN)};}kOto&@R(f= zJUuay0s0ux`Z83K{!!94~ z!&poEdwanC;PAb4FIi)n=X42J)5PP?k5TG_)A3PhRl!I%?{PX&nQd?>8Z1JT$T>qq z(KXi62A?OC8iQuANSMfzzrV>|p}AcCf%AL6gY)K^ILo)tEIGBx=vUne1I>b1spXw< zQHbwkCO7Vx>GXNxUSZqF-8|gI8{(0|tS7cPF;w1K$npDex;Y6nx-}ob0r-eaZ{O)8)5RB?L10MQdjb~Z zZEcqnmJuODl080_%>+=$7mR&vW{P7X!G8m`;__44IraSXPldz107(F6VR%{p8Ip=7^)ncdg-8}kO z=sObLfk(3tA{83?glV{i`(%OZ=(Js|e3S59q|jfB-Q{Zy=JcV!d4ls6$g`6ZClrlN z$)tj5DBLHvm-L&eeAcq?(ET4aIZbI5{>tGs;Wp*IthwC>6%L5w%r8rBaXZ+%%2BSk zDCMt9;1ri%P*X#zGzJ3nh0VyezFm6zhTwCEHDvt!+!-hkF2vPVaOMg)1MBlKg50cx za9J>Ah%a+3wuW-{iFk1sc!i>$Vw+ptxXtlh(+*m|`1onq&%!aImQ;$Sy&y4-56^s0 zGDr8L1|ifF4S0bm2IE>!buHbbDBbG^`4~Tl|6n6Bavbw2vE+12_9wi)!@&{}U0$5s zWWUe3<~OaUy?;?%tfXMD$B9tfy?Cs5GS-7%{FMG|aH4D-OWYO}Z!}669Ggi_=S?Oo zgg+rhuPFM9)wIWSC4+^_)2X($QY#5vph*1f&44^Ltnt~?Dls|Fn^VNpj^QcYM*lK% zJO65DICH94Ou&C7tms_#64oa=woziDgD18g@!jrXc#X%`1!ouka{t!$*@#Tmn;lIv ziMYEd`v8B$H91_(`eM9191v&s$i~<70%@knDF}{amb>gU<>u%i;T!1nIr6|z{r|_d zI0pwDjC**38fse+VE^fN5Uzom>L|aiPeH{~`=mshMjs*CeMJ**{8kwOTLZ1A?*zZI<}CxjU|JcE*do zXhbyfUIj7TvW!lFozG3OcwOA?*msfvLEF7=m~{?yR_k?Ofc%%|TWl70G0YF+-g%_& zMe?zf(VDIG_i}}g;M*P1dqi_gbjcv|Lq5JyDeN7i`~*`F;WF?FRbrK`m+LYY@STs! zH6sJhHQUCZN-vGe>OerW79h$OHJ@%&$QIPvov@psg#Ts>i3v|1LM3@@`kt~@q0|eu zXJR!Cms#FaG&lqd>Co!<{d;fXkj`qp1ZG=bmdPD?U|_)MU<`$&jbX0c(a`Tb`>2VQ zEk#0OlgFiljFT08q-08_)I*%oqss8TkcAw8Vx~n^uDtgaUbCE08@R@_ZjwpN#Iu{e z%kIB>IIFCK1o7qB(}SZHgFea>oV=UDgkc+BT4bk4!0UGr$hoakum&#M^0ti0K($)5 zFD40}kp^e@k%NbJ++ngoiS(@hAQoN3$y|;=`CS!Fg?d3?4``y?-gu36G^P8kS8~fl zAP(zXm~;ijk;5T_)qlRdx!Lbf9=o+>PzR$fv3_VZby*10Zs*_CY%Dy``dZiphL?mv+1} z3@5|4A132vl@&j{3#^F<(4@9Ms11@XhT40p(K|+ErOTOXFi|KG?2J|2vlW?Yg}Rnt zT&yUxY5!;B2m#6<%ykzSh_%_NJMimGXi7(`l{EW%`Bbc1R5Xu;{AW&Cvxw1HoRpl67$SjcejDGWcEG`$1`sRD+9VkPa3W+748Dag~_VI~7EeWzai*8J`j0bRO}k zEp{}E<}V7)!JtN)MOsq19Y)P!{RHsr6ULx2{M`hlu*)X0cg@Zy1n&Qp3>O{rIU zSK0y8^?R~dnVgrl(hY4aRju|5Eq^#!YtVm~<%H%;X}>~H6ku7%e}y9Bw;4h#Go$(a z@%&Bfqu_(U)IalZgu!bq)A(~m_z&xz;?8lXP;Z@3rmuBF1a+(d1aEYISnMH zZDgT&mWkWpYld1cp~OmMjQ0zH^5&l(BwLqS%(KvK8bVFjHae76gOPb9dX!rLzoX#0 zbjCYb+LD5UOdDp(vu6|@Gag0BiG@j~MW~6?rDy9g@P7VZlq3qiBPi`Bg1$-k0^msM znMyCxBylLNe`cdJZyJkMBId^w%{{w00{c6zaTx|u6jNv5z1V_p=Yn0Fad70(ODF60 z0!+ofzKrzgkz7czj}_l=Hxs3$f>wql$84^?u69624$o)he{rt5C?Kf)QZlk|@cZ9r z`J)b}-4+>1AXZL0^y!e$zocp-)V2(|bF^bgtN<6G%=`GrhOvT(5i{?=Bk2y;PguH3 zcoeToMnc+8B#26E*s%6?`09xJN3H~6f(cLF@1H-NGcZgbrM!TuKMw>dzu;x?dbT?3 zkD#%rz|y_3=rC(XZe>sLo9eXCA#Q%8*N5zE)?zU;Xb`qOU^>4jvG(GS5(0!1{6>D^ z8|3wGirY5cjq_EhXu+T(AI$%*nV@f(c+x32)~h}Ugl3Ti4r*S5Pd?b5)zFI&$Eso7)VZtK$8g(au?o%>jw zT^AbCmNH|#ex!zp8vk%v=N_BMDMUy>gjZdiuMiJz{*ZgOJBqFgYPRC$@{N3G>X=i3K zFp-yPyBy6wesUeDH70Lmt3?}=XfeL5VDOV@cVO7o$-_k?H;Y3{TI}a<6@_)PvVfAQ zn0Up$2xC#DZX0!n_>>_J4^FN3QQm)>?$`9Z zc8BfoP$@VVXkce21>MB{KH9^}gUxqXI(t?67n*QE{lJvrAyJjRvEnv)WE7N82Yuba z%>ne^kA#7#sS3&xw7v!2i{9ho7AXMK%{ZxKFS8uf$`A^Sl7Ho|K5nN`7*FrB7N?Xc zFt8!X&(8Sy_~DorzY49ZJyv@>Sl$i!M|b7`1)dK&T5bN{KlKEmCN3it%f@q8Yx)vlXTVp9vxSG zDmHf^%Va|_zyGRVJtGURe`GF&0n`<1!}91&QLFN_?OIa6ULo7JxQWfnr|J-2R`|7# z$KCiU`7T%jzZ_fty*SYI+5d?DpWqXGF{K|;ZYiSw_i-r&5}pDcx>WglE(#ii$2u?M zY`dt@_JuKy&W|v#s z4c@Q*8rrk8aMEb{P(^1-0;Ab|YHav z=+Tagp!Aix&-NwDOcVLos+aJ7fNfF38~vL}8u5J?yLJGHYHvs6D$rL*OOrlYC5?r< z-5D(oP~0|n{XF6E?mMO=3faL?5qX=I$lbWdRMWXP_yWw=A1KQIxfAI%k}dPa*nx1D zzS^TSk4m%L%RDzSPNfQ&_sEN%Itr;_r`ymD->Buf^4z_M#<9+kR2hW z(esAbG7WFWM2B5nh(24N>xbxKihd-?EdMJ~@=`-fzP(9ASRJ|(fbT(4G}?k>GE=I& z>EaB13R2hdRJf+$MQlVdF{ob;{3}Q^W>`wfdge9g^y$!`C3jm`Qxz@W8TW!_X}tMZ zE+eMVATghd@a$~*y6)`oX83&J%Z^XWB?M=&1ULxJ=19sH?9a3J>98|%11HSy2;8_C zaZ;K_^{}1&#&I#|>~up5){`?luvR2j1cuvEb2|ZAF@}8fu>_RsfneAF=>0jgpgb7= z#zu$X?t%tQzNSoI^Q5KeNldpk9Yix7-qk>`-K4oXJ5AP>M@9i4=}fN`iwYQ{T;)Ik ztpV0pZVz$THpQ8Rh z1R&`6=?m`vt;*LQy#vzbNt;?nJ`C<@9p{Ik_I!_ImJV#_bh#1Fo+?N4BP>Q)X;8d$ z1aSm_QP^1vdE6!rGv6N{1?V`~)-~6p6!+sD$Oo)`yb0Cd2{KJRdtfTrNiw!)pJ=@s z$tfKzr`ug#s$KU;l1@(0M5R>&2@b7{57JSSqwz$|NilKKhzQX}^0Th_Sj-&FVwZY6 z2`M>4qmHgPRbqt{gNEMFlJP@BGe4YMT}>#MX#({0a(5CZ5hUaD zQ)E;yWGLjAz7#bH#~5dc9wWHD@HuU3rC9oKO7?q!L?s~vJT~-k;KM~9Ne|GgoiM3- z0#4g+g0z~IanBvx=rqcZ-H?d=%f0@Cm4m;Pe;eb023Dj8zK1}`%=r_53o9%pLn!|X zEV1QuPE+s?HBL^>v=>QM3uA|ACIY=q7mUGP{7}k2y2TbBlocBt5V-8tL0cb?CJ$Ne zIop5!q{g4hQ`Y9q6BQX&W*I^ze5k)E7@KdVydNBY!ZG)TIk&LA3&Ym5MTn0-ge?*+iM|+wP&Uu zJ+iA#&yc)NXK-w61Op;T&*p)v zR#w!LICtaUY_!yIw|m^d5}hTST<8K*hPcl#&5Hn0hA?Q`r{n%8qo@ZB2+(~yYEL`4MjI%{|VCr^z>&k`_z!Hy{h+|K9j9^$o~138PSyWjek7^U_dQ z@Fnr4c)@uQH`ZCGh%G1(A~DrIUbv>sI0pV~^mXI(bI_rAPj(SeT0!_hqX&~ij$hhn zI9_+$3GJG7?Gh7_{zXomf2NjTXdk_w2{~L3Oj;s-p@AzeulH#|9J_@){G=GuE$5`= z8QR(VrJliVN$~hg2eSr*nQ$ixEab>R_C5^MI{!p>w;Rf<0Ae#YM7gA&0>a&25V059 zzD?!j^yPs0L;r5Vl4YVOa@xpyu6f^RDVVn6sbE__Ld%ydk2m?4F6Mq8LJ!Sy8_5W} zk`@0TF#_&gcpE!$^lwD}z9GALY-d=duwq(j~q~Y%X`fo|k>_E(Y0xnQO#~EMYx)rA7(m zRqZ0!LA)ZTcYFE|dzKM7{RpC!zhW_x@-f)U%#(Zy+cA14%ndxW z+M&DPGfw~((?5RPZ8cE?GKetd2Aa*mGyeVMr*|wC%iebW4nb$RZ#}%nK*yb`UKZFi z#_T%k?&H|eN`(sLb9q=Itd^H9gsAYGKBg{@no+}*qQqti-5A^B%sTilDqrONxt~g+ zDKb8N=A-h4F+Aa-yNv7DTB4`nkyPG@*3rL27!_!IUz~@v`I#94F9+X>2l=w;d$!$K z9PbEEbVp#nAE&w-?JDRs*2iOp)%?)_G?Qf`IgL_b@X%SL!Cu|>GeOeW2auf*QJGm(=M$Vgp2Zr3rfj=hvChcL6svdZG2ihqSZ}&%N{>PR#{J9E zWAC5AkD4#MiKVWwvH#n^eCq<@d&ur`vQ&m;!}Cl82>GkrvjlkFc9*R-XrFKI!l;e^ z1^=1Q;kT^DBHf%YJ&BmkTn79f2IC7UX8r*2zgp0{BIz9}<=|;{Exrb)>Ui}?rLp>{ zaP}vn$JOKAsVM2{6U-Cv6kTy$NI_a5sJR)zl8d}Ad+x=Y(D7mw|^G>@^ zSYt?8nWaLn6TZ#vlR!fwtww3u7yb@U_{FnX_sG)h@VMOR-thSp+7Qc968_bfl-G?Q zkh4~oMZTnKVw3Xl7{TkXvdHhPtwN;}*FU>sf&$zF8&BJYQy@xhjLsvQ#w~6sk>LS;+G1(k3>pn)d<>2G* zxPN`;efSp}9#3d`U7!d`Ez%Oq%DPQ-=@6e3Y+!EfzpOpi7M6sy2&;&fsB8IPs&D`dAWlopnT9hYU*`@6~PHIFW*e+?z$z!O5M!8v=e9yU=*w|nx5@O)cM z^N#v${09LF0VZllt!?@~D1^spG8Ku3|8`(*Ef=FwW0`Zc#~+863k6UY?iW{3K>U$W zQc^Nta6h`Tf@K(=A2Dh0q}-)qu2!QCMfh^t+}bd+FM0jTA7N!CFU(qn^jC}hc$0Qt z^S2^X6EA)>gR{3np>4%I*wRUITb0F(`<9#R6Ke7}VlGVy819g<0Rp=Fer(Lm&K|QRB@S>U+ z0&{L`K}?K^y1{zL&Mw)_X-BC8aG@Sn=+6NYXqIHw=11UvD%g!)@?3=aW{i1#;8rk6 z*sV1|5b(O~bc)?+g-(b@QEfe(FMz$xK$`R&3`WEuh9+Y3_1tCU631oqyHqd(_d|+b z#JtqH1}b`?isExBGf_x`4NNXNZdbegX=qdGiH}s+pW;c@i!qaj-(4HpN003JW^Mb7 z6ja`x8I?wT9={pgGaD^n8co2W9k9{GoFi%zJtD2ZtOZh&K;1)|H7b*!5O!0=8dl)JOkU-r^6>e)9bc#dZ<5mE@ayfo1vFJq_a@zMJD&*@S}&2<3~RU$*nn_yAuZU)%f7M<_Zo< zeccne=|qN^wgyb~V3CFDM+m&}uI7rH%+4~8!8kdni&KYnD2kua3w8n;Au}OjY!taTMK)2syj8r5 z3}!vUT_bS`t%ZMD>jS;E&@}gXgkqVyI6_pxCyY1#KX=Er6A<){DXcy5Sj0SaGR|ua z^$&eA_XH!3j0-ta{@1WyjcJs5|Rcf5>)iZnG%K320n8s~#LY_Zs zo@C7sZU1}j2}?@)`C|S8$>;t*a@X`b9T5A}(98>MeGL2O)!%)mn5IhT2^t$M9o8#p{Det}i2{JG3#yLu&t#7@VT~^i^8- zf#(};|95T~^qYe&CNPl%HcP~eIfCve4$d2SN3ZI7Is_VEZ;6nrvvXMLSg-jT$lbr1 zn%av&o6=vQ?1%BGOk>T1jgI~UPq0i)nbGOP=!9!@8iysc-7Dvn zXd*hDg;I}CN`EPRnj}~G#>>OgWX?zP&##LJRE3Ligo!B?p(tS`g_@J2KUb+qM6c5e zr;GS^Bqsl;(0HjRqN5o{67#;Vi79&jN%*Bs8yPaik2oH zB%@bxqSLWUBSR+gk&uDuX@e=A7uIM(8=pPtu9Dv#OP?PEO73cIQ>aE~c4Tf2Fnana zKhlBiEGA!q@BW{h1AC}D70rRQp*%AIxuG~RM>iqGezcdHZUfEdouTlV1-{1D`h8*~ zG(hVQ{a$A_k>_Fj7nN8Uy2C_v*Rp)o@6p zf-jb@V${%+Jkwkn1H^LnDBIDxgPoUI$lf2k^VHrxxXnieiPJNTW=9<951;JY^lQcE zgxsbp*D35PSN)R4F^TOjVSwKyKynX{UX_jXx9bOi=XKtJO8k?6BRIVs{#VbfCh^NO z8^0@EM9=KUz-8UE6Q-gn+OKUk90{Prx*ZoLPcFV43L#^>lLprsg0Qi> zYJN)Z!`YH3=m)Z>OM%?+{eS*Kq|&DLB~eUrGtp&55)LO)VAG7Q)ag(9maQ9h`9|Wc z)D>AAvLX|RyV>FE>FXzyrBFC|UBWDpF+@u9T<-lFdW!q(^u@q!cZk3AgX~*bL5js& z8fhwJ+u7SAuS)sJmzkMK%FT@)pZ{DS^1`aJR=r&RiNRj&TNW0g*j9VAAAZkv^Pb{$ zGNyWEIm2RheJoUJ!)!eZU)Li@o%2I$m8b7`P9B|M4&H!kAN+$7NZ6E?DOQ5=@3dh#N#s!d6lr9VahrWrb~*o1@%p4aa^i@J%tc_WI56+}PNntlhWd z^5l03cbegx;a>Q_53sEgQ1YUgO4adnYO={Q_UdYemIkCMZ!90dAOT7mxs_~~&osW( zQX^PT{s)^!PFJ|Vv2UZtvDehggChLD4ZMdcbYXEtf*e&sl9v}2ElC66sG0BNFZf}8 zn*^S`BZW53Ki%xNe*on2gU!#8OjasKSG`7{CfkVmSH}SbI=Sm6m)yjx{F$jejdQoF zw$?8+#~tfbMVVdF+Sm^&{0~72U=1xxg(}(g6utLMFnOv;ryik;WHuK0!R8IBog=g893Iyj zJsC&wSMu7u-V-=&AJhuR04y6#$~s8i*dM@Qmll^W77zJ&(WrBd7=b1%G$g|zo_u1B zYn^B>ee!U)D4&C{Zh2IL*VWyD!uO2T0nB3FZ#+4t5D=Z-n*q<*T#j3)uIf~$n2qmd z-V4@c{`2}rUnN9eOeCwRMbr+bhlFiM7;`NKh0(BWS*rSpdo zpA*;|3OHE1#~eBjaFYIh2D`~|k~)#9w{W-*RD8*X*0SRx57Ibu*UEjJ$h60E(}{}( zyS<3LY|rjbY^%#BAtb4GDN;bVtVg^E!BRj2Pns)`~nkq#e^}{`$Z>MEug%&s|MQMVIIrXE^gRcg-3=ub)+X8DmYpJSy4G z{dj)|ojGI5tt)#;M1kL`28{iRNjY#^yqjf`EY>JKdhc>Ng{@Mrj@S;!k8(dh zB2moK1E$}|(cQ#(Hi+HxkqE-nW^svwf@0#oKdCSNiGmVFYqgv;|ITAUPBdaBLv4y} z$05fAAK?Zk3+F4~@I$1?G;#d}4c)~l?4|UsLah;UI+s6$)qJv8&zvhGi>mJ_6UG-5 zsDd#rfNowHCnl^5Zek*WjE5KHxl4tGg92Pf&@ug6b^$!H>KRO5$LDmRmzes*_@l!) z9Np)1L^YfZx3$K%Hh8?IYNy?UAKjZBsIJ=6pST^+pJ@(vZ8U?K@hTu(DFRWF!wP|l zU)H!6h+lu-NG1sbd;dLC!Nsu1lcj8M`w9mL_A&e%ZN^AXE}i-x8e@=ifQ&J7a@ zQ|aXFELLihI#(l4=gYH;H}z@CfF{7aQ(qba=_O>UMzJmU}&L)?MDeMmxeBi_xRz=!Q;{Q&Q7Z$`p(Cv^m1Z<-BWCLStfL`tpWVN5gFn+j?KKaexeN;4K9S`e=_tB^ATX#5#0kml2NDwD zhSpYz)A`}K9(_@_^X1^XN*N;+$b{SI6qCHXyc~%``l&xR7h^qAWYK#4KQ#*Qs6kB_ zlu`=P=7-<3bpm*fY!|IJfeZoCom>S0NHw}|bZw5hAzR(Nq%17jj(*bi2h+J=x@{Mu z_or|y*6&&=wCbogq<}}J{%!vJ7W(^9 zBHH32@w}7>Klq37#R1TVYr5EfffH2c8RnxvcEFVKgYKL?1OjjW#!uA~z#O#A22vY1 z!~^qrei&x-Z?C`$Zl!hjF$j-|$cqh??_DPrJ3WjAr_yQmcUnoeTx?=81(O<4dP?0V zH33-p;U_Jo`|gV0l(zbR7kBc z+|)26px7iv8rS`ODb7;a2*urwYo)}x1F`@$Gu9R17S(_X18)^jL<&p8K}z@@g%Z{x z@yo;PQ+!tvmDo=eJ=83O53o?$Rt%S{DW>lgOx_j5+U;#^62%g+T1S=qK~_aC*E{{9 zi*@=4*=C?*h!V131xM7RJC{^D@kvN1r!ULQ{XefNjGa(aaOG32&$G;gJMH7 zga~>%#xeW7Ax1*!Z%*`{DCzt0`@Wl|`0<`$qJ@Io1b6Vw@scK&8m>cP>pOR8N8DUc zv*Q1NSCdMOml>yT1&`VyGW4}XEsQE(>}E(qJXtP9f;0$z708d)S*;bay&@2XIhM%{*Ta4FRW=`^prDNZl;Pvyy>;F+BaveQ zR2CE#8ILowlB(o&kOZIZr{zW4D2?jHDk4p~vBGhtz@5&_CjIwM{fsxZRKV9m^cNK) z^}oi^|MT>Jfp)n6z5LL^8o#=Bvt`l>=3OGuISrmJn*oNOn+W}6wzdif`pVs`1V5Oj^vZ3EHouz&iLXPnVH1Q)Y$GeYNLj-SjC==CcgAn z|0%oFEn$}zz7i~Ead@XEk8JyQVgDdQ(Td<8xprN~ts=9rv9UW4dS0Q^Es!U8H@M6Y z?eu=aYq#+Wn@Z7c$kCO`c;KM3!{>>_&J8mnCaRx}D4>LL7}SQXzxmTf@~@QUhU)&u z$A|fE*ecEHKofC+n_Kg57IH-K87D%E70Pf=mw!#8CD+HO4zUO(e|z0otgf#+cX}<1 z7P(axMM%qFPBDl2AZls=*=D%^WA}vi;nUrG_!WM1!Dlp=bm-*PGOB5aFfvULVDhMF zSgc+hmczx)4m>3d4XUk0_|4<`DRw+9dUM!7^6Wh&rSU5}D^oOvJe@?T_oTu>R4^*4 zgD`c}JDN>pKJs2od{>C|`W%!&X>A%l|M#tbaG8*#JigFk$-Bez5!>ZpD(D>oj*Nvw z;UE=O+HythfG!32BUE)~FAX*qLwk<)mgKCZK`uC17T4uSL9EiHjasu5m($^I+`*9N zKLKY*Q7U<1HMt*mX+rl@}^BrXTj2*3Pz=}BSx3k#u982M>o z=iC%qPlDIEF1Y|hst*f*ruRcktM}02uGe>TNoyCv6b98O2J>R^k7Gqb^cH2z)PN>z z9*1Dt)Hw8tsQ@(VT3H!#^+;JSbxALpIEF}ZUYc|{?p}Jw46eU4wX>=>s@vq;L&W)& zMQqDdbOkPpP*sW%-{k((&RHCItJ&O?HaR44&>WJzhU!HgKi{Aw00R8eypsHAeU7II zVsIZQCej&#!WB_(#&_hM+$N}w-1%cd`CUZ8P3E%;sC2Kq9Eo`=0Y!Mw_dP)=9ZCn2 z$270Gw4QmNP2U!(5~Nv5O2}+KpCC+?1B$fXaJd}7>o>4K0WRlKjDk>Lnkzzs{Sw$u zs<4-Wa-zk1eOF+CWU7I(uE|cm9{gH3tb?wfc& z9kz`iDB>%vqRn&&40ZTS_pS0MPZ_j0%#bKe3?#%Qn!cw0{>J8QAhO}K0WitjU;FFzY)2ix(pcjS`0}xIVWvG{Mya?51>y_~IM5oKC0F;!-NJ)v6PShr{NiyQE{SIaj zK{zjzx1Ny28+W^^@y=lxR?f;&Y{m7xKY)>l&kr#jRdm9Um6g?SNL06NG`HmczuSlF?|Swvii(PO45P-9xeN*6@%RyM z=H|5c-N}CdMVue9Qg5=z@j%SzR-}DkMAEyg<|9vg?Dt0{n%wV%e|MmDU_RKw-m{&$e zLzSS(Ld8lXrVtxY(lj3(pIPQcp(x{0mGIqGuh$y|)bQKa@Y(G|Lkv6E`xbWf#(`og z+O+@AE*fINa*%b0#$xIP#(zt(6N0WEj*diBjE<(&s^)~+zBOMi{@W7(%}njcvq)x$ zri-M~G_(-=>Lf!;t$rK)`}glwE1g{a8NXv{Jt|3Q9!?8>Rl+`0j#Mt8ExL(18E|al z8EIXe_eqYIp;&jy$^~VlIU!P1k zusrSawAZ#mjKmPY$+94g;bt8?Ki`;oKF{KLAPy_F>HJiyS(1(6?&e2k8rg(LewQT^ zZ>&&-2De@iYbM7Zn8Q{ctRnM15#DL|&Kkb`y^9hiL1kmTAN~z9E_9{ei`(axoB!@u zxGTffo2RgROreWRyU3?f*Zm|a*>alI@q{8RAgWTe++-jG=F}dxB*KPCuPgKptA1yG zxEUJeTEZj-pn@i1Y@7tTJSJ<5;~pHF!bD{BQf@P`*V6iJ^vKk^`}ojY1c~O$=Ri&w z_XZ0Jo8u3_1{$0J9*PYX(m?7<|5ozx@GrV6rw z3n8meY1d>da}tb4;8uvrv%05G*p|6g^2XUY0vai(H=ij_&?|!OSaBaD=|LkUKS?j3 z%<1#}6kCbAP%c%0P+pDzj6zqnvW%0?nB1xWp(oQ>4>IOfrJYk)r5jDwqi676MOny) zix4xV17d+BdUv4irvHM)|6v08PzZ6z{3pi+ez@GXX7tGZM~SFk0x1!j(JW#|{~a3M z>xo5p{$Az_{g*S`4ZzJzXU0i0yd0Y`epMLz50Fev7`hC6vCsqt=L2@BXso2?MAJf9 zSXg`)8=e*{v3ZIBW%78zv$IYgBWyI?AS<&{ql)cfy)M$ZCgX0blZ<9+%$_aFap`ji z`L8?n#8fi7j1r+OMVW~nvlF*8&&#(TcUT`m^15y3@up>MQeKi1OTxjwOm_ku#_|E} z&qh%up>;5G^6rrmf8^zrOTB&2nKY0$+8ITRq_|a*4?j9L;|l&PPeVdI;t%Kdeudi0 zmXq;wqkCvzf)rgK2cOe!9MdZTZrn0M_5yL!14}x_2XXa?aZQHhO+qP|672BxTb}F`=ij#i#{`Tn}eSYR|M(!tTtvTm4X`fxVpj%&h zJQtyndox3Y!)FSd-`y~{&!JVS72x`d;?FZ8DB|M6pNd zheHbsK(?Kazt@{i64|c3Q!JLCW>)J8#+uA2G=G7y(Y?a%%)YALifP4W-}dwuk4Y}N;=fH4F`wEJ07gqazOTWb#?SFFNfAFOU6~?M-u5PDG?!s+9ZCA|2>T7 z6y|y?@VHZWKpd05wz7dWS*wZnmOf4lEZ_;%rU81<)qCUVp z6Iv?AWBJ)0n+`v7@cOA70sSoM5I~=#9GggU99}F;cQ~PoBr3%w(o4iTv|$w3zUEN7 zIyRs*#i?{Jm5Gonp!fq?JUS!+^R^k)4~}}m;5z?B*i=P99A@wa0!tiEy$Ez%gQ*%M z%2Q)+x0koN!Wd}?-%86P6E2H?h)k<(!{s^-xqK$Vf-?CVWHOCbc&FFb)3*>^VF?|z zQAkH9N&_0u3mC}+$gygi#TX8VNF_Y^0uI#;zN2(3)#~Vf*gl5ogKv3v_wzg95`fzM z7SkZ&Wruo|(T6&TR(ohpg1~q!aGP2i`kyA#=XxD&eOO<~AKxyad!cjqZcb6awTL0k z0q)k3)D;osyG$beiYRdp3y2vU{*VK3_k-hQ>25wntx-4I`RB#!3f*F^Nj%LQOz|h zuYXBUDouV`onEv(*>`}zJm2tqLupAuL~LwmxHw!49xDQ`cWY>DENW4)5dwPt4|jI- z4-R8OG+M3b=##bqtrA6U7n+ueJi#dG+!naDx~-8zNq*x4`{V=+^jWk>u_9k|!6thL z2tTa`TroG#+lR|_8%1jfu9;Tl@|k^M+Mm{HpD{pro}jvS)g0sq{uT#28zWe1L3WK) zB)v&bEUqj{w_(-gk~PAfXLJVK+}QtE!qSV)_Mcz-`c)1|`5y6^V60c{2i9(C?#AaZ zM8dfU(~oZInW)1KQ#2HV5p!~J_pUy1lFL7Wc)jHc)Sk{Ucnab%(nmJoG|L;0*eD5? z@TsGGlGLd#OP!=!;!>SxM?>!wxbXR94oDXwZnkIhioIexB_?v=E&0Eq)J&;~UCw}9 zXq92n>GFl&8)*gv(<_lIFL-j%~vA3Z1y_AE`mSx@8xP6&>cp{$!)cp za{B-UB~r`#^M*Sk9ebR;nEgKojgKv^n% zR7GJINge_7M$%JB{Jh!U55a6YF}iQYoVw6YzY!}wmVJrSQ@Y1E_D8O;L$$&b9%hJz zy!+1oo#3a)JO$Eq^9D?gk2yG?@~FO(_QUkByYa`JP6BaJDUt?*#FV@=;CuJ_|e zqA|Hh#t4;h?WMpL$y%o?^+t>Js2?i5e(xdI83cfgfMh{S!pWRNeU?DKh0yRg0NtY_ zL{8Rhxd>J+mpjyP5T3wquNRkmU!8|%5DRFYB_`s7?25~qNBO-TQu(9T?Tl!Hy*9Y8 zxKDI-I~V~Kk?c@x><#-RosPa44ZDd+qr7Q99WIa8Gl2Kcit)~0*|&7#jb^Jr!(gxi zx9M{mSQ*;~Xdo+WmGpgf8`V_FO5wNR_T&HsvbzMv`%KKN{}HDC-5|pJx&M3R|D6lw z?29TD*p*cI!_T-0-xm*-7^wZnA-_jUe!$&(R{Kb%x-8ty((AnyyA7H}M8*zRXCBP; z`J?mIYET87MK^T6HyaM-K|sKWdH_1OE?EIl1M!-ye8GS#RW{-W?z&Qmob> z_W4{kh{0Qi4-BGH=2BBjQSJ*#HcDe#9|R7*9WN)oTg`EFXl*h)B57Vgt72=C%?l_5LN3Ifm|}l7fVZ|B4W^+*rYu( zMjSY@U_&D`;M^IkDmB~wAxZwh@qS2tpJ!MuSBput`jQZG(5}iK=~9HpEZ^nE9g>kE zQM$^?ma$?7(r8ml@M;>+C1qpWk!OBJN#OhZxQ3m6lWsDZT)1MO(Z4HnOg$j*z;wBw zxiN@INE9A<5iNhI#8cAHmJ$t(k3+`A$vL>Xhlh*X9ZqIrqtodO#b&$Ld!0BQGaeBm zNz^5#r43B1Z)vj`KZG4=IKS~wheA?PjysT*-o~uAH+Vz;z1|#gKak62#a_kdF(u`t zl#`KNMD1b>`kRqq!Sj44Xd!_>G%#Rblmh0gjEq9Bg%Qfbt5_mI2>6u4v#YD~h2;pi zkdl!$EX2H05S*no5=ao65E5O99eODlo-7_; z_E5TovXdmGQk9&LW;FLmi2Sjf-ygXl(JvWeU=|T%g|jT_33JC~)(hGUhIlFpOYO~k z`RR&rjiVV8YyBm(29qb^Tb;QmNE-+$i-ka)tM>0*0E! z#{rOV$_ORV?Ft#M?N`xgYBmj z&RPp-LjxmE+Kvw|*dRFkVS0E`QSmD&rB$#M!m>0YsR;xIQIBXEW+_de(rKSmaoLam z-Twbs4sPwk|NHU3Sk)V>A}SM2-)3U|;A3vW=b58b2HWB~;N`o6usn&*Q9zJNkEMV8 ztXQtVBqA{98p-w}JlbEU%E$Kp0JI5N`}dX^nxQjm=Qm%x6$b@ zzT-|b-`2GL2%_TR4MOn(?z>2|q0rv@7j~b06Qu}vSa8aM(073&lN<#fjT^pgrj735CG4x;@* zuYj^VRR9k$Jfj_iB$~ohEOj04@~8o8$aP!G*g&e0;NrC^!Qy%0BhC$*d+eIygIRGM|n0%^@{%;hT1~W0~CWG*_32Z2~_J zXOhw7X6Wjh+JdvQxi_5;O{7J@#lEnc0Z|eD1CUsk=O#p> z;>84nI^o}w3)VGxCK zCCUBqbg+--!@$f+m??|olAvp{QO*XbXZ21uD?p_yFj<$g7j2YY~1XZNzgZ^u`Gx3m`Qe3GN^Ck;l6h4wl^L}O;i+06*@VNdE1Y?{> zzaH4xAz-`MaCkJCKDbP+jwnxG43RKwKW{XwSgyyLLZON!8ij_)lpdyUKKr{Y7Ml}Z zF!v-=@bMQx2f60WVmW=#$7j9mAXY-vpDj%%jKoRZ4wFCTPTQPryo)^5P#wR z{EyHB7!CGz;QsqC{I?7ohE@MG(eUda{{JQe+mA-%uXw4Sm+vA7(vMQZu^pkLK*2!@ zZH~?$;UW9s_+rK{^?F{=20*r6UF{r2+RyZeNJw$Wqbm*jL2-ks?=orw=jf*u6&S59 zTg{gA$KS0$F6O4mVNZ99@jJy9djk-J(lUv&m?z3N=wwyGceFX51EZb*D+1$1`Ea|-Igwj+e)!s) zL&?zSU`BP_sdP6*wv7o4HaogVi0Huf_)miLl%T^54iHGaIgTVyhGj`WgT=n2?+FD| z^c@)~BW2R5-mZh9-Rdx_0SKaJ(4UbRpJ$}d;WuqVoxk)B5#eN{;)SNp5L03l?^uhu>>N#qA=c9?x?$>*O zHwqV!a@=Q8(pg{I=-=)Kv{m;EBazMgv-(dh;_)qD|6A_yikF;Gkg*qYXN}7dJP9j-uo4%Jzu;>oKB#2mDZj z85I#HB%wes6Ds3%I!0j9h8T`UHBD!41E=nEm9xuW0hBLI=g>}M@5Z}|E4HYy4vEa; zE|ol`@#CQ0Arvrxme`yV7CmZWgn2HZ3_6tE*AX~-4t_Y<5)p3(>xp@wQ62Y1Mkv(S zs46gi5#vDefur^n0%hQgQac{1ub_fahW_#-EZ(eOGJhGDd--LndRD~+R9dBQ0F$Vy z!}i;mlod0Lt*qVGgxKwK0X7&M?sr{Nc{HbxT8_(V(Q2wmPBeyouEI`&{!|36Z;|- zb^FNW^-P{`_m~yQ^qLJp0Q7Rc`*zt2F^!&ca}hDo!3Y%g94UX4prPa&JXHD0I^`3> zu_J?MwOFfx@%gx$lGyl2VH!>J=*NUHi*rOH(JqraYh!EJ*&t8FIyqGisH_1|F6w6x zioVCW;||81K1x5V-{b3nsD0KeS3~2-=n9Q0h|PA(2&q(QW|K94al?$(Z=w^J!@Ex9 zfwWNo>Rpk|k($N!GI()$1U?C2(9K9>J+oz?(RE+3;-Xu9liTpjwDnq4dbOM6nZ#8i z4ilzJUp?kAtqx3GIsNYCC5&=En6x!^s}^Z#a&km*ah&d!^Y8xcJlgfkp~aCAw6r4a zx<3KMXs2NcN>}ssm28B{C|epuSs#T$e{yTy)u$Q?9)+qb$9DR2hTl zz4Q`{xTv6>Tv(T&*-|MqbbhQ@2HzPTyOZQE{oQo_6G9r5Tk^=bL^Nl9(oj!v7Deo& zGM79Cij0|o=O2vVsca(AAMCg$cXlAm2P~VOkU4%d$G>*F`VpdNSZbjZd4~2S0kI*> z@rFkA5M~}`PE?i(kR(til$nATRC!-4(-MaC1kcph?0)%cdjWoR5#D1pvb9@V;_hyD zq<42a;Zmrhp_kG6>WZz|AM<8R<7FD&VexNRlWH}`-6aSm4W#_bbu-Yy?d|PFDrXB6 z%C$I^s&$bI`un$DZM7(+#GJVtzk^_cMFh1xf== zuIG!zDU?bm-0U^O-(0Plj{2y=TU%Q#HXCWLdHtf0)$Jdo5wn0^t_p~=&$hSU-ERt% zo8Bt^)Km6mGT_W)Pjl2XNn#FTvI62BkXS%fRHKh2+At2!g+&> z^W1jEW+sareC1|KAfGk)f8goEU=ES9j2V~fBdYB!9JI@oeob-00&u+3KpMb%D`6ck zpJkX|3O*qWn_y&Bik;f2Y~hv<{7g(pgoK7UWkJ1jNv`%jK0sJ()#DT5 z{@(-u8DIk4Z24ZD@61mV2scrBWx(_P5CEZ;8BHQ(HZ-yd$@>H|oaqL&_;Z9Tlfi?T z|JN#bGTm)|uAlYA4nU*4oQI3WUPZHAHW)se!qhijogvk@KZ(cSDnZ}e$^oq@X_h)L zj)7dl{@SRqbBZQ^U7B{|>P)lHZZpH1P^F8$BBwVVEOcIT{R`L$C=SC!ztB zP`%i{F^xLY;oLtl|8rDMSL~Y*+41%klVk0VWHkR9!6+hZ+ z-mB3@Gh@cbRyu_a2R~p-aNJvf9U3KVxMz=ikyDBGieT%+=8PxTR9PJHCz45oe%0+A z2@DoTz`+PzoM zqD*~Sl99!JV-50Q2hd&pDbkCrq|j}|xIdYM_4d{#Bc`K-MTDfh95_g3ZkIqrPnUQ; zFKfI{Cm7Yy+Ng}XMo*J}3RiiHr*Nei1IkP}VsjI#Z;?iI5`j`m;&0Sp5t3rkq$n!@ zs5!TtZlH#RB`)j-T{*z|y$C*%rqC8jb4XhzSJ+56Q#=Zz!3Jw|<7|}ul90k^{V3+P zwy^P=o{F6^oGCP_Sfo;^LT8OfyT^IKQcW!+Tgck=27&+!2QaVq(@1?{@qF(eath@Z zv~J)5hvf^#^wQ2&d!5K%$Y%RvU%(#cpDJUWj5xW|yCgXckUfBQ1Ers7a)S9DQf^QZ z@?xfOQ|WNR-xmop!1F=-(%}sj$ySantU;lelp(2Xk?ukCI(bovnFPE~aRXs;Q_lVG z>NuLDP?&SvuajK7v3Y>Ck29FV&tNN_BzBbCwTM(6ipwzy)s znykt%l|X$60?g#6Nwzam^d#J@9ic1(Q(Ms7WNN8Y3c8Uc5VPZZ4=>dbi94xAg%S(J z=Bv4%$^IEpw%&jD?rXR?93CN#BVX5goWW6OFULn6svfANrs%WOMewKbTZPbki1;;q zm9*DGsh&lk$L;R+hhI%V`P}p+)dkT$Nlr@E*kV?1y%I1MxWq@N#KpynojQ~%^h$~F z_`E{kaJdUTqtgJONAfp#jDTOsBYU@hmm#2F4wX?YWK{T)rz&O;tZ-sEYYO)Y3CB(} zA)M3ggo4d#G6NWq$?l*b=;&sAy7>nUK48R^EMrke!xCH)h&z;hGA-tBztLZzjsug0 z=}?N|2i=2SY7vmbPc=m8SS>t&X@+iq;jPh8Xf4Wzy7gZ!HA4z_Y<_E!{)=n*Pl*hB zhBiL>_3!k+M^)0`6qpOZC50Y4xC>wFba)WI^aEtJ<`P(=PqXGR>9lgy%9Nun$9Nph zL2;~PRC?Sy={SPP`t;9|3X&=#sy{W>);YXAp{a$&eVHLT9k>pAA8;~RFQl7Wx@$%3 z3=A2moi6B(CMGPSi3^JxTH$cGSw_cGb&fB$R@M6K@PGpP;c0F7+kI04ZLF&7i|RuK zTvv$z6o(~wE2H9qg@$40CI0Gnl8o9xzBqfFC}Fn3P%~P$u~8% zdwv`?AR1Mm^BPs5R!qhNjTRIgK`i}TU#|cH4tBdWy>2w?FFm$?&*%{NlERuJJmm1n^-9)+^76u}~pVofi02A*eh&JmE}n9M^?cOLk6~ znq0AL%Bfin%u}8WAtOpMiQ+k>1b(8(`=gYXU8J@hqLk8cs@*2-t3Op4lEw{YPMYsQ zJhGIGGhEvT917*KyL{g~eLhg4)o8bvgjQ+Mj)UUH$~i~qIXSwy1$9+bodz*>UvG`h zGMgEVN2TVFGZG@!64f}RR-P`G)Bht!Ij7g{Z7yT4b(%u=zW>E;ww{N%Ho`3cSa6m$V`Nth-6^}))tZ%h^`W^GN~eDMYeXwV6TLX|R{ zy*35#d;zSbE|>CIjR;(BxV?#^t!kFy88XuHTgQ$Pjvv|QsS$p$RZ1RK_(6Z#ju3nG$?~MUa|E~@NLHbY4@vMx5AL{7lOZF>Z zs8uOLQ<%jFC>XRBOo2VYoUL}e0j&O4!?m;*Yh2kEC2&Y}L&4Sa5)Be}F7k(M%qNA8 z*>Ux3pq=hEvuHg@eNHkko^Saecca@2C{-(V0{MAc^%m1|DAcNG4MsSse25k~l4mlb zjP7uSg^PL6~^Y^SIk3Tk%(h z_2hBd->t1N!uu2XnmhH7Uv1=?mgY113UC!Td>m5d@Ok5*)9a5o_oeH|uiv98wCVAx zRI6aBS}zFzc&CP?5e!>@vnkRLvL2Gkmq3q>fD_9aPh^>>P684W8Zee>wGiL`UYlC$ zX$8ZaOk@jKGfx-WYPS`N&*HWF9Jim^)8!F^aK-hhhSPDl-NOKmYQZ`k4+Mgb0IH(( z7#0hdi_6z^mHJ$(A?;KSC$jNK4B~|^4jc{#fe9fzm1^aXv4pYg#mMje!MUP8KQtm; z15x@PiIgNH82SWEZgvSg>_R*g^Q!$c#Wd`g{K6`Y<;7j)U#%eG@Hfc$l${KAT4O0R z2>6YDb#u9qXzQe{z~7~OFZQ49{~9aL61)0%j|-3!tXQS2-u8!{B~D5-vV(fZDV?ts zwoP$m$dQh`+gv*<;N3NSpIuz;e}-_*CV2k zgjkK^RG=2EW}&8ClkZfRkYHsGFsdK( zl`d{9o&%-f-33}VC1Pkvl9Y<pQyN zd{8mR8!^-bS^JPe3$kYeJMO7U0bqRlz}blXFHfWR`*^Nm@V%Ka4Ceao zIJF0OZ{NUdyATFr5#zm*k=sbd`v(f?`;!p$@`jE+9Ry;e6Wy_=@lFX(mi8aBf_RH; zZz=>vqc|uUrmuc$|VLEh_DupATg( zRe~~dRwkbliQ32K5i|IGD5!lYaW9-Ns5B=}JpI|&sAr|sTu*w!4Mb@b0biE(lt{!t z!WuaPbVo!?YyUMoJweu_yxiXhajvC@bt$K|%|fQFOl9IMiaamkjyhXA#^Kaii;7}9 z0uB}u>9k3XQz`Q?tB#2=HI-Vet*Q6Ag5#509vFZzpVb{6iS?fAbQS(!u?FJdeP~2w z))Z6r1DY4IU0|&8^9vkHUBvwrc^5=KK81Z;V^J0`pmf zx&gE`HnulMSLeamr+11l2QeV|9i6pY<&;kuM{_5!2bf~Gkg{lSR5PdPRJMC&5Z5-8 zm*gjym6GNiYh6@WG+&mhbs4 zm6{3WFU0(C4)!d3qvQwurN7CJNIS>`EgosEcCD&Ff+~T`!zQHo%(513Nj9X5ra(Jh8`l;C=Y( zbG>DxJR|Ql`ht6nd`r-+`H)_q*M7=bS#L z(0J$T2$wz(r7y6$pNq7?;Mt?ondV}a>Io3V79;oS`UT5N9sibV)&mn`#SY6C7jqa zF1zNiHExdn_i5&Ti z@?wR={oCi~(No8rdo03L5l|I1ueB&cCsD8dvrvFnN7BRAZ1bug~Z7wmc4R$5c`%jOV<0qhW3{dq|oMIz^wgb9}2}41}v0IuY77;o<59=D)c+;(mmrylaSv zyBiq+9o!9w-Z?GvuhZrcb5kMOnp zpU$_jR2ko-<}jU&KuvHVgH(EWC=TTh=*x^gkZAev!Jfu~CQn)xDr?a1WNrq}FUJ=L z&D0qW5-P)?t)ZfPHRFRVkoMFXqKRbz)K!B^&1N9&{E>)m$O83~#!wV}o2+N@#a)e7 zq(ud4dn!C;Sn=H&HIfwzulbw1UepX%7NFNkq#jj;bw)UK_qvg`DtjWa@ydm^*F?yu z)uhiNuAaYUQ|U9`z_)JXU+e-^QGX+PX-D4Lh~K{Yf>7vb^80|ngD(}MJ@pVe)6*Lq z`tdv{AIbRnLw-5C?K(ujQmrC-W~BxG({`rQ1HykjNdpYlt(urbuz!G1Oy=-S?BF$x zWdmQ2u*2>&5Q^N$9=3k;?-z5j_r>T>(N=rXVZ;FFW`A9mnR`sfY(vB%biCnC<;987 z?iu@2OB)SUepxbm0}k%5&hxnP zNrTyyo6S}y{4+k!o~$c6y0}`qB41G&TPGzBCSq(FEtbLJ2&hJr8TUl0eIO{b8X*G# z2HLTiOnG({vr{|g;MV$2yP3ZZi1Oav*lOospkcd9zoIi99+W=*{(-t&YedIZvmcx* z+;Q3gb=Q4uRyD@Mija;2-=)#)tpQ~(lSmcaE;^QuNCf5v!{K?}??X}s zh-#^*@C4=Y3m=5Rg5;OBU{ju7+1PUAqBNJF_~R>#PS5?iTcV4#b#g*NLf(Icu;fEp zSwRDZMi(rtT%POHt>2p7U5$FyDgsXAf1x$Y6UaCCx8FX_)alEYNgODgz9`e zj~6DNEimf|TkE*_(e10hyU|jW!R!pC#cm(v|)(j!sBCq0^ zsY=RqpSY&484sC%`NX%bDK9Rf)-=)F%2b7NIpY|NMI6&uVaL;5SG9@ZoUOQ)_<;X) zjAhnIPTFN~mBHN)dmB&M(f8cPC0M9o1dF+fU{}^z>B8VG!yTxs~e%p;4A>iW~`vSSSgSm z#`uT%lIxEZ)d3z}ac5C&&FNxZG$xAoyd>wm_kcOZyCpdby?`%ol(67R1vf$N3>mHW z?mJzm0gekMH=TLSPj8Q16uXf>g}oHdqSBJ?*|ndHz5;w8e2jB)=D_goSHBzTY0l4e zk<;H1}Fq9HOJqzC(9=7Y9YKEWI1kM118M?r74|(PexY=h$pGp4}SfyX`X`K0| z1kEHto(TC{^m~+b8Zu;aD3Dt!ZR++pRKARQe^KHv+g{XOWu-PSP{W@c2}o@o-U#g2BkgC8`K_ICPF(f-3T!fX$`Lv{TW;)ukLI)OkKWpo0F1h(wF_{K z6Uxwg&eI`OY!tM!lyVTn=aq(~f5W{0yRiwo5xQprtUZ9$UL1UTsBGF)^q0V>3K$5O zGmfp6ey2xrYFhVl%^|Tk_MBlMz!jApNqhc#WdiDe+&3J6)_T~=h-@f3U3W$~rq_To zH|N?|z;KzmOD3One7+Wr!Q@5w`PE-dQtD;7m{WbTQoT+#5j&JL{HNagopS2im6od+ zKPW0yYd_oGoS1?l1hvyeot!caQpFyC(8OY|4OJ#*D>93f%HVyMSE*RTlFfP&>-q~k zUuNt7c+QOU3GNr#`#IvEbH$Y_`c__{UB_)Us};gi8)vax4~Dh+D@gJHY;b-CZ0Gxy zT1T|Ivrz8Oz6kUDe3!fUCZaE={~p#xoAtno>%1akH3FF%*1a_7U0_^FEYfREZjOkr z7y~Oax@XA%1rZa}a+P{$ZY;6g=50`JE^V8*xIA)v7E5ik8Ew@;7k=5D?m)?JvS{nZ z6jD(VP9-d4d!wSGzjadYqhLxI3mjRQi14R$276PXO$mPeR3c&+dw0CfYwPI35&`%! zAn~;T_8d;@3P21dI&F8{rv!`)Yoc?mgL!l0kcgCc z#Idxmm0)gyPK{dystA`1MGfW|Ax4SuMaahb3?Zz_kn}7Ly}jVvb)# zMVNFPaR>ft{~8x%?S>p8?&nul<{}i zTu%~6|Y zb?D@AmyRC%nxfg4R4aaB9m$67Y;jAd!($bD^oUU;5LQ7#u~Y>WjWD)*|4|Py%{>;K zD0C|$_PMG=5f>cV-PRQiobgEgc0+|G#!o^x#V;E&2}X6)?1$DaJ|W@rY0r5C; ze*{XG$3;*40QcsW$-bvuq0^4~vzl)>G=>kr?ZQ0c;Bk08!T^;2IG|Tv0df57%tWBM zl=zsuzXv`vug1`7bYH+#X&-U0Rq1=_dmsSr#@9gZ}b147rM5;CfWSpQ}n-9ceyr5DMsM9e;M3`$l37T3FS7Gb7@kd>MFz&HYDhlj!AKmdowGkgRD z6m)xf$E?%q6P-G}T%{V&)J00>#~*7+a3Rpi%^?ow4#-E|ekPejN{ylH7yTfXw4<5(Mrpb9Y-y38aTHsFWUrWcom`#t(t0*x=!D z1vLVPPh=%=gE~$^X&~_`#sSeoPY8p0q7xmq7=><25snz+Jv;YtTGH`4u_;rp(H%33_O{Z zZ{>`@_`6iMq2BPU!v5nJ3K_pEiE!SfATBnS)~XJ<$<>|kCeI@{4=;4VPB||E9$vq= zu3Y95v)2=TfZ*r*K$C!;+I=O|PKt>p__Xe8P~hHLY1gWtF1M<`#M8Pp*&h>nJ|b4 z0ZrDVrD?u@rCWDva>@?AM=Fg$0R0txBR@pRrAs1xT4|v1oi&E;k1c&NGa4}t*uTS? zJP>NTEzl9->R0FAT03_jm`|DJvbGp~)bmWl++J#lnE7{HV^k@8ANb=V>*l(#Mjzjt zHTipJ9@=hO|Nm1=YvKQ_MSH}dD$o+9Wx27iZa2JuBpF`yS_$k~)vDbAfG7Yc_d_!5 z$doCFHQl%@BbFTZy6&PJWOO~20RY1qRL_gW;}cU-BJPaE0Ds_6xEt^TGr8do_e-op z!=*;sAFdiN?_^VXO-PG=AHcw1a=*)D-w_Z|!SYXLU&l@o5){-Jx}x9wGg$D{XK;qw z^y7!S_0Pq^aEEq$e6OLd%*?^X zIWXRjcjwr^;kHlGi~EeKR-+fL+4LpQ`@yQ%A*H=kxeO|skSa;(lqJ~SdXXP zVTUJF4JU`grvDVWe;2--oxHX?+(F?>=2E=a8yP|2QX;0b@}nW}J}UjBv`$7+PDHQ= znfEOr0X|N%beK+z0uohHC^3No6byy+6ayO-7uCBCJE_d1120#qBKpRleJ1NOM%-{o z<5Kq-i;A-FecM(zM^~RO6E77L4QkF8O%bhhDsVIvHdxw(gM;_J?@2#|i4zi1?DncAk}GAD zb=?YUAuD$_ry$slN9x-c0)tC`ZLdR{6Yo>N_fP=PcVXtU`oGnyBLPkfkNvCIfPf#Z zyQMrL*qRw;qQy`X;+81tO=hxw2xW5l-P^)oz&{@>v6xS^Q0gVo?6@t*k6k*SyJ7Thz4;RWbB3GI zbOOa@r#BaMbjVeUy3_3}M7lh_e_<+zNTl0Bnym^Sf4#R`c}>g5&HZ#+yxP}Mqs@|f zQS{8p@9#Jy#g~F+6aj@R=F56|-k$zXb8n?lGN`XHhZTnq;xqbU;--3uk|)Jmky}=1 z)ir<6MtRP8uOR^+elF@&BvjKCnu14GMn34HKiLN0-qaDZ4G^R@5hyQUy_1M@_O;RW zqhr5sI6}gyw_zd#+D}7@p|_%_FPiCBxuE?d*ee5H0^Y*`r=Q7Q3|=JXzN_fMX{f=G z6P)82^=ost`oQT6i_&!0p}`RSijVTKYm6`DJd^O7y1}lv2B=bdPiq4uw8zE^9U+s1 zC-R8dk-lj5xYB>ehyUGsup0m09vI?B>^`7FMj*L-?r^}bv(S1~&B5LM$T)VjdaGXw zXrjc9uZmz8h>{G->sa_Jh;!b44E@D+9O{zC0p+B2Yb2Ap?RI^xFoV~d@BXANK;Q2b zpt^nsZ1;p4Pi07A(0?G4$qc4YIy+phQPSxCMgRJ+#x0x80@lXH22ccDNU3#|Tx4FX zP~a}tLKaA+BDqGOxWWsiS7#YNqHpRwCx7a6d4aFmZw`madW(E8&}h7%=XvmpZjseA z_>ZcoQ7rm46dD>rz(EQ=Ri-xB9VvaZxGh)km$bJ6Hu0o=hHA9g>Xg|<-U?Q}*|y`v9IFQ?Y{BM)T>cv|?3WhHM&$w{Fx zJyxdP?0}}G+G6x?Y-0G)138?3klL)Z0`t%62h8ioi|7B$FB~P$F9KvnPuDs@`OY?f z_H?=qj1dMi{GBw6h>u0QIP!?WU<4WrgB6a)!0aJ|Zzb&`oYjGgu_A2=-7EKa|k z0953YnpLsg%sjK@6~y`nZuj=}k3@@`_&4HCk=YiQ$Mpk>grvwg66w={O0$KcOco0y z0EUHAHj7f(=5d!45ep-3Bf>Eiq609wPXnm}b>y?u?&H_EmKglnX>QRFjs^gGq9LHs zkA^&y_^5~{l@UAgB>G&K;!_Z7(*-%dc7i>Z@?1FJ(tXRj5jnO!SvPw@(s()-3Y z)G-xBcO(4rHTs(2PDTx@!Iv^+A2tNO>PY46v_zVNPL$_c;p(|3WfnZS%gjM}-uOTh z@rdk`>~QjdYSL;O*X@Dpjx?RX?k|U!g+fP$N~aWw zA7dNydLGsH{;&Vw+OPlXW7T30DDFy2G)rIV(rBh$nRD%QK6IcD;D zptQBI)$)*3LV+}Q^!lzt8;`X1H`o81ZnjW!xts?n8jlpY=l7oesl(4=v5ew!y(o~$ zT=0=;C@u!xIgob$0_-;rcN5okbVZ-(?auFHNlD7}-$R}`JkDuy4copIx6L{#XI4f!FgaEgE0?p`-e@e$;{P*r&5(V-04WFz^RnUVyV6? zqAvV;Yh!=ZQhzUgn7Q8Y69@pEf;bp~KRgimm2bi*@#mEa7ciBmBs4}IQqoSNL_!J} z746Cc-9=PyM7X=a)Q-`c%x%v{PA0TuPpJPYPH34&Y~|wfTE-yk7xa0&_wVep@_sbw zLn6~GV4%bppU}o@pdsuWSYKkY;`ADW=3chq2;u=^(i@n|2ld!3W$)o3Y|2j&C^29L z%5~W&@xaQd2@Em0Bb6gDR~SH=2OFm3)4ijvX^`BrzB2ep%m|lQ_!HvM7bss`55nga z=gz2})@G`(i8(wpRRtniPz`5w#II4#l(fNN3R%i<`;^j?nu2~Zx+0p!AKB=@(d7(* zFUtL8uAf4wqTp-B0%&;g4A`alx~uttO+j~PwEh3#?k(Ti?Aq=@D8;Q5*OXFPT#CCx zu~MMLo#O5m2<}?ki$igTBB8ibpm-rTMS~Ow5RzZ+`L<{zwQnt_FfI24 zPJ=fA`XBwI^S!F-dUgy~9E!rgDys1R0!$kxVb8LOyfxeYCPW)~R*f znj=RM12pcjUA)%$sqkUsT#C?MH-D+LC!$X1}+4xMMlaA$*O)6AwVDsUegJOCk%pr!z_GgodV3Ie2xUWpmAX5dZ?dnNq!BnY1 z+pzWq^KK~Ti`-Za`EUDAGOYh-RJo#*t>UB|jrjjju~Cf}ZD>j`sK+a|Pw`k+SPfZ^2OT?yr7v zlF_lT3i+a+8tislsM88dyHPR>KVU8(nS^`ety?&6ol!T6uJ(h@>sj8B8={+lE zT)%q&&HIRWD2OU%n9zYykgEXtG-KS32CXy2$=-Tg=}Bt3otYWV`@+un&Z~^=xiUi( zUEhyCB!wj!GtQ&=Yhg(rnH_8bWSI2n>Ngs2RdwJIv_dYt-0#MuX^-9{qFit2o!+79 z^>glbRmWRfiS;8>gBv{~u4gqZ{DL3tf2RI<6Ct>MXb6@ehTYwj7hR33+Bz4^~F@ot2|gt=rWwef*;}I;vxa?V!!nJJ0`8GW!k& zQFL$GY%Zgw;4leI8HlpDE5{g3Z%0Fs!z6Df^sSR%C_ff=rO1Uo`B~yc|CeIt`k`9{ zhmg>6LMZ2B>A*Wu4S&Y3C^DtWkIh`)um8lHpS$XukU$W$FUsP>N=Ok#EokNYqKsWc z!XN}&hRa6WpV7~=x>}-$e4pK2Jyn(+0q$-?%+Q!n*k7XXUFbQOd|^ z5dfVBc~q*Bo8HQr8~rz~EE+xvC#|f%VC7H>9mJJyIl$$it?|=U%3kaAG})3jJn<1k zpfH3-?&^AAt<$T2SmSz&2t@fu0+16V&QO=zQW_kD;(wx79`6Ao$p&e^PYAtuK_!Rv zS8h)w9X6CH-s#~X+7oZ#z(mf)T0GFwHaI-^0o$D8UezOVG4fTT;_M;%t2Ir{*=}pp z{AB;?BGFitMa`1}%fFQ=-HRXSBU@6xq-=AU_QsE=vs>O~Tvr-azphVxj3O8*cj|K8 zK62{lJosf;gRJk=O13~kXFY5ksuM?7>D2&UGg*Y1?>+?6u z?SZ8BI@LKrYLbn*tV&mLv6|uIK3F6ZGSmk-?a!o;0`Fq_5+1u6&bINR_cG1xQ}J8H zTI3Fj1>c4~yMC6t$k4|MV054}C-A6v@&{%o_RCv4-FS%?nHz>vbAcOVo2?p?D%=I6 z(1}VL>EKP^+h7LzVMIFP%RLr_&8}dauQcQEO^a@)+8JxgjrE_4g~#C6|EPV`r7}^D zvFz?EU#WJR?8K$G;j9=`*tsb<)pPp!#**FUqst1e@k9*Ngzn1UAaww0xfUsh6(|s5 zyzv%Rs$`j_^%tx^n@#77sj9;;qJCZXQClp{ZiPfWtZnm6eW(hgx%l>zt1&2l@bu@a zy@hC9yPsFiu1dSYjhMOJFPVFWtz9_{u*14^!?y%l^%o95HqhJywMZlWyr2wOx16lqZb? zl}#zfK9~4UceFg{d?)z)g#4|J+gBGpx)Hp*@b_}Fvng7un2#W+! z_cK|-6pZf?T;PHEC5z6aR79XjkcQ6AE0f3kERla<0Z8`f=+UFq44<%nX$S_8{QpuH z{%`()*ndWiQOqMjh^%&hWs&Vao5AXaKHGzLOj*cdG99h&9m1AF<5N@u_H2-Av5U1W z*nX}#4jvvRJ*QgWORF7J$&Vzd`_F|k_A6!#UfzFTYKre%8(`0HmCVf0ic3)cjy>t% z(2xqg*p`rxP*`=Y*yY|Ws*KlZR>c=pUk^CjK#_pa>R5iLpRUyDd|Rwc^3u%7DZ$XE zo9AW?SFaaH;U2In?fQ<2J#CL<0S|^RN*w-GGZBN;MfrzHMsd6I`atoJLxc4?QC7B| z*{Dq*FYsJ?cPy3G+I31<4lX7(aP{WB z!%Ux49tYXHQQ~)+M`tKd;ISP&sL5hvK#h;H1yge85qqez>s%W5y3^w8ILoT>v+jgX z;@lqsu0viR*}ew9(~_5dvHqs$^Qc~|j60M37CFdU<}RiOSGjLYNzwPYtcuwk({1{9 z`KPsv8EqDMp>Q{Ny_>Jw6&l{&RNU~C!H-EJ6wRKq=`E~coVuhA#T%X>HO@x`*U_qn=$ z$o`YEl*=iU5Uu79?#7$r*y2#V8e_zpqlK!7(MlFcdju*Csaz{%M$so=)f+C&w)?pF z`tE+-V`E=IFuqGvS5J6`n*Uh<)yi~DOPqJ_MvkJPHOMQ=%X~Z;vxI?xA)A{o7>O@~ z)wS#u6&3rYHwtPMV}f#;t@kM=N&V;CrZPm?8zsA5RzzXb(dTa+orQ|EL$^=1jH!gq zj&;fU2JzDYv&9>~{Vu;ED&tm->DzHw99n5W}&d3bBlmf;z~z!=NYbPO2dZ zwe%TqLE@YD?_IsUw`NFGn#nH)7c&k^{R_lx@HW{vs*$ccly(bIm?sV%d5ZL&fn8cH%M5z8^((X2@RFhw7I{BL<5 zTXlD&uXa8ZedQ1&>q%8?Mo5{vWT#J#V=$oQ337qstk4hmY>h$o9*)n;+nTk|s$tIp zC&F*pCjRYVZh`RrHy7IHWftcD&4p&Zx@q+W4oH8pd_dxIKi5@4H={~=TnBjBz-4#GP(+&7BNrmcy z@?hN{o~HIv&x}yczZScgK}}ns+`k+&s8+My*$WN`@Iim3a5I7qXQyI`WhpMUU<|F$ z)3eE6U$0S{ooDqZOO(8&=#SBgN$Xi45RtZsKes|OfIM&!S=8I_(%?Jb&1t1xyPA!$prZ^&PJ%J zL1PXwH`j1IH9!IDLD48ZXdJHr==bT#@dC)!I3Pct8_Y!KA<{SeI_zAsz&PlD3Xrz% zLwwbZiJ9NO9McOcfk=1z-EiOE-oy)`O-_VY7uf9A7xQ^SVKSvsNq0_In4No#V zXf~-~%J=Stk;CUDcqM@FvHsAZ@rREcw9g}YjoH6iFElN8Sf@V|>wYW13lrJri`(L` zUAYkgs$^5hDaDiZ27je~s`?E$md-fy2068`0-6eDj;nt%jp=$W{Vd}F`^EOB-;_AQ zho{dMUEbBh@a@utfmTy$r%MJfx>NOG)3BI)J6F~K6gHzt0WKsrBiYaw@c}{eZsaTn;pYX0bIp@d*-|7BU zmyQpLvzjhu>93hLK+zOI^*O|sfrv|eDrpeu#gna>esp$2_}@6}asIQY_!>}5(3SEs zw?>G!DbXTXa^W3*Dv4aI#?#Ev;mJC9Mf{hK^s{4A-nJP0{0$pxNnDEC(jeII_iIe9AA zU&tnGjWFw=gdBm3`yoEM-#zqjl3|GlqVReMo8yYl(;?M#k~U;3Sp3Jlb-tv8&I6as zls{q0{H!L7bDyjRE)dxMQ>uYdoEx5mk9K3k@{>KQ3Q$@HF3 zT`9t9JvVgp@bnB|G&$Z(<*L3@2qtlhoX3eZ2~a+Bdul^ovdjB@BE2u+z1E!*glMF) zIE>2CSi!iA;r}eJZZM1p-3-J#cj_bTg5I-qC+1dU?*qv2K_}NfKG-~}FOZx0kW;aF z8_79qczhig$wuIO8A2SC>AX}o;I=!;Dh|4Mj-qxNJX&Z*9WLz_ks`uGtV<1L=9G#F zIdNqZ8Jqi4xgEf}*mK%cVDQ1fh(`aqJ}~(0Yel*a<+1m5cYQWAZI34_%>%5UpfqkI z-|tuoxtQn7vtPZv;^{@mGzJQB-)zG*3sE{d!{zHB%U`1=9D&>s=-LHATpMF;{Dn|< zZ~B`N(+lG5h#y&=b`ktWJv5;rS2`98-#AC@3km1nB*@JxUSFh?)*KvZq8ObsJ3Q`letaN;eY2f`q3uANJ*3u6AJ}b9ybAEe>z{Tqd5ya zQ?QWDlfqI1>%+%e=V+d+X#jd{pzdaSF*TaW z0T|QCkbfvmWJ0siz)4=QSLRz9T=fa?oGcn>8FH{C?U_bCSC%AAOpF@ypcuT6d*}nq zPhmrSjSURS2bFY)58qlTF1^opdpwg<%a)Y0L4z4SJ42h!qmDb6k>igGynSoM>$L5w zX4*m`a0GvXXs*sF#kGu|bC66zUNkIpFBa|x;v$7IsJ6HLfm$?-b7~G54mejU;zf21 zQi#8vk{VevCRZypwh>Z^Al{uHs+%w;?-clZy1avla4#vPtwQ5CS6csf-Y~MQb4k!Tc`Oxv{(lW0@LOumDKz~R~!~gw;SvbFx%?CeT@S6Bps#L z-#*ob<|B^7d&Amw5$_Ju4*6cZ5~hk!N&8VOKuh9&jVJ1L65L%w9|#+TPXF4l?YFzf z$>q<`JL!6&x<8|EChq43MFg4y4(Ifn9nU3&T6tJTp{{#YeS9OJ)I5zVbfsJZ>hPfK zOyeTih;ZR9@9S^pw0$djrsLGHe!U=*HXyBJvyEk5CM8!Mp6oQ8$j=fN5UkE90*pcQ z)w2_CyN|J&_!N;2e*dlQRT`ngz@gLIexDz7AHNyU`(27O!j z#qDn$#HMc<{dsf9`eeU~o4K3I?{}|_m-a?2+V6?S&=^Tol8Z})6UzK$>fn#o7DO-? zOr>t$#Qa>L&Dk)qce$^bC*-iUrq|n3pv!k5^sA4nBq&~>{#+rF{u|3>L(64Bf_3zo zDkAmub8t|;q4`CPvMalm{K0Ll$drGM{~q(VJ9@MAIn1U5j}#M<%Y<39^Y)8{@kfk) z;+m1=#}rt^QPwlrQC&rhzVK(V|18DV=2h?VC^XJs4(2(9qg)I6yMuhWrxi{m04*y}J-$mQi$mm`}&OC_z? zyGiJC$sjnLs5i|^0&Bg-Tf6fS|4W&V2(b(x&(2OoQvWf(j$Jr0^jfOs0HAk848EiH z$9TA*I2+u1GuKAVXK~e*5Bq#Uqn^9?qk4&CJ73-2?)|V|1P?IRqURhU)h6qI?1`Fm zpvkza8@b%0)%;#6wm+3a)ZSm`dv_#ItoNO+$wuycubM?4L8(?K`J~6+{{=i7ChV9< z{BC*GdN7hu>}ThM8HXMZ$?2K^#rPLUt(fomXJ3DRoTNI$xn{R^0254Y0`K*?>S zfI^@bL@G7hRcUrK&>FPbV`4|0==Jyu_@g|)P+a*}Sxld;Gb@Df;e@X9_H;hB@83T$ zA2Pbt^6+*;dU`nPBE%IkO+edYk84zKH)njo=#x9C&_d*doyip_^@}x{?{S@ktpS*5 zcuFrE?~^?q`0-9sl-Wc)PUf!|qN{>;^fM*KF#%LhqDKztOux0AMkzVp6CvzJ$w`!W zA)|oM``x0W19O-*3YQ2-IFxL@FgO+pPGvK7w;ILXe{0n?(7ngCqnKW7(=!2Goxt~im zz;31-%*Ei-hLWazi%59Hk^(=BDU+|M_t0Y#?Tc-u2DLOdG{ye4xgl#I=HpD?Ls4nhJ z$y~?7LNW6ry5QWHro*}I0L_kQF=r!*xN6<$qOHx^(KHDmNzi?~1_vR0`sWNUl;m18 z&omZ)EzbY(Y1LfmP{l0?j=^yRv1a{jojQBRcQP`D>**_-+%X*(;YB95sRfFMJL{mG zh#0yq^UwxglZ%A8); z+!)8d98&q}+PEzX&n@XqJOAsRBe|FPJR%uvX0B#R)i#!t4xhk<mZ_1m_YfBi_05@6PkRJ13q%X+p&Q?)0#{T%J8Y*&v^3 z#R^7lG!a(SNPP|Ju|L^-wGmQNB(k!Pyp)n`n6Q^+0ZCR4V@JcV*MX*vnC8a4AB=AK zES3St1hayJ%?Y8+<1U7fkP*#hl}`kK-++}SD{`!a6Z)nSkIXaSp#4{g^eZgCnJ3$; zR-{It(>qE2iHV5d5}D(OuEM(#l?n~h&~kML+@#q3u-tA(Sb$$|?egWXlO$rAOR-uP zNbkrEh)hNaDHBPckAjBEJO1uqXtti}??X49?Flg4sqGCqzZ zK4N6{E6h6l{9q*RN0vIAl;DHi@OoV~n;c4)6lPMq0ds97pX+~wW2PjiKG zD&Ap@R&(345Dklrl-HkVJdZ`FP*Z3M9Sn3-Y!N#ZLBHJz`uDOD!9$*~9liK|x^(L1NFxG+88WZ(kL~J?Xafw}=b=JNF zhEh^tUq+xzzcd?|>AD(%KDip9u4p)!$4}Hs%P;#wHo^+}XYZ7q)WI}JmExtLH}+QJ zEJ?j7?jeH4SO2Qz0(7jyF*IjL#`JoIgu!YC{NiFJd&igN2FEWSuQ*thad~+e?+!k? z{V4ZW3}}9xk~7rvNyR(w^X%k95CX@+%`9WeTw&^gFzA*WNs0x!ODqe#+@VHh0*-w_ zqu4+f6L9QTC*%Mie-+o%aT9zxb6ha;RO2{+g1Bn=A`*EcfK+~B5(yW85Fz!kB_9*Z z5~LcRSjjyuh41GUWY&XXGvZr z{vj}Ecd?rYrYOG?DLNN*F0eL$C*M5Kq9yu1XM<17XY+bka~QNdy)$n9ib9t3qp<@B zdV+RPhqxX|o%;F-tM;~vE06szm)PPVqlUmWEpzEGn*ymX9bYH7|14h+$I}RC!CvS; zIBOI3a?8CL-o{>~=(n^$9aa30hfR?~l5@2Gg%(U&D#1zd>A6@ir)h~y*lIt0+%_5y zBtvfz9_A`JNKeKqeKV1ex z$yVDO6UNiW@sl2Y_p+l|zVWkMUlrltTnHaAzv>FU6ZG@@JpCD!Of8mZm~yAFXi^ng zN^X(nf*x)H326Reqx?f`g$9CraSu9Mnos=k3Vsg198tZ3=Q#NBNkF73uhX{9Zhy4}uE37X@*XTTYZuS&hRf4sfGu`PfS*m1b+!t6fQ ze$atA*_ue+!=!P*OzAsbQ_yD#U505(MN~rY>30b35$r&Ga<0(BX6rbg*~admYWO9( z-I`in`(e(GcpM&O}K!=QUh!f=S@YwE9*xp z%=~=KuhK#0n{mYFmp~(M5Qc7@(a>Xn(9Z@LPJV|)dEY!y02vWcZ)k9^bhs2~V&j1A zDf2kdR79xvQ`!Ljnm0- z#(%^}voH7^R=xZk9L!yF4pK5PxP5wwAc9h}dl>T!;72T|pX!gU^w)&6FB}8|iUPCw zf_x>`49dchH^wlBqgN>Q8{ETPSP;LHUg2v(xapLGI-tvWU9`n%O(!e!127kef;CS| zZwUp1r_gwi3BL*S&X@RqRj#4k;S1w8mR5lRbChaOhN);v3-&$=&73L3KYahq)82MG z0+L@CdRniTUCgqn^;CPmmh7z3v*FNkL|*e>8IhSE`dD#0iVm zeDjtR^cHKvh9J&#gYuFSAH+cnM9U&Zow(VQ_?D?167G!rRr44nfj1O0@ZkD*iRt(d zkkAkhu|w`p(H`Qk233|FzFGKr67~#LhzL*Kjr|`7y@6e{-Qw#$Vv0Wx&->s@FQmaY zCFMzuSU!f@p~1GRUN8otX5`4Q#Ba~Uf{A^@V#!tTlYFL=f1uQxAp?lMd0R-iK!JE5 zUe{#y`AmeWUc+Y*gSMKu{s{a~WSfg(EutPkfDW}8P`V25ugy8~&N37*?y;lkQlFZ|%|Tc~bEpyREr ztwSifI6biWn;WQDqQesOh0BI`2MEbv&{i48tXhr(R;r;sS=nYN7#bSexagbpDM)f&~Id0$&a8hdnGc_|DR`nRwaZyTM%Yh^Tm; zMTJc_1r5??a?uU-26iQj`4lX_-Ngt7Ki<$@?oP$UkPZ(_)jq`|^Q6S;WHOQJhtMv) z)F|klqaaO$MoEpg(vhk`cl0qC03b0 zqa)si(4~wa;*X7nhQ`M_BYi5eeWys5RLJSXaVYWktIOR}Mie7VzXL)qXro?OSQuvw z#nO~_Ug?aKz>eTfJiop0zHU9|zj*r&#lPr^?OKvin<4~Gb@l0JblA`az$dWHXi;j0NrketMbNDC@` zo=L-eXBU%vuH<{k_}niqPxJd{ku;Y5#3$2S{h92=8@(jhzWShx2ru1jWAKRpgc_<{ z`gkc`ZatFr*wwy$8PVL~clwqMp@rc^)7p12@X)a6!YjMdIJ~}YT&Wa9x8)Ob)i(a1 zve5=}f!de_a)R*-K_amu2?BBC1%M6W+oJ{5WlBa=rjNroM*eR(@t@`0NmLKb|I>Im z2@sc3H}?TFXl>0C1c>ENlCH0JLuTRC383XkY>HpDv&EQ#j>|8A!u3+YeHzhsH?11+ z0uS>wfM?Hw{jZN0!x9o)m0n5V9w6P}v*{?kE)p#NJ83My?q=?GSP1Y%Fyz$M#^#M< z6ohm9b^!WxAK+XlP7yZ)xiG$y-#To)`xjxn! zsOt@@=Zm8BRPwAJ4w6{*?~tLMcJocZz}<*fzo&+w+f&)>VnJ0#L_=|u6j(cV>j`k) zZigl3p%_x#pGB5JziOyKW(fg*|B!rJ`j&8rpRwIH?UeP_>g9$q*yg^LTg~^bRMjaY zS&aBYhqTFLHs6S27$J(JPBt!sv(e&Ol(D{_-v0#RB7@3SoGzc1D(4a@sHP1{>QFx1 zoRVU#`%2iZMr-At@8z@=`_&>D~Nxk3_WkxX{CxVcK10_FcYi5=s zLotmbZvWhh-2a_OtcU;yT^|X!i|zNr^sk;>Tw<;^P>s)kFqVH~^wn_GqHZ7HIXS$8#5ake;-1blGi!;+XZ_zo|{QDSfxE7U$C2ouX^<6EFj}w$LJC_kxwve*i z^Dc-u))%(?RsP0-*&hh0*?+C0Ec4m*5$$ImHJa$JJ3I3d;(*!MxoQFO;Lo!co~jez#xkYnaxktI+oW*>7$uK?5L;{^&3FRz1By_nDH7HnrHW8 z0l@IM+d?_Bkd}8=TWG4g(rRjCTII1a-#r&`2m`}WRFhgM@!PYVfNF4nxo6-bt$5yQ(wkiS;;` zZn#8->eL>UcvLK&c&W5WvHu1mpKZ)j{8$wgyT5+We)oVvb3X&JQu!=l;+j_hjE$>)8tAlXevF#Db_iSkk0 zwpSVj^x)-po_ngQTlf6TcV~@XFgWekAo}KH*5eXEM&b;M=63>bSp7&0>6`7cm}SO(d+q`p??_5aI4#${yGarLm=7&e+Cko&=< z8?f49N17w#!c}ViaO1?WkCes3r!8%1305Cga|96UODnwK;gRkLNSohHLRP1lGQ@Rr z`GWV-qyUO)1tIMu^$}vh`FWR3z0+`vzQZ}a?bU=eSm$TWJW($^6l34>xvF(t8kOd9 zE`FFaBWR{lv&40Glw>REK?_%wuM$EJUww!`&+ z2k94@;E=%tgX^cUno@(kVHm3W$cXM0N1lZ>v9>yqQ!1WeJ=1?u&u6ml+-3f$Yg?3~ zo5ght#Dn^!|9$-5%Wk!=+m_4Wr~bfPLzn;l!@r&~Jd6HcJN}Q~{LdrQYv2C++JEBU ze}m!wEML@qqVfE%C;xol6)8X3f4@KYyB{)F9bO{#PiK|7lF#=^qPhczI&0+|=9&;;XazsD z#_Y7Pr#F+gS7!Mq2LgyXDNj`_|6PJFtY+|P9aNmiufBbiCrG=7otaYJ@~YzuT(m#n zwzK_`Lq-1g;b6Sh1B?L}!JqT1qB13|@zb%7C+ihWZXm@bPN6qf6j$v8qiJL8pY?|5 z1{J!14qc91&!pIlD%z{R>Iy&0Ed@S$a$pi?jK~6YmhA};52k7M#~}s%qL9cHOGVC} z<+rO~=9~-5Jdw)+&qGA-pR|RfpO9~tfqBShS3I4Z{sjGvR>ohp{N4;*FO?N{rz+Pl zAMfOk9dvR15p%)quR9q&+?uO_t|a-^!t(Fy^KMCGaqezx(NO)Nj^aQPpb!2NQPufS zZ((1FXS@Lq#V!0%$H(o=8{ICP4na0)9%HZ74=*<;qLuI+l(pmYnN%`Hqr~Sv1EC}r zFX@s7%9IzHir(ScbSx{UnksO@3WCl^x06-nM;nIbC`9qSk`Q-ODng_mEWbVzMW3xC;ar z(8!D7!w++P>*UsQ!aN1TngsCK9}Z_+AUGT20Xvf^x23A>T+O#iujg3V`EIQsTrQAp zc+@NM)HRDbAj`pibj@68@xF<#r;lWJ*%)*QBv#k@K$;YBOyZGgOlpsi72KKY*Re(% zVv_GU+1CVC^e$eUt?^s{+wbbBjApP7%5P<^l;^skW9N6#BBz+dc9+LS?5iaU98$oa zE8LsQet7*ZoI|0X-&*H%uc4!|ZYb`*X5(}CbXuYzQro{`DmT{a#*PpFu=>v{&ScxUT0Z0)iLZu!B<7s9_MNC~FHEwG-ys_66V=s^ z7VFJGc%~h9=59iib2`$qzgE4qk9QlJosvjDrnNFywzD~GMYZiAUlC+6F=6Ise}?9NE^BB8c2Yst}uz{Y8t;;e1B>< zN08dh*PdIrQ!vta>pRQuKx_sw2STL61xQM_(dgH3PYXjm0A-D9vt2tt7=vj7(T=z3 zRaV2gupb|@QQShhH5DV}MBawGevX&bxU_a6){^FO=IgfW(7mCc0wagFY-=Vx2T&K(NW%)$rh8Fj}8=n>e&lUCdt6AZD zr`^PWYR?~eja+m6uwR2&dS~ul9Hb6!{eGUT{kkauv|s)`645dGec?Ge65rS|>NId3 zu)Wk7@^&dsVc=A;m=*sK&N`I%+p8sL<_m`&5&eEA`qx`As zXIlTf3~M*VD+=A$ZUlqjl9tz8yaqb)j>grcG0KnbzdrPU1l)==-uW0gUR}3NsMygC zXW(C1T1vMY2|#%%a#0>)GAsxKbql_NudPp90hBroB>S=d0{vym4TX(scs2rrWav!= zQz5L~t>Vr^jtTn+$M0(FFb(^t`_ACe+u(FB`)1(jW+uEc7%D-;K28$ityXm*py2ZU+n(~g%A{c6 z(lFvDdt3*hljV~0aADcp0NZOkmkrSHP`bM2X)h&%`b?M-rQ?qj{0m!n{G2odG^aFuW#Q&N#OH8)H|ARKvlX8Y$HFXvTHs1~RnjvE8_ex_l9k6m6_2aw6%SK0#A>>>yX z2O6yVpLrSqrnx+iEFK|&KbHk_dZd_Z=6eRr3pFbxbdf&%UK8?zP)UZTBb)-7*3Y|w z?IiG&UZ+Lnw*ZbSOQN^B&6g~Q%v--LzC6EMo?ReW$|SJ4gXs$u;vLqB z1Bu$a$BE?w%^K}7#eYZj3Rn+rq*Ey|PQjhC4m(}1!a3RCc_fq>(N;7ggd4eUzG^VC z(jNu~^S=;r?T4)`^_{g`lSh2zb*;>sX-QUGD7&mLKXxqDR+~~sV#a8zl%}!7G*h$%e z9qj-N(A97gPtRL(w%goDuL6aXl+3UQaz}0Ok0QSv%|HqWU~_c?UrZ4ZZ^Tj9&8e^d zd!Rc%gX+U+)w0c>)}rzC?uM^E`ny(T;}Zg5pI(Kwv{gv9iSEE^zx#?7Gw0M~S|75n z(ozb2QdlmP(vzz5nUKBO5dO*aW}2HCZ&93VLcy3r^cmoL)H%x=KTK?_nm z4`Ex1b9gX62WYKqx)1n~Zcr#K_(jS>vY$4ZpNp$jach0Uj_^%&2(y1MZ64||*?^9n zm`>eIxnwMnz3h#STyakgiBC>7f@{*vuxQn&A31!GXE3ds>20^hfD z9?eNDmfgE!tKOE$K*o_OBcc(#-gd8z^7W`O=L}znhNeF@r=HhHk{^>OBiFeE>fN!soV{$`mgG3;m*LL!J>`61x_NoG0S!&Lt@Q3};Zi>Ld!b2GN*V$`|s z4nGL{?6mCk{k(}Ej)|qxo=;*K&M6Y-$dtMn&o``;!Zr&GKM^US@^M>oxR`jyBDS*A zvgI_|3Nit=ugRNzm@PWr603Sk#W>;cGJg@_C&4w^LbzDVJ=Q`Sam6>ZJnQ7s6sUE` z*df}9XEX;?d>WU2HRqM!Dm&}5!>ntWE5LUzxF zN(UPM2%)0(!Fc$4$k6d}SKyto)uEfHEyeV2HT?Fs+f03Qv>koSaGEwe%I93?3@hjY zB~N}f*jp}>I}jYNUR|KZUiAb^LK}J$_Y3r9MWoJPgi+Oo+RL3@@~LRpp5MOR{we&O z{Y$$+4p0HKbFBz@EN-(}|p^R*WClaPA^;HUdvp7>2jYNc@KJ-a`RJS5w)_Gb#dJbc~~{Flrw2B>ywz`34NTKkY3tWIg&mFQ zK~wgW$hD(ZEK7ZEUGZOO7^)idU>lZohi5wHb&a+{umm`DRaj}3<%37z{d3M-+Phc@ zLy$knN8Xu=HJv?fwvo|w!Eq*hIaH3Ov=NxVqcf~1z!Ltlp3AZXvB`ZPg}soY90q0^ zN8Obk&gUk-ND1BW0#^fukUUJd_vOI{F8UNrA-AFzEW=GkfbusRZQFn-@nPR$-NfTR z6^AqI#8Hq3(^B`3f4El~zaBpHxIMmKoATAGp{LMD2#}3B<7MqVAs>G^HD1&p_`Lq| zB2#`um^2aN(yfis5b1}WS;!A{h*XK#*cr+dXIVGOS@=yJf$WK#G6)0b6(QaQs>O*9 z6AU*zVKnd(!^ife&7RHS6liprE&s?ZE2T{`i*TE8;5fJzMN_RF&4=1jRqBQvP`d}( zXbncb6Dm)i(ClSM+g7h5%=w9Qw~h{2@18g@-Mdp??9NzTR%Xi-ZEocLWTlq9{7!Fp zqPCu0tT1_7LVIC$`9u%<`YnFk9<}gddNzVao%SGA$1LrB)k*szb%{EBhl}E}=^zaJ z&2kY!^CwvZ`f>XwfdakM&eXB)T)gl&Z+S65lhonKy7(v{U~e1}?txb3AscdYowI?~ zDSso(`ExB&_JPE|DboAng&=H?JGl);WyG_a`)Je5&oh7d@MlFuM zB=9+uSOk|$%@rY7uMb#ky>h@BnuSVC3Jhu#04Jw|7Qe!d5d+}}EGWKaZN zkD^)Df==4(U)tWJ&E*biEXuv(>Ui{nJXp7<@TH0=O#7%BRawfS{3kJtj&$MS3UUt@ zL(*>+OASaI1m;~3j|^WCn{gY93wlh2v@dZhzxf6J8f!>KRAUk>Jr(uP-frn=#&VhY z?S--9@I|FQ&Wha44-dG=A#LUs4jnYi%jfU+ZLv4J3LW^#xMESgBWD9|Q|a*= z6#i%_QYsC6vZOopqv?vG@l14=BoUZ#XpvSh$bp1MqZ!Pv z-X~ht=;UN3&?or!ESZDlKDBT{gJ}(cKc!f>6z`LMN6~hwe&q!BI+_xZTTELjE}eF8 z)%_Uv=eMRyN*Oo!(kl*E>SD4#2J$B*ym3-F3`(?dksRpUhQgY$x<2Bs1?MO@l)(Az z*7extI69J?HXL?t%1*}|x)aA@j^qr!7LiuB4~3<4O1s1-Qyj+*UU0?@xv26jQ33`V z4=6g^|AHFVh>XD$V$jdhvrSl0;}%seE^qCGq*=N4ETwbGmLspn%@@q`2xfw7I$ ze)%NDKsGY+M&8`I|KXaNvz_mFdI^a!C8~xBe>Jewi6o32c$9-@<$7)B^Or@{BX7hh z?1t8_KLsrhx9JuMB7f>TIr5e@_b~v@hx_Q+Xc#(AgJ%jaG;;*sSD_NzCQLjoxbi3Cz8|`XA-QR&kh7qhH_Lc^6HEY!&K?Yu3w2$8jm2&Tp4d3}| zU1p2^xtK@^r0P5NlwPYV_Bi7=^!u{dY8ux6&#g4BS@r*QD@`4HJZztFSU#+s&)|Qa z{*tf$ZjXX{gLpHtOqf-5sPTO#i2qfH+fcS=P^rf6dLYQ5QsQ%DNzofXH49*2L=bGe ze8oaLzLeU_@}Z3PNLZrp|FHH}QE@e0xNZ^x1P|^WEV#P_0t9z=cWK-qxJz(%cX!v| z?oM!bXlOVczTfsf=knY!dNixo8ntTHtT~_eE$IydOA=&IIO5FsnrsnqhR!O@voPKx zgi+@CV4WJUk)b4n5&gD2hemkWRhH{+IKC5T|E?b#bgphwP5|mzjR^U7gbmn16~+TH zMy|HYx%nDwX&U&!)SPfRjD$tMDo$mtEG(0qavi+LnP{ED@5P{sPWQLdp_AP}u|qGi zSv9o79u36QmZ&0DZAkYOv6I9L=rpOrEBq!$&0$Q{=WI@=`5k4FCC94bgW{-nm1vk; z`z(P6S~|cqp(>+~($*WFaic`ZPkS$mR&6WC3Ka+5QLk)Wvw8;F=?H%!?rW38XC(5E zHng-kS?kExXzkuTf*jSO*fM#huMLCox>SXW*HYNpK9t%%il`yxwv@Hcd(iXQqtE(@ zuk9)R9_0Q}tEQTB>iovbz)8oupY08$ubW5M`zBt?jo`uMC}Mg#1pAuEbf(fPi&VzH1aF zmZJcJZ`_wRlPsfUnD?jV3NA<&JqHSAQv()k);jltW30TBzDV=Qq|!ZtRp(utX>cRZ zq6uxzF>X;m+iwuhiM)sw$ZarGMMQV<>wfGQ&AO`^Phh(z3g5w^ZxVQYY-f$KnJ!E^ zn|S~^+t7HQh3eTSk^qNs(vs)CuGGp$1*^%*y z7c~egqw^ zx)BE2Aw!L&ArCJ2~7DX;ak|oWVqCw&zb;+g7e=t4plVG^StPR^8b__i**X>~i<#Y2?At7IZ>&!iBq_aEKQR|H<1! zrc#GHaFD)_trE*y%qd*K9Zwe7+@16%-UUi#RZ4VL8j%{Y&u?}*vdRpz?ly!fbdItqQq5QMDDBdaeA)TW#lG|Bj?~$+uW|)% zyrhvlvs%m(B%5QoDHelwPjVY2!}3|_(7OhenvbQt(6U?wPnuG+vgu= z_T2`3sJCL&ZYy#&p62`5uezm{#ZNxaz^*W%6^DJ&YEaoen;1{!h%a%enw$ipZWPvX ztHvML{*;M)EtZ1OCTv&-DSyQvE(>3D@V3;y(HlQ#oVKv=LQfvUvT9RFtv?cC&`Z*% zcQr#t+MaJl<|IFAb@vQ+HHf-kT_b+;z8u`@11TLaL3Sdjp`NdtbU&A{)oQg3`nT-Y z$7oYC53-?14LQ3lUQ^T4M$TOmMcpiCwLSK?#_KQT{y@}l;{BX_VfFR%@bMYn>{JP1 zE0^CCZ~_LaE};@RvgsF1{AZm2EpTG%G0eJg; zy~k0m4y3L*w(t?of6$$bNV;tLh!10=8=JMHxp!@gPH@T5BcTjzFON1`BZR@zE#+iX zf40utx41}>IUdAzH)N7XFoks1cXqyE(2AT?0G51UB=b=X%-alXtkxStjk`+ohZKRbir4R| z>kykA<>c0X@kFbX*;4GUspgZ6x@zdNgI!`$EcHswae0Dy7_&!CxKc8F8eyp#r?jL@ zuqdu6QW=&@kx$_DCT&|zWL%Ki(4`#w%v&+!*Q(u5P3)EoU8(00p7|u4Sdho9g2(sx2EG2DmSNihW6;KxLH#V4vp*0XR|Tm)m~_*!MU8 zjbDf$H}mqC*dPSk(v#~7Km&uz?vM2#QZ)JnwDd6W(Vk1~)qb)A%Mn+PYSZE#{DsQf zK%t+@4M~(9RWa$O{Bx_I5o|H{Hhatf3ujuv_Ea~JmAKk(nedPOJ}Dic zp9O2xSCWxaq9PH3PIdQHs8#le?H2lTE**(Aqp>)aNLnGC1 zU4sW}=y5+cf@=i>-`@wqH~4CS^^@C63_LCx5R? z?}7%olMLno$VkSZD<%YR_W;TDR#^a4>S}jp%nicedh*?=3N)b{W4h<$ zCmqpHWXos)YXLJC$n#7z75q%~-h9EVgS`$%^VQRp7g}sEaNc7#&8#^Gu}Jfwa4ns}p~{Ie)<)`sVtQ z!k(p+BM)(r?RL91N1Q&RoY~?vgJwdrb*~cdIe(_WY7L*@7y4SX?qxeUY4mjz*UaK2LhK9pB$8%0OSJ4m#kYC*i6Xl z&T#qz8N9)59k}-%7TsS>v3W#Iy=H!lm=U_TWp)SYwCvnm3iPdNg-=BmR&fmZi$ap= z;^N+C2pJZGjXBsq7Y0c%qXz7|V|bkX5!fK>ph5WA#M?=tUB)v+S8u3^(AOq&TSXRJ zxPnQYV%U}Jx_&^hDwp16rBB~L&<6dq$Gqe|-^+j3nEa)zP2CMYNa-4;39|+@=0x8+ za7AGhpAmvjPoRrNXS6*Q6ZP)&o5K*niG@j6Y)2`AhpiWUZoyg4?P|nlqWC9=)?*Gl zI@$rV@bm^qc1^CW;qtZM4pw~cMXi7d&6g%y)E&c0_7<1SFbVs~FX3M=-l0B4ViMH4 z81|{&zaPjNw3{N646mh*iWFjkdIEhFmwTYuuuBvzI4OT}>glz5t(-X>2B z(`pZdQi_B~7;Be~--NM}t`0haNx5T8m&;j#nqT_`w#|;%=tZiTb{*}Ez9D2=uejs5 zSeC`Dqd7ut!)mbaJ!neq9pbYflDgnuB;i)WuwSwDCU~}`DeDQP+e)sP{@IF8!E!u~ zlxS3a5uDd`wdJ=q`Cywfs4Ve>FmzIGr7A|6%-EkhXyZF!V>85iarnyo~1TCSn+CjEyF!KPsMMS zIE-b=t#Exfu`QIid;W2_I>!UDqCwv^II6aKX<>HJ&%~}oJn!)^%SgFH=5pp7z<=~l z(N4K4^KUhonB*?Ok=ot&MiAfe>lw1aggj6U!sBf)AdFBxapN>1$5cy20h zd}8wXs#bk?pH3WM4vD@dM8G{Mash7IE)!xawSpT+fsicN2*v` zGFYy66p#^vw$Be&@$arvc@+QbM( zVr7A6g3Ldfa4HPWTcQ#r@=d(*g>wxF28Q^z1UFvWItE*5P>*Mu@w<5hxI1alu%K(* zjU^iX59A}&3zC|LiI6Km1c4`fa*yC7ctrv}Lhj}FaNM_jy0>+B*hV5{iTEeo=cIK1};J9mJAwnrq!!FLS2A5z}nwl6*A;g_v` z&-iVZF6WkbD=fI(CT&w>BV?l~@i%^*ng^@DP5E9JGIr@hNv7Lg1E(n?N0K;9;SpX? z1b@`ru;aY!LwP6XSWTAox#O)$`*r?9wS9>*f?avme#7Oyh~-Hq5}cpu2zBw_AR`k0 zo&sg9soGy)^A$|Idy*ssI1X+cFxtJJr+73tX34SL-*)|&))H1Yo%R|y$bs$vH7J;q zXC^pw|AjO2b+Q>>OkUW&_x2K-CfytLs?+1ITo*hSu2}NislgcK6lvB!&-p(jb~UQlDy6n zt`tMwSnok2l>P%VQ%}s1RE&MEjN+IVU?+jmD#%C`4>V_oz+gnWkvD zh-M{jB3i!ZIMt<=BKB)^p;P;zqXOX<*{OZcxw@;%Q)TzavBlPgW(t|mCD$1)z`Re9zFS2&KLY(ZPhUny@ z_=Ehg?RN>IruT zUU4ADBi3~?=$@7&H*=?q}9gN@}`Bn^|_eHe%i&; zE=Llr7vp5j&$iQ8?8?Xn{APbAd~4MZjIl>r zG+n|;fpJfkn^OY-SXh2$>l|%-$k3q)K6<%*#*0XPcE*q#D5KfG>g^IO}mf<8ryipC5SGprc z82a{uA2_tjxmcA6x$-=Y;sVIe2d)a#Dx&G|#dnMAWbgx@q_Z_0rwxguw{Lp`L9He@ zG}m)zFIP^>0fl5MdO%xu)EzM)RBEPE#V4#hVTGW9#xc_cycL2mwp7ojzA3& z#GQ>mp6Z$Eo$>~`N*+yY3#MR39d(Sk@aY?TlhDM+$!+8nveF@*5Fd${OLtm^k57%p z$lXtd->{iysq!JSe6%w-WJ9?ZXUs=dsQ@33NZjJOy<7ImC$)sTlu>Pmz87{4{vUab z$u?1MS4%#Ggj75CsQi1cQ@2R>@>zoXU6CVc4NXwr)Ow)+F-CZNh@Qyw_;!7H7%vUs zs>tSkneiFYu7Pl@*P4}hcz;aCUaqaB6R#m>GaA22Nt9$iPESc7CI-J#_hx{>R=Kl6 zyL=kez8Fcq%wl9VA3LM#{+}b^1LvhDgj-tqmdCr>Mp~W3VY6u(c2%c==`Ydra0sUl z>Sr*I8S6GgX5=@B(D%zN1s_G8IzduPmVvTlst!z40{EpIY9*JiJL$HJpAgI6f8IC4{z15flH5%4+VXt@7 zc>|>&Zrf@H=0A(_s7B-=8+BHg)wuiDN}@`sNWl$NzE(%<94t0GB@?h1Y&(l?3?D?4 zgJOlzNcamy0_!qA*EkX%!7tLL{kd+nP1s*V8W9N#xP^Q^^Cg#=DjwBS+}J>(y~^|3 zeQFGTzCqy@aTE!%ns)QG=J0GJr=j=ovF~gY?!u*&hjiqbe`qs!b{Crr zAHIOU=%EtV=6ZoEC68fc6C7=P&_wsV^y5!TZA|5^Ue5y!1E^>JXBE+du6ff8lQ)KE zg(VZY`{?9)j<)K_k?gDUb&v15Q4HqPiFX-d83}TplIZfE<6bzgGMa_gHRuSdT(t}} zwLfM z(+c1JJsk-hD=Op@VLF0$qmg6Jh@`}!b}qwlqRa&$FE(>!wcQ~*!ZA-6iGf30_d{&C zdjk3CGgrf1Pjv`C#FKHh;QiXc*v``>%b%0+qh3u{)FXcG$TG2?Tx0f|*Y52s%?Q2e z!ubG4NoJPK#$uSSx^q)gwksRZ{R35Y^CWfOG`nyMw{0VN$mivfl`k@95pV6q07mIJ zl`@sWsSREnJsW>!KfjE$=4SVrD1!&rjK+59oI&1+mU-e`&(mhyo5fj7-ezUYw(Cc~2b=YatWQ5sPOFt~^ z1lPE=d$!SxHe>dga}aK1E*meg+Vebb?9&2{+vN?k$r7M2AbfM$0RROh|44&d%%atx zD=(*>aAGV~E-%eftFcBKgbi?_tbr$q%MDygW|89d zPml5X+E4YGT&QTZ(@u^++-&LV%_&HYCX9D{R~?~qgK8Twl>8xuGOb=}8_iZIP#gjJ zA{5Fmg{M>cvp+`fD1&e0aYrvW;VsDFzYX3#&nvpm8jdWuHIdLxaH~po@&xTR!e*;r zw7*Da74V?n6=UYw4GOLgu3Mx2{3aaK6J*metm{ux8RFoccV*(DM*GH@sld$y9?T|p zAxI#Oem}K{l_k!rhPmu}@_7UFE&!z3Pf-@mZRM43fZ&O@;n5^x@e`UBRFosiQX8}Q zK5H9+S8ZG5L7S`Ibx0#72DeO9S8cz`?oNQA-UO(`T z{p7(OV5Fd!TD+}VB2~e^>6zUFNQ~XcT;`B7zdxF&hA+uqZA_jnG#?twIICV5-X_>P zt?TnKpXS6mAAv#~80HVfIzRrCK%F-7$t;$e4(tJ$fn7TF`M+%6>Fbi1i*jb@FIX!< zDlMSDU3~jX@CH3q=KWB;J1eODc~s?|X+XMKJd z<@rBkus;0oJ=He&;0&1lIen^rPko?(XN^^K|M7^mbyfAVkBZz@39uI(GJZtprA54A zL++@yu32|HW6AW|5Lw*K6e%1~&){qYf!0)m>`4C6v;S|{UeK@7o=v;o?-@gFD7vs0 z(NrZ#7nOh~SUJNrPh8%Q4;O61?tD@H3a1t7Nv$Dz>7thfzqhBnULo%>)F5iF^=fW! z8t9{?6>V)Ks+bY47JO~&Y|^)Ess8^ED8qBI=_vBqaj;6x=>8x zk+q}Tq6J|?(^XWjc6iSx`HgQ5MSMu_>3t+hm!857y{oeI;7mq(O}p;p%7{aw-pH>$ znl1K#6GnYynY#LpU_M8jn%xLJEq6LZ4V6Ki+U4%4R}Sew?i^JsJs|-Tb~N{Us7kmN z!Rs-_D1Fz9i)Y62ZXIcIt7c|mOFNU|)xdw)zZ#8aoBjstkd4qUBabA{^=1;p z>p7aTS-LF4A`QH*H|<36mxSWZZ_9POW7^;d5}SsmT^=9BkAkJ`@79^c2{&rjyqvUY zN@52+D3rK&go-3vUl4+rOXr)5=CoRL=k+VvLeeISZV(*G&55Mk+4c6NEEKH{kQ4c$ z+=|k7aoA{Q@qf$=X)~ZohabR8Yzc8-x8F47igiqb=JTd)NS(d&X%@ z3!beRVruEAQ}X(6NVE5^J_)%&dLKLO!7egjZ1h+tzpd3#a@Y(cQo-Je1Yn6cF#`sidVB%Y^1RI-tFS$#;@2#y)L6G zg+&E%&hh)KYS-%e1{73Qj>ZN$CBsQfF)CH7mx9Hw30Pc%SR1(cN@>gykM&d-H9IB` z*{*`i51W<6o_?0zS$j>TZr-qfoLMNPOatuf*+#M)8P=h$>IKgui8{*)$5Q0;5gz*; z!g8K_jsy%VQ6vl~lemPD%#j~|BEtg5nd_}mLo?gPiSV4Oqvn3B6wdgA!$Nm& z;SXIDr!&j4`xD+uG5^EJsc@yvQ?OsBPVI!0TZ)7X6+ zjHvi=8&uFz3}5vtyPLLomUo!*Dtb{fAGqjomHSq}K%V^zO#vLkkbux)8$S@agI-AA zSfgTO)HcF&Op6W>R%F*@Y4xcNw4%kR^vg=3P(adk(v%~2g@lEs4l53G0p961x7#n>DE(V z!gz-N^p^H&*nT15|LVABpOP(~-N-@cAgNk0oF1E$^GME4-T21yxg++q;<;VnR2taj z0HZNXhbou_F_A>}KD09ms^jf*X0$)T?}v8oOyHcz^I1ZeW0Xf+&E)ml;h+UQtz4_J zyl9?4e_Bv^)LX%aRxB#NKVd)@?A;)mp2t27oW~&e?OaS}Gy6_yqkBGgqbp-iocKKzoOZE@F(tAh$ zUBaEj-!)+_)KajF*Ti0}>3^v@qu^||r1xs}msH?rC5LV`!o4Zd_F_V4{fF*n!!%Jc z4meN=JYY-Wx_vLT8vP45a)Dwmtt@+g^=?sK+2dad$;bUP=?A;U+Tg$iizJ0oOnNm_n~xb>j;1qfTHO+M*f#yf}*&*7>!4Fa=nXf=>sntZ9C<~3O(D$!`k(a7~##SY`U z!ONEXROVL3HJ|iAs}Ln$Yfb02w>N^3ckkuG`M68R3}J^Lfn+d6HqxiSOqEr@&QRX( zq6Mq>%BIFxUm9+SUR?p8iNpSj0|p!r`v9b0HdpvWnrA3X+*QR@+um)nCx9@cw$AEd zACk%B_c-~VNKA21W8WmF2st+z%6`&lUB|a#ep$Y=lC@0vG|Gl=bNi|TL-$rN=L!+B zfD`nmnjNgt_gNq5hwsQhQSlH7wxNDt<}4KoAc!R;cve!Nab8zoMYh_Zk@2SDKEyQ-L}9vJ|uU zipxu{wAM+blL;E_C7f+v^KaBqULLehAcGFD2s+=<&?;n0 ztC&6zoH-Corv^Z zKB~@*NvRi|vUt6&fqUVt`irai!5uYFCdT!GMrOrnY@E#R8_trv0L&SKFH+x1Ep09t z1M2G%U@+WrA4esICW|m5Ay4~egk~6O30}c_DCU3_n)zj+TEJ5azjejoPmJlHlI0f|Pbk&=c&NE>`yGh>%V8kY`ge#W`#%aw_r954BB-g< z52cw~gCohzHaYuE<(M+r*_9W=(W7Bj?-5Qejuc=QVMh?+es9UHCThbn8f2}VHD7;sGYZzkRa`Hu@US%` zM(=!e4RW6Js20LcuVMVNG3e$D74(-`EPEBFk{YowI8Kmg+R?=Ed~5_+D2eW--B-;d zdaHexA~bhNpWL)xbY%H{pwbA;=-EBVpNjYXFy5Fcbyl&g@~J)h{^#2IzRQ5LjY3VA zyd}K|RpHER66+bn`VcQ$B-mSO1^e|ZBlo)Ld!l87K(|{{7W(xB{Y&7q4&Nr6MOKd; zglp#mgP@yLu!rl{Q-##4Y6d*q34Wj26?$8TqA)w@Y>sB24PHwM>KVex)?ydrcw^-^ z3-~$8u{HW_Edq&)qGjDOLTWag`b)zmq)+`*5QVmi*Th-GBFn(r+QO>ivOUReTl@i& zaXw+*{I*iw%9vyJa02=`pv~nels+dw@)#El2m#&zI6f&vqV}^D0r5sSnmcH>JWKS< zBio^#YN|e;aN8p8tG*I-YCdX;Wc{7111oRSwDn~&X7f6u$*HoUbAj6{pr43*{oT68 zcagBc&-JHTmpmeY-7dO}IOmI)Ht8HN+!S$%2Yj;nXKYv!#XNs1N)3Vdj({(h-ab!^ zX1eKMw0V#Et~um)D^LACNPIsyaHvg`aXnnen>rzY*!WNb;g6_w>(}kx2i7vX4a?=* z%7*qN6f7u<5nNSP-ZP0iH&OgYXXN1uP>tc7`>Haw z2}kv{q1Dng<}_|mDP-Y^fZ`wOvetWeMz)5bLVIG}C=aJYWY8ueOH_b?3Z-qFww>dm zUG37{CnSUE-V7ZzbAUr#!08i%=62@JV|p)V>2uMZ+Y*v$&%FxxIs2Vp;tixhSxm$+VuI{?j|ro zXTREMucozTuY#m^DTE2HGqo@zT>5xLKKwJMXKfdNr&ZJQ;>pr?tZ+C!{WW513Y?#> z@HrS^c%!#ScH0Qe>!w#T6=y)Z<}C~?Tlsxh%3C0pua?mg0cNT@ z4f#?uVL!nnK+2mJR)^Bwv``qiUguWc$QwqHa9SdR=;TwBZB3~^STE;#w8LJ2odcG} zp}RF6d<3KjzgEP~t2g3vw>0N!3%^LY?M-u8a%Dm(9XAS1u;s^myQ^3prBs!#l=*x{ zYSWKVMidm5e{Z*1b{Lg*As(aRu@Dt0_vKf-L6=7IxF8YIE-GgjcwI=P-T z{Yu%qKKkvtVHcEX3#0sn3_P%nyqcoJFLDIrWw&RfGA)UC;dc3y+|Vs9mXP0`p>E=? zDhi3A;rM@N;Nj_>vHC{VBq3HQZuw3{3y5kkB;{=eQto)BF5A`W?kg_iF=O)$D%qca zt2D2WoX{q-MSFBS@xorss?Ih0Oq%*pVdM(Qbi8&8gj|X@nBu3}Qf0{})OF6ij3o{y zGx_9n2r&`v%(p+ySF$)^cC&4@jLJ3`X(J=I4(1dobym6zCh?E-x0aW{I@{ka9u(g) zQM+zm0O+5;hr|3a{XfgtnXOzXe@ z1d+Evw(P%#X(?N5A-8A-XOafy%;fCWsBj0y}oI&M`AESVN-PzmWRBWZNt6 z=KP|!5t46VQ!NVoU^ATa1;_LUjDZdY%XmaJR^g#zqJoc5G-j0Z$gM@ioaR_gv}d7C zPCf8ohD*-m2-bt+JmROc<@TLXn&$-$;gYcGS1M!8l$(CZ;xyOMQ8gYI>Hs8^Vco-S z-cLGn;y(ueMfj-}utdYWx?;7{qc4xD`jhpL=5t_hdlu*_Rc3BIJbz%*Hoy#_mf1GH zyTZc6^&UT{&BIhTYKcVPc~P9>MMaGyz~3jGEFkc}bY!+QsmH!1{}J|8tDrBxSj_vx zbU*w;2w;YCHal_{`P!x3@Dq0@S+~nGgt6B_g5uH=L+vq zeBof$b2WKzr1WR$K_jhO={aC+Exq`}PHYT?=w|}c-fFI>P%VQm|Ef?+n!pk>?`#oD zYfwrw5+Ic196ZKB;F~JM%ohf50aTaJ3%V&kXv*gCX3m`ElotJYWH&U&;B%sgxS9&Pg84`mTG;wk3}F-TY* zM3`qQi0aPZJe5qcIwzD~=Re%)C%{LEH?6B45|6T*xoPmR-3s$^Q+{>`9~O|3*yTuG#yIzvLgyozqE_;u(k8J3HS z#iK`EfoT>++Hsm+V{&d=8bLyi2?D}>5Nr|bL4t+;z52#U0 z121==A;qO_8oTzlKv^%E-=TKaZjHq;0=Lfkm?}wh!+y1|S`Z)G<7)N+_!dX_-r~sb z7-T*yuLD%`sH7-&X9(nfLrm?3fdPc@U5_a3wm&QFJz(2HJNg4*Vi}V*ATb+Yw4TaD ze{|n1x~9=~9*0Fp$rDeyqo_+nbs?m;;_XCw2ujiGH1K?G+*j#Yt6iQ*S`90QKJV^$ zlx*gS97Pl3gb(2F+yao+Y zW5Es*c%?8(pl0j#*ICe4IzQI^pzvRVDzRUBKsTmvxRJg|E^V z77v|`O@g9t+(*7Tv;wbjcUhwofZ#~NVB;=GSYhsx8HMq&?^Gd5bzNY_Y#Vsb_DUD$ zyr0pr9dxc&$~dr3!>4#eHt#uU%HnQ|jp^^4x@k_d=UEa&`%OQ*-1OIblRekm%yrV1 zUH@?|U!u}B%AUIpKm|*z+)R))J_ACp-}d&=-PN6Kd%Ze4AIM2>qIPtM001T7ka=0K zkM3076t1rw*3Wc(El?aRgmtm6UpVk@TL>%jCVr*`X&Cq1R#LOi#5bqX>6K&o)uBs71}y>Sx~?*j+P+ z%w<_Cdb`d1BbBl}d6+97}SQBCbpoh12E}+wX{o+XYiR zHHatT>mLljI5Sl)d4}rK)f*`oh1+paehG;?NYyXSL4KDS*c`P3%%q+f-WeHxH070I zC*PjS7Lz?07#SBC2HZ~uK1UhcOKCheWYF@T8r`sa)PswV85e#U zw$Bu#;KT;p{GhCJR{*-tbqKnf9I}BH3n||3`(FWU2KXlZJNlAbK-nl`j9rV4@tU0m z=6LDa;d^VK3z_i()yAMiUVg$eKQ6*ZgCB(%(>6lhZ#@;2ESL34-`|eKST;-x8{$TK z!Gas+)0cv&|0*Q1buV;6QfFKFWlj|Z9@%^dVcGp^A8Dk{NtKpJp5+Zjbgp(J^kNdz z55WgLP3a>!vs0(RvE3nu_jO~V*S7UcZQ7az5;UyxYJD2V27v_PpTy!StE2pN55F3P z6`J&K%*5>+D1TJT)WYyO9y1Je%#tcD180wDwk&tf_>RpjoTN;PKfKaHvq>fxe6iYM$?AXAE~=& zBXf%CPi21%Bf>USDUclE9-TTZU6~^-n^`poI^lO+X*8pDIq!OFru5m!2q!{v$?yIE zeMA-k>!^_{z^p~AwQqGCYqmgZNB=jooHj``V93XXQcbQghX5am$ zj00OEU#&&)#wzqt7SJ|VkfRv~B+K6oj4anVZ!%4rX3V?>yOcRa6%w1=w-5j4MX>KL zi_Eh*hv8M3*0WnjA6`lG)crLZ_F>7uN3ip{e0xaq30yu#FFJ%6mFYM!d{RK)|4?vS zeiVgSV5LILhX&-c*M2R@QLP{+P>CPj*SPu1zDeHw%Tw+joXx|%K5%P1r-$Q3)V(gT zqwAFvx7v#$uyEsN%Pr<+FiYiCU;d)XISeo!E5@+1npX5)DE2(jpi`}B9siAT`d22&%{o+2k|!lY$J$rP&obXPd<*5DQy6A zZ$gcNs)=QP|Ed%?1(E+t9}eDGcdgGi zd{W;NgalFIN(bCDPHgk?+=%5}pcd^Rew`OB95z3QKCrT{B1 z`a{;g&pyPy=}Q9XGsDfMEA%6dopR38dgW= z$l>tv?1lB?v%!g+*#-nAnw?uH@A3TBDydn*H?!#OJ2E=_Rv$Q-JT)C9rtl?0F)JR> zyN+JIfG?u2kax79bx%h~eInQpDn%RtlTQsoU=iIN-R3ZxwYbz^#cT%wuD8 z8YyXeZb&YJVz6PE5Tl`vwu_*&#TR-5Yjv>9Y#Y$v?_C#O$r)_EQr2YwHA{N(AkA+ZTWZ z4dqSkZOrCeKT4DQ{%uK^*YJiV#+M)dwZszW>w7u<_D76xw9JH_R>tSgI)yTJcyw!N zRmnG`wANOb_vt%{@zSg9k$pQRGMAcZ@>v~~KU~sr4^WNtsrAhDOz(%QTK|N>debEA zk^TC4mwt1ywbsfh-p1p@cG|v4F&3c!_fiPq*m02MQDJ=M6+PY$ev$sZS33WK07coI zXG@haZpAsp?Qb}9NOY`E&WORA^34%yu3FaoQ?Zp$_w)-ZQ_4bxwvpn%)b*f@o`$up z3ee9+1?1ipl=(RsQkm905TMf4ZTmDVW}q)s&vykMCRbkuW)A4i(^3^ zs)0<%*%$907Sy>5UR zpGgrx{ld%8$3x?jE5TaH~3V}6>! z&T=|Ok)S&7s`9`A;sq{2cd_Jp`a=wG(c>pAghdY%;p-DVM1`^FMhIv!mKM2zxGgiW z)tUxpm5<&;;puz3>g4an>ibXEol=>qEymyeG`qs`xu$Oc58yE#hP^e8{xM4YX!78H zTB4*O6mns>U@dXRTqydEPCJPJLD$27si_1S!uBkJDK|u z1)jJPv6|0E(|teBxGM5XdTE0o&op_1uo9rwn08%%hdW>he8m-VWonaJ^ODU|+^dGa zZ7!MUk6ZrmuW(qD_#bc8M;m+FL4Rx^hAId3?;@UpB@Tz5?Y;S-UiKo4^n3<;ZdJ7} zIHir8zGtIl`mp>Dh4u(_B4?xJ1J`!iM0OI9LYhd6+aCwE!zm&rYtt| z{v8+)3!K3oeB#BoI_9(mwja>&1BAWm)gfEUP$8kn^Mv~34ndCvOp1|ZqeB_R^>=lj=7iTj_X zL=0!NA`d%n|A+l*+cNrv(p2{^M?68UfV@6EM_&80A2&1!>O<`RFXYg9{n^+Rf6Dc` zXAhO$M49a$9;rC(_V_EAeEYvCsp1L;tgoflrriyUE4f6|qQb}VLf^``jsi*&9Y^9e zrr4p{MxU0hif9KMeVZ@4sB#(?nHGLr;*qo0Xh5uH9+Q4VZb- zgrt-2n5eW2HD`WY^BEY{M)mt2YrKn_Qdb!Qo)%rWg%4e#^Ipt(AphD9QaLXadcv-H z5W@pfad;bzzRT0NE_z7T;+4Ve;usv9TOw=C>c1TIh^}~b;}M%0%?MzTrmXBgfY@RN zJ|uz=NsSh21VNhC)!5z%;z*@Qlx=!O9&(hZhwV79E1y?7FB@Ri7j9|-ZE7nH${#R_PQwuTT)V7HVdwU+-gIUjN%SF5={_+H ztFv-pL+~egzuuE}r_3L#Zn%1z@t>aiR@3f21GUO}2H6T+pfUkr{@xLnxtxtDl0?Nq z;Gv2t9U;9P$XAkvtl>2RlR{AbdxWY++P{6@>a$HKw$wboihsTRf4V!%s3^Oz-w!P< zA|Ndy9Yce_0D^#$0@4lAEuBMmh;)N=cgN5p-JO!s-E{_^@?Gowa=x8)=EJO+d+yoy zj%)3@{`+^;QjhBg%rLOBU(i*7_Cp^g(4npLQOn9z+{~5*!DS!7>EZW6I{z~Fg5em= zN!78%T7PU?R|E>L8I@xOm}>^|nrD2~{#Rz|z0U3Nkfq>ZuK6H+H~f@lI5UAj10U)8 zf_}cNtdRM3bnc`FGdN5@PQvF}f4X)LSG+{cZxrRe^IRUB(Fa*QI^j7A0nA?7Xep4l z+fW7A?J7ytI=Gi{m?!zd$z;Tj1jRI3GZTorlJ{=n*@RvM9j^zm6)y|slWr65DCjA6 z_1@i$@PbV{n+%{QeJfW&-&fM0F<$4*G8EFmn@FMa_0Z{R^_hBCUX>Pb$PaL~yTk$R z$qY+m~kklUB9sgT7@wDUm@;L!az<@cDm4cu+P5ITCYRbOsMz*+8v$ zG!_!u2a72a5qZ)T6q})HM6=zOi?joA`P2T;7qX|lHku469X~Jb32r$HQx-L`f4*qE zgV!Qp3~4EseQMXX+~9Y(cF5dsq!4C=(H^Kb!~#(ervP!q1n7ChGl)qMW1K9oyo*ZAHB@q_)8AkgQIj$kxc)SPDVYg7^Q~@;Ww}4Cz&3eS z$rK*CuhC|G>rLstar`#PwQ+A&BrtU%ADR1S^U+bm{tgj-(t(tsxPGNR>3APw@ynjX zsb|D|ALfeKiErc;yQ71`I{l8e3)mA;4E@9n>Y?%5F?e(SvH?XrpqivlSY&wz4{%K4 z*d0#-^bcpi*yjddoc+URoFbX>Ce~jrco)2=$3-6uOBk6FZyBL8Mb*RZU#nE~H-x5( zTlxlH4yFT_($1HGwT`$Bi&bJ1{$w`gYjW7tl^Pv6e%zjFKIKJm3}mLq{iEv8144-l zB44~5{twe{Xas#IzqhIBMBnL_IpxjxTz)#P7(U|4Dw z$~B)schxygUp4}d1A&;6`7W|ppTQL`{Ibv0!HO?}?O`kj(V6ex7nZpzUVXn4mta*O z=Zrl$Cicv}bwr*y-nv`Bsi&}X{tao1w%UokEanNBD+u%ZVw2*4fHgp@_iCva3&G<1 z-x9TK&cFD5u=&L>zpisrn>OCuQ$nkxj7qHK<)o&(rF!ow=8p}oRMD;u$dae2Bl*c> zGFIAArEMjuf<^R>2$0FIy`MYj+~~&;eX=)A3l4ysY?*4+pW-*=mW0x1YkET03w5Q; z-MNLQwAl!aqfD;}%R`e|mO}jHQ`Bk~LIb*Hb&o#XH)f&r#jJ>yXn!P?Ob)s$ZR3eN ztodc{Pnxo?N1;9?W0v0i5zJ>9I$a(wAHi^A=cyTWHNARAQ*qp;El~NE;<>XuAu;9x z()J^LF31OBZHxjLnTY(krty69YTaPl9*2&ifm9_^b z1lqE8{nIfBONl>1{$J(!byKmgnx>QEFUA`B?TJAwJ4Oue1#QTY7v2QXwWqL1O}{w> zIgrQB*rwAbo&HBUJ7PxlrL=Cso?IB&F~zi?{7pAow+P(ASmYFENHHhAZ@c`|PkQ7b z*>6Q~&fn{Qe3pehQ@|lcnu{{MCv}NIjxAt5Y9dlRbSP^(cvEBu|Th&F%ujlrm{|&mqQ- z#1Pp#Z+go|dfKl#w)$pL=~&H9brboxPg6(7?f`Dat`A{To9A8b>3uczKhp?)BvUoA za-gpd65^K85ExT@NG;Vb%VtTqp6)ozzR zh-M*^Wte%YRb0KYQTT-p2#bxSaF$dfs@I1e@9tJwj}TrEBUhPdz+WA74xMcCVdYK6 z*TTmLhwERu4RB#NdwGhoAJrPR`o_2)oK5L$X<;qEwqfR2$~9Re41f)fa5Nm+Y>@?5 z;d0v+yWHrqTXK!^s<&81Tr=rB^MZ&SLk!FZ|M0xLhnD-6Qla0ckJroh11yT%7{-|q z_?^S1Sl`IGzene=({okhf02NG+Wo|2fhVU1Rb<>!q{PA!rm~X#n)}IM3!TbfS(S>r zWN*p0xV^t}4=WjLs|H74^Rq&Rc<%&h!G2KhNt-|EO|9YA1pKGr0@#N?vMD&Ca@ zJ6k}`ILcb=Y;u%R%2iPpw1rfZl)Xefamuboh;lU)A}uHb^cN2p`2~p_`lwR!{Bfw? zR$1wvc_1>%gAAln0+Zgq2W=n!uz(hvvkOR!iB$sw&{#KFGj|*`;tVzall7SwJSzA) zhYr4-TxKl@mP;0SqX%TlmOPc(Ev&XI@?Gn}w{PNFy%IeqXu`cwn|Wy*q&;s{>=7d{ zQl$@rXZ^y(6{cQzmXxS}q?~=B!fq+0!KeJvQ7a=n!)~T6pFeG5j};9?2^hG;J}uCV z?Eea!kCsO{z}9PiR4Q$d_<0b$-(erdO-$Ab*yfS!tdG|N%ly4I&B=V+Kf+n_7BO7b z%-Yv{mC?3YwqyK$9z}lSU}a%F`{%cT$<|}yx<{c2(}!`cPCIR{xpuY}>uqgCG@;a|-hVnEpp z*0fddiwD?gK1QZUiNtZL$_TNUuM5M+9T|1N=5d3%5*rx!2@Oztm)hR0ZU+`TL2i!~(IQz41 z%1;IwDgoC22!os&L)EdAtdWmzsfm81Ql@bfdrJ{N1wk#Ep$-B5E$s|@m%}su`Fp~m zGw1@#VUq_BRBNEw*|q-8QBuqW7WChWnbVr8`AO0-`x-%{;)>=j=<~_e|BVs0EZ`V5 z=L=U*OEJckP~4Jh{l?YAZkeORhLiF$+)U8ntM1Hfs)*-ftME>K z!^AEKZ(P$>3Hc0UdboRL*BVw2$&t>N39WctfXGRMaXVrIgg9szX>B1`o_!>|k@1sWOSit!Kns zQ|9q7cM@ z0<3RCbJe2>CrtTPmlkZZ#6K5OJ{qM|gYUVqPaYDAfJE1)qI9QEs|JyxpjOBAH!X733I+FW#qhE0?`xZQYp0kEr3> z@ePHw)4`+KqoL|wwMUmd^?s8lt%rDtg2Ffuhx-Nb(B9pzxf+Cuh8l4{FX&;mAwfT3 zq04h^bch){iD&_bzxag&t?k2ew=5c0;z3)a!y&_irFuqb^;Wj*Q+b_;{_T)=-w;GO z9YK6`gT-oyK=Y3~KMy&3yDFHQKG)>a zK08(0FLFjdpsSgW&0FDO!lCjInHAb&(GIXR_i3!cN*c_4J8``?Tq$kxndK76KTFR= z+Bj(Ts>~#61{#Fp$^`}#IVZvN5dodHW6}1A! z?HE0AQonW6-?J4wNr`?unu=%g5iaM5tHRsu#;^FhmE!bwJb21X&c^~bIQNxv*q!5x+eQeODM$)8cOSNW zoF86^m>QD5J@ogH^v-v`H!Zz=RBZV%n5D1v45^NMn4l7ncE_35jJKTH^Q5h8lg0c& zg);_UvcT!l2*XB&K)u2^q@c23hOoy&g)DgyDGj((NGHAE8k*EY`<0fi%ybrM9a%};h*!IH zr$S@%Xr=UGP-WrXzzbLQ~Kaj-k|n3bg35iKj;#&UbPC0kCTG!WRL1-v0(>Y zYpAzbU0a;y``pPN2d$%<$ab<8OQUKYrXRC6SLv~`ZS*e0Hvd?xi9H_Oo3)p$mZwwq z>T{N846_2ur(l~Y>bvsH6!vy(q!(9V@?&#;1r<|KUoU>C*gu0ZO6s&e%Lg4DCkPCzk-43~EJTP3r}`kzWhdtiI+-RxDDVg{48al?a)vXVKh^KLv7;$0Y7CjZv|@IiR>H4|ID zM}dj(w%pMFWI(O2FMc~?%G}BP)XO*B3r2{K+iDd4#dbC|El`v(rGi0=<3&oWRB6Hr zfysmdchXFq+975X{7a<^g6?9!0)Jkz(}EhLh|v$6oH<2OKg*?Ea{j3vnc~M^?3dcX zb$0WZ++rtTIP+ZUwTYkov~{oD4I8N!T5uDn#jfT>QZTqs&D9H58F4oCB+9jN@RXQ# zktZO7fAx}2C@_AXDgV6VY4UwlzYTUOKYm&A-s~42TRTbzw!82i&WTOLCc`rK8mJ7{>x-<_q*2bb<(55( z(g4k})(@F?i)z7yma?plofwy$i&V}S0s$gN3U9?V_^R;WMm02dSSL3T8MkHi=4Qfv zt-60aGI(h?z-w@harlFa)bke?sc8@{r6S8@IA6rXQc z9c4Pdf2w^sdFdUtnstmm=Ud`FN%`90ipbn570qi=;8&aAs@AUnn;XVqy*GW7g`2Lp z^M`Ixg4A8ao}Z?ux%NQ;KjbxixvXKn9roC*yu4{8$J8|jXDC=#pw5ZODerLcb; z^kKDpe(MrPucm-`;Z#)qt7{|PfK{6nFiE4;>`Lufk(7*U{x#;3FUiFzX#xlGzysRb z{cuW~peg7ACl6~2h5#b-TOYAeD-yHbDjnC|=hrOS=H~5vcF)w%BeFNIQl1<%I6 z>ynliG*l%>J5{Sxn2Hom|)6}RY zY+_;SKtC0rd@irr1Z{+vV%Eh!(*`s;#^Z{@NB^H1%q7-~FFRy5e9m>ZDik{Ps)Kx=!$NuJneZO7nUG{j8vh3^mdx!C^nCkZRzlQ9@= zBFCs}+YQ7TFWnGJ51*{)GM~>pu_sJPVIpnr4hxhfs)6sZIr9F%Z&dtEV!?RbJlPvS9pI$&8j3dtJtvtDjo8fehS8X46`5O@y6>r?TmL8-f z@XEIH2zt}bgzr6|FbAM!J3;j5felfoUIlI@sytr{I=ixIvH70PD2X_eT+IwB0zKd^^t1uH|oFaVYOb+An#$eN&wFa2i zMcef-?zIT>3ys>R-^0n@Q~N+d#X;kP9@u>Du=|pD^ck2pEWMkJVk`9V`7HMqJe!Lx zaH{$vkpD*aJWfbkaQdFtTs3D+J$|mIO$1`k_dE$*Fon z4fZ@2?-S2_81}vq*IB<9b6gCd6C_SG2k{0NsLTBP3AOu?JcE2-McUnuBk&8d>Q(iR z7YDXW%G&jHzc@=7Rs4UU?R-4|{KFjj)35!W@wXK2pJC*;ZxTj)_Wr*h^ZcHm|Gjkl z>;F%MzoGtro9uhtNEj{cFP+2hQpa;#nYA{kC})-R_Ln4QC-}NaYEM68YQH>QdDaA} zlub;qe!luzmBqG^R&yMQ@}^4s&eS0C6%uFYL0cS9yX>TuPAa|`&4_v7>&7!!L-fr3 z$*B6Pv6$R+7~N+mRuJ9qWm{-QX?Uz;rKQJp2)cMaDD{ssUoIa6G1(5g_G>VzHIt?Z zj)~_iA)tpmzs%GW=_i~+7v$cO_JQq@3E$)PvjU|4FpsLk##cxjEMhI(@>1R1#_)2X zQJ=e{_Pm#_`cS|Gw^qcM_a5R-nuokU?K^e?A2YN4N0iI&eq=$CEoO{delMgEgKfU; z#%E|ALIqCvz&#g1Q<$Zck9L(O^0+42b= z_*&BtcF#M||6_*pAtku=-MP{Gpn}$YEOSzm#9N+c@{V814>`}wTkp|6;JT=B!*kW@ zTt($T#Fr%BeCs@V!A*){$RT24at+DE-zZ55$4k-7+FC2%zmC`ny65c5A8i);9OuX;EKYowvBC&=<&jWXrwRJFZAs?&WD(+}J8dzt2 z>-k5Iz?%8V#4~gk20l+Int|UB|4KS--QPW_3-0kMCI4#woJB729w=#r#NU8%I{);7 zd;R-gW$CHj_a8L8N<=gNmeW)FIfD5_X|?@S?T5$aQ|i!E@1>k;{fAW&<2_C|@r?=2 z)t6;V8uMrwpFQw*wYxA+OEii9iV!h~O{b{#x$4Sy3|)2M_6<@;Y-*P~RGY=gRckcdCtgA#e zcnCL=H*$!hbm~3AuN_9FsI|{y=+n1_w}ZVuTd8Y2@XiG=2Q;h0w#_VZ(TCf$)V%a} zE-a9e<7&!7nkN^Lm!R6Dp+Mz%6iDAO&5^;v{?S3*+9lVvp&@XZT)V`b#yUoOS^y<* zuDSRAZpSE=+9ctvAuYGe0PpN9x9-+HG6p^1Q)!o$YZ*A(KqF+<=89*DApVn-+DnrW z&+M4J03f#Bda;7IU|qz4XDhJ{IJdp)N|?|!*m=Xg(Q~5OVWBrRNEk%J!5lWRAW&>! z_X9oj^G?6v+((goOdHdc`K+4O8o@h99alcjW~O`6bF}r`ao{fnQ((dME2b!3gdGh2 z09X3HF}>6b@_7ACxOjOWlXsJAhV`cNrP&VMu39D9-dv3c!qUwTwNi#yJACwRV3LtZGa}2>iTRPOpqlo*TDRs6S__0}e6w)fHYNFeXh^W{S@Z7JkxvMgFxSo4Hs28qWOS;dL)G9EX+V^LXI1L;n^e2*7_CIX%v z2$z5k7s8PS+C);SLLxGNcc|p(=SNp5v!8N6QIjmB-CyNA9AeN_^cDDAIJbf;2 ztB@Vcl|?-`QIr`L7lEQ~z5l{GUV3LqxAc=o#ho{q?V0GTr8|5<`JO{;4$`{UhO;L@ zZT1%VH;@ZAomVI~w%(=QB*m{cY%P36C!8Xr+DGcoR8ROalanYb&=iPPG@C_LFusHt zNp%Ltp4Zjub5b*6b|>kDmFam{MH{{)`*J3b>H%03gha3tl&;=_@Gq@>E^4kWwfmZ! zTzH>8%smgxB=-=8Y}wkl@f7k54&qQrMhlfjGJSnG_qeULLpg`^2Vm(3P_|mJ#ePDN zDLR8{Hy*rFOfXcbtN_x79K0io6Q=*6oJuz#)HN2ZDIqAwbk z=83M(YF;3CF3=w&10H}Ly-oD`aUeCV{;s^DszUE=FfcdZwA~=S$sAzy67iZ=yOIRn0`Bq8n3Vv4+;ISC+TDu|85k93?3BmszOp>qklw#F4WDNW)RPR|>ukugLbOv6SrM5{5RP{M>AKQh%p95i5{`QmVSyv9 z(>BfPs&ASX#f#7_rCI2mVR|*ku);W&lXIFy8k2Twtu1_A$HocY%bO|0;3oLlA$b2v z4o01W;>u@r$ykTxv`w0?Ya`6elOnn%m{0a9ApjdTrB=Bb#^7chu-nxWt}t&Qpz`^7 zR1uF-$jMFRZMD(ZxgcC~b{jUSAwBnmK_5>X621~Z*xNJlns8M`;JV@zx!mB4tBfNB z|Acjo{$oWbPpcvqgU(g*UfiA;976~1jTbuk^cNd+!KVHSFgUjpovlskT)GW(koszx?tP}6787>DM27vnb%nG$GvJz%LMW<;%(uXwMBe}Hk z39!fD!&KEck;}P~sh`K6d`vtNp@+-e#lO6mG)Ruzc&&tFgrc&@=SQXmUM+nSCFe0I zkQ`JcOgP_qOlV{yNaS>J$ao!=5-~!oLbds7Am1|jIlZvmz*h>oU>P1ogSlO@MZ^{S1uu;_Rn?d<;Y?FVHH_pe1a?7Ip z^1f^DVvZy%O~c~QIE@_nx>8h;SJ!xtgNJ1X7w@LHeTB1dxY$J7J=)NcdG!m;1*C8`VYKavwqC27rz2hpjiap&%l&zhbW=Ur!D!bNfik|Aw zK5Vq`LpxIg#7*jsUCGkQXWPt^)>S8F)STe%s@6&;X2?=&EAq4C`D1!3hl}>?v->sd zOxCj#l{Q5bRVV3|jp~1odfhBFZE0t|<5&Naip6!}ImWG;pb1Q%{ebgFz<4*RVq1X8 zE6>)#QH&3QH(V#0EFH$16QvGbMl)RHi0M4uTYKC37b~IU0$`3LWU;kGU;Uzh&{kt@*BtCC?cBa zQ+xFEOW9Ejrj6f5-Meh1M18;vPl}0o|Ai6Pd0G%Zp}P0$9o}7kFBj9-B&InR^uRBG za~Jq1dO%l6Ij_nSMqIALRY@!K=zglZa$Y@AxZ93)-wDM5m)0C5Arz(exGJR8`bW^7 zn4phC3~CYCK|cPY$_Myou#jIxgyOQF+d zoHiwfq(LIAIu*FfL$QP;w+7??+A@}snCr}qByZ)qTVj`ti1^E2^0zckZUYy^(QDfh zySmeN0&nwiWGpVchYn(v$#^jF5~Vx%P3i?;(KdDO4h)Lafr|!=XwV8zv&$(iL60EP zAMRd-M&8*|8Z6$HEda|UPpf#25L8V!^jaOSXfg2cA`&i?OEf%Ai zp)qQbK#1qes7`A$Fcm$PrN9+CbZVRwo0*@WmhYp7rVC;=LEDfww9GVlLnPxHONW1T zJJgKAKfnCNi$T*e?IOg-sCg4Y7Mb?&kYA|YEs#B)VCZa+C06xgvWj&z+E_3%OT+y( zVmKR z{YVyy*ZnT4il$(Z2glb^MGf!bsk1BXDUA^glMd;QE8JVG05M< zoM%-o7DsNWpPGc_1P4_*MlauHP2n%9jYykruZ`UGG6uFG0B*ejEP%&X%$E2RW3|@$ zoldD!o}53p3sNr>EE_41Pq$!OSan}I`fQU0f==4T=ZgA z+%G5j=4SPVY?CEJlBg2vl4qdaLp9re8m%LI4v$S!IBT<5jUc!7A!+h zK-sz!szv@+;NCp6#o8wD%0X?mZmM}NtoE4UtbVzTeCU-d(9N_Zp++~%Iy^k~)qw5h zS=he5;?!G%O^L9?ce8VNah%TavzRIQj`w5l+yfpyke8?z$UbP@+BN$PuJxqCE%?+5 zl`sh|k#?TR?NVZ!sU#gl^R813*dd0Wby$tREXdYNk@Vr;n|5i9mVfy}t~Z{nV5FZh zvRSco)f!XQX5*G-JqcnZQRR|9dOofM-M<^?j*+Nq$q%+j%*LI-fMLj&hKSk!sEDsPZ~iW8lzH*Tdn2vUk`3c02lBqEO1HF_HQEVV#Znq)=7Xv=>Bb2% z3pV?jEgrhHZ9BUc&j{G&mRS(dR<%1DWkDW{9|y-|0FB(B;^=a$cE+`QKkO2OHZa&B_R71-3ME z7G<~x2Mo3FX53zfjW4b`O_?RpGCr8ynfWw#kk4X`jCV3bH=34+@raXvufo1~oHTPu zODN^uZ^q)F*V39*a(?G|u{&AGAgEC6pn3ML(P_cDixtWN6^}`A^(twZv|Zd4*tYIM zI(PYCkC($oCN&zJu>rSSp{1~NqhVjNlgCPFIT|*b<5wcry{1z|8Un^?rAJEDn3!-1>65fOMndYbkFN_1c76wYi*y39fbZR`rCs?fM3e-IDKT zw^GUDKZQ-=T$Q&Z%;Fpt7Mv9WqUP7RB!0s94ZF)Q*}fEcvAb+;@J@melw$U_m5%Tc-4HrSLjHwV=U=N8HH#P^>;WxXz%LwojEd(@0F zYd2_Aom(=1TjF9GB6M$^ZwHyNboZ%RBw0#)y&$K44b?MQiQBhzI~tcTF(N&=(qFi^ zQukHWrfN0`C%qS>vnd`g^0^_K*+?#z&Vp^-tx`25&?>1Ly#QNo|Ox1~yDAM(xC4?~N8TMjvFg-7RcM z?NGX>(G?3Aqa8Wf*Ddnr9JDMaP7U76tr=I?f2n?jEA6;X-(wH*_GMp zc&ajwhe4WnMp2>nCe8%+?I?MX<5u`yRMuN7a^?QJ2s&F4|6}f^BEJtzXBOQUXWOgs zE9VPS(HwXB6HOF7?poJr<2yUpryf5&d-M}ooWtd1#kQ^#H!i)dB#56DgaKtL5$Y3M zw)P_I*j&EuTz8CFMTRrV-QKZB%Vj2MX>u)TuuIZ)sBO(%7@97N_~A$h{>mYn^34Tz)dScxmzcm_(vj{3S`Ur3T{6rA311xz&L9GMi)-lF?!^hNE<-^$y65}4#zJhMMW z0NR_GcvQP+xo9v17Z1LF;jP!E*_M+04#3GBfJ$Qr4pv6nmK!tEB3ct@9c>L zmKKTYZez5rDF9Ca$dA?6dhjGXgZ?ETl)f;$$}QTi$1vZlpm|942>_*5Tb=YQg-uqn zfpom=m(4o(!HTNDbPLH-Xd?o^a`4yx0f3KmYPFGrWRV*LEl&wrhwSC1hDov^&EJC& z6$;f{;9g#`!oPTY5&%U^{5!o4BFmv|C;-cH90#yG<&D$&`={S;p2CQpzh^(czrB3_ zPY#0!s3?XNtHMURaYE^*ONLTGh1(N_GwM$`lonL%5di=<5x`$h2&l}pee#vUI-zFE zG!st4D_Dg+K4jVY%MHc_8XOxUQKK||&B&MU zVU&57`P%$vxBSg4KXpModDxU*2!VYHqOG84f*d(2B^h3D(~fG z6yQHIyVe+X=xU@J=lShCP;X8vUyufS+=9DWx!Tk&R7gkq z#ysq{+8d%ueo%7(4|qENrG}|usuxzVzZ3rbh6n&7dM3aV{ddJ1@$Z)Zed)=w|50Ip z^|iHWvo3~xp8s)^P(nh2grsC;ZE(f8IuwNSPrJdA@B|njxqy6HyY?7_{;tB`3B!Lh zHqP6THENxz*Rr0^S33*bH`=rRFB`4E*G6-%T=z(fT5Cl^@MmkS(#${t0*lp7dWe7K zpVlb7wraW5?|&4E1(vM(;Z*zc;r|kR3J6YupY0)nGnYo#!=(Jf4ARkPnJ&#J02u$> q{Pv&q&F@QysPL`-{r2>E)&ol3tWTl$$AG=Z%O6B#-jxXJc>f>QpdU>D diff --git a/docker/images/Open_Powershell.png b/docker/images/Open_Powershell.png deleted file mode 100755 index 861e609de0a4a9d30631071a93becae14a435cdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40513 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 D4rK`x diff --git a/docker/images/WSL_2_download.png b/docker/images/WSL_2_download.png deleted file mode 100755 index e9be9a317b7bda301ba4e0bad0ae6810cd4dfcbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19544 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 Cb}}~r diff --git a/docker/images/setup_finished.png b/docker/images/setup_finished.png deleted file mode 100755 index 6278ac6bef92ebc96ba0e6d07cc36bc3fcffd423..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35545 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 HCU5@_2so+3 diff --git a/docker/resources_example.py b/docker/resources_example.py deleted file mode 100644 index 652281f5..00000000 --- a/docker/resources_example.py +++ /dev/null @@ -1,3 +0,0 @@ -LOGO = 'logo/logo.png' -PRIVACY_POLICY = 'policy/Privacy Policy.pdf' -TERMS_OF_USE = 'policy/Terms of Use.pdf' diff --git a/docker/setup.Dockerfile b/docker/setup.Dockerfile deleted file mode 100644 index 18bb2d06..00000000 --- a/docker/setup.Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM python:3.10-alpine3.14 as prep - -RUN apk add bash --no-cache - -WORKDIR /setup - -# copy needed files from repo -COPY resources/ resources/ - -COPY docker/setup.sh /setup.sh - -CMD [ "/setup.sh" ] diff --git a/docker/setup.sh b/docker/setup.sh deleted file mode 100755 index 1944bbba..00000000 --- a/docker/setup.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash - -# fail on first error -set -e - -function update_ini() { - FILE="/docker/configs/$1" - KEY=$2 - NEW_VALUE=$3 - sed -i "s~$2=.*~$2=$3~" $FILE -} - -function update_database_ini_values_for() { - INI_FILE=$1 - - update_ini $INI_FILE mysql_host $DATABASE_HOST - update_ini $INI_FILE mysql_database $DATABASE - update_ini $INI_FILE mysql_username $DATABASE_USER - update_ini $INI_FILE mysql_password $DATABASE_PASSWORD - update_ini $INI_FILE client_net_version $BUILD_VERSION - update_ini $INI_FILE external_ip $EXTERNAL_IP -} - -function update_ini_values() { - echo "Copying and updating config files" - - mkdir -p /docker/configs - cp resources/masterconfig.ini /docker/configs/ - cp resources/authconfig.ini /docker/configs/ - cp resources/chatconfig.ini /docker/configs/ - cp resources/worldconfig.ini /docker/configs/ - cp resources/sharedconfig.ini /docker/configs/ - - # always use the internal docker hostname - update_ini masterconfig.ini master_ip "darkflame" - update_ini sharedconfig.ini client_location "/client" - - update_database_ini_values_for sharedconfig.ini -} - -update_ini_values diff --git a/docker/start_server.sh b/docker/start_server.sh deleted file mode 100755 index 2e2e8c28..00000000 --- a/docker/start_server.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -function symlink_config_files() { - echo "Creating symlinks for config files" - rm /app/*.ini - ln -s /shared_configs/configs/authconfig.ini /app/authconfig.ini - ln -s /shared_configs/configs/chatconfig.ini /app/chatconfig.ini - ln -s /shared_configs/configs/masterconfig.ini /app/masterconfig.ini - ln -s /shared_configs/configs/worldconfig.ini /app/worldconfig.ini - ln -s /shared_configs/configs/sharedconfig.ini /app/sharedconfig.ini -} - -if [[ ! -f "/app/initialized" ]]; then - # setup symlinks for volume files - symlink_config_files - # do not run symlinks more than once - touch /app/initialized -else - echo "Server already initialized" -fi - -# start the server -echo "Starting MasterServer" -./MasterServer -tail -f /dev/null diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 00000000..e9e7c5fb --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -e + +mkdir -p /app/configs/ +cp -n /app/default-configs/* /app/configs/ +mkdir -p /app/vanity/ +cp -n /app/default-vanity/* /app/vanity/ +cd /app/ && ./MasterServer diff --git a/resources/authconfig.ini b/resources/authconfig.ini index 62a5c6de..7938b5cc 100644 --- a/resources/authconfig.ini +++ b/resources/authconfig.ini @@ -1,5 +1,5 @@ # Port number. The client has the authserver port hardcoded to 1001 -port=1001 +auth_server_port=1001 # 0 or 1, should ignore playkeys # If 1 everyone with an account will be able to login, regardless of if they have a key or not diff --git a/resources/chatconfig.ini b/resources/chatconfig.ini index 1bb1d1b2..402534ed 100644 --- a/resources/chatconfig.ini +++ b/resources/chatconfig.ini @@ -1,6 +1,3 @@ -# Port number -port=2005 - # If you would like to increase the maximum number of best friends a player can have on the server # Change the value below to what you would like this to be (5 is live accurate) max_number_of_best_friends=5 diff --git a/resources/masterconfig.ini b/resources/masterconfig.ini index 4864d8cb..ab04af99 100644 --- a/resources/masterconfig.ini +++ b/resources/masterconfig.ini @@ -2,7 +2,7 @@ master_ip=localhost # Port number -port=2000 +master_server_port=2000 # The port number to start world servers on. Will be incremented for each world world_port_start=3000 diff --git a/resources/sharedconfig.ini b/resources/sharedconfig.ini index 2e2b6120..e487058d 100644 --- a/resources/sharedconfig.ini +++ b/resources/sharedconfig.ini @@ -62,3 +62,7 @@ event_8= version_major=1 version_current=10 version_minor=64 + +# The port the chat server is started and listening on +# Used in chat and world servers +chat_server_port=2005 \ No newline at end of file diff --git a/resources/worldconfig.ini b/resources/worldconfig.ini index 7f296afe..c68b42d2 100644 --- a/resources/worldconfig.ini +++ b/resources/worldconfig.ini @@ -2,9 +2,6 @@ # If you fork this repository and/or make changes to the code, reflect that here to comply with AGPLv3 source=https://github.com/DarkflameUniverse/DarkflameServer -# Port to the chat server, same as in chatconfig.ini -chat_server_port=2005 - # 0 or 1, should disable chat disable_chat=0 diff --git a/thirdparty/AccountManager b/thirdparty/AccountManager deleted file mode 160000 index 19e2a4fe..00000000 --- a/thirdparty/AccountManager +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 19e2a4fe9faba8ec2e40162e0019acd711967744 From 09fb1dfff91afd708edbadc29aabfd1cfdc019f3 Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Wed, 3 Jan 2024 04:00:49 -0800 Subject: [PATCH 08/12] Update docker-compose.yml (#1383) --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 3f79784c..1d83f010 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,7 +11,7 @@ services: networks: - darkflame - darkfameserver: + darkflameserver: networks: - darkflame image: ghcr.io/darkflameuniverse/darkflameserver:latest From c7c84c21ef18a4eb223e85e3ed09d574b337d16b Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Wed, 3 Jan 2024 05:34:38 -0800 Subject: [PATCH 09/12] feat: partially functioning property behavior ui (no saving or loading yet) (#1384) * Add addstrip handling add SendBehaviorBlocksToClient serialization add id generation and auto updating add behaviorlisttoclient serialization * fix crash happened if you added state 0 and 6 and nothing in between * Section off code Use proper encapsulation to hide code away and only let specific objects do certain jobs. * Organize serialization Section off into operational chunks Write data at the level most appropriate * Remove and simplify BlockDefinitions Remove pointer usage for BlockDefinitions and move to optional. * ControlBehaviors: Add addaction handling * re-organization remove const from return value change to int from uint use generic methods to reduce code clutter * add strip ui position handling * add split strip functionality * fix issues fix an issue where if you were on an empty state, the server would allow you to remain on that state fix an issue where the ui would not open on the previously opened state fix an issue where deleting strips in order caused the wrong strips to be deleted * update how you remove behaviors from models * Add remove actions and rename * migrate actions * update action and rearrange strip * merge strips * add and move to inventory * Remove dead code * simplify code * nits and move finish MoveToInventory constify serialize further include path fixes use const, comments fix amf message Update ModelComponent.cpp replace operator subscript with at * Update ModelComponent.cpp * Update MigrateActionsMessage.h * const * Move to separate translation units * include amf3 its precompiled, but just in case --- dGame/dComponents/ModelComponent.cpp | 43 ++ dGame/dComponents/ModelComponent.h | 72 ++++ dGame/dPropertyBehaviors/CMakeLists.txt | 3 + .../ControlBehaviorMessages/Action.cpp | 33 +- .../ControlBehaviorMessages/Action.h | 14 +- .../ControlBehaviorMessages/ActionContext.h | 4 +- .../AddActionMessage.h | 8 +- .../ControlBehaviorMessages/AddMessage.h | 2 +- .../ControlBehaviorMessages/AddStripMessage.h | 6 +- .../BehaviorMessageBase.cpp | 12 +- .../BehaviorMessageBase.h | 13 +- .../ControlBehaviorMsgs.h | 23 ++ .../MergeStripsMessage.h | 12 +- .../MigrateActionsMessage.h | 16 +- .../MoveToInventoryMessage.h | 2 +- .../RearrangeStripMessage.h | 10 +- .../RemoveActionsMessage.h | 6 +- .../RemoveStripMessage.h | 2 +- .../ControlBehaviorMessages/RenameMessage.h | 2 +- .../SplitStripMessage.h | 15 +- .../StripUiPosition.cpp | 6 + .../ControlBehaviorMessages/StripUiPosition.h | 5 +- .../UpdateActionMessage.h | 8 +- .../UpdateStripUiMessage.h | 4 +- dGame/dPropertyBehaviors/ControlBehaviors.cpp | 367 +++++------------- dGame/dPropertyBehaviors/ControlBehaviors.h | 39 +- dGame/dPropertyBehaviors/PropertyBehavior.cpp | 131 +++++++ dGame/dPropertyBehaviors/PropertyBehavior.h | 49 +++ dGame/dPropertyBehaviors/State.cpp | 137 +++++++ dGame/dPropertyBehaviors/State.h | 19 + dGame/dPropertyBehaviors/Strip.cpp | 87 +++++ dGame/dPropertyBehaviors/Strip.h | 23 ++ 32 files changed, 815 insertions(+), 358 deletions(-) create mode 100644 dGame/dPropertyBehaviors/ControlBehaviorMessages/ControlBehaviorMsgs.h create mode 100644 dGame/dPropertyBehaviors/PropertyBehavior.cpp create mode 100644 dGame/dPropertyBehaviors/PropertyBehavior.h create mode 100644 dGame/dPropertyBehaviors/State.cpp create mode 100644 dGame/dPropertyBehaviors/State.h create mode 100644 dGame/dPropertyBehaviors/Strip.cpp create mode 100644 dGame/dPropertyBehaviors/Strip.h diff --git a/dGame/dComponents/ModelComponent.cpp b/dGame/dComponents/ModelComponent.cpp index ccdad281..3f8858c0 100644 --- a/dGame/dComponents/ModelComponent.cpp +++ b/dGame/dComponents/ModelComponent.cpp @@ -1,6 +1,12 @@ #include "ModelComponent.h" #include "Entity.h" +#include "Game.h" +#include "Logger.h" + +#include "BehaviorStates.h" +#include "ControlBehaviorMsgs.h" + ModelComponent::ModelComponent(Entity* parent) : Component(parent) { m_OriginalPosition = m_Parent->GetDefaultPosition(); m_OriginalRotation = m_Parent->GetDefaultRotation(); @@ -29,3 +35,40 @@ void ModelComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitialU outBitStream->Write1(); // Is this model paused if (bIsInitialUpdate) outBitStream->Write0(); // We are not writing model editing info } + +void ModelComponent::UpdatePendingBehaviorId(const int32_t newId) { + for (auto& behavior : m_Behaviors) if (behavior.GetBehaviorId() == -1) behavior.SetBehaviorId(newId); +} + +void ModelComponent::SendBehaviorListToClient(AMFArrayValue& args) const { + args.Insert("objectID", std::to_string(m_Parent->GetObjectID())); + + auto* behaviorArray = args.InsertArray("behaviors"); + for (auto& behavior : m_Behaviors) { + auto* behaviorArgs = behaviorArray->PushArray(); + behavior.SendBehaviorListToClient(*behaviorArgs); + } +} + +void ModelComponent::VerifyBehaviors() { + for (auto& behavior : m_Behaviors) behavior.VerifyLastEditedState(); +} + +void ModelComponent::SendBehaviorBlocksToClient(int32_t behaviorToSend, AMFArrayValue& args) const { + args.Insert("BehaviorID", std::to_string(behaviorToSend)); + args.Insert("objectID", std::to_string(m_Parent->GetObjectID())); + for (auto& behavior : m_Behaviors) if (behavior.GetBehaviorId() == behaviorToSend) behavior.SendBehaviorBlocksToClient(args); +} + +void ModelComponent::AddBehavior(AddMessage& msg) { + // Can only have 1 of the loot behaviors + for (auto& behavior : m_Behaviors) if (behavior.GetBehaviorId() == msg.GetBehaviorId()) return; + m_Behaviors.insert(m_Behaviors.begin() + msg.GetBehaviorIndex(), PropertyBehavior()); + m_Behaviors.at(msg.GetBehaviorIndex()).HandleMsg(msg); +} + +void ModelComponent::MoveToInventory(MoveToInventoryMessage& msg) { + if (msg.GetBehaviorIndex() >= m_Behaviors.size() || m_Behaviors.at(msg.GetBehaviorIndex()).GetBehaviorId() != msg.GetBehaviorId()) return; + m_Behaviors.erase(m_Behaviors.begin() + msg.GetBehaviorIndex()); + // TODO move to the inventory +} diff --git a/dGame/dComponents/ModelComponent.h b/dGame/dComponents/ModelComponent.h index dd9984e7..a36328be 100644 --- a/dGame/dComponents/ModelComponent.h +++ b/dGame/dComponents/ModelComponent.h @@ -1,4 +1,7 @@ #pragma once + +#include <map> + #include "dCommonVars.h" #include "RakNetTypes.h" #include "NiPoint3.h" @@ -6,7 +9,15 @@ #include "Component.h" #include "eReplicaComponentType.h" +#include "Action.h" +#include "PropertyBehavior.h" +#include "StripUiPosition.h" + +class AddMessage; +class AMFArrayValue; +class BehaviorMessageBase; class Entity; +class MoveToInventoryMessage; /** * Component that represents entities that are a model, e.g. collectible models and BBB models. @@ -43,7 +54,68 @@ public: */ void SetRotation(const NiQuaternion& rot) { m_OriginalRotation = rot; } + /** + * Main gateway for all behavior messages to be passed to their respective behaviors. + * + * @tparam Msg The message type to pass + * @param args the arguments of the message to be deserialized + */ + template<typename Msg> + void HandleControlBehaviorsMsg(AMFArrayValue* args) { + static_assert(std::is_base_of_v<BehaviorMessageBase, Msg>, "Msg must be a BehaviorMessageBase"); + Msg msg(args); + for (auto& behavior : m_Behaviors) { + if (behavior.GetBehaviorId() == msg.GetBehaviorId()) { + behavior.HandleMsg(msg); + return; + } + } + + // If we somehow added more than 5 behaviors, resize to 5. + if (m_Behaviors.size() > 5) m_Behaviors.resize(5); + + // Do not allow more than 5 to be added. The client UI will break if you do! + if (m_Behaviors.size() == 5) return; + + auto newBehavior = m_Behaviors.insert(m_Behaviors.begin(), PropertyBehavior()); + // Generally if we are inserting a new behavior, it is because the client is creating a new behavior. + // However if we are testing behaviors the behavior will not exist on the initial pass, so we set the ID here to that of the msg. + // This will either set the ID to -1 (no change in the current default) or set the ID to the ID of the behavior we are testing. + newBehavior->SetBehaviorId(msg.GetBehaviorId()); + newBehavior->HandleMsg(msg); + }; + + void AddBehavior(AddMessage& msg); + + void MoveToInventory(MoveToInventoryMessage& msg); + + // Updates the pending behavior ID to the new ID. + void UpdatePendingBehaviorId(const int32_t newId); + + // Sends the behavior list to the client. + + /** + * The behaviors AMFArray will have up to 5 elements in the dense portion. + * Each element in the dense portion will be made up of another AMFArray + * with the following information mapped in the associative portion + * "id": Behavior ID cast to an AMFString + * "isLocked": AMFTrue or AMFFalse of whether or not the behavior is locked + * "isLoot": AMFTrue or AMFFalse of whether or not the behavior is a custom behavior (true if custom) + * "name": The name of the behavior formatted as an AMFString + */ + void SendBehaviorListToClient(AMFArrayValue& args) const; + + void SendBehaviorBlocksToClient(int32_t behaviorToSend, AMFArrayValue& args) const; + + void VerifyBehaviors(); + private: + /** + * The behaviors of the model + * Note: This is a vector because the order of the behaviors matters when serializing to the client. + * Note: No two PropertyBehaviors should have the same behavior ID. + */ + std::vector<PropertyBehavior> m_Behaviors; /** * The original position of the model diff --git a/dGame/dPropertyBehaviors/CMakeLists.txt b/dGame/dPropertyBehaviors/CMakeLists.txt index 5e33a5f5..8bffa906 100644 --- a/dGame/dPropertyBehaviors/CMakeLists.txt +++ b/dGame/dPropertyBehaviors/CMakeLists.txt @@ -1,4 +1,7 @@ set(DGAME_DPROPERTYBEHAVIORS_SOURCES + "PropertyBehavior.cpp" + "State.cpp" + "Strip.cpp" "BlockDefinition.cpp" "ControlBehaviors.cpp" ) diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/Action.cpp b/dGame/dPropertyBehaviors/ControlBehaviorMessages/Action.cpp index eabe76b7..73f1391d 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/Action.cpp +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/Action.cpp @@ -1,4 +1,5 @@ #include "Action.h" +#include "Amf3.h" Action::Action() { type = ""; @@ -12,20 +13,34 @@ Action::Action(AMFArrayValue* arguments) { valueParameterName = ""; valueParameterString = ""; valueParameterDouble = 0.0; - for (auto& typeValueMap : arguments->GetAssociative()) { - if (typeValueMap.first == "Type") { - if (typeValueMap.second->GetValueType() != eAmf::String) continue; - type = static_cast<AMFStringValue*>(typeValueMap.second)->GetValue(); + for (auto& [paramName, paramValue] : arguments->GetAssociative()) { + if (paramName == "Type") { + if (paramValue->GetValueType() != eAmf::String) continue; + type = static_cast<AMFStringValue*>(paramValue)->GetValue(); } else { - valueParameterName = typeValueMap.first; + valueParameterName = paramName; // Message is the only known string parameter if (valueParameterName == "Message") { - if (typeValueMap.second->GetValueType() != eAmf::String) continue; - valueParameterString = static_cast<AMFStringValue*>(typeValueMap.second)->GetValue(); + if (paramValue->GetValueType() != eAmf::String) continue; + valueParameterString = static_cast<AMFStringValue*>(paramValue)->GetValue(); } else { - if (typeValueMap.second->GetValueType() != eAmf::Double) continue; - valueParameterDouble = static_cast<AMFDoubleValue*>(typeValueMap.second)->GetValue(); + if (paramValue->GetValueType() != eAmf::Double) continue; + valueParameterDouble = static_cast<AMFDoubleValue*>(paramValue)->GetValue(); } } } } + +void Action::SendBehaviorBlocksToClient(AMFArrayValue& args) const { + auto* actionArgs = args.PushArray(); + actionArgs->Insert("Type", type); + + auto valueParameterName = GetValueParameterName(); + if (valueParameterName.empty()) return; + + if (valueParameterName == "Message") { + actionArgs->Insert(valueParameterName, valueParameterString); + } else { + actionArgs->Insert(valueParameterName, valueParameterDouble); + } +} diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/Action.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/Action.h index c97b4050..df665889 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/Action.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/Action.h @@ -1,7 +1,9 @@ #ifndef __ACTION__H__ #define __ACTION__H__ -#include "BehaviorMessageBase.h" +#include <string> + +class AMFArrayValue; /** * @brief Sent if a ControlBehavior message has an Action associated with it @@ -11,10 +13,12 @@ class Action { public: Action(); Action(AMFArrayValue* arguments); - const std::string& GetType() { return type; }; - const std::string& GetValueParameterName() { return valueParameterName; }; - const std::string& GetValueParameterString() { return valueParameterString; }; - const double GetValueParameterDouble() { return valueParameterDouble; }; + const std::string& GetType() const { return type; }; + const std::string& GetValueParameterName() const { return valueParameterName; }; + const std::string& GetValueParameterString() const { return valueParameterString; }; + const double GetValueParameterDouble() const { return valueParameterDouble; }; + + void SendBehaviorBlocksToClient(AMFArrayValue& args) const; private: std::string type; std::string valueParameterName; diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/ActionContext.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/ActionContext.h index 5f46fd8c..91e91e72 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/ActionContext.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/ActionContext.h @@ -14,8 +14,8 @@ class ActionContext { public: ActionContext(); ActionContext(AMFArrayValue* arguments, std::string customStateKey = "stateID", std::string customStripKey = "stripID"); - const StripId GetStripId() { return stripId; }; - const BehaviorState GetStateId() { return stateId; }; + const StripId GetStripId() const { return stripId; }; + const BehaviorState GetStateId() const { return stateId; }; private: BehaviorState GetBehaviorStateFromArgument(AMFArrayValue* arguments, const std::string& key); StripId GetStripIdFromArgument(AMFArrayValue* arguments, const std::string& key); diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddActionMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddActionMessage.h index 4faf6a53..ac3a9612 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddActionMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddActionMessage.h @@ -14,11 +14,11 @@ class AMFArrayValue; class AddActionMessage : public BehaviorMessageBase { public: AddActionMessage(AMFArrayValue* arguments); - const uint32_t GetActionIndex() { return actionIndex; }; - Action GetAction() { return action; }; - ActionContext GetActionContext() { return actionContext; }; + int32_t GetActionIndex() const { return actionIndex; }; + Action GetAction() const { return action; }; + ActionContext GetActionContext() const { return actionContext; }; private: - uint32_t actionIndex; + int32_t actionIndex = -1; ActionContext actionContext; Action action; }; diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddMessage.h index a46d5f98..76627665 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddMessage.h @@ -10,7 +10,7 @@ class AddMessage : public BehaviorMessageBase { public: AddMessage(AMFArrayValue* arguments); - const uint32_t GetBehaviorIndex() { return behaviorIndex; }; + const uint32_t GetBehaviorIndex() const { return behaviorIndex; }; private: uint32_t behaviorIndex; }; diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddStripMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddStripMessage.h index db75aef7..0b9a09e3 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddStripMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/AddStripMessage.h @@ -19,9 +19,9 @@ class AMFArrayValue; class AddStripMessage : public BehaviorMessageBase { public: AddStripMessage(AMFArrayValue* arguments); - StripUiPosition GetPosition() { return position; }; - ActionContext GetActionContext() { return actionContext; }; - std::vector<Action> GetActionsToAdd() { return actionsToAdd; }; + StripUiPosition GetPosition() const { return position; }; + ActionContext GetActionContext() const { return actionContext; }; + std::vector<Action> GetActionsToAdd() const { return actionsToAdd; }; private: StripUiPosition position; ActionContext actionContext; diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/BehaviorMessageBase.cpp b/dGame/dPropertyBehaviors/ControlBehaviorMessages/BehaviorMessageBase.cpp index 3286504a..cc817cd7 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/BehaviorMessageBase.cpp +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/BehaviorMessageBase.cpp @@ -5,29 +5,27 @@ #include "dCommonVars.h" BehaviorMessageBase::BehaviorMessageBase(AMFArrayValue* arguments) { - behaviorId = 0; behaviorId = GetBehaviorIdFromArgument(arguments); } int32_t BehaviorMessageBase::GetBehaviorIdFromArgument(AMFArrayValue* arguments) { const auto* key = "BehaviorID"; auto* behaviorIDValue = arguments->Get<std::string>(key); - int32_t behaviorID = -1; if (behaviorIDValue && behaviorIDValue->GetValueType() == eAmf::String) { - behaviorID = std::stoul(behaviorIDValue->GetValue()); - } else if (arguments->Get(key)->GetValueType() != eAmf::Undefined) { + GeneralUtils::TryParse(behaviorIDValue->GetValue(), behaviorId); + } else if (arguments->Get(key) && arguments->Get(key)->GetValueType() != eAmf::Undefined) { throw std::invalid_argument("Unable to find behavior ID"); } - return behaviorID; + return behaviorId; } -uint32_t BehaviorMessageBase::GetActionIndexFromArgument(AMFArrayValue* arguments, const std::string& keyName) { +int32_t BehaviorMessageBase::GetActionIndexFromArgument(AMFArrayValue* arguments, const std::string& keyName) { auto* actionIndexAmf = arguments->Get<double>(keyName); if (!actionIndexAmf) { throw std::invalid_argument("Unable to find actionIndex"); } - return static_cast<uint32_t>(actionIndexAmf->GetValue()); + return static_cast<int32_t>(actionIndexAmf->GetValue()); } diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/BehaviorMessageBase.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/BehaviorMessageBase.h index 39246c9d..8a841d7f 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/BehaviorMessageBase.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/BehaviorMessageBase.h @@ -7,9 +7,6 @@ #include "Amf3.h" #include "dCommonVars.h" -#include "Game.h" -#include "Logger.h" - enum class BehaviorState : uint32_t; /** @@ -18,12 +15,14 @@ enum class BehaviorState : uint32_t; */ class BehaviorMessageBase { public: - const uint32_t GetBehaviorId() { return behaviorId; }; -protected: + static inline int32_t DefaultBehaviorId = -1; + const int32_t GetBehaviorId() const { return behaviorId; }; + bool IsDefaultBehaviorId() { return behaviorId == DefaultBehaviorId; }; BehaviorMessageBase(AMFArrayValue* arguments); +protected: int32_t GetBehaviorIdFromArgument(AMFArrayValue* arguments); - uint32_t GetActionIndexFromArgument(AMFArrayValue* arguments, const std::string& keyName = "actionIndex"); - int32_t behaviorId = -1; + int32_t GetActionIndexFromArgument(AMFArrayValue* arguments, const std::string& keyName = "actionIndex"); + int32_t behaviorId = DefaultBehaviorId; }; #endif //!__BEHAVIORMESSAGEBASE__H__ diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/ControlBehaviorMsgs.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/ControlBehaviorMsgs.h new file mode 100644 index 00000000..0e17060b --- /dev/null +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/ControlBehaviorMsgs.h @@ -0,0 +1,23 @@ +#ifndef __CONTROLBEHAVIORMSGS__H__ +#define __CONTROLBEHAVIORMSGS__H__ + +#include "Action.h" +#include "ActionContext.h" +#include "AddActionMessage.h" +#include "AddMessage.h" +#include "AddStripMessage.h" +#include "BehaviorMessageBase.h" +#include "ControlBehaviorMsgs.h" +#include "MergeStripsMessage.h" +#include "MigrateActionsMessage.h" +#include "MoveToInventoryMessage.h" +#include "RearrangeStripMessage.h" +#include "RemoveActionsMessage.h" +#include "RemoveStripMessage.h" +#include "RenameMessage.h" +#include "SplitStripMessage.h" +#include "StripUiPosition.h" +#include "UpdateActionMessage.h" +#include "UpdateStripUiMessage.h" + +#endif //!__CONTROLBEHAVIORMSGS__H__ diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/MergeStripsMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/MergeStripsMessage.h index 0aff7f3a..7fa4d3a8 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/MergeStripsMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/MergeStripsMessage.h @@ -1,6 +1,7 @@ #ifndef __MERGESTRIPSMESSAGE__H__ #define __MERGESTRIPSMESSAGE__H__ +#include "Action.h" #include "ActionContext.h" #include "BehaviorMessageBase.h" @@ -13,13 +14,16 @@ class AMFArrayValue; class MergeStripsMessage : public BehaviorMessageBase { public: MergeStripsMessage(AMFArrayValue* arguments); - const uint32_t GetDstActionIndex() { return dstActionIndex; }; - ActionContext GetSourceActionContext() { return sourceActionContext; }; - ActionContext GetDestinationActionContext() { return destinationActionContext; }; + int32_t GetDstActionIndex() const { return dstActionIndex; }; + ActionContext GetSourceActionContext() const { return sourceActionContext; }; + ActionContext GetDestinationActionContext() const { return destinationActionContext; }; + const std::vector<Action>& GetMigratedActions() const { return migratedActions; }; + void SetMigratedActions(std::vector<Action>::const_iterator start, std::vector<Action>::const_iterator end) { migratedActions.assign(start, end); }; private: + std::vector<Action> migratedActions; ActionContext sourceActionContext; ActionContext destinationActionContext; - uint32_t dstActionIndex; + int32_t dstActionIndex; }; #endif //!__MERGESTRIPSMESSAGE__H__ diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/MigrateActionsMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/MigrateActionsMessage.h index f60e8748..2f1ac243 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/MigrateActionsMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/MigrateActionsMessage.h @@ -1,6 +1,7 @@ #ifndef __MIGRATEACTIONSMESSAGE__H__ #define __MIGRATEACTIONSMESSAGE__H__ +#include "Action.h" #include "ActionContext.h" #include "BehaviorMessageBase.h" @@ -13,15 +14,18 @@ class AMFArrayValue; class MigrateActionsMessage : public BehaviorMessageBase { public: MigrateActionsMessage(AMFArrayValue* arguments); - const uint32_t GetSrcActionIndex() { return srcActionIndex; }; - const uint32_t GetDstActionIndex() { return dstActionIndex; }; - ActionContext GetSourceActionContext() { return sourceActionContext; }; - ActionContext GetDestinationActionContext() { return destinationActionContext; }; + int32_t GetSrcActionIndex() const { return srcActionIndex; }; + int32_t GetDstActionIndex() const { return dstActionIndex; }; + ActionContext GetSourceActionContext() const { return sourceActionContext; }; + ActionContext GetDestinationActionContext() const { return destinationActionContext; }; + const std::vector<Action>& GetMigratedActions() const { return migratedActions; }; + void SetMigratedActions(std::vector<Action>::const_iterator start, std::vector<Action>::const_iterator end) { migratedActions.assign(start, end); }; private: + std::vector<Action> migratedActions; ActionContext sourceActionContext; ActionContext destinationActionContext; - uint32_t srcActionIndex; - uint32_t dstActionIndex; + int32_t srcActionIndex; + int32_t dstActionIndex; }; #endif //!__MIGRATEACTIONSMESSAGE__H__ diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/MoveToInventoryMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/MoveToInventoryMessage.h index c48f7d17..dc105766 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/MoveToInventoryMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/MoveToInventoryMessage.h @@ -13,7 +13,7 @@ class AMFArrayValue; class MoveToInventoryMessage : public BehaviorMessageBase { public: MoveToInventoryMessage(AMFArrayValue* arguments); - const uint32_t GetBehaviorIndex() { return behaviorIndex; }; + const uint32_t GetBehaviorIndex() const { return behaviorIndex; }; private: uint32_t behaviorIndex; }; diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/RearrangeStripMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/RearrangeStripMessage.h index 46819404..db12c046 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/RearrangeStripMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/RearrangeStripMessage.h @@ -11,13 +11,13 @@ class RearrangeStripMessage : public BehaviorMessageBase { public: RearrangeStripMessage(AMFArrayValue* arguments); - const uint32_t GetSrcActionIndex() { return srcActionIndex; }; - const uint32_t GetDstActionIndex() { return dstActionIndex; }; - ActionContext GetActionContext() { return actionContext; }; + int32_t GetSrcActionIndex() const { return srcActionIndex; }; + int32_t GetDstActionIndex() const { return dstActionIndex; }; + ActionContext GetActionContext() const { return actionContext; }; private: ActionContext actionContext; - uint32_t srcActionIndex; - uint32_t dstActionIndex; + int32_t srcActionIndex; + int32_t dstActionIndex; }; #endif //!__REARRANGESTRIPMESSAGE__H__ diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/RemoveActionsMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/RemoveActionsMessage.h index 457ddba8..860df0af 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/RemoveActionsMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/RemoveActionsMessage.h @@ -13,11 +13,11 @@ class AMFArrayValue; class RemoveActionsMessage : public BehaviorMessageBase { public: RemoveActionsMessage(AMFArrayValue* arguments); - const uint32_t GetActionIndex() { return actionIndex; }; - ActionContext GetActionContext() { return actionContext; }; + int32_t GetActionIndex() const { return actionIndex; }; + ActionContext GetActionContext() const { return actionContext; }; private: ActionContext actionContext; - uint32_t actionIndex; + int32_t actionIndex; }; #endif //!__REMOVEACTIONSMESSAGE__H__ diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/RemoveStripMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/RemoveStripMessage.h index 36e2e401..6a32ab0c 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/RemoveStripMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/RemoveStripMessage.h @@ -11,7 +11,7 @@ class RemoveStripMessage : public BehaviorMessageBase { public: RemoveStripMessage(AMFArrayValue* arguments); - ActionContext GetActionContext() { return actionContext; }; + ActionContext GetActionContext() const { return actionContext; }; private: ActionContext actionContext; }; diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/RenameMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/RenameMessage.h index ba181f63..3f4119d2 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/RenameMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/RenameMessage.h @@ -12,7 +12,7 @@ class AMFArrayValue; class RenameMessage : public BehaviorMessageBase { public: RenameMessage(AMFArrayValue* arguments); - const std::string& GetName() { return name; }; + const std::string& GetName() const { return name; }; private: std::string name; }; diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/SplitStripMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/SplitStripMessage.h index 9210efb0..e41d50eb 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/SplitStripMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/SplitStripMessage.h @@ -1,6 +1,7 @@ #ifndef __SPLITSTRIPMESSAGE__H__ #define __SPLITSTRIPMESSAGE__H__ +#include "Action.h" #include "ActionContext.h" #include "BehaviorMessageBase.h" #include "StripUiPosition.h" @@ -14,15 +15,19 @@ class AMFArrayValue; class SplitStripMessage : public BehaviorMessageBase { public: SplitStripMessage(AMFArrayValue* arguments); - ActionContext GetSourceActionContext() { return sourceActionContext; }; - ActionContext GetDestinationActionContext() { return destinationActionContext; }; - const uint32_t GetSrcActionIndex() { return srcActionIndex; }; - StripUiPosition GetPosition() { return destinationPosition; }; + ActionContext GetSourceActionContext() const { return sourceActionContext; }; + ActionContext GetDestinationActionContext() const { return destinationActionContext; }; + int32_t GetSrcActionIndex() const { return srcActionIndex; }; + StripUiPosition GetPosition() const { return destinationPosition; }; + const std::vector<Action>& GetTransferredActions() const { return transferredActions; }; + void SetTransferredActions(std::vector<Action>::const_iterator begin, std::vector<Action>::const_iterator end) { transferredActions.assign(begin, end); }; private: ActionContext sourceActionContext; ActionContext destinationActionContext; - uint32_t srcActionIndex; + int32_t srcActionIndex; StripUiPosition destinationPosition; + + std::vector<Action> transferredActions; }; #endif //!__SPLITSTRIPMESSAGE__H__ diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/StripUiPosition.cpp b/dGame/dPropertyBehaviors/ControlBehaviorMessages/StripUiPosition.cpp index de612b45..8b2d1d36 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/StripUiPosition.cpp +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/StripUiPosition.cpp @@ -20,3 +20,9 @@ StripUiPosition::StripUiPosition(AMFArrayValue* arguments, std::string uiKeyName yPosition = yPositionValue->GetValue(); xPosition = xPositionValue->GetValue(); } + +void StripUiPosition::SendBehaviorBlocksToClient(AMFArrayValue& args) const { + auto* uiArgs = args.InsertArray("ui"); + uiArgs->Insert("x", xPosition); + uiArgs->Insert("y", yPosition); +} diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/StripUiPosition.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/StripUiPosition.h index 809f8890..92578cdc 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/StripUiPosition.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/StripUiPosition.h @@ -11,8 +11,9 @@ class StripUiPosition { public: StripUiPosition(); StripUiPosition(AMFArrayValue* arguments, std::string uiKeyName = "ui"); - double GetX() { return xPosition; }; - double GetY() { return yPosition; }; + void SendBehaviorBlocksToClient(AMFArrayValue& args) const; + double GetX() const { return xPosition; }; + double GetY() const { return yPosition; }; private: double xPosition; double yPosition; diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/UpdateActionMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/UpdateActionMessage.h index 0a03ce9e..aa34940b 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/UpdateActionMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/UpdateActionMessage.h @@ -14,11 +14,11 @@ class AMFArrayValue; class UpdateActionMessage : public BehaviorMessageBase { public: UpdateActionMessage(AMFArrayValue* arguments); - const uint32_t GetActionIndex() { return actionIndex; }; - ActionContext GetActionContext() { return actionContext; }; - Action GetAction() { return action; }; + int32_t GetActionIndex() const { return actionIndex; }; + ActionContext GetActionContext() const { return actionContext; }; + Action GetAction() const { return action; }; private: - uint32_t actionIndex; + int32_t actionIndex; ActionContext actionContext; Action action; }; diff --git a/dGame/dPropertyBehaviors/ControlBehaviorMessages/UpdateStripUiMessage.h b/dGame/dPropertyBehaviors/ControlBehaviorMessages/UpdateStripUiMessage.h index 6d96f90c..0e9afe81 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviorMessages/UpdateStripUiMessage.h +++ b/dGame/dPropertyBehaviors/ControlBehaviorMessages/UpdateStripUiMessage.h @@ -14,8 +14,8 @@ class AMFArrayValue; class UpdateStripUiMessage : public BehaviorMessageBase { public: UpdateStripUiMessage(AMFArrayValue* arguments); - StripUiPosition GetPosition() { return position; }; - ActionContext GetActionContext() { return actionContext; }; + StripUiPosition GetPosition() const { return position; }; + ActionContext GetActionContext() const { return actionContext; }; private: StripUiPosition position; ActionContext actionContext; diff --git a/dGame/dPropertyBehaviors/ControlBehaviors.cpp b/dGame/dPropertyBehaviors/ControlBehaviors.cpp index b143cbc8..248ce4e7 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviors.cpp +++ b/dGame/dPropertyBehaviors/ControlBehaviors.cpp @@ -30,221 +30,49 @@ #include "UpdateActionMessage.h" #include "UpdateStripUiMessage.h" -void ControlBehaviors::RequestUpdatedID(int32_t behaviorID, ModelComponent* modelComponent, Entity* modelOwner, const SystemAddress& sysAddr) { - // auto behavior = modelComponent->FindBehavior(behaviorID); - // if (behavior->GetBehaviorID() == -1 || behavior->GetShouldSetNewID()) { - // ObjectIDManager::Instance()->RequestPersistentID( - // [behaviorID, behavior, modelComponent, modelOwner, sysAddr](uint32_t persistentId) { - // behavior->SetShouldGetNewID(false); - // behavior->SetIsTemplated(false); - // behavior->SetBehaviorID(persistentId); +void ControlBehaviors::RequestUpdatedID(ControlBehaviorContext& context) { + ObjectIDManager::Instance()->RequestPersistentID( + [context](uint32_t persistentId) { + if (!context) { + LOG("Model to update behavior ID for is null. Cannot update ID."); + return; + } + // This updates the behavior ID of the behavior should this be a new behavior + AMFArrayValue args; - // // This updates the behavior ID of the behavior should this be a new behavior - // AMFArrayValue args; + args.Insert("behaviorID", std::to_string(persistentId)); + args.Insert("objectID", std::to_string(context.modelComponent->GetParent()->GetObjectID())); - // AMFStringValue* behaviorIDString = new AMFStringValue(); - // behaviorIDString->SetValue(std::to_string(persistentId)); - // args.InsertValue("behaviorID", behaviorIDString); + GameMessages::SendUIMessageServerToSingleClient(context.modelOwner, context.modelOwner->GetSystemAddress(), "UpdateBehaviorID", args); + context.modelComponent->UpdatePendingBehaviorId(persistentId); - // AMFStringValue* objectIDAsString = new AMFStringValue(); - // objectIDAsString->SetValue(std::to_string(modelComponent->GetParent()->GetObjectID())); - // args.InsertValue("objectID", objectIDAsString); - - // GameMessages::SendUIMessageServerToSingleClient(modelOwner, sysAddr, "UpdateBehaviorID", &args); - // ControlBehaviors::SendBehaviorListToClient(modelComponent->GetParent(), sysAddr, modelOwner); - // }); - // } + ControlBehaviors::Instance().SendBehaviorListToClient(context); + }); } -void ControlBehaviors::SendBehaviorListToClient(Entity* modelEntity, const SystemAddress& sysAddr, Entity* modelOwner) { - auto* modelComponent = modelEntity->GetComponent<ModelComponent>(); - - if (!modelComponent) return; +void ControlBehaviors::SendBehaviorListToClient(const ControlBehaviorContext& context) { + if (!context) return; AMFArrayValue behaviorsToSerialize; + context.modelComponent->SendBehaviorListToClient(behaviorsToSerialize); - /** - * The behaviors AMFArray will have up to 5 elements in the dense portion. - * Each element in the dense portion will be made up of another AMFArray - * with the following information mapped in the associative portion - * "id": Behavior ID cast to an AMFString - * "isLocked": AMFTrue or AMFFalse of whether or not the behavior is locked - * "isLoot": AMFTrue or AMFFalse of whether or not the behavior is a custom behavior (true if custom) - * "name": The name of the behavior formatted as an AMFString - */ - - behaviorsToSerialize.Insert("behaviors"); - behaviorsToSerialize.Insert("objectID", std::to_string(modelComponent->GetParent()->GetObjectID())); - - GameMessages::SendUIMessageServerToSingleClient(modelOwner, sysAddr, "UpdateBehaviorList", behaviorsToSerialize); -} - -void ControlBehaviors::ModelTypeChanged(AMFArrayValue* arguments, ModelComponent* ModelComponent) { - auto* modelTypeAmf = arguments->Get<double>("ModelType"); - if (!modelTypeAmf) return; - - uint32_t modelType = static_cast<uint32_t>(modelTypeAmf->GetValue()); - - //TODO Update the model type here -} - -void ControlBehaviors::ToggleExecutionUpdates() { - //TODO do something with this info -} - -void ControlBehaviors::AddStrip(AMFArrayValue* arguments) { - AddStripMessage addStripMessage(arguments); -} - -void ControlBehaviors::RemoveStrip(AMFArrayValue* arguments) { - RemoveStripMessage removeStrip(arguments); -} - -void ControlBehaviors::MergeStrips(AMFArrayValue* arguments) { - MergeStripsMessage mergeStripsMessage(arguments); -} - -void ControlBehaviors::SplitStrip(AMFArrayValue* arguments) { - SplitStripMessage splitStripMessage(arguments); -} - -void ControlBehaviors::UpdateStripUI(AMFArrayValue* arguments) { - UpdateStripUiMessage updateStripUiMessage(arguments); -} - -void ControlBehaviors::AddAction(AMFArrayValue* arguments) { - AddActionMessage addActionMessage(arguments); -} - -void ControlBehaviors::MigrateActions(AMFArrayValue* arguments) { - MigrateActionsMessage migrateActionsMessage(arguments); -} - -void ControlBehaviors::RearrangeStrip(AMFArrayValue* arguments) { - RearrangeStripMessage rearrangeStripMessage(arguments); -} - -void ControlBehaviors::Add(AMFArrayValue* arguments) { - AddMessage addMessage(arguments); -} - -void ControlBehaviors::RemoveActions(AMFArrayValue* arguments) { - RemoveActionsMessage removeActionsMessage(arguments); -} - -void ControlBehaviors::Rename(Entity* modelEntity, const SystemAddress& sysAddr, Entity* modelOwner, AMFArrayValue* arguments) { - RenameMessage renameMessage(arguments); + GameMessages::SendUIMessageServerToSingleClient(context.modelOwner, context.modelOwner->GetSystemAddress(), "UpdateBehaviorList", behaviorsToSerialize); } // TODO This is also supposed to serialize the state of the behaviors in progress but those aren't implemented yet -void ControlBehaviors::SendBehaviorBlocksToClient(ModelComponent* modelComponent, const SystemAddress& sysAddr, Entity* modelOwner, AMFArrayValue* arguments) { - // uint32_t behaviorID = ControlBehaviors::GetBehaviorIDFromArgument(arguments); +void ControlBehaviors::SendBehaviorBlocksToClient(ControlBehaviorContext& context) { + if (!context) return; + BehaviorMessageBase behaviorMsg(context.arguments); - // auto modelBehavior = modelComponent->FindBehavior(behaviorID); - - // if (!modelBehavior) return; - - // modelBehavior->VerifyStates(); - - // auto states = modelBehavior->GetBehaviorStates(); - - // // Begin serialization. - - // /** - // * for each state - // * strip id - // * ui info - // * x - // * y - // * actions - // * action1 - // * action2 - // * ... - // * behaviorID of strip - // * objectID of strip - // */ - // LWOOBJID targetObjectID = LWOOBJID_EMPTY; - // behaviorID = 0; - // AMFArrayValue behaviorInfo; - - // AMFArrayValue* stateSerialize = new AMFArrayValue(); - - // for (auto it = states.begin(); it != states.end(); it++) { - // LOG("Begin serialization of state %i!\n", it->first); - // AMFArrayValue* state = new AMFArrayValue(); - - // AMFDoubleValue* stateAsDouble = new AMFDoubleValue(); - // stateAsDouble->SetValue(it->first); - // state->InsertValue("id", stateAsDouble); - - // AMFArrayValue* strips = new AMFArrayValue(); - // auto stripsInState = it->second->GetStrips(); - // for (auto strip = stripsInState.begin(); strip != stripsInState.end(); strip++) { - // LOG("Begin serialization of strip %i!\n", strip->first); - // AMFArrayValue* thisStrip = new AMFArrayValue(); - - // AMFDoubleValue* stripID = new AMFDoubleValue(); - // stripID->SetValue(strip->first); - // thisStrip->InsertValue("id", stripID); - - // AMFArrayValue* uiArray = new AMFArrayValue(); - // AMFDoubleValue* yPosition = new AMFDoubleValue(); - // yPosition->SetValue(strip->second->GetYPosition()); - // uiArray->InsertValue("y", yPosition); - - // AMFDoubleValue* xPosition = new AMFDoubleValue(); - // xPosition->SetValue(strip->second->GetXPosition()); - // uiArray->InsertValue("x", xPosition); - - // thisStrip->InsertValue("ui", uiArray); - // targetObjectID = modelComponent->GetParent()->GetObjectID(); - // behaviorID = modelBehavior->GetBehaviorID(); - - // AMFArrayValue* stripSerialize = new AMFArrayValue(); - // for (auto behaviorAction : strip->second->GetActions()) { - // LOG("Begin serialization of action %s!\n", behaviorAction->actionName.c_str()); - // AMFArrayValue* thisAction = new AMFArrayValue(); - - // AMFStringValue* actionName = new AMFStringValue(); - // actionName->SetValue(behaviorAction->actionName); - // thisAction->InsertValue("Type", actionName); - - // if (behaviorAction->parameterValueString != "") - // { - // AMFStringValue* valueAsString = new AMFStringValue(); - // valueAsString->SetValue(behaviorAction->parameterValueString); - // thisAction->InsertValue(behaviorAction->parameterName, valueAsString); - // } - // else if (behaviorAction->parameterValueDouble != 0.0) - // { - // AMFDoubleValue* valueAsDouble = new AMFDoubleValue(); - // valueAsDouble->SetValue(behaviorAction->parameterValueDouble); - // thisAction->InsertValue(behaviorAction->parameterName, valueAsDouble); - // } - // stripSerialize->PushBackValue(thisAction); - // } - // thisStrip->InsertValue("actions", stripSerialize); - // strips->PushBackValue(thisStrip); - // } - // state->InsertValue("strips", strips); - // stateSerialize->PushBackValue(state); - // } - // behaviorInfo.InsertValue("states", stateSerialize); - - // AMFStringValue* objectidAsString = new AMFStringValue(); - // objectidAsString->SetValue(std::to_string(targetObjectID)); - // behaviorInfo.InsertValue("objectID", objectidAsString); - - // AMFStringValue* behaviorIDAsString = new AMFStringValue(); - // behaviorIDAsString->SetValue(std::to_string(behaviorID)); - // behaviorInfo.InsertValue("BehaviorID", behaviorIDAsString); - - // GameMessages::SendUIMessageServerToSingleClient(modelOwner, sysAddr, "UpdateBehaviorBlocks", &behaviorInfo); + context.modelComponent->VerifyBehaviors(); + AMFArrayValue behavior; + context.modelComponent->SendBehaviorBlocksToClient(behaviorMsg.GetBehaviorId(), behavior); + GameMessages::SendUIMessageServerToSingleClient(context.modelOwner, context.modelOwner->GetSystemAddress(), "UpdateBehaviorBlocks", behavior); } void ControlBehaviors::UpdateAction(AMFArrayValue* arguments) { UpdateActionMessage updateActionMessage(arguments); - auto* blockDefinition = GetBlockInfo(updateActionMessage.GetAction().GetType()); + auto blockDefinition = GetBlockInfo(updateActionMessage.GetAction().GetType()); if (!blockDefinition) { LOG("Received undefined block type %s. Ignoring.", updateActionMessage.GetAction().GetType().c_str()); @@ -266,75 +94,83 @@ void ControlBehaviors::UpdateAction(AMFArrayValue* arguments) { } } -void ControlBehaviors::MoveToInventory(ModelComponent* modelComponent, const SystemAddress& sysAddr, Entity* modelOwner, AMFArrayValue* arguments) { - // This closes the UI menu should it be open while the player is removing behaviors - AMFArrayValue args; - - args.Insert("visible", false); - - GameMessages::SendUIMessageServerToSingleClient(modelOwner, modelOwner->GetParentUser()->GetSystemAddress(), "ToggleBehaviorEditor", args); - - MoveToInventoryMessage moveToInventoryMessage(arguments); - - SendBehaviorListToClient(modelComponent->GetParent(), sysAddr, modelOwner); -} - void ControlBehaviors::ProcessCommand(Entity* modelEntity, const SystemAddress& sysAddr, AMFArrayValue* arguments, std::string command, Entity* modelOwner) { if (!isInitialized || !modelEntity || !modelOwner || !arguments) return; auto* modelComponent = modelEntity->GetComponent<ModelComponent>(); if (!modelComponent) return; - if (command == "sendBehaviorListToClient") - SendBehaviorListToClient(modelEntity, sysAddr, modelOwner); - else if (command == "modelTypeChanged") - ModelTypeChanged(arguments, modelComponent); - else if (command == "toggleExecutionUpdates") - ToggleExecutionUpdates(); - else if (command == "addStrip") - AddStrip(arguments); - else if (command == "removeStrip") - RemoveStrip(arguments); - else if (command == "mergeStrips") - MergeStrips(arguments); - else if (command == "splitStrip") - SplitStrip(arguments); - else if (command == "updateStripUI") - UpdateStripUI(arguments); - else if (command == "addAction") - AddAction(arguments); - else if (command == "migrateActions") - MigrateActions(arguments); - else if (command == "rearrangeStrip") - RearrangeStrip(arguments); - else if (command == "add") - Add(arguments); - else if (command == "removeActions") - RemoveActions(arguments); - else if (command == "rename") - Rename(modelEntity, sysAddr, modelOwner, arguments); - else if (command == "sendBehaviorBlocksToClient") - SendBehaviorBlocksToClient(modelComponent, sysAddr, modelOwner, arguments); - else if (command == "moveToInventory") - MoveToInventory(modelComponent, sysAddr, modelOwner, arguments); - else if (command == "updateAction") - UpdateAction(arguments); - else - LOG("Unknown behavior command (%s)\n", command.c_str()); + ControlBehaviorContext context(arguments, modelComponent, modelOwner); + + if (command == "sendBehaviorListToClient") { + SendBehaviorListToClient(context); + } else if (command == "modelTypeChanged") { + auto* modelType = arguments->Get<double>("ModelType"); + if (!modelType) return; + + modelEntity->SetVar<int>(u"modelType", modelType->GetValue()); + } else if (command == "toggleExecutionUpdates") { + // TODO + } else if (command == "addStrip") { + if (BehaviorMessageBase(context.arguments).IsDefaultBehaviorId()) RequestUpdatedID(context); + + context.modelComponent->HandleControlBehaviorsMsg<AddStripMessage>(context.arguments); + } else if (command == "removeStrip") { + context.modelComponent->HandleControlBehaviorsMsg<RemoveStripMessage>(arguments); + } else if (command == "mergeStrips") { + context.modelComponent->HandleControlBehaviorsMsg<MergeStripsMessage>(arguments); + } else if (command == "splitStrip") { + context.modelComponent->HandleControlBehaviorsMsg<SplitStripMessage>(arguments); + } else if (command == "updateStripUI") { + context.modelComponent->HandleControlBehaviorsMsg<UpdateStripUiMessage>(arguments); + } else if (command == "addAction") { + context.modelComponent->HandleControlBehaviorsMsg<AddActionMessage>(arguments); + } else if (command == "migrateActions") { + context.modelComponent->HandleControlBehaviorsMsg<MigrateActionsMessage>(arguments); + } else if (command == "rearrangeStrip") { + context.modelComponent->HandleControlBehaviorsMsg<RearrangeStripMessage>(arguments); + } else if (command == "add") { + AddMessage msg(context.arguments); + context.modelComponent->AddBehavior(msg); + SendBehaviorListToClient(context); + } else if (command == "removeActions") { + context.modelComponent->HandleControlBehaviorsMsg<RemoveActionsMessage>(arguments); + } else if (command == "rename") { + context.modelComponent->HandleControlBehaviorsMsg<RenameMessage>(arguments); + + // Send the list back to the client so the name is updated. + SendBehaviorListToClient(context); + } else if (command == "sendBehaviorBlocksToClient") { + SendBehaviorBlocksToClient(context); + } else if (command == "moveToInventory") { + MoveToInventoryMessage msg(arguments); + context.modelComponent->MoveToInventory(msg); + + AMFArrayValue args; + args.Insert("BehaviorID", std::to_string(msg.GetBehaviorId())); + GameMessages::SendUIMessageServerToSingleClient(modelOwner, modelOwner->GetParentUser()->GetSystemAddress(), "BehaviorRemoved", args); + + SendBehaviorListToClient(context); + } else if (command == "updateAction") { + context.modelComponent->HandleControlBehaviorsMsg<UpdateActionMessage>(arguments); + } else { + LOG("Unknown behavior command (%s)", command.c_str()); + } } ControlBehaviors::ControlBehaviors() { auto blocksBuffer = Game::assetManager->GetFile("ui\\ingame\\blocksdef.xml"); if (!blocksBuffer) { - LOG("Failed to open blocksdef.xml"); + LOG("Failed to open blocksdef.xml, property behaviors will be disabled for this zone! " + "(This is a necessary file for cheat detection and ensuring we do not send unexpected values to the client)"); return; } tinyxml2::XMLDocument m_Doc; - std::string read{}; + std::string read; - std::string buffer{}; + std::string buffer; bool commentBlockStart = false; while (std::getline(blocksBuffer, read)) { // tinyxml2 should handle comment blocks but the client has one that fails the processing. @@ -371,14 +207,14 @@ ControlBehaviors::ControlBehaviors() { while (block) { blockName = block->Name(); - BlockDefinition* blockDefinition = new BlockDefinition(); + auto& blockDefinition = blockTypes[blockName]; std::string name{}; std::string typeName{}; auto* argument = block->FirstChildElement("Argument"); if (argument) { auto* defaultDefinition = argument->FirstChildElement("DefaultValue"); - if (defaultDefinition) blockDefinition->SetDefaultValue(defaultDefinition->GetText()); + if (defaultDefinition) blockDefinition.SetDefaultValue(defaultDefinition->GetText()); auto* typeDefinition = argument->FirstChildElement("Type"); if (typeDefinition) typeName = typeDefinition->GetText(); @@ -388,23 +224,23 @@ ControlBehaviors::ControlBehaviors() { // Now we parse the blocksdef file for the relevant information if (typeName == "String") { - blockDefinition->SetMaximumValue(50); // The client has a hardcoded limit of 50 characters in a string field + blockDefinition.SetMaximumValue(50); // The client has a hardcoded limit of 50 characters in a string field } else if (typeName == "Float" || typeName == "Integer") { auto* maximumDefinition = argument->FirstChildElement("Maximum"); - if (maximumDefinition) blockDefinition->SetMaximumValue(std::stof(maximumDefinition->GetText())); + if (maximumDefinition) blockDefinition.SetMaximumValue(std::stof(maximumDefinition->GetText())); auto* minimumDefinition = argument->FirstChildElement("Minimum"); - if (minimumDefinition) blockDefinition->SetMinimumValue(std::stof(minimumDefinition->GetText())); + if (minimumDefinition) blockDefinition.SetMinimumValue(std::stof(minimumDefinition->GetText())); } else if (typeName == "Enumeration") { auto* values = argument->FirstChildElement("Values"); if (values) { auto* value = values->FirstChildElement("Value"); while (value) { - if (value->GetText() == blockDefinition->GetDefaultValue()) blockDefinition->GetDefaultValue() = std::to_string(blockDefinition->GetMaximumValue()); - blockDefinition->SetMaximumValue(blockDefinition->GetMaximumValue() + 1); + if (value->GetText() == blockDefinition.GetDefaultValue()) blockDefinition.GetDefaultValue() = std::to_string(blockDefinition.GetMaximumValue()); + blockDefinition.SetMaximumValue(blockDefinition.GetMaximumValue() + 1); value = value->NextSiblingElement("Value"); } - blockDefinition->SetMaximumValue(blockDefinition->GetMaximumValue() - 1); // Maximum value is 0 indexed + blockDefinition.SetMaximumValue(blockDefinition.GetMaximumValue() - 1); // Maximum value is 0 indexed } else { values = argument->FirstChildElement("EnumerationSource"); if (!values) { @@ -421,8 +257,8 @@ ControlBehaviors::ControlBehaviors() { std::string serviceName = serviceNameNode->GetText(); if (serviceName == "GetBehaviorSoundList") { auto res = CDClientDatabase::ExecuteQuery("SELECT MAX(id) as countSounds FROM UGBehaviorSounds;"); - blockDefinition->SetMaximumValue(res.getIntField("countSounds")); - blockDefinition->SetDefaultValue("0"); + blockDefinition.SetMaximumValue(res.getIntField("countSounds")); + blockDefinition.SetDefaultValue("0"); } else { LOG("Unsupported Enumeration ServiceType (%s)", serviceName.c_str()); continue; @@ -433,19 +269,18 @@ ControlBehaviors::ControlBehaviors() { continue; } } - blockTypes.insert(std::make_pair(blockName, blockDefinition)); block = block->NextSiblingElement(); } blockSections = blockSections->NextSiblingElement(); } isInitialized = true; LOG_DEBUG("Created all base block classes"); - for (auto b : blockTypes) { - LOG_DEBUG("block name is %s default %s min %f max %f", b.first.c_str(), b.second->GetDefaultValue().c_str(), b.second->GetMinimumValue(), b.second->GetMaximumValue()); + for (auto& [name, block] : blockTypes) { + LOG_DEBUG("block name is %s default %s min %f max %f", name.c_str(), block.GetDefaultValue().c_str(), block.GetMinimumValue(), block.GetMaximumValue()); } } -BlockDefinition* ControlBehaviors::GetBlockInfo(const BlockName& blockName) { +std::optional<BlockDefinition> ControlBehaviors::GetBlockInfo(const BlockName& blockName) { auto blockDefinition = blockTypes.find(blockName); - return blockDefinition != blockTypes.end() ? blockDefinition->second : nullptr; + return blockDefinition != blockTypes.end() ? std::optional(blockDefinition->second) : std::nullopt; } diff --git a/dGame/dPropertyBehaviors/ControlBehaviors.h b/dGame/dPropertyBehaviors/ControlBehaviors.h index a562aafe..ab739408 100644 --- a/dGame/dPropertyBehaviors/ControlBehaviors.h +++ b/dGame/dPropertyBehaviors/ControlBehaviors.h @@ -4,12 +4,13 @@ #define __CONTROLBEHAVIORS__H__ #include <map> +#include <optional> #include <string> +#include "BlockDefinition.h" #include "Singleton.h" class AMFArrayValue; -class BlockDefinition; class Entity; class ModelComponent; class SystemAddress; @@ -17,6 +18,18 @@ class SystemAddress; // Type definition to clarify what is used where typedef std::string BlockName; //! A block name +struct ControlBehaviorContext { + ControlBehaviorContext(AMFArrayValue* args, ModelComponent* modelComponent, Entity* modelOwner) : arguments(args), modelComponent(modelComponent), modelOwner(modelOwner) {}; + + operator bool() const { + return arguments != nullptr && modelComponent != nullptr && modelOwner != nullptr; + } + + AMFArrayValue* arguments; + Entity* modelOwner; + ModelComponent* modelComponent; +}; + class ControlBehaviors: public Singleton<ControlBehaviors> { public: ControlBehaviors(); @@ -39,27 +52,13 @@ public: * * @return A pair of the block parameter name to its typing */ - BlockDefinition* GetBlockInfo(const BlockName& blockName); + std::optional<BlockDefinition> GetBlockInfo(const BlockName& blockName); private: - void RequestUpdatedID(int32_t behaviorID, ModelComponent* modelComponent, Entity* modelOwner, const SystemAddress& sysAddr); - void SendBehaviorListToClient(Entity* modelEntity, const SystemAddress& sysAddr, Entity* modelOwner); - void ModelTypeChanged(AMFArrayValue* arguments, ModelComponent* ModelComponent); - void ToggleExecutionUpdates(); - void AddStrip(AMFArrayValue* arguments); - void RemoveStrip(AMFArrayValue* arguments); - void MergeStrips(AMFArrayValue* arguments); - void SplitStrip(AMFArrayValue* arguments); - void UpdateStripUI(AMFArrayValue* arguments); - void AddAction(AMFArrayValue* arguments); - void MigrateActions(AMFArrayValue* arguments); - void RearrangeStrip(AMFArrayValue* arguments); - void Add(AMFArrayValue* arguments); - void RemoveActions(AMFArrayValue* arguments); - void Rename(Entity* modelEntity, const SystemAddress& sysAddr, Entity* modelOwner, AMFArrayValue* arguments); - void SendBehaviorBlocksToClient(ModelComponent* modelComponent, const SystemAddress& sysAddr, Entity* modelOwner, AMFArrayValue* arguments); + void RequestUpdatedID(ControlBehaviorContext& context); + void SendBehaviorListToClient(const ControlBehaviorContext& context); + void SendBehaviorBlocksToClient(ControlBehaviorContext& context); void UpdateAction(AMFArrayValue* arguments); - void MoveToInventory(ModelComponent* modelComponent, const SystemAddress& sysAddr, Entity* modelOwner, AMFArrayValue* arguments); - std::map<BlockName, BlockDefinition*> blockTypes{}; + std::map<BlockName, BlockDefinition> blockTypes{}; // If false, property behaviors will not be able to be edited. bool isInitialized = false; diff --git a/dGame/dPropertyBehaviors/PropertyBehavior.cpp b/dGame/dPropertyBehaviors/PropertyBehavior.cpp new file mode 100644 index 00000000..f6f6e4f1 --- /dev/null +++ b/dGame/dPropertyBehaviors/PropertyBehavior.cpp @@ -0,0 +1,131 @@ +#include "PropertyBehavior.h" + +#include "Amf3.h" +#include "BehaviorStates.h" +#include "ControlBehaviorMsgs.h" + +PropertyBehavior::PropertyBehavior() { + m_LastEditedState = BehaviorState::HOME_STATE; +} + +template<> +void PropertyBehavior::HandleMsg(AddStripMessage& msg) { + m_States[msg.GetActionContext().GetStateId()].HandleMsg(msg); + m_LastEditedState = msg.GetActionContext().GetStateId(); +}; + +template<> +void PropertyBehavior::HandleMsg(AddActionMessage& msg) { + m_States[msg.GetActionContext().GetStateId()].HandleMsg(msg); + m_LastEditedState = msg.GetActionContext().GetStateId(); +}; + +template<> +void PropertyBehavior::HandleMsg(RearrangeStripMessage& msg) { + m_States[msg.GetActionContext().GetStateId()].HandleMsg(msg); + m_LastEditedState = msg.GetActionContext().GetStateId(); +}; + +template<> +void PropertyBehavior::HandleMsg(UpdateActionMessage& msg) { + m_States[msg.GetActionContext().GetStateId()].HandleMsg(msg); + m_LastEditedState = msg.GetActionContext().GetStateId(); +}; + +template<> +void PropertyBehavior::HandleMsg(UpdateStripUiMessage& msg) { + m_States[msg.GetActionContext().GetStateId()].HandleMsg(msg); + m_LastEditedState = msg.GetActionContext().GetStateId(); +}; + +template<> +void PropertyBehavior::HandleMsg(RemoveStripMessage& msg) { + m_States[msg.GetActionContext().GetStateId()].HandleMsg(msg); + m_LastEditedState = msg.GetActionContext().GetStateId(); +}; + +template<> +void PropertyBehavior::HandleMsg(RemoveActionsMessage& msg) { + m_States[msg.GetActionContext().GetStateId()].HandleMsg(msg); + m_LastEditedState = msg.GetActionContext().GetStateId(); +}; + +template<> +void PropertyBehavior::HandleMsg(SplitStripMessage& msg) { + m_States[msg.GetSourceActionContext().GetStateId()].HandleMsg(msg); + m_States[msg.GetDestinationActionContext().GetStateId()].HandleMsg(msg); + m_LastEditedState = msg.GetDestinationActionContext().GetStateId(); +}; + +template<> +void PropertyBehavior::HandleMsg(MigrateActionsMessage& msg) { + m_States[msg.GetSourceActionContext().GetStateId()].HandleMsg(msg); + m_States[msg.GetDestinationActionContext().GetStateId()].HandleMsg(msg); + m_LastEditedState = msg.GetDestinationActionContext().GetStateId(); +}; + +template<> +void PropertyBehavior::HandleMsg(MergeStripsMessage& msg) { + m_States[msg.GetSourceActionContext().GetStateId()].HandleMsg(msg); + m_States[msg.GetDestinationActionContext().GetStateId()].HandleMsg(msg); + m_LastEditedState = msg.GetDestinationActionContext().GetStateId(); +}; + +template<> +void PropertyBehavior::HandleMsg(RenameMessage& msg) { + m_Name = msg.GetName(); +}; + +template<> +void PropertyBehavior::HandleMsg(AddMessage& msg) { + // TODO Parse the corresponding behavior xml file. + m_BehaviorId = msg.GetBehaviorId(); + isLoot = m_BehaviorId != 7965; +}; + +void PropertyBehavior::SetBehaviorId(int32_t behaviorId) { + m_BehaviorId = behaviorId; +} + +void PropertyBehavior::SendBehaviorListToClient(AMFArrayValue& args) const { + args.Insert("id", std::to_string(m_BehaviorId)); + args.Insert("name", m_Name); + args.Insert("isLocked", isLocked); + args.Insert("isLoot", isLoot); +} + +void PropertyBehavior::VerifyLastEditedState() { + if (!m_States[m_LastEditedState].IsEmpty()) return; + + for (const auto& [stateId, state] : m_States) { + if (state.IsEmpty()) continue; + + LOG_DEBUG("Updating last edited state to %i because %i is empty.", stateId, m_LastEditedState); + m_LastEditedState = stateId; + return; + } + + LOG_DEBUG("No states found, sending default state"); + + m_LastEditedState = BehaviorState::HOME_STATE; +} + +void PropertyBehavior::SendBehaviorBlocksToClient(AMFArrayValue& args) const { + auto* stateArray = args.InsertArray("states"); + + auto lastState = BehaviorState::HOME_STATE; + for (auto& [stateId, state] : m_States) { + if (state.IsEmpty()) continue; + + LOG_DEBUG("Serializing state %i", stateId); + auto* stateArgs = stateArray->PushArray(); + stateArgs->Insert("id", static_cast<double>(stateId)); + state.SendBehaviorBlocksToClient(*stateArgs); + } + + auto* executionState = args.InsertArray("executionState"); + executionState->Insert("stateID", static_cast<double>(m_LastEditedState)); + executionState->InsertArray("strips"); + + // TODO Serialize the execution state of the behavior +} diff --git a/dGame/dPropertyBehaviors/PropertyBehavior.h b/dGame/dPropertyBehaviors/PropertyBehavior.h new file mode 100644 index 00000000..dc53bbed --- /dev/null +++ b/dGame/dPropertyBehaviors/PropertyBehavior.h @@ -0,0 +1,49 @@ +#ifndef __PROPERTYBEHAVIOR__H__ +#define __PROPERTYBEHAVIOR__H__ + +#include "State.h" + +enum class BehaviorState : uint32_t; + +class AMFArrayValue; + +/** + * Represents the Entity of a Property Behavior and holds data associated with the behavior + */ +class PropertyBehavior { +public: + PropertyBehavior(); + template<typename Msg> + void HandleMsg(Msg& msg); + + // If the last edited state has no strips, this method will set the last edited state to the first state that has strips. + void VerifyLastEditedState(); + void SendBehaviorListToClient(AMFArrayValue& args) const; + void SendBehaviorBlocksToClient(AMFArrayValue& args) const; + + int32_t GetBehaviorId() const { return m_BehaviorId; } + void SetBehaviorId(int32_t id); +private: + + // The states this behavior has. + std::map<BehaviorState, State> m_States; + + // The name of this behavior. + std::string m_Name = "New Behavior"; + + // Whether this behavior is locked and cannot be edited. + bool isLocked = false; + + // Whether this behavior is custom or pre-fab. + bool isLoot = false; + + // The last state that was edited. This is used so when the client re-opens the behavior editor, it will open to the last edited state. + // If the last edited state has no strips, it will open to the first state that has strips. + BehaviorState m_LastEditedState; + + // The behavior id for this behavior. This is expected to be fully unique, however an id of -1 means this behavior was just created + // and needs to be assigned an id. + int32_t m_BehaviorId = -1; +}; + +#endif //!__PROPERTYBEHAVIOR__H__ diff --git a/dGame/dPropertyBehaviors/State.cpp b/dGame/dPropertyBehaviors/State.cpp new file mode 100644 index 00000000..59a9aa8b --- /dev/null +++ b/dGame/dPropertyBehaviors/State.cpp @@ -0,0 +1,137 @@ +#include "State.h" + +#include "Amf3.h" +#include "ControlBehaviorMsgs.h" + +template<> +void State::HandleMsg(AddStripMessage& msg) { + if (m_Strips.size() <= msg.GetActionContext().GetStripId()) { + m_Strips.resize(msg.GetActionContext().GetStripId() + 1); + } + m_Strips.at(msg.GetActionContext().GetStripId()).HandleMsg(msg); +}; + +template<> +void State::HandleMsg(AddActionMessage& msg) { + if (m_Strips.size() <= msg.GetActionContext().GetStripId()) { + return; + } + + m_Strips.at(msg.GetActionContext().GetStripId()).HandleMsg(msg); +}; + +template<> +void State::HandleMsg(UpdateStripUiMessage& msg) { + if (m_Strips.size() <= msg.GetActionContext().GetStripId()) { + return; + } + + m_Strips.at(msg.GetActionContext().GetStripId()).HandleMsg(msg); +}; + +template<> +void State::HandleMsg(RemoveActionsMessage& msg) { + if (m_Strips.size() <= msg.GetActionContext().GetStripId()) { + return; + } + + m_Strips.at(msg.GetActionContext().GetStripId()).HandleMsg(msg); +}; + +template<> +void State::HandleMsg(RearrangeStripMessage& msg) { + if (m_Strips.size() <= msg.GetActionContext().GetStripId()) { + return; + } + + m_Strips.at(msg.GetActionContext().GetStripId()).HandleMsg(msg); +}; + +template<> +void State::HandleMsg(UpdateActionMessage& msg) { + if (m_Strips.size() <= msg.GetActionContext().GetStripId()) { + return; + } + + m_Strips.at(msg.GetActionContext().GetStripId()).HandleMsg(msg); +}; + +template<> +void State::HandleMsg(RemoveStripMessage& msg) { + if (m_Strips.size() <= msg.GetActionContext().GetStripId()) { + return; + } + + m_Strips.at(msg.GetActionContext().GetStripId()).HandleMsg(msg); +}; + +template<> +void State::HandleMsg(SplitStripMessage& msg) { + if (msg.GetTransferredActions().empty()) { + if (m_Strips.size() <= msg.GetSourceActionContext().GetStripId()) { + return; + } + + m_Strips.at(msg.GetSourceActionContext().GetStripId()).HandleMsg(msg); + } else { + if (m_Strips.size() <= msg.GetDestinationActionContext().GetStripId()) { + m_Strips.resize(msg.GetDestinationActionContext().GetStripId() + 1); + } + + m_Strips.at(msg.GetDestinationActionContext().GetStripId()).HandleMsg(msg); + } +}; + +template<> +void State::HandleMsg(MergeStripsMessage& msg) { + if (msg.GetMigratedActions().empty()) { + if (m_Strips.size() <= msg.GetSourceActionContext().GetStripId()) { + return; + } + + m_Strips.at(msg.GetSourceActionContext().GetStripId()).HandleMsg(msg); + } else { + if (m_Strips.size() <= msg.GetDestinationActionContext().GetStripId()) { + m_Strips.resize(msg.GetDestinationActionContext().GetStripId() + 1); + } + + m_Strips.at(msg.GetDestinationActionContext().GetStripId()).HandleMsg(msg); + } +}; + +template<> +void State::HandleMsg(MigrateActionsMessage& msg) { + if (msg.GetMigratedActions().empty()) { + if (m_Strips.size() <= msg.GetSourceActionContext().GetStripId()) { + return; + } + + m_Strips.at(msg.GetSourceActionContext().GetStripId()).HandleMsg(msg); + } else { + if (m_Strips.size() <= msg.GetDestinationActionContext().GetStripId()) { + m_Strips.resize(msg.GetDestinationActionContext().GetStripId() + 1); + } + + m_Strips.at(msg.GetDestinationActionContext().GetStripId()).HandleMsg(msg); + } +}; + +bool State::IsEmpty() const { + for (auto& strip : m_Strips) { + if (!strip.IsEmpty()) return false; + } + return true; +} + +void State::SendBehaviorBlocksToClient(AMFArrayValue& args) const { + auto* strips = args.InsertArray("strips"); + for (int32_t stripId = 0; stripId < m_Strips.size(); stripId++) { + auto& strip = m_Strips.at(stripId); + if (strip.IsEmpty()) continue; + + auto* stripArgs = strips->PushArray(); + stripArgs->Insert("id", static_cast<double>(stripId)); + + strip.SendBehaviorBlocksToClient(*stripArgs); + } +}; diff --git a/dGame/dPropertyBehaviors/State.h b/dGame/dPropertyBehaviors/State.h new file mode 100644 index 00000000..a6a6d23b --- /dev/null +++ b/dGame/dPropertyBehaviors/State.h @@ -0,0 +1,19 @@ +#ifndef __STATE__H__ +#define __STATE__H__ + +#include "Strip.h" + +class AMFArrayValue; + +class State { +public: + template<typename Msg> + void HandleMsg(Msg& msg); + + void SendBehaviorBlocksToClient(AMFArrayValue& args) const; + bool IsEmpty() const; +private: + std::vector<Strip> m_Strips; +}; + +#endif //!__STATE__H__ diff --git a/dGame/dPropertyBehaviors/Strip.cpp b/dGame/dPropertyBehaviors/Strip.cpp new file mode 100644 index 00000000..7d27cacd --- /dev/null +++ b/dGame/dPropertyBehaviors/Strip.cpp @@ -0,0 +1,87 @@ +#include "Strip.h" + +#include "Amf3.h" +#include "ControlBehaviorMsgs.h" + +template<> +void Strip::HandleMsg(AddStripMessage& msg) { + m_Actions = msg.GetActionsToAdd(); + m_Position = msg.GetPosition(); +}; + +template<> +void Strip::HandleMsg(AddActionMessage& msg) { + if (msg.GetActionIndex() == -1) return; + + m_Actions.insert(m_Actions.begin() + msg.GetActionIndex(), msg.GetAction()); +}; + +template<> +void Strip::HandleMsg(UpdateStripUiMessage& msg) { + m_Position = msg.GetPosition(); +}; + +template<> +void Strip::HandleMsg(RemoveStripMessage& msg) { + m_Actions.clear(); +}; + +template<> +void Strip::HandleMsg(RemoveActionsMessage& msg) { + if (msg.GetActionIndex() >= m_Actions.size()) return; + m_Actions.erase(m_Actions.begin() + msg.GetActionIndex(), m_Actions.end()); +}; + +template<> +void Strip::HandleMsg(UpdateActionMessage& msg) { + if (msg.GetActionIndex() >= m_Actions.size()) return; + m_Actions.at(msg.GetActionIndex()) = msg.GetAction(); +}; + +template<> +void Strip::HandleMsg(RearrangeStripMessage& msg) { + if (msg.GetDstActionIndex() >= m_Actions.size() || msg.GetSrcActionIndex() >= m_Actions.size() || msg.GetSrcActionIndex() <= msg.GetDstActionIndex()) return; + std::rotate(m_Actions.begin() + msg.GetDstActionIndex(), m_Actions.begin() + msg.GetSrcActionIndex(), m_Actions.end()); +}; + +template<> +void Strip::HandleMsg(SplitStripMessage& msg) { + if (msg.GetTransferredActions().empty() && !m_Actions.empty()) { + auto startToMove = m_Actions.begin() + msg.GetSrcActionIndex(); + msg.SetTransferredActions(startToMove, m_Actions.end()); + m_Actions.erase(startToMove, m_Actions.end()); + } else { + m_Actions = msg.GetTransferredActions(); + m_Position = msg.GetPosition(); + } +}; + +template<> +void Strip::HandleMsg(MergeStripsMessage& msg) { + if (msg.GetMigratedActions().empty() && !m_Actions.empty()) { + msg.SetMigratedActions(m_Actions.begin(), m_Actions.end()); + m_Actions.erase(m_Actions.begin(), m_Actions.end()); + } else { + m_Actions.insert(m_Actions.begin() + msg.GetDstActionIndex(), msg.GetMigratedActions().begin(), msg.GetMigratedActions().end()); + } +}; + +template<> +void Strip::HandleMsg(MigrateActionsMessage& msg) { + if (msg.GetMigratedActions().empty() && !m_Actions.empty()) { + auto startToMove = m_Actions.begin() + msg.GetSrcActionIndex(); + msg.SetMigratedActions(startToMove, m_Actions.end()); + m_Actions.erase(startToMove, m_Actions.end()); + } else { + m_Actions.insert(m_Actions.begin() + msg.GetDstActionIndex(), msg.GetMigratedActions().begin(), msg.GetMigratedActions().end()); + } +}; + +void Strip::SendBehaviorBlocksToClient(AMFArrayValue& args) const { + m_Position.SendBehaviorBlocksToClient(args); + + auto* actions = args.InsertArray("actions"); + for (auto& action : m_Actions) { + action.SendBehaviorBlocksToClient(*actions); + } +}; diff --git a/dGame/dPropertyBehaviors/Strip.h b/dGame/dPropertyBehaviors/Strip.h new file mode 100644 index 00000000..f3e10964 --- /dev/null +++ b/dGame/dPropertyBehaviors/Strip.h @@ -0,0 +1,23 @@ +#ifndef __STRIP__H__ +#define __STRIP__H__ + +#include "Action.h" +#include "StripUiPosition.h" + +#include <vector> + +class AMFArrayValue; + +class Strip { +public: + template<typename Msg> + void HandleMsg(Msg& msg); + + void SendBehaviorBlocksToClient(AMFArrayValue& args) const; + bool IsEmpty() const { return m_Actions.empty(); } +private: + std::vector<Action> m_Actions; + StripUiPosition m_Position; +}; + +#endif //!__STRIP__H__ From 10baa98f00db42a7e40792faf2f9aa6859e30708 Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Wed, 3 Jan 2024 05:41:35 -0800 Subject: [PATCH 10/12] Update build-and-push-docker.yml (#1385) change name to be caps like the other --- .github/workflows/build-and-push-docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-push-docker.yml b/.github/workflows/build-and-push-docker.yml index 8f9b3720..e4bffabe 100644 --- a/.github/workflows/build-and-push-docker.yml +++ b/.github/workflows/build-and-push-docker.yml @@ -1,4 +1,4 @@ -name: ci +name: CI on: push: From d283bbd1c453956c280f18dc1b53b823c7269e5b Mon Sep 17 00:00:00 2001 From: Daniel Seiler <me@xiphoseer.de> Date: Thu, 4 Jan 2024 01:41:46 +0100 Subject: [PATCH 11/12] fix: split apart big Cmake libraries (#1381) * fix: split apart big Cmake libraries * fix: formatting * fix: newline * fix: add quotes --- CMakeLists.txt | 78 ------------------ dGame/CMakeLists.txt | 61 ++++---------- dGame/dBehaviors/CMakeLists.txt | 7 +- dGame/dComponents/CMakeLists.txt | 11 ++- dGame/dEntity/CMakeLists.txt | 9 +- dGame/dGameMessages/CMakeLists.txt | 9 +- dGame/dInventory/CMakeLists.txt | 8 +- dGame/dMission/CMakeLists.txt | 9 +- dGame/dPropertyBehaviors/CMakeLists.txt | 3 +- dGame/dUtilities/CMakeLists.txt | 8 +- dNet/CMakeLists.txt | 8 +- dPhysics/CMakeLists.txt | 4 +- dScripts/02_server/CMakeLists.txt | 25 +++--- dScripts/02_server/Enemy/CMakeLists.txt | 13 ++- dScripts/02_server/Map/AG/CMakeLists.txt | 7 +- .../Map/AG_Spider_Queen/CMakeLists.txt | 8 +- dScripts/02_server/Map/AM/CMakeLists.txt | 7 +- dScripts/02_server/Map/CMakeLists.txt | 82 ++++--------------- dScripts/02_server/Map/FV/CMakeLists.txt | 4 +- dScripts/02_server/Map/GF/CMakeLists.txt | 7 +- dScripts/02_server/Map/General/CMakeLists.txt | 5 +- dScripts/02_server/Map/NS/CMakeLists.txt | 4 +- dScripts/02_server/Map/NT/CMakeLists.txt | 7 +- dScripts/02_server/Map/PR/CMakeLists.txt | 7 +- .../02_server/Map/Property/CMakeLists.txt | 7 +- dScripts/02_server/Map/SS/CMakeLists.txt | 7 +- dScripts/02_server/Map/VE/CMakeLists.txt | 7 +- dScripts/02_server/Map/njhub/CMakeLists.txt | 9 +- dScripts/02_server/Pets/CMakeLists.txt | 8 +- dScripts/CMakeLists.txt | 58 ++++++------- dScripts/EquipmentScripts/CMakeLists.txt | 7 +- dScripts/EquipmentTriggers/CMakeLists.txt | 7 +- .../Map/General => }/InvalidScript.cpp | 0 .../Map/General => }/InvalidScript.h | 0 dScripts/ai/ACT/CMakeLists.txt | 4 +- dScripts/ai/AG/CMakeLists.txt | 7 +- dScripts/ai/CMakeLists.txt | 81 ++++-------------- dScripts/ai/FV/CMakeLists.txt | 8 +- dScripts/ai/GENERAL/CMakeLists.txt | 8 +- dScripts/ai/GF/CMakeLists.txt | 7 +- dScripts/ai/MINIGAME/CMakeLists.txt | 4 +- dScripts/ai/NP/CMakeLists.txt | 7 +- dScripts/ai/NS/CMakeLists.txt | 6 +- dScripts/ai/PETS/CMakeLists.txt | 7 +- dScripts/ai/PROPERTY/CMakeLists.txt | 4 +- dScripts/ai/RACING/CMakeLists.txt | 4 +- dScripts/ai/SPEC/CMakeLists.txt | 7 +- dScripts/ai/WILD/CMakeLists.txt | 7 +- dScripts/client/CMakeLists.txt | 4 +- dScripts/zone/CMakeLists.txt | 10 ++- dZoneManager/CMakeLists.txt | 4 +- 51 files changed, 312 insertions(+), 368 deletions(-) rename dScripts/{02_server/Map/General => }/InvalidScript.cpp (100%) rename dScripts/{02_server/Map/General => }/InvalidScript.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d30a63e..91a26dc5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -237,78 +237,6 @@ set(INCLUDED_DIRECTORIES "dNet" - "dScripts" - "dScripts/02_server" - "dScripts/ai" - "dScripts/client" - "dScripts/EquipmentScripts" - "dScripts/EquipmentTriggers" - "dScripts/zone" - "dScripts/02_server/DLU" - "dScripts/02_server/Enemy" - "dScripts/02_server/Equipment" - "dScripts/02_server/Map" - "dScripts/02_server/Minigame" - "dScripts/02_server/Objects" - "dScripts/02_server/Pets" - "dScripts/02_server/Enemy/AG" - "dScripts/02_server/Enemy/AM" - "dScripts/02_server/Enemy/FV" - "dScripts/02_server/Enemy/General" - "dScripts/02_server/Enemy/Survival" - "dScripts/02_server/Enemy/VE" - "dScripts/02_server/Enemy/Waves" - "dScripts/02_server/Map/AG" - "dScripts/02_server/Map/AG_Spider_Queen" - "dScripts/02_server/Map/AM" - "dScripts/02_server/Map/FV" - "dScripts/02_server/Map/General" - "dScripts/02_server/Map/GF" - "dScripts/02_server/Map/njhub" - "dScripts/02_server/Map/NS" - "dScripts/02_server/Map/NT" - "dScripts/02_server/Map/PR" - "dScripts/02_server/Map/Property" - "dScripts/02_server/Map/SS" - "dScripts/02_server/Map/VE" - "dScripts/02_server/Map/FV/Racing" - "dScripts/02_server/Map/General/Ninjago" - "dScripts/02_server/Map/njhub/boss_instance" - "dScripts/02_server/Map/NS/Waves" - "dScripts/02_server/Map/Property/AG_Med" - "dScripts/02_server/Map/Property/AG_Small" - "dScripts/02_server/Map/Property/NS_Med" - "dScripts/02_server/Minigame/General" - "dScripts/ai/ACT" - "dScripts/ai/AG" - "dScripts/ai/FV" - "dScripts/ai/GENERAL" - "dScripts/ai/GF" - "dScripts/ai/MINIGAME" - "dScripts/ai/MINIGAME/Objects" - "dScripts/ai/NP" - "dScripts/ai/NS" - "dScripts/ai/PETS" - "dScripts/ai/PROPERTY" - "dScripts/ai/RACING" - "dScripts/ai/SPEC" - "dScripts/ai/WILD" - "dScripts/ai/ACT/FootRace" - "dScripts/ai/MINIGAME/SG_GF" - "dScripts/ai/MINIGAME/SG_GF/SERVER" - "dScripts/ai/NS/NS_PP_01" - "dScripts/ai/NS/WH" - "dScripts/ai/PROPERTY/AG" - "dScripts/ai/RACING/OBJECTS" - "dScripts/client/ai" - "dScripts/client/ai/PR" - "dScripts/zone/AG" - "dScripts/zone/LUPs" - "dScripts/zone/PROPERTY" - "dScripts/zone/PROPERTY/FV" - "dScripts/zone/PROPERTY/GF" - "dScripts/zone/PROPERTY/NS" - "thirdparty/magic_enum/include/magic_enum" "thirdparty/raknet/Source" "thirdparty/tinyxml2" @@ -404,12 +332,6 @@ add_subdirectory(dAuthServer) add_subdirectory(dChatServer) add_subdirectory(dMasterServer) # Add MasterServer last so it can rely on the other binaries -# Add our precompiled headers -target_precompile_headers( - dGame PRIVATE - ${HEADERS_DGAME} -) - target_precompile_headers( dZoneManager PRIVATE ${HEADERS_DZONEMANAGER} diff --git a/dGame/CMakeLists.txt b/dGame/CMakeLists.txt index 80f16042..ac7f38cc 100644 --- a/dGame/CMakeLists.txt +++ b/dGame/CMakeLists.txt @@ -8,58 +8,27 @@ set(DGAME_SOURCES "Character.cpp" "User.cpp" "UserManager.cpp") +include_directories( + ${PROJECT_SOURCE_DIR}/dScripts + ${PROJECT_SOURCE_DIR}/dGame +) + +add_library(dGameBase ${DGAME_SOURCES}) +target_precompile_headers(dGameBase PRIVATE ${HEADERS_DGAME}) +target_link_libraries(dGameBase + PUBLIC dDatabase dPhysics + INTERFACE dComponents dEntity) + add_subdirectory(dBehaviors) - -foreach(file ${DGAME_DBEHAVIORS_SOURCES}) - set(DGAME_SOURCES ${DGAME_SOURCES} "dBehaviors/${file}") -endforeach() - add_subdirectory(dComponents) - -foreach(file ${DGAME_DCOMPONENTS_SOURCES}) - set(DGAME_SOURCES ${DGAME_SOURCES} "dComponents/${file}") -endforeach() - add_subdirectory(dEntity) - -foreach(file ${DGAME_DENTITY_SOURCES}) - set(DGAME_SOURCES ${DGAME_SOURCES} "dEntity/${file}") -endforeach() - add_subdirectory(dGameMessages) - -foreach(file ${DGAME_DGAMEMESSAGES_SOURCES}) - set(DGAME_SOURCES ${DGAME_SOURCES} "dGameMessages/${file}") -endforeach() - add_subdirectory(dInventory) - -foreach(file ${DGAME_DINVENTORY_SOURCES}) - set(DGAME_SOURCES ${DGAME_SOURCES} "dInventory/${file}") -endforeach() - add_subdirectory(dMission) - -foreach(file ${DGAME_DMISSION_SOURCES}) - set(DGAME_SOURCES ${DGAME_SOURCES} "dMission/${file}") -endforeach() - add_subdirectory(dPropertyBehaviors) - -foreach(file ${DGAME_DPROPERTYBEHAVIORS_SOURCES}) - set(DGAME_SOURCES ${DGAME_SOURCES} "dPropertyBehaviors/${file}") -endforeach() - add_subdirectory(dUtilities) -foreach(file ${DGAME_DUTILITIES_SOURCES}) - set(DGAME_SOURCES ${DGAME_SOURCES} "dUtilities/${file}") -endforeach() - -foreach(file ${DSCRIPTS_SOURCES}) - set(DGAME_SOURCES ${DGAME_SOURCES} "${PROJECT_SOURCE_DIR}/dScripts/${file}") -endforeach() - -add_library(dGame STATIC ${DGAME_SOURCES}) - -target_link_libraries(dGame dDatabase Recast Detour) +add_library(dGame INTERFACE) +target_link_libraries(dGame INTERFACE + dGameBase dBehaviors dComponents dEntity dGameMessages dInventory dMission dPropertyBehaviors dUtilities dScripts +) diff --git a/dGame/dBehaviors/CMakeLists.txt b/dGame/dBehaviors/CMakeLists.txt index d1926525..c8cb0be0 100644 --- a/dGame/dBehaviors/CMakeLists.txt +++ b/dGame/dBehaviors/CMakeLists.txt @@ -54,4 +54,9 @@ set(DGAME_DBEHAVIORS_SOURCES "AirMovementBehavior.cpp" "TargetCasterBehavior.cpp" "TauntBehavior.cpp" "VentureVisionBehavior.cpp" - "VerifyBehavior.cpp" PARENT_SCOPE) + "VerifyBehavior.cpp") + +add_library(dBehaviors STATIC ${DGAME_DBEHAVIORS_SOURCES}) +target_link_libraries(dBehaviors PUBLIC dPhysics) +target_include_directories(dBehaviors PUBLIC ".") +target_precompile_headers(dBehaviors REUSE_FROM dGameBase) diff --git a/dGame/dComponents/CMakeLists.txt b/dGame/dComponents/CMakeLists.txt index d0bb89d3..b14d0eb8 100644 --- a/dGame/dComponents/CMakeLists.txt +++ b/dGame/dComponents/CMakeLists.txt @@ -1,4 +1,5 @@ -set(DGAME_DCOMPONENTS_SOURCES "ActivityComponent.cpp" +set(DGAME_DCOMPONENTS_SOURCES + "ActivityComponent.cpp" "BaseCombatAIComponent.cpp" "BouncerComponent.cpp" "BuffComponent.cpp" @@ -46,5 +47,11 @@ set(DGAME_DCOMPONENTS_SOURCES "ActivityComponent.cpp" "HavokVehiclePhysicsComponent.cpp" "VendorComponent.cpp" "MiniGameControlComponent.cpp" - PARENT_SCOPE ) + +add_library(dComponents STATIC ${DGAME_DCOMPONENTS_SOURCES}) +target_include_directories(dComponents PRIVATE ${PROJECT_SOURCE_DIR}/dScripts/02_server/Map/General) # PetDigServer.h +target_precompile_headers(dComponents REUSE_FROM dGameBase) +target_link_libraries(dComponents + PUBLIC dPhysics dDatabase + INTERFACE dUtilities dCommon dBehaviors dChatFilter dMission dInventory) diff --git a/dGame/dEntity/CMakeLists.txt b/dGame/dEntity/CMakeLists.txt index 4bb49799..d7d96e14 100644 --- a/dGame/dEntity/CMakeLists.txt +++ b/dGame/dEntity/CMakeLists.txt @@ -1,2 +1,7 @@ -set(DGAME_DENTITY_SOURCES "EntityCallbackTimer.cpp" - "EntityTimer.cpp" PARENT_SCOPE) +set(DGAME_DENTITY_SOURCES + "EntityCallbackTimer.cpp" + "EntityTimer.cpp") + +add_library(dEntity STATIC ${DGAME_DENTITY_SOURCES}) +target_include_directories(dEntity PUBLIC ".") +target_precompile_headers(dEntity REUSE_FROM dGameBase) diff --git a/dGame/dGameMessages/CMakeLists.txt b/dGame/dGameMessages/CMakeLists.txt index 3c3cb53f..7373633c 100644 --- a/dGame/dGameMessages/CMakeLists.txt +++ b/dGame/dGameMessages/CMakeLists.txt @@ -1,4 +1,9 @@ -set(DGAME_DGAMEMESSAGES_SOURCES "GameMessageHandler.cpp" +set(DGAME_DGAMEMESSAGES_SOURCES + "GameMessageHandler.cpp" "GameMessages.cpp" "PropertyDataMessage.cpp" - "PropertySelectQueryProperty.cpp" PARENT_SCOPE) + "PropertySelectQueryProperty.cpp") + +add_library(dGameMessages STATIC ${DGAME_DGAMEMESSAGES_SOURCES}) +target_link_libraries(dGameMessages PUBLIC dDatabase) +target_precompile_headers(dGameMessages REUSE_FROM dGameBase) diff --git a/dGame/dInventory/CMakeLists.txt b/dGame/dInventory/CMakeLists.txt index 60cfca75..a663a97d 100644 --- a/dGame/dInventory/CMakeLists.txt +++ b/dGame/dInventory/CMakeLists.txt @@ -1,5 +1,9 @@ -set(DGAME_DINVENTORY_SOURCES "EquippedItem.cpp" +set(DGAME_DINVENTORY_SOURCES + "EquippedItem.cpp" "Inventory.cpp" "Item.cpp" "ItemSet.cpp" - "ItemSetPassiveAbility.cpp" PARENT_SCOPE) + "ItemSetPassiveAbility.cpp") + +add_library(dInventory STATIC ${DGAME_DINVENTORY_SOURCES}) +target_precompile_headers(dInventory REUSE_FROM dGameBase) diff --git a/dGame/dMission/CMakeLists.txt b/dGame/dMission/CMakeLists.txt index 652c3cb2..4e4bdec2 100644 --- a/dGame/dMission/CMakeLists.txt +++ b/dGame/dMission/CMakeLists.txt @@ -1,3 +1,8 @@ -set(DGAME_DMISSION_SOURCES "Mission.cpp" +set(DGAME_DMISSION_SOURCES + "Mission.cpp" "MissionPrerequisites.cpp" - "MissionTask.cpp" PARENT_SCOPE) + "MissionTask.cpp") + +add_library(dMission STATIC ${DGAME_DMISSION_SOURCES}) +target_link_libraries(dMission PUBLIC dDatabase) +target_precompile_headers(dMission REUSE_FROM dGameBase) diff --git a/dGame/dPropertyBehaviors/CMakeLists.txt b/dGame/dPropertyBehaviors/CMakeLists.txt index 8bffa906..47c8ff23 100644 --- a/dGame/dPropertyBehaviors/CMakeLists.txt +++ b/dGame/dPropertyBehaviors/CMakeLists.txt @@ -12,4 +12,5 @@ foreach(file ${DGAME_DPROPERTYBEHAVIORS_CONTROLBEHAVIORMESSAGES}) set(DGAME_DPROPERTYBEHAVIORS_SOURCES ${DGAME_DPROPERTYBEHAVIORS_SOURCES} "ControlBehaviorMessages/${file}") endforeach() -set(DGAME_DPROPERTYBEHAVIORS_SOURCES ${DGAME_DPROPERTYBEHAVIORS_SOURCES} PARENT_SCOPE) +add_library(dPropertyBehaviors STATIC ${DGAME_DPROPERTYBEHAVIORS_SOURCES}) +target_precompile_headers(dPropertyBehaviors REUSE_FROM dGameBase) diff --git a/dGame/dUtilities/CMakeLists.txt b/dGame/dUtilities/CMakeLists.txt index 639f9cf4..b6bb6059 100644 --- a/dGame/dUtilities/CMakeLists.txt +++ b/dGame/dUtilities/CMakeLists.txt @@ -5,4 +5,10 @@ set(DGAME_DUTILITIES_SOURCES "BrickDatabase.cpp" "Mail.cpp" "Preconditions.cpp" "SlashCommandHandler.cpp" - "VanityUtilities.cpp" PARENT_SCOPE) + "VanityUtilities.cpp") + +add_library(dUtilities STATIC ${DGAME_DUTILITIES_SOURCES}) +target_precompile_headers(dUtilities REUSE_FROM dGameBase) +target_link_libraries(dUtilities + PUBLIC dDatabase dPhysics + INTERFACE dZoneManager) diff --git a/dNet/CMakeLists.txt b/dNet/CMakeLists.txt index 938c0449..b4b77c82 100644 --- a/dNet/CMakeLists.txt +++ b/dNet/CMakeLists.txt @@ -8,4 +8,10 @@ set(DNET_SOURCES "AuthPackets.cpp" "ZoneInstanceManager.cpp") add_library(dNet STATIC ${DNET_SOURCES}) -target_link_libraries(dNet dCommon dDatabase) +target_include_directories(dNet PRIVATE + ${PROJECT_SOURCE_DIR}/dGame/dComponents + ${PROJECT_SOURCE_DIR}/dScripts # transitive through components +) +target_link_libraries(dNet + PUBLIC dCommon dDatabase + INTERFACE dZoneManager) diff --git a/dPhysics/CMakeLists.txt b/dPhysics/CMakeLists.txt index 5fe6adaa..340e4c3c 100644 --- a/dPhysics/CMakeLists.txt +++ b/dPhysics/CMakeLists.txt @@ -7,4 +7,6 @@ set(DPHYSICS_SOURCES "dpCollisionChecks.cpp" "dpWorld.cpp") add_library(dPhysics STATIC ${DPHYSICS_SOURCES}) -target_link_libraries(dPhysics Recast Detour) +target_link_libraries(dPhysics + PUBLIC Recast Detour + INTERFACE dNavigation) diff --git a/dScripts/02_server/CMakeLists.txt b/dScripts/02_server/CMakeLists.txt index 1e38386f..51eb24c8 100644 --- a/dScripts/02_server/CMakeLists.txt +++ b/dScripts/02_server/CMakeLists.txt @@ -8,10 +8,6 @@ endforeach() add_subdirectory(Enemy) -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_ENEMY}) - set(DSCRIPTS_SOURCES_02_SERVER ${DSCRIPTS_SOURCES_02_SERVER} "Enemy/${file}") -endforeach() - add_subdirectory(Equipment) foreach(file ${DSCRIPTS_SOURCES_02_SERVER_EQUIPMENT}) @@ -20,10 +16,6 @@ endforeach() add_subdirectory(Map) -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP}) - set(DSCRIPTS_SOURCES_02_SERVER ${DSCRIPTS_SOURCES_02_SERVER} "Map/${file}") -endforeach() - add_subdirectory(Minigame) foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MINIGAME}) @@ -38,8 +30,15 @@ endforeach() add_subdirectory(Pets) -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_PETS}) - set(DSCRIPTS_SOURCES_02_SERVER ${DSCRIPTS_SOURCES_02_SERVER} "Pets/${file}") -endforeach() - -set(DSCRIPTS_SOURCES_02_SERVER ${DSCRIPTS_SOURCES_02_SERVER} PARENT_SCOPE) +add_library(dScriptsServer STATIC ${DSCRIPTS_SOURCES_02_SERVER}) +target_include_directories(dScriptsServer PUBLIC "." + "DLU" + "Equipment" + "Minigame" + "Minigame/General" + "Objects" + "Pets") +target_link_libraries(dScriptsServer INTERFACE + dScriptsServerEnemy + dScriptsServerMap) +target_precompile_headers(dScriptsServer REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Enemy/CMakeLists.txt b/dScripts/02_server/Enemy/CMakeLists.txt index 408ff733..62f61772 100644 --- a/dScripts/02_server/Enemy/CMakeLists.txt +++ b/dScripts/02_server/Enemy/CMakeLists.txt @@ -42,4 +42,15 @@ foreach(file ${DSCRIPTS_SOURCES_02_SERVER_ENEMY_WAVES}) set(DSCRIPTS_SOURCES_02_SERVER_ENEMY ${DSCRIPTS_SOURCES_02_SERVER_ENEMY} "Waves/${file}") endforeach() -set(DSCRIPTS_SOURCES_02_SERVER_ENEMY ${DSCRIPTS_SOURCES_02_SERVER_ENEMY} PARENT_SCOPE) +add_library(dScriptsServerEnemy STATIC ${DSCRIPTS_SOURCES_02_SERVER_ENEMY}) +target_link_libraries(dScriptsServerEnemy dScriptsBase) +target_include_directories(dScriptsServerEnemy PUBLIC "." + "AG" + "AM" + "FV" + "General" + "Survival" + "VE" + "Waves" +) +target_precompile_headers(dScriptsServerEnemy REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/AG/CMakeLists.txt b/dScripts/02_server/Map/AG/CMakeLists.txt index df26dee4..a8315398 100644 --- a/dScripts/02_server/Map/AG/CMakeLists.txt +++ b/dScripts/02_server/Map/AG/CMakeLists.txt @@ -12,5 +12,8 @@ set(DSCRIPTS_SOURCES_02_SERVER_MAP_AG "AgMonumentRaceGoal.cpp" "AgMonumentRaceCancel.cpp" "NpcCowboyServer.cpp" - "NpcPirateServer.cpp" - PARENT_SCOPE) + "NpcPirateServer.cpp") + +add_library(dScriptsServerMapAG ${DSCRIPTS_SOURCES_02_SERVER_MAP_AG}) +target_include_directories(dScriptsServerMapAG PUBLIC ".") +target_precompile_headers(dScriptsServerMapAG REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/AG_Spider_Queen/CMakeLists.txt b/dScripts/02_server/Map/AG_Spider_Queen/CMakeLists.txt index f4204c13..65019afe 100644 --- a/dScripts/02_server/Map/AG_Spider_Queen/CMakeLists.txt +++ b/dScripts/02_server/Map/AG_Spider_Queen/CMakeLists.txt @@ -1,4 +1,8 @@ set(DSCRIPTS_SOURCES_02_SERVER_MAP_AG_SPIDER_QUEEN "ZoneAgSpiderQueen.cpp" - "SpiderBossTreasureChestServer.cpp" - PARENT_SCOPE) + "SpiderBossTreasureChestServer.cpp") + +add_library(dScriptsServerMapAGSpiderQueen ${DSCRIPTS_SOURCES_02_SERVER_MAP_AG_SPIDER_QUEEN}) +target_include_directories(dScriptsServerMapAGSpiderQueen PUBLIC ".") +target_link_libraries(dScriptsServerMapAGSpiderQueen dScriptsServerMapProperty) +target_precompile_headers(dScriptsServerMapAGSpiderQueen REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/AM/CMakeLists.txt b/dScripts/02_server/Map/AM/CMakeLists.txt index d3d13b73..177b3c45 100644 --- a/dScripts/02_server/Map/AM/CMakeLists.txt +++ b/dScripts/02_server/Map/AM/CMakeLists.txt @@ -15,5 +15,8 @@ set(DSCRIPTS_SOURCES_02_SERVER_MAP_AM "AmSkullkinDrillStand.cpp" "AmSkullkinTower.cpp" "AmBlueX.cpp" - "AmTeapotServer.cpp" - PARENT_SCOPE) + "AmTeapotServer.cpp") + +add_library(dScriptsServerMapAM ${DSCRIPTS_SOURCES_02_SERVER_MAP_AM}) +target_include_directories(dScriptsServerMapAM PUBLIC ".") +target_precompile_headers(dScriptsServerMapAM REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/CMakeLists.txt b/dScripts/02_server/Map/CMakeLists.txt index feed8a97..a5fb5b03 100644 --- a/dScripts/02_server/Map/CMakeLists.txt +++ b/dScripts/02_server/Map/CMakeLists.txt @@ -1,81 +1,29 @@ -set(DSCRIPTS_SOURCES_02_SERVER_MAP) - add_subdirectory(AG) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_AG}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "AG/${file}") -endforeach() - add_subdirectory(AG_Spider_Queen) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_AG_SPIDER_QUEEN}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "AG_Spider_Queen/${file}") -endforeach() - add_subdirectory(AM) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_AM}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "AM/${file}") -endforeach() - add_subdirectory(FV) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_FV}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "FV/${file}") -endforeach() - add_subdirectory(General) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_GENERAL}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "General/${file}") -endforeach() - add_subdirectory(GF) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_GF}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "GF/${file}") -endforeach() - add_subdirectory(njhub) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_NJHUB}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "njhub/${file}") -endforeach() - add_subdirectory(NS) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_NS}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "NS/${file}") -endforeach() - add_subdirectory(NT) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_NT}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "NT/${file}") -endforeach() - add_subdirectory(PR) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_PR}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "PR/${file}") -endforeach() - add_subdirectory(Property) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_PROPERTY}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "Property/${file}") -endforeach() - add_subdirectory(SS) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_SS}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "SS/${file}") -endforeach() - add_subdirectory(VE) -foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_VE}) - set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} "VE/${file}") -endforeach() - -set(DSCRIPTS_SOURCES_02_SERVER_MAP ${DSCRIPTS_SOURCES_02_SERVER_MAP} PARENT_SCOPE) +add_library(dScriptsServerMap INTERFACE) +target_link_libraries(dScriptsServerMap INTERFACE + dScriptsServerMapAG + dScriptsServerMapAGSpiderQueen + dScriptsServerMapAM + dScriptsServerMapFV + dScriptsServerMapGeneral + dScriptsServerMapGF + dScriptsServerMapNJHub + dScriptsServerMapNS + dScriptsServerMapNT + dScriptsServerMapPR + dScriptsServerMapProperty + dScriptsServerMapSS + dScriptsServerMapVE) diff --git a/dScripts/02_server/Map/FV/CMakeLists.txt b/dScripts/02_server/Map/FV/CMakeLists.txt index 505d97c4..6f774c98 100644 --- a/dScripts/02_server/Map/FV/CMakeLists.txt +++ b/dScripts/02_server/Map/FV/CMakeLists.txt @@ -11,4 +11,6 @@ foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_FV_RACING}) set(DSCRIPTS_SOURCES_02_SERVER_MAP_FV ${DSCRIPTS_SOURCES_02_SERVER_MAP_FV} "Racing/${file}") endforeach() -set(DSCRIPTS_SOURCES_02_SERVER_MAP_FV ${DSCRIPTS_SOURCES_02_SERVER_MAP_FV} PARENT_SCOPE) +add_library(dScriptsServerMapFV ${DSCRIPTS_SOURCES_02_SERVER_MAP_FV}) +target_include_directories(dScriptsServerMapFV PUBLIC "." "Racing") +target_precompile_headers(dScriptsServerMapFV REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/GF/CMakeLists.txt b/dScripts/02_server/Map/GF/CMakeLists.txt index 90cc38a5..45ec871a 100644 --- a/dScripts/02_server/Map/GF/CMakeLists.txt +++ b/dScripts/02_server/Map/GF/CMakeLists.txt @@ -2,5 +2,8 @@ set(DSCRIPTS_SOURCES_02_SERVER_MAP_GF "GfTikiTorch.cpp" "GfCaptainsCannon.cpp" "MastTeleport.cpp" - "SpawnLionServer.cpp" - PARENT_SCOPE) + "SpawnLionServer.cpp") + +add_library(dScriptsServerMapGF ${DSCRIPTS_SOURCES_02_SERVER_MAP_GF}) +target_include_directories(dScriptsServerMapGF PUBLIC ".") +target_precompile_headers(dScriptsServerMapGF REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/General/CMakeLists.txt b/dScripts/02_server/Map/General/CMakeLists.txt index 797b53ed..4fe5aae8 100644 --- a/dScripts/02_server/Map/General/CMakeLists.txt +++ b/dScripts/02_server/Map/General/CMakeLists.txt @@ -7,7 +7,6 @@ set(DSCRIPTS_SOURCES_02_SERVER_MAP_GENERAL "ForceVolumeServer.cpp" "GrowingFlower.cpp" "ImaginationBackpackHealServer.cpp" - "InvalidScript.cpp" "MailBoxServer.cpp" "NjRailSwitch.cpp" "PetDigServer.cpp" @@ -28,4 +27,6 @@ foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_GENERAL_NINJAGO}) set(DSCRIPTS_SOURCES_02_SERVER_MAP_GENERAL ${DSCRIPTS_SOURCES_02_SERVER_MAP_GENERAL} "Ninjago/${file}") endforeach() -set(DSCRIPTS_SOURCES_02_SERVER_MAP_GENERAL ${DSCRIPTS_SOURCES_02_SERVER_MAP_GENERAL} PARENT_SCOPE) +add_library(dScriptsServerMapGeneral ${DSCRIPTS_SOURCES_02_SERVER_MAP_GENERAL}) +target_include_directories(dScriptsServerMapGeneral PUBLIC "." "Ninjago") +target_precompile_headers(dScriptsServerMapGeneral REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/NS/CMakeLists.txt b/dScripts/02_server/Map/NS/CMakeLists.txt index c815a8c5..4927f0c8 100644 --- a/dScripts/02_server/Map/NS/CMakeLists.txt +++ b/dScripts/02_server/Map/NS/CMakeLists.txt @@ -10,4 +10,6 @@ foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_NS_WAVES}) set(DSCRIPTS_SOURCES_02_SERVER_MAP_NS ${DSCRIPTS_SOURCES_02_SERVER_MAP_NS} "Waves/${file}") endforeach() -set(DSCRIPTS_SOURCES_02_SERVER_MAP_NS ${DSCRIPTS_SOURCES_02_SERVER_MAP_NS} PARENT_SCOPE) +add_library(dScriptsServerMapNS ${DSCRIPTS_SOURCES_02_SERVER_MAP_NS}) +target_include_directories(dScriptsServerMapNS PUBLIC "." "Waves") +target_precompile_headers(dScriptsServerMapNS REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/NT/CMakeLists.txt b/dScripts/02_server/Map/NT/CMakeLists.txt index 533a70c9..49c6a5ae 100644 --- a/dScripts/02_server/Map/NT/CMakeLists.txt +++ b/dScripts/02_server/Map/NT/CMakeLists.txt @@ -25,5 +25,8 @@ set(DSCRIPTS_SOURCES_02_SERVER_MAP_NT "NtVentureSpeedPadServer.cpp" "NtVentureCannonServer.cpp" "NtBcSubmitServer.cpp" - "NtNaomiBreadcrumbServer.cpp" - PARENT_SCOPE) + "NtNaomiBreadcrumbServer.cpp") + +add_library(dScriptsServerMapNT ${DSCRIPTS_SOURCES_02_SERVER_MAP_NT}) +target_include_directories(dScriptsServerMapNT PUBLIC ".") +target_precompile_headers(dScriptsServerMapNT REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/PR/CMakeLists.txt b/dScripts/02_server/Map/PR/CMakeLists.txt index 3a32e9f3..13b3fd35 100644 --- a/dScripts/02_server/Map/PR/CMakeLists.txt +++ b/dScripts/02_server/Map/PR/CMakeLists.txt @@ -1,5 +1,8 @@ set(DSCRIPTS_SOURCES_02_SERVER_MAP_PR "HydrantBroken.cpp" "PrSeagullFly.cpp" - "SpawnGryphonServer.cpp" - PARENT_SCOPE) + "SpawnGryphonServer.cpp") + +add_library(dScriptsServerMapPR ${DSCRIPTS_SOURCES_02_SERVER_MAP_PR}) +target_include_directories(dScriptsServerMapPR PUBLIC ".") +target_precompile_headers(dScriptsServerMapPR REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/Property/CMakeLists.txt b/dScripts/02_server/Map/Property/CMakeLists.txt index 74badb32..52b91d0b 100644 --- a/dScripts/02_server/Map/Property/CMakeLists.txt +++ b/dScripts/02_server/Map/Property/CMakeLists.txt @@ -19,4 +19,9 @@ foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_PROPERTY_NS_MED}) set(DSCRIPTS_SOURCES_02_SERVER_MAP_PROPERTY ${DSCRIPTS_SOURCES_02_SERVER_MAP_PROPERTY} "NS_Med/${file}") endforeach() -set(DSCRIPTS_SOURCES_02_SERVER_MAP_PROPERTY ${DSCRIPTS_SOURCES_02_SERVER_MAP_PROPERTY} PARENT_SCOPE) +add_library(dScriptsServerMapProperty ${DSCRIPTS_SOURCES_02_SERVER_MAP_PROPERTY}) +target_precompile_headers(dScriptsServerMapProperty REUSE_FROM dScriptsBase) +target_include_directories(dScriptsServerMapProperty PUBLIC "." + "AG_Med" + "AG_Small" + "NS_Med") diff --git a/dScripts/02_server/Map/SS/CMakeLists.txt b/dScripts/02_server/Map/SS/CMakeLists.txt index 49db031f..ed6a7596 100644 --- a/dScripts/02_server/Map/SS/CMakeLists.txt +++ b/dScripts/02_server/Map/SS/CMakeLists.txt @@ -1,3 +1,6 @@ set(DSCRIPTS_SOURCES_02_SERVER_MAP_SS - "SsModularBuildServer.cpp" - PARENT_SCOPE) + "SsModularBuildServer.cpp") + +add_library(dScriptsServerMapSS ${DSCRIPTS_SOURCES_02_SERVER_MAP_SS}) +target_include_directories(dScriptsServerMapSS PUBLIC ".") +target_precompile_headers(dScriptsServerMapSS REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/VE/CMakeLists.txt b/dScripts/02_server/Map/VE/CMakeLists.txt index ac3a6461..2dbcaaff 100644 --- a/dScripts/02_server/Map/VE/CMakeLists.txt +++ b/dScripts/02_server/Map/VE/CMakeLists.txt @@ -1,5 +1,8 @@ set(DSCRIPTS_SOURCES_02_SERVER_MAP_VE "VeMissionConsole.cpp" "VeEpsilonServer.cpp" - "VeBricksampleServer.cpp" - PARENT_SCOPE) + "VeBricksampleServer.cpp") + +add_library(dScriptsServerMapVE ${DSCRIPTS_SOURCES_02_SERVER_MAP_VE}) +target_include_directories(dScriptsServerMapVE PUBLIC ".") +target_precompile_headers(dScriptsServerMapVE REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/njhub/CMakeLists.txt b/dScripts/02_server/Map/njhub/CMakeLists.txt index 2527d1ad..0f287ce3 100644 --- a/dScripts/02_server/Map/njhub/CMakeLists.txt +++ b/dScripts/02_server/Map/njhub/CMakeLists.txt @@ -28,4 +28,11 @@ foreach(file ${DSCRIPTS_SOURCES_02_SERVER_MAP_NJHUB_BOSS_INSTANCE}) set(DSCRIPTS_SOURCES_02_SERVER_MAP_NJHUB ${DSCRIPTS_SOURCES_02_SERVER_MAP_NJHUB} "boss_instance/${file}") endforeach() -set(DSCRIPTS_SOURCES_02_SERVER_MAP_NJHUB ${DSCRIPTS_SOURCES_02_SERVER_MAP_NJHUB} PARENT_SCOPE) +add_library(dScriptsServerMapNJHub ${DSCRIPTS_SOURCES_02_SERVER_MAP_NJHUB}) +target_include_directories(dScriptsServerMapNJHub PUBLIC "." "boss_instance") +target_link_libraries(dScriptsServerMapNJHub + dScriptsServerPets + dScriptsServerMapAM + dScriptsServerMapGeneral +) +target_precompile_headers(dScriptsServerMapNJHub REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Pets/CMakeLists.txt b/dScripts/02_server/Pets/CMakeLists.txt index 8820a82e..79123ebe 100644 --- a/dScripts/02_server/Pets/CMakeLists.txt +++ b/dScripts/02_server/Pets/CMakeLists.txt @@ -1,5 +1,9 @@ set(DSCRIPTS_SOURCES_02_SERVER_PETS "PetFromDigServer.cpp" "PetFromObjectServer.cpp" - "DamagingPets.cpp" - PARENT_SCOPE) + "DamagingPets.cpp") + +add_library(dScriptsServerPets STATIC ${DSCRIPTS_SOURCES_02_SERVER_PETS}) +target_include_directories(dScriptsServerPets PUBLIC ".") +target_precompile_headers(dScriptsServerPets REUSE_FROM dScriptsBase) + diff --git a/dScripts/CMakeLists.txt b/dScripts/CMakeLists.txt index ac600dbc..b3fb7d44 100644 --- a/dScripts/CMakeLists.txt +++ b/dScripts/CMakeLists.txt @@ -7,48 +7,44 @@ set(DSCRIPTS_SOURCES "BaseWavesGenericEnemy.cpp" "BaseWavesServer.cpp" "ChooseYourDestinationNsToNt.cpp" - "CppScripts.cpp" "Darkitect.cpp" + "InvalidScript.cpp" "NPCAddRemoveItem.cpp" "NtFactionSpyServer.cpp" "ScriptComponent.cpp" "ScriptedPowerupSpawner.cpp" "SpawnPetBaseServer.cpp") +link_libraries(dDatabase dPhysics) + +add_library(dScriptsBase STATIC ${DSCRIPTS_SOURCES}) +target_include_directories(dScriptsBase PUBLIC .) +target_link_libraries(dScriptsBase + INTERFACE dGameBase) +target_precompile_headers(dScriptsBase PRIVATE ${HEADERS_DGAME}) + +include_directories( + ${PROJECT_SOURCE_DIR}/dScripts + ${PROJECT_SOURCE_DIR}/dGame +) +link_libraries(dScriptsBase) +# dComponents + add_subdirectory(02_server) - -foreach(file ${DSCRIPTS_SOURCES_02_SERVER}) - set(DSCRIPTS_SOURCES ${DSCRIPTS_SOURCES} "02_server/${file}") -endforeach() - add_subdirectory(ai) - -foreach(file ${DSCRIPTS_SOURCES_AI}) - set(DSCRIPTS_SOURCES ${DSCRIPTS_SOURCES} "ai/${file}") -endforeach() - add_subdirectory(client) - -foreach(file ${DSCRIPTS_SOURCES_CLIENT}) - set(DSCRIPTS_SOURCES ${DSCRIPTS_SOURCES} "client/${file}") -endforeach() - add_subdirectory(EquipmentScripts) - -foreach(file ${DSCRIPTS_SOURCES_EQUIPMENTSCRIPTS}) - set(DSCRIPTS_SOURCES ${DSCRIPTS_SOURCES} "EquipmentScripts/${file}") -endforeach() - add_subdirectory(EquipmentTriggers) - -foreach(file ${DSCRIPTS_SOURCES_EQUIPMENTTRIGGERSSCRIPTS}) - set(DSCRIPTS_SOURCES ${DSCRIPTS_SOURCES} "EquipmentTriggers/${file}") -endforeach() - add_subdirectory(zone) -foreach(file ${DSCRIPTS_SOURCES_ZONE}) - set(DSCRIPTS_SOURCES ${DSCRIPTS_SOURCES} "zone/${file}") -endforeach() - -set(DSCRIPTS_SOURCES ${DSCRIPTS_SOURCES} PARENT_SCOPE) +add_library(dScripts STATIC "CppScripts.cpp") +target_precompile_headers(dScripts REUSE_FROM dScriptsBase) +target_include_directories(dScripts PUBLIC ".") +target_link_libraries(dScripts + dScriptsBase + dScriptsServer + dScriptsAI + dScriptsClient + dScriptsEquipmentScripts + dScriptsEquipmentTriggers + dScriptsZone) diff --git a/dScripts/EquipmentScripts/CMakeLists.txt b/dScripts/EquipmentScripts/CMakeLists.txt index 696be03d..08966e08 100644 --- a/dScripts/EquipmentScripts/CMakeLists.txt +++ b/dScripts/EquipmentScripts/CMakeLists.txt @@ -6,5 +6,8 @@ set(DSCRIPTS_SOURCES_EQUIPMENTSCRIPTS "PersonalFortress.cpp" "BuccaneerValiantShip.cpp" "FireFirstSkillonStartup.cpp" - "StunImmunity.cpp" - PARENT_SCOPE) + "StunImmunity.cpp") + +add_library(dScriptsEquipmentScripts STATIC ${DSCRIPTS_SOURCES_EQUIPMENTSCRIPTS}) +target_include_directories(dScriptsEquipmentScripts PUBLIC ".") +target_precompile_headers(dScriptsEquipmentScripts REUSE_FROM dScriptsBase) diff --git a/dScripts/EquipmentTriggers/CMakeLists.txt b/dScripts/EquipmentTriggers/CMakeLists.txt index 416ef553..cb6e81a8 100644 --- a/dScripts/EquipmentTriggers/CMakeLists.txt +++ b/dScripts/EquipmentTriggers/CMakeLists.txt @@ -1,3 +1,6 @@ set(DSCRIPTS_SOURCES_EQUIPMENTTRIGGERSSCRIPTS - "CoilBackpackBase.cpp" - PARENT_SCOPE) + "CoilBackpackBase.cpp") + +add_library(dScriptsEquipmentTriggers STATIC ${DSCRIPTS_SOURCES_EQUIPMENTTRIGGERSSCRIPTS}) +target_include_directories(dScriptsEquipmentTriggers PUBLIC ".") +target_precompile_headers(dScriptsEquipmentTriggers REUSE_FROM dScriptsBase) diff --git a/dScripts/02_server/Map/General/InvalidScript.cpp b/dScripts/InvalidScript.cpp similarity index 100% rename from dScripts/02_server/Map/General/InvalidScript.cpp rename to dScripts/InvalidScript.cpp diff --git a/dScripts/02_server/Map/General/InvalidScript.h b/dScripts/InvalidScript.h similarity index 100% rename from dScripts/02_server/Map/General/InvalidScript.h rename to dScripts/InvalidScript.h diff --git a/dScripts/ai/ACT/CMakeLists.txt b/dScripts/ai/ACT/CMakeLists.txt index 79deeded..5071afa0 100644 --- a/dScripts/ai/ACT/CMakeLists.txt +++ b/dScripts/ai/ACT/CMakeLists.txt @@ -9,4 +9,6 @@ foreach(file ${DSCRIPTS_SOURCES_AI_ACT_FOOTRACE}) set(DSCRIPTS_SOURCES_AI_ACT ${DSCRIPTS_SOURCES_AI_ACT} "FootRace/${file}") endforeach() -set(DSCRIPTS_SOURCES_AI_ACT ${DSCRIPTS_SOURCES_AI_ACT} PARENT_SCOPE) +add_library(dScriptsAiAct STATIC ${DSCRIPTS_SOURCES_AI_ACT}) +target_include_directories(dScriptsAiAct PUBLIC "." "FootRace") +target_precompile_headers(dScriptsAiAct REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/AG/CMakeLists.txt b/dScripts/ai/AG/CMakeLists.txt index 092b8de7..e031e386 100644 --- a/dScripts/ai/AG/CMakeLists.txt +++ b/dScripts/ai/AG/CMakeLists.txt @@ -14,5 +14,8 @@ set(DSCRIPTS_SOURCES_AI_AG "AgDarkSpiderling.cpp" "AgPicnicBlanket.cpp" "AgStagePlatforms.cpp" - "AgQbWall.cpp" - PARENT_SCOPE) + "AgQbWall.cpp") + +add_library(dScriptsAiAG STATIC ${DSCRIPTS_SOURCES_AI_AG}) +target_include_directories(dScriptsAiAG PUBLIC ".") +target_precompile_headers(dScriptsAiAG REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/CMakeLists.txt b/dScripts/ai/CMakeLists.txt index 44944b90..7e94cd34 100644 --- a/dScripts/ai/CMakeLists.txt +++ b/dScripts/ai/CMakeLists.txt @@ -1,81 +1,32 @@ set(DSCRIPTS_SOURCES_AI) add_subdirectory(ACT) - -foreach(file ${DSCRIPTS_SOURCES_AI_ACT}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "ACT/${file}") -endforeach() - add_subdirectory(AG) - -foreach(file ${DSCRIPTS_SOURCES_AI_AG}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "AG/${file}") -endforeach() - add_subdirectory(FV) - -foreach(file ${DSCRIPTS_SOURCES_AI_FV}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "FV/${file}") -endforeach() - add_subdirectory(GENERAL) - -foreach(file ${DSCRIPTS_SOURCES_AI_GENERAL}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "GENERAL/${file}") -endforeach() - add_subdirectory(GF) - -foreach(file ${DSCRIPTS_SOURCES_AI_GF}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "GF/${file}") -endforeach() - add_subdirectory(MINIGAME) - -foreach(file ${DSCRIPTS_SOURCES_AI_MINIGAME}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "MINIGAME/${file}") -endforeach() - add_subdirectory(NP) - -foreach(file ${DSCRIPTS_SOURCES_AI_NP}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "NP/${file}") -endforeach() - add_subdirectory(NS) - -foreach(file ${DSCRIPTS_SOURCES_AI_NS}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "NS/${file}") -endforeach() - add_subdirectory(PETS) - -foreach(file ${DSCRIPTS_SOURCES_AI_PETS}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "PETS/${file}") -endforeach() - add_subdirectory(PROPERTY) - -foreach(file ${DSCRIPTS_SOURCES_AI_PROPERTY}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "PROPERTY/${file}") -endforeach() - add_subdirectory(RACING) - -foreach(file ${DSCRIPTS_SOURCES_AI_RACING}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "RACING/${file}") -endforeach() - add_subdirectory(SPEC) - -foreach(file ${DSCRIPTS_SOURCES_AI_SPEC}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "SPEC/${file}") -endforeach() - add_subdirectory(WILD) -foreach(file ${DSCRIPTS_SOURCES_AI_WILD}) - set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} "WILD/${file}") -endforeach() - -set(DSCRIPTS_SOURCES_AI ${DSCRIPTS_SOURCES_AI} PARENT_SCOPE) +add_library(dScriptsAI INTERFACE) +target_link_libraries(dScriptsAI INTERFACE + dScriptsAiAct + dScriptsAiAG + dScriptsAiFV + dScriptsAiGeneral + dScriptsAiGF + dScriptsAiMinigame + dScriptsAiNP + dScriptsAiNS + dScriptsAiPets + dScriptsAiProperty + dScriptsAiRacing + dScriptsAiSpec + dScriptsAiWild +) diff --git a/dScripts/ai/FV/CMakeLists.txt b/dScripts/ai/FV/CMakeLists.txt index 56418706..55c68a27 100644 --- a/dScripts/ai/FV/CMakeLists.txt +++ b/dScripts/ai/FV/CMakeLists.txt @@ -16,5 +16,9 @@ set(DSCRIPTS_SOURCES_AI_FV "FvPassThroughWall.cpp" "FvBounceOverWall.cpp" "FvMaelstromGeyser.cpp" - "TriggerGas.cpp" - PARENT_SCOPE) + "TriggerGas.cpp") + +add_library(dScriptsAiFV STATIC ${DSCRIPTS_SOURCES_AI_FV}) +target_include_directories(dScriptsAiFV PUBLIC ".") +target_precompile_headers(dScriptsAiFV REUSE_FROM dScriptsBase) + diff --git a/dScripts/ai/GENERAL/CMakeLists.txt b/dScripts/ai/GENERAL/CMakeLists.txt index da973658..9b7f2a2a 100644 --- a/dScripts/ai/GENERAL/CMakeLists.txt +++ b/dScripts/ai/GENERAL/CMakeLists.txt @@ -1,4 +1,8 @@ set(DSCRIPTS_SOURCES_AI_GENERAL "InstanceExitTransferPlayerToLastNonInstance.cpp" - "LegoDieRoll.cpp" - PARENT_SCOPE) + "LegoDieRoll.cpp") + +add_library(dScriptsAiGeneral STATIC ${DSCRIPTS_SOURCES_AI_GENERAL}) +target_include_directories(dScriptsAiGeneral PUBLIC ".") +target_precompile_headers(dScriptsAiGeneral REUSE_FROM dScriptsBase) + diff --git a/dScripts/ai/GF/CMakeLists.txt b/dScripts/ai/GF/CMakeLists.txt index 9937618c..7a7a1723 100644 --- a/dScripts/ai/GF/CMakeLists.txt +++ b/dScripts/ai/GF/CMakeLists.txt @@ -10,5 +10,8 @@ set(DSCRIPTS_SOURCES_AI_GF "GfArchway.cpp" "GfMaelstromGeyser.cpp" "PirateRep.cpp" - "GfParrotCrash.cpp" - PARENT_SCOPE) + "GfParrotCrash.cpp") + +add_library(dScriptsAiGF STATIC ${DSCRIPTS_SOURCES_AI_GF}) +target_include_directories(dScriptsAiGF PUBLIC ".") +target_precompile_headers(dScriptsAiGF REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/MINIGAME/CMakeLists.txt b/dScripts/ai/MINIGAME/CMakeLists.txt index f0187057..0e07d526 100644 --- a/dScripts/ai/MINIGAME/CMakeLists.txt +++ b/dScripts/ai/MINIGAME/CMakeLists.txt @@ -12,4 +12,6 @@ foreach(file ${DSCRIPTS_SOURCES_AI_MINIGAME_OBJECTS}) set(DSCRIPTS_SOURCES_AI_MINIGAME ${DSCRIPTS_SOURCES_AI_MINIGAME} "Objects/${file}") endforeach() -set(DSCRIPTS_SOURCES_AI_MINIGAME ${DSCRIPTS_SOURCES_AI_MINIGAME} PARENT_SCOPE) +add_library(dScriptsAiMinigame STATIC ${DSCRIPTS_SOURCES_AI_MINIGAME}) +target_include_directories(dScriptsAiMinigame PUBLIC "." "Objects" "SG_GF" "SG_GF/SERVER") +target_precompile_headers(dScriptsAiMinigame REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/NP/CMakeLists.txt b/dScripts/ai/NP/CMakeLists.txt index 39a7301a..9f3f6a65 100644 --- a/dScripts/ai/NP/CMakeLists.txt +++ b/dScripts/ai/NP/CMakeLists.txt @@ -1,3 +1,6 @@ set(DSCRIPTS_SOURCES_AI_NP - "NpcNpSpacemanBob.cpp" - PARENT_SCOPE) + "NpcNpSpacemanBob.cpp") + +add_library(dScriptsAiNP STATIC ${DSCRIPTS_SOURCES_AI_NP}) +target_include_directories(dScriptsAiNP PUBLIC ".") +target_precompile_headers(dScriptsAiNP REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/NS/CMakeLists.txt b/dScripts/ai/NS/CMakeLists.txt index e8ec84b1..0f0aa0c7 100644 --- a/dScripts/ai/NS/CMakeLists.txt +++ b/dScripts/ai/NS/CMakeLists.txt @@ -21,4 +21,8 @@ foreach(file ${DSCRIPTS_SOURCES_AI_NS_WH}) set(DSCRIPTS_SOURCES_AI_NS ${DSCRIPTS_SOURCES_AI_NS} "WH/${file}") endforeach() -set(DSCRIPTS_SOURCES_AI_NS ${DSCRIPTS_SOURCES_AI_NS} PARENT_SCOPE) +add_library(dScriptsAiNS STATIC ${DSCRIPTS_SOURCES_AI_NS}) +target_include_directories(dScriptsAiNS PUBLIC "." "NS_PP_01" "WH" +PRIVATE + ${PROJECT_SOURCE_DIR}/dScripts/02_server/Map/NS) # NsConcertChoiceBuildManager.h +target_precompile_headers(dScriptsAiNS REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/PETS/CMakeLists.txt b/dScripts/ai/PETS/CMakeLists.txt index 93a9012d..8bd8630c 100644 --- a/dScripts/ai/PETS/CMakeLists.txt +++ b/dScripts/ai/PETS/CMakeLists.txt @@ -1,3 +1,6 @@ set(DSCRIPTS_SOURCES_AI_PETS - "HydrantSmashable.cpp" - PARENT_SCOPE) + "HydrantSmashable.cpp") + +add_library(dScriptsAiPets STATIC ${DSCRIPTS_SOURCES_AI_PETS}) +target_include_directories(dScriptsAiPets PUBLIC "." "NS_PP_01" "WH") +target_precompile_headers(dScriptsAiPets REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/PROPERTY/CMakeLists.txt b/dScripts/ai/PROPERTY/CMakeLists.txt index 295137b4..a31b9257 100644 --- a/dScripts/ai/PROPERTY/CMakeLists.txt +++ b/dScripts/ai/PROPERTY/CMakeLists.txt @@ -8,4 +8,6 @@ foreach(file ${DSCRIPTS_SOURCES_AI_PROPERTY_AG}) set(DSCRIPTS_SOURCES_AI_PROPERTY ${DSCRIPTS_SOURCES_AI_PROPERTY} "AG/${file}") endforeach() -set(DSCRIPTS_SOURCES_AI_PROPERTY ${DSCRIPTS_SOURCES_AI_PROPERTY} PARENT_SCOPE) +add_library(dScriptsAiProperty STATIC ${DSCRIPTS_SOURCES_AI_PROPERTY}) +target_include_directories(dScriptsAiProperty PUBLIC "." "AG") +target_precompile_headers(dScriptsAiProperty REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/RACING/CMakeLists.txt b/dScripts/ai/RACING/CMakeLists.txt index 0c1918de..b7343c61 100644 --- a/dScripts/ai/RACING/CMakeLists.txt +++ b/dScripts/ai/RACING/CMakeLists.txt @@ -6,4 +6,6 @@ foreach(file ${DSCRIPTS_SOURCES_AI_RACING_OBJECTS}) set(DSCRIPTS_SOURCES_AI_RACING ${DSCRIPTS_SOURCES_AI_RACING} "OBJECTS/${file}") endforeach() -set(DSCRIPTS_SOURCES_AI_RACING ${DSCRIPTS_SOURCES_AI_RACING} PARENT_SCOPE) +add_library(dScriptsAiRacing STATIC ${DSCRIPTS_SOURCES_AI_RACING}) +target_include_directories(dScriptsAiRacing PUBLIC "." "OBJECTS") +target_precompile_headers(dScriptsAiRacing REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/SPEC/CMakeLists.txt b/dScripts/ai/SPEC/CMakeLists.txt index 42dbf8f8..c60372ac 100644 --- a/dScripts/ai/SPEC/CMakeLists.txt +++ b/dScripts/ai/SPEC/CMakeLists.txt @@ -1,5 +1,8 @@ set(DSCRIPTS_SOURCES_AI_SPEC "SpecialCoinSpawner.cpp" "SpecialPowerupSpawner.cpp" - "SpecialSpeedBuffSpawner.cpp" - PARENT_SCOPE) + "SpecialSpeedBuffSpawner.cpp") + +add_library(dScriptsAiSpec STATIC ${DSCRIPTS_SOURCES_AI_SPEC}) +target_include_directories(dScriptsAiSpec PUBLIC ".") +target_precompile_headers(dScriptsAiSpec REUSE_FROM dScriptsBase) diff --git a/dScripts/ai/WILD/CMakeLists.txt b/dScripts/ai/WILD/CMakeLists.txt index 446ce0d4..418ffb5f 100644 --- a/dScripts/ai/WILD/CMakeLists.txt +++ b/dScripts/ai/WILD/CMakeLists.txt @@ -7,5 +7,8 @@ set(DSCRIPTS_SOURCES_AI_WILD "WildNinjaBricks.cpp" "WildNinjaStudent.cpp" "WildNinjaSensei.cpp" - "WildPants.cpp" - PARENT_SCOPE) + "WildPants.cpp") + +add_library(dScriptsAiWild STATIC ${DSCRIPTS_SOURCES_AI_WILD}) +target_include_directories(dScriptsAiWild PUBLIC ".") +target_precompile_headers(dScriptsAiWild REUSE_FROM dScriptsBase) diff --git a/dScripts/client/CMakeLists.txt b/dScripts/client/CMakeLists.txt index c2777508..b3ad08fb 100644 --- a/dScripts/client/CMakeLists.txt +++ b/dScripts/client/CMakeLists.txt @@ -6,4 +6,6 @@ foreach(file ${DSCRIPTS_SOURCES_CLIENT_AI}) set(DSCRIPTS_SOURCES_CLIENT ${DSCRIPTS_SOURCES_CLIENT} "ai/${file}") endforeach() -set(DSCRIPTS_SOURCES_CLIENT ${DSCRIPTS_SOURCES_CLIENT} PARENT_SCOPE) +add_library(dScriptsClient STATIC ${DSCRIPTS_SOURCES_CLIENT}) +target_include_directories(dScriptsClient PUBLIC "." "ai" "ai/PR") +target_precompile_headers(dScriptsClient REUSE_FROM dScriptsBase) diff --git a/dScripts/zone/CMakeLists.txt b/dScripts/zone/CMakeLists.txt index 5d800031..93ea70ca 100644 --- a/dScripts/zone/CMakeLists.txt +++ b/dScripts/zone/CMakeLists.txt @@ -18,4 +18,12 @@ foreach(file ${DSCRIPTS_SOURCES_ZONE_PROPERTY}) set(DSCRIPTS_SOURCES_ZONE ${DSCRIPTS_SOURCES_ZONE} "PROPERTY/${file}") endforeach() -set(DSCRIPTS_SOURCES_ZONE ${DSCRIPTS_SOURCES_ZONE} PARENT_SCOPE) +add_library(dScriptsZone STATIC ${DSCRIPTS_SOURCES_ZONE}) +target_include_directories(dScriptsZone PUBLIC "." + "AG" + "LUPs" + "PROPERTY" + "PROPERTY/FV" + "PROPERTY/GF" + "PROPERTY/NS") +target_precompile_headers(dScriptsZone REUSE_FROM dScriptsBase) diff --git a/dZoneManager/CMakeLists.txt b/dZoneManager/CMakeLists.txt index bbb22ba7..e7382367 100644 --- a/dZoneManager/CMakeLists.txt +++ b/dZoneManager/CMakeLists.txt @@ -4,4 +4,6 @@ set(DZONEMANAGER_SOURCES "dZoneManager.cpp" "Zone.cpp") add_library(dZoneManager STATIC ${DZONEMANAGER_SOURCES}) -target_link_libraries(dZoneManager dPhysics) +target_link_libraries(dZoneManager + PUBLIC dPhysics + INTERFACE dWorldServer) From 72b69c7899db14437da25814f9efeaad0075ba91 Mon Sep 17 00:00:00 2001 From: Aaron Kimbrell <aronwk.aaron@gmail.com> Date: Wed, 3 Jan 2024 22:18:27 -0600 Subject: [PATCH 12/12] fix: dont crash if resServer doesn't exist (#1386) and try to make it as well --- dMasterServer/MasterServer.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/dMasterServer/MasterServer.cpp b/dMasterServer/MasterServer.cpp index 3b829c48..19a06706 100644 --- a/dMasterServer/MasterServer.cpp +++ b/dMasterServer/MasterServer.cpp @@ -150,31 +150,40 @@ int main(int argc, char** argv) { } MigrationRunner::RunMigrations(); - - const bool cdServerExists = std::filesystem::exists(BinaryPathFinder::GetBinaryDir() / "resServer" / "CDServer.sqlite"); + const auto resServerPath = BinaryPathFinder::GetBinaryDir() / "resServer"; + const bool cdServerExists = std::filesystem::exists(resServerPath / "CDServer.sqlite"); const bool oldCDServerExists = std::filesystem::exists(Game::assetManager->GetResPath() / "CDServer.sqlite"); const bool fdbExists = std::filesystem::exists(Game::assetManager->GetResPath() / "cdclient.fdb"); + const bool resServerPathExists = std::filesystem::is_directory(resServerPath); + + if (!resServerPathExists) { + LOG("%s does not exist, creating it.", (resServerPath).c_str()); + if(!std::filesystem::create_directories(resServerPath)){ + LOG("Failed to create %s", (resServerPath).string().c_str()); + return EXIT_FAILURE; + } + } if (!cdServerExists) { if (oldCDServerExists) { // If the file doesn't exist in the new CDServer location, copy it there. We copy because we may not have write permissions from the previous directory. LOG("CDServer.sqlite is not located at resServer, but is located at res path. Copying file..."); - std::filesystem::copy_file(Game::assetManager->GetResPath() / "CDServer.sqlite", BinaryPathFinder::GetBinaryDir() / "resServer" / "CDServer.sqlite"); + std::filesystem::copy_file(Game::assetManager->GetResPath() / "CDServer.sqlite", resServerPath / "CDServer.sqlite"); } else { LOG("%s could not be found in resServer or res. Looking for %s to convert to sqlite.", - (BinaryPathFinder::GetBinaryDir() / "resServer" / "CDServer.sqlite").c_str(), - (Game::assetManager->GetResPath() / "cdclient.fdb").c_str()); + (resServerPath / "CDServer.sqlite").string().c_str(), + (Game::assetManager->GetResPath() / "cdclient.fdb").string().c_str()); auto cdclientStream = Game::assetManager->GetFile("cdclient.fdb"); if (!cdclientStream) { - LOG("Failed to load %s", (Game::assetManager->GetResPath() / "cdclient.fdb").c_str()); + LOG("Failed to load %s", (Game::assetManager->GetResPath() / "cdclient.fdb").string().c_str()); throw std::runtime_error("Aborting initialization due to missing cdclient.fdb."); } - LOG("Found %s. Converting to SQLite", (Game::assetManager->GetResPath() / "cdclient.fdb").c_str()); + LOG("Found %s. Converting to SQLite", (Game::assetManager->GetResPath() / "cdclient.fdb").string().c_str()); Game::logger->Flush(); - if (FdbToSqlite::Convert((BinaryPathFinder::GetBinaryDir() / "resServer").string()).ConvertDatabase(cdclientStream) == false) { + if (FdbToSqlite::Convert(resServerPath.string()).ConvertDatabase(cdclientStream) == false) { LOG("Failed to convert fdb to sqlite."); return EXIT_FAILURE; }