From 2fe093255d4f9cc6f17fdb71d1c042e5c72586ee Mon Sep 17 00:00:00 2001 From: CI Date: Fri, 13 Jun 2025 18:59:07 +0200 Subject: [PATCH 01/16] feat: add data binding --- README.md | 143 ++++++--- build/build.sh | 5 +- build/premake5_code_generator.lua | 6 +- samples/db_generator.riv | Bin 0 -> 375 bytes samples/rewards.riv | Bin 0 -> 216976 bytes src/main.cpp | 412 ++++++++++++++++++++------ templates/json_template.mustache | 27 ++ templates/viewmodel_template.mustache | 63 ++++ 8 files changed, 517 insertions(+), 139 deletions(-) create mode 100644 samples/db_generator.riv create mode 100644 samples/rewards.riv create mode 100644 templates/viewmodel_template.mustache diff --git a/README.md b/README.md index ee5c18c..dcdae6f 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ Run the code generator using: ``` Example: + ```sh ./build/out/lib/release/rive_code_generator -i ./examples/rive_files/animation.riv -o ./examples/generated_code.dart -l dart ``` @@ -81,6 +82,7 @@ Sample templates are available in the [`templates`](./templates) directory. The tool uses [Mustache](https://mustache.github.io/) templating. Please refer to the [Mustache documentation](https://mustache.github.io/) for syntax details. For each Rive file `{{#riv_files}}`, the following variables are available: + - `{{riv_pascal_case}}`: The Rive file name in PascalCase - `{{riv_camel_case}}`: The Rive file name in camelCase - `{{riv_snake_case}}`: The Rive file name in snake_case @@ -88,57 +90,108 @@ For each Rive file `{{#riv_files}}`, the following variables are available: - `{{assets}}`: List of assets in the Rive file - For each asset `{{#assets}}`: - - `{{asset_name}}`: Name of the asset - - `{{asset_camel_case}}`: Name of the asset in camelCase - - `{{asset_pascal_case}}`: Name of the asset in PascalCase - - `{{asset_snake_case}}`: Name of the asset in snake_case - - `{{asset_kebab_case}}`: Name of the asset in kebab-case - - `{{asset_type}}`: Type of the asset - - `{{asset_id}}`: ID of the asset - - `{{asset_cdn_uuid}}`: CDN UUID of the asset - - `{{asset_cdn_base_url}}`: CDN base URL of the asset + + - `{{asset_name}}`: Name of the asset + - `{{asset_camel_case}}`: Name of the asset in camelCase + - `{{asset_pascal_case}}`: Name of the asset in PascalCase + - `{{asset_snake_case}}`: Name of the asset in snake_case + - `{{asset_kebab_case}}`: Name of the asset in kebab-case + - `{{asset_type}}`: Type of the asset + - `{{asset_id}}`: ID of the asset + - `{{asset_cdn_uuid}}`: CDN UUID of the asset + - `{{asset_cdn_base_url}}`: CDN base URL of the asset - For each artboard `{{#artboards}}`: - - `{{artboard_name}}`: The original artboard name - - `{{artboard_pascal_case}}`: The artboard name in PascalCase - - `{{artboard_camel_case}}`: The artboard name in camelCase - - `{{artboard_snake_case}}`: The artboard name in snake_case - - `{{artboard_kebab_case}}`: The artboard name in kebab-case - - `{{animations}}`: List of animation names for the artboard - - For each animation `{{#animations}}`: - - `{{animation_name}}`: Name of the animation - - `{{animation_camel_case}}`: Name of the animation in camelCase - - `{{animation_pascal_case}}`: Name of the animation in PascalCase - - `{{animation_snake_case}}`: Name of the animation in snake_case - - `{{animation_kebab_case}}`: Name of the animation in kebab-case - - `{{state_machines}}`: List of state machines for the artboard - - For each state machine `{{#state_machines}}`: - - `{{state_machine_name}}`: Name of the state machine - - `{{state_machine_camel_case}}`: Name of the state machine in camelCase - - `{{state_machine_pascal_case}}`: Name of the state machine in PascalCase - - `{{state_machine_snake_case}}`: Name of the state machine in snake_case - - `{{state_machine_kebab_case}}`: Name of the state machine in kebab-case - - `{{inputs}}`: List of inputs for the state machine - - For each input `{{#inputs}}`: - - `{{input_name}}`: Name of the input - - `{{input_type}}`: Type of the input - - `{{input_default_value}}`: Default value of the input - - `{{text_value_runs}}`: List of text value runs for the artboard - - For each text value run `{{#text_value_runs}}`: - - `{{text_value_run_name}}`: Name of the text value run - - `{{text_value_run_camel_case}}`: Name of the text value run in camelCase - - `{{text_value_run_pascal_case}}`: Name of the text value run in PascalCase - - `{{text_value_run_snake_case}}`: Name of the text value run in snake_case - - `{{text_value_run_kebab_case}}`: Name of the text value run in kebab-case - - `{{text_value_run_default}}`: Default value of the text value run - - `{{text_value_run_default_sanitized}}`: Default value of the text value run with special characters encoded - - For each nested text value run `{{#nested_text_value_runs}}`: - - `{{nested_text_value_run_name}}`: Name of the nested text value run - - `{{nested_text_value_run_path}}`: Path of the nested text value run + + - `{{artboard_name}}`: The original artboard name + - `{{artboard_pascal_case}}`: The artboard name in PascalCase + - `{{artboard_camel_case}}`: The artboard name in camelCase + - `{{artboard_snake_case}}`: The artboard name in snake_case + - `{{artboard_kebab_case}}`: The artboard name in kebab-case + - `{{animations}}`: List of animation names for the artboard + - For each animation `{{#animations}}`: + - `{{animation_name}}`: Name of the animation + - `{{animation_camel_case}}`: Name of the animation in camelCase + - `{{animation_pascal_case}}`: Name of the animation in PascalCase + - `{{animation_snake_case}}`: Name of the animation in snake_case + - `{{animation_kebab_case}}`: Name of the animation in kebab-case + - `{{state_machines}}`: List of state machines for the artboard + - For each state machine `{{#state_machines}}`: + - `{{state_machine_name}}`: Name of the state machine + - `{{state_machine_camel_case}}`: Name of the state machine in camelCase + - `{{state_machine_pascal_case}}`: Name of the state machine in PascalCase + - `{{state_machine_snake_case}}`: Name of the state machine in snake_case + - `{{state_machine_kebab_case}}`: Name of the state machine in kebab-case + - `{{inputs}}`: List of inputs for the state machine + - For each input `{{#inputs}}`: + - `{{input_name}}`: Name of the input + - `{{input_type}}`: Type of the input + - `{{input_default_value}}`: Default value of the input + - `{{text_value_runs}}`: List of text value runs for the artboard + - For each text value run `{{#text_value_runs}}`: + - `{{text_value_run_name}}`: Name of the text value run + - `{{text_value_run_camel_case}}`: Name of the text value run in camelCase + - `{{text_value_run_pascal_case}}`: Name of the text value run in PascalCase + - `{{text_value_run_snake_case}}`: Name of the text value run in snake_case + - `{{text_value_run_kebab_case}}`: Name of the text value run in kebab-case + - `{{text_value_run_default}}`: Default value of the text value run + - `{{text_value_run_default_sanitized}}`: Default value of the text value run with special characters encoded + - For each nested text value run `{{#nested_text_value_runs}}`: + + - `{{nested_text_value_run_name}}`: Name of the nested text value run + - `{{nested_text_value_run_path}}`: Path of the nested text value run + + - `{{enums}}`: List of enums in the Rive file + - For each enum `{{#enums}}`: + + - `{{enum_name}}`: Name of the enum + - `{{enum_camel_case}}`: Name of the enum in camelCase + - `{{enum_pascal_case}}`: Name of the enum in PascalCase + - `{{enum_snake_case}}`: Name of the enum in snake_case + - `{{enum_kebab_case}}`: Name of the enum in kebab-case + - `{{enum_values}}`: List of enum values + - For each enum value `{{#enum_values}}`: + - `{{enum_value_key}}`: Key of the enum value + - `{{enum_value_camel_case}}`: Key of the enum value in camelCase + - `{{enum_value_pascal_case}}`: Key of the enum value in PascalCase + - `{{enum_value_snake_case}}`: Key of the enum value in snake_case + - `{{enum_value_kebab_case}}`: Key of the enum value in kebab-case + + - `{{view_models}}`: List of view models in the Rive file + - For each view model `{{#view_models}}`: + - `{{view_model_name}}`: Name of the view model + - `{{view_model_camel_case}}`: Name of the view model in camelCase + - `{{view_model_pascal_case}}`: Name of the view model in PascalCase + - `{{view_model_snake_case}}`: Name of the view model in snake_case + - `{{view_model_kebab_case}}`: Name of the view model in kebab-case + - `{{properties}}`: List of properties in the view model + - For each property `{{#properties}}`: + - `{{property_name}}`: Name of the property + - `{{property_camel_case}}`: Name of the property in camelCase + - `{{property_pascal_case}}`: Name of the property in PascalCase + - `{{property_snake_case}}`: Name of the property in snake_case + - `{{property_kebab_case}}`: Name of the property in kebab-case + - `{{property_type}}`: Type information for the property + - For property type `{{#property_type}}`: + - `{{is_view_model}}`: Whether the property is a view model + - `{{is_enum}}`: Whether the property is an enum + - `{{is_string}}`: Whether the property is a string + - `{{is_number}}`: Whether the property is a number + - `{{is_integer}}`: Whether the property is an integer + - `{{is_boolean}}`: Whether the property is a boolean + - `{{is_color}}`: Whether the property is a color + - `{{is_list}}`: Whether the property is a list + - `{{is_trigger}}`: Whether the property is a trigger + - `{{backing_name}}`: Backing name of the property + - `{{backing_camel_case}}`: Backing name in camelCase + - `{{backing_pascal_case}}`: Backing name in PascalCase + - `{{backing_snake_case}}`: Backing name in snake_case + - `{{backing_kebab_case}}`: Backing name in kebab-case **:warning: Warning:** For duplicated names (e.g., multiple artboards, animations, or assets with the same name), the original unique names will be preserved. However, the case-converted versions (such as camelCase, PascalCase, etc.) will have a unique identifier attached to avoid conflicts. For example: + - Original names: "MyArtboard", "MyArtboard" - Unique camelCase: "myArtboard", "myArtboardU1" diff --git a/build/build.sh b/build/build.sh index 9658692..cf41103 100755 --- a/build/build.sh +++ b/build/build.sh @@ -34,7 +34,7 @@ $PREMAKE --version export PREMAKE_PATH="$PWD/../rive-runtime/build":$PREMAKE_PATH OUT=out/lib/$CONFIG -$PREMAKE --scripts=../build --file=./premake5_code_generator.lua --config=$CONFIG --out=$OUT gmake2 +$PREMAKE --scripts=../build --file=./premake5_code_generator.lua --no-rive-decoders --config=$CONFIG --out=$OUT gmake2 for var in "$@"; do if [[ $var = "clean" ]]; then @@ -52,7 +52,8 @@ for var in "$@"; do # $OUT/rive_code_generator -i ../samples/signage_v03.riv -o out/rive_generated.dart -t ../templates/dart_template.mustache # $OUT/rive_code_generator -i ../samples/rating.riv -o out/rive_generated.dart -t ../templates/dart_template.mustache # $OUT/rive_code_generator -i ../samples/ -o out/generated/rive_generated.dart -t ../templates/dart_template.mustache - $OUT/rive_code_generator -i ../samples/ -o out/generated/rive.json -t ../templates/json_template.mustache + $OUT/rive_code_generator -i ../samples/ -o out/generated/rive_viewmodel.dart -t ../templates/viewmodel_template.mustache + # $OUT/rive_code_generator -i ../samples/ -o out/generated/rive.json -t ../templates/json_template.mustache # $OUT/rive_code_generator -i ../samples/nested_test.riv -o out/rive_generated.dart --help # $OUT/rive_code_generator -i ../samples/ -o out/rive_generated.dart fi diff --git a/build/premake5_code_generator.lua b/build/premake5_code_generator.lua index 956056e..5de47fd 100644 --- a/build/premake5_code_generator.lua +++ b/build/premake5_code_generator.lua @@ -3,6 +3,7 @@ rive = '../rive-runtime' -- dofile(path.join(path.getabsolute(rive) .. '/build', 'premake5.lua')) -- dofile(path.join(path.getabsolute(rive) .. '/build', 'rive_build_config.lua')) dofile(path.join(path.getabsolute(rive) .. '/premake5_v2.lua')) +dofile(path.join(path.getabsolute(rive) .. '/renderer/premake5_pls_renderer.lua')) project('rive_code_generator') do @@ -13,17 +14,14 @@ do includedirs({ '../include', rive .. '/include', - -- miniaudio, - -- yoga, '../external/', }) - -- links({ 'rive', 'rive_harfbuzz', 'rive_sheenbidi', 'rive_yoga' }) links({ 'rive' }) files({ '../src/**.cpp', - rive .. '/utils/**.cpp', + rive .. '/utils/no_op_factory.cpp', }) -- buildoptions({ '-Wall', '-fno-exceptions', '-fno-rtti' }) diff --git a/samples/db_generator.riv b/samples/db_generator.riv new file mode 100644 index 0000000000000000000000000000000000000000..c49f1412c48c31e12ff3165c445d7fcb17dbf496 GIT binary patch literal 375 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
U{$$|vp9I%NK~%*!zp;in`WGX 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 literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp index 4198713..80d3a75 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,27 +1,32 @@ +#include #include -#include #include +#include #include +#include +#include +#include + #include "CLIUTILS/CLI11.hpp" +#include "default_template.h" #include "kainjow/mustache.hpp" -#include "rive/file.hpp" #include "rive/animation/linear_animation_instance.hpp" -#include "rive/animation/state_machine_instance.hpp" #include "rive/animation/state_machine_input_instance.hpp" -#include "rive/assets/image_asset.hpp" -#include "rive/assets/font_asset.hpp" +#include "rive/animation/state_machine_instance.hpp" #include "rive/assets/audio_asset.hpp" +#include "rive/assets/font_asset.hpp" +#include "rive/assets/image_asset.hpp" +#include "rive/file.hpp" #include "rive/generated/animation/state_machine_bool_base.hpp" #include "rive/generated/animation/state_machine_number_base.hpp" #include "rive/generated/animation/state_machine_trigger_base.hpp" +#include "rive/viewmodel/data_enum.hpp" +#include "rive/viewmodel/data_enum_value.hpp" +#include "rive/viewmodel/runtime/viewmodel_runtime.hpp" +#include "rive/viewmodel/viewmodel_property_enum.hpp" #include "utils/no_op_factory.hpp" -#include -#include -#include -#include -#include "default_template.h" -const std::string generated_file_name = "rive_generated"; +const std::string generatedFileName = "rive_generated"; enum class CaseStyle { @@ -37,56 +42,86 @@ enum class Language JavaScript }; -struct InputInfo { +struct InputInfo +{ std::string name; std::string type; - std::string default_value; + std::string defaultValue; }; -struct TextValueRunInfo { +struct TextValueRunInfo +{ std::string name; - std::string default_value; + std::string defaultValue; }; -struct NestedTextValueRunInfo { +struct NestedTextValueRunInfo +{ std::string name; std::string path; }; -struct AssetInfo { +struct AssetInfo +{ + std::string name; + std::string type; + std::string fileExtension; + std::string assetId; + std::string cdnUuid; + std::string cdnBaseUrl; +}; + +struct EnumValueInfo +{ + std::string key; +}; + +struct EnumInfo +{ + std::string name; + std::vector values; +}; + +struct PropertyInfo +{ std::string name; std::string type; - std::string file_extension; - std::string asset_id; - std::string cdn_uuid; - std::string cdn_base_url; + std::string backingName; +}; + +struct ViewModelInfo +{ + std::string name; + std::vector properties; }; struct ArtboardData { - std::string artboard_name; - std::string artboard_pascal_case; - std::string artboard_camel_case; - std::string artboard_snake_case; - std::string artboard_kebab_case; + std::string artboardName; + std::string artboardPascalCase; + std::string artboardCameCase; + std::string artboardSnakeCase; + std::string artboardKebabCase; std::vector animations; - std::vector>> state_machines; - std::vector text_value_runs; - std::vector nested_text_value_runs; + std::vector>> stateMachines; + std::vector textValueRuns; + std::vector nestedTextValueRuns; }; struct RiveFileData { - std::string riv_pascal_case; - std::string riv_camel_case; - std::string riv_snake_case; - std::string riv_kebab_case; + std::string rivPascalCase; + std::string rivCameCase; + std::string riveSnakeCase; + std::string rivKebabCase; std::vector artboards; std::vector assets; + std::vector enums; + std::vector viewmodels; }; // Helper function to convert a string to the specified case style -std::string toCaseHelper(const std::string &str, CaseStyle style) +static std::string toCaseHelper(const std::string& str, CaseStyle style) { std::stringstream result; bool capitalizeNext = (style == CaseStyle::Pascal); @@ -114,7 +149,8 @@ std::string toCaseHelper(const std::string &str, CaseStyle style) } else { - result << (style == CaseStyle::Pascal ? c : (char)std::tolower(c)); + result << (style == CaseStyle::Pascal ? c + : (char)std::tolower(c)); } firstChar = false; } @@ -150,41 +186,73 @@ std::string toCaseHelper(const std::string &str, CaseStyle style) return finalResult; } -std::string toCamelCase(const std::string &str) +static std::string toCamelCase(const std::string& str) { - return toCaseHelper(str, CaseStyle::Camel); + std::string result = toCaseHelper(str, CaseStyle::Camel); + // TODO: These handlers are generic to dart, we need to make something more + // generic to handle all languages + // Handle Dart reserved keywords + if (result == "with" || result == "class" || result == "enum" || + result == "var" || result == "const" || result == "final" || + result == "static" || result == "void" || result == "int" || + result == "double" || result == "bool" || result == "String" || + result == "List" || result == "Map" || result == "dynamic" || + result == "null" || result == "true" || result == "false") + { + result = result + "Value"; + } + return result; } -std::string toPascalCase(const std::string &str) +static std::string toPascalCase(const std::string& str) { return toCaseHelper(str, CaseStyle::Pascal); } -std::string toSnakeCase(const std::string &str) +static std::string toSnakeCase(const std::string& str) { return toCaseHelper(str, CaseStyle::Snake); } -std::string toKebabCase(const std::string &str) +static std::string toKebabCase(const std::string& str) { return toCaseHelper(str, CaseStyle::Kebab); } -std::string sanitizeString(const std::string& input) { +static std::string sanitizeString(const std::string& input) +{ std::string output; - for (char c : input) { - switch (c) { - case '\n': output += "\\n"; break; - case '\r': output += "\\r"; break; - case '\t': output += "\\t"; break; - case '\"': output += "\\\""; break; - case '\\': output += "\\\\"; break; + for (char c : input) + { + switch (c) + { + case '\n': + output += "\\n"; + break; + case '\r': + output += "\\r"; + break; + case '\t': + output += "\\t"; + break; + case '\"': + output += "\\\""; + break; + case '\\': + output += "\\\\"; + break; default: - if (std::isprint(c)) { + if (std::isprint(c)) + { output += c; - } else { + } + else + { char hex[7]; - std::snprintf(hex, sizeof(hex), "\\u%04x", static_cast(c)); + std::snprintf(hex, + sizeof(hex), + "\\u%04x", + static_cast(c)); output += hex; } } @@ -192,9 +260,9 @@ std::string sanitizeString(const std::string& input) { return output; } -static std::unique_ptr open_file(const char name[]) +static std::unique_ptr openFile(const char name[]) { - FILE *f = fopen(name, "rb"); + FILE* f = fopen(name, "rb"); if (!f) { return nullptr; @@ -216,7 +284,8 @@ static std::unique_ptr open_file(const char name[]) return rive::File::import(bytes, &gFactory); } -static std::vector get_animations_from_artboard(rive::ArtboardInstance *artboard) +static std::vector getAnimationsFromArtboard( + rive::ArtboardInstance* artboard) { std::vector animations; auto animationCount = artboard->animationCount(); @@ -228,26 +297,28 @@ static std::vector get_animations_from_artboard(rive::ArtboardInsta return animations; } -std::vector>> get_state_machines_from_artboard(rive::ArtboardInstance *artboard) +static std::vector>> +getStateMachinesFromArtboard(rive::ArtboardInstance* artboard) { - std::vector>> state_machines; + std::vector>> stateMachines; auto stateMachineCount = artboard->stateMachineCount(); for (int i = 0; i < stateMachineCount; i++) { auto stateMachine = artboard->stateMachineAt(i); - std::string state_machine_name = stateMachine->name(); + std::string stateMachineName = stateMachine->name(); std::vector inputs; auto inputCount = stateMachine->inputCount(); for (int j = 0; j < inputCount; j++) { auto input = stateMachine->input(j); - + std::string inputType; std::string defaultValue; - + // Determine the input type and default value - switch (input->inputCoreType()) { + switch (input->inputCoreType()) + { case rive::StateMachineNumberBase::typeKey: { auto smiNumberInput = static_cast(input); @@ -279,34 +350,35 @@ std::vector>> get_state_machines_f inputs.push_back({input->name(), inputType, defaultValue}); } - state_machines.emplace_back(state_machine_name, inputs); + stateMachines.emplace_back(stateMachineName, inputs); } - return state_machines; + return stateMachines; } -std::vector find_riv_files(const std::string &path) +static std::vector findRiveFiles(const std::string& path) { - std::vector riv_files; + std::vector riveFile; if (std::filesystem::is_directory(path)) { - for (const auto &entry : std::filesystem::directory_iterator(path)) + for (const auto& entry : std::filesystem::directory_iterator(path)) { if (entry.path().extension() == ".riv") { - riv_files.push_back(entry.path().string()); + riveFile.push_back(entry.path().string()); } } } else if (std::filesystem::path(path).extension() == ".riv") { - riv_files.push_back(path); + riveFile.push_back(path); } - return riv_files; + return riveFile; } -std::string makeUnique(const std::string &base, std::unordered_set &usedNames) +static std::string makeUnique(const std::string& base, + std::unordered_set& usedNames) { std::string uniqueName = base; int counter = 1; @@ -319,9 +391,8 @@ std::string makeUnique(const std::string &base, std::unordered_set return uniqueName; } - template -void findAll(std::vector& results, rive::ArtboardInstance *artboard) +void findAll(std::vector& results, rive::ArtboardInstance* artboard) { for (auto object : artboard->objects()) { @@ -332,53 +403,69 @@ void findAll(std::vector& results, rive::ArtboardInstance *artboard) } } -std::vector get_text_value_runs_from_artboard(rive::ArtboardInstance *artboard) +static std::vector getTextValueRunsFromArtboard( + rive::ArtboardInstance* artboard) { - std::vector text_value_runs; - std::vector text_value_runs_info; + std::vector textValueRuns; + std::vector textValueRunsInfo; - findAll(text_value_runs, artboard); + findAll(textValueRuns, artboard); - for (auto text_value_run : text_value_runs) + for (auto textValueRun : textValueRuns) { - if (!text_value_run->name().empty()) { - text_value_runs_info.push_back({text_value_run->name(), text_value_run->text()}); + if (!textValueRun->name().empty()) + { + textValueRunsInfo.push_back( + {textValueRun->name(), textValueRun->text()}); } } - return text_value_runs_info; + return textValueRunsInfo; } -std::vector get_nested_text_value_run_paths_from_artboard(rive::ArtboardInstance *artboard, const std::string& current_path = "") +static std::vector +getNestedTextValueRunPathsFromArtboard( + rive::ArtboardInstance* artboard, + const std::string& currentPath = "") { - std::vector nested_text_value_runs_info; + std::vector nestedTextValueRunsInfo; auto count = artboard->nestedArtboards().size(); - - if (!current_path.empty()) { - auto text_runs = get_text_value_runs_from_artboard(artboard); - for (const auto& text_run : text_runs) { - nested_text_value_runs_info.push_back({text_run.name, current_path}); + if (!currentPath.empty()) + { + auto textRuns = getTextValueRunsFromArtboard(artboard); + for (const auto& textRun : textRuns) + { + nestedTextValueRunsInfo.push_back( + {textRun.name, currentPath}); } } // Recursively process nested artboards - for (int i = 0; i < count; i++) { + for (int i = 0; i < count; i++) + { auto nested = artboard->nestedArtboards()[i]; - auto nested_name = nested->name(); - if (!nested_name.empty()) + auto nestedName = nested->name(); + if (!nestedName.empty()) { // Only process nested artboards that have an exported name - std::string new_path = current_path.empty() ? nested->name() : current_path + "/" + nested->name(); - - auto nested_results = get_nested_text_value_run_paths_from_artboard(nested->artboardInstance(), new_path); - nested_text_value_runs_info.insert(nested_text_value_runs_info.end(), nested_results.begin(), nested_results.end()); + std::string newPath = currentPath.empty() + ? nested->name() + : currentPath + "/" + nested->name(); + + auto nestedResults = getNestedTextValueRunPathsFromArtboard( + nested->artboardInstance(), + newPath); + nestedTextValueRunsInfo.insert( + nestedTextValueRunsInfo.end(), + nestedResults.begin(), + nestedResults.end()); } } - return nested_text_value_runs_info; + return nestedTextValueRunsInfo; } -std::vector get_assets_from_file(rive::File *file) +static std::vector getAssetsFromFile(rive::File* file) { std::vector assetsInfo; std::unordered_set usedAssetNames; @@ -387,7 +474,8 @@ std::vector get_assets_from_file(rive::File *file) for (auto asset : assets) { std::string assetType; - switch (asset->coreType()) { + switch (asset->coreType()) + { case rive::ImageAsset::typeKey: assetType = "image"; break; @@ -405,43 +493,142 @@ std::vector get_assets_from_file(rive::File *file) auto assetName = asset->name(); auto uniqueAssetName = makeUnique(assetName, usedAssetNames); - assetsInfo.push_back(AssetInfo{ - uniqueAssetName, - assetType, - asset->fileExtension(), - std::to_string(asset->assetId()), - asset->cdnUuidStr(), - asset->cdnBaseUrl() - }); + assetsInfo.push_back(AssetInfo{uniqueAssetName, + assetType, + asset->fileExtension(), + std::to_string(asset->assetId()), + asset->cdnUuidStr(), + asset->cdnBaseUrl()}); } return assetsInfo; } -std::optional process_riv_file(const std::string &rive_file_path) +static std::string dataTypeToString(rive::DataType type) +{ + switch (type) + { + case rive::DataType::none: + return "none"; + case rive::DataType::string: + return "string"; + case rive::DataType::number: + return "number"; + case rive::DataType::boolean: + return "boolean"; + case rive::DataType::color: + return "color"; + case rive::DataType::list: + return "list"; + case rive::DataType::enumType: + return "enum"; + case rive::DataType::trigger: + return "trigger"; + case rive::DataType::viewModel: + return "viewModel"; + case rive::DataType::integer: + return "integer"; + case rive::DataType::symbolListIndex: + return "symbolListIndex"; + case rive::DataType::assetImage: + return "assetImage"; + default: + return "unknown"; + } +} + +static std::optional processRiveFile(const std::string& riveFilePath) { // Check if the file is empty - if (std::filesystem::is_empty(rive_file_path)) + if (std::filesystem::is_empty(riveFilePath)) { - std::cerr << "Error: Rive file is empty: " << rive_file_path << std::endl; + std::cerr << "Error: Rive file is empty: " << riveFilePath + << std::endl; return std::nullopt; } - auto riveFile = open_file(rive_file_path.c_str()); + auto riveFile = openFile(riveFilePath.c_str()); if (!riveFile) { - std::cerr << "Error: Failed to parse Rive file: " << rive_file_path << std::endl; + std::cerr << "Error: Failed to parse Rive file: " << riveFilePath + << std::endl; return std::nullopt; } - std::filesystem::path path(rive_file_path); - std::string file_name_without_extension = path.stem().string(); - std::vector assets = get_assets_from_file(riveFile.get()); - RiveFileData file_data; - file_data.riv_pascal_case = toPascalCase(file_name_without_extension); - file_data.riv_camel_case = toCamelCase(file_name_without_extension); - file_data.riv_snake_case = toSnakeCase(file_name_without_extension); - file_data.riv_kebab_case = toKebabCase(file_name_without_extension); - file_data.assets = assets; + std::filesystem::path path(riveFilePath); + std::string fileNameWithoutExtension = path.stem().string(); + std::vector assets = getAssetsFromFile(riveFile.get()); + RiveFileData fileData; + fileData.rivPascalCase = toPascalCase(fileNameWithoutExtension); + fileData.rivCameCase = toCamelCase(fileNameWithoutExtension); + fileData.riveSnakeCase = toSnakeCase(fileNameWithoutExtension); + fileData.rivKebabCase = toKebabCase(fileNameWithoutExtension); + fileData.assets = assets; + + // Process enums + const auto& fileEnums = riveFile->enums(); + for (auto* dataEnum : fileEnums) + { + if (dataEnum) + { + EnumInfo enumInfo; + enumInfo.name = dataEnum->enumName(); + const auto& values = dataEnum->values(); + for (const auto* value : values) + { + enumInfo.values.push_back({value->key()}); + } + fileData.enums.push_back(enumInfo); + } + } + + // Process view models + for (size_t i = 0; i < riveFile->viewModelCount(); i++) + { + auto viewModel = riveFile->viewModelByIndex(i); + if (viewModel) + { + ViewModelInfo viewModelInfo; + viewModelInfo.name = viewModel->name(); + auto propertiesData = viewModel->properties(); + for (const auto& property : propertiesData) + { + if (property.type == rive::DataType::viewModel) + { + // TODO: this is a hack + auto nestedViewModel = + viewModel->createInstance()->propertyViewModel( + property.name); + auto vm = nestedViewModel->instance()->viewModel(); + viewModelInfo.properties.push_back( + {property.name, + dataTypeToString(property.type), + vm->name()}); + } + else if (property.type == rive::DataType::enumType) + { + // TODO: this is a hack + auto vmi = + riveFile->createViewModelInstance(viewModel->name()); + auto enum_instance = + static_cast( + vmi->propertyValue(property.name)); + auto enumProperty = enum_instance->viewModelProperty() + ->as(); + auto enumName = enumProperty->dataEnum()->enumName(); + viewModelInfo.properties.push_back( + {property.name, + dataTypeToString(property.type), + enumName}); + } + else + { + viewModelInfo.properties.push_back( + {property.name, dataTypeToString(property.type)}); + } + } + fileData.viewmodels.push_back(viewModelInfo); + } + } std::unordered_set usedArtboardNames; @@ -449,259 +636,416 @@ std::optional process_riv_file(const std::string &rive_file_path) for (int i = 0; i < artboardCount; i++) { auto artboard = riveFile->artboardAt(i); - std::string artboard_name = artboard->name(); + std::string artboardName = artboard->name(); - std::string artboard_pascal_case = toPascalCase(artboard_name); - std::string artboard_camel_case = toCamelCase(artboard_name); - std::string artboard_snake_case = toSnakeCase(artboard_name); - std::string artboard_kebab_case = toKebabCase(artboard_name); + std::string artboardPascalCase = toPascalCase(artboardName); + std::string artboardCameCase = toCamelCase(artboardName); + std::string artboardSnakeCase = toSnakeCase(artboardName); + std::string artboardKebabCase = toKebabCase(artboardName); // Ensure unique artboard variable names - artboard_camel_case = makeUnique(artboard_camel_case, usedArtboardNames); - - std::vector animations = get_animations_from_artboard(artboard.get()); - std::vector>> state_machines = get_state_machines_from_artboard(artboard.get()); - std::vector text_value_runs = get_text_value_runs_from_artboard(artboard.get()); - std::vector nested_text_value_runs = get_nested_text_value_run_paths_from_artboard(artboard.get()); - - file_data.artboards.push_back({artboard_name, artboard_pascal_case, artboard_camel_case, artboard_snake_case, artboard_kebab_case, animations, state_machines, text_value_runs, nested_text_value_runs}); + artboardCameCase = + makeUnique(artboardCameCase, usedArtboardNames); + + std::vector animations = + getAnimationsFromArtboard(artboard.get()); + std::vector>> + stateMachines = getStateMachinesFromArtboard(artboard.get()); + std::vector textValueRuns = + getTextValueRunsFromArtboard(artboard.get()); + std::vector nestedTextValueRuns = + getNestedTextValueRunPathsFromArtboard(artboard.get()); + + fileData.artboards.push_back({artboardName, + artboardPascalCase, + artboardCameCase, + artboardSnakeCase, + artboardKebabCase, + animations, + stateMachines, + textValueRuns, + nestedTextValueRuns}); } - return file_data; + return fileData; } -std::optional read_template_file(const std::string &path) +static std::optional readTemplateFile(const std::string& path) { std::ifstream file(path); if (!file.is_open()) { - std::cerr << "Warning: Unable to open template file: " << path << std::endl; + std::cerr << "Warning: Unable to open template file: " << path + << std::endl; return std::nullopt; } - return std::string(std::istreambuf_iterator(file), std::istreambuf_iterator()); + return std::string(std::istreambuf_iterator(file), + std::istreambuf_iterator()); } -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { CLI::App app{"Rive Code Generator"}; - std::string input_path; - std::string output_file_path; - std::string template_path; + std::string inputPath; + std::string outputFilePath; + std::string templatePath; Language language = Language::Dart; // Default to Dart - app.add_option("-i, --input", input_path, "Path to Rive file or directory containing Rive files") + app.add_option("-i, --input", + inputPath, + "Path to Rive file or directory containing Rive files") ->required() ->check(CLI::ExistingFile | CLI::ExistingDirectory); - app.add_option("-o, --output", output_file_path, "Output file path") + app.add_option("-o, --output", outputFilePath, "Output file path") ->required(); - app.add_option("-t,--template", template_path, "Custom template file path"); + app.add_option("-t,--template", templatePath, "Custom template file path"); - app.add_option("-l, --language", language, "Programming language for code generation") - ->transform(CLI::CheckedTransformer(std::map{ - {"dart", Language::Dart}, - {"js", Language::JavaScript}}, - CLI::ignore_case)); + app.add_option("-l, --language", + language, + "Programming language for code generation") + ->transform(CLI::CheckedTransformer( + std::map{{"dart", Language::Dart}, + {"js", Language::JavaScript}}, + CLI::ignore_case)); - CLI11_PARSE(app, argc, argv); + CLI11_PARSE(app, argc, argv) - std::string template_str; - if (!template_path.empty()) + std::string templateStr; + if (!templatePath.empty()) { - auto custom_template = read_template_file(template_path); - if (custom_template) + auto customTemplate = readTemplateFile(templatePath); + if (customTemplate) { - template_str = *custom_template; - std::cout << "Using custom template from: " << template_path << std::endl; + templateStr = *customTemplate; + std::cout << "Using custom template from: " << templatePath + << std::endl; } else { - // TODO: This is probably not needed. Or can have a safety to fallback to the language specified + // TODO: This is probably not needed. Or can have a safety to + // fallback to the language specified std::cout << "Falling back to default template." << std::endl; - template_str = default_templates::DEFAULT_DART_TEMPLATE; + templateStr = default_templates::DEFAULT_DART_TEMPLATE; } } else { if (language == Language::Dart) { - template_str = default_templates::DEFAULT_DART_TEMPLATE; + templateStr = default_templates::DEFAULT_DART_TEMPLATE; } else if (language == Language::JavaScript) { - std::cout << "JavaScript code generation is not yet supported." << std::endl; + std::cout << "JavaScript code generation is not yet supported." + << std::endl; return 1; } } - std::vector riv_files = find_riv_files(input_path); + std::vector riveFiles = findRiveFiles(inputPath); - if (riv_files.empty()) + if (riveFiles.empty()) { std::cerr << "No .riv files found in the specified path." << std::endl; return 1; } - std::vector rive_file_data_list; - for (const auto &riv_file : riv_files) + std::vector riveFileDataList; + for (const auto& riv_file : riveFiles) { - auto result = process_riv_file(riv_file); + auto result = processRiveFile(riv_file); if (result) { - rive_file_data_list.push_back(*result); + riveFileDataList.push_back(*result); } // If result is nullopt, the error has already been printed } // Mustache template rendering - kainjow::mustache::data template_data; - std::vector riv_file_list; + kainjow::mustache::data templateData; + std::vector riveFileList; - for (size_t file_index = 0; file_index < rive_file_data_list.size(); file_index++) + for (size_t fileIndex = 0; fileIndex < riveFileDataList.size(); + fileIndex++) { - const auto &file_data = rive_file_data_list[file_index]; - kainjow::mustache::data riv_file_data; - riv_file_data["riv_pascal_case"] = file_data.riv_pascal_case; - riv_file_data["riv_camel_case"] = file_data.riv_camel_case; - riv_file_data["riv_snake_case"] = file_data.riv_snake_case; - riv_file_data["riv_kebab_case"] = file_data.riv_kebab_case; - riv_file_data["last"] = (file_index == rive_file_data_list.size() - 1); + const auto& fileData = riveFileDataList[fileIndex]; + kainjow::mustache::data riveFileData; + riveFileData["riv_pascal_case"] = fileData.rivPascalCase; + riveFileData["riv_camel_case"] = fileData.rivCameCase; + riveFileData["riv_snake_case"] = fileData.riveSnakeCase; + riveFileData["riv_kebab_case"] = fileData.rivKebabCase; + riveFileData["last"] = (fileIndex == riveFileDataList.size() - 1); + + // Add enums to template data + std::vector enums; + for (size_t enumIndex = 0; enumIndex < fileData.enums.size(); + enumIndex++) + { + const auto& enumInfo = fileData.enums[enumIndex]; + kainjow::mustache::data enumData; + enumData["enum_name"] = enumInfo.name; + enumData["enum_camel_case"] = toCamelCase(enumInfo.name); + enumData["enum_pascal_case"] = toPascalCase(enumInfo.name); + enumData["enum_snake_case"] = toSnakeCase(enumInfo.name); + enumData["enum_kebab_case"] = toKebabCase(enumInfo.name); + enumData["last"] = (enumIndex == fileData.enums.size() - 1); + + std::vector enumValues; + for (size_t valueIndex = 0; valueIndex < enumInfo.values.size(); + valueIndex++) + { + const auto& value = enumInfo.values[valueIndex]; + kainjow::mustache::data valueData; + valueData["enum_value_key"] = value.key; + valueData["enum_value_camel_case"] = toCamelCase(value.key); + valueData["enum_value_pascal_case"] = toPascalCase(value.key); + valueData["enum_value_snake_case"] = toSnakeCase(value.key); + valueData["enum_value_kebab_case"] = toKebabCase(value.key); + valueData["last"] = + (valueIndex == enumInfo.values.size() - 1); + enumValues.push_back(valueData); + } + enumData["enum_values"] = enumValues; + enums.push_back(enumData); + } + riveFileData["enums"] = enums; + + // Add view models to template data + std::vector viewmodels; + for (size_t vmIndex = 0; vmIndex < fileData.viewmodels.size(); + vmIndex++) + { + const auto& viewModel = fileData.viewmodels[vmIndex]; + kainjow::mustache::data viewmodelData; + viewmodelData["view_model_name"] = viewModel.name; + viewmodelData["view_model_camel_case"] = + toCamelCase(viewModel.name); + viewmodelData["view_model_pascal_case"] = + toPascalCase(viewModel.name); + viewmodelData["view_model_snake_case"] = + toSnakeCase(viewModel.name); + viewmodelData["view_model_kebab_case"] = + toKebabCase(viewModel.name); + viewmodelData["last"] = + (vmIndex == fileData.viewmodels.size() - 1); + + std::vector properties; + for (size_t propIndex = 0; + propIndex < viewModel.properties.size(); + propIndex++) + { + const auto& property = viewModel.properties[propIndex]; + kainjow::mustache::data propertyData; + propertyData["property_name"] = property.name; + propertyData["property_camel_case"] = + toCamelCase(property.name); + propertyData["property_pascal_case"] = + toPascalCase(property.name); + propertyData["property_snake_case"] = + toSnakeCase(property.name); + propertyData["property_kebab_case"] = + toKebabCase(property.name); + propertyData["property_type"] = property.type; + + // Add property type information for the viewmodel template + kainjow::mustache::data propertyTypeData; + propertyTypeData.set("is_view_model", + property.type == "viewModel"); + propertyTypeData.set("is_enum", property.type == "enum"); + propertyTypeData.set("is_string", property.type == "string"); + propertyTypeData.set("is_number", property.type == "number"); + propertyTypeData.set("is_integer", + property.type == "integer"); + propertyTypeData.set("is_boolean", + property.type == "boolean"); + propertyTypeData.set("is_color", property.type == "color"); + propertyTypeData.set("is_list", property.type == "list"); + propertyTypeData.set("is_trigger", + property.type == "trigger"); + propertyTypeData.set("backing_name", property.backingName); + propertyTypeData.set("backing_camel_case", + toCamelCase(property.backingName)); + propertyTypeData.set("backing_pascal_case", + toPascalCase(property.backingName)); + propertyTypeData.set("backing_snake_case", + toSnakeCase(property.backingName)); + propertyTypeData.set("backing_kebab_case", + toKebabCase(property.backingName)); + propertyData.set("property_type", propertyTypeData); + + propertyData["last"] = + (propIndex == viewModel.properties.size() - 1); + properties.push_back(propertyData); + } + viewmodelData["properties"] = properties; + viewmodels.push_back(viewmodelData); + } + riveFileData["view_models"] = viewmodels; std::vector assets; - for (size_t asset_index = 0; asset_index < file_data.assets.size(); asset_index++) + for (size_t assetIndex = 0; assetIndex < fileData.assets.size(); + assetIndex++) { - const auto &asset = file_data.assets[asset_index]; - kainjow::mustache::data asset_data; - asset_data["asset_name"] = asset.name; - asset_data["asset_camel_case"] = toCamelCase(asset.name); - asset_data["asset_pascal_case"] = toPascalCase(asset.name); - asset_data["asset_snake_case"] = toSnakeCase(asset.name); - asset_data["asset_kebab_case"] = toKebabCase(asset.name); - asset_data["asset_type"] = asset.type; - asset_data["asset_id"] = asset.asset_id; - asset_data["asset_cdn_uuid"] = asset.cdn_uuid; - asset_data["asset_cdn_base_url"] = asset.cdn_base_url; - asset_data["last"] = (asset_index == file_data.assets.size() - 1); - assets.push_back(asset_data); + const auto& asset = fileData.assets[assetIndex]; + kainjow::mustache::data assetData; + assetData["asset_name"] = asset.name; + assetData["asset_camel_case"] = toCamelCase(asset.name); + assetData["asset_pascal_case"] = toPascalCase(asset.name); + assetData["asset_snake_case"] = toSnakeCase(asset.name); + assetData["asset_kebab_case"] = toKebabCase(asset.name); + assetData["asset_type"] = asset.type; + assetData["asset_id"] = asset.assetId; + assetData["asset_cdn_uuid"] = asset.cdnUuid; + assetData["asset_cdn_base_url"] = asset.cdnBaseUrl; + assetData["last"] = (assetIndex == fileData.assets.size() - 1); + assets.push_back(assetData); } - riv_file_data["assets"] = assets; + riveFileData["assets"] = assets; - std::vector artboard_list; - for (size_t artboard_index = 0; artboard_index < file_data.artboards.size(); artboard_index++) + std::vector artboardList; + for (size_t artboardIndex = 0; + artboardIndex < fileData.artboards.size(); + artboardIndex++) { - const auto &artboard = file_data.artboards[artboard_index]; - kainjow::mustache::data artboard_data; - artboard_data["artboard_name"] = artboard.artboard_name; - artboard_data["artboard_pascal_case"] = artboard.artboard_pascal_case; - artboard_data["artboard_camel_case"] = artboard.artboard_camel_case; - artboard_data["artboard_snake_case"] = artboard.artboard_snake_case; - artboard_data["artboard_kebab_case"] = artboard.artboard_kebab_case; - artboard_data["last"] = (artboard_index == file_data.artboards.size() - 1); + const auto& artboard = fileData.artboards[artboardIndex]; + kainjow::mustache::data artboardData; + artboardData["artboard_name"] = artboard.artboardName; + artboardData["artboard_pascal_case"] = + artboard.artboardPascalCase; + artboardData["artboard_camel_case"] = artboard.artboardCameCase; + artboardData["artboard_snake_case"] = artboard.artboardSnakeCase; + artboardData["artboard_kebab_case"] = artboard.artboardKebabCase; + artboardData["last"] = + (artboardIndex == fileData.artboards.size() - 1); std::unordered_set usedAnimationNames; std::vector animations; - for (size_t anim_index = 0; anim_index < artboard.animations.size(); anim_index++) + for (size_t animIndex = 0; animIndex < artboard.animations.size(); + animIndex++) { - const auto &animation = artboard.animations[anim_index]; - kainjow::mustache::data anim_data; - auto unique_name = makeUnique(animation, usedAnimationNames); - anim_data["animation_name"] = animation; - anim_data["animation_camel_case"] = toCamelCase(unique_name); - anim_data["animation_pascal_case"] = toPascalCase(unique_name); - anim_data["animation_snake_case"] = toSnakeCase(unique_name); - anim_data["animation_kebab_case"] = toKebabCase(unique_name); - anim_data["last"] = (anim_index == artboard.animations.size() - 1); - animations.push_back(anim_data); + const auto& animation = artboard.animations[animIndex]; + kainjow::mustache::data animData; + auto uniqueName = makeUnique(animation, usedAnimationNames); + animData["animation_name"] = animation; + animData["animation_camel_case"] = toCamelCase(uniqueName); + animData["animation_pascal_case"] = toPascalCase(uniqueName); + animData["animation_snake_case"] = toSnakeCase(uniqueName); + animData["animation_kebab_case"] = toKebabCase(uniqueName); + animData["last"] = + (animIndex == artboard.animations.size() - 1); + animations.push_back(animData); } - artboard_data["animations"] = animations; + artboardData["animations"] = animations; std::unordered_set usedStateMachineNames; - std::vector state_machines; - for (size_t sm_index = 0; sm_index < artboard.state_machines.size(); sm_index++) + std::vector stateMachines; + for (size_t smIndex = 0; smIndex < artboard.stateMachines.size(); + smIndex++) { - const auto &state_machine = artboard.state_machines[sm_index]; - kainjow::mustache::data state_machine_data; - auto unique_name = makeUnique(state_machine.first, usedStateMachineNames); - state_machine_data["state_machine_name"] = state_machine.first; - state_machine_data["state_machine_camel_case"] = toCamelCase(unique_name); - state_machine_data["state_machine_pascal_case"] = toPascalCase(unique_name); - state_machine_data["state_machine_snake_case"] = toSnakeCase(unique_name); - state_machine_data["state_machine_kebab_case"] = toKebabCase(unique_name); - state_machine_data["last"] = (sm_index == artboard.state_machines.size() - 1); + const auto& stateMachine = artboard.stateMachines[smIndex]; + kainjow::mustache::data stateMachineData; + auto uniqueName = + makeUnique(stateMachine.first, usedStateMachineNames); + stateMachineData["state_machine_name"] = stateMachine.first; + stateMachineData["state_machine_camel_case"] = + toCamelCase(uniqueName); + stateMachineData["state_machine_pascal_case"] = + toPascalCase(uniqueName); + stateMachineData["state_machine_snake_case"] = + toSnakeCase(uniqueName); + stateMachineData["state_machine_kebab_case"] = + toKebabCase(uniqueName); + stateMachineData["last"] = + (smIndex == artboard.stateMachines.size() - 1); std::unordered_set usedInputNames; std::vector inputs; - for (size_t input_index = 0; input_index < state_machine.second.size(); input_index++) + for (size_t inputIndex = 0; + inputIndex < stateMachine.second.size(); + inputIndex++) { - const auto &input = state_machine.second[input_index]; - kainjow::mustache::data input_data; - auto unique_name = makeUnique(input.name, usedInputNames); - input_data["input_name"] = input.name; - input_data["input_camel_case"] = toCamelCase(unique_name); - input_data["input_pascal_case"] = toPascalCase(unique_name); - input_data["input_snake_case"] = toSnakeCase(unique_name); - input_data["input_kebab_case"] = toKebabCase(unique_name); - input_data["input_type"] = input.type; - input_data["input_default_value"] = input.default_value; - input_data["last"] = (input_index == state_machine.second.size() - 1); - inputs.push_back(input_data); + const auto& input = stateMachine.second[inputIndex]; + kainjow::mustache::data inputData; + auto uniqueName = makeUnique(input.name, usedInputNames); + inputData["input_name"] = input.name; + inputData["input_camel_case"] = toCamelCase(uniqueName); + inputData["input_pascal_case"] = toPascalCase(uniqueName); + inputData["input_snake_case"] = toSnakeCase(uniqueName); + inputData["input_kebab_case"] = toKebabCase(uniqueName); + inputData["input_type"] = input.type; + inputData["input_default_value"] = input.defaultValue; + inputData["last"] = + (inputIndex == stateMachine.second.size() - 1); + inputs.push_back(inputData); } - state_machine_data["inputs"] = inputs; + stateMachineData["inputs"] = inputs; - state_machines.push_back(state_machine_data); + stateMachines.push_back(stateMachineData); } - artboard_data["state_machines"] = state_machines; + artboardData["state_machines"] = stateMachines; std::unordered_set usedTextValueRunNames; - std::vector text_value_runs; - for (size_t tvr_index = 0; tvr_index < artboard.text_value_runs.size(); tvr_index++) + std::vector textValueRuns; + for (size_t tvrIndex = 0; + tvrIndex < artboard.textValueRuns.size(); + tvrIndex++) { - const auto &tvr = artboard.text_value_runs[tvr_index]; - kainjow::mustache::data tvr_data; - auto unique_name = makeUnique(tvr.name, usedTextValueRunNames); - tvr_data["text_value_run_name"] = tvr.name; - tvr_data["text_value_run_camel_case"] = toCamelCase(unique_name); - tvr_data["text_value_run_pascal_case"] = toPascalCase(unique_name); - tvr_data["text_value_run_snake_case"] = toSnakeCase(unique_name); - tvr_data["text_value_run_kebab_case"] = toKebabCase(unique_name); - tvr_data["text_value_run_default"] = tvr.default_value; - tvr_data["text_value_run_default_sanitized"] = sanitizeString(tvr.default_value); - tvr_data["last"] = (tvr_index == artboard.text_value_runs.size() - 1); - text_value_runs.push_back(tvr_data); + const auto& tvr = artboard.textValueRuns[tvrIndex]; + kainjow::mustache::data tvrData; + auto uniqueName = makeUnique(tvr.name, usedTextValueRunNames); + tvrData["text_value_run_name"] = tvr.name; + tvrData["text_value_run_camel_case"] = + toCamelCase(uniqueName); + tvrData["text_value_run_pascal_case"] = + toPascalCase(uniqueName); + tvrData["text_value_run_snake_case"] = + toSnakeCase(uniqueName); + tvrData["text_value_run_kebab_case"] = + toKebabCase(uniqueName); + tvrData["text_value_run_default"] = tvr.defaultValue; + tvrData["text_value_run_default_sanitized"] = + sanitizeString(tvr.defaultValue); + tvrData["last"] = + (tvrIndex == artboard.textValueRuns.size() - 1); + textValueRuns.push_back(tvrData); } - artboard_data["text_value_runs"] = text_value_runs; + artboardData["text_value_runs"] = textValueRuns; - std::vector nested_text_value_runs; - for (size_t ntvr_index = 0; ntvr_index < artboard.nested_text_value_runs.size(); ntvr_index++) + std::vector nestedTextValueRuns; + for (size_t ntvrIndex = 0; + ntvrIndex < artboard.nestedTextValueRuns.size(); + ntvrIndex++) { - const auto &ntvr = artboard.nested_text_value_runs[ntvr_index]; - kainjow::mustache::data ntvr_data; - ntvr_data["nested_text_value_run_name"] = ntvr.name; - ntvr_data["nested_text_value_run_path"] = ntvr.path; - ntvr_data["last"] = (ntvr_index == artboard.nested_text_value_runs.size() - 1); - nested_text_value_runs.push_back(ntvr_data); + const auto& ntvr = artboard.nestedTextValueRuns[ntvrIndex]; + kainjow::mustache::data ntvrData; + ntvrData["nested_text_value_run_name"] = ntvr.name; + ntvrData["nested_text_value_run_path"] = ntvr.path; + ntvrData["last"] = + (ntvrIndex == artboard.nestedTextValueRuns.size() - 1); + nestedTextValueRuns.push_back(ntvrData); } - artboard_data["nested_text_value_runs"] = nested_text_value_runs; + artboardData["nested_text_value_runs"] = nestedTextValueRuns; - artboard_list.push_back(artboard_data); + artboardList.push_back(artboardData); } - riv_file_data["artboards"] = artboard_list; - riv_file_list.push_back(riv_file_data); + riveFileData["artboards"] = artboardList; + riveFileList.push_back(riveFileData); } - template_data["generated_file_name"] = generated_file_name; - template_data["riv_files"] = riv_file_list; + templateData["generated_file_name"] = generatedFileName; + templateData["riv_files"] = riveFileList; - kainjow::mustache::mustache tmpl(template_str); - std::string result = tmpl.render(template_data); + kainjow::mustache::mustache tmpl(templateStr); + std::string result = tmpl.render(templateData); - std::cout << "Rive: output_file_path = " << output_file_path << std::endl; + std::cout << "Rive: output_file_path = " << outputFilePath << std::endl; - std::filesystem::path output_path(output_file_path); + std::filesystem::path output_path(outputFilePath); // If only a filename is provided, use the current directory if (output_path.is_relative() && output_path.parent_path().empty()) @@ -709,13 +1053,15 @@ int main(int argc, char *argv[]) output_path = std::filesystem::current_path() / output_path; } - // Create directories if they don't exist (this won't do anything if it's just a filename) + // Create directories if they don't exist (this won't do anything if it's + // just a filename) std::filesystem::create_directories(output_path.parent_path()); std::ofstream output_file(output_path); if (!output_file.is_open()) { - std::cerr << "Error: Unable to open output file: " << output_path << std::endl; + std::cerr << "Error: Unable to open output file: " << output_path + << std::endl; return 1; } output_file << result; diff --git a/templates/json_template.mustache b/templates/json_template.mustache index 3466888..1aaf020 100644 --- a/templates/json_template.mustache +++ b/templates/json_template.mustache @@ -13,6 +13,33 @@ }{{^last}},{{/last}} {{/assets}} }, + "enums": { + {{#enums}} + "{{enum_camel_case}}": { + "name": "{{enum_name}}", + "values": { + {{#enum_values}} + "{{enum_value_camel_case}}": "{{enum_value_key}}"{{^last}},{{/last}} + {{/enum_values}} + } + }{{^last}},{{/last}} + {{/enums}} + }, + "viewModels": { + {{#view_models}} + "{{view_model_camel_case}}": { + "name": "{{view_model_name}}", + "properties": { + {{#properties}} + "{{property_camel_case}}": { + "name": "{{property_name}}", + "type": "{{property_type}}" + }{{^last}},{{/last}} + {{/properties}} + } + }{{^last}},{{/last}} + {{/view_models}} + }, "artboards": { {{#artboards}} "{{artboard_camel_case}}": { diff --git a/templates/viewmodel_template.mustache b/templates/viewmodel_template.mustache new file mode 100644 index 0000000..bbaecb7 --- /dev/null +++ b/templates/viewmodel_template.mustache @@ -0,0 +1,63 @@ +// {{generated_file_name}}_viewmodels.dart + +// ignore_for_file: lines_longer_than_80_chars, unused_field + +import 'dart:ui'; +import 'package:rive_native/rive_native.dart' as rive; + +/// ViewModel classes for Rive files +{{#riv_files}} +// ---------------------- +// {{riv_camel_case}} ViewModels +// ---------------------- + +{{#enums}} +/// Enum for {{enum_name}} +enum {{enum_pascal_case}}Enum { + {{#enum_values}} + {{enum_value_camel_case}}('{{enum_value_key}}'){{^last}},{{/last}}{{#last}};{{/last}} + {{/enum_values}} + + final String value; + const {{enum_pascal_case}}Enum(this.value); + + @override + String toString() => value; +} +{{/enums}} + +{{#view_models}} +/// ViewModel class for {{view_model_name}} +class {{view_model_pascal_case}} { + final rive.ViewModelInstance instance; + {{#properties}} + {{#property_type}}{{#is_view_model}}final {{backing_pascal_case}} {{property_camel_case}};{{/is_view_model}}{{/property_type}}{{#property_type}}final {{#is_view_model}}rive.ViewModelInstance{{/is_view_model}}{{#is_enum}}rive.ViewModelInstanceEnum{{/is_enum}}{{#is_string}}rive.ViewModelInstanceString{{/is_string}}{{#is_number}}rive.ViewModelInstanceNumber{{/is_number}}{{#is_boolean}}rive.ViewModelInstanceBoolean{{/is_boolean}}{{#is_color}}rive.ViewModelInstanceColor{{/is_color}}{{#is_trigger}}rive.ViewModelInstanceTrigger{{/is_trigger}} _{{property_camel_case}}Property;{{/property_type}} + {{/properties}} + + {{view_model_pascal_case}}(this.instance): {{#properties}} + {{#property_type}}{{#is_view_model}}{{property_camel_case}} = {{backing_pascal_case}}(instance.viewModel('{{property_name}}')!),{{/is_view_model}}{{/property_type}} + {{#property_type}} + _{{property_camel_case}}Property = instance.{{#is_view_model}}viewModel{{/is_view_model}}{{#is_enum}}enumerator{{/is_enum}}{{#is_string}}string{{/is_string}}{{#is_number}}number{{/is_number}}{{#is_boolean}}boolean{{/is_boolean}}{{#is_color}}color{{/is_color}}{{#is_trigger}}trigger{{/is_trigger}}('{{property_name}}')!{{^last}},{{/last}}{{#last}};{{/last}} + {{/property_type}} + {{/properties}} + + {{#properties}} + {{#property_type}}{{#is_enum}}{{backing_pascal_case}}Enum get {{property_camel_case}} => {{backing_pascal_case}}Enum.values.byName(_{{property_camel_case}}Property.value.toLowerCase()); + set {{property_camel_case}}({{backing_pascal_case}}Enum value) => _{{property_camel_case}}Property.value = value.value;{{/is_enum}}{{#is_string}}String get {{property_camel_case}} => _{{property_camel_case}}Property.value; + set {{property_camel_case}}(String value) => _{{property_camel_case}}Property.value = value;{{/is_string}}{{#is_number}}double get {{property_camel_case}} => _{{property_camel_case}}Property.value; + set {{property_camel_case}}(double value) => _{{property_camel_case}}Property.value = value;{{/is_number}}{{#is_boolean}}bool get {{property_camel_case}} => _{{property_camel_case}}Property.value; + set {{property_camel_case}}(bool value) => _{{property_camel_case}}Property.value = value;{{/is_boolean}}{{#is_color}}Color get {{property_camel_case}} => _{{property_camel_case}}Property.value; + set {{property_camel_case}}(Color value) => _{{property_camel_case}}Property.value = value;{{/is_color}}{{#is_list}}List get {{property_camel_case}} => _{{property_camel_case}}Property.value; + set {{property_camel_case}}(List value) => _{{property_camel_case}}Property.value = value;{{/is_list}}{{#is_trigger}}void {{property_camel_case}}() => _{{property_camel_case}}Property.trigger();{{/is_trigger}}{{/property_type}} + {{/properties}} + + Map toJson() { + return { + {{#properties}} + {{#property_type}}{{#is_view_model}}'{{property_name}}': {{property_camel_case}}.toJson(),{{/is_view_model}}{{#is_enum}}'{{property_name}}': {{property_camel_case}}.value,{{/is_enum}}{{#is_string}}'{{property_name}}': {{property_camel_case}},{{/is_string}}{{#is_number}}'{{property_name}}': {{property_camel_case}},{{/is_number}}{{#is_boolean}}'{{property_name}}': {{property_camel_case}},{{/is_boolean}}{{#is_color}}'{{property_name}}': {{property_camel_case}}.value,{{/is_color}}{{#is_list}}'{{property_name}}': {{property_camel_case}},{{/is_list}}{{/property_type}} + {{/properties}} + }; + } +} +{{/view_models}} +{{/riv_files}} From 4f7a1780ac1483af629114808eeab1fe9fb834ae Mon Sep 17 00:00:00 2001 From: Seth Sandler Date: Fri, 22 Aug 2025 13:31:49 -0700 Subject: [PATCH 08/16] update rive version --- rive-runtime | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rive-runtime b/rive-runtime index fc31e5e..e16f4ba 160000 --- a/rive-runtime +++ b/rive-runtime @@ -1 +1 @@ -Subproject commit fc31e5e7572d17817463f12e13e1cf39f19aff84 +Subproject commit e16f4ba34d8e6b4fee50eb071860342d8a476180 From e30f57bc4b19859010dc62169c7acf17c7ec257e Mon Sep 17 00:00:00 2001 From: Seth Sandler Date: Wed, 1 Oct 2025 22:54:30 -0700 Subject: [PATCH 09/16] update rive runtime and add relationship information to main.cpp --- rive-runtime | 2 +- src/main.cpp | 131 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 127 insertions(+), 6 deletions(-) diff --git a/rive-runtime b/rive-runtime index e16f4ba..abd68ec 160000 --- a/rive-runtime +++ b/rive-runtime @@ -1 +1 @@ -Subproject commit e16f4ba34d8e6b4fee50eb071860342d8a476180 +Subproject commit abd68ec89eb25fcb8b5ca296ace80644a8d299f6 diff --git a/src/main.cpp b/src/main.cpp index 80d3a75..02d009c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -87,6 +87,7 @@ struct PropertyInfo std::string name; std::string type; std::string backingName; + std::string defaultValue; // For enums, stores the default enum value key }; struct ViewModelInfo @@ -106,6 +107,14 @@ struct ArtboardData std::vector>> stateMachines; std::vector textValueRuns; std::vector nestedTextValueRuns; + + // Relationship information + bool isDefault; + uint32_t viewModelId; + std::string viewModelName; + bool hasViewModel; + std::string defaultStateMachineName; + bool hasDefaultStateMachine; }; struct RiveFileData @@ -118,6 +127,12 @@ struct RiveFileData std::vector assets; std::vector enums; std::vector viewmodels; + + // Default relationship chain + std::string defaultArtboardName; + std::string defaultStateMachineName; + std::string defaultViewModelName; + bool hasDefaults; }; // Helper function to convert a string to the specified case style @@ -260,7 +275,7 @@ static std::string sanitizeString(const std::string& input) return output; } -static std::unique_ptr openFile(const char name[]) +static rive::rcp openFile(const char name[]) { FILE* f = fopen(name, "rb"); if (!f) @@ -602,7 +617,8 @@ static std::optional processRiveFile(const std::string& riveFilePa viewModelInfo.properties.push_back( {property.name, dataTypeToString(property.type), - vm->name()}); + vm->name(), + ""}); // ViewModels don't have default values } else if (property.type == rive::DataType::enumType) { @@ -615,21 +631,72 @@ static std::optional processRiveFile(const std::string& riveFilePa auto enumProperty = enum_instance->viewModelProperty() ->as(); auto enumName = enumProperty->dataEnum()->enumName(); + + // Get the default value from the enum instance + uint32_t defaultIndex = enum_instance->propertyValue(); + auto dataEnum = enumProperty->dataEnum(); + std::string defaultValue = ""; + if (defaultIndex < dataEnum->values().size()) { + defaultValue = dataEnum->values()[defaultIndex]->key(); + } + viewModelInfo.properties.push_back( {property.name, dataTypeToString(property.type), - enumName}); + enumName, + defaultValue}); } else { + // Get default values for other property types + auto vmi = riveFile->createViewModelInstance(viewModel->name()); + std::string defaultValue = ""; + + if (property.type == rive::DataType::boolean) { + auto bool_instance = static_cast( + vmi->propertyValue(property.name)); + defaultValue = bool_instance->propertyValue() ? "true" : "false"; + } + else if (property.type == rive::DataType::number) { + auto number_instance = static_cast( + vmi->propertyValue(property.name)); + defaultValue = std::to_string(number_instance->propertyValue()); + } + else if (property.type == rive::DataType::string) { + auto string_instance = static_cast( + vmi->propertyValue(property.name)); + defaultValue = string_instance->propertyValue(); + } + // Trigger and viewModel types don't have default values + viewModelInfo.properties.push_back( - {property.name, dataTypeToString(property.type)}); + {property.name, dataTypeToString(property.type), "", defaultValue}); } } fileData.viewmodels.push_back(viewModelInfo); } } + // Extract default relationship chain + auto defaultArtboard = riveFile->artboard(); // First artboard is default + fileData.hasDefaults = (defaultArtboard != nullptr); + + if (fileData.hasDefaults) { + fileData.defaultArtboardName = defaultArtboard->name(); + + // Get default state machine for the default artboard + auto defaultStateMachineInstance = defaultArtboard->instance()->defaultStateMachine(); + if (defaultStateMachineInstance) { + fileData.defaultStateMachineName = defaultStateMachineInstance->name(); + } + + // Get default viewmodel for the default artboard + auto defaultViewModelRuntime = riveFile->defaultArtboardViewModel(defaultArtboard); + if (defaultViewModelRuntime) { + fileData.defaultViewModelName = defaultViewModelRuntime->name(); + } + } + std::unordered_set usedArtboardNames; auto artboardCount = riveFile->artboardCount(); @@ -656,6 +723,27 @@ static std::optional processRiveFile(const std::string& riveFilePa std::vector nestedTextValueRuns = getNestedTextValueRunPathsFromArtboard(artboard.get()); + // Extract relationship information for this artboard + bool isDefault = (i == 0); // First artboard is default + uint32_t artboardViewModelId = artboard->viewModelId(); + bool hasViewModel = (artboardViewModelId < fileData.viewmodels.size()); + std::string viewModelName = ""; + if (hasViewModel) { + viewModelName = fileData.viewmodels[artboardViewModelId].name; + } + + // Get default state machine for this artboard + std::string defaultStateMachineName = ""; + bool hasDefaultStateMachine = false; + auto artboardInstance = artboard->instance(); + if (artboardInstance) { + auto defaultStateMachine = artboardInstance->defaultStateMachine(); + if (defaultStateMachine) { + defaultStateMachineName = defaultStateMachine->name(); + hasDefaultStateMachine = true; + } + } + fileData.artboards.push_back({artboardName, artboardPascalCase, artboardCameCase, @@ -664,7 +752,13 @@ static std::optional processRiveFile(const std::string& riveFilePa animations, stateMachines, textValueRuns, - nestedTextValueRuns}); + nestedTextValueRuns, + isDefault, + artboardViewModelId, + viewModelName, + hasViewModel, + defaultStateMachineName, + hasDefaultStateMachine}); } return fileData; @@ -778,6 +872,12 @@ int main(int argc, char* argv[]) riveFileData["riv_snake_case"] = fileData.riveSnakeCase; riveFileData["riv_kebab_case"] = fileData.rivKebabCase; riveFileData["last"] = (fileIndex == riveFileDataList.size() - 1); + + // Add default relationship chain + riveFileData["has_defaults"] = fileData.hasDefaults; + riveFileData["default_artboard_name"] = fileData.defaultArtboardName; + riveFileData["default_state_machine_name"] = fileData.defaultStateMachineName; + riveFileData["default_view_model_name"] = fileData.defaultViewModelName; // Add enums to template data std::vector enums; @@ -831,6 +931,7 @@ int main(int argc, char* argv[]) toKebabCase(viewModel.name); viewmodelData["last"] = (vmIndex == fileData.viewmodels.size() - 1); + viewmodelData["is_first"] = (vmIndex == 0); std::vector properties; for (size_t propIndex = 0; @@ -874,6 +975,18 @@ int main(int argc, char* argv[]) toSnakeCase(property.backingName)); propertyTypeData.set("backing_kebab_case", toKebabCase(property.backingName)); + + // Add default values for properties + if (!property.defaultValue.empty()) { + propertyTypeData.set("default_value", property.defaultValue); + + if (property.type == "enum") { + propertyTypeData.set("enum_default_value", property.defaultValue); + propertyTypeData.set("enum_default_value_camel", + toCamelCase(property.defaultValue)); + } + } + propertyData.set("property_type", propertyTypeData); propertyData["last"] = @@ -920,6 +1033,14 @@ int main(int argc, char* argv[]) artboardData["artboard_kebab_case"] = artboard.artboardKebabCase; artboardData["last"] = (artboardIndex == fileData.artboards.size() - 1); + + // Add relationship information + artboardData["is_default"] = artboard.isDefault; + artboardData["view_model_id"] = static_cast(artboard.viewModelId); + artboardData["view_model_name"] = artboard.viewModelName; + artboardData["has_view_model"] = artboard.hasViewModel; + artboardData["default_state_machine_name"] = artboard.defaultStateMachineName; + artboardData["has_default_state_machine"] = artboard.hasDefaultStateMachine; std::unordered_set usedAnimationNames; std::vector animations; From fe727781f2f23f610952526d91e843b46c644e86 Mon Sep 17 00:00:00 2001 From: Seth Sandler Date: Wed, 1 Oct 2025 23:27:22 -0700 Subject: [PATCH 10/16] fix build with premake5 --- .gitignore | 3 ++- dependencies/bin/premake5 | Bin 0 -> 1484120 bytes 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100755 dependencies/bin/premake5 diff --git a/.gitignore b/.gitignore index f31139a..f61c17a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ examples/generated/ test/output/ # ci -.github/scripts/release/node_modules/ \ No newline at end of file +.github/scripts/release/node_modules/ +out diff --git a/dependencies/bin/premake5 b/dependencies/bin/premake5 new file mode 100755 index 0000000000000000000000000000000000000000..c34d32b4e98de99831fe2f82659487595efe9d3b GIT binary patch literal 1484120 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�fTuWLaPd%5$$ygNrAMh9flbttIL`XYPEV9= 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 z%0D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

-)Z#Le3>hjR3kd){Fh3f?f>0XR-ZLG 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�KoDpSiUt9MD4Z%h_q2dl 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 z ziYa|_J-EdeAAB9spX)}4FB|uU%4^z|<&6%X-?psJm~bKL%kkU#wk_+68t12>_mZbj z6b8>2oyYQ`m9Ns}6>2VHmMvJgG;f$}~>A_s0I&XPZlFMIFvEaSXGzm$60l6&O?4d2hQGlgbOG?1-T9oHw#rU?=UsGPOHx}D zB34Bp+9^WyCuQ-`gw}1%dXXtK3Q(@LTr%rQt>ADG_~~-I&w7o~5}5y+Uod=o`LH~$ z3irEUE~B2*BaCQ8GkIMLk!?D6f6MqkTqhwsJrEVcJ79|$p$FCNK|9B|sX0Ft~m%LuGz<=o9B!Wjnr0ucgR;qxRcT(hV?!iv74`;oY)lxNI z>h1Xxe3I8wqo3*hpjSde1S~8vlio!~oEt=m)83I`enrE683RQL>#t!uMTvIOHqv>y zdrR;qZ-2?5vS4gRo}l<@^p_#MhtU!YAxA6uwq|sawFgw{lm2Y%hj;GQ%(plGgdCi--Txijs zexDLq-Q2`0AVTl?3owV+sl0b>FX}7lhLD;tDTgqTP0US51vdP+@>O^F)H;`5gf}xf zHm!ET)LK`^7o-Bwr_R58%6wPH$9%C1t@m6swSL_ISI0m2W`!;jsj1a8&RoCUX#$}g zL9ca#9rysAx+bpqgXgKq1on{*_M-n3kO`-KU(j1)ZD5}aeLF#+chz^*em-nz#G@a*l1 zu>_2@mJnd>xrM=OTY0^WhAF&U1@}1E8lkaue*wR)f`{GmbK=7a-Pk=|zIcSaPGB9o zr^-T82*geCDq}ooccC1OV-XwAJMMZU{=w`koLo1(|4696r`6h$Id=;4b+W685e$@Qd zYmT`HY?Uz{&@Ztu(Y`Y@!gtqp>6!Pgt%C9pI$3H&CNXYjd#;hy-trF_X!Y{MF`V}6|`pPfdZ+}gjziR4ye{7MQ zM1-z}h<05piamD}a?`9!?u-e0vyQ3AGUbaQS>gs%zQ;B{#nxR?`J$7>f{>UZ&bQvX zUHbKnvdY*(6fR7e!DEzp?f*rY-!f%-DYGhF=I~>bDFVR%({@fWWmXx@VpqG_bvgH3 zWCSbb9>;H4^_g(_dRmNDy{wR%>=gE0j(bfK0EGtkzZprAd@r5EfUn*p;r0ee-ZM#B z(@6*g!bol8n_PqV!A>S2_uy zB>6j`R5VAEppzp>J{o8GJcUrC5JK+~k4uy}5l;i4Ltbv+1exioWoVZ>j)(On5G^JR z)J}GsZUTqdf!eK(ViV}L1GOU^mzlsKJ5Zb6QDFkd+JV~Gj#(yfjvY9j9$;xI?i`(N zJt3XplZ6!CWGazM3~!AUrr|kRZA7D?D-J()o9*@3Dhr?rdE4m^-aDLy+;Y_ymriO&wq&jgCk z4iqcJCZ+i7z`dC=#b*Z!DKaU=X9teW1d7iN9G?jkpB-412^60l=*nm2^60l*p>+tpB*?q6DU6U(?xTk?vK5(X`pUr=z4Gb zenX)R9}-_(L}IUVBj74)M;D{wApf`6B-XW|s=n==FY{kmRb^A%yta3aWPM`&^00m$ zb^i$bi#wnC8pv1bymicR4p+xrw8$How3rV^XenIf9T#(?Ke<%|515s8&L%=Gdi$iE z<=$9xzHp08*UH&Q$#^0`|FdPk$sHCbmfQfg(_Bp&w(I$Xz3YqhmzOP^1EjR5bMI(= z;?BQ~lCQU*_c7<+35waU$?)%OlS-H8VR?7dWH@0yN3O&&JN=chYcKem^z98)I_{kn*mImS1396)V4h9#w86fS>iU^U9aN-2|-9 z6P3-_?C$V+s97c+pl2wi@{QQV$v(OV_#F|}CbT&@$!Pme9(G-`>^0xa)+X1Yh2Iw& z6j?Udv0@6EDy3ZgmAiZVw0APMU+~4Qgl*T3`D64=3|Z!5h&kF1t8zo%#U2uTn?Je> zdCBkg%1go)+sbS?i0&t20~86@4SG^=aHC?N$TRv*8)n2Az30mSEFkZH*&AOe6c1!| zv%}iAc@QYN#p~QbXXkFU^()i+Ni++2$X!?RC$05>2_DwMkzM6BmD8)t#cC(fl(w$%P+Fzr*kT!e}>T5c9|%k^Ld)=(g@@QV|fF!AQCz6M&0!#9!Jp4At?h_H&#P{j)#1-IIDv z#7zItIl8GYOv z4i6IPT*DU-(Ubi335^tb(RZB`>WhcHLIEd!rWS?nq{W>)3IlNwjqM65s94Ky5lb>Z z0{@xk$>vL5zd3~;bNjhs9g%dQVm-ecyUm>lom><1oZ*R9fDL9;Ypl`Jau@@`V!c%8OD0>Jdu7XBE(w+JzGEImiB-Z$9VSpF#^BY9$h}|O#29WxNnD_@@ zHX5}&$VS?jpl#Dh79nqpmn8=CFh>U;m9Yw%RasCGs~m5W1Q@E}MY5_4JxhMLyWouu zk;UT_KB(23Ml$**XzG@K*eQTp)w#MC?TW|*l0O>e zmxf_sS*-wzsi4$aL97h@*7Yz=pR4?_rUFl7`5ZX11gVT+U~TxF`BwErdE*am=Ov;z z5%KJ+nA0abM;G+>(Z;in&LJ@ltD_tv-g4975lNf%#)zw35Erg6jT+{ikrm!pUqOo% zVMe<3JTy9{_mnFo+DG!EOu3=y*=2^xjw)|-y1WsTH;D3#xCm{26=di4$l4RhgBro#z zJLEpoAKg;Z(~^k>cWG)#*`=w(XNz0g#c$-(+JBFnq#aH-HAxITnu3UB7AVN{9^`%$Kl2$gijkKYFPs%E|zVoG8vO*SX+dx;f3bsg;U( z;?x{CF2i6V+tI}mf`}8P6l{K`iP(MfMUjl+3pTm(|zCvZcT}}ISVUAfz&YQ$)MFL+ra+EB8BT&!AITho+pB&6$ z_ea(#*F7Rll(Zt&6ISG|bNDSi;JRB*#@W>zJX1&~d(wDoUg|`x_;E7FzrXtMEy0LwDoOUujYDWSWfZW_p5-$djZJ&;#q_8KN;U zf!fIZ4Z?)$>v4%J-5!1-IW#-?hj#Et zG+erkBAuB3yAeoGj1yUTxTB*}L5Nasa-jOsY2zjDo-Vu)LQmV2o-s?GkT-kaExG}X z4qf7B1bDWWBR1g(9KCya7vU4DL`TfkQA@19RO~<9pc&azn5zk|E|6xVYggTzW73~t zs*i$EKVVrhQ^2#A4tSoKB!Co%{tOR?qg-qiXjT?~85%sL?T$&QL9UJ%QCG*&KaF%@ zXs~3AMNwt6WMm~@yM?}DJYS#KIhxWAhh%uE- z11=fE4ZYCd$dTjOSgpE58bD}hOr8Y4EWt0@!AWEWx;`;Qos2eux;g3f^gq3qW0kgh)r|00iCeA(O_ak9e`MuNk z{%)JpL3i`QC(`l3bTm~}wB6Z45QXIOi|{EPF$?+%&nw2AdruV%=|iqv__*ouH7+~& zOZRY>{EhO`v95Mxvg~M6p=uGXGUcp~uR!wj259==RyA@&)?bnJY0??&m2)G>QOf&8 z-yvo-<%DK?W36OAV*QrvEOQ>8Y$KTMAa3{{i9eB9OGs>$V&ccoCu5qQk^Io2JWy1V zf0Fnii74Oz`a`87&XlA&F=P@9^hTY>5t3YvZ23eyj!+QUvYY2-tarKf!@Q!!2ZtS} z`}7LQQf9ig-#VGLK`GxPl2&mceOixPSt#zmCy89SE1x{bl?SL?`L`sd$~E#6cix47 zo0Nj#|D8WI=P}5$^1Tx#&}i&ml9l^K@sdd*B#+tl-NZ1Mxi>nPyQ0d5W%eiLJ~Rwi z^m;d2G;eIW5d?eV*ED5%VTUQh_%&_{3`mVe-;Epa6??E|cqHX;EWMp}_o04YJXDyc z#`d%&%9x*lk^?+}DAq1wY`w851*)D)U0k$9#+DwOUko*aGifazGdNh_WpKpaDHnNV za11+^pG6C$m_!!8CFj|P{joa>Dq~B>`=Uz`XE^5xXjZq;F;1DQ_yMu+%=b;0tVl7= zu6INc9wG|#VJdmAVMrl0qY^o7FwTIsn!+Q}dVjQeJo+zkX+PxRAakrF1R>=oeQGHU zR0Fi>`ISQ-;0HP2{`02#(QmmU)(V&%USj8g;21pZKE9Iz{Rdc>% zj|HfHKl#7hbr`!5=Mt3=eHeLxNu=+hN+)G{o)v^l$cc4Ud9Iam$&a#zNB24xmB6rZQ_(hzPfNgc0Cme|z=JQwvK&ECHy#Syft;~j## zJluDcSm)>=LU3e%lB$|d5t6^6<6oFT8Ng3?cJfk=12j7}dnNl*l21p-`Ps?oyj-PB zRn_%m51&b&brKF~ySgyX+5st)6A^FJQx?63$B)??w50(d+GfK(7>YhsO^D zht!tE=QNokS)N*{V`4N*gQwD9-L$Yujp-{_gVdPK zHt@V|mZwW*1U$#i(1jWBW!f@;QY)i7QmeZqjTUp8X_2iw)~i1m{HcUJmd7hmRnj3z z(<*7Lr%P&-S-7r1R>DtHt9S4Xlgljl1$5`H$*nr8Vmn zdFQ9cG)lRtDok-wW3+la54#W8-k0;udZ(eX@=sAYnzfHyH@#DY# zTXcl6)5NJn5#YW11OadJFfBlY_#Au4aEP6Sl@f<_c##!7b^2kLVqRWjqh2zJ8aY~E z>E@a*d;e3C=fc8_Bve_iB&;xWnY}AaQf&6C)}P3X8BJk0vx(|g;kTIiMfsyVw$ARU zOc3Gx|2{akr$Y*Rx*8z~9G-ObdAqBPze#s>nsoJH+LzVUA%(W-aP8}NB{D8s_CwZ7 zykVT_>owE~KA6682mF*Imol9b2xTfD4mp7hB)Rrmb9y?NO_X}@KQn*7vVUJ5_kY#D z`~Ekle^1b+uk7DNS^fL?)U5v9Mx96Z??ys<^{*AE*n@b?{sG|@0c$P7y2{j0nt;X_3`7s$&biqFZPyhXG>N360eKKZe%vT5$2I? zrPoTlm83(UW5;*WR5;}5uGBTHIaD-jzuudF1RbUgV~qpTUF}y&D{5Zy$9|#>VhzJs zD`6hFrEoZk1$*piQAuU={WL%7EA1aT0RvXNDZVfKSwfCkr5_WsULXOhdOvbzLzzR%Pf%elqy;ki#h-;i3~ZErLi8;V3aR3Oufz21n<|U2Y$~v71|&R?FV$yR z?~Q(aygXj&dG0^LsJS*gAFX&XIcQubnjLCjjj}wcu24NZ_An2I%P7)$1Jt^sv-Rt; z9K@U}2gx9d!fR~yi-_c2V-aVOxK^I&6cSyrKGHhJ5&E@BBUIp8w_r}IFSLj|46kwF z;k(IEG$Jo?4=qHx?S^VpqPIyW=+)F0>A^FiOPjpK6Wx~dt>>u+>4iM;cg=W5XR^W? zGM&r71!S|>V4G|%%{E@LeT|4O4WKA*-yhTEp-)9Il@#NJL7?-~4O_s&VTA^O*5Bys zxK8Pc=Q-h}Fz0fhqT`vYRDe=MQMGg+X^U}(ieN$HzUVK%2;>B3o zmuq@#AO8WQEArm=aIr7-JTd}#3b5Nhq0Zg%Sa~#9*!u)aCUCAkb%uT&tMUJ$;Ve(x zuJ$(CgQA63EE$J_G+az6!aiS`Ri0GMHn!+OnnEj!>?Tg2iE^P`?jCjx@=pl5gC){c z-;7>e9es6t@P!Cl-sY0cTP<#60pVX$hZLLqt?iNWxdvQ!jGh^JTeRC7yMEZdyJeBd z$52abGRyw{*D!rKh*yyB+EOX92>iyzPnW^-FxKQ3 z(%HENxG(g0jw;p9y}ebbz6}-ir}Mw0ryr&n`|W1f{K|TE#s|FvKMnDGt}r{prEoZ& z>k%njmmfX}cz9!%T0i!Sj6;v8r4K#lH^N_INB?8ipi<|A{>M4Ow<6E-;Bg>|;}R`x zuukSC5VBr~O)(KN&#o8l0;#Uim7H>c$g@fY6A7e8Waz7{FUhXjq&uB-+4_EkNU}%(VTpgAW0?KkXiVbyB-*ODzx!&?5TTWWEK@Y=OQic_;vr1 z9-?tJY9Rq!c6{DD!MT+Nryo{%`~bT>Z}i!{`r}+j)OP1DaD`=ggkKd^J;Jo$`vJb` z@VQ#{4;+y0M_w*-bzLYj0lX*UV?PH))ZDPJboFZT zL*tL~<0^jvGk^ZLb3f-}s3&ak#@B1+xbp)-RBH`|ITd#eeSr{P^lxC-%fI9z)f!*k zw!~81z&iIzFN?SNqa%JpJ>Hn!>^UR+%@KKS!?kkwDnFzb`nn3>^9rk0aD%Yiq?P^{27cPQOS-yQtzVqGkV5 zBbaovV2IF&gIxUuzFUX{lP+Ymv&LKRNl0=Qev|wKlKa@H5cZCbmz9%4m5`=+e8JeI z6a`kzm!G)PCsJoUE{{1YB}n%LvUsNRaDt!4-yHm^B6m$vyEuf5;V@l14UZ#qYtOY` zHO>COI$3);>P;eZ=Su}FQfCMS1?k=gR&u0t?|JDS za^MO_@^tN9ue}-7JU~fw@*DCKch=@fC*>H1`MpOYyZ55BO>>8^tGGj|o-l zH0_w6>sVsV@dO>a$uu}+T}6XI*OQ5)W1|#Zd)C_wzOn;0_`qJ}p z2GP>Nn`Pv_o^Ejc2<_lSME;lgs05ytT9=bNXFhT(G<|6#=KP5M(7V6N5BGhJ^z?3v z1jX9ggt{s#o6h#t_$l&ZO6mSUdwCZHxH|qRR5mgx!UuGH7hjcFv5UUu6YYyH5d>qk zancHO_AHM#y`o(&RkNbqBK;0XzoFCCZH01rgd%4*Wd0J8gb+sdr}4uidEA*t<8^i7 z)VMq8G3#kM^Ce_9%Ul?xXT38JewQ))NP0|qig{V`b5G$*yBJ~x9>73|y*b-p6DvFL zN{of(?6{FM2)CFUm@WU(^BNmI>))r;QfD=VXW&!A$5+GW=03pZ>}hHETqeyr3O?7I zn+2aCBuT^Pfb=NteESQ2Wc5B4e1?$uSnzp~yf%CuGsS#2T@3K~p#+(yga2RP1H@#0 zxSr?|Sz#NW`dx7e^u62j ze^CE_E&r(UYUrMHmcI;rm@N`D^FB{nQtG^u*FkKq$yMb1)_dSfaYY;6CF(V{=!%?k z%$JzWAntPWCAKuYs(;P1o@Q|i? zk__I+vt`5=waCkcYY$0to|O!#0>$@)QJ{I;l!4vQBB^BCWHQE`w`C{y$NyK%4vCJK z{AKn(m9fBqr?`45m?>w6_p&U(REz8q6yGVY%~mS?iI+U;5FzP1a8{R{q#9Qz`r2(!f9B*kLZS!$&S=$Sb$cdF; z&T#sd-J=Od^{5!B!L@~cTz_FDXF}zL({cTUGw7Tn)32@1ARUMgeeoRz2}vm2-jnPW z9oDaS3DB-ePUKXb9peAsoxEOD@ha=VaAMP;ClHzt-8|2;qN$g-8>j8*Z=u)Z2vxD@ z%|Z6Uu_QWOY}7xq<}r8-QtJ)b9hh=d2gcFR)kkyy$i*0ZjkYFFm&3|a7!)v6701Sgz?Ba=A1vOwr9BovBMwL2bKKsx;a#` z(I1BeivQFk`o!A9#FyJk>&TmQoAtA8`C1mK%eCT9tW9SZz6pBK0yrcy^K&+`U z9@91-M%%iLMkr}eolEv?tDz&6(LI($4T>wqelMqIkptJbIywlJ?u45RKLhq%MUhrC zUpr&HO-&-=VeLPhmx$<_XtrpN%XMW~1zvb*kkSYqPN2eB0+fp^v=Iy9t29+@`H zbZ9eapd;CUS?O1k3q8*XnXpHPtwN??qxC(NUcPiVojvbKX2r$SG1jg_Dqev?iT0&3 z7S-m*Oa4O+kq9d}yZ5=YK(AH!$+`A(xS91p=7;Fs^Dt!PUhBT$m^PWQT-F{=eRn?lZFQt3MwyH!9B_2`GVmJpO%oBkh6Y?YQ)D(0-X*b(Vo4- z`ru(RkzF3@x-S0<7o+=mq2VAujs5wg*T>VucvdmjI4T( zB3VYHRMdp~e+Oz#YJc7yUsN)!DDV|`Wl=F#dl0P68Zi3?$6N`GJ6B-7MzFwjpI-uW zI^7QLvz(%_!Hk*>g-eJruK&m8UYgU~>(?AgRrXz&Um4}U0I~Q3<`KZi2GSOYF?Yi5 zV;W9i=9oEYeF3dABb9huptq4R(*>P=7kRp-7Rt9-#`^oZrV3L7nj5$axoFT*UG1}^ zHaT^Q2X-XgWGsTe=KO;+wn+3!J7qB`eKkn8BL{i^2Sw)&sgwEE?b_gwcfW0V|B2Pc zu(GOMH!RxCD+?2kb43ct`{V$~j_XnM6y(`I$k4L?5x%1zk237RI{5Kd{e6%lR-WI_ z6P?;mIzS>vLf-$;^Q)eEPR-OaOzI&eFcr0vsi%Upt3KsJ4Vd4FxqWg+4z6%@)KHl8 z4WKy^Xxpb&gV#l+o0oG$VzS)ErOvd4`l{znoOv!smg0G(~lO|6DdsuIwjYW&5(k- zeh>W^4dLmewDCQq9i-o)nXobWE7D()Nq-IL8FIydbZxyb!SmdBsf9PE+ePMO1?b}=sK0P_t6P@k$L@Ns`IY6(BR*to!Lgkftdn>tz zIFXZa1~(OI$X2gFIklI1g)o|1_v;YO{T(<%uH*!4&W+FG>ZcIS%F_Lnt|>=Ev{IGU z+aOiGukUi0FLW>tS%c8{uFP9LELp|M6&Do@f%X-XBhm@2QDbn*$kw-$+2{#XQL1?kL%F` z!PAL&;y$5ZgAanFP_Rj>cFU)~G@m=;ap(O&7Fl@kUVdCY37Jobv1zAAT?N<++i*A) zn^xq3yu>rj{yy!`K4EdSe^YwY`;?`X2E2q&H^Nh$D{ggdxD$2410D!2;Z4-!X*(b- zeo9(g;d*q7w%AFFuZj(Z=DyvJ#_f7dKK*(5yof{x-rT26?u==ZyYzCq^A!Tqt+r-A z4r9mKixLUr_n$22hO8{e8a8MbeZEjyC|kCj0#V+swp;ioO0`?43j;0OtSzjG=d|#W zbPE-x6HEh#n+A6JV>9yE2o!itOa0j`{S`#XwDf5G2N1_w5&bg)HesMd?JpXJ5&A;r zOl?|utitugy@e04Me;$Ke2^@g-J9Y&N}Wu&@ma{5wWH_yHYY}TB5&t0yKeprNV4~Y z;bRxX>)BAt-w6oQR&>~1Dzh(F50Ti>qxEJZ4f?X!OJ+Hre?`}O!>b#^X0$;x+@OG_ zkv9GGx}JJ_l5H%mw~>>+ zT-?(a1P_(km-hiOLWSd9_f%6OmOo`OLj#{l-r#9_rqFCK&!iL9uZO~+%DyyQE}~`a zb;lrCYT_l0tl6XiHV^&!aEekcqZCncDOsF}xuYirF&``0BXPB?GFCybYMDRrvRR2Hvs*F%F8S5r)W!>Fb3%9{ zRbUX}`4bAyEeqv3OYEizcCPv+#rWbYv?`9+*T`!FF_>_b@LEHtb>Fa6x!g=L!2^uy+04(Lc(8skU6|QG>I~#Y1~>wVPPE@Dxk4mf&OXhE+D@& zMuh!8XxG`mu+pLguO@IjF7H;S5;X=V|NU_qWPN_g;=M^xa;Ye*w=f$UDM|+`T$?pe z-ss<~Yfl!ds@v1}X{OoaENnE7qzMuVP*$MT=p2TeTe0$M{#aj-@dsw6l}A5iN<`ot zc-G?8gcFdeW{_Gzj!iE^V7J2+mz!2OwYl1_k>ScBQuaD`Il)r8>6z3{@wN0W;U>mk zdT0qRSxvCb_a+wtm}IqFfhqH)up2Q!*=`-Cy(>kchKlx+GTmJjJ1}y~%Uf~h3`DBw zp1JN9jxga-Gy?;8*HW?GVEZUCGL~v8Vh6nv%$9lW>Np4e??fC&#GhX+4`L}X`iO^p zMzANNIt`;W43X?z&yk&IJj|iVZ15*#-GMH*Ot?XWqxbG==d2U7c*CeRVPUsBw?5h5 z0iy14DeKeYWU#kwqRDcQ)Q>3G9BJ$QI#E;B{ofRT09>}P=qMFvUEyaEKOo+gznHz` zSvnC>BeOnQC;C?W``EgsC%3fLdU=&;>O69%n?ZJ~-n4@zoFw;a<>p&xSmI?Fg5e1E zqX4RZvGk#bd)Rri|CKRv-Cr-`Blhd*eW!wAEHFvVw)b1|C|%0>1AVc(rj5Hq z8y6m%5PFtw9rihP3c*-ZEDHPEXkn?6$M8kQXvqc1@wS*Kd>jCs{}+ACa&u31X0dfz zfy|t3Xh?k+Z`*b88+JIxr~PC^Fg>Ys}U%K+iGbUGUdV^|RdnFQwPjt!O} zTKS6h?CNyS2$QZ&cBQ-K>X6-M_TYRkdvKNzX$FUv4^oLcaI%UrK<-nN2J&wWkk=U? z|2WYtqyWf4O$D(x%clZPwb)kuO94=>Cj+B?dN@@P#kxVS^Er-#+UZp9^A^r4#l8*9 zQp|Z0kEy3sR62IHauMcpuQ@1O!HWVV;}y{MOgKm9Qtw+2uxP4hvu{gYxJZvu_HF4CK5HYh*s*U*et3x93Ea1(AUtRz zs}*5op>al_P;&4^&Ve@c8;g?QS?n48g{SV@(l318;I?*n(H$GxNRIKPaXXVpze`@A zskCz_?M#SOK@4+FW)rgtR%KPi7Vlli=JFiDa-Q;8(K2Lv#nvOMmT&VsE1Pu{$0u8( zueZI>X70i0xkIwe}NGf}Vjg@l9Ch6gk^Ngvag|{?PEO zu67wzZ|r`fUcWQcUpEac^7@c$7s`_0@u5LW3o*RE#nZ!&qa}L$U+(JR$JyMB%Wvng zUgyUj$!r_?(4EXNOy9M4Vw7YLVSbnQ1)%vW6a9UD#&yoRh4ZvW4L9zA_ZxC$w0zVS z&Z7|XlozHYQ(M@kLp%|)S$me-^6{5h^7M(P&3F7>&VE_Wqrgv&2n;`u zFn~jIjxxHeYbgr^I2q&<65{RZ6y!@>t;8X)Lyx#icY9s_-OQQL3?x1UsI4ws%|?Y2 znf^nBMY{5$erL-&q2z(0d;*z&O`2J1n%O#BGNn2rd-@`}D&R>zf9bp7=Xh5oIh>-B zr+Ffiud(ZOb;vb9UB!3eQBh^FiYi%Hcj(ythVb06ll@@U*kPqi1e7ZYrHKgHc17No zLHtHScBx0Qcd2`IM|EPG?ovOs_k8c{%Q3|%p)>=RO0K3z&yK{BOX}Fa7Gyr7cJpn&PkJ?=A&61diM>N9KF`sYG zrtu_~)vEm(KC{+ES9=)&J!@mgUgpoYOL-HRf|Y;yCyCOl`kEg>ya$rN7Yoziw^-`f zv~i&+eSVVIHTQ_*8g6ny???Pln0uBUN1_`C&RvhdR^g}N+OUoIa~k$@0*-FjwIl7GKziqcb^Q&?V-w`7$j+DaKt#z;-3nH}jG^3jLnIH60IWoJ46s4OTG zl{{|Jm+L|7eRPW#f;eH7^*sv$IqSRE#@D%tmzEs*Dt;Sn3$@WNHl{_;2vVRJ!#P`X zzArveM3SL7{?b2(XNi<>T+W5AbA7!fjwjO4YiKBV0Pw9JKtSS^yZJKueLZ5sN?t!o zPNC~zrxbow^dTVu(fi)S^+#9k5!gn5xR)Pa@j-v|K0QKqZWp z5#RUYTCb9Q^dvG8MqY#gG(9?A$DkLP^D^khE9QXHC}hd`v#Mb*4aV(c26S5uXNhpr z@ZQ3mR~CQbYJXUo37IR8tsf7LWe?)TM-AfHV9yCi5QYEaeukbs^#f6*j!x?iSwO)d zkp(r6#Lw~kWFDAIg|0FW<30Jg%oiA%=VXC{1j%cNJYKNbI(w$-vP69Z0sj*yGkF|W zB}9qhRf9EDaQgR<3*k0bIUhcg?%wnAeAdQ z>c^Kd(XzV5Wp{qa>LX!7t3CiEmGOo1Wd|*WJPuhBqERp6@x?c_Y3UjzAsY3Vcw*tT zvc*Tx?OvE3#LHj^QLUz#8x8uhG+a?7`Ai-c&@BNC-`3cd8jHWca4 zL$Z~#L=Qq!$w3v>&hLq%9IG`QJr|E>`$}D{`27x_yp#E|g#AtYzOI#P<=1%IY%idG zC@i(FTulf+tIW@O^RrHVx>k1bqZy+syG_Inekx19a77*?+zgU-7yiYx_9Z+#Me}mo z!MyNgzW9AoVS1=sC;GUvl7}IpU^r_G{x_ZXflS^$;fu*D?LJ0co;%Ep-)$yu=mt|~ z-|!ijh?Hi_2#S~l&eZbTiAu)3ksOCC%$<(3V2GsIAr1rt-xPVyBFtQPb#*)p+p4rC zTYA`|Po?zLE$9AnWbuk-+~qCZ<%(>_-*yG4`V<~Nl)QK^uc12nVd7~WAxeZU<5F^T zOXr79UR_>w{b|w7or(UdW(+GFK5@9K{ccGWpPsjB%BlX+PlHRm@u_{}wd3}kt*5gO z_7(3Uco=T zZw*H8B-e(>9yWzA;n-r>xO>sqkqv=Gf6q1HG}w5gMlumX+>xMaat7Z}IMb#hb?fZI6B$d3yja z8x3$pzC+ZwR}w$XYSWM;5_)+=D`h1xFA1rj`pHtgR;`kJ%R2HHeUEm*E|d>E5T2H` zP+{#_h~sp! zyQK*|ApL&NcomQ`Jw$=`8TQz>3#2`<_%Qj2qi6(l4iCu) zq6bOQ@yF{ZQ_6d~CzXf^v&%d9_nfAF+Jh&7tn!|EPs>|nmv?JVd6RpU_lMl_e%w>u z(5&)qk@8~S);mJ6xZW7DyYA@e`adCi*-Z`P7A@KdHloUISjXf6us;0|Z@h9<8n3ok z#Zs(37ACXio1{;J>aBlj*NW_}$!nQ*skOc8KLo>!Oc z7!#AT*O70%RalQIhncteSuL2WEhzaZ#miv*1K4P)a1b7Mz38!C&m}(IDCJ&b*~T)N zP_8L^p!w_kc|3G0^Zgxb9fd%qCaGXR0%54O4rATDp9oXjU@jACiKQPceN2=!P9}|C zI|Vu~GS#w>E`CY&nakIu3M5fABr81%^~~2xbD_}5sG8!(C$FNsdppcfF!w4zLK7vb zCkx-mf!?ZgzR*SFdS4=SSK|Jb2m`;+(H!!w95?Ji4Ol2@&(;YM01ZBm*aWX{rFzyc zTOWG|AWC1CQr$^IW`FvQ3=SrZuo*4paO7rWX}2r#s*IknGGV=OEUaPte}_R+{PD*{ zB%Lhk#gFS=G*(r>5OlLT(wa4{i0DsRzdOK)3qKi_GGlX!_T-t~|E=u9N-e{|MiW2M%>2z4d0tfZQSZ(rW*5q^)*A395M9`G7 zj-#jiia=j@2SNFd1a06Qnq}rm3;#lZ*w!+;k(~8R1eE>r+BQGOYS(t~w3bgq3;^bA z#PU|;K;JutE0W0?88111I2`<$3ZTq-Xg>=l(YGxGDuZc`st1P~l&9Ti9U=s5y&|w&FAg55DEzvWBHPHGWMha_G#Z?+H^DpL8+Hl(%Nc!`{3@sdwVb zK1X@vq@_E{TpM2VY}{Po6a|v*;FErC@B3p53q-lF_%p9-(|)pcHVopJ_rfQz6AsSo z3ja^r!NIPMF6Lro>F2KYU&w-}_r4RN@IrQqSV0j7{l#y)+7}3#M-Dn&caJ2;xK3rW zD+v^-WW1!9O|*R;1-@NdC_73~FX*(6SL86K6TY~=Fpr$5Tes{^xTMI~bo4B)EASS- z0HXodbBLjDD`i$V_f^Z}DEUx+T;+QyFc&(B2$+y=rk3n4J?OgUNebZE2E38q;6(+! z5ABP-24Tx>SV*zc)gjAZZo`%kk}lZpX^kY(o=&Eu-t#NFzh~OTjytN@;e^nkXX@;O z`J;RE*gu4(aWzUHBC@CLy}H~fvP(ebCxO58WmjZBbHKIX#I`NnZHETB?)ft#hy6Kj zKmXag|22Q!YuwaU+3zbvAcF7jY3uCv#;?osrv8kM%)ljY@iufq&OxY>QX47tLsvvL z0j>>$+BSE$9i-HD;{EX(D0P>2|1Op(KPLvVrw}Hh*L5G%)uyDzUzx`Kf{m}0%;>R_Gc9y&# zA+nP6g2TqQxHg_jyh}S}yYQF9gEUcwiuaT^vWUPAyoxND7r;Y9ar=c&N1dfVx2yWt zI(?=ICvY2opxvAk2JTS$HK~n4TNW6+PrCXGvXARbyiA-w`ij4FSDEVpPIGoK0)za;Jba2FA~cv^ zadmJM2_(+^7`lWOma84n9p6h(A9DVkuy|G9wkvMnHuc_eSNSUy#oV)KD=l&Tp!2CA zR8hReANMeId}wnm#Y%jyWICkOr(}d3^kV~ zTn}vagT=+Km2DX7jid%+hX9Qpp>nAcTpb0Z0}X;lDqNd_sbqi8rmDbkT9v9i! zCvtFfcyeX@8&Hf-T#>gANwHRC@owxR^i`8S+-Vt%8N1{|Wql1LebGNAh6p{5{*g{62IAca?l}_c$nhPDzli^TlV9K- zE6o_N9#-C?EU{JP?O; zaOC*yuEY$Ipu2ak9Ad~j5V9$bKP&vH)%CA*S;|h1(85Z#Dkd(E&a^Zo(Fj^cRl-oC-V7lPh{H%zPuNG``?79 zahAA;jnvt$yWiH*XKzd}a{xrilYf@l-m;$kz_fh>MfhSNOb+sJWP!BXdgUX#(HGNb zFP1#wL+{ZgsB%3ZjD_#DIH0BQm~CCmVv9gN`0jY%8q&zW3n2PmU+Da_AuZ%;XtP+>bR5ySB36VrRe- zfdl1!5!Viklp5k$2-`(l-KA#)IhF|(iQecpkoXBEnxO{r>)61yAAp+i}Z zB0TvQ#?H0DRsZsz==kOjkB|2QDOkb#wK19EC6B#Ge|5wCBdkkCw+i@F-W#8WJbQ0& z4hOP*V2a}-;-o|=Ykl$rE*G{-8S)@Rw0jbrb1WT8B{Nc+_Y8=>5P9d$fm;ygzOC1F z-iI8OQ?$s7Sw{D_ydaf?Z_{a%BtrI{>`tT|@iVXd6mU$;ei?l~j1QmL=_n)F=Cjl{D^YSwDPLI;3%bc?GW=trcbM`m*f%s=Pqg zm=`m|oxU2etf(8eP=M)^rXa(WUgn2s>pLxdibsVwexCaoRIPoF7>I)yuw- z%_18~vstvP;XlxFJOjJJWjQOs6Im<4U^#d*YIG~O#a;5@3o@DiMOnI66v^ggchPT= zgM18MXKt@%_cAr&y5Jy3YQ!9MZ&3Fpb#GR8zPbz4tyOoSx^?Q_qHcq_jp{b5+oEnr z-6iU_s(ZV-cc{BU-8OaaR<~Wi$ICpQ*b}-CwHvYjuC4?s|29r|uur-JtG9b)QoA8Fe?Q+o|prb+@UzUELk( zzM$@l>b|6Ix4N&W`>MLT)ZMM_>*~I#?myJsqwYKE{!`ue)wR_9Ox@4b-KXvWbq}fg zg}O)7b%bP;`>0!}?s@7Kse8V<7pgm2-LdLkr0yl^UaIbRbuU+UqPkb8Tc+-n>XxfJ zRoyCeXR3Rxy4R^YN8KCLy-D4h)t#^I0(EQEU8ruIy0@s?pl+kO&FZ$O8&Y?Px~=No zuI?S`u28p4-MiIoS9hhltJM9by7#JkpSr8neL&p@)qP0aHR^s>-S4aWLv`1x`-r+f zQTJ!+u2c7y>i$~Y->AD@-QTJE2X!~7yHVYz)O|+XP3m^4yG7k?>RuX_ksYt@5()V)&Oa&@PxTcz$yb+1+TI(6r$dxN?+se7}!^VMCTZmqft)vZ(a7IhocZB(~e z-4=C2>Ml{YRo&awy+hp<>b9wSx4P}>u2grGy5CgyUUlzNceT0?sQaM052?FG-S4XV zeRY4R?pk#pQTHe6{!HC<>i$yQU#t5Yb=Rx=J9Yn{?gn)?s{53>de-A;A4sJl(w z?dtAO_XTxdRQDxyyVZR~-B;D!rS5KZUsv}{b^oF69(CVQ_n+#%udaog{%dXtEUvya zFuJCtJ``xFuXfCvx2VRku)ZM>bktUdsvW^lOMT-a$KvWxO`W64q#ola89jFN*ij1t zq3Vkr^JY|C>zgrsmZQEg7^n%i1RQmN>e@g{(9zt|w5TNz3_8NWKuhz|TK#RTUL0^V zR|kVjn_6leq58#vrf?|zyEy0w1{;>pl7-9anu4L8ujW9YMG9)5v5y4`| zAjgQ{bW1{Fg4K(teMHcGqX`erb>A2Spv@uojT8`^J9m(0Np*cg^@4_gomEN>Tt3L{ z9%WkZb_ZI4o%TiG?H(z88Yv0t-R6&01X|qmC(u$|6RKYla4&AE4Y;cpO0daoGHT75 zwZSdGcDq{ww}tCl0`7+T1ufMr%iJR+c%+ooK8ROQEs4dNqtLGqX5diq#7)uqd`eGDqU8nso7mu-B_z5U_(g~ z*zt_uF%r1RkOi08`bI`6TFZ!v>XOlw;H= z$4GJlrl4Y0wL2vJ!aP@#n+(e`xDj*%Ml;?$k)VCJA*4|T2^+%I6dnqm(6sOhW@U)kpfj<^pmWoLTLLv9Xf>JEWWfd%+3cMKXh zdh}?=tOjPypn*&c$B5d?9gM!4&my8ips~)RARon!1=Y0~Fu2bhQEMhuqhoO(RM%9? zEVZYcOenBOk_Q6~3r(`gM`x#N&T62gm(u{5pEAE3f!2B`0!UZg07R6K)Hl-e z`kWbQ_o@lpUDyB)Yhk9R=`e?a3*2f3hJjkgg7CtH%pw`u2F5(#D5JI(hro;>v45&- z9X8M#0*#A8bs5Bv=@AMnfdBV-wKG4KJ!&6>S?x>MjW{}j(;JRw&e|;mk+svdCy3z=pYN@Yrhn6)5 zf{w)?Uwt#dGGDH%47zIrA=B0Lj9y$HRGNOdySlk~v`y|tEWA*2XnhddCH1v|pqmEI zn>A&ouj<-)<-VC|+N%g912Y}$57*Qwa=9V2wUC;ckdWVn;YKKxO(+>e9bA?Y@TsOQ z+<0qGf{8lPS2(C?+Gt0E&T3gSbO|D3dZaFNFM`N3ICOUbBUV=}lQRu}pv`&~gbXRA zavZfFxS?Whd$7UHrW%tD+HmEJIq8m3osDl*p6R|Rm%GD_fWm;!Z6=>|fc!G?1;Cyv zpJLgdG@Mv1((^93w4RkyQfA;{z>t+B5HhrU1k=>4Di=ycbc`vbn7@#D$GX!qk6XYk znayBPP7Et>6U3}n6w9Q9r8Bun69P(EnKeaL=1dZs+|Y|Uf%IaQbC$c}EXpECNE@_Q z+Ss0+EfuapS}n8MQPb=`XGHKEb+RB-106TWlTNs}`j(~^8&MsL>se#cA1#3;^|By2 zz)M}{#6M=%vS28%c#PjHZ)2t~TV@4Xmekh-f_B_>W*r;d+)xiwQCVH%o-qqAwij* zpo#|flKX59`@;+R=Y~`^-NJ;oqo=@@u~=#9reLe1b^N9CF1^Gt z25v`rIhdVu;8Mr@_v zHBI4$T3t66K)Grdi6C@Vqn7HN1$}`_t;5skW`f-c{2J}a16_+NZlj{ob9KeM>ndi>f@OE)vQQU|9eWWh)J5amS20}fszA%Fu=Kj_gz5rr zoB8LrNmvizT}){`6^N1U;N@e+EP`5u7mS87jIoh2{X0sQmN84~Z>{giKYOO%;hj-g z;g~(EVkV5yRG+`XvBEJ=KIchE(`jcIESA$#GP9uJt<7N%RAFSFnuK)&^>427*oDmYRTLo=wgi^J)VPESgL@W(7+s zYrx{>kc?6Ff?!hvyt?>X0u8Jo%+2~>Cis>nYO4*vQGmnx!7`Qe%_7yrE+;1pF03&~ zVFAa|^pHDh>X@v!aQg57to1Dc!Kxr1&C8U=&#Mn!ddULVqWYjDrA0ODv-n|wtZ5Dh z#VeaF`Mtg#WM3Mb8CV1nWO)`^*gK45X|Z!F=n+3PGVb<@y_$ioOYcf*ithl2hm5% zRzpG;R0jiN<|&y~J|{QAz#unFcR0C0GBCLzO~Ksn`lj4(s8d6)ButY)ZX&bo?3FAS zSPb&zCKQsA8*)pqsqyHLr7iHWy)!pdH!cdpuJo!$Xk%^(3+n?7wYfoQ+L{{*AKi3o zpjZ8{Qw!@CfjYTqmCI^9Mj+IvcT3HlI5)p+^Luv{t|2#(0c36%l9gM7&1~v&gBP_l zg?qsgq9(LFH=XHDZkSBCV}-Yb*-_>o92`L}@aPWh7#L`yeQx%;Ktr!KvY5=%4HgSx zHary1#?&^28nXaz0vFZPWJ)z5i-WyGf{ndHY6M++=Y#E7+AFN4DYzI8B@=4KDLAI4 zAyC~oW}g0JA~RF7zOmlGxwQtljZRr1DVop(soVSel6kqKnUz$Qs>L>fWCv#ts?^m0 z6P{aNCN%BQTGJn6(w<&br-OUqvuj!;a>U$fOpv--LDu)Y8g`w6H#uQK`;HElf(8GM zN*@l@)3;?uh37&{Bo3oOfnaD%#-}+lUt=V49*bn4MG(v;7MWZcTN?m7T5MF$jS`Gy zdvUBXTf&X$nZ6_#3fI;*IIqEP0jx$8Wx1c{g(u-iyMw^`b9?vU3`onX(iKo z@iB@&8fV5`c614)M+IGEs@4g4Q7)d^Vdh6O=7i)<=8MLdNbn$cI%gt|p3s@7qo#Bw zCU;V^Z)<6)ugz^{I?(>rhNi=o1Z`h>e7_<#*wC1ncgM(UX7N|#wbN%1ucdlvZUZHN z|C-(Q&+E0yvsY=XUkE|cM9SR3{R_Tn!09)RopABk#SZcyW}ydtK#`2-r+o~_qjWDD zJi5ksqTbITP=!h4f{KA`()*%AH%nmtFkUBqaNt9qO@i5Y-MOYbjCaL9bMuw7-l%h3 zj>#J00wK5iwt-Di`YU8=W&<6&a(a=ZN>1wDW9(8dQ8G1HwxQ&$43f>SURUG4oBGW^ zb8})+ZBs8b0#UP*xz#Yk(Nhqz*av&6gnPM-@W}%nUe*cyJ%4n#+ChF?J!GY$1=df`U z@z>NO@r>jT_LWugVpa0jt5T|)NU)@Y?W%y8L}h~-3^SUbJq3E&J3})I-<+iP?iI$P zhE?YajjFCLP=#pV$+%UVoL%f)-xSa!(8x2!WCy- zUhDWMf|QXl<96zGfC&Q$i=ud?1q`kgK?Jp;AflxKk?{gL^cLtUK|rS{775K7BbI>? zc$tyW=2CVYIWU;Y)RE*srhJ!<3lr}Xs%eO}&rp9HS|;eYwf)c-ieqD}T2-&8sg(-f3}jeey+du(6F?eu?vjTdMWWc;W+3`p#fjO*iP}JgXyfWVh<}h?SxYMep($F6hMHHk}fP-nl_->v8`X5HN*7uG=ZhI-)s$L`yC~PAcPk_JQLM? zmnx~OclUQFE_aIVI(>H{V2kJK&0%p=yeX<3n>m9V&$JisYmfBBHt2R=iH^O--l)GK z1O>#CSzs}<$6FtoUdvp(&0JA=^;S7GPoN#u$@zWIL58peWrc*VRxqu!$VJZr$Cm_tb3=MoUL=`k*IbCGi5 zTniT^H&!4cG96-K##_g=WV)C5i~0@r9Zzn`jl*9Jzm1qqM=h z?Qgkp1o6fr#SL8MlVz5g5tTW+{Q`XW!Z(tNMm6d=c_FFYs(J8(TF5zuE2t%w#oN&o zfAdEy+M%SsEh0<))#*i$EktiwFAvJLSt6Zc!hVw!fPa6rVCZ`T&;f zlH-fHCwWBG4*7OetxvulX6jg`s@C1brF-{3`}_}I{IO_WKy2rVuYQ{8K&LK?nM@9{ z7vBtI6`X6#(%}P)W~V1kIA)9IL8qpR=@&)&?GG1Q#gpyt*9%R{du^(y=f0y z8=J+q>-$f4zF)D2{gsDLcl3n^%$j@lz!x4okAER)YyDZuv-zl4Sz9aio<1y|Jl&+p zwPI)cS+Tb9eX*gRhq7)yL;!#I13!C@H~F_)Jl%RyJlxveFZ6G79rNz?*6PZB@h?wy ziuHdjHubUCU*FreAKEQeS2j0`{gsVPd)TE*yITd4{O0!dj{bshJH@_4d&`(oD7v{p zHLIK3drx=Q3!S^%{kB;DVSjf;4{Tk>Y)oPyJH3+=v)6}zqga331=)w>I=~-eeiLU8 z4=&q29D#kFIkxwP3nIAOnA0a1nf-hqrXbSwDP#pxHGUDY#`Z6YPbD267pK^C>Bl>0 z-~|iy9qXicqxX0E!DNbU?{MYl;qhu`t^4TZx2KOc{(Aldcc0z8>;0Rj-@keG_J?;r z{`}{e|NNiVkJne%->(0#{%-xp?ap?0`|A%shM@_!4@)nzN@CiC z0D{2nBJNOWn5|a-q-C6Fu>fpE`wo7v|0+%kFT1F!RmWlD=Ay?AY3tMGA*2Z0%H+n9 zq>apGRCeFVBwzEy%3N)j41=8ElPMl=7S03zz|0Ce-(R*PMSX5esuQsn+0Qh15efKS zQ5J%3P^-9uUt?hUrd&z6t(7}I?zyl~3u2iD#aH@6f4{Dbt?}2J^Go3wDe{LHV1!3G zZ~{A`4jF;PkF8cjGY4Wii_aE)DIQ!dOj2H0i$Oo>y|q~_4Oz_HYcy%qSwg;6*_}$J zV)g-W1P;B6*<7+{ns6im5TQ!XwiCy*bUg7G2++UENnk@fgU(W4%pu|eCGT_MokQA{ z>ss(&#o!$tPj7us7w0+TmMujc3?GZJ14uzvm|3w#unee<%ut^e}7Pw#xwZa$xB(E{2+ zJa)y8NVJ8wg{2D4@cC>wU$d-FSsEm8R;%1EwZo47{g52Q5o zPO0v7oVDvG$SZWlvDY%D@kpH<3M)Y*Jy5laW%8hK@Dh9`jm8lXo+Wq^~CYYh$#MEVkB zopwoyA(9_U)ma`>e`^M3z1CTID%F5u8@}|#6C^t8r}u@PLgDOGLjXyM_&tlv=A@A5 zO_6M!M{5nr8^?tm}gj#kzJF|=aY5=QEI%lzM^PwK%) z$z8Kr9ohi!CDvs%f%;6ni?Yg&R2YqQ|7}bF=93RUVT-m}OnY_O-1;Xcrp-c+d@1z< ztgNgT!`SDRmyrd_3X-l9&C|t=gVUISSjVZ5ZgT`Z=fBa@fB3KY`KSM?*y;yA_e2|AtJ532YETPn z{`eFI%B7Tn`#Pem*p+0b{V=QaO`ZrtWU-1?SE-d6QqmrZ(`af}mMPPR7c%~G(oDMX zVs&>lJvlQnT$5bPjalxf+xc`#@knal#J8Gt8j0laVph9l9FHnwt9JWbI$l^GLGfo) zF46oGC`JF+I!=*d9VYpm=`fGFROgn(4qn#h*+A$<3zO(dSnbGh-;9Fm+mBfGj{b=O zWC&1_Dx}CFwv^@I@c45%4bT@>*8n4ubf!MGaMPE%Ww?v(nuu2a z;!LOBY`O*4bchooVkd<7D zdke7!BTZBk!+68bp923b6{W)k;@{cajGy!|<~FqVa(+W(FK3TBj7LRdd>w~c!3oSI zLCkXnp|zCdJ@pVnyG}58ig$BRZl#HK=(JRf-bK`sq1Kp!#z2wjK&qJ?DbXHhrE`iE z;m{@hv&F^kV3NP7V^Z-t=;~Fc&ZMsipvG7^IE7yh(=1)F?u4p+HR!72-savuXgbiJsvDXp7!bW`PtMbjeTj3tb-yMNd+QT5=irr zO8&O7-T~ljr|;B;j;UNh`r7!ayw#}|NMCN)ab~_@$6}#L9MFKRxhhI+f)e_ly;onRXF8mGv40IcEa#snJ5^``78cu! z#pA^m$2xxa5xWH#&_~VHebcy>Z=@U|q;o=J(Su(e{SGm^U`dZlVySn5{`jQ9B~);1 zntWf5IQoDgX;vE2t@YLY#wBv3e10V2>pIj6xH!3V_W6;PV zf1EnhnX|X=8mZYscvLyebPzeERf@y#DVd%k9ppDHrt}hnue|$+^9NgyNoRCN+Z+3k z!IA~mID9Goh`}=KTqI`1M>>y`>s4Z~8O~CHVLjh^0&e5+{{D_O21Xn8(iyN%+bbjH zkfs?C(s)R;%tHVQ=t292Y$=NKHT+yLrE<*`@Y~*sc$50 za+PU(sX>R0=uJwoDQX3_S<^xWC_(Xf#p!_kHlA*Mx3&Fj>o-%J%7Qw89qIqQ#!QdT z`>Q*j>*s!<3ievjWLkp|KiRlWmln$}wn;T=pIC~CwG4D>w7v$Z=Mnrbx(~qa_cF6Xay>cg>Amo( zxn?cEEGnXa+8M6o^yXTpkA}N^*!e5R%aMN1F#BJ7YGZ)e#lv7DZ4GyI>xB^Sah1UL(TwbRuOkpip!3r<{ zU0TftRs~NWMKF-H_05$Z$E5CUleo9>?as!|x+MouV>l{I@^|a&J1d(T->*w6euBRW zjilxh35?uo>hH+Dv9LbtZH;LH%J>q(h=g9Eh2uc=kk$2t3XG|F;TZJ0yoP>vv%Iggdb z`kJbt6APy|mkXR-ZD8ra12$(Js?G)Dlm~knT5PWk=-+fMjiSLWHs|I;qIYh?=)Gob zOdc^KMo0jJyx(Az@xl6ltZ32_LBlSA$Yiy!)Jw9rEZ24_d?D%-kHx<}-B{(6YS8t> z^XUT{5|qA*m&{F>Ac|_7rif|z8TEz)5&4w8D>QM&m>|@kBPhF4X#U5iuwbFd`^)QlbsfyH!$w6ufzd(| zGKG)z+w3G7Yx+8p8%AO0$JY9f>kn}}*mGxz#LO^Z&b1kx57#qgsx zZ^35Tv+2vZEIXI4@AFgXY1%;Yq-tT%iXCs}Zc}HUWCkAn8`?Xo&D(OP!kp8^im+B% zH|Fu)L2&I~{8lYTAF%nOzDlKJ}MsC2^ZQ$ zn!@&P)aFgj542FAGKEXVrA$j&_$0#y9mB5D+?6VhZXK(rg|IgLB^YXTS6mOTp<*W&3hDvwr?)Kh%|G7&cm z1WJW(P=?eihL)k4!G9A4gOrj5F+Av3F?iL(J0N$%I0nU>l0&^)Up%8NkfcSzO|m6l zXM9BnTr?;?c}%U_)Ot|t?>=2G9<6NdttSXLrvh?%Mb5bxAT-=J#zP7mXV||$EmJXT z`n~^JYcZ0U!2^qhBSeq7X4v*nah)>%^YY$M#5NWySZ3B{LZuj;ezvl^MHr0bv`;`1 zOnDs@n=(sP7kk}ngfLAAg5JgP*^SVQ(N?@Wy^JWScmiM^tLV4Im{tagIh9I~H+UiA zwk%eJYl?9FOaDLX_)}75q= z`~M2|=@$+CwzP2 z)~~NzZA3DUC`p)2*YWt*Zd9=b3y~G@$I9huXMXM!cm2P`V&&=nV=Pn~I4G_c=bg`5 z+Wat3ExpZAB5j4tBV3=I`y=%5xa*I{mFJ6N|Aq@UJ3#B^s+UT-0t=CK{%`$D{uEZK zfG}bTv5E@?L~u2HxVyTJ(a&YXCLOfp6y<4w_PrXTbaT%F_nx#YMv$wB>t-r)EMK5?mfwJiN93V{vh& z@Y;tlu*h^NipoOgV$h1BxZryU043%yA z-3D2}T4@yE)NxHQYE&HB_gFOId$W#sUW@~1|FU1GXv)ISwB^{AO=fJ@4|z4WxnjF| zC~?y~>C7i^A5RI~1MoVC9AN_4UE_L=u=NmY%#IJ>KcWhESJ6(u5@Zj@{U3K~@2i_D zpe0ti*!!*2#+u9G$uM556f67}@Y&zr1T;73FeuX*#Mc#lYp4IGkCd{wj9Rd^XjivZ zp13kZTo+~dg>yi`EQ=_SKTE@_sG>F-3sM+~NnLxey|wwH;4FBu16Da-8QrD##zy3_ zRtjQU`CFP=+{iLwdjat1fGR;8Wr z4LXdZX|D~ri+4Lsak39)SWR^ayJ+_>5J}=s+f2ERucDov*hmVK=I*1_#veZa;`6ye zJdyYx;jk=I=GiWot!?eOeXD4f8*h?9px9POT=dPQpjh7tggD`vxk}J2;`ScwuJ3Jc zqNXw%u?)&)!Zziz>A=;^SYWxIN=1MOBjd)->(A3}(}r0wwN5Q>>OBB^NdTv;bK)E% zMwj89RC5+Bm!M)vHkwex7UnU0oM>Q< zUERn1sVrlzw@P8RD&!@NJXoDi%Xz6zh0T!dDf5k=6@{oXAzyagv+$j=(6A6(@0CmL zoni^aj}}#DuN-QzJabblF8x7amt{}`JwOfhUDy%b?6f)TfXGlekiD@3@9dt|isxG} zS@(_nnf_No@Ie$lz%|Qd%%GXU7e6Sl_=Bseao;e$Dv+xe$q65aTZojhXxWsTqPB-#*!=xuYnOD3nl@2l*`a-*khL3I zVz+y)Eh2;@8=}XG7_^DZYR8Odka`J*-Gfh&F#vhqD!X_0e(nuG6GHAP*dsU-f3+}x z){2?YTI-=y8h)?kip1r{rwgA_l=W1s;LgI@VRMTI74U`Ogi4M03L543}=sxmc zx$#}Md)Zo%DxVf@Xo-m}P33BP@AdIA?B`nmaqiAC<{;X||3y1kvCZhwFtLE>xxyHLXg?|e)Dvjlx6Oy9SRP;m=k%U{c{%9bboyzu zU^6quI#~|KyJg9_lC9qr%Tjq2TXG*G&z1SXC!#A(#LhAVUb4|X*<@|Z415%*BCq8k zsuKWi?-n^lwGCNtZH0YDXLD#k-67yX9tWnsZo(F)q$G z_LvCVR@n~0F&o|zsvzH_)eRJ31evfWErWJr#jTl+W|Z+u2iS7t&6`N7l`>tJg{i*i za%d2NnH=5R8Ad3Biox#N3XWgScvlC)1zkJE5d>Lmu#kWAha*GF7mG>9_5YeyS z9J-=Si{VgHc3bAO4CF~tScR^LIOTdgwrCJju z31^f#$U}qTPsLLQVP#H=a#O?n*8)QXu{ES3B&8CNRm|72O&e&#T3m#TvK|OzUC}Jq zBk{ME56^!tOmbL$u{`E4p?WOPK3Q9!&FlNxLUbqqW2|!)9ANeU3OUQNF9YmlNva0h zEld#Jh!_dcpJeS-F{V_~=V+0fhU!514y*$h>U-$5+zG7)fSpqq&wYkV*ghHxH3d*hjKSo(KLylJUoNZrA9~wn_#!&C@b#QznGW4@xsEG z;%y5nfygRlTX>F1E&Ozg?P7~l7dtCITC|2SnZ(HzKdA5;oTXR8Lh1^uB^eb{zv1jU zQXTIuX8{fW&k9sfKybH%TW-CzNNPd@1yz4g{9dANVG~o8Ha9ewl>u9a zXF;?~xiuiKNhc++^p&Mcy)^{I-FGXg$vY+Q6nEd=m5W{1jIs>q=4~>qqdqt1QMoci z_gf)uVUs8IoTHug&=Dyo5M;)G9PD%lkh&8X(eF>XR_%<515b#f{%TOFBt+81B!=(!hsUzBW{C66o2( z!d2?MCDsmQV6d8vAQcZWL> zR4ZY6)ZB!wNafEpC-mkKX+jscxZ zA5Mz)UoT(A>t8PkQpCG{FF|I{q^I`ab$aFL4qKz^}n~@4LGq9OnFP!(@GUWVU%C*)*wcuxGE17k654T>6JvAn$ zNO<*ss7<7M$A(u-^DHxbyr;tZK>|vJz!$o>VPdjv5@qL^+w&Hi#9>iBT^*&t{6SSI zR5Lfh{Otxqa;IhYj#+HTl!?D?75Vn@#=m^G`DAN*=U;dC_Md+L?1vx!>_<~xp7#Fw z>g@cYfB853M{ZufdHe3?(x!4}gdr-^!rnp~znN<3`ZQL{Pe1)sO#ejioSCJi;x{vQ z*NUl`yDR08&C2Ic1ZF8#-UD%N=L!UKe089|Z1{&2-$fKX#??X(Y}rC+`hy2|C*(Ho zYBDGty%@C(u#R5Z4$XNEuT`93_2O&`kg(2pg_)Y>WcZc}7vSGAt7(zt+0K+;pz*rmN2K)J?M zv?(d#bUx2YFIX8HOv33V2lD6AOEF^Z8;8$j?rQ$YD+5D9A$qs7zO{zuO)_VO)eQ-z zO3vBf5z~z1UKXYOndoyheh<>+vgqZE}igSu@Q8pfs z&!wWI^Ylc(c5E{twoJm3j-Heys+)J&q0n)EXwx@mAK$o_sWlJbOR9Kzh)ReQ&kJ3} zh|19kwn;pjogyEA&9eFGGPcaix&4@JP;N6EK245Mz&3nwCBeiA33f(J*p(c?V;&Ug z**4MN8q;m2Q+G8VZ*d*VxL|g`1Ht5xavAQL71Y=g+B9u^>3s<%vu`IOdj$&W->rGK zGw1Zatj=Ews*4fK~P30PrYPH(R4f!g&> z12GX0sIw@tr=iktQItaDn-{DGHZ<}+MJ zXYQYMURn0`%-yrj6Z^m~_-)z0M(<&*a~&4t(bPzYSAJiZyMAOEmpA;wjS>G~NqteRj46y$$@ zTyCh^AE5knM>hq)HgV_x&7N}k)@V&!^sR{~cYrbFaDJZOtTPv>pc zGA8dGUcOs5$1O7+v6!GHKK4c)JfukU<*N5uTedCU!7Obx7#i}mk zAuND$i|m_93iDDJvjp~??^gFdSzMCC1|Ht+VrOy5%c>=7A0rdmPDC^L>N#1&9e)nlhc5)9orkE{|EJTEsAGJRen~&DBWz zVs%(4sHDxs7ntI8WB>@|wu1S6a6_q6L-QV087=+LKG&gKnUX!Zh4e4BExO5sNvRIN zT3ubKf!>_zVHcX3wFpoVljrlk!|n8Ib_ih$Oq~q_1)`SFvZK?uG4Rd2{!tlt4c<5u3Gq+3$8*7F6ETFtXmn{`mrM8XjN1UM> zOs;OZL2j+8OxP-UQ(aY!6^wy7DQG~+Qt5)NHCxLX{tOecilbr%WcmYOW9s#R3}qXw z)3c?+EkkI9;?8bTwax{j9UN?1 z^*{f4AJxidVn8x^$qL&EcP#bHc{jI?=wzrL3**jZe6zl=ZdsYO0;Y zEI|}vP+FOUlIssCz0%GP?TsUW$|D}4eoj~1L7AtzwJ(Vomo~zYR&OchQ+!#`$+q;( zwMcdov)r&(2+P!I0OT~CgBzUU8$(%nbcjSsyd^v8vt<69SE80ZFU8k>#_xQEuM5Cu&w51**o zM0;$kO-zDwqrFVE$ZTV-OL?4vQ5h&I0me?)S~Zvn@sdO)(lt|%>{{p|D&+ zVG^>1UbQ_1tFRnImyyeifY%a@3z}TyDPG!ye}F(;_0jWGcInAww(zd`;LHrKS}W!g zwDRl`824-6jay=v(l&7_*$sh{`%qzzs#WTsoQ}J}4wtOeEwv<0r#$6o9EZD=RO<+~ zaB@|KuH`bUG#^DrP-o&a4ued1PT*n$2;1~(-O6)6TnJDG5w)_c`OFsg8Ep{A~mlua(^gf$xFlNrmIxe?AcIh3l!YGuyC$X~`8 z7}jmxR?5k>wdxLFBLLONSeDNCYa#oveQ?#LIz3ETAf6xXbnoxgEVyK&l^i#%5!+?h zmyB-7{#rr{x&jEeYk?c#OCiwjp%+;*kf+1XM#q96GLwEHIvdE~V%p3~$_{Q)X;9Nr%dNf;jtJ>G2zrJ5Pww+0M36HZ$H$jtk=Cee=&1#1z%SPt z+jr2a>U>G*H#4$!@p0FU6>iuwv_dr3mQ@Mh$=<2ReL|Xqw+Sw3Gca<6Y|q5HzqODw zZyb;-M)i#*ehBI@>jxAePRmoEX4-Cl@V>p_=X?&7E=o$XjWS z0-r)1P3;itaSJ!&Rf$uTlVr^}MmHM0V+lpgLu0N!a-0f%>LyK z;nt2#+|Lf!zGN}ni%OIkY@IFD{e6=&rKR1QkR~pE$WJ(z^R&fk2Zz#@Zb`d0HZ6f7 zFaL7%3i*pNhX_nEHo)2bokhQtzWPKam zBj725WK%k>z*_eL-MA(kuF@T}%IdsX#R_TZKhNh=Br!G%d>))z6s3+H!v#X|2OulJ zc4Qt`@a96qMC7hq&T(`VB^igcg9qiX<19GdleRZ9f(r~v*VIONrOo9;4BibD&=&`sl6hR z2f6i9e!j-1z!a_cBLP5ajB4YwC>m`urk5S4dOL)jo!}p`yvy1y7X~0wZ%aM}VmPfQ z;qF`WombH>KII0-Ru7d<)G7}>tShP3XYszl)aC_~? zLTYb71(+>HXKAW*<6?NTeP9#OeUHToVS-rY&;;rgVb?57t4#2Mo!QlSmM;S*9Md?I ztWWBK3A6se0<_vGP4P$MH|<9Bseng3+Pq^LhV-z1t)*F|b zSIKA6zuxK>;x|J+Lg5CL5_&2Kk-KtMj5^-Ky!KxAxR#8&-__QEoLT}CtnJYum!v}D z9I2(p0r0bGHTGc)=x(Wpu=otyma9d6!?{5m9U+xW{~k+IT&wm0Y?T&~UMM1`cgW*w z4e{)FjN%8(9ECRpb+wr)U|p*$e?|-69amP@d0E_wN1IRg9v5-1+}`%;cYE$%_+yc{ zUs#;C@67rVSAW=rBZcMtOqL?|;(*;?myz?KI8~y)&UluZUW|kjYBGmAK8y$*dUf};x14jsU1*8ZoTpUD-WIf94J8DU1C^i5 zu(eWm5=$jxcmk)wEKp)19;p-A`E48?#gIu#UC7bGZ2ocu?edU-B?R$J%R2hDOs6=> zX-5gdYB=2Mv{KV3@}wrbyH8gXdEkTa?rtCnvqQ0AJaE6xI!5LZC5*&FCH{}u(6Lk7 zw%3)(1dG}k>3{MbZa?Ec4ZZ=Horfd2CrX$)qgNL%fOHX=kW>L>~r~P;#`Zo`Q0aMtRxBkxAqL znXlw{7chTh?@DR&)oGmsu`DE7R3QZBY#C%IraevTKX%gyTTv+7hO26@JuM{t9)ukA zks>vugD*PkB*T#52JN13#WjL7QOJ^ZmdwGuB>u}qg`*q7q{5<0fn~Rd#;p%YyN!W~ z9G#Z@X=EI;>*(6y>?}4eEl;Orq7Gvclcm0rR6!!gF5H=Vn6(1cY^hmH0HEw9C(#w( zMXb@AE24Bf+TU3=KaD8nOF=m+^&9tTzDJhbqY{X^MWK{c3p@Ljj#Ql_Ip;rYYPlVD z->4~qf7=Trrg4YhQ*;x0G4lQUao?Ag{-9C0K+tV`Ux zJyjWu#JU`(d^SDCAg)0y77Z6~Y=nG+0U{pzqvj70!sR&aY&wo_F4{s~Ik@0{1e++; z+;BN$sjD9DUyUX}*bN#qXPwLXATRi@I*pOQL`SR9W9&dr?mU^`-3Euq%qC`}RgpsN z`36YWY(|-696eqwRL;I|9@e~90u7q168xJv_!9a6LVL0g-~@GYGM6f+8g$ba3zECo zAz*vFded5J`(N^)Nsm-D5izqP(6>kT7?hE^t# zhFxBVq$O&U8&FBV@X<}*`HrYZ&LgR}hU+$wv9h(JqIBU%_W2QPw&`Bn-Ely$8`;l7 zuVL{I+=TC%{tC?$|Ifr|gm4mmH%>a6$M?v|1erZX`Ak0Nd(!n~)Mwq9%Ot_7Lea$O zTAqd0=2g{jzky_C(mHhzt^%sGYHhydtiZiwZjJ&r$(=mFL0Z~Uw3!P-swL7I5YH*7 zrFA8olK$1w*+~4LMah3!zI?33a_$6X`Uykrdo}~sWT~sJAfC93l2TYcvrkIV>DJwf zZd9Ay-kyRCN*Fd%O2Vz}?-VVHqa!USln0Vh0qb$wRU3kYPrkBQrilJJ-z{Y_z7D^u4|KE ztQEi(aQwPZoQ}roUiWX}uG~yVdeVF-!LuZzsFT{#zmQE6%m#WsuW}&sP+FO;C3x>M z4UnEhv_+*Xa+@sVX>YN`@R9bz#MYF{PP?FjOR%?;UImZ1_I`b>*o%wGhWUntVa7pf zoJ@yBqoI061GMZwoRVxq`iA^AP*0jyK_-FFF$bKT*1Z=mij`gkhi8GNqK?U?+Q@5b z+>N_c`;3@i?Mbn~8L?DFUPeT@;ttMycO10A16b( zc4)YOSZ)b{y}LVhsg!}Ef$RI3Zfm{nVGgzXR59NS`mC9aaC-7HTy8qbA1gsa^S3zB zl{dW9sBb*x(NHPoUKWnuehM6lb67ue_Y6O27znV9`@mnbe;T9!#?Y|vie(FkcJ}Or zaY@WV8U~~+!LpZ@9K(6!Vu&p@4g)g}zJKb@xnL0rsVMgz8{-$ev-aP-+(>Rp*oMVGT)nioXVv_(Vp(T%(xeh)OaN28Yezq9NZ3mFUF=Al^hg7li#ap_=o|(y z5{`&}t*eXfnkf4DXP@2s474kyJJlF5q4bFOB>vX0ME4Isz{5Q$N!#K~ZjO$)n@w;P znRe5_N_e{F{-r4@!*+O>)C!YAVKr*;uvtN;Jq}2-EC6o6+1Pt%Z52ov5Y@#leXI|| zi$vF`T`3~K|6q~v9^^Qjwg^ctvQ{88zO32e@|=6FA)~QQ&}&x zPnEibq;VJB&|a&X0=pOeo0q5W$*9n^kumS|;h9x89E!_3glz>_;G<}m@Jz^z*i(d9 zLMQ_hdme49Z?5gR=@Aj@>67(?N4wikDnU1;N#!WMkHXo0E<~^sfvU3UcLiM{!HGEiOoW$b_e9vxP6u z>evqMy*eb!A7m(-Q$rD?gj94#=Z>PFL21m_E!LZoB2^V{aDAYX&a(%$NZ z{Ww}*yupq`n|9-mus|(K#5O>HeNtU8Ov51z+uUzvY+SW#GDc&SA>7A=vLbRc2vzaE zLe93kCsY4or1);P<^8MNu#sobmy^y;YT;Nczp`)H`%)kgH6y%ckS2w3=c9abIFCA> zIaQ6d$}-~s*|dviC+5Jgr?b8hi)&?T%~qGsFLQ~Z-jcx)p}%`c6KcVpA8`C|AbHb$Ud<+C}>bm$2JFB`xx~BK*@ZPhDN>%9V@$fsL@(+CK1$A)g{vgbAa2@f!a0s%Ko; z%%Jh$fybAc8AKtAI^^Yvbe0~{lTy>O4J2BCn~l8Kz~h^E%fV--h5z+G_YdQ*|EcY7 z)>h&PBtDtnUUdhI9PbEW@K!s#GT2;ON~IIdCAu3|cAqv%Q9Y5fmm2;jC0Q!ogD z0l#UwboS3q-x&`9#AsJM6i?cyzl2p02?-U+plJJneE;L5pIFI~g9^y+#XGb?1BGDz zQ}^wmj0bHDHkr8i=9IVr-!W>Q0NN%*?ksw(-O5}h+m@hfRzO*i*giKd#7hy;U_bc)RCj!zFFP|?Bub_R_l20R>Ua<*ZC`gsc5sDc%tibQ;3*~>pg;Ls&v#S9UP1;tE4 zEFeYf@KTS)&dnN4F-c%Tl42_YIkJ*L-pT@SaRbP`)!7JK&JH1bdv3{2Ws;WBZS=`g zXdv?QWaS5q8V-dMOZ%~hNvm#ZS13NAul(ko;$yN(8dING?Ij@#{hFycP^-AAgubEm z*Wp{?xQ_P8EgGc_6h?Ok==#fND;xVlTCpY&{Z>W6!`^1rcks^*rsi@V3gqg2Wvnf@ znGo>A34#$$v0|^UoJnV6;y>ZD{TRhF3iL^2(owY;g5H5p#oG(~AdM^rS~+r!{^kbm z|fq%+pmQ;Q~7p#p=k44w7=o^n__|Yg*N}!qdn_|x5jU# z{&`{flW%_er(b@3{^Fi-Gs_urou{=}2-WZJ^h zF-}8)*kN>xbE{9#eCfm^F z+wKnhaQ$1Z8r^yNa1#|1C-vP&m_S|pM_8kg6s_?CMtAUVW%WBUco-f~!~a(_3%evU zC`hyZ;!bd|e8`#dRIMqSkuk86N}o}4*OEV9A}qA~{rc`6$1_boqJG5t0hEq?O|Apz zUZvSGW-s+NmC{|TDY`@W&!)bRBt2(hx>NWr3#mXmAi~haoDpMo8Gii8X%sa4xRnF> zw!U|-8)7Wq8%p6=`?6M(31H9mbm5V<9FJsao~Uw+-c9ah7OHq)teE!1+`^ZrNzpK; zt9H`gg2LvoitZzIjcxp$6zfHWv};Fl^GW4n>}`;3RA3_Sxr%Dh6lw`Ymy4?36sFRH z-x3gs!{B!p=8o9Tp6*4HOR}@yuEwbr9fE%v2vN^L4%Cct8DLHjBNPh?^pYk~0d3iv zQd!IcXbS{Kk4<)R#v7OLAT8i~E5w5rKn>GB)@8oc?T!SwBj+(^uZ1F-uo~#Qj=-lz zY~5QMi3>oYlDp8)-K+lC4$=|z7q?6~Ze#A@0M>!VqgQT|llLNl?(L|Y58RNVsX{^& z6_TMtrdgOFpz(2lNN}hIYopmcM%i+0oOMD7G8P!>p{qfdXX70eNCMPkL^zs=yUQTN zciKJzXJ4OZtZ~7P=~U2rYpJRNRB1JkzWI<{cKcb9h)Sk-Qz;^<3ZPu?>(Vcr1&nvx zQA{=~cZf=4>)S%gB6@4JCuLv%Qc4~e(zo_m3(9(`yX&ke`|OQ|hhsHJ?&tR{1UN-1 z{9V@vP&vX?4j1TnHHDAQB5m#$`|CgK7Y{d}Yn$79>xH^rSf49!RQG9!I4?2$Skt~7 zTsc&Qdo%!*(cUV)r?IuY)q1qCwX%6@J{h#|9B92e~7N~S5(VU^B#8$1%Uu#2( zK%alZMZ93ypCG_AJVv#DNhu$ zGMXe4SYky9Qp8DDo0F<-*w3L6f(tH|e+5hBZE^RlT{+1vtt;*d{ab7=wZFK}En9c* z@_U~<5jumzk+1jkwWXO>+;82RP?q|P=f$FX>|i~l^5SUm^Lwv{3#-ZQ zaju@&7Na@tjpSKcxPM{ zi+2ke#&f^5!)BS`RT;v4RR+jEthzV+Do4odbl(*C4VzK=+Juekp1rE9Pieakb;SWf_P|dSdHuCs(e=$8Q73LPT1=El|-7CWP zXOO~_JTI%OTXQasIpA~-34Z5;n zur9Vi_Cki7v-+t2uvA?2V{}X8`9l#=fVgQX_g)EK6g~5K8UFr9g?a8Bul8XK37UR! zt>G!ChG>KUMcn9vFoYI z&%&ONzn&r@)x4OqKisGYIc{G1pTGH^m+|rD=zzd9yqsEw)20%5PTx)2Q~$aApa0|^ z{_p?ee|_+8|MtJ}?|G*OG$GM_Cuj+sWdMJB9 ztq-frVfybuV|sNucbOY+5d{1{QjX8?Ev=+(Z*k-2`pV8ug9@j$d{~AnmzR|+N-HZ^ zy>q9M#x}eg$twOyne;6fnEoT_J1A+TF$jLH|(_-Rf1p z*D2FCw)di}rT6;WZ<)Zpxv};1he)L?M+k4;mZ?uxR=4*enbh;cH7?smRhrnMFF7EB ziGvH8aot0eC2BJ_HJm^tm+dfRtSHM!(YYxi!J1k?bw1BkzL53pV#-9`<}{ifsVfm& zt)a&3bfeua+t#ZY5dwTB6G(&J%-b3Fm1sD%q^|vNh93ABl8i#`W5f;o&?6x^4 z`}0uFuO{WZ9?40Stb>U=p;=hqYJbdU}A;4dk6g7yQHBH}*s)J*wAgE?;O zZKKaVgOE1;`+Q@%!TJ&$=ccMS7R5j^2d%wp1=&o1a}_`eiR}BbX>_E%KW$Eb{a`u} zL%^o!%dU4O)v^rN-@M1l2F=FTFkHd)mZw|yD;2??%zIg z41XEwfg{4?N{lEtw1w_z-U2P`HLrS2Ov02P2{C0OBtUh=$GqtBB1(k8ymy{K1lTEw zNi;RY)2fbpIL^vTXNh_Ierxy69#p61H1m(#;#GO%6k>LXMZ;vfHJje8w&;6w`T4v z$1c?)VnH2ZFgv>;jFNY~+Q6J|YO%gB=P^{GOX;?_SX}J6%w&InxT5f&O>gYxLQ+iG z81>L|%ln|gRWMG(qgwVPlSR}u#n|X^1A-P^nlj&-&6oemAWFz_r^e<-LjiL_w4FM} ziX)5&NM*3okP!RF-hI`W*1)uN2vy55S-5qEBhgD`aSHVPhb}b!%fCy{UAwIYq>c8i z!{8nxvr*8T1HOXNbOrpcb+^99_j)HyOotu2Tfyn&_qr_z`~TWRgw30Y+VbGSMxsx0=zW;MM{yg@mA zGofXzm41|SpStq_kTV9-7UK|Wscxo3gPWUH;?r{jFnWL~1J{F;)xX<>SCG&;$tgf4 zWjrqUT7?!4P+=rc$)MAWy`2r5<4VnG?g+7^K-g+weyzlOVvZt{?i47NL=^alsDAB^mgDF1?aIWOwDg|K(2`ji!&KD=rS@%HF+O< zPM(lyhQ2*89x9VnRmwF7wV9gK0VB!vyz%xPxQ_#-Dyu;f2g-?%)O9$22N)}ugYNaD zc|Ld<*l73d4NX~29YQ;})FW=3t`@H%QY8Cw|A2aHb6eZ(?2KmOCj=kB+UXwMywv_| zz_%QC5Ur;7&Zdowd$!7^6eOGN)v$=3Dogu~uF8;1w;IA+I)BdW5uWe&5gmZQxqJ*?BZlhZ_KOs zU~qLTr;AIfv#;r-7Q6pA;uoubM5qfMWbowhuYIC;4xaSb-1)n6h@Z6nUU5v_4!W&e zbRH^11S1PMWZ6zlHmCnWXYb6-w7=o+r}=NQ-J1IyaE=jL)V!v*V*>K5j~N(fQj3gk z0gB_pORU*vvhCs~a(0p{(#!HoNfpz7nK=VSQ2<};ZtVFZb#c^}O$CjHV&O5cva%p} zu%|h3UgEdOO2M$yDM~b#BrK|Al31jO+jga=h1=WLbvn-Y=)kX%g+Q~xP_nfvI)bwm z72y&M9pJqilR^MX-hOHPYBC%5%nmrjN1>2^bAZUkU|DQjYKVUH)hpdEI;YCDH3e7a z94r+BHj~UO>)^Vz2sQQAY2;30QCl9q^FEHmxJimHKXS{YuiNs|gGzF1xDv)61&(m- zePvM9)a&0Z-J@dxExJ8+Dl~Yx4`>GKbCKwQ7KZ^AUV^iV0bh$6$)-01Jm$dXXk2}p{LSQlOplIr|Y+ihV=z=3?!gb+U8g|evPY;Vegb5sIX4&TB4zH9bP@1CHF41ixaFv65% znh=7CiN)8#>e-#*seo3E=SB}g0n27>MqfR#K0I$6@xbW~zVKGewJrzquhopV0yfcr zQ0uiQgJ&BNC#-gjGukY*bwlIDHm=h>V@9k`<#=Dwqp}kL8}&rlp1-nzRtKrigWC`n6rd4l?3Z*2*tRy zNn)ZewW4UZlwz}Q%wV4Xk?FUL&J9vZqm9|rjNnm=&SIqiIa1$-n}s>$>~+Rk_mOeKA=D7Wxd%FBb}}uP#fmL#R^@u zVu~E{%dd&{Srw*&`@|pfHYVB}bu10lu{0UCfAL1W?WM-AF&?R@#;%3PpEH((b~4`e zLNf;3F+SLFS?n7pEE2t1pnwseOkHb(*}=JQ`!+?*NS|I`;o!$ zC!t2wNdE%=fOeZ$#foOmk@4 z7x_|8t@=85H$>OOuYK2j_we2K+Ic556uaa<(vB}a8@e|VvlK+!5m)B6F$1@(w!V5} z*0aH;CoU^*@TLn*6`7vcGDTZK)`ls(_fWLSJ7~FGZ16|123gtb6e7_X+d-p%38&V0 zB1^t}EV;6LQg(=3wW~uNn6zrj0ntT`C`cCH$0L%!z!r-HXGKlcur3&2y>rz8#uv#i zA&h)N!OYBx3?H36w_GohOkzr?=t#*ORYy14c%_!a*QKE(Q{xcI`a}&l>X`;(y+AR1 zF<~r~$-F8tHuT;uDn;pn3=E-4d_EI3&OwgvhQE^WAyV<*ooqVG^Wt_I1i z#n&WJN=Bj@l}`)DSJ!(aLOOz29Y9GXKLiCah+SS2u|M+@lF)dKbu|uc&A?waPR08PyLZ-CYS#*<3*Iy>uXlvA4t1-Bvn}Lf1HMDgS&1fgB$CQE5CHfL*Jej() z90ytuX{PnAvG_os@&_Upb>ds=l?u!^UeySIzKsJVm)l__9}CNWS5UqhD_9xu9TEsO zHP%gv45y#9&p}JH*SaX=BlltCntVpYQ{+!T@O7R8+X-BYKb_(m8MO$JwL&>3&r>pb zNY)O7cY_d?5E(w|c6^h_S@TdxJ(|E8l+D*y{%S_0sH5yLgeMWE*bGaZqwzWE6|WMb zcUs7mZ`MdsYW?zSg_8LQOAOO?D;&mG zX3r|D=XmZpUf8I`b9ptlNhFaY!|A=N>l#h34%^FytLZ}DGk{)-GHS{)L7``}vl_49 z=&3$W@hlx+xf?(&&{`g(F(qg;#giG+?iuVLNVegCK+Wl&u2Gl3)zi|eXdp!ISEGpk zO1*k+DF0&Cny=Mcd4ZvPWf~sL3JIJVNr)2xrh0+dCVb2s^}3WaY4y?50GqMF={d^< z)l~{Gwc{!$MjcL`s>hHjrKBuy{@CE53+39n_@K8ff85X zN&)C@t77`AluKP1?Z#0bZ{EX;sDcJ=1-jJO4)esU)jK?EER)anWZ0CnEe!}*jUtev z_et-{nFp~_{^?xIL`^rM^1@0|6450K#6r{PU37eJ&K?|`U!(Cnhhs?VC^b>?dlYFT z5hXS+_0UP8aUIsH(Y9tm9YbNYJ-!FA%wi3XwjFSrR2;O2V-h_`-LG!|zS8P47=ErC z&JYzzL__v&+o&@WQc~7Y6^u2P5VonZnQB`_&-EKxH1e9%XEKXdiW7$wspb{64L3ac zpZO^-Fm4R4ICB1rs9L3t*BeZtZfq%5c^OSt5gZ!z+&k__2`?Z zfH4Nv7Q>O4SmE_p?s_%FJIbA^G9-gAp`$Ay@Y+P_W}Qh1H9SqcF+B;mPDaRdX#h?D z<_!8_9m}X;EKf~C!jk@X=p06n(>7tTf#iBRcGA3L35F?2?eZ+)QGbw^Q4v+A=h7y@ z=a@?VrZDW9%FAWm+@3Q#ojlp>NQznh*b-Z)?@|enfLvA;W!0#4jG!U3>W5)cue^1u zN#vUJR4i9!{VQ{%UXh;W$$MQHd~SxGR6eh#*2^Vrsca`44>PYpjw8ifh67H@pw}`{ zc&;yI?lXJgbQ|`_EWLtPvlo~am}Ggw=G8NMSDoY}4;~FFFXGg+#}Vvby{or>S!sM> zY~ysK2f14`AoHlTiLK38>gd>Inm_4l#qP#;hGP>kzC%|WohUnVe7Yz&M@?DqKR#W` zpO@xA54vODz`Er++EK&g*79VkMZ<&elpLLsDoAdf5AW>om?sSxhX0A& zOo|wPtVhPk<_v?mNjk@zrQERcCrUX>=IuTZ?Qq&sqiA_=tk8?#^(yGz9H}JKlB2-r z4GstA=8hU>w6u~m?s1U%r7_(eOeecQeRUJw@nfqxwyL1u2I%45v|2hjVbLxzq1kO* zieCTCR9OK1dbLqXKw;7EQ_f<#+V%7uoEsE}(r)P?<*0jl_`27>!7zcQ@c6Xx#%}{r zv>J}*5GQ~;DQpdo4Dj;uqlb75Ih$@DbI#EIzJ2R|ImQ;>&+VZ{g5X*oTdlnhfJYS= zV@EIqutXva{*xyBeBy+wwptfItiH(=Qk!DMu(mz|Ax{l}r|~BMeH!o_hxEj%fap(} z$ss&0CuC@-Wx~)RDiemGT~Db)Zd^w#oCrar@pl)6%+kfg>6&imBB50qMqylMUYTkB z18dZZ?;C&_jQ!=v0pEyMX@3X(+pq&}cM_N6S;4r4!SH}|| zLU`JbtBC>=syaOzd}LiJF}AX+uGl!SmYA0Hh`&?!jUMWZLq1|*IAKcqT;Ou9o)?cr z!+gB9tR_6UN|YKyE<)LwHzW0iqP!=@lE<;zB=xdcCl-B_D<|<2ugOGM>7A9?KUH|a z%=q{|7)4;Z+S6^~mZ~e(@3e1~u9xjk=g2~OyFHD&Wi5AoO~8J{A>}G3R1fL8&iIpX1|mbO`(a zRhrMrfK{$61W1FXrN?LuLF@yqq4-X^5(-BB9NRc2ikev(ywdQ}bX8I%HL5I&dP^FH zvxm8M3lV;B);SpT4{+$RlOZPuT0sdZOcjJ51g?isSgH(0lw3CD(I+klZ+Ca@Q$1dV z_@JapQkwf9PJaTV5X`bn;#q3vW>hEVYg8tL6VD`vJev}5&Kh=S0>jBlPg7a*7{xwu ze0J06&J6CbI4L-$J-gl~@*TW9>mQ{W)Vf7&GM+S;Yp+j00L12ND~Jv7T(*X+g5(WX zQvgH;=MV#qF7n%2cO}utoV;e`Ywk=8s%Z$kfB+FWl#73X07|y^p;>2<96<7Qs}&*m z4zG?+4@7WSD4tO-0u-ae{l%ioH}jG2kRO%D0YGg;cWzGatn5FYo|6cVCy4qwT!Y6; zm{^`8^t&s&KXQZhP(34E=^S3+Xii%$fsgcL?Z?fvgUQv6c70NIXS$KjSSAHYNzR0q=w-Rt9pvrc=^C+PA8p$igVY^TbFVmQ%eRc|zc z5oMVqYcxNxQK3StL&d(T69~5aLCG!QA|OzzybZkqc_PvN_+&+q33KEJ=PY;C0`2m+wd#Gq2iL>N90 z7G<#tNXn1(rKEvd{h4&KILs%z2Z87viKDZ)-&%9kbp$HBZ@D@B9%Qsg07^j?O2mNH zIO*l^M7wjQg8>$`{nz)ew`hd!zy#7^DuCOw@_InMZkUl!GxZ@&k}tI}m2}=|%DoDM$5~2W@ zQ2~dP5Rpl)vj!A0 zKdNg!t_J+5)uDp)&;9_Z+2z?pxb(@K=o`&hk(}puTYr4>S+OZ2PAR z!rA<3W?%<7y}CStN;&KA!M6w5%N~6AW$NHSW>mSsrIpoW0ppJ(qJj$pW(=T}%^j6f zuXg-%n#4PFTV#sIv3)OrKHG+pr3pNIqv6unbeTbfPLydRPdG?H1?K5865QBc%YgJT z9p}u!$8`Mg4F!gKY;Ag{bGl62C7Y}R6P0re2jAiqR+)yn1eUqr9-^7A4X!*10RVvQ zy(6si`97b-;v}5NQ1t~4(-sG2$cLf4lN8V1sWj8hbvMhF{ywbj5w&9M#M8k%oVkp) zae(vvh?~o*gSIbKB-N;;?E5WH@`dvE!-$*6&UCJ8m@3$Jt;RT-nr6e8gv3&T--ysc zGu&{A7v@7rWS}nI_XcbLWK9zk!hO}|!*Nn>(&HGXEJ4vB6X&F=cAb1)rNfXlFEU4ACARr6_)8lMR7} z#Zuc7jHh8)x>&lqy}G`)x4nCy{eft2tNTxP*Mp|f2U`zbR|M9p2qg4@bPk>qS)Ahn z)7|6Ke&ctKxuI$mT&-4G z+gLm3jb$TFMI{Yd;n3`)?{?Udbz5r=-OH)Bm$K#JuH2D{tUcXV(>~a4w=2 z^Vf<-CwbtBZ}#y~#Gqm7r}WW|LR4OitDF6lD>})Y$H(rxDEgDfm`X6f+*dzZs*PL+ zjs~F$^nM*rq*HS`~>&d znxl*7z96gu)qkDNW6w>wpMI*{T+q)G;z}KyQhEbZdyrNcmQ`3`)I9=HI(U?dYDqQE z2?j7cMigY_0DZSLg<5<>?Vbjm8%jDgW-cY_QW2_mX2-!j0VoM8g;*J%D$>M10HzW@ zRe9=K2HHnJEf2LEegM$eF<&J%2OkJK&5ut^rD{JzBxs6EhbZGG@H6ytcHd@2f%Gp8 zF2kK~iN~}P%tQY6Ilnx}s;FD`KV^wz$;|RD`6PEm4nd0*mq`lP{vLueBg!d>80eQ^E?N*$|PkF_1&5^G*A|jO8 zlY`lH3paxlmP}bnU1OeDYD%1i_p^^6z{v&1YIpOcvCBo%RZgFr|k%xKhdx zSIArICZn^2K#AP||dq)Pj!5?VX$qH)%OKi3v@kT!zO&}mbPp17LI`xp6I|?abd`XU0fO+~H)oxEVdmk*J5%t$B@hJ% zs7G8Vju?eAA3N31kd4^Kh)0J7Tp&yiiCXunu>IH(Rc1TWi=p{DcOs+d(_?-1^rdul z}>Am%*A)G?u?R39tb=-6UZ)_|2T44FJtd6K;Qh94vNGTIq)_NWLw zR&HW%%+oPBh%kE}(4D}MjCcuRg8X<=1`aDxI0Fqw_ zVhYT8%1y8iqMy^p9S?Fhv>CY4YTkmEOe%TVXkDGWx3nO9OAYU@;Fi9>zXu(NI+sR` zAN$pLqjh`xCVG!AY)Q$!DP?40X2wC;(^{9eLd&j$9N*aa>-Y847V9nJe9uf>_ixZ^ zk8j-5Y^W2kBtGA=;?c=JRG-Ofi`KenMB#D(3a_aCB$ye3TsZARuQyT*n^ot&+8iby|}G2CK;i*U%OVsHZOsm^`8P{H5Lc73PW&^)mO5x&fki z)s4e-Wy}Y!^;$6#qY`N&BfiRCO&^#w!=4w%EAez{Pg(!Uxd=3Qo~9l<@Sj_iw~ssW zsHaxYWE0;eQtc>4ID_Ni?v#hK<}c%@fsF=v%0Tad0Bw{yj~GOZS}Zk9J?}pCRmR$T zo@K5SoQ`48_$TTPT(&2p+2C_IN0Q;B?XX6oP0v}Ai|PeRRZW^-Vd*eNuMo7IEl=Wq z;B|?iIi9JoDzJ8zuFTdXmLZBkMYVqNZr#4E6NBi5`Gg{H%6McQ63isuzh}v%Yyz70 zZ;T&VFOt&crlQtynIb8nR|e9fWcR7^BZ_F0a^~qw?PkB^)UNvoghn@w%g*^{wJklm zWoEpIa&oL}<=h_{bj{E3XS{jsyG~kQ=1CF5)lWIEaL+OU;khc;6u3@;IHtozXL@c7 z&^1qC!XK`6A-I*{??3&Nj~`}`#DjcS!jpIib+gD`A}*jvh~i$m0^=D}(c**OG9A_- zN_)pdFz&Ic{Hv*^qiqgAYF`|g;RySuv~)%?O2n>Wx(kpW#Rah`pFjW0%nQ?Bd^)3e zl|vo$6;L4u$eGeheH1;w<>EGiV9MGmMHquagHYWD_Eh~C#^x?3LeL+Wt-+1B)(~Y5 zZf<%Y55imu?~(*eB{(MQsV1%KgSl3vWn($31tS%RnT&1}T4>O>C`L z8~&~`liJXYYt>%qJ=zF2N4n*l0uSf?BN^wtdpHYmAzRs)zu(qa*pgMmx)<*hnI6+v z9T?oRad_3U&RW^@UhQ7Jgl_z*4o&amP7D^0_53M;GS)(R_cHgERJdBA&J@-?UW6A} z{;FYvT@H|#8skuY@x#e+;!>WXU{DTkTOT*RND;!5+(CxBvPDS;KGoP=Y*h1X47ix)j=@*=FX9`p_au+ zfu15*ey+y8CB=1gEvp{Y-2`E&&ZP`jf!v=&xvUM-t`B$PYNQtq;phNRwjP+8efm=- zg2N&7a;Qg<+c2Y!9Yx{w*->k>*W7c+OdjkWx2Lx?WR97eV>aXH0SpKgKM zng-O<);HO)2G5sZfJee2nmugre9;9Nwg=CtA|NgVNdA>+{y@LBI9kHnZ|tA9bR!Ph@LL`1yuQ&{@*_1A2|uJHlohwslNmVxxJsz#mxO)ULidi_myem zWgG57w?m0NADi)m@SVGt8F1!4sL8BS2sT{;J|})%Z#q=Rt+ydE>TusL>H3xnlvk%* zba0hIS^t`dm7l?@*K^n*x+SE|BX(RJKI(PPV2&hDno))md?K^{ypXMcX3x2H=_gMC z6L=v~E$=S6n5z!4r6j<*^?@UQWourAbz6i_vmS-?TG~Q9hqu9mMT6WP=;M8!YseP{ zl_eNOelfRrEtpH+FLFZay9dnFDvLI>kOSO0P*R)us6e*oCjwrNk>bWXm>gqZ)47 z_S#hJ1Nsm~Wx+B*$flTn(TM=D&0qR#w#fj|C+TDKEWMgK$cy`AI?hI8DOb%q$0xr= z;zp;`!bgd)MTA=!6$xSM9F)bg4FD5N>8QMd(-#5JZ2dv?>Yrf=^h!6!5Z8=qf0^oE zs3QzLp?4s&55U^5_0+qf+I~$ZWJkMQwxR3{+s~a|_4{}!5J2|2cX-BO1s&mW1i-_J zUd#j41gk0kG~6+-FUks&wcvUK2Q&dSbOo-Xh>e&WCl~D)V?ZrlZJe~|-Ow0>`n9o^ z2%qYS^#$7-;ohzG%Ga^ARx+ijqZ3|gv_J`iND~CDn;v&&s4s7O5xuX{N|%qL6`O7$ zl_q>4P89-|mDB5(5`j2nm#XvOi@7!Iv%P$TyVEa*FvM z27ztqnk3U=*K5@xv=OO&kENz*P5&6VmQNM^B6|fPDd|B!$z8!(&*&(rqa2RZRXjG} zmT;PoDY}!^n(xMV-kfV`REV}dop(C{!zw}6xXnMX2EQuBhWV!RLzqmdyW)Thzg4^H zF*@x-E6o7WG=MPj9?jgGua=~$UU!u~!q(?}d5&#KQ(tXuX^Jf&Xm?6?On_A7ZO3S9 zWxLjVdapYDYyKZE$9**a)KUc&q`(X#o{>b~nJRmpm&#pr%wpu#)@{cWopGiPS%fGL zCdt2}sm!INwWDj-+@=XA*Rx&>1Sze$sv%^@;oQLSI%R4& ze288*od^CcC}F%dIygge&4=tY9W&)^u;BafTk%N3)2)&8Bw?xS?HFm#Oqd z3Q)vO1JU47FCw7#uuG<3tO3pri+?x^4Pt9) zP&lrwxxdV>s^{vz*9*Mmjfdar*6{Z5*7^p&+<#zKMx$3C=ek#;R6jZ&S&{FaJyJ#f zg(9!c&Q2G1Zrpf@owW0P2EN^RJ$XGjo87R=lvJzuXnX6yV}#aN#ob+Qt@Xa$-s$-V zJ#Qi81>1D5&U%A`YrWeyZ++2wFr70?aPMoJefq!uXVlx8osCrXDXw3gEEd=r8Qz<5&C2X0u%u@g(RV#up144T***_ql4A{)0)tTc46)U)JQuU0 zGi;%lH+i&J%nl|z^h@jcoN4K`AuC_z0twb%X`2xDZF((6yQ8^7B)Nl$L!RixC+#>Q zo|z%Sm^c);9o9RrQNOq;$s)&-6I>0+tzUrW!o~*OKk7<2dS*kT3mWJSb(Z>v?w;=>wiB*H49Y2T27|1veh&?iZyxlX zKY6(G!{)OGz3u0{r_Y{zzkUC~{a%0bIi4YRKWy)O^W?jo9!fmhe7y75-jj#D&BuT3 z{bl>{{SAa9J$;7bhJy9vS#SH>r;oND;QjXFtw-P8-+ugc?;h$hc&er< zKHL8Ko1NY_PafTeYU|y501P+pJ$hixJ^rh3+IqCP{q08Y{^qxvUlY@3y(d8anTk4= zKYa5*uh8Zu{@dbh%B0cOlgB&H@M!$G^W@o1s{X_F^9LKf&1c)sNuY<%o}dYm7_~^l z$E^Dp2R8|clhG9)|6)K1N}Z1lgTq`!*Rt((z9bDa3?= z+fXDgk-E@4>9H@`>p>sj!XJO#`xESb`=)*K-pM)A!h;(}bp2wFm%E9ChTy`J{qY=e ziU|TDv|bI5j%P?vW*=o`mCZFkLeUvc)nSK(J!UFo3OqN&tGuYnWmHxbJSar6=+bu@$Fs*u{~4f@ouARG)>dRMOgJ$UsclqDw}ct21L zIafJ%p}S<_44U6Y2DE?e4r~Gj7?Mpmvd(F_bda_|=`OBojAaLn*#btO4V|;l6d!{v za|uu`KLj#~?AHfZ-|XVv)i>8){KiMPgP4hCY0ybD%yndih#Im94bvWskJ0fdlFh|`7LY%m=0A`s6*e_N^yvaxJWa!dP`Y~}jB7EMUQk{7k#9wjU|XFb z!e1hFo0o!p8oW#v`#3e!uDOKiO@A4cy*2BYUIkvA0_eyt<(yc_IEk#K#RuJwj;e`g zR^E-CWJ?YOYeaKhT#inD+On+85G`$b!EB6mkVp{Airf%nd|Z9sa>2NAhV=8LEB@OxvkBC#n5yh2OJa6t{5*a z=dl>k4g~t@x^_gD%)X`{IUYwnUarTWE*x)$uC|kIMwpm}G5-qGHd2qCyxYbCSnHi_ ztQ4hT`Ho=yZ6zd{YzkOpLS&d(4f`0D^lGAAq8DT>-v!F`I1tjH=i;9YEZrt)wDlG?cxM%OzKyl8i?M4R#p zvI@AZs0GvYW~O3e_&BKKUQyNNO+o-gY9J^AlbumUi0K=n1G7_LXBL$YOhWvRy(@uI zmnwC-Wx*dn`CyH$Iw4eelZ1+rN%MilD$y~=d0Tp_Lh@ubP_2iqFyYw*gr<07SeeVq zHRc$;hKOZNS^@?l-`-&g56uWT=A3A4ew_ii8fip+LVuJL1r)t$kh{T9(XIpoOa+n! z9pnmlQqz})=df)?P}Y}hQ0dmL_r08O&3li~#N3m!J9~TMzYo%|I-3+k2(9Tffg%#e zlL5<)DnP6X3P3hRAE!V$FBGNzSQRp%OK?P!3`dV` zIC`Dn=&6QdL`!h&u?5Fo2ON8^_pt9ZO!JzX=yGoEFHNgsB1sps(Ax{>0TL<3mKxib67~RjIP6 zGg}xy4d#Z}e4}7tqlYgpVo_kw66=_3und(ESc3i@V-B4D6O;JMP6t|aNdF4!?qURl zVHCjS#jFPi(cB(@POsi&RuU+(C+GQUlQDP2$=|X^G`R!?}{vB!6Z{fsz_@J z<_#jVsWGZNlBPcq`GYBidu0%U;D-US_cD2Z0400q89;bDhHsg~1`S+A;}a}`FxT>* zwBeLCHtl^8J^vs70XFBB48@-dTC#WAG^Bdv#|-s)U1%LAnB1Gnk*w)6UL1^0 z$KTD5pHli5-kE0{#?)hGd=%S&;L(){+*tGTu(24uNQ;#{H30+rRT5o{G0T=sprqq^F2LZPtW)D zJWS6I^n4>dKh*P`c>dhr{UJRYyg#PrEtS8Uo(=w=(zC(;b9y%T|0|w?25kYJ)BR*hsQ|b z3`K#h+c|bQ-VT`v`Nsb7?BxyAy73d1QrA-31x~#e*CY4TlY9Sp|G`7F$4%v4bU`!g z-FVbaPl+9h7mqw`ZWK5iAB}Kv<{mULQei6jF@lZQ8621DE`wMVZQ{|$uxcpI6%w{D zk73{L@fJ_K(#ndPtUN7%=Os-ACX>bHd_H<-$D;Q3!nh%z2n9_FyiYR27l87>)Bi}B zV`eru!&q1VfWPwYOcqb}wLQuXT&f{l*@W%X)KY55;G~w=kiE+K%mxc9x;N_G;A|hN z83=bxZ}`SZo*O%kabqEtfmt(`hi2tFZ6(Be!%H)m;jCrGOSTPOaXwqeXYQcM$2GH* z1E<5s#j<>|aJP^1WH(WFaQe%;y)%4XjGCBrZ|{71VlRskCkkFC<4HmEI%W!@T2%)g zkl86FF|Qe{gg)9S`{D&kWoS4N(Sbn&TEYXcdRQ>`c*}%Q5Wos(*!liYXxEoRJ3%rD z{aMx1go$wb&2ngmlb=5n+KuJV5DoF6(5^0rhGo}>Li^itXvffI`g3`@{c$<8@!vlf z8YE~LhafJ={(Jy#ozRf8)<8Gqs4>6Z z**aXY$2?DnnNgFT@3SMqN9U{v6@Od;*%05ji(1-6jZ431RcGoYeHlKl7gbm!Tc$i# z8$PZTldM{`C#R#3b9}BFK6cXsdVy&i`2!ITh%Lg@Uo3!Uy_XCYK)?-FeKqpcDuc~a zJsW97JXy%8b>ITe4>oC!u_K4bMb4F2YY05t)QL>o)HO>PM8Y)69Wo0#f{78uP|>1D z!rl7{m(tn#-f={`&!PO1MiW($Y4ti@W5r5r+TewwlseYF2@hs8A-AB^I1-Y!vmtmYYgETRTg>)|O; zG;=RZsowc?!Yr1!dJYFLW(aTD8!h(E&yK!C5Ualtb6>wsAYiBTnxh?KYv1@cG)OK1 z&(*Elzb|!047x2i85`JW$2CI*i`=p%8h_t>`z1?y zlSv~r2jq8OeDV1g<&dOqf?l_bobNzQP_-oM1vFVjlv_7%HppU{#S~acmz!@{wjfMJ z%#+EX5wmVA16w%)sFX`y*I1z;hw1GEl~MNQ+Xp4xy+A^N1w`%|Kr!C+a5TvWT5r7? zAH0_TAKR9bsYR<%A`p-c?TN6~(e(AAw>ibs`fSK`=jP#Te|#0QG*^DE?>!7hR``I|RyhA!gbabL|YZhU8Q{{>=?Z{9d~b@TJ#>EY3puWx^O6MiP+ zti%{#p+Vw6&eS3fXX2p8AMtAQW{;U3yfQ$v>fG1LA?n~xuD4%3yr9m*n^hgQ^VLP| zJp64{hwXfcb{w%n)dNSDxc;9RTE{nA*Gw>1^!feGRq#Nv{VWCOH|8mD5tIxK+#Pf zBh#&TaW85V3OQH)ICXH(8|fJOn{UC6AEJwi^9mNoD&*e9rAlU5W^T-;_s7(y59V`h z_MX6}42^(r8*C%v^0}1943}X_8X(vFR89tX73Ip;ptD26sJdSl<`*Lnar+^4)BZbz zD_*5v?2aWhO05Sx!z0A7ma`SWo8X9X0^$;5{{VONtV*w8{E?x@FCL!3#u&ZZ?n{v? zc|0I#__mLnm8k3@3CP-tvJIk=FvaVE`?fvwTa92wqS0*;;Z}=jMihWeP37+vkxgy4dku_D5#cWGaX|iJ69^gwvKsD~J z`#p?NN0ZLiiWpTXu1R3;93Z+})EHCuaY>H|8lCfER(hOknL`DJP|Wz5XJD|{UQG7k z#s_4Vb*G#39EtW>)uB7c_@t;8r*ez~OgI}PEcXw`2NN#)yT-%6b&dz(p$|X9P)w9C zOTqq1T)~6hWxdPb0K&q5;iqjn_#(b{BC><{&A1&^ZvW^%3{qAV1Ft)ds3?pc>hW6F~F{D1%f9;`roK0HTn z7?BCipO5Jso2Jfj59lWzPq7&k@X3SI8P}6E`FY1hK-|WGsZ*R?83VP*eg!w%@$oxM z(6iUV64pPOVnfFHKIU4O>#!^e?@wNWvuEco5jS8CEuf3ANp3Juc_^}k(6AyuO^6|G zks61a@n^m5b!?*JM9uN&A8_*R^JpA8X-Baa5G963;1;Weqwb>zC%crE58t*aDRb8# zeUvp|(TqNdwA%eA?s1n+6MGta@u1J;L9%-lPX!PJ$t5k97Ap;0@0$Q$64&0KWaen6 ziR>zv7b06|QD^lgYlE|?2$d_%ikQ!D{1&T8A6AG-bxk2yiJ#q~QrUlZ3cFVv z=2=M$adMaumDJh8q>4F0gi7HApoKrGkgjR?O#k~2cgbTjWb^f(67BIt*{?|+_yQu zV1+KQ{U7(kM?r)f@@;R--KOd}W)oc2y#BWze>}P*+t^g!O_DPztnqPv!2-7 zc$ApbY*ety?kpnpeo81%t*Nh1q{S>}{Xn$zxVKAo4x=6f&oizhrF6(+_>9^IX2m7ptsXBAHs)Mr$Q#-e>~gE zophC!1smLTc>l%j0YYiE5CinVJk{hKqX#HaHQQn(FXp+!tY|u+20r^u26ZZR?G>EWyr(&hlwj; zK*TTDp4~aZ&0J*k;3Mpia>om7u{eeOi~nE=*R02ulMQQ4HlJJ5#br0(99-V%OI;G) zKF`i&=~KMHjut*y%XX{%hTa+sJ9wix+f@DZ9{N9BMjpbpcvoLoF&9}aZiW5QOMD_| zx*@q;7TEsVgHdrdM&8B)Bn-sFT)IN6ID&>Hc?dUU0wod5Za)6oZtuq_GVq__=FF%^ zWw2Z9zD&kvN7{OsA06Dl|G)j+?cWd2-k!a{?v0s~n!_P`xsgKfoEZ6=n;VIYp7I_FJlSV@I#e3DuFzA}-z7$TXq>+jbu;s$i+S7M0F z#Wv35@)aCGJMJ2(Xr?VoN>88RSWvu?QBBj$oZ4{O&$2uWE7@hX?C2VKJYa)}z_{|!ev*@$>_imX2zF-$dyb4%diiTc7mk1 zh-GjUBzq5<{I}s8Cqb7iq{;LWy0er6O%GIGpDqi;&W1hBq|z3O!>(9bjn)dIR0H-| zf15VI5sqSLySksJj@>+*bu*>-2JgZ~X}qr^b=;ZvrRkI{PIQCv5GT^l>)=PA>D)&sz6$~6a%^uY-6U9s|- z&aNXS9o&TyG}K`}x~eoST6B-v6s5|~sozC0j+&QQKEBlymvkq((4mw$CZDL3ZA32A zw)NceygK;Z>)G|!dvRe~m)rO6 zXy@wt3t?N-`$cnd7wp{&VP9&x?*PpsVyl4L5i(=H&w9Tl+jc-vAk8W;9%&PBzE}bW zm$M$P0#mpl3S@j<=(133?ow2a4n!pGU&25QJ*eH2Pq)!XH1`7}BhB~6Z9mVUu|}*1Ezb zMoQtk({b#!n#t$k`Gwi%3IdZfZrJgD2&D=!q>^Pw)uEim)80Bdf}JjLmKCbo+j^Lm8lda0W8f>N~HEOO3GqkNy?K`MYe&!V9%>!j?FQqts2l976|z zMn?o%w9T(~S*GY$P=&lykpycNzDp;0uw1qgBu-O8z#lUR6!fwe(QP=i$!**_J~ojN zQ;DP1KaY;F2)@|uNP$<_s)o~3(OQEFFxIaVE@Jst(W6+cmh)d#@0VG1ptC+vlVWgl z&_e=TE)n_lAI&l{@n=R8;F!5lEC=IH-|4lh%`T2l_W2;OD`si zv4m9}=J3yr-b*;ub(3W^>@ZLgp4a}(cqawHU0wXxBY4;m z1BJC75&`FA5nx>ryEnj|4mT;EJ>2TiFAptXF8R-|DIgn-GXP3aHF1vLrgxmpIK-(< zu+2$hg5!A8hkI+|*0no~iXL3kkqM$InavSGx4~#|&_#{g8@H<(6<4m%^B8waF+j@| z5h7D`nMC;#v*2t#e-{eAQgJ5BO?mw{8~M@cDf;sAc(#u|m zTgoa6MGsA%wjQ;$Ot1X-Q2Im&MDxp*>xNyJUxo~jjyQvaSAiAw2ozBP1GaGrz&m}} zexsZZNTowy-MX4-o?Y-+MWg4}a&}sg0PJR7^~>kit~SM4d0!kOvVCOMOq^ISWru7r zwv16UICt;k-UYD|jy)?3KrtH3$cJ;_v3Cxb96xn6orJ+g3uc-HE^Z}fVws1-NWVS_!0+BssRXY;EFj9sexKu!FCZrbaWQX z$*D=q#K7pq*#rR+>hK`^t|W+~=yW}MHOICRjVBsLHia5IA3Yowh9#~^Pet1_MFLS0 z4NSyXYucyYiELltj0?fXYDc5*D_x^)TJP>-UR3JuJw(19V}qYphwQ~?Pl=B{DloAB zM?072!8zW{OZl$^0xT{w|~Tw;f=5{;yKp^ za{KJ zLm#+oWt;;|z4BG|?83^4XV`w!{0G~;s98Faib_A;yom%-fZ+Elum5=SbIT~T0(ox6 z&SyxH9LIo};8#FitoxQ5?$da%_xu5_9@)eN9&uV9rSRwOisSqUvbuTu%gCO_>R&(G zeELlXs0*Qd6;MKy?EIMV!5*%#7|%z?b_+&Q@!|m+du*9N-2quCJGt{|A}WD7 zym@l)s24i62~v$mC(+Nud-UGpy)Aju!s~2&@Cs+gMJvmLiFuD)YJK6_tSs^d2d`ei ztjm~q*~A6*!`PskxseVIN`>sZe$C3QVBZZd`xUas0VTI3LXAO#KqS3w3MVumi!^2q zbDQsBmMNXwJNbBJGGP%YODb@@u~Et056u1YN%ffij8-0)l4Q44DZP!(nqhE2=wUE| zY`7syb_?;wh#3+Hw=L^yb!R&U2snOmB@l7GAHCv(`*{BqPIehNey`ufyf(N z&%}?s6Ia}!1a7cu#M$VBBL;#&S{6tbN3->ix0xWnC-UP>4vO}Tq}JC+1?RC&t_PGR z=Aut~bYF6saH>IX$g@ve49>~u?d0VABu<0?Ddqj?N7A@1ON!c18I2SmJ5jF~xMXnV5fs|Z$fvz#h6 zV^c$@VPa!I72q(-|8|Gm#~B5kiUv~ zTgln*bX2(zi$0)@+=64b3WBMf%C^iPT!8U{Ao6$uNv)fpJzkz8?|>FVrh85&NOL0e z@e+5$VHu^pA-#gF55;&qc|FD?cY=)Q&{HQTx^XW#VGSW!LZVkkcdCImDbvN?#rPKn z$jONJ4N%HfjZ7LrPM&c>RC=7mO{;8=xI3A=#Vla$-LUZ{+gjkAJtKa63Xc{-&vC~j zjxJC`dCs(QblDuEx5=gx-eG7Hun|-DiJ^UGV1lH=79YSMc2x}z0ECHY87zVI0p@Wu z=#BZj(!r=&Tux_y8Nb`ooTR%QYgXzKTpY~E(z*{vd5DFUdWM{cfx-1-Bf!qkkQj01 z`hy+P20vrvfE}`=UTthKUgdy%qbPma{M>HD0a;ACu)5MUk~Gj}=g1G{sDUz06mH;I z;I7NAVFoHb*k|sm!r{Tc446#+M zT{)D)AM3D3bL9$)9@K)m!0H8PRB3_k?d)bWUU-*LuvSKR(Z!~)fR1npC(m@q;F2kn z8CMc~U2_Zt*CeYFnLC<@Gy!ESI34wI))?l`q9^7z2Zp*N0f;1N!T-RZ z$pSUv)5B?DuG&;-nLjv9XrmWLd|}^Xy@8a&DMAkF;229BBs+v-DJRk^0eFmv)?`d2 z#T4Xd7Lu6OaIiO(!xu{oSjI70#;R!EsaC5QDWd6^9#O~_*T_CKfbSSmfG;{%zksU4 zC5OI8&vHCBrB5`DIaX!|2tkg#wF@P#H^Fw`dR))TyR3zw2Ed_~zlUmp)Qr8cBjReBX4%@xbzn3ZXn7I2N%DqAx38lGwEK&_>d`VgIZk4KMt zgU6uCsP|Y#cS<5=-?e^t1-?Zt0+fvriW&Xr{LqX}3?Yt0nIaw9+IfMiauGD)i)UZ* z+IEx?G!}ko#P9=uoHBh9H8!Zc|JI=u25+NxPveG9q|oLm<99>b-SZCND%KD0P*yEq z>=m8sfvV#>d8U2CYaHo#?@dllkL7SwCIv_m*6DT;X`orPfrXTmN5AZMUo6|lI^cRT z{-H#$Z2(6Xr#_7slbAr*wNa^aU#~C|GV;YTG8nzljmKl0m{f98rxRCib`lQ8SEChp z6L5hrhB~50a2gSlDb5QhZ5>Szpc*5GHqd~MSm@Z?1%rNT{MlFd6Sb>xuR7aU=`;qu z)uF1{PiKNv178ka{vBL>y`zV%QfX#2S@-WT6PUZXsbltMGnjPKN*Q>g9pE|?3KYh= zX5tD&=X9yK1fMI5WtVFvO?%)6>W*S!^Cqh-!d?T0LFCIV$8|OOPL(wBV6#oP>C9wv z1kDBG#&|VrCkr#UBf&CjXD2+7-c)FIpAV{#tXj*)yb^(Gkb*p;2N;_&mj>#fPD+e# zDSw(!d@A1Ec~MdgrMd>q3~^f{7t2Ep7NmUy@x_IubRL>5P>dYgt=4o!!!QF8v{`c~ z${PXA6=Y_J7qJg!;k$>Uy|U$Mmv*%mTkdQ_OQ2>OK!YA>Tv48E;)`au;2bNx&%X^x zTmb$pGbd;39>r)pPwGzFq@RT%xL14)ef%IyTGu@scA}1LKEnI zm?wVILd}UNQjP*J@9(+5WNZfot=SwF@K$Iz5 zLCp58sk4G3E*v~7n}@3$UYA^oE_n!}wUY~8f>>7nFAx6O8hLcvK4RR-xjaj07cNFx zRFuFUUtXa^v92n*SFfwAjsZ5-;7Q^RCP_-1*7XJ4g7`WJWxZlTLq+$CYdBi`VkotG zDLVsiacx%F|Bc=i$Gg>DR(S>ze^(MgDu+N=uxu*VtZD=z)ss&2A7s1GXCVpx34`C) zHB<>~EMw32g-8ZgKn6fF$aU*czXzG9dn^HoP~~AkNiG^72z_#0cf${#Jo|Q&youbH zSEY-+DKHJ_%M01Mo9i!>?J~16x@0ujdh+c(Z2aBd!_LP}7t=~($&dVz{77BZ&67Jj z@?$LJMr^~DbZ#+7#SL{wV(A~zq((V)!$)nSNB)uObOt1%rJ@9lntasMh3~ny-_%@9 zO!^xrWoprjXWr}obCsU7AzC#uaKwDPrntn&80)WGw6}(((neHu-J_qx4kbQPBUKC_ zGBw8?f^x?Kh&68>5}l+oK4!q%!|m<%H++n%5v}H_EPmybV-`i>y1rrBUU6Is9O7;% zBUB^ohh9zSXe^MCd=IbNOXWx!+1+B3i+9u1n)$u5(bB#c*ukyp5(ZmgP5y6#pZ4$1 zW~Z3wejfXkYH==IhI{P;5*u0Vr3%BV@&2OHeWa?Gom8*oB)oq8>9g(cH+LQk`X@+F z7@Mkdx{kCf$t5R@pPwf)99%y|hzC*x;hQcU2GnhOn&416n!MynmC;?wa>Qyc&v6b8 zo11=TBc;XZ16)LwZ1^@lIK2|3{FH?0qKI+m>ZMk0G|{UC1m+CBTYaV@oy2%hq`Pf4=%QGOm)IA=4d)dEgSiJfF^3mZbXtKFq ztVSup9d0~)rA;#%dx(fw@`7b;Ueh+NY4Z=EM6w8di0kD zRy@$XFBN7|k|Ze(N3~c3!5#y|5$YCox2Et4lbx^lKp1{5*CRBhGy_ppr2ql}skTc1 zXXzG?3!e9;y5$DdHvA};-NfdFT<(eRwYXH2u4CewZpW+KiuiIk<2{6fbr$4>g9v-^ znSDNA)63cui7NGrOtAXB$Dbl6mnXf2g=`t+b*Ctu?CFyc4{@1*?u9f)9(S6`6(A~B z5T2z@1ziM;(b(3V6bEio8XB?y@CMQb1UnTKojl+;Aznp;JN31}f>wpNzq7XVCTW}k z*Gk`fBFYZySI68$$@dpNmdXa?SHSf@Y_RDTf)=BTd+l_1j2wdJ$bY}UTL?lLiQ>y} zvN(u7`Pj({QDDSY{}1&LHY%Q;F0cC8XBSk)*7JNt{VS`hAFZzbFsi5fN*QZ4+($6; zYg#e*gBYPTe|a9)$l>KJdx?vJv597X?)Glm%Y%2=eorqyx0k$(KK|UrscXSx3}ReP zcenS2z1&BXchtYz`<=bSg`cm^kdhwvcB1v)+sl{sEUuw>( z6!n-0;7|=o#hu${)>DB%#!B!K*CF$Lv%4!lyr*8c1?AY)?0sTZ(Y0WgOznV<>| zF_TXa5{t7hIOSGXx&VPT5(n7hnD5LUOb?$NJ(?g*78G~fRo(yb=I!6_{skVNc0IQK z2q$m`)1pGd_oC`o7x&?TnZk`gAW69Jqf7tTx$t5Vju)px{aVxCLqtAfchts|C&}>w z=XoGkkDBipo0ML2igN%A>~$sQ+Rqx`yP}OKJ~}wSggl!!^`aG}8F8c;?`TNCca(o% z!5zv$AJ)xvEQIA1w9jn9%i;9m7r1(Ph(eGu3@&~DBosKp%izf&U1zUXfr1bHI#RA4 z4V^p*nvq(;%+WSmuorNi+4@?3w)9ScQXZS;HT&W{vk8Tu+ELG<1mE0|OMq{RuBd}m zQT4e|7RxnL?g!FPs45L6#DYF5T>PxlHME)Y_M5L4uoRn&s`CdPGu z94~#|Iz0~hmZnNS?hMm#8`;*?$-oyLul~9brr@64qv3RPGG-Dago3mf)j!`6?+&h2 z#aevp_#CMZXBf7z z7O46i(mm=FegGMGj&4vO2)l+~uBAFoB;u|wFVx>9?LL_!l4X2I_;w+RLoVf~^rAN`inqBxh7=*)Oua8D zh7Xp|JjiLla^C=L8F45)gR>FN&|@lML=UGRU+xYV0iu79V8v#k`}KWJ+gdRm?ze+BnY4NZin!M zU=>pk!C-8>xfhAeolkrvox1}iw(Zv&iuX!Y6;QNw=(@_fgTNG<-AL;I9fK8Z=0Xyw z+-5-+c6HNdO2BH4M^NJ0T6`%Qqy|1fu5nnFX$k3#q^8?tU|AGxnvGG6S%E~zSTrrP zy@7ZajN@9pVfUCcBWRkQV4^ZYxNrElHW)X3*Lub{q#I zaxmH>$9CvL*s23gHl3=}W+CupXryc{?ebfig1R6h>>d}Qbqr4j_q2Pi+L!KklLJZ$ zXqCCF`)URnJ$2uedo>DO1F)#a;xRxm7YS-WrNWl218;)~TG~q^a2V%Zz`B+}E>c2iSSvw!bO^P4v zko>@T71PP^{AdYtv-Ogi<)bAGSq!E);*BgT7(TIJFi_H5iHm|0Sd^C_TE$BboS;Ls zPmZtc-hz?CEhAThHSfo4_2 zstosbUJp^SSl2-fZ1s>W=gdulR28nbVLYtGk0EzqCx=hx<0G7Okua_8;chA15{71} zWHvB?){k=po8c@d&aBX2vNCW5YlqIFV$*B-unE)(QK-{Hc>mIiy}UwgA? zcaj0p%Qikdp6qksmH;i@VRdqn9?uY42~#sakFYBcD3MUe*Toy^C~9CdjrXjtRU#Cg-fz|owC^3}2vrEJM*ap7(~##fU8*_G9j)LXO9V&0_8 zHQ(C;#7}1!+DV`^xmy5Nje$)(j)Cf~ zLD}^^ei)Qr-9#m^G^c6z$<m0^s}fTz#~S<% z7%v)3763aN#l?Tb5EU^RuZHnuAuu-D`v^mNo%n~!%C*vabuM@tMzit~>6*`g(?iIP zb!y2V>X_wI32b8cJi^ek*+g(T48=pHCn*Iun>0rGdcO}D1!k|YZB;0z{OWY*zq8NJ zUksssAayDFWBT)C&O1zH|1y0D(r`_%qmo$D%B!t`{zljgiic|Zc{Kml4u1ZV!+%7P zdG$T=)=*BzX$kT)-WJ*+Swg2n`#E$A*Sv!MSrt+%Ua)KgDn2F~qtkf$v!OJukU=>Z zE^uT)bP?`7Kri0!DS(ph&AqSx8C{wzHutHmEmF*3V$0ip`LtyZzD4eza9Ho`TkOU@ z8)L%b86pfO$EcLS_5Xp`0}!fJR{e}2^=j}p-NwcM1cg1cCK1YgstpJ0=B|oLD;kmf z1>5kVf{ZzvdwE)tg4dOoLUG{$#6#D&PtAii%`u*nm?m1`CZ2 zTCHkmLPgm?0B5T?9PKY=$LD8UQ8@noK{PNW6@w?qpDd!vz)Bh+3vI?;ir3Kt#Zny4 zMu&sGD+3FV)!8x9!F3cj z6kM*B4Go&K(W6yBPBLY}^l*ovn37%7EkCLMY6Awx+(mKVijCKs6K7`xH&9!|VT&1; zz(azRn!p~b_`_bPhm~b3j?(K8C0@1+$TGB(0+ucX0ulv%(!v&7T1;C}yS=lCZn^-O z0;Xpe^i#ytuIVE@v3v)a(W4~->R-M3o*wRhV(JWBOqYksvp$3jv{b%>K`J!ZxIf}g zA3@GG3jlL+VCb0He85MpYG`bm9y1}(?+sin9sI~4c4`*Y`#YM}jFeDxGD=~TDc%(| zbco#Lss>q6pN(8wv-`K5B;2k6y47eJ9kD$4Dagp*iF{^qV4x+PZqSIbsR#|4Fk8S* z)*`z$DOsX9az^64*eBsK1v)^U0c2G?N0!f(48lw%rYeo{)(sGIPj7*oFMM8OeVW(F z!Xm80bW!B%@T4T6HYmHVX^tdxV#EvWIc0Q46hKqP5($mn=@JMoc6q?8!P3kG5Wp_U zv@7hjlcJA>ceNotq)vzrCAm|PIW5F_`iw2I%Fcys#B{u+nJ#s2c zM5sr-vdgH)-@`s(d0K@w+_gPuOHXsnVDLjh(2-;>;jfZg2~Y9W*M{tQc4j3;OvQ&> zjav|XD2#*D5P!kW;_ibo>Sk^^IrvfC?ZD;; zk>sxiERoDsc*d~8g7Q1V-L*4a)6Pvyz9eM(AtJ7!2ww4Tdj{{s0yTCbxE11IAAwF# zZn&q`zvaft;U#d8uq**`e*)1ty9^MQmkwI&DY6yabTFbh$-=HDlfoW{I97#iSy$GM zlSn)S!A8CL%pt_B2bi(xO>WJuiX_8>nY?x&b_)l0i zsJCoYR`V5mVd4erk}4yy*bqd3Xxm4(IQ$6?Nfl$r6FtpQ zC}c#^U=rh>xU{?CZ{)+mGwe`C3f-dL%3C1-e6fNIEC6XZ{Wwi9pgw;70?N^Ui5vzc z6rhSKTAN_(t=o%Kq|smgW*b5}@ebd5Ti$oG+=$_DFJ1v${1gK5;9W=sU3`tC=-_gT z&ap~%MGNg>tXGPQ&41{4X^SaOq^(6$ND4y^z;0PwbwHM4kTnnd@YZ6+$x7>~R6VobQaS|k56Fh70cYk`3 zAcV5;c$#Q|J1kboIgKRUP1R{$(h@LHa;n-_7~wv>5Urnd%V2O={M*gUK5B)`H)m|O zRubu!va>NlD7~;Fesv`e4L|+m6g;RDJ@{Y+-L2<;CAD3Q*yXge&o#c~U(PlD%8ng5 z>nZ5EuA=XzNLNjRpFA5BB7o7jSOk|&k*ESnw|yWR z3=dS-Wh9T@pi&#Bt_get9a`F(OLoKIX3VQaldD!QL=_xkWWMyEVbSx^;h}`b4SP&{ zC!miTZ`kZgBtpT5T77hujGdyu4@3#C|FU7f2w>iY4cc&}lE%(gEn34m)@2Qhoh(@t z3-^cC2XZ@MRE3pk2lXH9fYr6@kysLuM*tvRyUAj!5%N~pxTZM)t+0oaIh-a_j)hH$ z9%&#OOihyHtPX+~ltc4+8%wdYgVZsOVEJNrN+BvcQvfd(ersWTvcFXk@8H@}_Ce{Q zSx&vSK)nQIt!PFgs2oI1^KxJp1?pk=D2g_Y#APn86aoDOr83A%Ba4bP#>$l&vJ{>j zqs5YiV)mVsly}oD)Kyl^Jo7$C!;cL$uOBCILj!vJn)RS8lllX0OnwAw$GQWyUb1@= za^#knAvHW%yp$|ur4zpR^7Sg#bpw(8Pqv$;nG{JRDX1hgGf7Fdw2BH=xsdmx;4i>a z=BTG%EC#_lrr8vmlGt93ZY>#ge?7#NEi`Mw$7bA?-tOA;Om71%ZG*W?%PMDwRCdw{ zgDaw$DIS{g?z&HGl{q@1A7X4u;r2-#{33Am(z9i)myilW-2l43sa1*o$hP+Vz=d_3^avDA%ZU>Xm`m8^YHo;Y5hgFO0|K(K+a?o@Prm!1Apv;;kqC>bYR)(u|5gMH79mn*=k3bPs!DJW+(1C=ADCJua+8 zlB=};W5%+jNjv%zyb|frqk;l92KoMWV%ts4W(|x8AOnbvn5ZjY- zS7BxDC63_y9AA>s?jBpZ9Usb!S`1Jhk$ZCl5hO^)Thv>xH;OGl6f)k^Hef1kdwoBv zCHAJ&@!}*c^4iTA{Bn=6ZU7X4cUrrZFBiU<-DuSGhJp*qFPH> z0ZiWl+!7dC?1}G;43Yxgz9Ge#%(?W&6u4>CVAuKR4VTA2S5l-(ZRU0q^&v5j0h09r zT8EWWF1BeQ+jsZQ#F|SmYDA#%Y!7qjYgi6gP}6OuMAUFfM_=XqD8{GghP7<#^5|u0 z^#=KK-++l^fx4ICRjkwFQ>HxDLh+L2lL~88%mEpJLulnsrC-{UEk|;F56vI~t;JeK zTdQ*+d9gS)&ikjO1+W2Y&&MO2p`Zh$+>btsmo_KsNtDvBq3(SPi?$LD`;OUXi}%{; z#2j7jcI*%n-F)<%C(ZM$rt9y>f0=`5C|VUrEx&6o4j5`n&fc6JpW|k>$FQ3H{T+M5 zMU<*=Sc%M`5D8rETY(2^7f*Bp_=t${Dr?Ef-UJM0W`joR_&5&|>G&V#2o*{r${Otn zBN1<)(y#*1zu+_`TLYXXp&I4~OM&18HM41=6mBe!tZix_p`}-B3~xkay`bgSdbz+V z?39AF_k8Qw_R}2$7pfZDmX%?ImT29~aXBukSnvR6Bjs-1A{Dp~lc~nj?pw_3tZzmJ z&4EN{H`f~G@h5S?x|{%9URZV+abbA~zGpHP#GtSqz^MS3n=?w4?KRv!#1@sn2K)u~ z^B0C~N>HHJ_Av)y2vdF8c8}? zpzlo<_wZJC`%YVQtc$q8Z|Ve!3YeOfz(~s!XK~wZ%Z6PJZ_-y^Y+hWQC#zk^Woksl#A=B@m#}8A4&j=8#u3kh3dC%jyT+6sV`wn6 za?a%Tha8&j$llBz8a}`=jT3W3m#LkHd&`;9hh1I#P`dblJESBeqJ1Hbc9aL7X`+is zDN<>B5{TnlmU!z;$jszLAwbIUkf;eLyLiX~RZwyXqiamJM$;{u3qq?}t`qW;k$*|* z6Yx%~G%UXf`hYqa^;O`p8mWVmlFy8|`k}|a^ZG(k@y)Ui6)SU#Qm_}vK+1%+!I_{hd!U72VOq)4H z64*9{BJ#4)?d`>8V_fZwjXFlQO9*~KCk>cS;x6gsj8hC`8_mu+EnFN~nrtMZcVV`8 zIWpn}X-v@1i2?$W%$4I6FUzDROQa^@TPeCW!c<$khIJ|arY8O?5yqND`mMybwwZpgA!`iHjzuDCZLm+qA;tpD&Q%cGxPk8c77YL(qf8-vXSILw}H6~?LB$Av;E}pbKLvx$DCN9Sf|E{D(yte zP}7jWqOu`~&}j)d-U0;v4zH9jcAoZ?W$d)8H{89(GHdAuc3NVCu|B-rCEMtv-apr( z_eP}3r5K+!dhsih$bvDO`HPE&?n^qRdfuqwg{q{gMZfZQWK{GPR>X z-HyuFQ+m5r?a#~FE@~%{oenG*jMO_BV&TIpAY!d^GQm~b)0YtxXKsv4*7v=>QS6vLPKH$~H?W9y1d%n5Di48)z>Oz`F$i|GWd%`0uiOy?5S4-)MlCB=WLjG> zCBt9Bsk+L9Ry9mctrM#iR7l!V3=AI#yMhX?K5}3DdtL^hvuHN8RJt95uj*+`CKmWG zQUyA-EKMMqEYoh0*ErH@RZL*N=;97ZEDcP6#dU#Jh8Letz`8i{j=o&b3LDWm;#fHw zrH^pBD<78d;nn_Jp}C5>AyLw_D%Uy9qFegtdlSaL(UvUd;=r_Rbf~mXkCbMm(k*sOV-X2=vh%)a6v_V~~vgG_~qS*Zi7JBd7T_y@~V5 zYkQkpoL<3RjG5vD@f^RY4Y{IQK7oL|?74LP*=T;|SwX40BgC@#Evsg)9Bqqm@u2y` zj$u?1EYyV0HA8b3@Ttl0PtrN0m!GFDv$DoA!#`2G}k6i0EU0q8v0_aW9vxR3D zFceRR%zXR=H*=F3p%o$C4&Ssz@yWCX(=sl4>oYR11=-lWl(=T@a17%P7mkgwp62BQ zxN#7Nim*$#4pBzVozWrls0gBe@J`PbdJ6=N51Zq-TVSCvKWH4KGL(nB26O`R{2ybV zZ;ZUmYvCot7QWU1Sq7uwY`UFlxfZQodK?CEO4{6^DJIEgwu@RK%;%I8BYt{x=oGg% zI9kRDZTRwdwm&-76!^nz{#q%V28G==o2J+786f9pz!7X7E9VU9&pKv~XHEJ=@eo$D zot@9(%mU~DUv0J|ny2%h3{7ODFx-SG5^w#)!(S|0OkLBb_TCYVCr8UG8CLNva6&^Z zoV*N@P%xU_tvC%0AkNQ`FQiGqXLwl?k8d0u{d8Pd+Yr&)z=E$^Xt2b9UosLDGL*wn zS6sO+3Z_RNW0jaqA7Hxk?|N9pUl#v_60ZH7?`Q$I!t`-zsJNEJ)xrK<41Iys1t_BL zXfj_=X@H?D{q-`73uQvF7^0tQZk3I$u(rI|WU-~KR&0MUKL(vJS{+hj^TEbJzmkUV zNHnkv_yQ9l$%K((p{AhuyXS?h`Ku5&YoIxGXK=ytXv%B4M08gy?JyzMR7lXxuKDtO zO8w;PJCG%-!ptLNOnebj?(M(^c(AkggmwVl4nv2N9Qor~{M>xD^$kiEMMud0Ru*Q7 zpdy>0U=i@i><|JJ9sT<`&W>s#viDiAT75h}Jw;+~$0CLQw5%uSQs15jJE}4EN zkuwF-P;-E5o@i0JC}Dn&y+}}J$Kj&7e`G4VIwNkvBt{>G-sG?W#l*usEDJGgvo!>Y zdcV6nT7x${Nb=>NRpuhFErKi?mK{r{Hwf||KHlD>af&Zw5|S+v@QMGLvhu0pX7!^< zT}r!$EHYq%_iMZTtv=0({=q?igHO2iqk6t#kB76f>G%vq;t+ZX4)x2&1)=Z8n{;+H zUg*L-b=1tSoO6z;ZQx|kiXckEs)IWrp3*E(vQmTZM9Xf*FiIHLSuxu+bq3R`ggEg` z$d`3G2PsC7i&Xs{PI={}3^D(PoaQ;tqW#Kw=e!dGsz~CSVBAXkT#ZA79)Y| zf~HHbhEfG487Yt}Sgo4eVzo0|xavS<1mO4#hRx_Bc3;MDOZqf>et^5RX8=*#IO_7@_K2*rvhhBcJ%TLx??my83vce?R- zeQb$6#sm>@CtL9n!J&EkDV9pwz=(4wwvU~{FwDvSK|r14f@&nR^$z|{XN~s0-mPF# zK120XM*aalu;Y7}15+ZCkC3&W(A8SY7!G|{`vy0CamyW&YMOpE|W)C zkxLuNDS+AOH+9OSC4hXV)$AshERLNCRseP(5t_aq$wEohr*e`9_d3JhXRMz0zat%z z0D)xgd#1R!DpOQSXw?LkmWa46LO|4xMWJ-y<}oW3ie7j*f<>j2wyA+%>YAZ)5@DkF3-Hw`SBcn~G*9aH2nmkH$lEI3cZ4A%pxvi6`FU?Ox#$eh&gT~8 zLJQ+Oy~-yd0_$rLj*=QKL-fSqK$u=w@K^?G%D+j6=6BM7RoVTOm~+cs2xZ2oRa?5d zM=66`n28-)kiXAzy|fgJtBP=LvIf+G9~eey-&o}&#&7kumf)MeQ9r3&=rg1jF+*{8 zBU%D35ra)J(TBvodNP6;Quy0?YxpCT!z(%(0|Hjue#?TnGy5uF`O&n=VAXuDnS^kH@hreZpiUj!{=J2YFVj-+bx@><(?C|W9vIU7(I+}7(DC< za^D9e^}S#gl-DNEQXAT8Ew6wgNdgi-zDPL2n&DVg_84q&UKlbNCX`@F|%ie4DxkPJLx}znw=0=tJt6o%$UtU{ftPiHmgJ8t3;s^w&;3N7| z^v;+qde#PveyLoF&ePUQ-Pv{lcA>)9tU^1KH$q|nJ@b+b`#?!+eMFxcRE;9O!&}xa zi66ya92G<2O%k;>dWVObyo3=+#nhR{V3rgqVVtY?T@+;5``ebZ_4OQ%HhL((H%n?|@RlI}&5?zd^VoXDu zxWuUhX!G8+Zoo?p$*Nh)Bv|MZO$R1MrWi0o;wl*%ia;O@$7)!%*_#Bvd!(g4{zW4l z=nDtXtbVo;pb}h`Ii&RamTVTL3iWdQwO`{C~hur06%|YXz-*u4_f=9gzX|} zLD)rc?5>uS)QhV5%QY?aK}qV=3K1D-v_LxG zWkrzXRBy3=v=6t@B9f+wIDn~tgLS9{5f`5_TKaKhzBZKN?gE2r zt1|sgrk1R~5~UUv>_As3Vo}d9=K7CG4cM1U4y_W3IBL!I42ceV+U$7GYhVlGI!dKg zLn_9n>9A%iCRc6;lP%^eh_;Bcww?aR+3&+TJ zv@{F>W{Yjg<7920LvPyJWPlsXk?3=LjFVZsVHojmE+RDLLd{XlXqmfbYjo9wl1ZEU zC=9N`V%10hpE6X-qPNc*qH{mAEra_2j`6`o;c)mP?|Z(w&_Dl+|AIe_j;7q2G>x8O z;Vd+yR@yygXpwPwX{IC2!ZacMull^eDRauoA(|~53}j#R++|eQF2#Rnv6G+6O zQPO!2u>w5scj}?_46Ef8>6)yoJ{F}AuyciDq=ehjTc+;}trA8{kiZVwOZ!#n?rIoB zKbp@@{qlb$_w40w-8;{P?Bxl>jDF z>{GNA>~f_4xw}ed`4!J3cl>YTnRp@cj0>#`O)yg?uwxmdF|pC483%9Nf^jGo#Ms5V zoOjg59p9{24B%Au$=GnpEhY`f5l%xy4?Iwpb(Pl=s4&sh#+6rk_^==#L zNoH3J0fKh17nTq;WgY8wA9+or>XmrTWn?s+O(!5i${%L$<%rWzqcf^hE+qoKt$GFj zAONMgLLM5NuF9ayg9qx-JjxYRKWG}Dm%Ax)#h8`6qoJ2b3I=$@wFRc2)|S?5VMsP? zVcD?Rz0LOcyOipC;q`wWDYER zU>Zi`zDB)gu5tTqzHxR?_P%wA=J?8mjup#tznhSB$DeWB3R5Fj2p@%x$)wlf`(MDQ zfRS^YmpotnH?S%a2|m@b$V*>vK#Wz#YAD$glo79#kSO#DZVJ73j(ken)2|g#d=G>C zdQq?Ok%J6=Yg1aC#pyT&Pnursh6rtQB`<_Ldf5`C2^%u2TOQ;2Wj4zq1X}ZH6LO9R z5vVfT1Q79v&0Hy4Hu;^Q=!-}%P>^WLFC1FhDRyXr#+FpY7FQ=JhzLzL;k1V)Y zci~bZ95#Uc>IC{j?_*l zDe6t<_h30O@CWg0KoQgKn*c0f6{TFME(3N>DDQE4_uI^D`zi!Z`>w7LYD(=xSENbf^&`f6** zFwwk`IRF16ggZsMly+jCj~pRV_|t~SC&W+Fx;$!8=o+aW>W6;Jx2{0C^;#4v6x*3I zma}|PQNNZ#nIJbHPqBZ}+_RJll@jfyffebX0CX~B@zwC?c!ov22%#JQO!Z4GcSH0p zl_2XJroSSIZ7z;+#SR2Kd4Czdi};9@c9)9;I4XX@V1cPiqh#5xHi(q;n@v?eqkei7 z7M26Vwl@quQ)u}WDp+z-=Q;mUtT9r5luq@s{jq_HW7Ze<<#HHx8Bp*>YyT*lPnq!C zPcZ5UPOAIo zr^oQ0oiW-CW5Vt<-fMd^(4*tk-5%9a%)iIJ9hOVux3iY64m&BxgHAL|e3oqKO<-!Y{_6*N|>fN*fEY~Y0Zg6)wYT)<_8rK>ojbLTxI1Kd& z?K&kEmdV$3aVY?0d6F*U5Wh_R0V_4=`ifreE}fNEg@zf?;7-1`{;||aG^rU)P(=`1 zM>kl@Q1I;+vfgrvtZE>3)>lEdaTIYs8q_5Ph(Z=KwQgFen&fw?P;hCSlD1#xC5N7pRM} zF^^SyE|x?-m`!kOrcm8V)1uL|YGdwv>XTv~e9usY)yuDw$y>JvK6(Asp>@K^k#}5m z-}d?qCg-4IpUZKd&{5r^P?+1wyA7GSZMUUgecy1ZtyqbdG!P)Z_#kd}5gS~>&)|mp zzu&6B`|zt1fCKT%ui%k}3u~6~p{@-m&J4L^iPwLvA$7L>$RX{JgVHwXUWr+gwh;5u z=CT7cjbN3l##9a*K`LG?opCaL z$PomW-6Rnlgw_`Fl~xQ9SRj5K;O`Vu8?#KJ01h45Deu8Z2QDlV3ifCC%+h5^ON(at z1XB(-mc<7vjSODaq5Ax{?NZVH<(cn%v~19~FF2xP)rx}lGq-Qg$~4YB;&e8rjO67J zs@QSEG^JuyCme{fPcwrC`<(Xkl!jXe-Ev;iuG)-RQreurnx|+}=aw9)E!!agwKHI0 zm;u9_fG5%0QDxbb6A8PUMyF42F{M1Rfs4~J)+#n_t9CI*=tbm*DUT65o^Y&-Ch$^x z2$JlGdcVkLvYI4t&<|&GY#JiS*&=pHGCvZ=pESe@k_ng6EurGvC^IX}2YsQ`M+jo& zXPsioCXK8V1flT&`IKoJ%9gPad90)5`cgYK2urdP($>X9=u{rok0Dwbz=CqEQ7l{G zAmX_gLr814ye8O*tCNrn`spJ8hOotur*Ep5o*-o@j}Q*CN4BlC^vh0qp;AA}^-(7u z|Ee0zWu&s&DFqT(@vWygNPr9dp9&Ug#RQBQ%&4wXzf~fY59Q)B6H3?0G8NR}SpZ>@ z4pTUuxCi?4=kZi3=ZBz&moN;t?ri1$W_SbMTi#C0P?O%DdRGXMh%(r*a(Tf{w_rR+ zvn+^}YQ>{T=xWrls8KF7!+iy2y*6sRrd&-rkQzC}^+&&Xr&`$%JYuGmLV!Au<7%X? zW9puNgF^f#g_xy9o6^1cvC#^%q$yOJzU7~!4FW_(R(wpPbIOX+Z9Y3cJ)4h< zq+M$IWxTIo*Pqmk5&g`L3KNi6(GJ4`6)L{m8r6157In-Zpe$7y*_t~Jvd-C0A;Pt& zbvZR?PrkV+ig87)re$4c>14RC&G5w~jXyD&@MK z_q}vC#j)f`B6Shs{`l z4T2SO^?3V5TE!BZU4ZfZt^DYG>vTa0BV9I($du*(Et1iA*gBpq#*4FWM`s7Gn1mHu zl!!1r1URTvs7V+NI2#}DioPJyE0a6d(r#c>TwXj%s5lf+-ev(%Chu7g88_#U?UQ24mchc0W&e9%);il23iH!dR|?^4_);f`}kB@ zNuZG6y38VpEAtIzc3Uz;C0YqCYFT}DG5Skb{`U3@mkun_@OqFcVl63055m|7sUBZq zb)3i)V^b{BTHJ{F0wL01*zxpWf_NV>BXWo4#1Z6(vWO9*^;V)w#y7g~4ibXls&^fm zaqIrxra6(T2D^Kr>{ z|I(62&HN?7kV;@h+7TTBW7w&3p0Md+JBg&=E6Z&IY0!5#OgZebrBrz- z{aHK{zf^}VSuCKgl}G?Hj#>i`>-1ta)pBBKlU}*I)h4%s*+6w?tTvk^26N7$syRZy z;#tAV3+%?pT+4=l{Yk;w-LoWB2as<3ffP3&KMFCTWwmxorVsWb(g|IeF zE60FY5YyLzrW^#4D9B1=vqpSVE|6LZ_(aq7p8SEBPNOe_Bgn7NCpHoc) zR}00Vn!*JOM}!*^rkPZb!ZtGCu!sxHBUyo=hI)_finTw=dbtVvbQG%dNRm@ zP?Vj*{c-HBz0@SbNpU`gU3D-%8Be)MGCG3>m|Av1rR{H&W>|)mDQ2&zRrtZUP6z}Q z(?Cp$ zO#M<8d`ZmuSARoyI*ePgpp}A$y6TB22^}NOAU1Aq6+K!~Bsfl=<(f2f42Vy4Dx{v3 z=1l8ji`VHeD^{QUZthbmBDk(%vh6n5SX@c3OWh4o^!?;OrK?qXoJ_#N_mnJ;a@s%= zJ#)Lg@K6CGTMOc3VfouxHvqvq6j{|5!^z@c@oF?b74Uei)B<&>qmELdYe$nAVl)Zs zJzy_uav8AP@DgCTKx$(tF%C*PG?A)FuneDrQ_*S(GXC{qOs3{lEruoW6oy1-auF7M zhIi2}xu-?+ODtbwrjM2H`{W_Wi(D85ZpgsT;hG7O9nFQZqS_P~ZM#?vI>BzOc^X_@ zFY9Hr1pCR~NY`;$W0l^}i7x?0_NBvv(fkl=SyPC+Kbc=A7S)p%o>bz^p<=}H`%1`i zhn}0wv?*p)#XlyE)51Kl}JW4^fYG{lyP`+0Z^awt=QsJCu ztb(kSMmKj3wQ`_9L`xv@%T+IKzwjP}!i#@>2pm$kq%Gc2o%{6%CbsAZr~K+mN2HX( znK+mpVTj|B$FL|R-c?=9O?NOsDJ(J8MpjvU@t^SK1m5npHjb&|Rg7skdLcqCx_Fhg zTb%1tSvifd2b<;DJ`LqDvXmT3eui1c5^QiyiQ~*+BkUvA0MJij6L^sxyq84Stxc3o0Qjm2LB$+q(2VaK5;jqeCc1mRfMYM4kh~~h!B#T1 zSezfVYun3aZ7*8ZPLU%GI;8ha80iCvl#tlRwUTBZ08ZmA$JpM29c(QHt}{Qfg@!$s z=^$zP1W!1ww1+=O+IabELcb^ZhSjBc=B8s>k`9KEI~y`JAVx`|KeqOuy3h9J$y?K z=$wte6%tP(n-l(kqQ-$JBH(46Ob~rakF1s+45Y7E9AuL0gdGS*)Y&pDbpAX#KQ_Ms zq3Mmo@Qx%}vm@!D{MZ_wqP0AN-kf){?6bjg!LScbC7&~hRXt(2%0v#3M{rM?C)tz( zZV$qn(M$7+>yV6nu-VrGf72vs-;^nWvr7NDIQ7wFzc1!(eMXkT$$>s=t>*|928e0f zFnq;uyk#jhNO3qghW4fm;U3ZwOfpY6_efBgpDEduZD5YxrQn&SLi68_rXY`uF!vs& z1p|?D<*3`>qzVX~{^a44hYw>8I(vy7v87-ftqM|sY6j-yV>1aH+!qPB+4M32Y$K@~ z(@q*%etO(YUTvvSltdvQws7*s)LlBf3B=!f3r66u;F{>6E=Pr0#mHo=Vgwe!_>%${ ztxXobbSs*=)~jUNj7$@2n;M@>gT%0%4(n-=E=u*D4polL3GeuWW-+La3~KFc?rd*i zGED}lQ^E&+h1J-foZyt`{t|X`DrmY7I}_eexX_$sL)OdfE7F8lx`hH}G2 z%g&*7lq&t*cnoK5Bd8~6y>w(*RRind1LlqulC_0Ru)NA-Cop5BFAQXKmB7=f_A~el z1%pWj-0VJ^PxD$I5A3fmEa>Axk?a0Q*QJUZQU+G@I&R6MjDcd&isvZr(>aG(1SS=_ z(Eg|y2p^@@98}Rb-)!`50tF->C5u~|SR|nrm)tP*>0e8$%%zW6FUMQxK#C=XK{dl%ELm^1&uG(_RLyZ| zr9H+YUZwDZv`0sVNXo+MX#dpbr?7^Mv?OnF&K1QQ{RnblAVbjm*g}ud1I}HR3K=7d znX3^)Ie3OgsNH*f17;}#N5g+Cw&3S_M7lf3az$56tEn=_Lq9O;93KO_LcF6%+LVyd zB>e+x16{QeV4`6?G7qkvI5zxP4pq^4uT&v zO~W>>$Q50>Ae=yzN)^~pY&B5V-oBwt1`Bk8RnY&%WFL(1(s+^@w4A3%ByH_kHVn+F zUc8)FO`HIV4COk$@8x*KX5U2!(q(R?fqzVPMloTzE^>7MzKgO1?t+u}ff|pK8*D3N zGLHy3x%ggDw}w31=d^8zKJjCk;6RvNYrW;O=N*48EL7eb~! z1r}C&i4B7tn}^&xu?S~m!#F#_#BF>^15^${9(&M(-3tZk)2C~nvrF{|=XO{Fc0z4& zCM&n#$ZYjD`^yWsPv1R)GfvjKX?dHneW;Q_A69v)U^>LflbZljUm-zo)x{n_y%T(A(DwZ>~L6e&&34@uVaQF0n=*tK}+ z(v98AoZu*+ha-ks1r_+o1}xtv1Y2L6`8%mX#$W8ro|+MqER@Icq`)%Z4^7GX6(>TR z85u9DK@^mN5pg5MjIv7_>Kphk>S{6JfJ;SGaby>junF;y%L+phPrPS2MQw=hfKPH- zCm!bMjl!8PPSxC5zLf1BReTC9z5{UaWNMi>mg*iDAk_vjthP~%LAmoGe>bPIxKoT< zu21H;nGwmOiamOC4edn-%S*;cQ=yKJowI(b+9VQ@MP+^$(M{yi{sIQ7vmGm7P1Ok& zQ&lQndw^auJ^uuGC#~CoZ@{53E}A)s6BJK1x~O7#ju5GR_`PS3G1XxN2Q@AHC>oBD z^VBiUpT&?FL5qtP%5T7m)1U}bwJDx#@egT<|HVj@_o9kGumT7@+{;6c@Y#wf#084u z&`6rJTw##ypZrKQeplfRdtrTBB(6SNumfmpWY8f}GIHw7GSt(=#;$~FCg*nQh9L413Y988=Zw7YQt`9xoe-o61w-WY&n1 zHURA8iv2E5klu+>eUxu0uu;f)3pLK*#{pm2c?taXFTM`b7ypgR<)ZqK5nOvGk#wba zk2QFH@2LxQrpJ&|9G)CWT0@3GFrNNAnd7D%pq{q86=Q}4kf9g>eDGOW*=xwOE95o# zK2#b2+%~Bpfy&RH!9MoYKla%T+S%sMQZjm8LrvudhAfiDa6i;y`J+wF2>#po)VS6e zK%Eek(G#Ll;COP1W`zQp;^+p2ZG+(_dzsDvk?`1CP0#k(h`7+E1b4y-CvPjDO`0>Q zQLeaP`)8u0D9%QJpHZznyfHi}v?qHR^vawJYE%+s<)DZv#7rX*)qtaaMY9lF(uy3O z1gJm;18DvBj-YHH##Mi{*XrDBXMfpbCZJ6gK6>P|*cd(n&l1XqF&Zj?g@jAgR1PQO zHE^N|=)0)lLubcfKp}iy%5p^fQY^QOXVv1RAO!AymATLcg95w6SoLt)w-`w^WW%XC z)=L``D;aDqezsR>Oi+&Jt^(O9|}{pCMO(%XI-sGt1zL=wln~vlHww94;_7-t-OI;_K}E z?DYK1KCWsP+%j_R%+4sz6PN?Cb?u;}>^p7MV#oni<$PQUt0WkFuV}bzO`5MYiFTqW(f9>W z1RN6+??5+-xwTq38!eIgz+ybS#||nyh1J*4CQaFNNXbRj4XXZp0W7#%>+(r^1ZMST zTuG)~_9dusO6|rfeYpT3`14Xxv6i&LV*K}Wc-hBcbkfIFe`xv=^fjo;YZj~Gm1SBL zm1uMhAPG|UO%_hFnZt3>@mxh%HjXFzedfAK z^Ls>dBgzQ+HuTibc!Q1-Hs(WqcQ2cL;7FSylx_RioFA4?!{WgIcJ=%-bRzc2a4$A? z{?KMF59aEphTGW0a*JK5xkOlTS^G3@vS*oWugw(J$#*n>b=N)oU6ZNq6?3#F=xi%* zO824VD+JQWO2RkXQY0PX|Dc^^2?Cc^=mpu0Y6cRX^d(4gIwgv9Ra#lB3UXC)O`w2D zj=$}&AJ?=Ti)!JAuL;RYL`BE~(TALzeVhqXibTNoY+7%E9oloHD^*rD-_wSVGV4SL|+hFlyM%YPg4dbqoUB-un}vCy9- zn@A#*x2o9^8g34Tk3-DEw7*nRV_-Q32QFP`2{kUFgt79tKB|aI?azcOZ|rHEa})pJFmA zlp*IfK4R+85Trnt%VQiMDwN;z=#j1;364ax2|4uQ?iAtIUF2_cAkcQz;@v?jSh8;KC+7xu1dpyAVRli9S&iw1rVAJf z3}GY*`+Dghu9c|?ez@u`CR&q z7@bD*$yse()SBpmWsHGmkd)FT5!%q7sBm?N%U+UgN4R>Sni9My6s7eERst5mk(0Ns z2<=d;kyh92+l@q4$ka+%IYk0M;$qrzfV52IurFv(`_WOs^k{1mG7uG-T`j4$&*Q7< z2j;h?Fdf*zQ_K;68Na*t?t9%sDgqg}atysr;Z}C82yFb(@C_F`)z4~lFq{dU`t}Y| zamfnT>53s%-KErV70WJNQpY-L`>cHNRAJ?#2N2a=%oV1ciNAd)cNXxHC6cK?VJ^2p zT)r!{;Bg{VJ=qhNs*E8B{4SK#3SY8qa{yuv5|?n6)k*!~7)QKR*X06jhUK^<9}-jl znJP9C`m?1IbDr@vHAzCp5t{&=&-ZzkyryRbjL->&lP9+IMQ6vxnwCRh_Q2{% zdN-vVL>2^VeZDe%DHC+=O&0f%iHg>m_MrX%Oo)@MKa@?CK&=1mmVSste*-w|@*=AV zLLW)F$oxoDv7<)#2?UHBy?D+^6wW>DvN_v^Mux|C3+}Snbjzp~K2=&5U5h; zi*6}^SI{6psdefDFZc<&6hSKPnIo%^aUj(MY(-ahc~@@l$y3tfd9f>t^VbYcL+MJq z`!2%%S^v;dzpD&>XAQ;10XE(1AwrG~!r%bjSZHY<11a{?I|w>fO01#*^EJS&GQ2v2H3=nHtB{lqmnnae4Cl>y@A z$_-DsSfYxD!kXcUbwLdeC=fu+;wl3_0X`Um^Ot9ILV6)`fzp{+R?VC^fAVuexO zj36vCvCR^!ieco8F+2|k$dhNO_NY8WXKXMG*GyYf1ez7>E))V+_Lx<`&;HX7D?E66 zaD09^emM6H5SGvmgjK+tpuJA*dc?j)VHav<#gJ8qbZw~^xGKQ0f{B^TTP$A_{qk8G zF;}WL$*=16l_6PJSY_!5!qgg{E0@Vaadw!#2UgKBY)V)j1ZX;K@8n^l)W!cqg8P^X zsYzR7$~p`yMX7r!fY~R(UQ2Xj{vr_etS#tPoUu1PH+{2MOkPf*vJjH_+*{ z;Ob8KZpB1?hOnHd!rv>3a%mAo`P(N)=U^wC()Y$5Io`!24m!h~s5x9eDOfhj%ct|E zA*{^2`ThWPlUnqbo9#^}LpZY-AI;pmOOqN_K;(_2a($0WB7{ZcC|uavYil;+Yb{|* ziNdFSM(i28C*c8d$Ly6X4RAW_9%C z|6}i6yV^>Ubm8y(3LRC|LT-aFw#&Dg>T|FFn;8r&gI(^nt7#z#qcKRdBz$R4{rB@c zamk&zZxX)r%z4*aGj6o=5*Zm885tQF8OikODW_|WgmDu9Kqz+az0;UNlmn4~#&t>}M2 z{&`R;>N7)KE&d+? zg_}`KEC2-?cQ$lNL$Q$#V_TZ+2MHWjeBLJn_EOWPo^~W^OaevW+f?!}L#yC%SSqW# z45>z^vZ{AY)r6|n%Pq+gIXR(bK@@TwT0p_0)C9Ta>TJmv=J^gJM>oxw>aq$@DT$cj zvYE8V1v1h4X|P9%zj%y?y#_3Yr#uq zf^}3E#6WzT6qcDTCpr$Xg3_CPM135|3Y4I4Xzif&M3O0^d8}C2EXnSw2QN0{(0NUE zoF&+M6Vf~i`i+jTmtlQGN-EY5h-lT@xvJzr9ei5BvXSo(28cF}-5Gk`mMn-TmdG=n zxS&R=pOp&DV&KDXcO4Z;AqUqHrOm7yvCS!+2Us7v27b{^r^VCdY_HFJ=`yf%*XBw0 z0}INCNohGR(muLLUX*8Atq=_36yB9M5R|c%cGMt|-$DQ;fS^2kCh2hKFI^&CFgRdFIUI>kU+TN2j`qBSu?^{}#bX@~PM~n&unxs79KaWwXQ2qT0P4nKRDBr_Y5d+E~7|V_(%{Yj!O*qGqisxQy%?BC;9uB(1s) zGqXuY#L5Oyg&7#cr1B7#ECjiDpD7P<8BrT5aAU2^EbE2*bPUZZg((EgT1HgDC)y<= zi(NRn-4TYl+$&=19U!Z~kOp2$W>~}NnryV!LdoF=-#j&7f~Yt>k9nmQb7APmQ*4cT z40F@%wzLR?2{LqW66in|14Yvo3y7kmrF?C+Td2rXOVmokdMJ_yF0P20e+5O5H&^sp zi%Cj6&enWCy?tx_zQl=%P5mAn*YpM_S@W{nW0(ckeR1^f>YidFCL!;SA3>zg!s*o` zz6+=KjsPIoIHYC?CtQt&aJKi;g%+FzgcNYWhg8NT21s#@luOSG>TIX*tTy+2+Oqzk z*S5gFw_xkEFAPOiirZmKwkQRgR|~D3?NybN#LXJJSq>(5wH#UBhPc)zSgAucO4xQJ zpD0=>35b@d$K~>)rLQ}U_;=ASTDbfBgO zLmWH_^boxCb;{@*mr;%A$973TR0{V{YKX|#(f3T2VrhK1{1Rb!8dJ7q!B)7}Rg>jYl54M}{!Z{D7J9 zzg$7#CP8O`&&JYN-b)(XLH%V&w{uLY)F4;tFE4|{%b~V_D9s&a8P~dTP z76OIj34Pmb>fwbCL-qJ-Ik#Fdq&dG^l*|%*0kn9}T zdV78nR)){mn-C4p#GJIZrVYA3?h1nj4%9a$lkTTh0lJExZX5+4bEWN_LuJ~TZZM8loCN*c z-~oWC#R8vWp5^2eGSx`N@4E7EAyopcgGQ}#h6y%FT2B7NC7cZT0%gv~ukCV9v865TxVbt^DlUU+fR(d#O7G*}J&kVSm5-qDRkwE^v2tNCJNCE$|HZ0*_=0(S7a z61K_W`Q?|ws7kYx8h5CMWJ078IhU*pAQ;R=)ku1g`G|VSYawgGz8=@8P_S@mD{g(M z#@|Zh(05!lxq|XmHMOkG>75EFlh*1FV4E~5STf==A1>Q+U9iIeYtiTN*bbwlmmkN)agnwqkhx|=h$Czn0A(_>ybI~@05wzeVLJ;7+@a_I?4pnb!(#m}j!Rx`*Q+zS0P^i| z+rp^OS;##E1d@ucNjCm6i$)M4hKuny_oA|R%0**{o5qxz?iVk1HbI*lr2Hu7vTdx$ z1;Jz&@nG0bfD1dZ%Y}_8&u9`MCLR<&lq6?nv(T#mTzeDlPXiz|EZ8JJr4o|ICj_1H ztcQCjiT9v`a@^})(zn&m@sDvWjM|yoA>ZFX{6rKO!E{azvRZ@jIhC0=BlqW$XEH}K zy-g}vvs~8h;QfG=ZY}916xYLX`3fxLZDC>zF5qv5&8VOR`>>mt;V6ol8Lr_MQcv*M z4FfUCksF}l?M6S5v#y~KwS4U-azl+CA5(7yV2B6drBDTJy8oT0=62I5x`+hH*_?rp zwa$nanhf`fLOIOP=sqj%R+7xgWOcfL=q*@nkCphsP5kXx%J1@u*;PMan7`I4=BOmv zQ5<4l2b`BZ^j=}SU65#@YR$?8nFb$wn^gT(3K=b;Sksn5rqjEKTm$)7V^uf0aG7k8 zVMvC+sV+q&Nyr{$%At(ibPT*Kp(&lvrH%P@mKIFWa_)|$2}Y6=81tRK><&f5U4oi6 z2n3SRAv{Rx@0w z()$iv^^6w5NT`Rmy$_g{f@RpB%W;R}l;Kk~>1N|A_)0hv_yFhtnE+t#{`-eX5G5+) zfosqE-Pl&4lHlkZU?(^aTt&(tZGDzM%$>QNrH1L~Nd$2N@ z4oA4bp9jB_u&eE+@uI`Z+TwkVwFRrD`*^2iC2+lb*j89a-n zaD{MFVZpaNaJZUZO-0r>-(X4236&wKa;sciVv2IP0G((<3G0pGKODDZUbBR(KVgN^ z!vgN}`SP5n;frqRr_KS)(Y+p&?Xs_;P&Nf)5+6D+!L!n>A1YYRL*Uydi-n zMpqXngNZFqx!xzAs|`4RqcR>ZmJTJEP#$7w499WWTtfT45)@RC%d6>GCHI_GX zSjJc+DCRJZU5^V`{^JT_nWI4Uda9>6%WvK+RM5sK5gxn zG@xZHM^bWFwy$QV51@i6|1H0{edpnu^#}LgtUp{wM@yOaL(7>DRz0ksttR)oOp{}O zU2(|QWN`_Tf}^3!mJO4sy29kV!5)vE+)A)2*y}JD62Tg03W|WaybL*A$$B4K7gOwq z1x2Mc-p~ZSKO;r&8u?a}={Uc~AFpW1bDnLtxz?P^4y1eP$(tiVwpFV0_( zo;a{zoHT78k^8WGW4oyjMo1nugD;M@S08`?O^g73a0ouMmjCU414hH%PW`pH-oDku z20{V++WcwS{NH~DA9_k|gpL!@u&6i~O3Om9G6`_2e##$z3=_SY+_w?`Y(BXa{R&#^ zmaIT=9PfTOLr_MtuxU95s$W3IfqRO2(!q8+8D7pBrk#!_WW0mtTeKk^zubC$h}Z`K zK*;FqAN=L{&XcD{AqxWlu&ivA@T;U02h)&wF@+DyBj2O_+<0wq3Vv_cG5l-L1)-+mB=ek^&#gt9W*3` zVHYKSvpyPVxph9UV+}-si(8MsNU>iU~I$HptOzjR6Ros~`<@ z5*8CeT_OO|aqn!Vm~2G^1hTEjc? zYtu9A2Y?BCKpHM*tYhI7Lk+o?`Rm_FQ<$wzA-hF{^=7Mh_zb3#PmLef8$aG|{8!^G zHU^E=twyuec=M(O=jJzWZu}R2zQroQ-!=hnG*S3Nud#amcVH130y?i7KT30rRV*8~ z8o$Tc+=&oru_v-u6mz;wa}bsXS*O~+b8)bTMPnD~h0mUC>}`S@QEwUDBdvdxz2E{+ zqG{j|q^gb)4l1D8Ahdw(MW!&rEjO02;aH6Jr$h8uq@ItTeFt8>;8c1F#@rd<-MVx5 zOhP0M2V5KttK$c7?eh-x_;Dx(lVs%z>>7)_@@Ym8MY zc^o?)<3Q$c*89msY&*vK0elvjhh^y9pvK`X!P-90mTSnE5mj!dhaOC#1{+a4)CCz3EWqVPUni7V7+GbWjge)7{Wm}j#!6ojuWJy_#PhX!>K2orA=Ip& z{=ShO*JGr^QW;XxBF4CWKuy-L-hr zd(-s$6yIWiAzJ1>iAF z?oPXa43QD~(w$!BQuvg6Qe+lh3(j{>Hyk`IQ8 zBo%~x8KKc#jyQCTMfX7295iFs$hReXWV~!J#cN-!wYg!A@YuxJlZMK-qfv|wmcoQ9 z4q%(8&b4NAhm+Kd7)lNjq<4=XJsGX`tR-w|vxMAC3dFga14f|1TL$1>E2fK&lM5WH zl`Le*>iQj@m3$qP@K7X_=1v9bGB}khk5lukJLS5Zdt1WmJ9;F@#?@>LNyvF}giAeu z!qiQB+?9K@917)3|GEj*wM&N5{ z#$Yjm$Kln<(Wgs}3?AULhrvI66)`_f`(KS-I;2jij6Czl+T~iFjVTu*7S7Y414X%_ z_bGGVHEYu04|4y@nyH%FU&IG02`kpO z3rGp5rWF56*k+WLlAhKTcrhJJs9;aVu+e6sKOf+f*9_vuM@J z;E7_OhzI2i;DndWETg)IuCEacuINYOeTi1N>0573E12KWi}wQ<79gv2U`s$2^oR15 zM8x`Hi^RRTYs42zyUJNIcfCm$sd(PRD^N5bUWB4FTAM4UhL@)#`m#Av(zyGef%+1v zcB9uDOg$nmbT$n0^TG7hHr7{)Ion3yScMn}kNPU?5Z-D;Vbo0&sp?{6yUVK+s8yyd zIiwO?4y0TKMqK~+Pk1_DiY`Xc|A8cPWQ*}fPF z?ivNYn9)Pe$iGL>?~m~O2kjrDw_nk5;j1cX=#liU&mUaU7o*G1-;6U#B|%}{G@l)A zc4u91P9W$vW0h>e=(afCHhi4+)Ye(pP<)(XBXK=qeJ72{#<_?g_mH(1>g@hv-d=d< z9$yX5`;Xk1P+0WSl`d03()64>6c$NJsAROWE@n$Z!3Jq|7dT<^!i>mNxy8UQU&U!N zhB(sLlS>!VkwhtK_P_iU~triaJxR17uHL--e9l)8J!_I$hPvXYmEh zXzfaV63vw*)!0~I8#C(sH{51ZN0H_lZ??gDFqzOUo^%&S*MfPTBdHcu0qDG*#L=P0fLmfOKGCm*Bd}V^nXTjD-YN}?PW>cZgZvclUBl{(lkX2nz4H>(` zlYCQ1n&1FQn_IH;yWt4O(!;*7T|-(IUx9#&XiklnQi|EQFgL+Ht+{lCclhoKiOtn#&v2z@>BEo*)SvyEe-Fr_t2;loc6T1{Kj|Fr>~-j8*!;2e zY@_pZbL#-7a1b8HUXM3}q#E9;!Ars|ok+BB3blZ4EY|Pifp-{mljbF5+s?q_?k9-~9%ftEcC) zF_Ay(%FMzmeM3I(VAX*jl9B%chn^H%{T*JW;N<~XNYTO-a~z?uXup?Z9Ggk6wz2II zL{3lfYZV@tXKV~U7ClctN1au9F;an0r1r3Q4ZCuuPF5!z`m#5;_kfbjUiEy`k((Xs zY>q_=`J_TF@z-_XJgIp5S`}|+74KZD;vK0d%kE%w!3pe(?&>M-iX#aQ6Zu8iy1jo3 zz0?(Yb)U?z$;A~QnydR)P{vCYz!o9jrRp!u_Y|TUymqQU04)F9~r-O3H zcrWe_*v9BNk}l^PFJDPR7v1+CQ4F6X7`PJOMCI^sOTVX6TzKcF<>TA(Nhnl6f}n>Y zAw`p3H<5O?y)I7;Ye{~sELq0wB!f_a?Qq)7q55q9`j&4d0x>&o`g%ZEDJ-KjF(0>=*Sk=xj=T9BxYi&cLU`w`cP4 z8xGm=y~W^qNcar?mJ~8NNHXa*0cHzp`={BNX@AHF-`Wgm2Za!hJ5h6yfWw@T*Fsj$ z23*MTfyn%0ZTL=d7<0*idmt81sN4MlVs%Y zz_P??Q7A#b6lS2z!35VldNbV#CGBAIpgD@&aD<3dgK5@|AX$#Wsuf-}R73+31twF! zdi`OS7bFA>M&rRl8;$9#|7#ClGDZ(?#i{tx)THb~E4%J8S0La^%C6s!A>fOtZ%0>2 zd-`oTNt?*AR{1M#SHG=J(l&Ceb^eOm*Y9$LP)HN&YN}5iJISyQ;|2P3GnwgKE>(JS z%WDZQ@5Q5iQQR>1j#M&NTuQ0Lv(1)d3C?g!E<4QkUxw>O@CTs0`GsI6~kW?;0>G%OW3 zNkq-ZkD)(HgO9y|xb&aF$__aucb<|(DU_hEZ)|(o8$Xs{0EYwkxk5H~=)S5FRTOw! zdRjG6>BcDR?Q+8H=FNu>VlgD&BA#yEy!A27!MEikLZx@}ri(QE`jpnex7WFw%b{{6 zi{1J^b2o{*LMADOuf^ zhMKEX)ZZ~3J%x2KVmPtk!7>9JH?h6MQi>5Fox#)-c;Co!8*5`sRQLA0{O#Ec`UY!K zHWw>bF>h`0b;*EUcjcMCk`?4ho-%4Zn6~V%qg=8$X^BYAdlg=;jAb8vU9qxpMcR}_ zL!F$pxEV$buNwI-<_oH6t?;V`IWH5T=SlhsOa+23A_Tp{!YE>O?G1(_dHOVY;47w{ zHjJW!E}lvx1GbZTFhz%8GQ6AQom|WsE_- zMnljJ2TNSdpcn{T!SE9R{DR){kwG@_L-sa|&7+@D@$M<~bnjbCpP-`TU!D?82XHXW zgSoWoPyod$h_Jl6V?%5gv{_WwTdd?dIGD%`8Z>PcUo^mIsp0_l{ARy9!8wAPs!I`1 z2*91}=RdwxKens-LA{|A85@>wi^k9tsVZzrG08K+H%19#D*S~T6gUA0tep+@d~tKh zXNu?)4zA!O9L`gusg;H3%EYBk*WMc+be^j6XmI@?z)k^rvsTr0&xW;~~pJB5}O zd4gnK_flD-|9L)Re3IxN@ zvfe;LZ1a?g{~~Z$(!9YRf856v|DC7w0>{aW>`S66-oW)53+up~JLAXtr2(aeriKhAh zl-GXMIig1XB~{VzHqD|`4)OrPqG`vy#@)@;{wKJM414H+QabU;Sk>NH4%fhVa-a9j zcCGX@kYt%JqbnFoH~~9a?ndnDD8yH?;Ahp=KTb}|OID6qB*Ez(V9;c4=+s@wR{%?mNWE6Qox`q{R2hPP4nAuNs z>{FH(+Y@HVDsGal4&fXzJo!~a<`4u$WA5buEYgUhgV~|J1j1|)A|mSQ8k&yjO5`^& zO|i?h#S)bI+QgR)dL0g!@4Quc%yw2%y<_?R$n0N})C#n~uP(%C-db6TTqp`-S~FPm zB=JxMur)zH#knvphjGCaxZoOHoP-}YlcVz8T|MVIMYPn_^Zu{r=eUP~3U1VwDhrtV zT~dQF)!!iYC6N7kc94YA5IH>4sblFpI`uRBTt=D4flWD`+6y`ySe>xT5zZFNqBN-f zCY!eASs0e8!+)P~vPvgYP9_%h$8W`OjTT}LHdlAouBMYUOe{DZq^pXKa&SZVZ$u65 z4`ry4pKNkx{IR+l+)vnY1phF5+ckItdTkH&8& zAS|rKOtG{Bx%s^9 z8zK{UY{?11X%mJ#PX&>KoE#AVt%%OehP`8uADtoux{pAodaM~u_a9VUE-n{N4}}C- zToHZ-5^@`a&?`Z{T4RSb#GXm)4Y=Y3&ratk5TN`H*j6I5oI~t6ih$7XJ;yTVsYpQGj>G<SC~GgB4=FDd z%Buz`(@5zC?=8|T3`G~QEW5W||DpTC58c}`r+GGm%pbbzI2=Hk*R#gWhCI35U1tzR zP8j|Jy?;olglHD)C2W}%BC0YuY=ektNZb&GGM+?;@Gs1)L$3vL6!HSVgTl|{qilhG zFzHByc%g}^hiqn4hU!T&!U>jO>w*R(P(;CwkX@@%6UbIbC3a~QWC`U+BHtxQSA=Mk z@v%=bX#KgUV!eKi>#4)j!9N zS))spi)LImNCBlN>M*E|L(zdJxx^J)=p^pfO{78P#5o<(ns3F+NxZ(A;^8%+BW9CZ zDGVeJ6rJOJLrrj;#6%qr+DDgJq@e-MzU;IgfLy=nbw}e7f=8SSBUwROmM_~+Ivq8w z0TPf`){+u!U@F|_@M4DpPopj+3z{XU2#s>pMq->K%>yhP)lY{Xi2x$Xb2$uzl1nhZ zGbsQBBZgQm{GkG&%-{V&!p;YOcl~r4;LAk2-RBVc*l)|xftL*ZY3V9*kv>6)b?nnx z9{bD%P#C4*^riZ8Ji(zGj-B==TMWv6G;W=rVQrY4K>@;y#|J45<2{LhRR5CO8AdHN z)pH_B@y78JFp~yd_Mo>oUBlslfNuT`J^X3)ee3nD)rY^|yzwJ1f(Yd5ipYkTD64pV z91Urr`ezX8Eay-UfU2kRJ04XLIqP(vQ1Vka z!kW&KHeS@tkwKH2*FZnlo*hyDS;OT78H5&VgMr0$8hnV6uq2KP<*o^W;Z%yqwKn1b zQ@BcAYe)WoWt%WzL~@hK^3A^Mf(N9s3tM)<3ir1l5ME@rw>04ZPk*3za}A%5F7bgv zhkn6}X}s;l&1X_z}j!GP;?i1T$x#L?a3~3pW&o^ zcrY3B-u4(V1>`QBpv-$7OMByIhz@hnJ%0`lTU-c~oF^Bn$l8Z9s##rjbsr*`e?>$B zbmx@r|JceEuMDi6UOwWb0f0CR_XU{93EE?FzIx`6gcj7Hmo!Bc%^@=CP@Sa_L&7oJ z<~d(Sp?(+~p2S&n?Fs!~yz-MzR*Nr5pddKsJugMzni<>e^ank0AYFSxpKkgMcTiAC z!r?!h^|J&z$GnsSkSy&z(ts3vPI0n69ri>|_d9y~bVf(6-__H;TEF($qVd{3X(Y@n zO-t6cT@_f{r^}RI6pLG{zu$W|(5Gsh zA3}|!1Q0=Gm9!>Ug-X1Z<+DQMpj&^-M76A567Mdyuzpc>VcvynG7PS@tK?s}W{k2B zfKDuzP>k|3e;X9?p?$J#Ge5C2tBCmPeGzExs-N@kU;B3@G(GQS$6NH3+)6GF6eNpPqBwSRv`0q=<5YgG#C-J!Uk-6qP)YJwK$b7eEEcHK!IdKnZVmFIE& zzxE!*Sy7|8972qhR$KLT@#A`!_$q}p(bn12DLY#=b+wkOvd*xPbAY@EfVErlqjYu4 zV1&XYS<9g%cc-65C; zr1gTb5WLT!EaZG(-Ai)~UWt!-?#t@#@s>)qD;Wj_D>K&>TiKLisOtwR;8QtJTEf*b z8EHV(t&!XkcFJf$r4Yo1kA$jKzT=eo88tG$N6@3hD|p?!Pqp{(Ri(^SZ(Z{(4LO-l zu6d4nPULxOexaUYzMv(Zp}7*As6pRIT%==xzx7n23)q5eUx!;yL9XW7)>FC$15Vz_ zbnVG=ovl^pV{2vCVYaXS`A@kA1dYcl{(35jY^IDwD!oHO?4Mn$0%0x zTCCEyoAjb)gSQc13fnP>>JVQA`i$TJo6X}Fdpn)|%`JI#1>fP5SCF4Q?i`}aQjWh- z2s%2h@v8`)4`Ac4v%|}Rp9!su)P}3Oze;!kpFnEG;Z704N46r~Gut4h=HjB@wBl;& z!?eoodvJr|$0|at$olQIs@-ZqCOMSSlH8~3X*z&L$WmgK%mf-F_P4idtX9pn&EuyV zhsRs5I$H-vcroMf*IN*@(Wc5MBfW5^3lm=MMEhOccGq4g0lcw<1SZXEa0KQ5C;RO- z*S2@;WXxO}JXl3Achz(*c4-UcZFBERn6EU^LQUC^fF9z-ixpabgd+g`jEetvyYqsH z3;w)5p^`&j>kI7)U*L+1>2!USq-JU@XIl+*OD^;S_P=uTusbprYGBsK;w0&Pe#HL2 zPln>`r(mMxU@+OH?#tC6T=27aJiEyLExT~toMU*|J?cEc(haYu5#I2loxFQa5CGj= zLo^M%H?*~Pw6XhWZ(oW%!yVaE==YM3i1ItzTZc!QSz(0P!-}}Q@nZJ~&Jn7MlzM(a zQt#3Tl===e*A8DiKK#q!(bls^=F=rxl9IjA=GNmEPgGA;GVwfm*d1MyQe`V^iH{Ce zNRWUAL9R{GBbc)<+lNORM>`#KRn?4Wusk6~%a>$-lIRpKGl+TQ-| z{*!(5h(Z+44&o|2ZmdLF3A?C?&^mZ&8^_e-mF$$B2WX}Qm_2bTgsf=Yc&(Kmsj|m6$2jn>>3%$KlnPom(O!hgDl>D+i{ZVQ zd4a|IG-tSQw!u{q3>|H-NG0H?%OyYbJfGizwD^eVDp^$Zn4BFJVON$oX4?^otkAjh zLt~odHB6v`jiaZJOgRL+STi)iIJfihp!rsiF$YL`Ud5wjhubim>qp;uc#zjGIFrrq zD)TETx}iuhfCgbPH_N0oB&`8?m;wfd@e z^VeVsfODqDm@1^32@Dlh(+aUQY%{oOHwCg>yG~$QN({}C5>3$u#5z+tB#RD6Mv%%H z3t!8I6)4!f795nY@>zLEo^lg|^8uYLz>Fp3suya5U7}e#RM@$E2_-e5epmodPW5tM zC8>&~CERH#wC}@|MI1EbJ@B8*IdsM>SD2nwz!E$^+KpyqqC_tjnJ}_)QKFYCs%u&C zVxHHMH8CrwOJsih<}QyUiY)ekR3>H0mP-}dTtulh1_%-XE511-A+XYHRW&37T9U83 zgrv?ovSdddI@Rk#j{!!Bw0o3#g0B(sUAamqV4Y)t;_@#X)HkGh(aS{ZIiKbjNN0Y5 z@f1{$&V^Wvgrd3an0#5tlc<2Qd5v4cY7z+%@=o0uJf0!?8bM3*xcFJ{z^II-EwV6j zd5acC9)G((z?_BAqG4$0z^H8`lzIt7Me;rb#mIe8;UuVEa%>+J@`a1{Jv{Dklx>NH zNNZ7%_>2~WD;~*4W%IeI2ToKl1WyBASs1gZfT!ldmPIA9NMUsTfW*iJ4~vQxvY~+} z9|xU5Re+1Z^4Yv;LK6J4JdVFkKXqj)0ryCFc|K+BS*jozlIiZQ*Bw z3-!sgz)`S~0ES!5Y%3atvBKJ|5vJ%@H@rN< zD=%Z-Pt{@3YsqmqDmhvZsMu&Ui(#qiqF?Fel60*Q)~+}K;{uxpoeJK{*+hg1HXM*f z;RLe-QtU2Dr^U6k#?px~M{l&LVWk$C9HFRl(!Y3mn9k)Vnt7CMq7+IM#IXzzlvuJ@s5%5& zonQ6#iE1NL%;#j*7HwaFrV5(Y^`c(y!VFdBvFb6cps*0tkyybPI2oRPl%lOsVZEMDn7Zgxggh5_f8W2vdRCwR* zRMYFqU*#x{7%LX99Z3V#7mpaI4rnMyQ6tm)N11{sMe^2(+WSNB^ZfwWZjJ!=;p&m{ zOnl!+Q;?f0>-7+G^s&%+2!=n+8Q2xKf5}?dBMe+(Zc_(_Hc5JE0FJoYt1FV!HdOjhf}yf zLanmR93%>2K{6z{UMZS_G1gB}T{3OT#;OzeM^d^|}{*dA=m8|MAXk88rnA-vu~L zOb3nW+4u_ghfW3!yb$wztFv*mwYl^WbptSI9j*OQ+3Oj@v{!VN-KSY?#FsOY-om#Y zNzF|S2F0I;dL>)>R@oY_rQ=XNZqc^kNOJn}u$BHV72_m#rj(~*IMu^c4+-3I0hN>- z?Nq?qC=RXB0MH2Wv6b;02! zLZMkCOWJNd+`hj74PTH5DmwOEyK_D!qZG+VPhTgWjPA_FKZ0SL7|g@ ziNCH{d%-JeHZV%)Uph=**`B=cn;XG-tT~s!a+{|{B*+9C@*(rM<%*tiH2^)T`?*kS zGGHrQndnm$2{Y%VV(X$o6kD#G7rbNSUhlO77X+ z<*&WLtbi}^m@RZ9~2=r9m5CTi#`R*D*fWiop$#@R-P;(vji%@~Df57=M zrb5LU^ltEJ(0|mOOuC=4b+DRe#Cziky5l!n;=p&)D}=2aj-WugM`Db4fiax`HByiJ z5ZQgy0+P9TG5iRFuig*#5u%Ol;dpkA~)tlY=L7%z^H^RXWn}D;hws- z+kBf#N24AP?oi-;uCuYklvrS0%*m^I;L`y&+w9*06YERJfP34M*%fR{g}vQ1)vfw| z&>r)R<@)>v|1~mP?h{<%iZ5kH%uz+9Ac&3{+~pnT7)&|i2T(b7%Jj)#YZ4=7u-(&q ztd>s(u7QCVF4GA3q>p#d09b+XF}7y)q~fHq&j(<00)l^&Rp{PK&i!$()R8bago!_o3y+po(H>0cA*h`M)ETX$&ddkmTlM zy2G#TJHXL89rYU)ywLM&*tu$(SYQnF7a=6^)=MZRV<57#>$e;OZ+!3WE{~YFQ!Aui;`M4yF z&||4w#eAm^)i>JVS|4-ZU*P&H)!6 z$3sFvvNaC^$=??Kkw3G*kNB#wj3fOUd19*z_j_4IL`rU!~Y zGb3k()l;W8wc81c5vdYkcpJe#1c8&B7C(pn6?9-t47`_D<4yE)RMa<5H zi4r0V*G_4dYt@qtes$juOS;+A;un}9w?Q6FaZgr$~%xfq6id{hYj&)SunDop)x4=30NQpHnoBXtmDHGQs>Gae2VZ3j5j0wx*z z&CIo>^8gzLY*Vv+V7_od z&|?qRQ!hv7gW?h5`@z)+s@4Ff3%vo1`#9O|&Pe31!4dBdozAYM3MTx1w=LX#w++MG zQuAl|s-Z7d*zYH22%yYq{+mpGU`LvvK&Tvi5I=)C$I{;s{8=wL_ zz3lc9y3{P9fiQDCnMUFR@`0YCwO9v=Ct@ZV*7#hoW^hMWxC&C+(ihT)aHr!dgujWQ ze*+33;2Z>3478wgT$5EOTGY~f?RgZ>Q$4l;VokM1`ORA$zp0=I0@7O9a5k<8k0!LRT1gkbzC|FGR5lFqDs_?D`^1B;vLA76OsiU_1GfTAT{M98U2@V&iaj)gO)^}XSVst0_lrFG~`!Xu_7?DDNT z20LxaFWLFauRBPq;YU3ecV&K!l+`pzW ziLe>p)ncPzIlf>JyK>^uJekVz`dN4Qj)%R?Ap(Qp4;K3?FKc7Rx>_;^vjzH#*W#YU4qyYN z_OF5*4HT`MogqYA?Z~84eNoLpJZ8S1k^Aaum>hf7&^J>L@(iV{Gv+e_vnnHe@yQ5<(K`bSsrhJnbGAO7&JOky=-;s4c=2Lq zGkG>zyM2X+NI1_)j7m<<2hy!&=rA!d&PcDd=)=8DzT68y&7F-q@>k#KZQ3im{CkJl zhuM#>qUYj^tNo_t}eG{@VSkB|Uz& z!*BeNer&Jblk@A1twSbnKijZBa&-B8^ZDMKLy7lP(UK*-IQ;}^z1Ju|%e6YDCN{Ck z5r&i7Xs!=l`N-OqAX2LRzS0&w@7eh+h-`h#7+*Dm#@m0evi7mLp2{666t7m2T(7BF zFL(=TjDS11q^URNV}NB_xCLNRIT%c!`E#wPigHv2yPSL(-3nojYA6+lk&gRRSf=6* zNzA9RSWUp}syDkBT$~^%)j1sRYC&dqUX#fpQ&VPuFuHgStltBqnr`GHT-UZckABU} zYEjo_7U}xyT6;R|!*d-lnmfGhpeCE<0WO-uQUz!HIvffiw7&@|buD(MQw;ApY?6BH zQ8BHs&W3C709Rr5$)1Uh@h(cK@)28Xm^8Nh_k+)k2?y=Fn<2fS{~01S>aIL+856i5 zJY;F9G`$x111eK;_kt$2_0@I!|Gf|v4*UHGg|BGcr9S+2VH(DD#_i$Y9BN>`fyVL+ z+=KYLk3!V=-|-hp|#(^fNgfQ1Rft7jd*EMF{} zx*A*g%{azbu}(O-u;R}wWLL3dh~r}=_bskZQnC=u$RZeSdHffKSC9HwaB*)mgRf0m zvT*UZ(PUD5b1Z>OZ#@!Q-ofLI7A6EVQrM6%g@YBj!6~U&N&UDbX+a&Q2o_2eu+ck$ z-oZTo$lzH3EoGf#eE+`E_`4(+nemNl)|O_2RLfY{4~XX7jw3~KAFw1~4TSPqTt-#& z1Q#ph=V&(+f+1#^_9eBIDxt$Kd7Z!2w5yWq4B@g}3}+WrZK#X8(z%xOQ| z@Wd!-`}uuGgS&!eZS(mmEvX{iFHZ7&;YK(ExemI}dFt@J{RIf$)-aym7~}ZfsuDQ4 zw8cwixYJro-lRfHD^w6SDS9o+3Z934b+!~!%e@Y+R^^*xo8B)~Y$I2v2G!CGPrmP- zUu&Y$Etal8F)DT~a_)`iqloyU*TE6RzcG^g!BNTPl6x-Y=vP9%P_mAAp-_|i)di-v zBV^ZabzCzjlAMvO9xW+cL9h(ubrG{GzXi-BePPt3^tZyTaIsjCvlC8+Lzauj5wDdH zu27nzRh%^oEGW5~|B8(3;f*G=4A>`XDU~l=j!IU_ck>G{*xvZJV01B_&)|?37DUY1 zrbwX-+%?e3LJugpdgqh*Q_u^QlSgwGn|6C8aRvmDoL&i>=8>qhMmdJXqKI)hpTV+= z?n)~=l1}MW!r^hba)d&OYm6LjRmk0Q8@J0##HcxkEdrXI^x;-$;+ipyOS zHCTm=&0`=$?QX{E3!rvaMyAN^G1TjzW;g$hYJq0BEP|X`n&rw?P%M6axEL?;RVD=n*!$V1Qo*&_Y9Rt|aB3WOv z9Obyq1)^3&O|in94Ub;?d+sjGHrk0((0ox6yAVm~a!hkjuQBX}pe{=2yy-T@w9KTE zuTiV6_FgoebUF<_&9V0O=FO0gSM=U~V2NkL(UadQ%1nE!?;qfn6-)Id<0&E( zWJtC0Zf&=I&Y-iV2)M;+K1ge>-&(lQ^;@~B>x);tovX@=dy92-{Z6jx-NmcssI-2U zkz^Jk)B62SBtB8lX%grj68V^`^ayhU3v#N;R5$xEu)wJOoD^H(D3H zDaznKcy#gZl>=)u4-nCn(ToBt0%I|rQpF_5Nsm+9v*bOOoTNCK47#&MP_$1Gc&uUP zAPs#8X4=3*EjTY6LnfgKB309j$J;HoBuf~&ce2S796V*ifU*rQ-){Uyht$Rg1kr8$ zbubw}o^(e8b9H6AHEr5`>6~cX-q|gYjL%^%Z!n9!>NXC51}?W-SAPLI8hd0oZ7jnq z&%B@8=U3h3IVhYB&M%8yM*JK`D7st^THs z{_s@p0;2=4fWwy<&t31xA57t z^6s~ZoF>93oDUk$y1fQopbc0De@>J*G~Z6EEdHI=Shix~5dgZ5!2?`FEKC~*9*|eX zL~sO6q>dF9#3&@xB`HW@I8JUL`tmgR%E2pR`YYbnrAsh=uN;GQ8<$-K(rDR~Xd~F! zd7p1>wbEyjZs15s-axuR-zS_D$a`l1qAo_GD<06>TW2c8?43ili5I`5J;dv6;OQ@l zb^bGH&l2)o!;W-jz^wTu44HF`$e1yrSFKc{ z18!qeJPL6|@o@uCGkiXCf#_Y3aV_-5G}KibjHz%vj4sEpk^{PYXmiuR88xJ}wV>Fa zgN-9b9?UH(hZ50SXL%o|XTTb4>kG^8|mp1Xr%a${| z73M3oi0LU_QIptRIf`P?P7y|{ad`N&(Zl5|1RT^`+Kt}Xp!aUtCi0vw@xwNenLV;$ z<$a2<^AX$D$KF78Bp&=Ys?8fY(Pz=RBX^bcMp2{b53uq4RWjP+$=kK}ch=zNIQZE9 zPe#{X^7txZuW2q}S&;YF8clk@KFY$&;G$6M)Xcc9CrwMj(x>OHjb?j_kaT$iq239ceGy3D8hDqrDA7~tI+jtUuF>oS{%hK`Xg&*d^CLW)a70*a z&KAiAM58n2qs|Y>Cqno*4|H&QM#Ceq#9WTR(}>kg2B0M@QAfN!R+lA>Q5JJfIp0|K zvbL&cMj3bHfG$9xZ_^p+V>StLl7Sp3E5jpt4|^BE2e?44mZYp|I)BJ3aDK$j&CMSX zM}!;Vj{p*`y(kN8TUs9PE@oBmwk7{lJuH4NwbH-wBO~RAV**g7 zmYjIk7TlhoE8$sOyvKy43e@0BnPpy+8C1UvS`U`qR0}{Pu2cA60!^&H2yY<4zbgFo zu;v9PyLqVU81}lC-4lisOW!gqxwA?#EaW~4-Tt(DF_gDm7Qi#sy_&;=Geiw@39 z!8ejG+s`&SSk1&u>9Q@_&P&zAS};EDAKC|`!N0BFYTw7rht)qfV5X$zJ?tM-XiV8F zGzLvM6WtVsvFOHUCbjqxWF$Va5O|F&q8*Jkc;SNjwYKGgk?(!7Ej9rIY*a#e?$|8J zyTK@EMph*S!QubMBe94ujt!vscCGc{-4xI2V(+Ez@A4asv_JNO$MzcJ0o0<|G)~ko zTOg*r5{EntVE_}FvV-*T=wLGbPwq&frY|S|nKX@WZ5ohhGs5e-Qm1`+@{vE$`>OT~ zy0!L)Z}LJfd#7*1TQ05Rjn2`|{+>LTZG5TQLlL9lf6C-((pwISZ+|cFkwb3jqJ8{w z>-nKHg-riIIyPsF&L_kA$C9~Vwwi*>F*j=C5jPO znDY(l_T|;|thM}a0rD~vKeU#8zXmC^j<9ckMtT(-c1B>q(gsj#0ai(+9Hq1$*aQO6 zHjc3-GaGf?3F^>|F8!wBL`E=lpe=FAIG_rLzuK_=5%)oBHi6Y-2{8Z$-P3q%M{>Vx z1e)rM6afxlT8_eqO2|n1&i=#r^5G04+CVx@fg@0m?*YxS3vE)tlMQpe%I!uSZ1cva zElO*65~C^}V7k14Z3hk4>du;E;yRqyoMLaAufRRvEuq+u%wq=yF|JhZ@9}$y?6!!kqO} z#o$3IQ;>s#oCe_M^HD2+ZnqoFKSPdTY{!>mbgN`+&SeRKtVdXdd1oXhGgxj;f1XUn zSC>BbSe9lXfWVwbn0T=+q~7n47G1AWtfBE2WE59}po)d2(SXvPv;EUHdJU@)0- zqlM2)ubb^|^LPAg2D1bAFG%ib@}UH{@wC!Jm}&$Wn)PzijS~5wK zP^=~C7XzL?mO=iA*!#ox-QK5SE;Oyv1{t6|oO=Is%`|Bacg(4cvE0S?;?N#t;S%m? zt0C+no}Ub+q=IV1w+eD2pJLMg*?{Pq5ljRbTC!V=kdpx? z=dBE!ZY!;FYJ+_D4?6hSzRH9Qe|U`#AnK^l@>R4(R#cwvsW z{eJDfL0wKpxp3ptVDM4jX4wYdBR+JSCra}i7bE^-H2yG3i&Xb3hmTH_Z`3KlolM;h z`(@1VUduY#Hg~1&G&cp6$z|W#gN*knp96Dwc`ZPfP*Q2IAHW(2oC-Lo)YyOg?_1b} zzTE1hluuAX^wSKhxquE1szCuM0u#I<7T1|awhJpDS2h0+D`A2U{l&N%MrCqEtn*q- z)hA-RB|!y}2>n}BA1d;%MsTu_$_;1vQB z1;B^y`#87D2zqTMDryLL2Ftp10j-~o&td5Rhan9MeD{3JK)c`pS8vz~%0+CVIa0`V zonj%)kwUIFS|Jm8{Wjc2&Q`~5%{JT;1?fPwr5$(^K?CqCZeeXT5b;o@jBx3@@jF!? z8A)9zR2vygv85a!EOHNC_k3&7WX$rL(J~dcUIwGxTUtO(9)MRq;q6=`l+t1c6)hQm5Z6h5xVHkdN6AJ?e$OHpZdq` zwcl_4xNPgCQ)IabBE~&WTL8@FvUJ@zr;-*LTIvvf3OLeP08v|~aMB9C5vY&y=>Bw5 z5N4lvBCAW`H%A=PV>I(#pEKqov}+g=!c*XE9?PkXFW35IXW!)rr&d%KMhI0E;)-zX zSQc&CY8_vCmF1r}kA9l|61cE1;Icz-9xdbwQEr4*EdbS@e{HNQg88Oea~gu-LKN|a zXy$P38me!XwnKH?AvSI{V0=RdR;ob~2$6%9;?+>)#xJnrxMJ=EwMiI{$@GX8K_}JJ z&Nh9&PnR#yPA!A{Xk{fdaf-947IQ+U-f??jJ(3J|NasM@us8W`g+B3eqWb#X@0B>i zHCLR8jFmD(RvMlK6r7o|Bw?tSFG%``0kgeOR0jwLoLH8^m+#s0kXySw_y@wkVoSvP z@AR6};A4N>Ft!Gd56`o{a2#@DfNckMdVR#q5hji|oU(kN#m`Hf%*jDkJFHPSNropQ zEtRah%Cc>qXkm4XPSWa16M#7`p;9MCmFo&MMUV}H@_~tZdFz|WlT?xCsX_l~u z>#OzrAbuC`2W@$9BR}ZHHbrZa=JMn0&Gk+zht`YKjir}~z~uC<|HeT(!bF6CYKbAj zmSA;qslQY~?y&=TGhjf@n0Jh9)y4V0g(y)FI0(e&dCScPP79*i{A@1k#rmL)DxfkA z3w$Qt|B#8$4q~)5#rL?IxSbI8ZkSMf&{Vf=ehEy}e$QFu6@t}1Tol1}ukp?YTtys2 zX&FBfo}hc2umV4VLb=XfM#$RET`L&2uXANYktNJn#R}g=fh>y@?QfL%*FTMLn-y!9 zQF}NIjNP(B2CLF48ZNZ}SFdKYkJcq6hxu?Sv+jB@b$e3*FW`yuX1YP&><%|I zo|n`sS^wbpGVHh7?Y65Lq#DK^O14fM#PP%DXOvJs_#viHwpb%q9NeuI|Fqlhp-=w_ z|0ODQtNGKd2e15J^Ts1%c2;?G*2S^(`n~)2@83gAP1Q^_@%H+?d+T@Z-M+V;B;URF zvz9HTT>1GqPkeBF3XGHDF$; z+raeo`tNeU*bZ)SNO3Z&@Fl+iB^<;G&-pk-r)zDxXOq z*2M`T+NA0PAt|Za_1YR*gh#TVbr?zblKH0}92?&JBfTl%`-8`?9y7MrHjF_yIrL$1 zbrX1h{^J+;qnEiD7z6pydB03H%w}R6fgd$EO+mv;?g};|dhx+zPwz)@%^+mszOL2Mzg#Ih$fU2{ z{-`s)`~=>RQ41hr2`3n`E0w^W%j1eq<%y?h0irglvr0zDv1x|w59z&ebo6}Z@r$Fa zLwvPldC$$x zDZ$Y~n-L^K7VVA|h`-n*&m&yFkTAU}7kfr(>vV!?zj21eW*a|A7%)|28A& zE3xPLn7O9_jXL71k z52;W?3Z9N!Vx5#>uGTmMmxL>2m0LlMQnm9FGR}OPd#5cqKDS6jmIx`c8`t^p6_qI=o}p$ zZ|*#gwVp(Maa(eUCC9T0W@aIs$ehX|E`M1{)ITvWiAtrjr(A^>$azgYQub*Q#UK`d zLCmwo8)jZMtGf*`-BH~u72DK|m(1rPm6Phe3LP(5=4@P5tFzWXXzylNW;~&Lf=gdl zGiuH*{KGl}HL_4FLDl8}89bOoz828z4600aH!csObqwS8UHC0tiLQ|55SlG{hrjou|adZv?J zrjZxaXW=EC?b$x>K)0gSh1r>H|BqK1a$p5jjyCnlkjE6Dw$2*$QequehvNRXpMLzQ z)oS0o@zaepY}6oYLLJezy=Vr3r<9(WwZ#J$?LI)1wzUj(RNwVrE9FK0_EUTLhO`T+ zl<{*3`-XwQd|Lt?$ypJHG;zNrBLc|G$+)E8y&GQb-+Y?zbuTej&wws&z2l=$NJ%OYW@6|Qg%n(%w4Ggn)aq~Yo0Sr++ z)>B@0vsS2LsQf?7I)D2qN6^}l%LbSPOZ=O^gn!5d!Zb$te-o!?u!t|r;2Jg*5BN12 zw%Xu`4DT>>!5RWR=6VtrI}tg%U1WXc(w^;KtJdRF=mI=f!P%q;0QDR6C08^gEl`rH z6CgT(mmba$xtP!ny-*)x;fpJW=garaiQ@AG3TbZZTmx>tDjMeeV_LcnU}RNO7i-3Q z{Y*Gy1yj^fBW!}R(%H^e=K;-m*+v`2&i3g?98|s?WP8G}i^`y6ZD!jS(WExS?(nQT z<+D?_*YDoH`{2&KyZ5tFKRr7knpGnz`-y`W56hA5N<-MEF`-t{d%_#XCz z3|sV>J^;dRRw>dCOb#pi6i_m)+26^dnxp3=7Knzra+r{wgF5HOnX z%$hn!nB+lJnvQ0KRf$=skrtBcGcv>7OH8g}neD|<2tag1bBISa&dj)}NX^2@%c)O4 zKfDR(+XCw6RB&Lhb1LZn(6_i%Ol(-d4R=Z41FVsRbXhJEj~fd~H40|OKs9AI^p><& z5hcS3!LT^<>O_4)>8ptBbr%ni zEZF;HMi2kglIUvf%q(Pm zNN>yzxmp+*x!lwMzQFbJ{Q9TsFr^^!U6zP)CmTiiC3_M%?)*W-rQe$60sO5S;i6Ko zUA-6OIb7TcMlRi)cq5JBbmQ&Y$>1&S(jD<(x|ubr#jt#c>avqRuH+M7l7p?R2}QvQ zj0t?AYLI_s7dI2UvP0&VlpFnk|BD&pcYF#5UKNPy%BCoYNOnr=xuRhrv;b~yM#`B9 z%r+<+Ke@wPW-S662C3w|&-6U$ecGCBG~#;Dnbdsaic+!#P_9>Y59*+BQYL7!VHf3& zC-qzyd4*c|CtDs9F7XwTr(H!#hU&Kd0)<%3)0rCz$uVg5C3}mo8Y=dpN%^i#N0@w( zZ3@i-r=@K^J5kwL*`g)6_1>}Evn*-VaMk4g;kTVtyiiW(j)7jpo=QN6a`m(kWtsg;<6o4$iK{&7Xs zRhK`wjPh!*bih4F7d!_Q#!N+`>R)rtKy&-J5-{kAOIBhUWR-${f|#B0+hdWGl@+|B zF%fyXCf;G!7Pm4!0t%j-jC1O%tqwh7v|?O7izk7x!3tt}TwZDH59JFt6*EYSzD>qD z_(B*IbV@N>!Aj5_O%Y!Qnc|=;cOx*TP1AMmrRR<6x)J}%oHlU|MT}Lhb#GAE*#w9< zF4@^Il@)5tLIUlVG^KvU7L1crXlo{2dBP+M2JvjJ!#ZkgIOP<&=ys3~|_SrBtLi8d$Yg)z?rC`5`@h{r&v8G&F)BeArE z%G#5#BNG^m&OqK{Kk(N?c+zKqWQ>O?PgL=a8lpPC3v%0O#lOl^aSv=FX~y~BbVgTn zaN7@YA(?R&6(p4TbK_R#CI;`b_o(HWPG^}>*}_$T>Ajc5i+mSmjgU{V3Ta$susySJ z(OySX6~;AMD5GUlP?H1rAQruZG?&tigOX$?gpa!-0|ewLULbLkei+V9n21J=)y8@< zNN7;Wn9P7kgy+mR~_{sEAwYzcajnUl59WP^IRKhYPq zOig4|8N_hXuRXdQ8Q)NY6Mk6=RnZ^3j_n#9WZcSJTteo} zm5H=gE_t!x@h9(4}`fSOhEnpDw=W!hOL&(%((nSo!>wa3Y-jOai;=rh)& zt!J6{QOxZ)~mKTEEqK@bmqxpKsmjY_8wA ze~-O7u$r<-S21A&7b^xv8qtZ==BAKi$}kv@K*6f78bnZ{m?GU0Nkcgniw|)mSE*o| z))@Hn5WONYBOp3MZ0HGFmO~445fxRncuI3SSGX$jAyWIhI_ll|S*W*le=A2lR*Z;u zz0PI!GNYVGm-K`nbS`J~h--*hB~YZgpRi-k<&!)2wWklZlb(9jsISVRk?mYyKflUO zAPOaPogIvN8m5N~T_>8jfy+)$L}16ffmx^0f74$V{uEP11%fu|<6pqYgk0@r%ckV~ zu~pG{spASHHEINFzU8Hc0Hxrq2iuSD-+y># zd+Wj7^`C#K)u>rjPmX1dd;#`T|{~-$lBP@kUAR z&vI=VZG8@>8DgnYRse7EOJsmbFgq%~hidA=(usl`3z#59fj6~Yy|c|uxXipCw}}iv z^8pfZr3T(hwDSJc=S1Tb#kk|IQ5b43u6p0XBthQ@DL5SCn`p^5ezRx(n>6s>q*Gi6 z2P39ZMB0>TTkD%!k00KC@bK1y`*-eaZa%mLy=CiRXLAu9%vsWO5%vdsBEpEMi$D1V z%xgml5&h|<1`0;so3A8h@tyYV=qv$x)?u$Z8sS_E=UXF`U?3Bej+~15ES?&&Tu%%l z3oTP%XOJ{3drV}gvRy{~cR|~&r75%K-`t!;%2*>3i?TIDQ zavel4+GoMH4Ay9TsnyA|z>0k2mvy3QBm~Wx^c3Q7WCt6{R8VsMz%jhYHtlE#5|H+L zjLlSf0HTu?c{@Y|YLkxP%ceUB&EK2?H2~ys*r1w}XRvKnfGDT3&W<=f68_V+?gsk4_ zTReotYMIH2IwCDlk`c^Li6z&q0#IR4_%(KHpF8_|+dEHQJVz|h{k=b$fY@C2Xa~v$ zIFZ36PQ*a?{TJDVVeWBaFbFm@sn8;vmnzyaoL&!cJDQ_ZQ4Ibi(X^J%ICbXrhQWKV zGBj2Puom%o1q_`W&e}6$voWryAcXP<+}Xvs=%?^(*eQaYPnVo5=ngdI6kdBR-@C<^wbLpYtxv5lArjcvnjq?Gki*3E%2 z)4R=qQoEvapsx=>=9ISfHBzTApXEqLNC*nUP9hgbA@(@s{WsS_VwfF{STW4dFv!&HV-kLBpfv?iO zRy-x3d^iwj-A=*_0xO@vmgL5k+cB|{L|PBm6+LTIBg9A^Fv!|jelydR?zi(QAzoZi*5avr39++GS#T&8=e1{yS>0ebpe}7O$_-7j zS^oQ1E@id?B$q!P%W03<5jgXFLzGVbWOoR$B`|KTN7`xKN)bv6(0VO3l;w!~ZZ~ex zb-_@ubOq5|NLO}^%BD)_+z}L=s?3iC;<$tjlv&)kv=C6AN>G)nTt&kEKlGu{sbtBk zSY4KF@MLC%O`|GgSYNojga(ucqlL1pw=tiG%5!K~(%nYn!XvIR3-tGTYjo&V%}Sk? z`Bv+-K#d|1_&i>4Z*1Z!r=fj&MNc_qo}U_#&nXZVlMtp_{bt4a{A$_3TvUPPT7jwb(tOP%3T3M8%iw{tb3v z?{7QO%uJK1;dz|DMg`B?*6K`Z7!_runvK78Mp zAsyw2mx?xkm%Ix+Qd6>=8!fJO>)SzCZ5^t)q^HVtPNBA4B37*6L7sTP1KHBOos3A% zz=E=|Whw4T##!P34If_M8J%DAv4TkP6X;&j*U5Oi)zrgUa!MdSWD6(ik0Ro$A8<<6 zy|AYFzEo$(k%oep=le_PwxC$%K*zH`CP>N>iwRbPXHu&g8p}m?4QB_Nb0x?A3p3gm z7|iXSg32`aCP+d>_>NU==q2c7B29*_6rzu15N=0e`OI7!G7e0bp+X7Dc*Fr~2M%cQ z2I~e~7c!S?UFbByTAtsae<4TZJNfloRS&VAvtD&XjupJxuw!fAR&*01U{`R(R%`!kZ z4t??DcxP{W|M@d9I3DXS0TdRYDEz3#O64raD#aE=E;77Z=0qtM9hi5*eU6SUriQ!# zj*`n3s64}B>(y50#nHy&-7N%}+1lQDCC!&Z@C{r(H#~i$T~zuZQ7pNI5YdSJ3t!LR z1Zwe;H8yB5HZ)(+$cOdSC^DK6Jgva`&2SABdHI0M_6B(7VhRLNr?M}P7;yr@CO~VJ z1o7CT*K&;Rw8sUQ$eT6LJ{OdkO_U^wpXu*PvUorVG;s@pVTePYErWq}S+L9mzF7gX zLH_Oe#=!v?b?ep9)*fFvl|e>-+%c&NyxOFqmc!$?d2WvQsH7F}EcurIlsmBVf}I%j zzqG^SlC5KGIkr-$gX3ttW+DWMc|6vLkd1$zU`^1VZj81602Um5~ouHt6m};^`!VWb>!#G0WGkrjs=xG_AP^ks0w5 zXucer(-QwOlnb22QV|ry<7KXoerawtOHud7*6x01WA_*@sy*L${udJX#@b^E^*RNl zT!8iR;$dpD#vfT&pyi#t!=sJeU6H#&)0iCJe1;mwar7 zgrbJqs)uPq!=hKf%(tKI)AR1zX?yFV#4p>Pj4xy@<;_bkAsFJ$lRWH+NvH2)%Pv2$ zd$PRKFtt!^;ANLsvvFy`zf~GY46PvYwqA91UuK;VoULTZo&Cc?=MOc& zk&3C|C7-GvPnV+^)Y;$MIzHTavUj|*xwUt+bM%+j)Bd|(z388QS5XB7MG>J76{Fko zA(%eGMc@`Mhkto^K+ug%KCv>!>sua28@H3f1MShYP**-aVN3~!?n`%)!VuYb#iAfa z51#JtZS5oc-PXbG{$HK}<>RA`=TEkd1kV^kw8os`^@sEDY^Wi-Har+JnEh4nOv$qj z;qn@p-M)U`mhTrMJn1@_cF(QQ3X}bEiU6jr?JYD_D(n(dARHGH?9hhz zE*2|@|0ky@?C1$zxVP4>|#(Y1& z+1TH_`S5`arTmoPzIpSOJyYDfdDBL?BfpeSl0*4sGD);Iidj;h`vac0?*y3mY5bLS6dV@1D!;w6{t;?KJSim6x%5iB zeNEeHJbAIxxSHZn&1$bS;Lfcd>+21KA{sX&OrTB@kjCgG#f@VATWIDV85Tx2%}~ne zZ=+oy!|5j(MnU~;G%RKq9W_HKslSbu{=o$*XHhGknMIzho12%Hb7p4|TsA+8c~hOC z0jkc?V!6By(BT9Ul+TJ4@czxG&?@#Ib}Siel5sro>|g;lI~ceD zCz-YL%bdMSABz?3C@JBUrN9J4f`= zOzf`gk-?qdald6j9iN`=*2@|4#W2bo)LY7V0aJ)Klgh8ask?h=jCflluC2yhlY(0 z>JL)F43>uW&dJH)G4^A-dk1@wpL3{@>~#_W;^X<@{s}0s_wCl{j#zb%4@9qWn4qlv`ZJnI$93LMZ+cXX{BBvFLpKU!q ze0_R$ymR^*AE$pkN+(f8@z)19o7q15cI$YLQbT9Bz}NA%c>ECf9PGq$7c9}jDZ2jZ zHZZATZr>Seq}hy+!um;?^2WIJw;Q}Sa$aT%IZ9G?_S2o~T7m z;;|Ddja7UuD}{o^5`m3GLMO?c3zXzS`tvX5JeE%lHSZ)9WP+4ZtLXqPO8grA-JW9q zs{9*E4S+fC!6ovlhua9f^EG4B$Ra0yJ;B;)lA}!O5g{MVGGF8vJ%}=7ltCiMsyRWzgj2bUTv_U! zI#H}y?8ojg%)H+n9{;60wk33IBEcJvXDKEOiv3M;(dS@8pZ4ETWeLjQRH%cg5m^mK zOUJJdNXarTrmstk_1L_g2W2hRi5j@r7V~#MZr|bLj6KGUZ1gO}%XCRyt_5I%^x?t& zU(c`$@Et)|49528Us>(Ml@p3q{DEren0Bvv-S=({X&->;FwaX+9eTh@u_U``H3td1X=QduhfMIn5HiC~A9byb4n6YSkd_Z{IeGgc$}gQ@ZqA_V@<- z5!@RpSU1B?9NP2#YiN!9kBj=KM&UpSk8FqSNDykWyD1-{+ZI+t!*WOX0ix2uI)F!g zRaNASui8YJrkFDMYV#-Hsn2#$yk#(6_AjqWJF!Y2-{Am#KAfG8xcas{pjz`gC{mNo z0)Q|WeVScC#4QOGhiXKoh?MkcvCg(V&>in-h$XUWf2qT;?Z7zZ-<-=7~ zcM|SbOQ6H2J_~nRr0Dz=}pKMS_e-XD7nclV2o2eB`&$RQ3CnDpNUKubnbYa zdJR8*t7OxoqA}A^FyXALmj`rl0+pQQ_-kKW(n|tmb!bZg69B?kg%6L&@(y15m6+4%{zlo2v92uKMPZ~t zkKlkU7D&^LEy!LLL@$kELq1a`Ves% z@8MR6?Ek;$Kf0@=VHj@0gUP93T=MO=)l-or8T!-G z#fwa)isZ#l%XjBG1S9An3h>QP9nDlW4sNEi#5K(pJi3y>t8(&Va5E6+GHurEk`{|p zBUO+fN{J7hYl}5(;=;({K76g@RyG@mv5*CE@wM|Ru`Ar=YwHD{JFg^KyJCRnm zpawTt{MSl-t}7mG?$R&rRf8SaQfl6w>(rV~i?Jgj$c;tOj$V4acUi~N18`sw&p^2z z{Ue5>HXUK{(%zb&p0;XRH?t8vT=32r-2{K?|PKT!F~26mi!0PCTtix2gKh@bbDpy`lkN7q_;${Dn!@@{7LYAd)Llu~i80 zWerqFX71%=EG0SNz-@Mo$8UMPaY#Zn@mC<@dL@}0{z3H)G_sKT2{b4*%)qcVGH@^# zT3z$9uhs3AoAR=CLYl6k3aMpo#nz~S(^v<@AQ?Nx)%sweF~bG`{eJ;dUms4F&BL3GH>Za739=uqt5;FL3IphR$SQ$filJ`3d9B@V$t2T>vVq zPb{_;juo@Mg(z`vSjcW)*x08dmsLu}PC&28LlOFX4`Q|hpFm3rB=9{${zZa@Mq|*w zye&46l=lIn$dTP6NKmfeBXneiVE;|zG?wxa-mGa>WOubK9kOBeK*&9AVLRuIv+@&=|;7;wCkWPqi9jc1ASf-?l zb{IzqLJE|moH27oNcHJcAtRZrA0IXRBp4C&gv#NkIhq+;r-S1Goe#Gg@C1kSxPdFdHOE~QCXa; z4?SxN!Qb@0h26t2<>vy|BBX2(I|^cvdK!n{`WySRXu!22Sq}onm5(*5MOc8_Gi?|u zMXyXHDPh1P7uw8HLqrQ-aDkg$#U&X+Vvo;X$R(({8_km|OlXk^1UiRzikOPbd{PF% zCpvst12Q((d*KWTC1SFkiDl_8bs-rRGcx!hqa~5+fjoJnGmj)F2DvHlVzfdz1e#Z4 z()+vD(0f1#Q_mx>`EB4$Uat|N#4oOaVqPPS62G7g9onEt&n7CN^ZnE!u`ZN!nfI|v z_6W^kt_U?K&?uN15aY4v+)|`HFhP?^B3Die zXB)6oem7_;KZSdsGl7`iin0@W!b{P&)@8X^SsBgiF09O=Rh4xCyrpGUMnN=eS~Hev zw1!O@_EUIMyW5j1hJa5J%SIyP$SSRu3avI+oRv)r;N8Ub^$4ERvsay2_o@LU9eMya zBl)fl)<>NfsGQDVC1f(JoQKpRY#NgC7}a!43nfYu6)m6$7g!au*vQJNp9(kKhelCM zq>^V{2d&<9kI(*2ec1)ju%4rLVQT!mGH9uD8hxrM{JdCg0PY<2CWwf56iMrYAX`cm z3W6nIk}RbD+6qq3apJT!nRGri%BYyNLMtQEz;iAQx;i+>#y63AA$;2!`F8DAyF2Pr1?=>L*wc zAJ+c$-oL#*-F@db(+Yl06f}BfM_qsFX^$6PG zt+d#cB~uU8W3|n%XlZxwnwwTNeLr7K(w?B|2xiaN!UWws)W-r~62HsK0)~lz15%`s zSu_9TUsN2X_Dl$Uy_>r7Gj#j@{2!b;)4+sxNqcblfci9%rN^?7+eYrb=Hd>d zM8Ku_ivJ+@g~@`N7jqdZ_A3NpTXC;^gUCuCI}U*#tiWQ`KR=@qGc|ZWvpv7a4J9m# z1Axz0FwatfW|rKs#ouscn~CZPu;0fmky?12tA=;Av@JHwYicrXXp5zADW@Jw2)d5V zN|&!51F6eymqiWnT759>q7L8d8V$em^#(;o7Kp05@2^gOhC=WN(IU?9TYewCu8S+acgIwG#16MY&FDd z>+nDQzv~Rflxm@b z{;(q7NRjK={1ShX5|>tjPebFGKsGiX%YP1PMu4n)bwQqf(b~b=(RUrJAV-_Q1lx~chUIPbM!i;(PxY#wATY5?{1y^e%%O4OL(D}LnmplUBYS!A!ipD4dVVGa zJ_|Llx6Kl`Ty|yEr~h@5HXduLozQsGOk_{2WZDm}>_xQ~WN()#vCma<5o#=@C3Y9k zO@(0ikD8}>Ae0b~q+M9{?58PY&wCl0g#~dua>?Cp8D1SNa5bGb76SGt)zmW>LMHqt z!QV+%Xsx1T8S{!lIHH&pF|R0wz%z^cP*@7^+Nd15HG=wb78&&VrUPK*54O{$wc?qFZx9!y@^^mx+9CfFy%ImRc&pL<*o#Kg3(%xpcWiWZt+z({+5@x|v-( zfn$-8E8*zy9XgzxTd+G8;GroVM}{7^#Bw2< zM^vx_o{~)(6Oj+|_{41t9T+$a=|i9YVfFpdEGT1{zOu*)Ge$`PI!!_;GsXmiHL~LT zPQx>46|p5#^w?bZ3CEbpA3(&v_NMiRB%4E( zU+e{DJWgh9R2P7nTN@J36h=M3#7ZGAAg9y}WBzS_GP~(q!}A`!K>VqQG?5#cF(rq` zM;7wIu`SRy4~yW)aZ(v)aW>stcR9jR3Df{7Oo8FeAgVUlI;H1wk%N-sXR=WAQ*adr zAgN6GCzUDx9jw@%Ff}yZc)|~6c*#-8F#A2;Irice^$XS+w4T-e)3e$mZKFKfD>S?W zS{O7j48Vdl>3@t@7x#kD`}!wv7tfMMINZX23Qh}nFJp9rr(xgq;Etn}?nvpV zafUuvl19G?meu3&U?-I)P5*b;_g`%N9gwH~K5- zPlMv)ELBRIAkTGRC>17kwys&jaa9X7VH@9vAyv-L!^TfhpxvBC)+FZ{wpDRGdqGs^czwMFZYNt-;>ARajYh$n~;a6hkh?&+YA35Z)ce5NCDmo zHXhkBuo+LW#n<#cAC)%-=m&TIDuBQaV<8Zudjdum*2ufm$O5rc@R@d{{r&GJl##%C zE=;Q!g#p$XW!`IN*nG)B^}7&fA+ZI>S}8Qr^GFJdS6hFH9UouRt2eI@V)5%a%)ex^;?L<5Rn0(gxKAqN<>Tm@!&}I zh3GH0pFGqIs>D)=46tX{`^bD|&;k~$w1ZI;GQ>@!nD}{E%Ot}Mr7Vtew3XV=*E7U~ zL-;z)2*y)>!)!X~Og^D}Fr%i)X>=Vw9+J(sc;4Q1V}afQc&WQ@sOOT8Bv=A=9cLdK zt8vFs)^qm~auxR++;qsEBP!2)pi%iQu=)TR;LRnR$FwtKha@jCdWX*Pg|Tn8qct4M zdkH4lz#!UWU+8WrGLT+V?sP{R=DJEkI7>^5MWs2aN1|V#G9|GuiZZLYftu&ASl0Kk zual!uZZ6m;BrT3uXIJd*{KjPifT~OF0Twkee^&tgw7Ant0V#pa6J;7Bbc%Ly7f&8c zTaplr8T1WH(phg}0%<6sdq|u4BH^jJicg5Br(s#UV0oCW_;-;9GqWp&nX*CVo?7Z` z(1?{2$;DU>zbKW9E_lTe-UY`-ma6UOX)fp&ZA3ZBI z2}J%%RJ{{1g7hp*oD@^wvYiDraRXxYo03!%LWbg>;>?r* zV3mj43Ef0|`S8p~RG=Ca!pP(bHB_DJ(Ywy|nd^o@W+JW*<+w$7Jk-nB&+7FW!sx`0 zEu6;=z)ch65G(YM&uxFRr`A5&M{3{lZoo4Hwgx_SJBl50*cGzaaN^#;kCg#fFrvB- zt4Bm3ZPgaUMXhT6`E62fxS4eMe5Ay-%;|Al$W8E&&T$sU-GtHh#6pmQt9_kPsHPmz zd80524`PxMAxS7=SmE&z1`~rXQjL$sM=%YPO^jF^$P_vk$bkh~T81Dtf6II1oDGA_0sSh823k6eAQ>1S6TxR?X zO-g`B*cjg%LDY16mdOoa(r%WOt~a;=XCavwkw|oD1QNGI=+Q2LC8SLP(25Wg#H5C7 zLfP2U07Z&~ueCMy*)hh((jz8hf?hwQ%}T-~?KlYO6#Vj28YsDB*)s*3Du^Rn|0A|` zD$u)%1>Ful8xH~T4`I=n4xAcLP8Bmm(^BsS>IBklZtlrS$dT5pAYyT9St#2yy@|yU zmD5W}EI{4-k1JLhA2eoB6hIfwXG9QNIKE8=;EnQRJ5fjV8#PhID!(?njK}=V7pv>`?e-35yn);)fS^gYnaMyd`v5?B|xgoXYQ`K!|>PUE7~x;~c@HcJyJ5{JMOt0#-Xvx(wb(nIY*g_={;9s+~%hFGo$RG3lng?@oH z^ege6P2jME^l=>%8_7m8epaNBEN>icOV+VRr|p~E00T=6#=G%4PfB*irQXJ;n}8mVZF3@ zd!@yJ@W2+N23RALy!gdWET|+7l`LKjb3IVC6JqM6JW0k<*DeCFr_Tf`MG?h!-I60Nx2wXnW16AwaqcR9} zutQJ!SjLn+H(^*i;%e(-9=lcOe}!ZZB~lGRUHc@6-)1cSXkZU!m6Nn2U>N^k9G%LXNiOrOVxH?#50 zjP@(lV&}|jN>S5owVZuyO)hWbT7;&)p7u^`V73`t8rhiNtn8m@>9V9?$%UeV1@@*0 z&VQuTGo+_GN)Gv?W{V5yoZg&Y4{AE|z{$$~_@V47s&$ExxHtqRjU2;SVq*@qI2k~G z*=R)aKIduAiG;l~Yt^4PPg9NpZ@Rz z*HB`B9=igbG+wdf2uDf2zuiGIQ|2C~z0 za-IkrQf2z5`%@Y$fgL^==6 zFe`k2DO82-H^g#l^Y-&-a)hzM>Q6W(vy>)P>D4p|!&5+q<9&x-S2S4NYjJwJ8UI7Q z#wjG6&c<1fi)pv?wt&VRds}EM^wej5;K>SE0p}W#pJ78J76+t?DwNR$b5z+=^9Hab z;EoEXuGitFa!wUyc@6QKaO7Z^5Cn)@HAiRDFW3}vBm|^Nazg-%H6CDtE9P(t7d={$ zXe^p;4bNq+HtK)=d8hsI@E7Pt@Q1c=-y&qZ^M)=4Bbk*FaTHo#p6I%tEJ`x(tUW9Z zqB}ejNhAWoawsqjRozr%*mEsfh<-W}2F6UfE>`H>x&To#AX(jH|K-s1=*H|?ZPR9# z?~V%>P%~o-^MGeC(8FQ3mpDdSN$PLKN(eLrg_$a7tuv)VSk9gAKFP%{xg8cvXGWnC z<7ITdjm!(VBmwXMc-W7+Ch zc3sPjj!6WTxTav6OJ>AUDr?TMiba#vf{$mlc^9ZEL-4A~zzoAm!UF?tSgT5$z#MYj zo0sdZUApW?PH%VHTaD zkObAj+Da6XgacF$NfW4y@H>`I8AHlv2`DcVjLi4Hk6#K)1|q8T$)=rahBz|EZK|6E zgRRbI>Afh;`8?gqp$Nk!jOhbiD3;D*Rb{#iPSav<t(}C$JQ^jj?O0Bje~hB z**PlK{h_25Cxol1sVP)dHrW+BItp50a9c#}kpJ?gCE@Vk}yC;YNzdcp$GN1c({YxYDgknT@%xn1t%=9#=@pN z>$9ZK{(P^&1!KEEX{%&itKDn-d3()j1eEWv70Y`BgYB%q{)V?N92SHI#*@N$B|h8j z(fE^cS?FQHXDK6L8qVWz+Bqfij~xbtC!W-fs(UsaZ?ZNlJqoxhJD@Y<>#+!(*SM!e zQ>$Q`xfJx*zO&-19Ehr6MMx4pMo6!C?2V;Z=qsw=UV|no^#EnHzPd(Wt8a&^i>TO(od&ml|Qak5jl~pA&N5&F#s$<&-y|+FRiF=9gmv0p6!k%yMUL5g5xoW zEEyt6sgf?WOju7eGG7b3d)iR-`hc{Zm||eHrmY?5sBoEHA+plwr!HoZhY)moyx_q4 zG=IVXJNqQZ#p_s30GY7qCqFAZx5-BXteTv~ zKFCTaJ@OJOaVOE{MY#50yh{(gwr}~=s+wk%bB>Of7SFhU>eU8#X9&T|JGhxW8{rZz zqMna?T|8rt#RL&8BLScdcPCg7TdjW&8|vf?CkLztGIExW5a=`?<-i1lZBhd%oqrQg zY2d@h)Tp#O*JQjxA8Dcp$vvSjG%b1h3%)&>!?t)ztG@_;n&jmvCqLzc2ZvJp4FUR` zC#Le-cNzT9jZMgdP)hehQX=%ly{`u?-c$nqh}qQ+ejnlpKo67~5gxdyMdgl?R^1_> z!LP(CT~d1c6Lg(^w`M+J+2t-NfI|*Ee3j%U2lpUfJ!`JwB3W#i*HE1xin$%s63mN( z*R@N8lJEjR=9L#|M~kZTKGnH+^UDOKSLb@lgx&@>s^5Yt9|CWd~3Q2wsBCV>f9I|e4e zN+f$OP-W5mBWGL`%e>rKSGim@87H-r^ACM~-oNCQT{3Dd8!^}4{Fa_lk4h2!Lz26B z(rqwk<)wW}JI=5$6zV~Nv5YD4mrM|dr|%G1H>cyXdS}f2b-gBK_J{9pEdvL#1!d%n zNQuq;u*reIn>ZYoYl3rFz!}dpqA>Uw8C)nKSNQUwvy5jX(#jYE;}nFIu$3*mX*AAo zS&?ERxtqvO%7Lk-C)NmL1cc`Y^VCU{#EPk8enT{Jz1+L8XfQ{5?9Tq7)2p^9&W$$^ zI~`*Sgh++BC|?n&@RE8D#6U%uLW&p4LgXe?p=<(GW0*n~bLB}Fn4`m!z3(5?UiF7B zzIz~db=#jVf9mt~O!EpAAPR`fG52=jm(!3J9C+8ceRu*8F+3oz^RIc#K~9)u;~T0h zhNz|`CJ1tV*tK2$bdk^B5(F_uFZ7%4VywbNVHS}P0r>O9q9}*jJw!URfCDk);b=M- zp*w8jd^8(korfI^5fDePkpuc*iX{FR^Y1b-5#6@}k*_db8iI^ra*Q8{x@yK?XWZ0b z5TlR>8=Bqx6Mls;RzjtXTWU&ZO>f3@Vv&o0BB^xy#0{DFwZW!fPV$f@6!GdrI{{KK0qwV4M><#xT##! zYiLfP)6mnc)7ges?J;?&*Qa~?d#8W(eW7=f#Ew?YK!Y2-N*;&^3RD60SO7~xby5_- z%3T?A?CDRH6_p93SIJOTBio%80D_9fa-S7j&e06iz{V$S0sAfPx$rM}LXL@e=pyzh zjB?;(h9;t}!9xO(;2KkI4i_Y>82C+KoA6B`gAN7ALYX;`B~SQEH#2vLw5eiQt5wC9 zL5uc^mXrjJFr*g}LoiL50U@%cA}eVb4AW0I2%3o>mR7Z{IJHIgW7!n(*~T_qO24gw6S zk1`=j1^;|uLcop*GSm)M|1u^ThY4&EF^Ei$n|BaIiPIDtuqmf^oKO)ZVjJZAWgBI~ z{x4^ccKBIsLlH1-A}Uzw@#)F3@av&anb9mRc`i)Um%dVr@YMwd1mvg(;eoN|#Q36i zf6D*+5>xBo={R4D5svLs4TeT$Vu}PMpnHQCihD5E;1OczU#TytTi- zv;VX__l4avq2V%9=xPE7QK{bHZ3nAftDWFP=HL{J|7S}=<3-7mOO?TUoE0_jFV#b( zZ~vnAw^{?k(?ln$c?(FaLZSl1=gZXxbRB33fCe>@rF~*oeE(JpcYHp2t4a7^v z^MVf_P+&c{KV2(TH_XfYDQzCZ{yxp|zCV3h1cD>4UiWHLYx7tPMzjK&LgWex0PS+K z61ho&JwK>1zHtxisDD9kwA2qZ z?FSFaYC4fCvdm-kyzxOhWYb?u<`O~AWOcWKWsKoZtgmv6PI8D#lS`0!!eci2(3$u; zrL@RGWY^!+nmCeO_>N}T_Tb#^4dY??A%e~kW{o-qFM8jfwqI?ZU@A!FQ|u$D!T8dMi(6xE zOrbZukpgnq3d51OKG%P6b#%&e$h?p_6`%|mT>;TIQaID$R-G3IhiWM#wkBT*Z}XKN z2p;?|BzPg#`|-_isFRw8FU8+_tt9d3FYEvqo+{t@nU!HC3X-TVLpVMdKPYuEvOOwk z6(elc@;EGJZZTddj2S(bC8?TS3|N61f3Onu7fREw1zjyGL+tKushNTfjh53|pQz0b;?+8giMm-uuil{(d zB+6?S$MR?|4Bh>42Z2xsBCFsri$pdlPmnKE_i(XhO}f_Vjj6=K6w-385fnh>LTGx` zyS}D<8CwyuV_21IPhk?_QjLLUhA!SXitb_UhB!FaIa9L~n6XcAwuN`Nto++q25JCv z#MH9Tp~bp`>QAWvKHWNgv2&WrVB2Csai4#GNruq(eD1lz<6;r&3KPQUUL$~Cdni+w zqmouu9i}`%751%CJc2jYx2xifx@`8(Xcj5NW48=AEllR*akZc|ySk>^ohrcw&DQGL z+FLL;c(C`%c(`hGXaRE&F!=ltCwyzBZ<(Y>EN{uC1WRfA?G;Ut9(FHj33P*~ z6q2@6U(M2q2)j>$Qf|maOa{uILV_40A%brm+6}gD)4D|Bg&7=4P!IJfEltEHl8aBL zrLe_e$n^{E%cvjFJB@t7#6Pmy0$SB=58lmUfca@CrS#%>Xs1z9ed{UzzjSn+{14XyIP16DQJ6;K`rb#RN0g;f*>YEklL3kNiXkDvwGf%?%v|XRGfriaRC?Y+q}C`sPN|^Sr!H9b0j>fsM6qDMRNMC&wp95i)R=B>PlH8S zd7v%cGX9x;eEgVxVoIf-h@<0hulZ1P{K!j*hH2oTfXE$6`*fj4%`PTU=A|jA{^w|p z$6MFxZEq>AMtK3D*;ZR>%~ljZC?s>hlBwscHuZc)aq7wvX%mNW<|@8(AV zr`sx2886LEy~hDh&+X?ko@}WS9hbty1V>qT_|T~0rdTCsJK8#Zc>=(^{*N7LW?x`c7y_P}XP{OLHF_U;{8=M_XZIRK zkZVux-D4IXnPLyKUXo7c3DJ@BQq5TH0?ugSwhl`*n<6ON$r1hyB zsfllSn?r*)o4k;{nd1Hvup2J?E zxuc_s2EYG4wD|q^p-rQfNhBjiiGHG1qr==)bLL3Y4mi2yq`aW}9lAG{;zHzEP0I;! zbqt^waA`$Vc2#^8Tw!2(L0!PSGBd8V$I~n^o!cXbq&{2(H~|eZBGXloT$8H^qkN>R zaI|m2bbYU}dwAU5IomsE@4wzg82IL>R=@XWJT~%b7e5+*etQ2t^nhph@A(>1yGZh#0;kEw(7xM|trs>NkKI4;xm+9caVkQ@b3D9jN!)@>b~WG3uDnE<|V z&T{mE1k-}SUXw0~d|w*0{+Y4EXs>w2fT=-{$d@i1Y?--m-&5|?b&3N8d((1L->SR; zrZkJ(sZn-F8(wf>j4Ld>hCchE7&dz%lY&7HksGhCfvOxlTfapBA}t<(v(hrY+ctWv z%f)|*B_Dt(E$DJ%mFGmilVV;(CWYOcHc0e|q;-+1L6VR9S*suwV<))QD55rn+BAs@XP1)GV z7(%C5ayIL9FdhP>Wbz1WB@3Uf*;@1;SZ*WZD2>=^!)}`j>$`F)w{(R6H5c+pXD=5Z zpC3F@E0%%Bohi22@T9bB+3;fPA-8F5kmi?9Bxh15rMCTs<{5-F-65x-P)mDv7qKck5fP|zc|}jsIo?ypU5+Bb z1fqFOIWbjPE~F<|#KX&Er4{2M*V@D?1nxAbHgK_KMyguPDf@d;HbYNGBtpvZQ$d<= z28=q9@Cmd~tq8BOUj^*aaYe#?WE!yI&#dVv*cVobG?Un zkVCkCu9-IzibVf4MTiYmHB!b71ddHWyG2boi=Bh2*kKE!%?{RT(cV=1J&#b$_T-kR zqa)o$iHaxPCavLW#%GX<;q3K21X18rg;n9CPu}22SyrV&|DyS}fS&fSHPx7`Vm;H_ zCn6_FJYTNHt?%{@whzDC+1_$97yAZ{=V{4x2K~}gTw1^8VI@NuZo|7|>J zc(8LqDw$mi_DDOoQVxhut3b~eQ@(~%kG69Dnzs2r8KMr6t8x{n^%p6=s&xNqi?cPcV;9+BUruT z9+S*MBZ76KZqGm!A9`0@bmb~zqDFVZt>&-m^Qzs4SzYYBwt7EdaXhekNU$=#dP+Xa zcs+U0%K96XLJmuk4^jtH<@^V)5*E*&=OQ!`E4)CYWTAq(zb(5Y&_-7H$}N-3h)NEm z`%L9nNtJxoh0$`czQ6bUq&y~46LjJo>Z&u-@mQZ&B4_lsEE!KeEf4o+cSZ?9L zDm)*1Xm7|o_emSPA4`XAEf=-Lnum>sY&X?V*N-YTOh2wLj zPql^~hcBwoqLx=EnyO;69CiGP0=`R&8ou~Q+Q8zJ%tn?MD|7DvegkV-tS;)~Na*T8T(#w3=JJQo2h5lUO49mz_L{r2LrvPgz5GL}x; zs3u5W{9Hkh2KQ<~7Jc1gLU6=Ij?aDFyX1bNx461b+iFR6Psr(!-nP)>kb0s9EP)sKVW}`m zm&!$>jTLf7(zGJd_OallNnMFZZYh<1p)rPrQa*K{R=%BsPGSYg`%N(;&jLZnvWJkTG>WUT;=Lyb~lM`9+E}hmX^POhXEvi@x}vMz?W#k zhl{JKJ)i$d%87D8pWe=}4s=iMh47Qt^VoW{e#X zZv|Yc&<@gliLy2!MD~XXA^s{hj_;+j%G zg|YxT!O`Kt$qu(!0@|oP7p3Y!@>T+M++S<1JlA=P>5Zu3 z1JuB3pE-`cHZ7tWSC~smLTKXT&UpX!0@f(^+Lj4T zvPXHuSqHC;HR`D);T@Dz^~BZ|F0={qny$p0sQN2)3)jLV9q=hplR!i?vp`B!=^h?x z#B>(@)yQj7C`=y73zH7O)LR-0mc|_S#Ywqrjx^mx7lOD*bciY;R<+F{C2KX^-jocz z(QYf7Fm9fz4Qbt}DQ%Uze>3dqq8;hYMZ?W|C<2W2uiIfLvPJz_Tt1Ny_sQ#QhXCAfDLv9b-xXR@jC56wKJA5f}4 zoIMpEH)kfW9kYe9PZ2v_0(NONn5Li-aj$3QXnQ5y$S5X1DM4$`LzGVYB=iWIRuN?i z1>~nYa$?nV^ymf^;0ak2k4f)BH=K;(RXuv@2~jm}$$(&zCV2RW5PHRkkS*tMyzL1; zb4Uo-y{Z0(iH&w9j7?gkLUt*EknCd%Bx2Wtjz%+;(Shn*6sBs{kh#X6VNJwn5I|}; zf);p!n_&-!qwCS-sP+&(dr$BE8I{x|CAED%uGRjW07DiQ6ZHhRfB(Tltg9joad3_! z@&p-Qyzh8otUJ$wFe3Umf;`F2Anja=^HJ0w5ySQF6lZJNVetZcv2zdvN)(EPO6UZ_ zgRvgvi5q%uv-c$WSZ?*Iqt8VM{uvia!e6gJjPH*(${qc_2H&{Hz zOAWXOBt^;8!3vPw?uAR3bcl{;BtQ?`ZT`JO~+mKgR&VAqzv9u#M6-mvxEks&YADVHv^baRJe`zq564YuulV z6J!-PO+*dRwa^?;(2?|DQxG)Sy|gKh^8cG6Q>h?VA0CfHB|Qnjr~<_*mh68d-c&YG zD(DrcUP&*hZ8v-W+4K@zegk^lwq97+9ZFcgC&Z~hiH?5?%Y_$Ca$1)5+pQKJ7|3O* zqFPK1b9eDtVbzkQ!cvkcUtTG^vAZl3UdPc62qx=9sZ1uuv?p`D*H@-PULEFBkl z3anm;bNfN~BgB;!TCfB*Rbfoz*e8Ng>-FSEDMqimjR&iLzV|cVJNN}}WerEo@uWYT zHGzPhP}Q1kP@fL&_^O5 zTt^$vNB_24sdBc8(3?egTxWhZc5Jvu%V zuQ7(SOf+T;dA$3tCN~_bOmJ_QlE&pc?O)^ySPtAENtl&Q&y&$QIYda)SQk`7Jz7Yl zofP4^qjI?V9{0ORXV~R*_Z6stm$S_Zsds9%B^az*I_*d#v-x{~U^0d($($Ro_&AZw zd(PmQRnq~kfsWZ zbYvqUxMk^_&V9^EnHUnXb=ZO%K{M5cYbyU}|sPz?DSg>jAIwNUH zHcmMnXv8NFPr|d3DPAlW$CYEtf4M(ROT{ag3TTR;SBr@@Gz9jI@HXe`qX6 zzOuQz$WjgFRgxw#>4<1{+){a(ZV*`5^d}DClA=vn$B#s!Vv(MJsDf%`l(;T8>;yyQ zh3Er_9wH(~&jo^vOmD=oQdmJD{c*b)d|Rb_2*l_L859;=Spri?&BB894FBkZa2C(H zLGM!2bJobQ&z^D7al|4Rr3BK+YQU#>0{y>Vw-8+qA>blCln|+=5$Qppk9k(~mgLl1 z{GJb-MJ~=}J>0HKB>zAt>d*CrB6x?+pY@Rf{;^W^=o=2KSg}di*slhKR9 zoC1KS^#qaI87dIuTY&UF-@d_hT&(;(A}%L*aKJ#9u1B47N!p!^2Cq6pY+I0zp3SYO zp+A&#L?K&B`qQm0^%_u4qNmtG0VB)RUJh1tq@I zxQ7$iS^uJsQ%C@jO$>|4LZcxd@!tovbybQS9~Dq~EM4&x) zuek4?IxVx@M^i~z;QpzJ@4U>$ce{h&$6g*_a>FKz_>U% z%Y(8Hcvfkw&JLJAy0HRN!pm`S8PVJ`5GQzuTd@r8fqTSv*=HU$^32X^l zuKz7cEXt}dKb*y}cESpxh+Ke<{ZWfD0zUqp8kUxerwGq*-l+c@7t4#MBBLPANg#(t zHPfWVocRVOGTBXQX`E_t5>?11g!0pXWnn=HNTur?QSl6HS&VZ^LP$X|NMyGMi#UT5 z4q+YqW7TBuPeoAqvRk6boaT8gV_x$Dux1b+N_^718i#u z>psPAfPtSz5#?p{>HPy)CiLwk$42&F1Gt3uG77zUk4VD`Kz_RHFv%d-RhHr2Qs-}D zV(~wZWFbeJzhQX)G12MzQ`v_4(|E*4FP+SpLQ*>L4Ix&q==~{BC_%NIU_s4tO3EhD zC#bp7s$?=imAV63!mH_3jb-w+G!wbz=48sqGKI>Yvpcl)T**>-!%ce1t&vR$LYJ?3 zG$Q>{A`z#B)RoFtI(dfKdr#d4LY8l(4ES;PV}=7r3d4NN(}qxU(#u#g!bo@!`k)UIUp>FgX? zfh%P^2{898j)>NUlN3-nTlG@W;1@VUEv;H;&_UTV|7tnh0L zD+8@+nvw`rGixA992VUJ2uERH2k<5&|Df~-Q$p8V4F=c5w2X<5X&NfX1wS4{Jkn{S z9XgYI#X?g&0gmB=-mD{{u)&bsKd+pffnj?eQCh1#KnkqUo)~(ew=3}ObMF%)$zCJU ziAtbK>oA8|;k`kH+z?vbJ?R+A7Q2)}v6pKpe2J#0BS5@>BSPdMCevgHD;^^TDFB!= zw31qo7u0eSv(U_{;lxZnTZy@m6pO}3&ri*A(N-qx!IOb>te@#Px{@LdsK#|OR1-Lu z*qEx(4_0hl%;e}arpd)O8CFw((+yax%Y9fSP_g2PFu_F5nE6et&EV@nm15yQcxr(s zf&VjPZ7kCHk%BCCxIg{2bKO4|BXsO3O|Ej_v1_DRGV2VmWVym+Nt>aX1g)0(}zZ*AqGX!EPz(GY7rcM-)BfnL^=oA`;p+Ji-!0 z99vRU&@N!f8FwaAIfmH_9FWl*{SH-4^OS9dEkG_kqdcPN92@0C8DV?bxeQF=jIRY2 zFesO}=~93IFfG6lUml%yio75bJpo+sB?maLG+&CD!hqx3CN3cadceU5)(tGN{V5Mu zeL>}to3>}T3jgrJDohnHlnM#FE}|r9lfK9Y0)w%j9V;zJ$Qc~1E~72X%T<%?sFF%q zos38^hrc3;gknmcD#~~@h^0j&@nXt8hTHN~QH>eaNd}xJENmBlRzYX1m=ImlIVhY3 z4_3Twq{v~6aDt@z97YZc!DTq=e6lUDbmU&D>V3PJW-X%L{2*F zfw+3vQf?e9QO8&t&-2Kdf>Htv-|z&3K{Dm!So%?+^dm3L&KgN034{2~mxAi?lxmo2 z71e_vlsP6)Nt94hX(FFK6H}FgWvTXS0g-$uM+jTs)eq#uQI1r%lDch-tt2}|K=k3! z#-*A`fjGsyvcR7L`VsUqkt=bSZ4J5wt15gDj|FH2ToM#HBE?bB2~r%5#kf&` znri12^DV2~G+g znvMFaPoWT2dZ-fdM&T4s^VGL#BF7}EALGsmV(iqz%Rlrbqa8$>I#Mq&_1LuWMq}br zm5+yop;vGJ{`d72iMCj8kA@&lZ)-fRyX*n6tEu>ccOJBBX_Mly zC=E&hX|5soOU{(oV-IZuRRJAJZD0%qKW^bvXxMrOC*-ITvT zNZ1mkj^UBm7>X8nE5xKMX_^B{1_@3oI1v}t7H6Rhli17D#ke=KQDNs$pSBo3?26L} z_+l_HCG;{yyhsr*Q7F|b8wXiqleh$<%n*}EvK z;YtDzx>V`HW`Y+9z=!e|_l~js!Yi!<%;0RIa!PB0VSp)?77jgUL42rWC>OF(uu^kj zg%PoWKKTLArQNUR-%;><(h)KjCLF8#L7litapB4~MzSn2ML6li_kapSGyl^2N1$(6^fa?kuN}ibM*LXM6;SO0o_h4)B3NDGr=lHY2;mqgVvnhB9pZlDv@c#k zaCyRUB#uFK$0sJEL~Tj@^%6idLDWpIFg2k{MJZSm1OS)G(k2yjTTXF>GMbFZt_-GO zs~^w_KxY#Sbu}SKkAscur+-j3%1&KJw&Ks zl$p?!n9gVu)p;k%S#&*3hE4Y8OJRYCJgIgXN7uwQdHra|Yp~72HH68FLjDB?kp+Ew^eb^hQLdoL zIXtqAOtJZ){q@OkiXkl+Rg2V|+nL(&>jT{1!#|bmJ#C49Og^ecVkR1IlasIDZQCgN zAm76FIy;w+3kj;VBFcvSP-g<^1g3$lcE3!5%FFo z8Vb|n3JLr#G;LPI0;8U0tQ5#4#LO_7KlVEChkuzr_JMn4Jw!W^Vg)X^1NXwNqK3U9 zX3MQuKnbKZ#5g&`MO!h8dk;el$S9okv zG}H0T^s3EF#8tz8F*KvrPZMfVEbE0vV=cpLBC_*n7>sP+HeVx#TOC>p3!X6gl&Tqc zCR`MiRB}rxr?B2~p_GM(hYJLp=&s%pR~?oKbIP=~g3%st5TGFU`Qjaror{I48Z=Wr zeevUoDZ(_$gS|i?@*UYg8)A=CDZi5Q4OJw$IF-id}zNffmA@UOCMaZUUwq6f7@6q+>-~m+CUxs@# z8i25BDzYd!m??HE{sU=P=w~cby4MFVyPth<=DW+QEG$appo6Z70JSZr07zVm9tG#Cwky zcc8^(ermvi3dI~JzImCrGb`8nlbXrZ82He1c=l;iTZX7OYv=1;FaydyjA~*doweXQ zyA}zgvvG%xiz}Qvr6hW z7SzAdmE0Z35Qg>0ilN8Z{|{9TLl&CVCI`^D2h}lgZF;J5dxPd1wgkHCnDy` zKm}4m+{QDuO<)uWRk7co34&f!Nyoj^-N@y&Dv(=-VhN2KAdl}L)qR)ra$RzIsg9C} zm4Uk_ILo$MC^TN-_Nbg~tDQmX7B8y+R>4uQ4^pG7fqm2d;VG3_AC=mw4#R2!pUCvn zMp&JWKtP}md);HTE9jtehT?K1u1q!_A#wvsiqFvM+aWv_`Cql`$${9TIY0w?S}XLk z>4z^i_9#~zb6LwwHt6daKmuZrB2^q1WwBR}?IE;BV5{$El(S8G@{cpy&-l@ytEZC- zObkuw!HS60Jlz3i5;sht!b>j6Dkw``<3efb?f5D^XMtlhYrKm>Hz{^%>CTpMGs>=4 z(pC3t*nf%k?uIzSJyjqYau*G3W1N5yWC{;KgMMOTUtZ`MrNs|=Mjf7NFk(f{k`_|w zRM2)51y^H>bfkROv5V)0-j77{vLf;D3BQ!h%jfNOss$#9aqr@N;}2lW^FE{Rm(x^@ zDy7c}Z!vByfVE;Tfi>zMrjORwzqI?&dFqp@)Q$DZ)JK)6k1JCvTif_UW!bN*QXhG1 zP%fYhbi93q0_J7--;&#@F5OjZp3k5-aTBgP^E-ub^k7xNtzU#ev zKEb;eX#S4XPI{9M{cdb+(!0cK8Zb5dykgR)4%Her5==ElXpbqBY>K729i~3e^L`}o zMTn5++*!##|NBxhzYyNoA8)2U_VOW;>OI(BJ-|Z3a zdh-`!-Xq8hfA04Yc1+8?>P@ehw1wbc2uFfQD)41t0ylSvF2JA1qtWc7e>v<}0zK%I zH|Gu=*Ce(-pI55;_o%hb79Z=M&DQ$ab?-y(`t0ko4W_3Fk1av}NcNXn?aP*YO@Q{a ze|ff{sqs^CztYsNwCq={M}+fLOQ3$$+SIQv_0LxfM{{eRvAhXQm*{h0YTODMQKb6Z z=5k5`rQe_hjbuu5fo^4gn^y36AK3S|ZiUf22A~#X@iL^!CfLDfA3_Y9V~+fm0{YYj zHy6LRhUYJ3{w={70ioZ9wwS5%#x$I;u6vl--S@p2jOKUl`=Lzy!;1^l{e>};i<2BD z70o7ID@WMg_SPwm&L6FBeBInwZ$8=xtA($Fc!uS}=yOIu7fev!){3n9@f=d;Kh z2Rk8RMPDFuFqIff?2~wFC42?HN>c%9U>9-vqZ6rIO+c}1Ufr!ZrCiFxzeQWppXu!S zzo#|C5W;Pe{yCTD`2u_yCcqJW7ZRy6>|B4E_ERePc*N0I2HuA$wg%(Ha748eQ!CJ4 ze)-~K8r>^sARllnrkch4zE^Qhl&-1jTn0-gU)lnx;MD3rO`&|qpGWZYT`*I%3RMGW zcMAt5Ah%$4Dm2??d6eZ}4=^Oj_2|>D2hR}wH2_{;e;C{b2l-h1N1`JI4yto=0KzYz zDq-J=eJX&P)xdYz`W%KPuGkTdT*K2%DevKxlb=*3Z>(1*gYhbWY&@<`{<1px57o(E zS0+EwCdFp1QA5-$P__q@cJkOuUT=<8@b{K}ubxAuFBT6^JMcy@q@H#ZL_|yrLTMu+czWvX#t7&UjDDc3hGEe`P`LE)m)+>6X&Y5f3c zU1s-1zqz~TX`7Z7*=}7X@x>$^;*b_bWxXBJc4LbnZQn;3#CCYE+SVur%G26D02pOS zyNtZ{rEuuwbvkJ^?S1U`<3Er%?>o&Gk%F2AYffN3DRkazZuvL@eNWqt6+_y-(+B8# zx!9%kkQUGf4@f!KLqnr7Y`yE|i-bOsb{Xa1rqsH;Y3>E#vZ-lT3Hl-!uX@eBIKkF6 zEspJDVSuZC3dz!9bL%^#*40h(rH>D!k)&aV84%xPq5ibFmvFPDorgk?WM%80H}|$Z zZPU^sdvB}@q*-$>(0wzcCA8DDALFQQ2=pI2&Hp$G&^7IS6e*j+&F_b4k1g%J*IIup zh`)c|{EJV2Odd@e#Zq6&FuWhVPhojtfVCk@&HGXFFL6XIEv}%O(&zV|nt$;{V0}~5 zuA{7dB&>b?p}8Mrt))fkJrbm@XU+XcJxv=#%pXZ#2Jf4%qG-3YIHHebhzHZ=^T1_K zLfWgixLR721)ExNl9I*J;y8RMJsu33uLAT}k)v`%q3jt?i@ocr&JXIjqv5oWp}e z^|Wm-hn3dTc6^b*YUybwK1nc_BGXoolkmjoeRF#nCefu)v67||xcjx2`o-^lEr(`1(d-FQ96rp|_S~959pS&yU zn<5{lKQ;g2g&<@!Eee?pSt6z%lGXl6NIQuYE$!1Jfd5i@HvKedhJD8RrY6o3W)_a0 z<;<*Uab|7`hs|c`w6L^ZXm3;6n_+?T5kz-1?J5-75Lq<4YM#2z05WJ=#C$_0(`?c_ z^)W#qNxO;D<&ntooA=GvKIoVUnie5F5~+4GX&%KnWods8IBklWdt*DH*I|iy5;A1& z#*9tP_z>6aN7By^{pPo^?@UXg!26b(n|;1?(bj9;a-~|#AZ}JbSWbEK4f|}fwcsY1 zCeaw?7qq=N;h`x1xNSv>xy6E2(oDJP!g~TzQLGdOg273=C75KzAOoAq@KddQ^cvm@ zbbx`eLv1#6Tld0pDE3P4?+-f=ey(M@B_|D($qhRvNwa`oSXeMoa(T?tNZVMs(cz368^uLj>Ze?@I%6 zZ%?bhckcC&f#KxRg+4*ktMT>@-0HN5B5&O`$kLz6KEXYEzdyv)Ght>1&*^vjxT$0H z$1QoNyET}08C3wW`@JaHFcz1fs$dJ(^*`f`zZO&36(UdW^_6cu{R;uBYpz~w&W&c9W1je+bInut>J`S#j(`R+Q0*OZ;rx2=m)221(cPFFi=wc@CL7vmS2mWM}hl8n{ z$3BEz=5hT`#m5F+QW+Iw>Vof_0(5~G@_>;u#D}*(?ZS6$GL|>qbm&4kkg4A4^5FBw z5Zgc2yI5TBVqU$jHbud0ECw9LDFTAtkBKNbdAW7Gv%Pn^^XjAu#SdLPO@xr>iX-KR)AKnKpr_J?XokogT)wU^psUp5M)Qn$R_pXQr64J z-6;RaKrw_VwKU~M=N2DRrl|;k$^iRNz>`vU^Pbx?(@n!ROG4e1b7Mv7jTsc0z?}emgi61qom*~ z`l7g4&8)0%E3yfh?i3czMUE9&&*x!8C}(7(EAtc>+{QYav;PB`9pe~#W`wu?WW=mw zB2><|d4bb^t*L_+bXsH^Ol9%qW>d=S{B5=54@7|Tx$qiT-B~l)l$z9IjcVn`#kYxv zglSx+7KOJFE@TU-!&lsjIb^o2%*ZYnLh6LnqHkdb_cHHK|4X7HkmG#GNq3l)+|F&2 zNpYQhz&k~LZ1-P&2-+-a{jAFprhHa9l5A2*-xZa#0~RAzm1_YYt1>^^TVqe2CE zkGB4>vHSJ&=9k-#A2)H1xYgYH!}_D<*N@h>|L})LfB5b_L3|^T2 zuwP#N%QGLoN&sJ;={$Rf2$XXQs7kspb5ZlEna-)MnRBbdgJgJvEm2i%GY-63050pgpGYKbpfjnN1 zosR2Q>Mw?@5ZxoB6bqT^YBdSXp#=Y9*kj~Q)Fqy5nP8)O;;}^$my!Fc!hP%>CUX7l zL>^$2C#mJ`w!y$vZdP$n8XvOW!upFXf}@YGtih7*pXDCuo<@a7#HNPV%+S*9*ihd1 zHk~uNxXDVe#R|a9i*3*%!rh!ezEX2S3PtU@dvb?2^tDhG-ry7I3FDlK2KI$O34z?^ zVbfwU(9m7F@U|u*fZoimhYjY)+YCxaQ<~B~mo}E=R%~+_`+V{FeJ)h}j6Rz{xl^B0 zwzGj$!I^O0hb~y_V_?s_3}m6|XLQPB{PLYL?b(Oi=PBlxUm1{l0boH}q2)@kq`@xw zJ6J$#_1|>{<3D1icuDzdcaLc!MTx)NjAnC+;AtfVG9FFm6j}X7pW2W)J7*wce4gN?ntm5o=;QTDt zUeR^oL@bK92uZ^qs@3)O;CO<2H{F@16C^XAwANc+u0z4ZsJoVymO+uP$q)+efLHJR zAA(k{q|qWtN^pPd;}Jef|H>q2d2SbLeZ# zp~sj*oG5eV5WLhEO(L?Th_`g==>&b;qTJ^U%fcB{#4`w*Gc4UyBhvZC*T;+b3#OV* zW^Cj6X1G+f-#*Q4Z6Qzy79JZ}j&A+E3WBR!I?d`yUi@4cv=DZLhb6KK{E~b-Xh3rv zL$z#MUVlbeY-a4NAVYUru-ZIzh3C1;+#J%hmt+{eDQh@&M<=(?|?B&9-3eRg8IS)ea@e% zQ0z{SO{=uAZka+As5-IiXsn{+((g**Re%eG{HXzLuCQGz4sxOGcJ?X;Yb)~)I^!`e zJcFoMv}muSC6Dn9mEBu3%q#Z@Kn9Z3ilV{A)!NEyGitgr&~E^dE~Kom;%WR~BJz~e zmTH;!_4URKakOXgXe@Id3JrCs80x?ox(unr5k{N75|>c+yExdY#^MM^q$JXQh~-Wp zJNjyoreV}edhH+7a2bmKj3bfvM1cpec!WeuP-slG9|2t$Mm%xI*nvrqMRFvSS<6Z0 zRW`)VA8dmELV)S)%SuhXSTf~wv`tn3*C3NHRHxR6>x8t*F%fn+M*w7tbyxN7gI2wdzjsS4I$q8tO?*XpMUiQv+ z`~VfQPN`pzav7rJV!XEmrV%3R@peW&nZ1~dWUOcA?c(JtCv^s2PLWjZh3TA(gYE+= z=*8OCK`L=yD={@I@96NX-WyV6J+_&xa&2%;zNKQ=r z{?-0A-t4rE*=Q1Ta9#gI!^#{@Mjt;_lz6qby&ucB_Zgc6>rVpXl@8Z&53jvXy1jCN z`8ntWePs%LU{cz^784>4Xs>?(0TENa-)=jplnT$M-8^CUV|z4?6|g_V%77p$X){No z>8wc7(#krM*({TbVdyH>Q7IwZg8zsdR}p{%Ojgr{AmN<2wx`n<#+a~U=Y+Gk6rYYW zO~8a=npna(!Y?c`u@>dZoZiIRVLda^lvgiIO;J&_JrnOV`VHWq2i4_7gZ)YuA?b9g ziuR+3z|*Hk7a;EM5MB>K=YC!p4G}G4h+QP5Rs@AwlpBz{kQ|{5493MGJB+M08e-#n zk!3-@z$>KdBk`aS`H9CBW6J4@D zyw@x*#wpD@Y{{0vjy%(2%j3Hwk$#I#`*oC=FIxOO&c8 z=F=?UUeQ*nn*O#O^vdO1PAX}`oSrhE^&|_crF5Xclqiwwop)+Cud1!<(5Q57?_zz+3-1kO$?|P)U#)OIUEu%< z+owwyod_nan@0ZH#w`ZK=5m|f4I+&p0X6-}zR{#mWPtL6&h;@S33htK1@0*Q?lE5b z!vlJ4KIJTSz;`!@HHqDG_Xf|Te3En))&tHX5DhjXCSb|!Nk1hdw^|MTxdU?`lDjj!f;!$i-$Q7&365}3(01<^*CUW_czHB}Mc@@Q3E7!iD>NtU zA>bODfsWjneb>h3|7^B3r3x_H8@e$N_5l#a76OFtV_Z{K!m2|$b36MSt~ne~ibH1c z#tYgNeEoZCy2J3;{5O7+d(K5P+8QRf;lDfBaI%DYQBtx zs`>CA%OhB8rOi($bjEe-5n5k)Y^8tOorG;z5;(){p~r-T%9lhEy~aOcpKq zt$HDxDH8+9F&~DtlKH#Q5avla%6D_>HzC9POjJd;-3yyG&|Zs$*q20zrNX%Y%~sGL z?@9u?fL%dSM$18I=`3}uET{{x=L+j!Q@Km)p;EcskTthON})qnN+AhJ<~8M`UBH>e!e$ z))p8IdKlLR2j!Tk!8$FWGCGk9SoxHpL{}q&4Hjt3-;FeIU-9A=Oa+3da>#0T)Ze&!+TZ zvd)n}+8Sqkls+j-!9r8gvZ7GX@#}Ynl_Dd;o+B<|fd!%>7Sef=@P0{5EHKU9WzsGH zQ=Y~P3eTO`&cP(xT*Sa~aY(%enHY;~g`D#egsE7j<9M64oYqd!E|b{oSx z=ubvN&ihJy4NwI|EhohzQ=7vdo~Ff^fL?_kB%xCB2cMJ;gB_##A2bU zU{73=nW4qF;-WjiCK9=VGXpFaF-0IyFXU#YfR-(PI3ZEVktrF_lLcZZQ|@1AQTqpD zu2(XnZV@1b%w6HJP9?a~xyn)qdMyK)F?`jD(jwlEa>HvTD>s%pIk*BzutM_f^wLJG zT)$ccx0~{n?B^|GVub^=G9ju;&1K3(r+0J7QNfUl;FM8ZRC+F|$r0UMFiWbH5lJ%V zw_9=ac_#!a>Q`V=Q7T0#nO;*-iX>D*uwxJ)f>uylf=QYh#^FJ}A;B9u>bSs?vhRY- z#4c4L;dT*wHa*?P%ZuD!+H!{zeug2(RtdXuI5H^w-CdZ5SK!TMTd4ljOc%X#5f;)% zFM>9^*AqT83d~|nB&XgS3i%s+P#$k`Gzbi`@ZqbYc((P0w2)ja z_}Ez83g)6iZO+eW6dFi~X!Z^bS1i=5J-2)527!G`G&qbI<1)xDL0Dm3(5{(^Nsvkh z3FqLZ_)?ULlw#Kq%R(QX`OTmV(X(2HM{+<+2ZK`+%J2}zW6htmWx>RSN9y@2wfwO6 zziMFl@V-`P0S&CyB_O|m!NW`Vl(82$Z~F8sDjaw*$B0NymV)I{)*0-1$}vT33`kF{ zJ#R$Q!KfTosSYl=eO%|*ZVE%JO)avnNzxOiL%|ZBp)w` z04dlcfF?jmY`4#|&-cY8Z#y>t%CdWUrdM}aMDDyqMn*(NL`FvHV<8pVPXWNihugQ| z0Qw0H9&|rnKN!#9aG*M64U~gTx)JcOxYuW+Ml9W*4h+mms(hgR_@4-1V zE#p9?aAy~INl%AhT#AB^f`!;hJ6R2$hC8@`O1}@7*d!oGmtV>v=aKxCOazeFjz?b^ zLYsO=m1x;N=74J-OJq^gZ@LQV(?9H)$FYI&&B?OTOQbn^c1*tWYds5oU zbZ3K-=O_V;xPVOxB=3Q%m3$4nq2I%r7i(w`S0^tmSE4?*P{jh)Mbk;c_K^4}?voZK ziZD!h%r6n*1pS1@vkP(&!4RbguGai4`sATLWyzR4>C`lhY#a4&pg1VdwRAlm&}(2M zL`e<~?IV{I7<+1?%Ur8?3w^9a^{!<%xhX}YF=-;33+_~r4Ew>XS~d`&{8`R3){*bC zk=wOFG1(?i)fuzxwI-V|iUP^m0C*$qR^%@t*Sw2GbZhT3MHgZk9foeWy+`6X!Q?!I zLk{khv=NOa+Mjy!^L@XoS>K?8bWiZ28j;MuK^XK1K*7^>gx<_3>Crm-0zI0$-Y*A+ zb9i$w#DF_FO@=I9AznwW*n!A3K4Z;KpH&q5h&Ui5N`{TtLC_c> zp*mO2H+7Pb9t6V2del4zRn137Y<_*vmB_!=VPRmvdH@ND$1FqaIc_1!6YU{anbn-_ zj0cAxK2f7B*Ms%}awD`(=JdgXiSt6zIn@~3JRi}N0DgjH~d~Yh-mB94c<)Gzm6bnDN2IH!S(t}=Kcue}{)s7U zwSKaNXqSLwz|0A%8Ht@#5WsOBvz5YtA(nG^!9NY$L0 zJA3(|*xkV+u3Pw0W_9KPaNr1aD?1AP#%BQOXkSNgQMr{_>!Er^S>w zE5mAZF)%v+fC7T38=QZ@8lUwUbwiC>^8O~sdQ$e$KAg_G9;2C(0j|J;CV%Z59qr-Y zE?(Q_pLh5-U*j~9<9h&V%MS7mag?y4-A^1q}G%%vdI$f6-}K3 z@&;AjZ^ZU09(**9{6*C603J)26;y?Jm>2izJ+I{9!9F~NRw)LM00OCScAnq~id&s6 zvL76yi$?1n?S0!7DdAl`G>L+THWvcX##D_PM6NW4gAtcFxCP_el*$fFm6wmg-J=|U z{9e++#coDBr}P*23-arj;$K*7zdw_|7qFOjD+H48SH#nPBg}d^)4=ytgeM0g5&c@e zn=dobu6+|1lu`3=Wsru5Qa1@SYi;`&_N`(>r>RWQ@iEi=8nhIFx@62x10*Y52$0sv zz>xr=eduh+c&?8gWWZ>P6qJI&Gc?*sz6gwLw&>h9gGA-fwgN#6VbWDdx+uO^d$Ob# zsT#1S|SLY>@yaMkSs?`2P zLS$oYS)hMvt`Vmk>%J zdr=(fM9H{8zh~YRL63f`PA=j|b&ngNE+QBXExD3JF1&vI`TDLL8JTZHO4WlUo+HFN zG*h8CezaR<@Pw7P(m;U6@fXyjGZUTICzf%LtJLC6*VC-y{`g6=&y7xS-SObr+aVqd zYb64yXyjl^%_`J>44+(iD4@quI5E{ji|Q;9z^RO|SUQ}mWM%-3JPl%-D&XKMH})2t zI0O%!ak0?@XjgTWJikb%#K+DR^P`zaSUGEvZ=9aQ#$j;r5n$J5upJE<2HV-^K&~z? zv+H_Z%V!W2?rQ65$Xaq-_B88zp_Hp#7ilhVL!v6l;!YwpWr{OJ4z4H;SfV|2fsYfM zr2=_gQ}|St9+&-aqbk3r;^b(x<33r)8E_e_N-AZ#ItmSN7hG5oq{Y|0L|(#+-tHX- z@SKqe5Xw~vZG^C9C>c*TMAmv86XX_3CvD$lbD7yXN?#8k;YQmQQ^4BkVO%xH2u2gy~k@%Z(GdDFz^V3HM3`}1*Xn{m9X zgT=$CJ4KE&(?xZo==sUXgRNVg=i>)=Z*_zN`Ews<_bfPqBjy33331JGICyZU)fvI) z1v+gKBMIt?v!<DiQTQL=w9ogqdn^L6lt2iR86o*X>Rn^~owG zh2PYHOA5qaj}fq^#ti9NoUx{eL;_6bB+g$n5?{_$x;_|36&iCQlPQ9OnVnm?9tx%- zp_z7P`i24+261!?hlXSGbsf(Xng)nbBq-+z+$>DyP0l0NU1R3#fee$efJ6WiI?4ki z;&HMG&T?3~Z zT}V~t+=&r27GiUMGaJ6xTv~2Mhqc$kMY)ZyJ_d*aSAc4UDxd>NwA>eQ+Q@tgqzr6< z%)GMToN>whsT^LfoOne9tnbD;&~?EJ{Vf0xobR{qxlKB6=HAUr(Uo(~2rLI99AI4|j4UXGe+r%VIsLKD-K8Fgz9lN%KN4_*IUJy+Om!V_YY* zF}6qng(#@};?a}6A-Ercw4&%jZ}wZ(A5@1p%s_S5mWFJ;K+0tKeN(1D`i38Z2hu3B z$D9sgs<0+BZx84M+~HOx=TLEKa`k0GNyl{dv>#A#G1BbAPG97n$mE4c%QLK`s0UoZ zR#;@;aPKAyqQ36W#>$$yMHB~%2>}-jAvV$3mWPRmYK;QCEUsZBu?|B?B(lWo++{FH z)_DYrYM>4nHX{4&dJ@>g!adCc;OMb>vsd=VkDyn&Gn8?&1T@|x@r*R=^IIJl2zL?% ztB!E;DpMc?a7hLi^Z6(qesQ%~nw?}vi`Hi29i>i;c-ocp_^gSE*p@DH7Z(Mf4HW@q!X_@!J#N;+td7S^%K6yT{GNzO_BgyWG#nq=#dhw>mZpduKU z+{}G9oK={Gn;nY8y4!#I^2=>px^xer;;uvpmQ>H!b&SRiqG+@f9jg+I4rPse1YzX` z%Z!NOuUeyqsZCPPoaq7r3+>Vw^5_0bug`3ALd5qsvofNkV87N(R7$0~7Qt;H@0SQO z!+CMSbg~vj-s+>!w=&-|5<78IL=Jx0mI=$*E^+1-pnD$ez)$?c0^*TgJ2 zQLO0EKX%iRj#?Ji_VHQoxsoLiZx#T5X3cIj12 zAInyh)a>-Q?S$Rk(^9(qq- znQWkb0X9!IAV#HGGPuAhkyG}OPR>&S{-9~(G`f*hngMN*GFaKVUAXgFACjA{U=`Vl zUAYTx_kv+m1f4MzA1N&ZD;z8cSW*Y5N&~plNzkkN?dbHa`E^6}dokX-td0|wi++3k zrgBO!3Bp}HV*|iCOpZ51bUa~A7jjZZ7p`2qmJExPmE>vIOQbV2l}Vh>u9QJ}|DmO) zg^L%TbCJxz+-3d+WgVk%h>_k_7jF|DPnZMi0izKZC2@QE&KGyO|KeFs`BIK9BV+ES zI5@;9r|H_&mvEAdCy=;2VRm}fc_*373cjFI)9Ld7@>L*VOqPd=A@k!i#wBk74RILDsVWe zOQJS+dDr41Yp-h+T%2NP`AR`U0kq7R9Osal)$oktsmkoL@`rgn#SI!fpxLlab@i{7 z(bzKir!U<&KD>RwiRn8xUNuEstt;2V7I;vwCMwLOFEH5A+sXSKBsRv%AdV_r(vxk| zL33_^c|mH)re9z^`zG)}7GzF3f8fM zr!8@Y)Uh7J@Z8zt12h{%1q>3|ZB>2D_;MKCne0FhfYR29iy)yEsR8Ua2gLzaG9aH$ zgg|YcUqxbRj*KoAjG8QM7~M`Ekb8DGepg~VY2XvDBb#mMHXJkM1J;plt2|Of8mMkHBWI4D8f4xCJM!Y)} z&XVxRUDw~qg!q~wX%I5bvGf@ppc%S%T1qSqMbipf{`YQ~=+D9N4Ozi}AA5fCwa7jd z`D>6-UiD&#r_F{JCOv1`!au5RkCt9wsIqFl?I<`&r?U(Vwn^-b2caS*ZJ|W_5MfNE z23!zU7sa%vfA)}unva^eEPo2)ax$Bo%!>zM9kCrsc^v#}jE!maotuN+7IgoP_32I& zUq`EEviY;3>zlJ?OWR>6^;;%Z#WYw6q=H=9IOZ_qD*Nc{$J0QSLX+VLrFRNjY)TT< z72{vLW=k;Qqc-*)jg#v-?tNpxvF}3SQ>Hy!2VqQ2avYfSw~ZU`-vXB%lv8w$v97pF zf*S_m9XM&=#RfUtp>`lamGHxacUO@h;S9G?#&}U{>X{Ruu}*NsEd4n0Z+23geuFcR zZ3V_@fRO^lXWMa#k{AMbrR5IWA!RCTO;<|sXL(+w3K(rBtyrmIouo%vRx5D5{kC^* zKEJuX-n+eVbA$I9Zr;4PeeYFZ32hftCu$Tx~ z*HcL(W&xlOJ^o)mt8`YO=S=XU$Co^wzzubKM!t^n^q|vZM?_QL`GfbT<*cVz6#`NN1_ZCcVLtJ6Ib3FlXpz^R zVN}=;tScWp!++BfERPh1{9~vMjh;JH5*Qe)M32MU2z~f%LiD08mk)TB@8W0aSEB*x z1X3cg4`yJMmkHJW%4$-F3ju|BCkfPywcb6O%wStQ?az-z4O$F5`O&+Jgo7^QkD0p0 zyp~TKbzD&};&iL0n0>@heoPyhvp9`9%qEUgW*mEmJ)eI>UxjnWY8)$=z<-=ibrUl= zL_|O)3BT;Q9bey*Qw6@Y=u=xq1l1I0=dLxy(UDGxy{$iVR$P?E z%uG}^r{>dArpwOrzWd=&EtxT40Hi26~~0yl&)(y&E<}J*-x;(#Z%#ljgmYUPIpLRCR!kFA|%}Kj#7g0 zRgvCR%%FkBvhX%AuFR~%LIKafNP*m^`omXo%^Lk+z#KkCyB_Wk&VzazSHFJIpb8-naSBDT_3yE6>91=PZl&a^hies|e8!Y&HSFuL zOGE|)TCG|A1}uCVW{1tDcP#N9Swr+{0zC( zKo63bLG)<1fU}h}t=U;A>^cZfPrRC`kXfcbVrvo)7a}R`p=P{!e-T7!jel|%YIAON zj~U;&#RMJn=rI#dm)I`Ow6@!!wwc50!Li1zV7y_rF-l|Oz#^(nEJ9z)+RDLh%^R%v z1g1#COv^t(R-5?{q4DBD)#H1n((1_3OOV_!`B9KWbpN#T;ve68-d^$!E>fIkk=VCy z(>n%_3FcXT+tg3CHY%0EO%EJHvBAdQ-P9A6igz7&T>WS?<_$D6lYcsVvG;W6pL;(c z3C`1L`$v>bBjd9b|hFq#`SFT+B{2RQshZ~Cha5A$5xXt)diW^;luJp$bC-H z+y){mN>ThC1#B$KWm_z-VzbSTchFsKFR*32s;vw$QHlSE$6tfVe5|)mftMAI&?IPz zK~k{`EpiuB>@TYn$FYjGwMixW+rB88<%9ld2vpZIlBy$M6_vx$`bGR!15%`XR;mx^)2EG=2-RAkNjQ1whbVTnCGq9fqA4 zV6=4*D^ak`?XVd=iFSyIUpoU{xqmr9Fh(k_ZtO|z`kW`4& z+QfSB29bwv)bM2h?%^R=o?8mmuuUfbj%Lq>@At)|vHql%Y8t4DCgu$K;m}fQ0V`|w zt#apR@XLd4I0)@M+k4qVQO_d99uH@~%qP>Xz(^)Vg zQaPCg%=$URG6<*Iv8v8XyUXplwGM-+XI9Tc5*Bo&8*@4#=;)8t%F<|Y1o((EqT4}G z-59^#&gau_HaBO-Z=rO|dgp$A%*?r)1BMJzecn8u$)ayEb`;n^a?#;MR09^QGZw|w zZ&_-iUn{-})UM_=3{0X>sfd33MsE7lrIpZ3DRknnVzmYiBZU&4I578$8vL1PFgoYC z0YPMFn!%Wu^_(Bg`UI@36B^NraaO6mY`$5OkDcpaLJ5PEj{}@q0!sX6GS*kS-8n4# zj;v1Hfw(|Aerzh5kXKH$Y<&^~Ym38T9y^U^aC_*GxbY@87=0)n)DQw(RRS>(D6e71 z$2WWUzfB&-2A4Y(3qIwH25?WYB@O`vmheSR>Dk#kIpXH6^Q3F#LJsX?N;MJtN}D6x zZo)TR-5#gNl9&e1D0rFLsnwib(IEn2b}r|We+i4Z~>9fHwiPTE}3tdc<>SLVnhaB%jDz_j8ho^#oqP>Raq+c0${9nrMOI zpU$H6`?ua~+<;Q@1}Azah-row8{wp#{m-NuS)|VTO*k-a&T#TB!B_Ybu4)ZmvtX7t z_HVx@ae%ivZ}gAgv#<|nXI}(ZT@Ue`Q#t)fb_a~5V7lKOIMhSftWH9>hHE7lbpl3B zNbhS&jGHJ@OCmUuZg2bsu>(r6P`oyUr=iswp?hozRD5hH>lWI?H#Jm7%HtAIwCK+z zueC@e4S-;73&ip24-QHH90H;2(GGK&Equu0#!nwi5Q}armWk~?NdY8O0=xc*G`AXo zgDNG081}EA%L1o0kQn=eencEm^Q+5m+Ifem5()~W^jyFfhIzgtY&%yu{>F_^2ZMX1 z5{@NW@FL+H-wP$|7QtQ+2(J8HBHr>Pa~m9-JVPoeyxuT>gS{V%_>SbL+3exH`WWJlu4Sl3v`2wz3u=QwwWI6J22>4KZ*LS|>Whop z3F^mhxhYbDn-CU247b4%8%pZm{+r!Yv;|0>RqiskoP9OYkh>AIHXicLxci&&cO)Mv zJJQ#gZAr2st^{_n=6Fed^~P{xJngc=aI!~QJqKaYc+Vup0d$v58x|I|^0ui@2X7__ zS6u-dCCJ+Bo!24)$(R(oAK$Gzx2l-6R2wN`9YJ*{)0%B7?oyU4nare$AF>qxXZ?DP z4k7>W0~DVnGVu>dCJ(p_2rxECyXR(BQcbq%j+!ulZg(i=&7~xwE4!B@8^1bE@#qm` zJS=bQOvc2|MTa^>3xNLm_5IDH0N`uiZm%Gp<)V@Fvq;pym-(|HG!+ttUMOe{K<4sF zGxR3#DZmRVZ~_8y*bG{F`h2~;myP?IEv<|d9hEJ$6v~#534~5j34Ywy0dLdE5ce@) zPhy#!G}L<+;#HG&{<38BsNYJrit*(?hV%4W5w@E26bDwn_-aZim?AqoSguemb1FtS z#2qN>$szJn2S=e}D5bR~P85I2Loi@~S#H@-CU{`LxJn!{(txJ#Li9`UXn1ARhgioc z{wdDIp;HcEbi=PTL^zRlO64BCiYo;D@F%jUg-Q@?{>e@uCu1>YaPo@ntTzbTm372_ zddT8q77sMI+g}8ABXn%fvC|s~7lK7#nqx|>lCbm*9}!1z=+Pm?g3RmtJ|3}VSg8U3 z4T8H6pxWh~nOksqVk*Mg+C&Gl_GvSfm>=MdTf6`5XgoKubAL1Z06z#$`cv^HdPeAV zDU429>l=2nq6tFNK(J*SAuHJQ>IuUsNVt##VVNjyO_u|m(ldB?F?xq}d$>=Nlt)JT z(*j3L!fytw#dDfP=u{7sBGl+o*UBj;B~C_H*r5uvDr!^MI@jSmVE!Lpknts4k+Kfm zuDCz6fEJ6@{N~iw1-X61bcs#;FZet3Pgx5S9{C|p_vY>GtpUkL2i!0xcZZwQmSLqf z3&|hMKo6VB{^VkRa)#TB>nHM$ERz1|1oXdguzPdx*UvRprTF%0>-OJn_I{MFqAq)! zUp(5aBhH62#Y}$+Q(-vMgI4V;%$SQg7fTgTY1kTFWkvP~Jqd`9vW{^Zcn)oL z3+z6nDm6Q-o{=i2Q7FSrZpWykhml&abn8f0iL-pfM@c>QJC0+G4+da0IgNFyv!6SM z2M6jfY;9{*l;4V879B>auv85tq^SasV*JTc2f~toCb@AM4=!On3^gw`NzX*D_GWZQ z5wwhCis60s;sQqd5Rvf)F>=-|d~x`(FQhH}h&5pSbO98Xh8YB!32OJo$k}F3uj}NU zLZyA+4Ll9;>hQ=dVBQ6gC)pc?e!T+^wBke%uIqePUVOZ}zqp}ou3)jciI-{BFc64>XHwa0MmvN9a z+BAob)Zrn2CsMNm&uERoLKL$~|3t=`(^nh$q+%+vSwm*QLT zUqO*CY846rtGUUCz6y=N3_>TY+E!r{5|+shmt1>_GOA)20oPG$$+T;aZBahQ1q-Tb zHWc+&lmMuBWfyp$O51uz72qV|@}oep9SI{Rv`fg6jmXZ}0c(@SLWwHlqfC1_i0*3Yxem>mN{W2Mjwu10Hxf)HwC->eq7!j2MPz@NbrLLLXaaf=1j`jKJ?{&qRt0}2QnS2($&fA} zPiw)(*co4Sb`QTZv&R~Jfu&)RU8>nMd({S=@Y8W;)6$1Xo?Ess~|h z*ZJTCmOiRa+`mG(|xVnzjqDVA+H~ ziLTiG@PC9)A$X6DjRk%Ukc0-aAz7gMGa#yhOBu_Re|>0+4HNJFX7j6Qk+liAkCK{4 z;Dl@W%r*YY-WI(Is!Ub@3{%vm=K^jPEM^TDJm-^foL%6Jf-$$@(a1JPd3dmchV-mH zz>7te1!B+rdvI^e-)``wKKqh}8KXSLPV>-lA{V))vu-D$v%L?a*?hK6YWp<3zh2wu z(uubWCv+2Aw#WdEE}ro?N@JB2Xt0gzsWI=IAv{w;+NCOF zSXifu>nY*xiptL(!kY4YY(E{~;TPL??r-KrOYrsv0Z%X%Uog@JL=iI(HemcBy2q{s zBP=wFVr8@`FRx_-+F9#n1!s`c3q138?9LjUw{7SPGQn{}&)s%; zKN)F3P9#IhK+(9jaZ9{fZwu+^ohJxvfQEBzW>VBk>aOW!fnpzM0 z3};GCvL3#pByaf!EQMhgqv?3|PF>SsK{?S-ni1C%+=Mhd%95nNjZ;Fy#iJHzg1`}f znzOcVxIA-~5UNCbBik0Uw&v7}jBZN2BsHj>w5ce#?)7+he1@}5#@FK3a;l&-Exhxy z?=(y5qCN+cV@XXcU1qaXib}pxTTz5J$K5uaquvOJqF*RmExXe)e4GNnAxzC^|4wnt zcy?uiYytuzuCs5H^5$RNR3vv^eJr)SjTaB+E zK6f(7p#VUmT2sKbaf={ReqyUt_i3ckHj-#zP{U1NvbumE{cxL#)x-ud164xlgcegN zp|KKcJcVA{$e#VQX2Aj2=%%Kxp&Q;(w)c*L5K(Slz61SXa`5-bKoLKM6reg35FHnG z5mIpOgk8(-elp4d+#%@~6+I?Q_S$L*6zyLDkMl|EK-liMp0xIb9GEM+jTC(;kz4+U zsqmi&C=zvDk3&9uR5W(CA4^oNmiS>1D2K5}$+{X~94%_f==1`~$}l zIu6bXC*8*6C<-YCj1fcK@Bw>RlDs>TTiVz*bh;Yc3#HOQDw(A45yWJc571s&Wtr_wqvO0R=DI_D2OwvnX_7g^z)ZgNGwdsaFwF@odh-#II?%olR{| z@0Vwhc=qW~y@PNVWnXn_{t`v@2`;JBOPPJU2*HBPW5KEg)QB7&QQc^5AtYw4a|Lszu*vne-RgW1>2mdd`Qp1$mZ%bh}L%jz`bM)s9V z5nMmnm(u5wee{7<;ANkJo|%<;gLZMdi2O3z-gS3zHbBGsk$=rx0@%#E>Rvux2a77JeXQu4)9k8HRB zU!@?s<`PfWp;->G6K@q|9TnHWvTtg|WwUN!q=6tG`)Gft)A~`(KjMmGNqU3Ed z&BA)s#f_)p%iSt*YfQR?6F$Cn`y5X0{Rn*Mc z&YSzV)+r}yaJS3(DIf?v{EyqWkrAYGj;F6qt~ytEbGRek8Xghz@-zH&gMpUM`?Ftg zcsxV4x(;r?bS6j{_ZCK!_Klb>+@+EObDV&}$Io{QM)Mxj7d2%VQz~d0+69+7U|B&@+Xe4aqzT()0$xU};UdS0t7%1Us{YHPp3(_+a>T?9#hd zP9B;-{>vB;O2!roI)r9P39RPqzO8hEJp*3hicx>wTgceKsi|IS?(h(niGNz2F}Z&P zQ9KXQK!7TWN~mZJi^9O}0A2Q^SQMuV?c0-U*tel>kioT2ScwIhtW=KayxE^P3b&(34^ z?7M3-D#{bKa??TUt!g@yqo&^E`7yoTl#c|8`5i&w$y*ciV_;XY4ZoFWWTLKWAL1L* zDrpbm6BTzXLMUE(zvczDQMjqn2$>&49xryP2Kaf&!Au`fuhIMN+X=Gca0m7Aet0_^ zrvVL&=SiOxHIq4nHf-bd-Pdcbep`%xLM>@u%R+?i-huVg>m?RY=jic2aTv1y+3VML zG0yAY(trK>-8~jWJ7ZsMCAAL_$+qDz-Q&Fj{c0a&>um{B5*R|SuV1Hg$Dl39c&+`n z!-MD?fiHzXu`VdvGzl4#5c+y-azWAs5*zIOC||X#`L$90>8G2ZU*^}G{Qq0fe}~ku z0R1Jpap@QJGro}`eZwk^v1`mZ4QCUr$+Q%R2uP;Z_o$VBUG@2I`_q-D|F%DADY^0d z-}YxuUpc5p!~eJa`TukKQzL62YJ*cLlte32i%itEpTC-xO}XtxowZ>yJ}KrOH?%w4 zI-b9^1P;I6c-5u0s990EKZ;j1`wsx@^xw#HKc1KJR;M$c`~tNMj^@wTk;vpRf=Rla z-)^BZ_#(t9z!08hcS}2i-ar>h(IF!Mo1GENqC+{whYKS@XC2b1>mcGqh~EREzj~9v z$R2+OjNW4kB;N$#cKnfe^ez)1+2bb$l9ZDMV-7rBM9Ni&N8SRIx zJG<<=Dc6nbJOfS?J*=$C~>*8$8eV=>n|ti_PIA940LmIz33XAJ@+`6gm;gFNk4Tw zAcFy3fbPD&cs)jp@3hAZvv}U1+kyKOKanJ|52wnyb%CD}BN28K_zRB9B)8LWQln1j zF5-T;8R3}GLjsHAQ$JPVk(6vq%~PDVrr|KC1JAm^_L=mOxVU}ZIW#?114xdg^$qNk zI9Wa$uk*`>_D6TU<%db<+(_)(obyRJXY+74G}oDP(exwctkC?fIUftbNZJM0C%F34 zG`}(2Ox)|^i;0cbm7~v_r2CXd!lNOR%``Fi?)bxq4=*Ql^X?ewZte#9lJ%w%)5DeP z@T3@N4Pt;tCPngLi`*fUp%14DAFT(O!JL@os9T{00A~fszeQ;z=g}NApAj7B%oL@; zLO33uT>4|J-JTC-*9o1d>J)}W_;f2LL;pz& zCs>c?Ub1$O5||I;G+e^PJM*h&FtGdUdYHFB1jfEym>lZ$f21>`%Ul^X$ivWWyG-;d z=5w!$MX!{IM&)L89WN8yO{nEgZWUzfu^nJ(+S9gmXtj$3R$nL=_*g2*o#i-uaf$RH z7x<6td)M6*6M@1$;P0l8#O+gVdNK}+XIdCU35W9WWo)*a;{X$)t88h-p?afNQV5YH=o!3C%pKb?*HtcPk9ZfR^z_bIGeXs;6VVoIF$+(QX(D6 zDZ&`Hl=NEQuQ!k!=oH}~q5~x%OE+e3k>8AZk|>y6b$EA<=9h!fq(l7TDUbmsaxt3H zIs!5J3nIf#v$7|r(8N?|s>q#?^}6q&15Mro|2HH$7#T%adOkb8{cd}U;{fu};3sZ! zGlTQj4jw=m!yX>uCN~zKtB*Df2lf+3*YnZwlhGS~ql_&648?f&(z^3P}d@BU{=Z2{XMyK#K%f664F+0iK111Ih7 ze1<4ZX^#(+@elq8BfdJR=v#I!+(^;LAnugwcBNJVg|U}I-G$RWpc;UFX0m1oR>-)| zs*C6%QLqbgWZGVtv!w%8HukmVyJy4x3X?fzwdxe4gJtuO<~8W0wOX_3Br+sOW37|S zJh)y!^hm4tlpH2&hxqt)Z>x8A>nl8pg+~tU zjbb}AGivE>Z2ovG#*8sTV!QD)IQ$Rj@4gn6RA>Z`5 zCch-9j>pqkC*LqnD;}u!pU7c9Snqy=JeRkb>^~FMjcyIMAq!8f?`Fq%MF1ILmv$Z& zRq0YxW|A2d>(NZ{rFw=0d6^=xa?p~=d#-_9*Tf45$Xz_gd5QKF?hRp~=&jKqW9jmX zp0>~Ea$CN+rD;IYn-JYGr1ra^roU-fi^bZVFNxotdUSn(^w^6x4SGFKd-@_06b7b>BR2JFCvkJR?+*x;((Qy23y-U*^WGFkP}?=i!|bw21+btXs*nZT3fuT{Hnkkd3$T)m!&&o@R=8Dr_W~41?3q zNu4z9sckgVCMOn(MV2Bjp$$@FzWPCuTh<|j-5Dj+zFO+J!o-t}lPFWK=s*;y zuFkt3b>TCq9jhzbHU)Psv9+f}a2I1hT9#7$0@+1i(ZP^MhF=6y<2^o%#aCy!7g6&` zffR9zio&zc|7lEFWCsSS*%?I4`pv<{>#-!dWydmx(pNSt2K;%3G*(QgKY(##AO+d( z1IKlQJtBxHGMpqAz=3E>2Tg3^ymHWE=DhhU_s<$0`^gGHaT_i>>Vdr zW4-$bxTl9CDSCrf-TyTj;LOHENdsT2&*{|~dRqH&!yLFq&B-`(B=`ALBeAb+tj0L@ zn!}-Pob9NDFoJmAHUuoI4f^wuT=@BKU{YsjBk$@8W&PW#mAy1YL_55{W2KhjBFwE= zL{iV)x7#TB+XJRx=4e>pdnJDr&@vdA3U*etI(Op zc{O2PjzN=LmW%S&(ctE7+=Lun{3hb`8~Ja)RkZI1hw_z3!?M@B9gy~ZsSYk#cRnXWb_>e96v+Ux|ot7($zHepaDiOZ9h^Wxdu2s)GA>8PBrNo zPz5zADuo##_-ZRHWJ?$(Lwt7hT3Pw`6e}&^pRoKodDBA|+|F_;6Gl)}6Zk zs;l`FyK7zgTl6f9ju-rf;KFmZMV~l@#NM@T#c&JY|K)s9pA8Y|Y7d3<*&X~iHn>RP zig5P6Xs~{Ri>q8vYeFRA4J!pf8D|9sX{Sm^3I|3AR5{Q^VT)zd=+3CAZX#WGYjSv2 z-IhATcL+(Hznxs3zLgzItsp*@L=)+4pZNncC4f2)12TcX{}1e7z*puI^L&TCh|WbH zD-bg&m@STp#1a5(MpjKFQHpQu{MMhTXM`>TUknmaw#rYHmXh=#Z^0t>9tITHnC=M7 zWpRZAYty8gtaFCM5`5aG^YSft+EH^pI(;je6Ar{WNDNNH9D3B{j1J~GYmz2`7Z75o z+wb6bH*^76Hiti!+fKjqY}qjCj=n{cA>c=!g`+}MptYEB>iU%J4ceW(4Hmk~n>038 zzKkn}ggN$B-dL@B-AywDCj(#cWex7LK3bK8vJJ#qJ3S?xF^v`woVh|pc7@J^XJloE zXHW(!RFhH&?KLK=3Dp|gygsse9*#>VbT8*8x4-WG3oldRbdU#2YxfN@B&pbNAD9)T3bhX>%&A!vLal+k{SpU-@6nR# z?0XVhts%*K8b^Z3`5_;Cga=fDH>~^b_53OvL|3YWQRK{6ISbR%BpT`TD6ROv1^5=` z($KGPI33^kX+3`^90k|(<0NMp)80odq6VZ{p1#`hs)s-pSyzwIAs70%fEF-K(l5g+ zTg(30C2|sRC1ufy`I#-wwNl5A&{Kx+Y(QI!29zy}fdi6%yBr>>m*9!rNtykC7w%+v zG!#e`M*f#ES&7XCSV_6Sq{kXb9v5>uNMj_6^_@Br+~U)A6_7e;pq~?X!{rjDd3$Y) znQk@Ihg6sBk7+=>?Z1q7T@vmjB6VN}l1Fuk2*Y~1YKB_lT1P-T`utkWaM9-fsZjFS&NkiGu z4U0kyR8_cjibF3EKnpu{jUiC!tI?12Qh7J!C@u$DI;EHI;^!dmSsT&&P#i9hIcyz) zJv60+>OwvVSYCnJuo!_r)}fP~jFH3q7v#v{aAzI9Att3t#+gQe)M1exmvBKypEW0> zklh|a5ql7F`nEs&_T|gNAkBmlanw{i4HlM_-(wf6Fh$Tz4)qQ_EfZ*R{6w5JIP;`o_CzW zvbEvk&|IeSQluq=FiY0yC90@_qJ+eB0XZ`SQ!?FKAhB`Na^A?F zc+D6`>gCH^GK;5d(iNQw$7}w97`LbQ7Vv3>;6RO`WH%vEmKJ%)pRE-u7*_0y?upV; z|Fm+d^vSpQ)5S=3&sOIVBMmc1VzIS7&pzuslk9!?iYddX>6wT6XO@S}cG)DoofBaa z%`2;DYVWV;rcC8@?ijd*kJf%SO~-?ToJh!bHhF_9F8mYG5^$+l+U`Tm*eTG(3_dJH zl0n#Al3gyg;+q8wZax~$X+9_Y?Rj`i`U&7jnxCV$!{I!1#lWzq{o{*?G>;iV%Mszd z1(YLj5i}BMEe$-=Zb*D4rCd?@!%&ca)j2!#8pSKM^+NzY`7#{OE-!{D@k^qe1Hm5J zYEso87Guss-5T%)slIN|lE~1&6mdXx4`{F?b!iH^qLGTR7;9 znGHBv$B4mZkK~z>0kZ>A8_yod2`UayH47Hvt43V9$;liPeZDz>*Y1p~ym>y8tHhg# z*u5*Ma?B~W+E_1{-P^1a)s%nN=(lblgxSJXJqkUIa;|J_E!>kL+|z_5>M`P7MLkxD zR7-JaYqji+M|)$|6={{*kQwS84kqlaSNwcd%o4RD^VmGu% zy-<1xKhRj8vkc~T4R+e2u5zp9VD?~GORtegk0Sg(CF(^|L{~}}2Md)y2fl_x!3EE9 z0{N?8InQZ#!DYsM6P}Q3hl^9qlgkNYme?DusJJ;JuKC&U{l4gDhDMonaLr*ERNw`N zhh;>|-fkyxgdu=7L84IeZ<2;$^LKKG!Wx!rz@50|3;yjR}j1T=@@yAe?X+= z<4b)(V7QO1kk_xcZNmitOA1$Xf^?(nSAX(V0ay!M#T`f|cvO$)*z)+1v0Ssc&d|xz zCdkir?W*+7p9>(B@5szuWzz=%MkYgFOMR1mpWm%s8F&5 zR|6fOe+E)!igndK5>QecErAD20|D8aUE!qSTnu|Kq5Tp|DFJu^9w>X9N;^TrRC*O^ z6V*>Pmvuby44dATP)#~=z6}b~ZQ6Ts@a(&Pb>?K^!<~zZ{?&TR6ish3cC1#n#qpZr zb}&gvB!(o~?x_V%R@%wSMc+410fkY5*K$&A%|J6Pa}3LF$O^E3X9SB8!*r!?{87cQ`3OCDap zEaUGAeEQr6ofTK2_p{opPpj+Saah1#Inc$7-oM3FTHx~(hZD~c&u~8acX8&i;g~rH zpI>sT!16Ei$#mz%(*SIIr6O51kw0LBnr-@tmrjQA%`RC#c;P1Vp=GY& zth4}ArtO5hGnieYI4grpKbu@h(TXdcr}2LQC*?poJda) z(=P|(WAGAOzkQKhs>-T^MMd2e`>G8-m%IzE+37DhaaescK0dn~$VEl|JQJCDrC>xS z%~J@t6R5ZfEG{fE0ArPzKyN)eLoOU3lR0fG?mBzIM0uiCVfHV?bD!FYL6Zn1t+9UDGPuco+^<@{? ztEKb>-h9AgIE`{)^hPNTtfu-*(BvX|ZewrYcd{k~h?K>bp3oCtgQEHXE^NA13tR+p zxIQVgY!}4uysKO9qt#nx@c6#3 zDI6>OOjp_c}{3$!LJw|l1c%ZMRAK|Jya@!qS1)*_i zQGT$d$^`w{==jAYl5L)=k4s7eEt840U&c2PjHWm>&~22P+l7 zW7sN$ZCVXZcxFNoIV=E6fz*_r^85xfrSMoA!dU&M#1&)JQ`^poLvZ{Aylbv1C=kfa z0Nm`GUqt%-`EoXYdbJC+NG#b?t8C#3&v6y}=^;l!wu;et|IGFs8TWiN7Z2?r--I)Z zR6Ws$FtV*9=v-WgRBc2%FmC_yY>ra)H2iQplpW?e0nx~1UJVoh@TTkj+rHj zw=F@ws;k2UheXr-0S1%LG37oPPS9^EJ_~FYbFH7dp1Jy>lj!K>&dY<{CkKyI4b2Yb zh-m~ci?vHH31`am!}QbBgwf+1)90kJ=)=jzj)l7XuwB#Yk<#xP@OGc*_|L1h3V zXn^vhofL!aWJC$slK?X4Q}RXiaeePD`!JF*y#e(vsei7ZstAb7g{^OL{)l!IRbe8j zWm%*XQI~m;z-o40vD@sz^|S=nLBVd|I&yny`mi=e{WmHTE1y-n)8(&xe*T8KaqDMGU8Cw@0e|?`-a2SsW~2HE zTtZ`^(?DZbX7OAz;W>uh$$pr!1dBkKEGrKAx#uUQXcNNlu()3lOM z03x$6;?YcaY*UEW;vy|VXWy4eNfgwN1ltZ#LXBBHr$hdm&|+cVEuu)TS|>=MH?LA7 z$W*&MhGrxu*y@W8h@;Owvo}{;B5(BRm&tp!z2zeo>qS1HB}-PR-Li1l8eoMN>xGb3 z1mup6NAnQ*Nz;pU$%*i>>ObROOaaf;t;TBTAi4-@(Ru$E*zNN1a5$JjF_v+kU?{EM zB0IH9L1YSTL6)qwU~bFQxHHF_ypBd({ik#|8 z8kJCr|Do?Fi+0}hwfy-o!22B}VZO%c7bk+;^t2dE^~ZDiFb^)S#9%tQI)5_}L*3E! zv_GZ9WVLf~wnr`1%SFc}vW6GAWiKK_4-=vR7!OYI()j5Rk_0?B+j)CKii6tA|$1Av;Oj95%&~gcGvq4aGSKCE7>Jn+}Ra^uo`zA!` zCm@cDey>Xni}`9*Mk(mCg*@K;Ug~Jw4c;^sQnl$-7xB%~HIy2aC3Np~v5wi!sWBIi zry~(SV@RT0<~%hIIAt9^DfSY^@-cKvOt&rG)9Mx82y>eLUft3M70kLmxEelvK1-0A zR&&f2B1LQ@J&MrD>*U_URhK3p@2tc1JBGTVpT}^sU_GQvvad=HUHgh>O>o!WK6`>D z`-T{~DT9Qdy1&wT%pu}7WA{g^c0OYyb6&~JLDazleWo3St9{-t5|)N!CT{!gj0Zfg zo~=tILAN{j<=v_Q0!}2<%nt-ONxJZ4QS=_No>6e#EY#3tv2!hGS^q|GtGTL>zYqF` zkJ!Z}Bl({`HY9EaPSFeoc4v0EbmxDgJJb@Ah{kIQi7%=w*E)jDhhi5a$|IIgIwl3k zP3(0FQou0?Gs#2olEb+pxq@a-GXOJFM0NAt?X3>obTS3^*L9ix;Tsxab|bl(Uj_SV*cH=V=h?8$0yy3>`>7XhTR>GI_U8=ceS z1U&l}XlAHwxY3S$_CPgU_ooJvjFHG3KYCNPgGaA3 z!a&GSF0K@QoyFjO{=`>g;FPdkCgS8;v29PP;!deE=jyru2jwIrR7U!d3m1ndVmPP1 zDG-4;5w4zUML^*7_Q~%Fp*SFpJYnOrfn4?#=G6}nt%zgI@k|AOMJfa|5>+UanDq#M zSLZV=3GyN61iETuWZY(D7%lHWXUpeIb)5}PnUX7EDFgjMEnf_m?})H$)b#=RZ$co= zi&+{BY}=3A^}y=YjxZ$-O6%cNK;*4@PJmr%Wiw^Ku7+?>I5G8yupIuz#sm-HKx4&_ z{|y}kJO(!$&pYKvoO@78y;48iN^u%sDQJ`|E=8I=b8Qo-2g&m-sc_b6?vodcr^gAy zuyMJBaFR~^%|T-@7tG({T|l<|*X`Z9UbaBLeT=S0CkFyhpt{y@%XX3xj)*2vm! zK#xUa8PAc{yE~Wj3Cv-vy>bDU0MkxtxT1@z2gvDZ^*E49xq@0bq#a=^;hkPgE@i8S z=N(?8i!RWgl*eb#|Jl+w*tymF><=>J&dT;F?edMP1_QMA$#<`y1 znBe?MUi#QZFAgd?@kQpW1JppYS4qk-QUXio*XZyNviMDA8+yk%UVHag5Pbg!SD|eH z#T_rxa`kpaMC|)T{RHk4NN{LKek~(cy+6p|_kfQfh+;v_8_(y$kI1EZMnQ{`aN@DR zEg9;pa8y>FqH>I~OiotILoN{A!V~*xE&f66i}oYrXz`l|GI4Nx`k;vF!8=rF#(eD{ zich4sAl=LOqjE$DZ%qj6;9_NM7M>S-?UplRHL%2^dHI2L|4Y%t-kl(q@@pWe)YGlugcNadN>P)_uZEc6&Ii$>`e#)s8u%6MFmjQII90^diA0^he}Y>eUj zDJ3IpilMwlLOgD3lEA$`mIRXXf(F{jMkjvaR^Mc@Dm%gP{@;hOei<_CT7|dqW63Lm!DViR1zPc8YY=S`|B^tVh7+N18FoGF8|2>1c2k7dCJQi<>N= zg_%C{bpY^s`pmU?LLq7}Ld3MX2yOQRx-%WSLLHm?#GXsjdPDn^biN6z0*)M|?CmrpTiKDP&0fVV3uJ;!7dSC~xTw3f8x}UFqzxz^OVLqg*=k;qb>Xno2 zD)Q|0>vN3CGZeh?tXVoieY(71eCy?p8(xo269BLhnSFF{&es~66f5N=$s<3(1pT9#|#pdGahuZ4l$x<|_ zAoO>+<9xiPot7}&zWCbONL>_wx-ZUpuc83yQa<=t6od7A)B^1Kl4e|HIPq%_iUUh_ID@KtB7@~g(v`?!I_@He}*Phcyo}7~@ z2#Ctz0WQ)7@Gl;nFyH8KeU4CoUvEst$WeNNc0R%NF;4USToY5pr*z6(1$DA(Jq7U< zD(aypsyB*o_<;w^6>Fq4{CVpJS5BlJUkSHR0zAcdF<&p+i&24VFghT;O*kCjiHaU= zN_9Ec?c;i|wU#p#?G-njtWWRAr`lQXBMolQ==*+p)VbezC>hDW zmVs$>@ zOI#<1iC00Ie@?XaIm^U_cDrE77ed9X&-b?|jd|6CCM z&qPE$IAVWtu@7VkGKC%_$C8Fi$f+ui>oZ)XrVXTspXMh*9}Bj<1qDr-ib<*UR@ex1 z&!ZhosN|?L<(AOHM_I$d?m6|lj27b6lU8s?6bUJMMKFLEP(iK-YWfbz!7V4tptNu- zn&LCBpR*^vg|(`XQ!fxp%30z%IE2W`Ox_UrqgIM16_PpwCe>_yIlyzaO!_Eq zvrBJ!lr9kl0#7m=81Cf+*;24q?&57fdD~VfL$;N9`YEH6=4U+?D0ZwZeX&BLYkUV9 zA|~3noZAnhYgEdBwCs<+cD4o5<}jg-TcnAADuk3g$GPiAw*8PJIXu=*nTfD)>>&8# z2?Drob&z3;mu~q(4#@EtBVyzAD)Osy`!*l)!9giDCgku&KExs8oNgq|7gw}{e~U#( zj{ZTDO^5|Yidq{%;j#(5vTk&zWwZpd5hOK5pe4VUR5o1v7(jyvp!Xtv;j-AT-+Z}J zEcjrk7aO%8!s;sJSnZw_*3hxAen1MT*rbK6ZySLY^iCbQM($)X+b58`Q`j7{b0M%k ze{<%a@zm#-i;%LdC{L^dK1Be8R?vUJrF{6#p_M|JhOX-p=ofzm6ihmU2X$*xa)5II z#U^!uX6(ix6JFy_F5WWsVm%Mb9bkhe_K^Bq5@|R_*KKh@OB)X!*dxm}tbIyGPADN6 z+(?MpZ|v=r{h5;g?EgGq+@M7Hd7}ppa%3bCQdR}sdSyIs;C^_0ZlIBh_da6uZq7VZ zj~EC%rQxAUl#Dogzm9n#xr0akUXJ-P!Mcrwz36ndv2nu?$6Y8Rb(2=|Sz!Ldkfs}$ zb?-QdL068OWI=RZTn-6i?dfmC!`+q0e5j zm|j=ccuG_YpbTM?7@NA7$EM>#$hSK$_8uR++0+)n zL_ zv~r*-S*vcwC_;s_fsK@J4Ap9=6~+o}ssAL#N^gLZH+Z5U%<(CM;pd4dM~u>HSo? zBE{8^d)30lt%@CO;z#$bsdT2>N$bv)af-~=*+zcI<-a)JfTvQ80|n$$1TKC0FqV%o zLw#CL&GlJWIkR-Et`r9bn)y`2^#dvgCw>@?5&7ipN$^*2tpdPUG^BcuDeBm)gQZ{-A4|Z0j;VG5_L=(7r7d%LK!e{1=&u9y~s2b>U=lz^kjZf0SUZnC-$L5m_haSEaVlBz+X79*<}Xw zA*z|yAwB8s3eA8;>_VhTG|u?!3fCx<6vGx@Q|ijS2Rb4~NmN9RDHeDhXvA0N>WMCv1>S23hXysm-7h<-$jVk&xmdy+#N5 z2d^X)oiDk_nlzNVInd<(FboS1H59zxhvEFqrWa0PLCZ__9KWiQYRZdbf;hEJ5(E{_ zC_N11NW1Q~nB7@gpm=8WoHATgL934e^MO~v@@gHFsSLl4SxA(~IqyO}0_+?7VTI&l8BQVLt{0&Z*O`1x7zz!Zu#XaS&e`i0 zxsmO~TZVc*o-9neo_^8q^AzDGdez+ce$S0CN^S4%s;vvuvxN28N< z$I*SvUmmah3bV5*>GNvvlG*P&TWe&$@f_u63Oqb(aif%^S}U|U#$taewTD}S*x zEPX~*+uJKZ`_pcPsIdDT>67O`kA6?CXn;WnAf_SHU zhd-ef-gtFSe%}kfzn0%$hu_;@O2PJ*T7sZB?LYW0afDCQC_v|uEW6KS*)h{ZLy8|^ zp^oQ8Vr@r`bR3s15#(vw?XYAVJN=L?3An8BU9|6n%HYKa$-Er~r6iRv@V2-^wOg%g z)Ye99?a9HjIkZ=+&1gaGa(*vblanu-?FucI%-v$lEcH3(o9u^mQIT_;7?4~-h>Y3g z`4I1|T|{j%!%VVFxUi)+@#O|Rris?R2Pe{_+2J)9Fd9-enqA#&Oj6keH`=K?b1HI2 zj5pl*G7Koxr6u(W*;l{l((ZFj53WgA)Z#8eYg0MG_OU=M$@FQCkJ)WP1NjEG%&ELA z*`BwvLvj={`R>0WvBuO?8kSy6w%xm)A=>cqJka*`rKf za)JokCwQWOw(*<9BX4$@-uh>PZHPt6s_{9()c^_b(YioLHng^>b*Zw%#raHlBsc+# zV-%fWU^;J%iaS7a!tT)l@?5zp=Xj)->SXQ#tF-}jl^sSPlD#If_Y*iytVIymk|2y8 z6|^TCMf zkkO2kibrjR10BYC+7NkR;C%z0GdZWjZ#3=LM-8+U825N_TYZa0(}{lsoQ^Syx!((> z(q;i*g);blfxflSAPJLbvQyjB2!t#?v5>r%Ad93lVWo6~%Sl$d%L=QjdVn^`#Myzo z#gOA$Q{-jxL|cM%#FOoEG$nmbFv>>lww)0hljYHD3S=qd6aX?xWwz2ddgzL-viX)E zexjK}WWX{V%&If~EKUxhO6rx<3*`?w3sagldx8+*d>t)Jk_RVQQA&!@45zu6BP>fX z;IQ3VV>(lDwX_g8UXxR)m6G(?Z}AgtR(aIiD5^^IyW?fC$X~}w7I8T zt#+5VWD-F|CEB0#4#di%KqsrJ38a_~Z4ss{hZ8q;j&=_YAeE47W_~oB!^iRT(e4oo zp7NP7x-n3O*TMOuEsO0>6xyDV7V7O!Pua+~(i~FETR0$tKwKed3AOqrYqmWx9%fJZ zp}RdX&BqgLV;7mxSdO+gtR2P$3Q|bUMXH1L3 zl_v~}gmkc44H)&n(IsC5$&ND1aT?fnq$79sQBGt2=W(8NoMv9kr^>U&!d_w$b!GHHw+YnXTsWZTCiD0Tr{SYxJFdqDgcls=@|$1754`lkya&6G2ovNN zo$^Xx7ysZLAsG$d;OHDo-VX=WkM2KYGyfZHc>S{|`fff#Od#*VckNHqlVlNL2NXjy znWl4%Oi{K!2Igr%2# z;+ePv$`9TB{!C(;;BpjOK5y6M>4bYDO^X+><>*b1qmTW#+ELnleulUCuE4`CLu6Fm z%SFuRG2avuM*r~jmp^@ZPu+{|cDx_l(1hm(?pT{3jqVvMZgD!GdfF1k4^P9vAh_Ck zDdXy%slBYH_(Z)FznN3^$&>G&-hMaZxt<8qFxSKUp(>s7jqrI7Apl0S03El?8naThP%G^sC zBFfw+KmwM{k4~IV#mciz%tsddX6`c+BSP~-;ZbURvH7a5{x_eFQ65qSUjjn-o(y>H z*C4a>-09YhZ%3z0zOGt<{yZGwgGbK(iggT`d?=L2R$3VbIac_FAuPLc2p)7|<0Uvp-DXw1Cj zdK8heGk7O2F@G=p?0LSjSr8VXvpeJtsJAUzt1-jTgJt!>+K<=L{^b_qIQe5U|Ey1ZAf1W?Fc!jl6{f+~}87c1C) zbQBiS*B)zlO&CKLDW%nE0TCTXurhO!&_rGdvn}wSL@E4o@)(==eE594i?bX&G)t2g zv@c%PV;04_rNhv7A@v)K?CmOYU(pb5gueilaQfpvpwW!-aGRA{>8yYRRmD@KgYdPl z&)1_wDk^V~@SD39m*1@#-R!fm_wBO})qOlUM!3d!ZoMUjfMu*xDZy^Dj*c{+UF>Hl z2kjTleoh*%od=8)Z~j^39rem)DYqfGTl%mdnvB+bP2GWNbX3P!3SXcvi>fw}m;o86 zHsosZt+6p+QdR0CRFHukhjrKkCG*7Y8qJmj`rr{3JTtm)SL5);ZC@xcTM?;)jaX%c zYG2VXwsoLF;Y$LC>}baKvw1VJ>wiOcL;v!IE{mVzx|jbx5GYWAPwR+kGQK*xg!O?w zN<&ubHXwF9MRV4{u6uG}gvG~9l%|8+h}0o z?mIeuDRmajO?z23v-(rVfpp!fdkA9l@GKW6iFqHb_{Lr+;f1-4O30nm0!ucfu0KE~ zHerB>G~r*w6QCn%e(eNPegjlmuP~Ym=_hzq@{H#WKyfyxS2$w@Fgz<{F?cT4Ob%rA z8iL9yrK2@~ETz<-k8WsTzHa)T~3l;*@TqA!qthCz|b1LS}CX-)q<5KR< z07ngya`%nadjONX?ly!! zcvw<~Q@QA4QQ|sxNfs$>iD)Ou9-MQbMFIK8hP?4{y@HPy&8BuLM*b+urpkc$Vp(Go z5fg`!W?>}3Uv+Br=eEOmqAY72oO@9-JCpa-aalF)b-E^23mn4bsJF@9Mf3(p_y;DW zeUk=e%Ei(*^tDIbczxrQHNwk@-yp}-F@i&1{qNq7fBn3>@uMO>RsbY&;jKSKBqTD2 znL556Yd~k`UB5)dPH=f}ia@jB(R6q`IvE|C5~ODXm_1M%w%l?HmxhCKpG)XTA>f-= zk1zGuKvH1xE?x)-bgp-gk$X`Z5V9LP2nxN)+j#75WeU&><#zNDmY*wGCi!`C@W?Q& z(fl3-7kX$gfMPOy*YgvLS8>X;4MG?huM*>31-j^KQILyz%l4cmSHY0O;pdaSUJA2( z{EG2alm9;*9bZgllaqOGcM5XVhXG>B|ER;`)KNwY)N8|mDxDH^WJ`I$)Dqf4(g9d) zCX&$77dQcI6h6EB2Qqdl5V5KR_2dr}SREW56^djXNXLm?(?5`zWN8Y@X(2xh!-{ZD zbhdMG(Z52n4RfKlAwuryC!t8mAbvaF5d{&faHgnH7*+P1euAepA%mowm^7AooyvJC zaj#I3;HBwoYgW8YDp^^b6O{XoKYff|G(m5Cb(raJDBH@Xk3-eu>0_V=RkM=8*f54Dt9W;mOP2(NHdNR$+$Bu-qhsIbUs+o zQTsh==|=8RhZ*XqiXQ9r#bhE6@yhC*U|)BM-+Mo~_+^G#KoM?kL67(3f?aEhCq{10 zdPv0d8Y11-vw@=nr25?=NZ%*pmkw~-Oi&S$iX+v2VF*; z;U@e3}lIchP-}uUzk4Tud&Quk#_37kXGVGY@J0r&&kl<6N{ZQAJ27 z&KvXRqZvIS9mFKe*_e?>mxzt&b>QK)c7}+~3%qdwSaHw}Vtqe`pHd#QKJRrpfVXqb zZzH|g%P=%%r5<+P&gau_HaAZvJw&XSMuI^$Pu|lJu=y|a7aTl(aQDug?X53*otMbB z&USs1jCUhO--&@s#1?rjx|LJPbRSj~f<;=o*Cc?etLbSgO~d%->*-3**VNLTo^#zx zNKTjNkJP*b;%n($HpkY@LG_0CNZ(B)=S#MVa;FfTD?rhZ_O5GHWnUYoD%xaQ{KK>@ zMT4r0tLs`OLd8#awVEp@$i(%oqShQi!F>b-)1ZLrAJsiNhp24mUQC2UjNh-AS=Ef z00a}-^nSl*~s;%``ydJy_)si`@i4vKj2A zAS6^&RtJ*r-toGaeNvT9EIJm%2N$NOyB=K<_>}u*5}LsY5|1>>y-jwQHUSG#Kr>dU zZAS@Uwh^=Q1T5@1$%mD;gbZN#2FAxoS_HRc|14unIqg9pR+0j{K?&kpi0u=&@MpN@ zajb{^$Nh0pU&gDuiKtH4#M0!cY{5-j!;A!D{zHKaSERYRh@uYuL7KH0Hmm)I8MtH! z#&NAbl4-HuEqGsBVFxlaY+rz$DVBHFRui%`}8rLD&RPrHIKK8IXZqs22WfPBaW@&&7Oj&Lckq##Z8X(1AL z5BY^@sie7`iYIbIJ7DCj^ zoix~uqM{e_L6FP5kffyPAiNQ`P6jUWMh$ZxO?yM$Dm4gs+|nCP&ep{)e-H2RGwzQ! zXS;Du@<3Fj7>-Gq9wQ2T32eRS8u2@Iu{p|U(y_i&Dq?U_pNx|qbc2U#I z6^Ljv5gkdpCHs`j%fLDs@^(qFWr1`v{1FzAT9z%P5MnY_WL(Im>3~K}McB;Q8Ho~5 zT{#chM`HL?aQR-YY0i!w|MT&1_RD-S-FflUl+KKI+Z8ue?6S)=61aeld}kstK=XiW zzdF!Evhw}SMK!R85qMJytAl-cZ`p8P-m{r47%#$&LIhYad<&B5 z^L1Up4H2OvDv>tkG>D2-DQ6bs2?%>=8@c=5T9UeLxdkT^CTpPtdBfX3==fiZ(udL| z6KsJD`RL=mwzjAy7+x*_Sm)JEMbK>9x5A8Sxl=vQdcmS+FB?f)-HMq@osJT6=Z2hRV+_EoT3`x7|m#-~2G2S`V1?|PcEIBHqBB1vc#FqI0OAr`oZDl^D*ZwRYo@h#e|!jS9>!w-Z^+IXO5q`frf;0f+fgu4uLcLR6HU+I~Xd!7QMdeT*LDy+f;! z;b1SDR)Py`IQh5h8v2q0!Qy>VbRiVT(j{>3lUi0pC8Oqsx5cV8j}!_3BU z_^o!8kful*OS@3o4YO=C1O^lt0Bp_YKw|f5gsuT~B}*$K=+msM-X6ufe3oGMiQWeW z64LHv!bH={4I&}#z+o?jAA-o zjJXv(9<0fQilt9?{<*h*@MKS^4~+tvU?;gjYzH<-elwlY2$pmf4KyLUak-%WoV+bh zeMO6-jFs9n9VcgJ@01Es@?;?x1q{tu+b@g!=P$=t{B9+rUT@q+6Xj%?#^PX%Y{O?~ z;L32{$y7O4qRxd)vay^vG9WNS zoHn{-BN4=nb=EyzdM#Y-o>#fi1vyBwD~sX;rOsStRj_BcFEPg^=eiTH)&MwRQ?DMV zIv9-l(mW^Sbucngmhp)a&&86cBRa92qn&4tVAok(4XHqK$8raxqpS$Y{^h@8lC6N) zXHU^ssGJ1Jw;HI=a0EhqXI`s;<~R~|CjU}z71u?!d%zlL)(_JbqstpNHq^#gq^m?V z@N-qfNXQ3vgg?NTLEaR}c>f>v-nG508%Y;EpYo|6HE0Uaew=X)D z(#bq_wjPS2Y_=s*O;Wy$C;$DtZ(VR(SQO>h>7F_1y)zcEfI^{AC{z^+1<=(ixjfUx z{j=eV`Sct&A?XUVI(=-V+*E~SC5%@(3JGg>w|*>{cD*s)T$fqjLVk&bJUydFdft`$ zG~Wm2qv=8}IJ#AAM;$E~bN$6Zzra&Eqggo&1|;Uw7N!iED*R(@j8FoGkk{31BI6ox!4S-^2&}UZDeq$ zq-LER@Jc>4{LLL>g3(uGc4!KwfAHjyc0Ss9o z%a0mmrSaa25iT<*=LE{%XX47=Mb z%nd$9G?O{VLj*^DE#s5kq!V@mk2NiskdF55R*qzBs-*wpbadlWSy=}1MV}NBM4r8s0xIhH( zbxCi$B3dPPrRv-8?tz?DxSc24Sw?cz>SO-scs42iK6}>Kr5)`0N~C9U&IpMEGY^Jc zQbu)n5MIiycaT1)TEVYHTS<4gs6VRRDVN-cjC}~01tk!2m)}GBpESSK852XOKvr<} zl4=0Bg0acoT|ui(xr&mrt9P_nNL-C(P1@7O^=OGoM<+A!^4Z^^S~I(f(aJjmw%q6?0d#cgcm|T9+eeMjFNc;0>te`< z=f}8Aw+FXA-tT@Z59p*UtFBc3U-OrNErREP#dCKa+e&mJ|NACfo^QNIZrjFCE1-R< zGZ|ToRJFNX;G9PMlCb*aOuy99_v95yrr(oWZw5GE;v}anl5FJl%IVH+Db8*2H6Abm z!cAVPLv<9IPG1=BdSx%2YZQ8zg}%}R(nN>%783M7ez3E-y9@5bB4y@n47O`w6XGxl z$Gu2er|_K|0d_-NY8V2->{C>5?|||L2&4yCC>==_H7e_@LW8mCJl~h=bb#ocW zi3aGL)1eA&sHXQ#86)k*bFmC<(r1D zB*&K^CiINPYEzQfFr1?L`ch#uR%sQD*klnX%+&tG6v-r&Q+@_rYWzm`{gf4Gw9`Ut zu#+4vEyhRj+RZY5cc`7M`UF$;W6ROhK7jIQdlR>1-pINFnP-qP3f`_N_kJiejLM;+nE(Ftr=+&KPWgsd_|5TRss9M?@!!Ny%j zP7A)row#2Uh4rMQB!ghoO z(|hp7{)UKfgHuJamG=~obPgnxw%P?iB96f(MEoxZVz8gB;C$Z9j~)TYULA20H74yq z#8Qec5&lQ)(L_-~2ucT#EQi@urZO3xP&6=*lQeB7a;nq0e!YXq?!3DB8Sm0_2y@L* zf%KS%Z##eAL++9 zxF9ir>iKMrOcyvHzJL4(0YrG-b8!gwBJZZ+K9k4yz>S2%HkjY?m3dJ>%N`S}T0nvf zMr>6-$u$36_m0G_0G1pAd&<~FB$j47-NVW{It#*e?BmCRv*YmT*^ax+u zwmD0H%Y2R*AfH|C%q6U_Df_NhzXn6SV}!VpBW^aE$s-|+t?oPD>X3$C76ay#odyWB zl2VmRO+qMycxR-sIqtUg>tkAf^VJtTZG#@Wa!2pe%U`~-Gd`pk z*aTfwtLWKa2Y4+&W&AUF$xwpSYTG9svX}seXPN~zK09TQLy!@txU~%sKl8o31Gq)0 z(=6^!X#A&kPY7y_QLG4QO(R@e0}>}f;@5m?FH!1C@hk(WVc{bvbo#~sR2#$wYA(iPP}u8zODFWoj7JoXnUktu{~3y_e=B=uZnCPl1|g=2Xw*- zx$;UVFHU(m%AzUw1@|Y`k{01lKl(N)RU((4(zaBBu9`T79CQ@T<@A)Dq^l(X6)ADd zHREvOLAUL2{D@_v-cumLTQ@S*X)7avKtg5x*9R~2*@jh4f~8e+LP#G~DxA;tR=0W} z3(q&~9)xBy_n0|X3eP5$UJ(%HW&FF)xo0aC=diT_u*|;yO@lEdTl^wa48^bmWmMd$WYH3%@%L7Q%Zofs!5K| zgiOY~lA~IIDf0$Vs?u}+d^Uj~-8?z@*@O`A^v9BPzm9plVl_*Or29;;TBv_xI90|N2G|cK|aY~k_MLLWcx^*Y?Vo0VeC}~SVjt) ztg?5Vw0{#iRXC)?w}o0I#UvzGFAYb1u$4`mHquJ3Fo(O}!Evn%++g~ox+ooGO=);u z5QtkKEDp@Q#mPk|GY-~G39db9H(#8zAuT&pgj=FrHorXLK0lk2=O?4@@!<1I3oywf z(%Xr#GH%uUzW?d&|*t z)(N_Hd3v>C^Xxp!%({Y5&?}&VOpXS#BN)B#CTOhdQgQEg1lmHak+v|iL)#i@+Nxp^ ztUsQtH?}jV8#S~pBFsh2Y6MAk{Wqs4+anwx=wrD($^U$M^3&q@FZjD4-0>STuTrvY zhhz*SV6rxX<~V=BC}@j)5cjQ^LV0mv2<0CuhCo)q41uf+N>l#Z4TC!J^V}q8sgxT7 z8T_iY87Ni@k&&IFonT1}Oi8r#Q$aY3v8msNQ-qV&sjFeVhNFk^`aVntE4$6*O@*9*b@Xn(^BGax_ao ztDtF7lOsu@(LT%e;#K8pO8~GOw*cT$NUcJ?0C`%UK(-TL zb$mf?@OjZK@lG-IHiyN3!)pN=r{oV8tfQvJlilqy6Sp?Bm+CkED+$qlwtn}nX69yK zy5-d|*osi1s{~}&edsy~8!wOyo1jKeD;CnW0ou(l%B_U&?fmQ-JnwxExWR!srtTd| zBzk6!ro%;V{mS|^R-#GqnTi&1Xrro*%H7-4Yk4~7XIcb@vn>3B-JO)}P@gkuS1v9y} zQtupLc}&}lb{We82u8!fH!CVMf=`nyX$z|G^;QnYa7IOKZn3rrTMSNilrp?{rGFVN zN<>;aOjA}~ySRgU30LQLZs_#{Wew>Ken!xiy7KFuHueNZ=M$uJc-bTFaqFf0M6u-hOxl94a{rDO6yX$ejU2GqG!NK0iJ^KmGf7 zem*$aTbv(_r^TUr_vY7#D#-9D@P$~>u<#0A8Vw*HJW?lAmpmV1zUG`DRKR{RdNpQx zg3#!uAX6A3LPha+Ggy|BhbH&r4;2kuE>!vK?pNy4@G`8^`aw_~Zb0bKbizBDb_|;K zLhlB1d^7_AE&$0!QpMn=^tqs^%;(^Q4eQ3PkSe@A>+d*|N{N^Yrdl(ay)@$+pg@=) zTaX?V2j8Sg6OhxJZhw197ER5sebjOUAlPTm=mxz!;G8|&tFkEJFWwV;bAM-N$0yJ+ z%$p_Hslg1?)ZG#(TQ1}9P=PrF@F6 znihZddA0cF&7>GVtoF?>(qhJO3hbL-r^R1;@vT8pj2~9})@Nz)XQB8oEyl65!oHOv zh#yvLK~(a>B?e?4o=?tgq!_3FU<>(M#_AvNBYcq2`Ue}Ww2<+J4?14`z!8TJI%4@C zgYysg5&F2r;e`)6JZ-@Nh7ZI_V`Jka%25g?^=Lfcj{j@s^GP@kY*2EB^IpOdCA3Sh zS;k}~i~Z%BFn{<{rsPyVXR1Ksi!2cdZ0`)DN<9Z;=Sr9E~H2+J?e0(v_QsM z+%<Dw|RzmA_?hJGjF>74KN;Z+* z`&(q0WU~qz$k}+<#xc9oxm=66k9+Ux2wyO~8U0uGJi?(4aKX_`xsAA<#CWf8r$x6A z25?b{=yePdAN=e-AM z;jK`5%ZmLLm_)NL??9sBQ)mI$LE}@}QTkB@8J0eYjM$|R8Je0`I!sp?SQ9fOlMEt& z3yc(C2k!JldSea8_L5)=gT`->kYyLYinc~O%IcO{R>2d_?^YdLPLl|BC11Get>2$u zqQ?l_El1M3ig(GNAah7~IgHyDB9wg?{Mv`rO?|Cw8cQ+Y_Em+Wzi7d@(w&8Uq-RFS zCW%vv$H!>xBXbhtaHSeEaxy-gFOHyM9B2)+>n3G#6>*sk$!ki(#pcO)z^B==&4aFs zA;OLHQ=25n0W{IhV2BjJn*=~|Wo@#IJV-=LkW_xA-_UZ?#^|*ooI=w?)2&9PR3c55 zn6f{=z-26KVN7X3e-hG9iZPZ^SVM;%Sjxw=T4Nx!N>1!>G-#GiB1o|gWo<_nn4MIa zk4w=}@kL)3)+V`L&ZqI)U2iNa!tCPFOZg#q=(xb}ny67Yd3Uh_PTpM1{1ik7_d>4! zJegi!XN0H0iHpwG6%FIV@d@rqW;|K}=1*yZD*fS`H%k84Ttrg*X?J4L%fH_9_4WbOQ8SIXR!p#{a0yU&2fj8fn3~Z+=C34AsB-|&-(D*pCBEqkzA;y3nJvz$U5=N8tGSR z>0Vw;G3gh_r&FmKl1xddEMXerYoP?&*{3F8jZ( zjb4pTNSYg`a}hl^ZhZy=7`ac@tV{P;6T!3(2JRJAWEVFSlr&*`o##BhY%$2##mDq~ zG=t3KD*$|{Ff0EVue4y-giepKPiJpgK~@pk+&dY(n$8+c4AkcA`8k8`<@Li1ruRwp zq0u@C*Kd4#IKqp$S%t<5&Q`dt|CWW6)wC5=@Jc?=bR%&c`0t4`^#L=&fZ%>PS$_Li zVSA@_Ra;IfYe7rxpGSw^&yYtRhi(KPezjNM8_iygnR8F7+pkbPWL1RpfvqdmMHrSmETkesDigUT^SYc+$cL# z_Allw<2GYQoxK#L3OItT_$-bKQpMt#@I~!(L+kvWj!+})7`NuqpbET`4UGz!^6)*=N z>oIIN7d+LW?{Q~zDDiC4qEQ3%D9@nmp!H(1lu|N~CGZY8E3wXv(Sj;NmSZCww~#@& zr82a#ujbGiHCE-lM6`wx#EBhEUNt6G%8KK@FlK&)8T4#|BMMu1s*egEqO2e9;+ZTKAr97g*>2g4xHqjJ?;kP-s_lY!r>U=>sl${q)fcmA&x;uz zGiNdXSW&x2U<}`5K(nAQ%jL~P!Os<1DiGGlR6dp%WzHsyJR+ zL2ZmuNu3&5&u7zfT<(SI43^Jg^n5ylg{4u=_7J#P+fp&HwY8y`*Yc+~f7>7NAq|-_ zcGP(9IYFwy6e(seC)3vxg+u(_tvy{=ygDcx&DUwo-NfO_x`vS@rMFo6#ImI%<)4$s zbav;{8SZ2%^v4L5r3MlZ>kY0QiiEl{=p&`e2{K<#WOIcsb>%QGO12j~WjUH{0#J(i z(}6^X$Tf#=zWK(wm#W{FRS)y3klqIJj{fnzN<~|FJS}w-)9QU!t0&@7DpGh`W5ud- zr=xw!XQj+Slraluz^ysWIYWV=v)Q1WFBrESF{))o_Qo1vQPZPyb<|tHuzt5To#2YV zWcVVP2ISc~LTC`q0hs7DScE!f9lIqUwjgs^7V0D0_E{!Li;@4sb}i&z&&1GoOz?N- zMxz)Ir|@hr6KVh@K+a(NL!2lUE=_*3hXMsnR1n=oIVeyiH~_*(?k`5CKXCaGOlg5T zDD;)p;~et8z^pF71X8l#s8}HaNGJ7}D+aXHl`6le9B483u`BxL1xT7GVBJI#NK+96 z+8Ivb$OE}P&r0FdYWB^G^U3AxA2*-uY~SDCdAR3HE>_(qy@z{p=VkxJSl(LLcAHqA z_&{I22Be3x0UwBvnRgY!JP8QKbDnty2f{OY0Z1Yy;Ka>ERch{u*b)`S{zRqPNRoaM z4m0LZ2aJ&4&JCDxs)2w$H6Bs$sRe^5lT{}^I_#9%>HeR1>E`s(^=G(~BEs`G4A6ZY zmj6M%Q9%&#A3SWQvVPm^VlTIlE(08YyS9-oVi;dRQ-~;-iegb>R0T8#%3QdZzxDWU z{&*5fh_C%<)f9T@4%&OTPtl?ySofHEUuOKbt|=tLOL1%)<7xkJgk^#hA@G{08%ADD z55F6@r%)Atatrj8=+YDUpnTlvYHj7eKCH-<^=w_-W;5BMKsfoARIB<+(=jDfRy{0^%jIW6<9y!R zsT}H6^v3W_*hOg?{fT+^Ed$6wTy6+~QQNWSs-sf@cX>ta5k316P6D`=<{}RXRJbwfKNsV3YU15NGPTIP>`1tkQdBz0G(4v1z>EO z$g@h9#dcQGhFGhp!;L1&9L+FI@}a=qrOhIIr5-|jLn}058RC7d%w2FO?aSYV>ka!8 zKl%RD|@X%hO!b^7S8Gg(aTX#p+37QEktZ*&Xbv*uPN`2xT9WIqK-))`G7t>SOy&2M*eG9A=S*##H zCPvdfGI96a!|~Axq35L+gRiZ&NL~0Sz%ysEfA;ZqH!P#Xi_wG1+I@O;{wpY}JT_ds zk@}+Ty;;bGRJ>D#dVu7WO_+J5}=-p1Ncfo9CbGFA%j?!Lh;WnJMAdE_!n z*r`^IIU$V5@d-aE%VM`rCt8^lg<&?y$Y8X_9=O`}b+Bgv8Bpy;bG-Lh!=N#{%P5pIYeEaW{n39;z&!E;G*;*4ZPfsedOWFs#LT%?jgU%t!t7@5fG z2h4}ClmUw~8gJF|p%A*;OV`53Qf8Y2 z1sQ!wvg@F>$43u#!EbwV(#p|f5O_DDqI+a@n(9~}vZ@|cU9t%xS2i*j#U|36x41UB zf#ZTCrDrDSDKl9vQhw#t`A*D4hi4$*M1YfHHa;3TP;^GWP3O04Q-I|G_R97ID+){5 ztHh=3C1EM+hTz4;`G71~`xcY}Q}r&Z3R3bvR+L3Z_}`EVBx>A=de&j;Ik~)U$T>|G zx6Ns?>e?CC>TYS0GHs&kE?vNkfolJDSbS=%*Cs-`axZCeG{NM2o>_zy%PESQ%>^Rt z4k53|Q7ubarKqmj3vE_6&x7g7<*yKI?qh*ci@(FB9w@G)OXf1-+>WV-QOd3@{hUmn z^IzM3yy$0~X-QkbyYVt;qk^IR7noBS^|CA<) z8^BX&AdnfWxjKdQihLn{@0Nh(${m1YM=7W+uYJ1f~rM z>e>=<2aryR6MY)Vr9vA(T~O`Q!~jV+qaBQkS$R}Tltsl$!DOo>S^5|}Metp`vLJ1) z&b8I@MetWz43YQ6lO2~#vZ)7FZ1Hk6DVWSqdGfFd3>{hyM9X~s5;`?lR;dJpU|dH}u4Z{A1c)3RQwu8`E%aTl4!bMMDeaH;)4-pE*Iv-}#) zG#C?^izF^ArTzT71G=L8N4C~Xa5Vr|=Bw_J$s8{_)~smRV2%HfLo?H{vLRzSXnK`( zh@UtEnCzfhW8+(|VikOGeOn_y3y=yKhTdJFG}f^$D%H>~s=O!O1(bHgIZ`-4E~I#^ zUK9OVt@j#14NzqerBWGIba37nn=31Z(v5G~0T{`-Ac|OsD?8071c+{*p$DayiwO;7 zS-f4w-?r5df*NQ45}WhxpJ0^sDqf$Dwh@h?xT$4o*Y!SqbX-+9+re}MiW1n}=6 z|A9KhzdFBh7>U}7Z{cV-*H(3xp7*OvAYv(KaHh2~nV~#rgpHdSSo+8oge@HCiBjA6 zjK_YKex47PeLfiC}I(ypti~pGgOn_ z)OG9oQ>POZ^1EGTD&{NO=IUnFAD1~bZ|ntq+v1CThan~S*1YP4l4*y@D;ih{U&Vau;OLD9{;cWPd-@rQm|~AG z)ZRwdXe6~6&&jtqt$_|pB3v4us1I&1yrG^SJF^@E8kr>e(6d@lBlFcL2BkTY$1nV~ zmmSLFR*kIzM$Yi2#w*xKf`2!MfoThJ7?MH47MgIgCF&E)9@cwj-ub{cAVXvl#Z_zIiTVq{1(?xbs#*1*7Nh^VyvT`9a2i6u}zD*#ypytC8;W+ z9+z)?dvzXG9hNWep3(1^D0vYn>#RCw(Q*qWK5VcH=f-xMFwyqgMU(wZu+eQjVO9F8 z;tW&hcJJu#@5m_7c3>7ErcgXX-vts^;h6lwUKqLMBQl5V5Rw8+W(acFGlBW^N7}~{ z|0^mu<%EDDbO*;VIP3g7alE)l`xx`@W&1ng2Zx3`n(t4^yK&EHhz;p9k-6z6uLxb} zN)6J+=O!pF?3+f|{)6fB2lj^F238)TDUSL#`()H~J(zwVh~Mr0A6cb}gYs&1X(Er; zE>4{AjVzPe=zda#e^T6X$lvGduO4MrGLNIFz#p%?& zqrY9e{1?TG6}5|(a7eCTOiB33kItQEd5lg`3IUi2Phl2*yoYNVxFCDC`^(_;Bq<0A zw511V`G5a#FIT^aKUIidt6? zjTVpFy4&Ri_pok|G7urCwrqUyAtMJ1>9uhAAS>}PZ@%2^;&Qz$qv}zbFi;G+##|Cf zpEsYSx)R3Y*e4txV zkPDVv1!l3?TWbO1W{@8@G8$<4@qf_hby)zIxsP@B`!;Hw8d)EEPKVgSDy68)-wAED zY^r1#LxL1%qNG)DR(jojvTn5kkAd*8@NMQ(nmm_yo#ZFfw}^kBU^_J1)x1Jw@kW73 zd8BLcL##QoC__m0A*2;v)DF2{`5SwKgw^-ZA*iX@5XjS^)ya5{#~o!!@lc#3d4Qs7 zLs`9SEwSB5?8PiovIGKz(d7KJ+BS5`#qB?C!;dgq%wLaj?HtLp=8N0@_Um$7!1#)4 z(Uq;rg1H&on^xp9JjToFJ{icFS7GrEF0Bc#rke#3pU~%|pZEedY={Lk>AT&}mTeVm zm~0jij?LmxyvmR)ljMSfD|`YdR@UWWK)|>Zbmm$R?4fPidl^lOjWA zg3>~hCc5H=+AP_fnv51!;r9s-Vs%0>DCR=C=9tI?xb0}pcdXGpDM<0wD%!maPGTT* zjW&>KGGah#C*jd5Qt%0I9qUq6UI#&lrT(xlijVBS$q1kd1jQ6j40CJMU4lQj4t@35 z=E3Wue2W-y;C7o3Kf>XRe#wqui2mOPC-QV`%AiLy9?@23Q>ZtZKShDV>uIGZ-XpI!P6wT3h~Mf>pBnlCMtjN8`IT5n3RZ%Ge7K z9N}u^05)B^HoVN|Q25UabuE}o(0NMR{=Rh;V^mT%VWw#-`HK-IoEl?RQV@0N8S8ec zmF?8v{>1b~s*QKM_XgPM0zhOu8sn_?u4O`O9s(w^EDq01i^|9n#*$G5WhNqPjROk0 zhqQl>Vmi}*Rbeq-K+e?{>NT;mj$w1>MyltCuB6v$FM`~HK-`5C&qA^K9SD?=P07mf ztVo5_%FHHi`z?0u@h}xCSak_c=J7}kH(Z<_w?e$RfqaFKb{KpXY7ypr8GB}vTS4%` z8P>zkQAc8{S|@iU$Tq{(y5(dP(`*kMV;jWYjjc{@`G%CQ5);uG%EdQJ%!%x;9X!d~ zk;&>`4(}3|C3s_%%A|On#f;oskFtmEA_BsvQWvQ?c*7J*HTqw(`+EQNe;5{k=$Y&k z&DWIw3yZ!+(xs@?8f*v8Og4&G>_gaPHs3iMPD6-0bmPZ0VKnqp(HC{M8;X7$%%Q`^ z+s=tooUtf&vZ@>N1p|u+8J;R%DnsJ;QcX{9ZC`fvW)XJ(y_T<{ez|oJeNj0>G{sy$ zu_3hXhg!et4GJ!%!T1 z4WX-!#8~XeUt)7;#Y^!sPjx@`QIY30zkY`OG7hN)cGX!V)P#W$(m{l(ADUOP^Bs=H zZ1z`4`k$Gc0>LL_@r{}F&O_jEK;$!{Z1w*r-{5+@D5eSfiJ8~VC~3oM0SBhH{XXW7=@|ZZy>6 zELC{8>e`eUWyR$frnXXAv%>mzx^<~3c&sO4ftHy>DL;N_ww~eCf%M5Rb}{8sv9j=U zPOZv6+Hwuu?@U$I#u;XYkLk0GN-Jf)7DI&DuD`i~&gc}!>53)IzWwHcwAru6ljApR z{MC&&I9B&&FsJW!hbOb^+z8|yyxV(kp?#lzYY%t6y?Z(zPG<-{mIc9e8c)01^Ho}| zDRE2N-)oc6YfHfR4*BB7Opn~*|KNd_)B(4U+Ijv0zC_}pII-?mp_hehDXTnkekEFZ<6em;c`MiEf7?RR6g@L4H z4#TQzPDlem6(DWTm7F7y0AS^w*0APVJTkg?Fhf?W4nY81G!AKA!(Lje(;Y@w(9JB`HT?=Pitqn$i>lHIZH+AL zv_+l}efwn-vBHXi5b?!eo=93J>)fjRfXu&T88^)uF?C{ev_^PPfI9bEnU0=5-u#2s zlWcs|_&A?or?VXc0iy`3Lha`8GE|IVdtFPUn~(uoqM{ZeT9c0(NRU?K-eqLpiJwGAK+L?;=B|*=T*Vu5ScB+ra*Ka z|K<{s-x8`}(;H}-_D?XOfA}`Eced5uX$~cf%K;XPco`E9{bFW?11q3(Ji*aGJd4iA zNi8WID)3}5Y+y{;00k+sL)((ZS>uAn4Wztdp5EB{ju^+J7wYgL_7h5ME z*8lkR3hSSBR$l*KzyJEbiGKd{PpGFc*phhd01oW;bV%k<5|5&7MJvdFRuB{!mvTx* zNa7m2yj!vWP#eQC$7Ip`k91Am6#t{dSe1^+KE3k!Skt_d=#DcH*n_p1|)WpNr z7l?<(bH8w8Zk^Bgb`U_q=3naQG^3*F@3bov;T$Hg-9_h_w^lgMlsc=*k6X9iUw+U% z{HOdlpA6#xW|+u7)e0W!{!ft~)X@L^4_@B)lGl_XX(L`Se1A~V2 z1fk%6cRS=@N&x>_nJquUIQ3DY^))g!;hQdB|hB=Xlxe>_(uUiOhocQC{vuqdMhck!J9 z@=$>aQA63;*?V?{RhIOHa{>CT&G#oZb9*ci&Q=&jBnL>BXYIhX(u?WlsizUMCFeJ> z50q462X_6}#lB~;v2t@~ zr@L6Waxfso1C*uxgTL=Q*^^$e8vKWy%_|a>RTz(KOhn?6DBsr8xPYE+Mt;kAG#I`J z0R!Bw^s@^&&{47P$BLwF5GqNzgUq@Ee$1T#o;Seum9P3Cg!)vOp25_hHe;z{KaMHG zsL`J9x`$Q}56j?{D4^}yA<}KVbhed$0hA&suPow5Ck_WVd;++M5mbhRqNu`}7TgM; z`BwpWfVXnT#}j-(%2|eP;LPd(ug7%k=Uq7j%Nq8>sS2v1ITqXan9cCFop^B#I=6Og zvayBrV6#x zuf4{G*5Hd@bv!>tTJf>g=yPEjNFahXm{PCEjI8IsB<0w(jKlBl=&y|~X!tSgOc%=Q8q?7;cC zNYNA{qWhM@q-)ZIGap0<=AS%$rE_)8|L@yoXK=ol`kr&tIegpMosIYrr^P|X8mgo2IINSUGB8<|uST=O>71FOSlH?8VatEC57zjr6;;+>$#thMkH)he{?k|o zg+BUcr*}4;kKbJTq__9u&VvX0|FOHX!9#0)f3`rWbhXiu=AG+jpaRC2fuUy7+TxQQ zR`z_+xp9rl`WjLvHkzC4sLkPUdiIv)%>mye?9Hd=GdzX@88%;pMRIxsI^g+SNA%s+ z(RYgAFJlZLI*%fdqa&TTtMl6>6`w8sIvT#1cDAsSERZj!n5PtA4hu6^qx=bO z?5eE3*7@i86tC)Stm(fXwZKc4o{AbtI}HxC4S< z3(Egii{4`{)h%$X0};cJa{xK(i$#s}T9fHyj2Jip>HY&KL)Kp~oBWeZ86MJ`&U)SZ z6O3YfglqMB5d&%NL2%;cC7jE3qqULQK2?XVx0m)16JxF|ro=iqIUEdMx+s`Up)iTA zny73|6;X{0Y?n$s$LFpqDRm;_HVK!N+~e@zSc+H{I3hYJ?0k$;W=7K*p|AF&PErv` z(g*@psZvcCQOJB{7}r>q-p$bhHH>Y+x~4ml9(}K1J8D+sNq`2k+2AcjZO>~17KHj* z4#BIBky~mu$4vCH?^I!wMv4hPKE-gD0?@z6)KYF_E#ufoJE$Dl#l;k5(KsZw6=~LN znfp&yJat-+@rVSufku=_9bh8*Q^RB^_`y+STfU~zhh}>`!kNPm2f{uiB&f~M5?L5p zrs7cXkflMLT6ddIda7t|*nY@$k!aM8yNX$v3AW`Qos|HHKnE#b=A?84YgFWZZ(9Ld z8w(}a2QuTc==z}`X;vy7XD_Ccx4MBrNmQ+(zx(6kNB?oVBZfD$%aPoIGX_+}i4x(G2=Zk%f`tiBuSixa#|j1)2rb-t#AQ~=n=21< zLI8s2*A*;aB4xApuyI2=DBH)N))I5PYC>fY4H8)sFn|30|Gq5R3efVtm%TaL75z~R z5M`>(UZp7sXe}n@N7*1}Wi>6yzx+=Hf$zB{Q{gERPo?)rq(sDOJz1zu2`P$VwH%ks z)fN>~A>`;4&Lx#Su|p!|6I8IRhueG5)a27`xLj$8`*wvbS{{c-hGH@)mprL;KYG{pxN`vod3MfriS2`0$%MAKc@DD>Iu zu+!|!a)!}$)=|99keiq%gcs2JI8B9Z%Y#n+_stvm_Y_Gjep?f{rBj0Y_NX2f_>HUY z2#e3FQA_!)KMnP5Z|l&f0}nX#l+Gu2Hr5rG?=GEp_`3DWFB_e!?`&BWt4PjX*~h(; z!E@W8`E%nph?#qjpKR?M+<&z7;HT}Kjn4HcQ2T4QbN%5x;`rCwSNqeuSNlhJo8tNq zC3m{(IDk#Fy=w-~@^1A)g?#CbZ)*n7>_)x@+Rt~<~pAEa0nP&ickC}e5v$ys5 z;qC@Fp>zE)bd2NUFlnFkHXl4VK#hA3Hh;ht@!Oi-(Bpl+VoM@x7h**hpvq{@aKpYA zM>;MSagFyv`W)DQ_$_*)~S=&XC4ueBUsF5)IZnkXjC$+o_u2 zMC@tkg9bIbm;IKN6n#X?36?P~;2+cRr1wsiEVwPVn#zfl= zAO*=tB_IG9CO0LiPYZ3-+VFu8KiNh?TA_4Q3W>`RYPgVm?J3?`T>llD6Rag@0Xtj! zP@JXo@E<5IOEDN!M(N(;pRks#E`^lT%}d|Bsg$0cRw1yk0e4<46#$L8Ah7lZmJGPz z_%s!|$qy*gJX{T5bwU7@6r86Y5_0*UxyBXQ`yMDOJDaliYVNRXuSk9v!qEPQO3FvT_V&tm~4H8nYmqstW7?8)}aFm%UP@?S&@yeLSZ$=bYGSj9IQ&>1`Cf3aCP?wi>HwB&oy2r7;1>ADB>sZ65phcoIm5| zlgEd=Ot^=DCAzUB=tqG!Q1OAEPsXTB_VJGFK_<}R7x+X=5 z{)LVIh;Q1OY0iUisfGrimHpX2=FZ-?)Tq2zD5h0fLlh9pPy}bV=IKe#7M;TEFDPa3 zTE7@gOoR0r37VLSEy*1#{fY21l>Fgb9KfC+aOzc+?Hzr5AJ3)}PQ#sfSvW}#sr&R4yBvB~6>kJMhWsIoXOeanE&C3zJ_A&yR@FKzyxMo1mf|tDvMhS%8 z(QBO?h_zsloWX#*Y6%SSQWl636Kl0#n@WF8p#E$A5cKrA|V#+AU*~Guuy;W z@4hG#kbhi!^a6qh-7l4C?QG)?A`AtcR2-LCH|oMPtzR^x3?N_HxRR9w$5oUJq(Grn z-tDA~aIII5b;(QkpYgxZ;F`7#mITfpQbH((_SNbJ!=hT(zglI@WhmXgA9WPK2Ew{j zoQ@}RTvb#|WfY{A8i?~@{>nH>j|CHC%FtNwDR1$cJ z$lSuQkUgZL^J5r5^-5hy>VXy^#C4mv6{>Uj&d}f*xZF(URw3e&5gGxOJQcisp3tZJ zMzR2cb+P531=HN)@w>FL=>*SZLxLr7iTPQX>^xVq%ADYPnB6!%aayu%^k{?=w^O*3 zSz8PaS+pd#uUeZwj9mT_4@rGPjmyl0f{7^+2|NSN#nf%6YZ5>fnM70%>ktw}ULqez zs`ZJeEB%o5PC`8!HEo+@xuQT5+8GgUI?tKM)=+9zY7Ym5Y}I6GbHW+?Z>2n=XMKHm zcnRB)iJ@;Mp75pu23?7Vi;TSXq@L+TxKktGCs_EP{7*R%8Xs0 zV@QL>`d6yVvG+(XoqR5a6&c*Dj*P~#(1T)b(5bB2#vr4I>MtZmkH1nu>~8(ExBvKI zSJ;*OKb}Kdz}C*%fz}!muf*xot)B{8MpwwrtRt5mc|Xkn=OYE;ASdxQ1wUZLc7hVD zz-%+H8Y=%IJJ#Flsz)z2{xFGuBO!p+4?B-`o^0;#Y3g;BL~ zw7!`HsBdOgVl4{@38KvB77nP6p zhnZPt;&@o0w&9^Wm7<+#S3tg@W)hLmq3>APVnVA7N~T5HJV}F~ zva$?>=eTX8(QPh0sB?u26z`;s9GiyYC_PvWKe0W)MAK8Iv*8Qu9& zzf2v5pqD7NPyp%hy`Pw;g?{QC%hIFkMlvdnUk!t;%GsQHA$i(+rIUU4V4EwQE0_77 z9S`Fl8)xyKsxr#Raq&U`qJSx=uliRUY@A7seMZZ)O zxyx~S7}69;vElRI+CuOVn1wf8{1Cf?Qb5)S2*A{k2=Fh0t2&C~#hv50ZH3-(PFCyw zmtTHw|AW~I-ETgr^}fltsNXesoIF*=ZbwBqa7qRKmrXiWadpa3j@BLpi|enPb*n5L zN(DJiZ8!=&a%g>b>qh|5xUb<09_xZf8NY=O2fGh8w|0Jf{9t>BM2Lr?@xZf(Y7&MY z+WjB^5f72K-{?OdzOZ0QCm){z8#tLh=1>V)kRc+l1v z-UNY885$zUNTzd~ddoNV+Yi4s@W18+xWFuM)P?6CL7)T+E2V_fR_rDzRO^VAEUq~~ zW0wFCk%yvuAA8>HSd`R}x4)99vh(38k*wLgHm+3kUt(<1%;BWKbfSaE83#mZhqh8f@JSHjnd{c>?meEl0v|B3|Jo3SQm_bUTgNA3HXPsfoTik5 zjTJeRO>K2F<;bXH)M3O|xk1#F=^6KbPFGk0GK6#h@;8x82bT<|hOzD3zZd5>Z!U%P zFTbRC+po)E?pj6_b9~eZbVH;ha=OY<*?#7-AX!=33D+trC*^2hg+4#|^!Ta1a+v?( zK&vdp0LteKvAP9o9oJWU7_~(~y{bC)Fz~ntX!=X#gnJ&`|Gp|1q&Z|F@0C{=MwPf~ z#|Rn{2U75{gl-X6!pA~+{eUqh$4Kx?wGP`~VCDzg+dI2egyiBpp7=cj^H&kN7XxHW z(z=BfNKsvAcn4!Pn7!S$BN2o;aacJI;7LVd8s&Aexya1N?_h;6avQCx;NBSMXM4@b zk>F>Y5*i6sXQT()$%3&Ty0TM#5qMQ10We}fi)n+_$6nR*Lyci?e{=u-7C1xo0{hNu zow$QL#N8fv4Os7|NB4Pmdh>xB>ZTh!xc}&Hh;xKA26u|`=aEUGBQPdH^tt3OA&$WTzCLOIR;bXUfcBznuJ@Y0ep!EcLc>Tc;vC%^oX zF=>LTMy$(w-s>>}E24}w9s(#_viZc}8<(H&A&q^+Y@lMgbOhukjN!sFEe^=wh|+gO z8iuo~K>nRycD8=n-~9f;&cW{H{*QZr-IcK^r-P?)8J9Qipe}X!l05fBzNb{xN!?)k zqfiexkKQmHNQXnX`$?}H)W+>kKH;Zt+wfKcY)RZ@Y67BK=N|lFAJ`Uz{>1foK}4iZ z3+if|iNr9d_Za>OPnn{wa%Grf!o1jlhs7>6#RR1B37;GXnMhZD5A&{n&{i~>dgo%0 zauY*1z$4n3V$ND%*nDuZ_`BY6h|w3q&K{>h?{*$gg!_ry4YOK!?p+JpYU2dtIZnR0 zP#m(iu}^6EnM(zP?9d_FtZNl6gl6^l$h_U2U92 zU%K8Yz1R=YA#>Fr09K-epV-@h%M~=7$D2kzK>fE+Az3x7SvHoQ6BRZLrebu4Z<*bh z4%W>!4mj$Y33%NI%1({Ul`ic|)}anMbQSin#=xEJWRAUlHv00uw@w+(Cr$KI+F>lZ z{se2`z`qY>V+rE#G^$cmrqYglVVg59FH+Q9lWWa^d)E)P7{^NMb6w}NfGH9fGv&)9 zIOUMPfre_d`!>Y?R6|ob#>go~D5KM+Zf;%J*qlz)jh-tu-5T)I7aZ{+4N(*|V*N`_ zCY9e!V)_Dy$j6X{c*7TZ*FsL|d2-8Asn>rrrC*96I5?C=OdWfI9QVJ|S|(g|8Crab z0D&5F-FO4UEZtF1_c&f#C>kgb`gbOd2MD9GkMn!riC{^~-%qRJ(y1Ip>C z!(~nvu2?JlQzu=b<`8)eD&_@kNQv8bA)HvMLt!c4*mka1CkSIH*CtilIvJ%-GGJ8( zv=K2&ZJ* zb`{Z%xtRGZZ|X-*Ne@E_r;W#3@UYw0A}V`@ zI1|v#LU30{-f>3KksaB?(V9zBp(CrZOB}`z)7PRW@Y$|E880zyDy*L zpBztXpID9@Wv~Q{I=GX2+y1nF+5vjSN{tAYmBNmhz(GnC;x>k*4zeVd#?@h#B+s8AEooT7m_ZbJ~rjoNtI7lO$U)U{%_Yt88t zF4y{1?FaCAg*-xJPIsATEE4B0%@2j4sdvZEHwFCTz5TY^yP0^40-%`m_n2Y0*w!@) zYn{rC%oNM~HcnhmqF(UgF+`G>ESc;kP5EDrXpm6$AzEZ3M;3;a5ILpMT^&?|5p^nuYy``1f> zjCd>58}rVMe>Pz!)h-3z28^t@r<9;A(7l#{1}l^)4l~a1J*&bONUq2nW5}`Q$GYT} z=!N=0A0hcS1g2V?Y)9Sh_` zs3~qawst=m&`j~~=+SCu%dZ}Rcd3^h#%;`j(^$OY+YOmU#(ON?IhD{H~DFFW87Jy3EH zc|n+)Qi{phh@P6@5ka{pG}pZI^o2rUtAG_S8*45R2#{NbiNHAz4Bna zU5S*m*@y4bGOT7?l5yBOV>lkr4qqlyZ7{BNZt0Ula82ip|oKX9YH0$mY0!(ZSNx_Fq z&N7^D$?1FyB^~;^zxpA#0EY8Dxtf>O+&MiQ>8<6Y8gG`}!${JKPe$`Igz3mVr%*LX z3==5289WrBXn%D##c=K&$<7mc%G?(LuxRjk#lnXXs&YJ5v-DiVeE7=s5aA)|il+jW|-V$md0LfekGGb;%Ot3r}dOqE{uT=qu`lSoE0@1QyM{O4nKz; ztQ=a?aNI&}T=#l8txy($qR{FkWqF9P0gNHb1w})L#+iChYR4$*yMr!t!ErDhXCADp zWNOLD*fs|lZDof_CW7MCB@h3GFyh?szbF&Q7`Rxg3IvySj4nP_TN_)3IGa(AM?Mp| zq^IBLEkY8O(fmzzNt5lsN7MyHKhQZ0H_E9`bo+i4h&B+!3ccbyV)HA`z1TZzz;S{m zx{Dil`3In+>0&mR%yBz-M6VPSk-o+{up5ro)WjqOkZ3ik$Yg+kgWqE}6eMUuMyZlT z?+Q9dL9zf3TVP=C z@FWbJ0LLJi&!OFL!_KxqsIM+&KV0)JrH*J>`b9M>aNn~9ETd=7uygyNlX1vz$}HYV z+)Z5e6%0=X6R#WAmP|Tq#hr)W?`-pwdymd1&x|cU%!_FIqj6@lvnc$E?lLA$)}jgZ zWwjxjKx{Cr$ojzY@T-R#8EPHVr>QrK>2vprtFfbtGK4QyLd|aJ|EEw)^eWh6aJ|jEQAKq~ME6GdY^tY7?GuW!D32UVD63d!pinB7m0I%=6ZF9zfy59sqSv(~ z?T}(L-}p2Iy@}l$E;T=j?7+B;b7X4A@Y$>2u$PHM+;8cPYm>#~=xCkMOOa9$bCMH7 z?*4k71PH`4v)Q?2W}9wX|_GrGvyAoM7bxc)dH)Kway z+Iu&-sXZ(^8t1@d|Me9>;sKuqJqbhvF)O5WmEj#BiI(lfMqt~y!t#+lC@eex)2r3k zge59BZ1EQm^Pa1U1ug3$?Or8Fm(=WZ?nwx~zR_X=MdCMn+>kDEl1#s3BLX-`K2ydD z=cQ5|`x>ov-KtgJp`bj0o@XwSZfex!A<9aHP6y%1JCC;aI!#0g-WFx2^JM4V&Xb)- z$moS0WieZrfMtheWhfUnX1Cc5|AWJ$O*-!?E2@52ka<;>)p|TcAQgdB_r~J3I%HzN z4nGThL$U;IhA>_zLnK~43L_=7Gpj+*%?|&aR*9W)`~skjQ*T4-stIqj`dS zDaLk}1jY7~7l>dSy*jm}@wELW%h94(GT_=#mPg!okwTjW7(PE^z4+oJzX#-y`3zYg>}(%QHB| zLLg+r^)l1+K7v=tdnkNMjp7gDVG2-nYk@x?l&CHy$~AKFWIJQ1Zg6~v5e9i6`OrhD91_RUwqY4DbX3Yy zqD}z`$;v_>F_5^xy`c?F6@Z1g`XeuA{U2}=NN+Wx0}X;&|L^t03jitp!SG$l?c!s$ zh;D}bQQ@V(ef6g>mNP;&$2AX**~UhSbQF-p$=M$d<%Kq#?%1Bc$zbEN{zk5JH*b`~?E=r@Ehpwg|{hf6#LU9I~55{yc$tMI4zxvx=H|(IW&MK8xG>3_-TUD-;Wq zuTo4}JCgrmiU}^^O@|Lhv9MeIj`J5w%rA#2IQUT3i-mE&w6c%4UHTINzPF%jAXJuy z9VgvKWYa45kxS*u_ikd&_G_W*MxJ}GtfzEam0TUMvDTrP8uQ`j?PX)OGyPgSeh;6E zjm{yhwtahTr*NR9?cS^HhLlGdaEB>aEgQaf9I0!1Mz|IQP;`44T;Bx8a2njDWmHlwqTvXLk_s%0Sz`+r<&=Y&mY z!AC#A2gtsB5n)}W#DR#o?Z}F%ozS- z{!;0ei}s=w^Sm+10c~!`B)c#TT}zw1LVMOu8q9kCT8nkvw)(q_H3Bo>4cw>K4IOuGa>VhSVJH zK_bOAv2L(WlKPd7)W@WuNqQ#54bM*}{>=MWOFqIBBgS1yTLSY?sbp_ zAysPJiU0y12%%`HSI)TWK)W(uy5`I#j%ZfSbG^OZszmjmA!A%^yjJ70T3tn7bUQ=d znaq%oPd0Y`japLlRF3Ab+s2>{aTI%kct1>#9Kq61d?%4yAQWIFvsB%=wf>)}MLiF` zN>r6V9+@Ye0S|fwO)DbUzS=xW12@v^4g71`!UBTn;;nRHxikf~;fIPVNcgmcsA_3} zMz>}qA-py65<2>@DfgvABU*Ehldn#p=B_56jU2^-FQmg0+ElvwgQ1|bOX7ah!ArF4 z@~xv~kFvNNZyRh;RhBOduk&^mV;l`;Px=yE#1K#)B}=Dcp!BI(|IxSj$7Skttm^bE z&UU@B5mEI6^G>__(T-eQ3PUJDC$2nOK~6F_vS>bjiXX?`XZ(*sKcxA&M1G%u>&b{o zqvxrUz_&)??^MTe*uUMCb032;JQYeTEhRdY5Qq(7uc%v^Cr-zbA2?NDwOwaHC;ttu zp8J5px-(U(ycpy4+KC9d;_wv5GKggK5CNmFeBzOYLkYc!3WQxJ=cV8Z_4TO5!&EU8nOPboLQ_eZ#yY##}(BvzgzUJ^jDyUHbKCqrb|f(n%*JiYL_#T&^N+%Ejn2bNYZ#a`Q74ILKM{l(DgW|Yi#FCjFDeE#^$)$M zNQr@ST9pKsiD%LlygA`F-T1fhqDLzwc5S>1V*yTnCU_8DSMR-ki6xT;_gGauD%H;( z4JN0Wr-QSs)cT!gg#rHVi|OPomt6Mw`D}WArVCN}w+;-{jFx9sUxatF_yq!kS*mrj z-LHgwuTQ4e&t~Jv;(F+^bA1cb%S0&nzq0J~_6aITe*~yH zPcoZsY517)b;*h>u@EU@Aju!PKg|cvN4Gm9Pv@yJ*ImN@wewU}%3qnz7tLdnM#0wO zNB8dk@DpC(x{sSjxA{Fi!Y|fJv7&_@9Y=>e-o#AI*ooN#9l~>1Ee}`nx|qe)J!=g-3)9I$S2O{+wD!ffW-}_@w}c zyAD>B|Bxp@O(3S7#ilo)bZ_O@U9GN#!Nwsx2y zK`|@m5+7rw%3_fx$tQi}fG(_@8{xlNf?C}U_Jp$YSE2=mGi;5$1wcCBB!JT(2eaTHm?O^}K`RQR5G+ocAbJpM8 z-1^(*5BDGa&_tR?M#C2a#Odpm2*Onrg^4*o{iS=2|9r!L zKJSxAR&mG&i<7FK_d!+G0Wkg}4ZrMvh87r-sVR2xw12=g{IvUOe(STFUv_^*lKqqM z(E*1Lojh{KZ}oPhe=_(BI{o@RJ1yE>uG4Scv(uv8r8>QJ>-{<{+f_PM88@Bl<1?~M z^-tPKz3z05RL|J=LIr)lK<(CSul5>!DCAt)?5m3fGMkRc(w*+6{mn_Gz`&JtUHtoa z#_MTV{(M(AYuP=W9>VU!dXe=z8$Acx;T?{5YgAcLyL)^x9RQaxcy>O-i?S?JLj)z{ zM;4fda&67fHv`Sf@}R_DLRXZ-8MUnXis7+B*C1fxJE#1mk3FQ_;16RcYNUaml-cCghPwkW z^(K%7Y$`v-9tT&-*B*_7%$bI}&k}7h3XEke!%O0UANzeZPA`FYW?`H?8iZo}!BQ#U)OBnMz zh(X(}_1iKaeJp8Ep}YA6Z_SHow!F4VcWGgQUQi{vzW-05vCPItqh3B-S`N=oriXa> z1{*~nXK#vU($oj%wt*i;p%?k6770d3-QAWD*S@+_T%nYs2iB0S0JQP%LCI2T7`slR z_JXZr^k#b8^L{ZA!bSb@^9fuuKM!V;?Q_U5xCM15AvhXEU?>hy6aYx^KGyDx6xZT!>HcKDh(>m##&kP$#lA) zESMuDB{o{C54WNa(w!yd2&paEZ!D!t3HTwdcb%S}{(U?@ADryTCiVAV7bsRYzk&i! z)|0nCe3uHs;OpN3nWjNI&1zxD^vW=U)s$hQ{Et#n7F*7{wWnRNwP=_IcNGfF@RH(Sggp&b zm{t!a8S29()5;UP8AFrrsT*igY?hkqp~xtDJbr^dnfqSW&jL(2#Iv+uP#^|m9#c$p z50Li_AM{Tw2UuUeb6e#HD4hE7KcVbndRb!x056V9xHoIOed- zqUw8X&23s%*iP)*#wesU*NzV$^dcmcUodJ$zeYxNO|;P1FsmLcu&czKKMHi}3zw~2i{isLiJgYC zklAcH>#g6n1S}2wc$|Z+(o(^WjzVf1J~h|Z)AFG)fh`RD^Xkh5`5b;^#G#y@9Cc9kW#@3j)G7l+)Bi76sMk$E18XMS z>&&P9exHl$OY%kl!jiAOALOcGu9EKyhf+MB<8#b5YGCNScKQrQU7cd9vZKo^-Yf8#_L!B2M`=*zHe zwCy#V9xXM9(pO&y6#X-=$9_^0j!x>|6@;FX)apdK6C!>cXbb&|WxlMP?e6;gN2)0O z(p3jXiR?hipDLm(Gt)l!TZ#j7kLTi{dy6)6RiVK7hi?=10vq0f>Zgnhn)qKl+|@4J z_VFnv0^rTS0{o4cmsOpkV?gO6%zEcKbneE9%WZw=B7rYBap5Vi#Pn5OCq2U9?a-Q( zQS7lB$hk~MqpOpy|#YE;dibgED6jfe4vgxl>* z&QFo$&1Swo+*{yJ92g`;XJ@hS0=4}8td(+5_awaNy=@ilT;~WAbFAMR&?%(;7*^D9 zG)L5ha>4I2qfY7D7@R!OoZty!P>zPFYt1*e2@fB3crH5}9o?T`lFx_qa=|#f=F7E@ z2*TD{(SmI00ty=fws`P!^y6r7qz|P>*wxQ*5t$z546I%|*Xsg;RUi^4uij)xkmgF> zts&-Xx+{(*MltYI50|v3C+Em^F9pcBK0tnWMm7ZSl5Jli04S}vVoAkD3SM6ZB}Zmz zxSV_U_uif!BG07?S40tfer^4ZXFk|2R_S*P-n?_8^|QrUQMfi}m#^y#5&eWSYFYBx ze(wCE&e>jfFOv>VMVHV8AhE=bk5Q{DNlo|%N8sr-t9U}rWXR!nhLMqI566=Cc)Dpc ziNB%lIX-MlB>3?)?7x6Oz=%! z2xY`Z6?&|M4z{Yp>3n3H$V^eg{+yhwbm8D+9gLIgsSIXi-Y(2RebD}_I>Jz}aB$9} zLTj680cCWOk#%FO==djQ&O_qB_GTGQ7gxUkP3$?Z@9U{v9ihFXLe_Qq;et+%aCR>4 zB_`6wW>_Wpc2Ozoto(REhjAyZb_MSNu%9htug&_&zFg2r*qXHu)jEa;-0fhMK})1X zyY&t2Mp|m!A^xO=x%CZAS1Y37ilUo0LlORD5qvpPk2<6LX@yc#3#FzSo8GI~g2SWn zfKPek7Dc(rwjLDQG6*5+Sr|eNY{>%0JAJ;lXS6swbG)1ypMILqLw?BcKm9Zzfc)@c zn(j&}6u(ts;V;D3#Nz+-Vi=sG`2wFvZPd~aAfI)sWDDKOhlHM?WBp)W1O1_0>)-6$ zK}jDv2XVAYxU;j>=HcwDbtc+D#@WD|&yZ-zp(ofD;cp^i2CgdWiE)cZ9zxC!>%WJmXJIlSAGb&Ht2c4JM7kiF~P|b z>qRTM$)lRBJ+4l45J`RgXIzGmaBG7TsbqRTk6sY!GhV#ScAyF{ylzA522XGf`@=VH zbPI^hWs2iZbGV_GD?*wuE+dq705bDFqGBtL5tfT`GfdoLr6{G7PYyB|Z(&T65B1cPPRCh;IZ0wTul|f{7{Mh@w2yW0=ragXHNEC#4c52WV6~dYV$Q~6ouB`riTC=CPY;atRzdF7dTI8dm&G?jxofu{s?BUc-9JgU20Hf z<$I(o#nHR9#}i6sWe$djfvZ@MIMvf2T7F7@qk)L>8Uu;&1EIrE<{|>ZPmk1HzUl5b zx(Oiym9Je4+&GF0+$Oz&0Ci%_G;jO#5h^BlmrLr0;qU@X%)SUpy?AQ_V`md(dOt30 z;leqsxL{^3vx8MputAhj(xTT(kaQh?o#02K>4b&>Zp6CoQljmIXf8WDG2&^^ecYdV zuT^GL&JIFsL^C8QT4g4l=wVxeM#2u+XjT#GtqTw&8qJ^`m4vuN8hwtEKFm?f|Jm4NM6idQYGxelgzMJM#h2}Uuq)WxwpF+F= z%7pjIK=2A-7E6SL{2~UL02X?o%X_C`?h6iFjQB;o7$zJi1Qa@8`o))nHeK9^9l>DGh$-*Yb~SsE37+vvb@g00k%0`r%wKmnl%DexpxzyF4->+9dM~wp%8;7hz;;-V ziMHoHz#Nbs)Kg{I7YCFEc#d1xi}`C@1m=_>;ucpd7w`?7&k!^$hnS|cnjkVSVf6F` z)!wf_P%`PI21V2*SOQtLZ=OPW;Gf}{(1yqy^2Qv@7N`u|7OtP7^SgLb&{Zwgxkxj} zEVovm6KD$2KwvfZX#R+!71$xT`(bh-43n-!yR%XKCbu{g*VT}Cb$s^f^Xo@9zrql4 zsEt25IC;ciJG{+;Y!-0)pF(>&8cn7+ml)tF)}Vf^N%e6Xa4{74<-Yf~T{|a26A$e?PKn)U9weyTtU%0{orR zY~Fm4JuN*DcQe{Ai@A{#q$J+xWITZBh9&o4yjbum){69iD+krDD}a27CqTa+KVKQ* z;rMw1j#P-FPsOKTE72nt3oN5^%8Mej()8ggjgYhD0!mXRTngVbhAj}7*z8LD>S}Eb*O!ve& zq?D+x(uL!Xo(K9syT|7z@*JrVT0wiybhuG>E!#U0EsurdDB-Q+o7eDclYES+d)P5P zY4OwXuX$PtLF*cxqnx}{sfcB8MGE6>fBlKc;E`&4u2#G3SFw_Fb!sd z+1p|g)O!XWV&(J3w{nOpP)%Bc16}I~#$GyU#(WjqA9~zF9@jHUXMZq%DcZkl>*`IF z@5OQcNT;$K49;aTXqZGDi5`Q7eX>PcPOVQ(oQ7^Mh*CGv)P|6?Nm^y^8Io-!8asHMv3CE0-I(s&K~7_3Agf$j)XwQ0~7$ zT>S(G=6V9jx*`aQWWyyl*ny=XXDmJc_LE-nVFPGqi-o|k^kuCG+j0uxlsOA+WETu| z49)y*W@KYv@rIz4c{r9|q0H(8bHi%c?MbQQB(k!m<>yx|-FJb}z@PgMX!BblvHSvt z#a%8t?O|4Z47ML!00*V_X?kZ}G;jI6Wt5R|Xl~CR2ECjahYo!zhsRA zwjt?_E}j}=YiET#-BC_a$ijx2v@)tZz5ks!c0d1S=hj!ZzPfk)^Dn>n^7qSV)qDpnrC3n+d9y=rXu2~hQVOKL@TC4~Y z6#phS&y9}|QOBFGm)q>~wrW<0^Ssl&lbu_LhdwU>L(tt|AnY!*H*UY@{M}956~1$0 zNd<@%2eYdhjE(I(T&BHqqbM`8)7L=Z+D{n+iUdqiSL`mdS#*|HcXI2Q6R5~VGqvy^Io>+!=ztQKrVZu5aQ!yUoZ)_?6HLD8QwOhzk(}EJF8ULko?<47 zn!8^vs2jbj#GAttkTTtvrvODJrevZA7&S&FEL2d61WE1>cDK7eFlM>25!h|HSSDB0tN%PpX)4NI(+p+PF zIhV;IC55V$J_fm3I{L$DSI48BkpFw|YGAi)GTJ5OADmnn>_3)5Y1i#Ufg@@GA4WzH zEBoNY2yp*cLU^}MgmzWJ_lWcxO} zpp#=C49nBxM6QO9;Sn-?>hCjB$5!NXUesA2sRPhOHKzq9D^g5fiol{|M4h*I$|o$; zJNK(Hd-V%~h@pb75uUuovd{b9y>}gLiEbkp&rM7LlOd8cMBv~Uk_+v|3_bg74aXKk zd1w?x?BrmGAj8FI*Nb~N=#ugX z4ED^c_^+UCeSn5VU8;LIQm@8JwI`D|+R$&?fSbLTum|_6FBFhi(>4Zlc`+ z3UzPLXKbYi4rEL?gtBUrJ-Ovo4x3dty*DMc`c@{pCO1V+D0{tRC#VL2+>vfL2}0h{ zWQh9)*0=TdlKr7m)|MX2+KPrRL;%0jd3lT7g~(72ItdPS8c2+&tUaH*r~Je$=;xzf zxqqBVuTm(~|&Zo3c6Yf(a)_?0(s`)lF`HO z2gnL8WsAcTl)uJfB_ll7;nn3cRE*CU2Bc&UEg*EjL%85*(-H4CX3b^BSutO zh5cVC>&wc~>vt4e0oc=5Ca$v87?HvvOa{u@G~*08sx4$1WH#3&Yrb8lVd%w%7r_dN zO>Bo+6}sCx0uEr}bUYfhoGStAUAfZvN|>{YXH*j(*8<7o7(m?vC`T{ZzHI-J4PD;l zvF(~Bd1u|W)h`i^%a7|FQl5XgD8ap2>T%W*dt_+Q+qE5CV)Z+Fa?0N^EnteHHbhdH ze2@t2eJ0e?&XJUU2s!hzha&?#mdatP=D<}AEi2YyoX{mdx62C zl?o}#U5zike;!zo?VeUG`c7g!E3=9mwa2l!@<|r9`d)-6Hl?uwE_4Ds7C{y&lmV1N z3-JA3H{fLdJ;lK+hI?{?ly*ps{s1}w&Oe1I$jun?7*mHquk+yxq`O?V;BZ4h=K$VN zbnTjUa7Xq6b+;Zre26<*V0gWd(;te1jBVtCj{TkYMoH#-S@E%_hJcO+h*yV^)}fV>RN^OtfptUx5I^0%EguEQ z|BFF%Z%9r{0?-AdU-fsibr2T`_{}x~Lioklj}(+R%(bqkQP&NhA+S?;I@YB4!z4?A>NUzntXDZxB?9#C6=^1c=;>mTHUZ-oRIu%!6m=KV(rGvs^8 zDYR{|BvgLPfo~?v^udJ~l`Fi5oQYb_uw0#DgCb7Zz@IlCrbt22;d>-nEGd|Xe z<)XAH&gd=Svj2~{H-W3E``?DwKBv<>CraToN@=7-XwpPfib&C%<}xKiqD&zYiBcIW zLlO}s$t*+0WN0vCR>(Z`UhAAw;& zxc{fItXm4*$I~glqtP?CU>hYCjCrksEgv*LI+XrvBwi74GX>As>j)}C-!jm@^PP)= zZrjyOg0Uxx`$x-QZJ#cJ@H;U7)Xcwl?dJUVFjy~LMs?Yc3sRy%Kfpd3PdVPTdm9DnaXTrK)aYYIa z`U%(=(^Uk1Z@^RV^gb?cbn8l%|AC9&*$n1oOD`r-sLr!zS4{rb>(Bv0XYxjiP7itx z9w-k(hcyST0vmFg+8U8WbKSJ=L{go;m zGyiy@S9gC50o`gr$LfFVyWIo*$LSDSql1n$Z&3!lAg1%vPk1j<=ki47l!w1KK=bGf zgiBmHQAIpdSKuw^(Snr(-piJ-!FV37+IV?jFFkMBN6=ya>=Wpfe{=|>`df*A)Pvug zf+^A;K3$sYI%XpAUBjS&a3?I_(l?3IYjR$JyIP-q!AIaDNSD5^j4rfA;&AxKlERO^ zPzuZBn4bmWCYvD5ZU>KG_Nw05<#-qQ!8+Y0wF9|b!|p`8@$UGt%mDh$q@cN>vviF3 z*`fuyCCQr{ccn+a4;)9GP{ht?#{6i}U1v<}K;u2($NzR0J6U0`fuo}F0#AHTR1l&+|GXwB1U;qo$NJh|?S!Isb>>iLQ?T2It{(B<5Zg5m=8YqN zbhPe`CYV8CFv1C2M}1uM? zoww#m6^8fZ;rUe>hxgPt(&R_ss|%m);yGhT=t`s04M}ub4S1JS|8^V&+2CZtufo5p zqPx0zmwdEH0iEjNJ;BN^*gv$E|NnOS^qo9WcrzleJpYgqeO0=kwEPC>8e-6~@rGpD zzP#O~{CN--9eIm$f(1<8_s~6~XN2><5Q6@NvlKmh;jRZiSl3r~c_A^v(3ShHZ<5oX zSUlzj6?k_4#5&!!L6bz6rp4lIDdBff!5o6OMA})a?vkebdm_WXnZwJ5_f^>LQK9We0mit^w37{1nw8wVKAXZ#*95r=*z4j*`-H#K;kbOPSlhTZbQ z7oX{oNncEg%WB^J2V{#~!=baL(Qy*rpP-$U@_z{TSHW>^w(dMH|M&4xaC%Y48%^j- zzq*D&OeX1}fsGRXaQ^L9^Z*q2|0KJvIRN7Q^a@C@e#6C^$?5P!7k375b-BhyMn(fH=suLFS;0E$qwx7Wu8vkUSphTW^2fAHhP&U*js?u>DU9B-ELfa8}Uoxe9d?Or^SAzX@Dvj~~mw=AkZsO})EC zJ%i!L`g;x{NQ;h9)JjJ(o|9nQqITXVJW+OP|A$`43*Oo9DEZwjcwSwK zr1!SEG)yl@=rsY}`X3s_>+rm2GiLb3>-=tIdZxk6wb0jA7f4kCK;{V~sANRV)7fc?zI|;^-Kb$Z;cIW(t z`@`w?$?cDT^yNc;gzG%Bbq~d_#2>-vbnG9T>8G*(2**34cTY>u|LGvy-C59q|8S#I zYk@<5UN`)E6h{L6p%GqBG7OBK74^HB`EK;(g@Ro84v{nea+n$QmjmyG@P9?Za31%k zQ$Y00$mrjR^Hnm_FaR&~i87qV6P*#dj!k+gCU9KXc}rJtK+ad^eTo~SB%U7Re+CoQ zx%6fmb)ymw`t$7kZ+25xT=($4{JOB)fdH<5o=U>Fy6uBicD zoX_RjM#seCx^g<+8E89zYdm!5V0}E%WKM$^M9;vha$G0a>W>eN=4#RutY^={>t|;U z1ayIgy0`wzlWT43}*uBQRl7B|&qay7eEm5`W4 zR($Si+1;H1VF7G_0|)~mfSAAz(PcUWrpuwrB1%mc>#|4+{b_o38G*YZ&v5?1&;T5v z|FwTtKL3|30V?PhKr|2uz0ZQAMe1x@+P>6KPK}cOD39-IVpcpt+7=0Li~{C4}sv`#&a#9dymm`W zHn9HPfJU~27}@>i)JENSlIPypC+P7e1khvdZ$tG*-2{5<65=otFw#==zpyZl5Dsl} zF;S|uPQzj`ogMA(gn7KFTY3L60GW+tPF#cdQQrpDPaSglpE|aF{n#;I`BR4~>;?v( zItBql0ZYIR7z4Ngp1@Qf2nYve0CRx^AQ@N%tOGUzIY3tlbmFY05dB5f`t3eb67^5| z=%W7cTm*DrK;pLuAzX0U@=AaN;0tsb)lSP_k~YWR_$x@4f9J9Kw|{p|)A~O#b0-d# zUm0Sj@pl{%?l5f&?I7)7?Er0GZFTNlts1R*EgNks?J(_d?cv(Twa#d5R2$AcLh{Kz ztpc?)wRE-hYU|Ycsc%p#(W=nm5;dYuG>9hABHE-s(IEqfF3}?ci9RtPhQx>%6B9Cs z3?`<;j0_>>WGER%EXZ&&f{Y}V7*MQ<4Y4Joh#j#f4#bf-kUOhU+X5=z2IIEf&UB#K0n7!pfn zkeOr_nN8-9I5L;SlX+x5SwI$&1j5odPkxXWR*hfx~3bKvt zCFLYdYrR&w7E4Q0%TLQ+YogW!tpF`IEl({UEpM$UTC!R_v<7Pp)Kb+VTEn%bYE9Gf z((=#>)e6?~)pFH}&iq%~P zbaoYc2m3U;l$>GjW@oYs*@xME)z7g@*#p%5)DMy%^+0v5hMLA_;;3Fsl+}-t-s+3E zB_vNPkJlYCj6~uF`bob%?k2Wb`Anq9+V-#*(_H~Cc5DpHFIw_wF;Q z*B(Y1+!EdDF7))PJz3g*SWV;1p^2L}9=|5D>qJ>j8B0fW1!r1Gz2rH~7ZL}TFNijj zbDlnFZy&!?BlLrhth0VFM>zIAQ^CEFsVjTCb>-57vHePq2=97wGI!9evgg|`ip(AS zmB^$Ph-D~cN;j8Fg)Pz_5h=PUA~22d4rpn23lGOvnpN)_1uY#%{NKOXC>$|=7o&2j zU37`(8JUmg>WhP1UmTTxSys7f!HQ!)8v8u-chbM7_+i1#)j`g;zEAQi8GF^Obl5CX zvEz|Z`7P^Rjic)}-W?Hn=K9X>?RRd5y$H4aQ6DwfenrUs+A`mJGxdc=J?+CDG|gFj z&&35&4~NHcT=!VB`pe2nR4(I6Ueqd`?s;fwG*|3a@Uh${epjWxHcZXDSU*5Lv$ptf zLEZUYBMwboEOpqx!u!P0{Sn8jxJhMijvP9_l1&r zKA0&l5%4(KB5=dVut=!_udsO%*QB3p?GQ`vUqr+Y=7=mDl`hkEV~6PS>F=4ozp8~p zeLVd?*MtNm#+pSaKNAj*nxk^-SCih&m0t7i$zC4)FeJM1*w?SEm8rIsM|<5)E%trB z#QPv;L~WfneRLy>(i~i zjT0I}3R+X6jN>aq?N=Z2tLdE-T#RP`+dOc>>XjV#nU5Mg~DRlmS)ng zmWGJTQ1B$2C8JMn>@lzGQIX!k`Q|D|B(qX)te2|1{q$(-g9U1h_a$!KxVg;c(XDr1 z4n3S6m2|J)m7bN0r)VGh)ErkF9p`XVsl`ilMNF7X$0ZBlU~dUVt|KRCZD^7Imzy2o zes0?u+aF81l@+5ib zp2`}EGWTN4HM6WWM&yV83~KReS)e6W;~8jPJ8nl&8uKVOMM>>){vh9<6}ktSHTS=* zwLGk!B%d2mBDQR=rsKtzite=o>=V9Ej|+PADc;iXsH3LYEETanrn>S%?Mnf~AAV_{W6aHH6`wB#y7tY@ zW(~o4B4-x`cs%z|5Bf0n>4y^5&gw#ykhEkY?Y!IpWkqM7e9dk6IqdR>JM(`&zg7`m znE2DHWb;U|+>%A+$$N`6RR_LP6frfi*X=tq&RFDdbByE1+Hg0sB>Q=BB|ZV;>b}*; zv^3wiTzdKIn&i5s(efDwBsA6>xe$}Lb)|KAvb~Q6TO`7~_Zdq?rP*m>!Z+8A z`gQYfsb2P1NLiylzC2@a+Vk>$we@+zuRkPA-CrH#5S8W_VVLJW`?;C?utE_rjW7>Q zQN18bxhL`Y8M_=S)&{Gj?d-3ca-ylC=KZ!cwXggeepYF;w$z_!uITZjHebpzDMdS> zB+c@eW^K$D#hOqH`xcvdaX+V&h6g=p_ewZBM9lr|9COFd2aCkY+H&Q$4Z3WZGUKOa zIz9e}gjF+9x02bDEA3ei3dBTSRo4iYELbD7w5JQF%uPXht;KbjJ4-i7HMdTX4E)+# z%su_CsJMQP_y`AYiI^SQsty;Q^ywS7z2AU7zJ2#e7^-CXz3E-uxL4_8X{hpr_onh4 znV%JQYaf(LbDk;N!)v&rhS9Gc^HR%tj(sw(SCjo%^SXg+ho-K-XmRX|#IWISM_EcF zFB>_2Sk>?#SJsG0y{4K)FU%fdcKV(vQ>ZjJ`J|`uq1zjcUWVT^dC15OTK6=jrkc*-xw`!tj_cX`{umG|K2oP$HCF%hoI?Y* zT=;0PfBO)_sx@0;K0lijTQs@v%*}%y%uv-zkJEE;n=|8GuUU3kw`b3Nurk5r$e2Yv zMWq(1`CnVGb5>$}dS9Elm-2+>{k(K;ez8GC#PU%IkqzI>qhGB178S9qGgu zV@yEy4^vKPXq=YXR8OV32h4D*3>!n+NS6F+#3Sc4{vteEX7cIW8C)m2~I%l8Z$|ER|T*V_q|ZqJ84@@jPFPFeOQc=EyJ zJ0}fJd*#FaKET_{E_!OD;r?lfDyGdxV?Q^&y>{?X{jQmhy$=m<39tY4%p|1jDMxDF z6Z6s9tuovvZztw#f9==q`{v0b!{;|wym^sgw)fQu@6eZRWePvf-?;uGCt}mDLg5J= z17&-EQ<-=7yUm%Lud|E1zc{`i9~LE5ztu!>410Jh&?vUe_92c<0F7)?159^luC8 z^sgOsHSc;@Ov_E5-kLXLe@#8xe?#_}1l@b*oUD}2U!Le${eAex)7zKaJhkz;Tvfq= zu{F78*FsYlFT9hJxHwB>)MeYqWmkINth%OujCIv2<3L*6kH~cfHhSxobzY=rkKCQH z*CTM#`}~PiwrWO~W-4&vHjgeh&RTf=!xkgcm1{(% zjafalSt>Pj)wQ*+w1f!ac;p?q2N7Vqjv6HF!xo_82JGQ%X*cG$K(KNsxSx~Xz|?aVW!&ye@*mNSASJ#Z?RwY*<7fa-?%^je2A^+jM>`JSFgk@+P_gzNlyR!(Vdn# zwMxtTKfl)7X6?-F`?%+dFFMQ<9eKbcZ_0&KrP2@!@mjLHB-Gs1P;%PqO^@0pFI~Rr z>4@vgmjxYe8url3W$iUfok4NSWS_iz95-pa)ZI5$(@(m6+4e=R?M&__M_nUzFBi|8 zN1vjd7Nv`RJijpC>b6qVkH~Sgxu$wYHP)O}%E--Iq}yNF;pg!MTx-_)we7N>pF0+e znA9U{l4XI$k#&8HZ+_mkGVI!%9x?@&_BD$vs!aAhEqo&;Z|c!rsx6bt3fqS_DmpKH zR(-uGF(Fjiux5U^W8CTOGEz0?ryra-;JlEZb6#2f$IR$a>pE`!NN^2)t1{%?#IgO4 zN$Xf~j+|>P-nnCiq-yWt`->OVg$zxbdqc0iUsO8#v$jR>x-Cg7EDh7%OiCZ%;XCTE zvB($6#)7eZk6(MY`*q{`Un|QD>_d8Gd9Y&ozbH| zC*ABd-R#s1nUwgNAwExvT${bEIy}Z{Wj_BjbH%Eno~=WAez962w6*`p3eA2m)U4-D z*nFU_Y1O4-??DzvCcl|_{pp0_1XqXK%C9>j)GYkP?3dqr_QK@ClGN0gTRCrZ4t{l8 zH*MmRCBuv-4NDSRo8J;OsGsPmWm1v5hn4PZwmNZY*$BNp*nL9e?kVP^S=8bE z?qZ^fTgJ`k(=p)cF1cm%kIrg7FLR|{c6~wRK3#h`Wpj-=yAo#ypSvr|%=7(KbZth~ z#hI7X-|h5t$WUr69J>GK<*9OZ!f(gU30V2=>Kg4)51w0p33Q7${5rUAy7j$-+U_Us zYiSK>E`truD=WnHXrlQ{?YI}M?ThPbzINp z!B-8;3impt$l0}6vbl?s%IBmtJy!VSJ>}=*7fzWYC%jV=UJ^0NZ{)2#S67|8RyZWV z+FR7mTS3tx+hEj@#?Kt@_x|a|ul1 zufpu7n-w)B%<{~l+*DKZdj>D7j=eW>U_|y5)Ljn@vKZ=WZlU=X?>2$28I=L z-+wq3>zG_=-O&5qt%Z>fpS)_nRqB>>bLn}7h|GzB;RRJc{lCsj3A*^Y2jlG$ARJNu zO=d*E8d0f_7E#;_&Y`kXZ~Iz5*&Y%*V>tWC^)W)X9BxQ0{kcoLG~Beb;G0cJX2kvS zi+A=_e6=#U8}Zn#(R=oTJ5ty7ULP@8yWVJ@TLT$(q0TMwWUXIMwZrYD6AzuyxORNw z=CTvJWOP_%Iny{RM9)dqmmHLMp=lVsVELr!&T^;x`s_UttUqGT1M79n{aE458{CT4 z+p@Z`2bZoCK2q8*_vDjZ&&zHNnk#Z~yA1g{I76%;wOKk-X;GL|xoG4F{j|V{O)UZ5 zOnA6kyK01=|I#3%yYKzUxCr5mZ&a9F^OuOWpZX|s#xtn6{+#^L7p|)+%U=FCwqk+* z!#<6Q_w=1s-(2wF`z`07u_bvmp06M6Ga`*+*W z7h!{=>VNDHSz&+Ax2$%Qkp9d;>^@KTh&xYvD7E0CD<^h%f0p&0N(ouni;~=Bp3_UU zxY0`w9SgoCcGd4m?$m~_(gW%*W)|0Gs-LebI6V2#h+YPVr4}DO;cZcMJYxTwvLx=7 zlZTG5k35o`b@0ZPm$w~;ZoLtAK-s7$m5?zqvHc|Sc=xcb*;e@~ypppY8n2(#FzaN%daZmG;!c~h@R z_TD_NkcXo$e?8V1om$!Ywb#)~Ti@c;+js8lc)sm=dV=}g>N75l@5f&+4|%t{!ZXCO zRQRD|iP@ODQhN6eh^si8u}6Qh7MkbV=-Ya_Af$1Eaa3xneQ0HTjo+cw6~RfpwW4q2 zji3I=?6PFs#&QVY)3XLGF?1dOt|osw3+1$k&vYv;;FFl!fbH9Ve9JF_e9%IzL3) zuhzHcXQxnyu_L46?iXDT8(n|L>w#6HMDUQi7Hx$UMeYsdIcFV8t}QYu?RatG#Cz3C z$E#D^52YJv9^SG0c&!=dN}X`JM}y}8jrx$2hl1xBobel7<}+P|r5mlc;jl#IkkgW> z+q^i9D*CL}HT3vbRx!3VG4o%dr|*6`FygGx!nk(3iC+23T&y$BU#L$Jynti1%lBGonV{?-9QHxr&eTOYFIog>ioG zo;UA){-O5S>4qfDduL06e0+-bjIz&t6&-$AXHLw|(4ofRMOs)h_zW?|Z18+n|`jtdTCa+O6?C>7;pmwRzrIDYf!; zXYq{uwF+x8u6kc4Vs>@Lj#1zISH(5EUpijy&(h2o3A3pr7IS3$Os-StF)3 zuGTz|Nh{i+l#=^sQ2u2#-HM;S`!$;n9JZ`|n=7BBzf7zo;-aJG-dcCXm){fY2RsUj zn{H?s|H(|#@n|10m03dax~5~?E8dTHTyrQss3FETq1E_V%ZFdTepa8nU7NPxa!uZd zq!hDnThc_z4_0{0EyxcVYLS#VMm@7oT&(olMcJa771LUMTKsz_TZDI!(z6vR$;q+SDZQtAl~1vad!FePQD3j9@6uP& zEMZ!I75(gyMD^jZOd_9`WbD4G$ba4XQupf*+t2nq)7tLYTAjb)Q+>wmB9V$0M^)Dp zWE(exFU11DrSSMSH)9<4eeqF=ZnoDo2yQTIUUXI@510P|V?P9`vr0ZZRVl3AX_TB6 zG9Wik`^nj&vY!pPU+;XlJnY)@pYsz7!z(tIc>OHN6&txX*?iGJRn1~k5yf|Xb?r?= zjN@iH#xx&x3$Oh+&pyd4z^5dx=3Cvk8_g{;U$FqtRF}NwK!*J2BWpAyw&ulLNG`Wt z$=2|(?`<9-VytL+Mn_tDX^2avO@c=udqVuTDrf(i#f#0)_RG|0pL$3-f9oE_j0aCW zh{_KaW3M`Y|IJt9-S0XzyYzDXmN0RCo&HAu%c{5Z*Q6*6&L|(>ul#wMa9(}w)PxVO z9fGR&M>wWM&34Z-942q}TtiHxP*l?+OwKY$FC#zx$=V9XT|3iMf={IA_J3bf(e$cz z&9NwTy|D@ll{)jSqjqxi+9#ol7d&$xLHg2GGBCU~{K zbr&1*+0lGXnOM=mZSuKoDVCQ9rEC72L63i?I&26#`BoImzH+jNSiu9~n(9|VYZjDn zTzW2*R&Xnmxo)vmYSYp?k`r2+#d?1Y6uq17E}o+=F5&GkLREW5OrIwg9r|sL>)Y42 z&j1xeiG97__+=^WZLC%fE&V8O`u>8#=gbbdgW9`gXF8`T4)^NO}&$85cz2-d` zYd+S#Y3SO4bru)brw)_&a?Enn+u-@n!Pm$v?tiyHo8oz?UD&*!#mR#(&fpr||d zu#VpGhJFKn_}c4?6pz)9Rc#-5XwGSaj~BKW4%xmxX3LtY*h$Ym&+I$7XvTvg?koO`&TX>uR`8iradPaql;7blU8Amxh2J<5b0JoV|{&ADj7bm;IS7nGV8j z2kflIeHyhy^OW@!lTlVOlV;jDwdmTeTHVLv-E`LpgIFP+vnxhUJbFjW{Y%yA@x%6% zyDsSQ$gMKrw%4Pf&!=$R8z%?9SvG0s@`FCF(gu4E_|BdhZRa&@zhPvvsY+tg=h&l< z4qkivc;>G9mf?rIpZ%&2e_9q|@?@SAr&W8j`P(O4nb+HMCcg1)_j_*m=*f#WD{j8p zYnJjd)ceFwg|fCE*KeHvwJ9Q}V}fwux8AY?zu%pw@-^p-%@^;Y*&oOY$M@Aqi`tS$ zXuq@flxr8W-te(TZ^!2~8^3*W>9|rq*T?tn@gbh~eyo(fKl1U=hS-l4jfZkqJ^ZM4 zC5twpYnL-&iyDK*6Q8XLB!HoPX}3gxtH!qeNz1Sr%z~t?Fj) ztE^-CX$LZ_)`j3ldpD}Te7~V7@oa9z`7b#M`>$o2D`af_ z7QZdCG+J|W97iF`xP0`M57!s2S!rstddxJDRH^2vYp<;eO-bDPdX>%R`zwWEDC_5=%E-McgD zYtgH@3l0pBAG1GtpZvc4=d|+QEmqn+=#}Bl*%RjMI%;X1_hrDDZNqFo>{#$~&-Thq zTT9Q(tUWBO{OpKTe&x|6S5}r>xi5K0=AgwvCmH|ZRY4QV>(r+oS9F|K=Ke|eSX#Dm zMMKKr6RJ%~C%vZLtIQnyh93WA6(K=;#4fCoFFo*ft^X#^Aq{ONTH(_kY^^gtcJ{DN z>q1eNl;{&pfpu5_7=7nt+551&51Sg}22Bc(o#?9UnfrW~(YJ51xjk(5eTi+HUv(km zeE$B~Gem8#T#eS=xPMWMzMPVx<<6tumn+rg^uG4I|Mr<{ZHmuv_leGPxR_^hV5Cy& zg(>0|A*ChDNv)x)dFZCs(89mD%a&h%IIQXLwY4r@af5U$Up|ptHhxmv zW2-lJrM|eGoZhDQWt-!s+%sP4M!Ju3JY5z!MSnW~Q8fLwRsO=rA5}`GxwYfgXdKnc z%}_eqUw2X7@t+RLENkup+4i;T3ml(+&gwB~ghqkoB;!8oj;!4F`DTwf*TVK)Dv+sM zB+@K=+BbP>Ud)Xa)m}&23(F=uD>e?lUj1xoXhLGs{2D{)({YaBHBvI$XC9n>-cRWK zfcmmL=TXs_AAj8JSob#AHDThtAu7_x`j0)rvC`RD+b6t_ltWE4XInCcVli^ zdQ`u53+>PBq%G@$(+n+F3`n2!=I|(A56Leg#(l>YH12+P?f9?tjj!zu%2s-0^$L02 zKZX_C=2(8w*|6dM*F>WLyJr)^E%UN(CY}F!%4~YC_!OBLPke^dcsIKijq~WR`t&?g zt7z4VnLUTJ_7qxT^`&BD|E+2-`e|;SFxPrjQ{90<-o=;ROg>^U;pz3M4z3Bs9j}#d z`&+0*+*@uhcERMuvzXM>B|2|%Zmo0sdT_~;iPMHnG9H${RxGLCpr{t9Wv4_-hwY9$ zVb#2o^JCemUQPoH4}2Uq+C+WMhm;(-j7+`Cx!g_lede}b98=|3WN_mrQx#?%yz6tu zR8<$q4M$#8i=~dASNdYebYfp$iv@rcjm9sH z0w%6izw^~^OIVJO2o?ZNGNH%RW8M8FWa)kt~_Zm_igt|^A%)lOEV4F_I<4)qV9v@zXD+?HGr7;5=;mz)#Xt1u z`(#W({9=Wg(7L^G(j~{Lw|O%O=Z0n%{z}wT-2Bum&rBj!)h%jSaL@da_hPFDMmG%H zaPydxn9$<3gJmrncSt$SS2<|V*Y?Ip$L~>-^ZTIEk!hW+Pug(iT=C`4N zBm9o;Y3UAW8A&N|2~ja&5g`tXO&I#1AGYNOag7a349vT28^o4DQ@Ukv5O*}TQ0hlu zTPoMVFEk>8|1yuUelxJO-c?}Wr|BGDy) z4fqqpM+1s_0lmRDAb(rf=K;gOZy|qZM>Gt;<|nbkkhDEhfYIRXh>zW3q7#9h#0phW z5E%sf9Ka0zmytiTB^nH9gYSc+?Y#`J2Y-$D*wraI73d3|jr;>(PXI=OKS2H}utxy~ z;1!VQF`}u!IPf2YuYWgiIn+N%p#NBKWB6AieOg{WKn;95Bz8)PE(WZ@AHkoNXELA+ zzFwgJc<`a%Hw5|*1s?!j0!hoe5^w^4kN8xd697dbE6QT{`kxJM3ja$2{Re?-f$xE& z?X?uJ1AmG5RR2CeAMh;#{bNV4=m_w80{usV>w_PMr2T0PFc$n9;#2+8KBIv8pBCtU zCOGsUc21yw+NK)dyCG@#B)}HD1@Wo=rvPYYu?&I!=Yv~--x26P931^x>r~01+D1oO5^gkEe9Q?XK z|I@*Bzz;%FeXRf-!QUZ1)&IX8{}%=N4@4MEgfE1o;gf+;;4cuLrsoZ)f^Qb+e*yS# z@Opv%BftlOAA^(xRs+u9UlE_`^WTpDvjYA5BaAx2?}B6jO8^`2r-)DW;RW;t-zd=k zJn&)Qw*~qS1J?yFg{1A70*nU#i1<|h|91Re5$Hb{VYCr`KO}AMWq>{S8^ovjp9=H^ z-zw050{BSqhXVaafg6CIfRqMOfpOqJ|I6`z8tK#W`T=SPzXOs176aDckKs?tGZ|0@ zPyg%qzbVjvDEtS&{}3cC?@GW4`~%`seg50=Un9_e5W;97{9Z`fUP}Qx@K=aW_3s1p z0nZZXen)h)?VDZ^!>Nf&N1fra!_TfTZ~?2OPj# z5udha=kcE_(0}Lg-zd<3G{P7n{7Fa|U@hPR-a%wJ4C%#T7zK_TQQZw@2cle3suq3E(47UC~Pd}SJ6Nsc2z;|nWt z{Ahe%S&k5m&+fr7rtyvBIZ`yfWKYg1UVJ>}`QPS4e@uPYn9Fc5uMxpOB!=0I1ZFid znDZ!L2eAt2hn=%}*d1$u9kA}$#X6HDksahTc}(ya2+zo3hSdEhhq&}7FZd}SCHm_j z_$d(-AfCZ`C)EM^!M!)AmSVMdgZWMmm7 zhRYZ+R*Ww#Kxf{ad3NSSbLoj+FZ`77Q^v11ek%B>;@1a1EBpwciR6nenWCrLV=KItVeN`D#UzfAA{ zVpRT%QT-p9KL10*(?3TTdKVL;PYzIZQk7A)(596Y7&(EF7Z?SBq3zb)@Sn!{{lBw4 zJ7s6PcFMn+_dn=g&HW$rzchdE|JMAHIPO;i&cJ10Ag~XJ0A2&CKsMkFJOG9R6~F@E z2fzZB05(81pbl&Y{DDV+Jg^=Z58MDufD&K^@E#BcQh?FGB|sP01B3xDf!@Ftzzets z3^MG%FFt7};2hIW7z-}NIXaRZx8Nfu~4qyfx0p;i&-r+^}`5tsnn226ocU^eg(kOI~K zV}UDxKCmB%1l|CBfUSTJ@DLaQoB$RAKLG{QK!Fh>>5%D=?vU<~Hz99A4uTv6c?j|l z(V74v-Fz=ONES_J`~bnGcx{83Gvs z`3&+IWG~2GkeeVkL3%=ZLe@dnK@Nc&0(lhjC}bRD9OP%n&yX^ZGLUN_*Fw5Lx%C_obk1bP4-z+hk&z(xv5fGuzu z&;WJ-0l;H`KHVkD>%|Z$KF62}lEd0S1r*!~kW0{uBWz zpbx+X6aWc81rPyx0sp&(PIJ101>PN)y&{j_!0a1!_zjveo6Hi0R%n6NlULP(M= z#gb+)KmNKNNSvFje5-y+vU^NYWkPs^XSKGuF zhyfCTJfI3_0{+SToj=W+=1cRW`6&ThfaYNZ_yUPQ6+k;f;{TfjXk3_)cv8`Fu&LP) z^P$5mhK~?Dx7alc5fhh?l#-S~D=PF*?Ac36nIE9HifW&}{kUrC8k$<#{dETD>J8L4 zFf=kY8Dwo^JIc=9!O>~-80WF$TwLA8yL(KS=s9V!m!E$C)<#37hlYhmL`Fr&#LmEj z;B(^U#?Pbi_(jkurN=6{x+J}#X8G_W8qAm7 zJYi)Ngko+((JTd_SjAcBdkR7=v|k9p{W9D+R4P{yy(*4owW_JNUX_!HBHRb^xSh{H z@Ck@#SjEv^0)N9Qr|s0=h{x@GjKHaX!DaXlT@LBABNOQtUPgN0g_oTMQEo^$dCMht zR~ZtuVo;n{!DV+>nG!7?AI|g7$9zex3f?$xQvZBNEgsLNT*?!3D>YoK5}aefDg zw?5LN`Z3^fJ0AmZsvl!scvEj0#5yLUdY=tiAo<|B!}?^Jc3Feo_+=r z&N|8mlAt+N@Yg3CVHp*(JrH58n-mjyxk zD2D~{sRG43ffqhI1pc&s;r#H~;o#ojtC2tLKdVXLk}U8wl%xNwA%W{DUx)BE$Zs97 zUN4Svrt!E{(E@&nR@R*el-4G9=G$^3r^$jHzAu6}%XnwpTF;iUY-*7##8NG-#X^cnL2*lk5^&e}p^4 z<2G9l(fT9YVan0ehoP?r2w%$MwUE{uAA%p@w@>yF+CGSXl;1vEkJ9!*{4&ZBzYO}N z@sII%Eo3M!K12H(^v_h;ncj!LFzx@~!c|T@EZsN zRypzXW5(k)S!Uo=KYK58)}{JYK?b%UI-TF-Ep^>pB~FGPsRC!y{1t7o*j09eY7kzO z<_|7f<;3GsG=FfZD!U!jU!LXO^%>xpC*>6kD2B}2T?LLSjl${`yQ@S==KCyg%(wE^!e5LG z-(3YRL4=3)7gx`cAX|pYz+DoY1usdGYI_OglcJoK7o3(?nh2ZaBfK=(Vn)-E0bhdf zGGxsT8eW!igqH=U;W5V(qv^|$&0;itIkIIkm6#if(R}2I4KE*glEIUh^NG>?6yQ$d zE5Mz~9_S}D-yUSMFwM6I*)owzMYz-a6^S)3e?_v9Co$I)rse1fcN)JZ+^OtEgv~?5 z^D}yp&EIHyDS_J*m?kQb1YUb9^ZeDbl*#4~v_8G5Khp0_7Vz3ng>s~;0#5sn5p5sz z7bB8tqXKSB>kn>B*6_v~6Ivf|6Jo>jA57ze4<-wiRUy0?FFyJg;!gn|!i#T{H3ab~ zH|NE-$udWL%7^jd+hh$R3o@#}NAmN>p14#SRd7pw{@Ip@Pq`I8|7Rp6_@ z>G80N1Wph~`=!$3yTGg}l~`}dg8y2|(SB=*b(#nCx1Juq@Lx|tdH(5?!#|yb^8E97 zxAWNr zPW^ZD>SOA?n=Igsr};c?=aWws@WxXXJ)TiMR+Zf_T7D6FJcEl=Iq|q8J)XfOtL*kr ze>r+QgUeMp@wj3YN67}`i(=K{IaToQNjdy`RxR00c`wRQ-(FRTy#Ay_Ir@iERpK)0 zugv2%S;|$38I%(bXLsW1Iy+UY;9~Q1`%7^u@vUS z*3lY&CPsut8Rck4>}*Fl^8WFx?$*R^lpS$E@Uf#z$+!v5&cxNld9v{!BU9q)K8B1( z2zN&wXa=wjG9OF^8xdVb z<>FoUOJA6mI)0c^J#naVE$7HPxp$MZT$B&&Tw=LiX>sJe+f!Bd+OXI=GWUqwt&EPb zW2Pj@uP%8qu5zid=A*+Mw@)vWoDjWo{`*-zl`{@z^tAYOup!Y@{=8Pc@Pn)k+M(BG zy~{dvWAwY6Q=wT;9&5RnFLS7DExo;Z)w!*wWP-By#a-SesX3daH#vIX3;m=gyQB6b z&l-K}yY-0&g~i^b?s7@@R(zeaw=wwbc(;+6vL=W1BhMKZSgL)`ywIOr{6xC7^8BL7 zC#%;MjQAkYgpFn5=?-c6x1*P^o7@5}3CBc9i-!yt(Bp^U4g00yNBe7E)b=)4Q!#j> zd&cWW3a`CV^Ek$n}3@%nLwlH1NW9h&d>jT;E zoVPtcxt%exsTdR7yC7}Tm)e+BW2%iRJ%o3-MVwa}-+D*+`TFa!g+UWEg*V^P<;Hq0 zHI;5JyIyV*lNTm?q4q{u&r>^<-S=9%iAD_RyZKdWqjQ{N{{qLX=F*Dd!2wd5|= zM5?RQ&X+B_-uG40l{*XXy_|bJ>g^(zg&&Vc_nNUMq)m8t=7sHN7Y2wINqwyp%CwYI zaZpt-m55bIUMQsTG48%jy5@PS`Fk&!R8(G66tBz~?kpvneI}%j?Gc-iHI=u{I_o9` z{m34$X!7fCcZThau9?yZMjN=HG+>qYdUJSlF zKeH7GV=JgIwU4!P_d-<(wcGQ96B^!LP&VprCrFdpJq3;E{fpZ9h33L;Ys)VjwT~9W zeex4=1>p;Lc7FH>*c}96sQWlCeq1A-o$tZ7^TW6Q=;%Ow?PxivyEV1IP@UTFYy|7Z zXa|A)FyttKo$8Sn5t8c8Uf@pk^|g1#ST!06Em#2p9+OjMZ8zfsGg~ zVW}HQ35)42b6oaW3Zn{^z?ZPPrW5dI{?otP8m-Y}BL!g*#J)O$#R!Y?ENn)EZ6nCQ zXpWKWZ-0*7Vj-f=_NUjE{|OPe(RJ0oLBn?U1O3DF0P6+x1QY=}b}Iq$K<9W4E8lcZ z`2J(%^xxM^e=om|w6yy71x^`XK z`t%JOGd5*z-jbEQH77T3+x8thckRwEDBQDm-~OTl#Rp3c9WFg`wCvdN@`@9cC#z0X zpFVT;-1!R^FV$SWa`js6^&2;D-M&+IxBlM!2M-$>o0=aze)6>C+4C1KU%h_wwzciu z`w#6OKYjl4_1pI!KYw*QfBy4~_n+2`|ET}JFB9|Y|L^|)zo`GPM;|+uIDYEb1ndXu z0eh!U9RWZBum#u;Tm`&Ff9m)NIRi2U*b6iP%$QFdeSx8XhX?#2*8=+mya7_&`BO)3 z$Hxv!NE*f+GD2Wq3Rw!=16~8dWAR>7zzm>aM?=mB_6hi1f&2lfG44~xIDm$um<9WG zpc0UF!FvP&>OKi_5wIN)b>+Ja75~&R685LSGlW-h`_!QWi~u}<*}xhgAE*X8^SFgH zZiBx9CL=CuJl@j^Sq2P1d#Hhr0z84)z$)MX& zO9;EY>0?J5BnR#yzdm*tKv&AJ8v|CrcH}=3vIpAiG1}M-VZ#t-3fy9V<-oO{A3L%k z$HToG@)ghr>01JGfwjODpaoEx@TtQY2nG^>EkG%71$YYl0(wvU)Zqsl20Q>;U@%Yv z>;+B%c|a_17ib2)16{)nEOZ*E0?>1q-oF@l@yvf2o)&e6qpzGcG&V5q7gyrghd>jZT(UGv4FbU#1BTYDJ&`qR;-p{Qp#Au$nzBO6KBzR`rNi$lHQQNM+R$y-Q-xCw;RE+Im)NhrrE z!nm$N{;7oBwifB8p?+Afvr311I?~<*zL{`*vG7%e8)Mw9gfYTRg4(U9a}Hsua!~#} zB9xeiJhl;`b=wIk-c2}0`G}uSSVjdXZvpb&N7%Ca5%(y<9wkg$8R~PKFp1?T;|aoW zs|gD)&1AQoL0!)x>^boBXyc1$ry97|Ag?QMyNbN8BF|d1T`eKlxWp>H1%3x*ze8BQ zb%b4e7wO+6oVWgp3}dOb-dG3bL&MWo{yj>?4%>F%c?$ zLfA1+kxmN{!bTF(^bB=*fp{o54a)o$WoaeE>K*j^4r#q3?8Nsd(|eTl zJ^b1czMU|>9|?>5i7>^VQP!{EUkN+!8_M&Y5ZRxEvHC@XtU6E!jAF8EhFyz8PF9Fv zS#dBs6k%A!q71uOoMFjIGD5DB3}>ATL#*V$NZ} zJXJ=hR+V9K`!Yg_eHpfIKZe!Rj}bEBGNek4!K{#BCu%Ub@yBoy2QWxFqw@pM!F^p(`LeubruZAXavJD8p$xOBN1v_JOy!l7?#mg zhSTQD5Z7RY4?(#@Q05SX31wJ`p{OThOc=@##;|-N7^W!#^^0T}*GPuVjY8Zgq#KL6 z#xkTSp5a){XGrk^hN)eEawIcCvP)6-6h_E*HS$YkgsM`J=UT*Hi~6K7#CJWzB(8@& z9d+G+`fOlWwUAaD;g`V(-HnRB9!L>!e3+AII@il zW7WtA88snnGtz8ET2B}f^Aus9BCQsNSUqDn#m^a%_!4d}8Mf6Mh7;2Y-MwR&y!Q-Q z_mN>@KEeMh!;o(br|BE)7}t$Z#TXV#2rrB$vcfDDSA-?xE5c&Ain7?U5-g!S2^OnO zl0{tQSR5k-7D*h=Vv2{eI94NAgloy-)LOFGuGTD}Vrv#zXTxIhY*?%&8y3lPWHGgl zNY{zQ@^xZi{A01L#}uxBh#-yZ*cWb(fiS z&hzel_SvWR^S|$OlJ0#u?x=qWTPRb-gbMTRx& zHO%=wJo^lDUNPcOY*-!L40Eg-;#7iXzd@m>VPvAv*VC}NdKr}MWf;`Qu;lkKjBFpn z>V6t&d>--XYfz#e=mCZ$F~G3WK*Q`Fh_Hc#6$_ZWj>uN$W1>xRWK)-cE4fb3h4eb2zrt6_3{0G*SNf0K~^ zNrdwm(l-_9n`W3o(-80JhT-}OZVL=kd?Dhp2>HDa<+UIA{fA-14noHv_^EBNBx_p? z*JT!K<}!=P;k1}zms?E9%Po{&*J8@l#cb>biz#%Y#o}sUF*zH7ZeuYe+E~cd-eO9( zw^*DVEadKFG39jv?{VPc7Rq+VJgn4W4wYI=R0f@8@Ds35C zM?>cri#2a7^u1%TX5X`z6XPuy#}WUJEadzcavwwQCl(_=iLfVI%&sXGQ~nf-k)DdM zrorC~i^(wyI%iufj;}3N=NzQz8;do6fyESCfH1yAy1s*s4dMo0v z&0@*lX0e8LA&lJ?Q!;C@IQCdf?mZSu3Ygi0^zE}?oVJ*<`z_=;2$_RO+cD(xF~rqu zHOEoRRLyElSF=(QFNnm>wPNhGQs#WCIsXDHWiPT?oi(iFc3RD@I#z4`$>(n_)0tXB8!R&(lhE9Kv5wWRNauI5%FuLbCPt>)~#ka@sria%hrB->g|skT-l z-VQu3!thzGDIdZswi@YfR!Wyz4M)IAc|EMAP!Fp)*#mNYpzBGim7YS_&sZt`tksl$ z7V#crHRlbsnlghC&M>PfHVpn=L7GNb4cADk)iKIyWXD=5^tRQMc-u;@cdXXfJ65yf zT`Q$N#0xAR!{2PHIWya8$x9)e`Bo$UJF6x89o&~eZaLDw260%6^sl#CLhG&8ybaK^ z$!f~mWVOVAiA{*_W-B?jApEWHzYV-?pm$oWp`BJr?6#WIyOBRxt0kSan%sL4@BLO2 z{Q;eat(MGTg!>oVk3jAS{2a4dQpc>O^fAbh&2X7)*0|Y5c~+Y#W3^H2Vw>T(#AeF7 z#AeQ~X`}qBZKn9uHplm8jWX?Rrfhqgk>9~)Np`?<2b&S=XtQKH+9+OVGrNkQ`*E8!^SI6I z=x(#Py4$R&?szUmxTQ!#nayxNVY5;MX?YUydkVUrLU=C#``Ik1en|7HHZ#2j`B8}b zIK*Ls&6Jz~{ZkR%R2#Xb+sv`)keh=z&9PbBb8RMkp3n%*vsu#fz@Lx2n{Tr?7a%>0 z5#|ybxi{HNu}#ps*=BNYwozh-&63#xox32r3vtLZi!!GH}bEwn=;qh$?39Noekixk=^WWY&Y_n*v+XX zcEfoS=$q}<B>IwBsO?WR~~#PLzMKZ-a!20f3#t*hM<>Iz<0 zq_L;nl2QVi3Z3$!?AhL6}3KcPMZ;aJb!YzhcMQ%x=!SVyE;ZyEXq~;AeKL z`*SB)`xSJ|wwpte?WLY+R61Z=%1l?rQMQUX~&$@Zp!`!_w9(w4!b$I!%o>fcFa5N zSo(7q%z3{+?<$13n#hT@ zZr)nt(_w^IhlmM-hi(2nRdZ36seP;ULvzV69;>nPN7R zk+GR9F}ul>LRE`bGnq2gOh!J|qsba3tNRkHX)eLqWnAgIszR8-n5%M=;ZPvhKO*Oz8=02>g?uUC@lR4H7>!ycHMxqnK z_!s;?V#1|OEMl+@bYUIHYrsqy{6r8|#AJ5&Fj3+SlZD=d{9ABGB9aN{c^mF;o6OF4 zO{O^3ZrO1rE3et|CL-*K2oGyF`UrkM27ZG0C9!@=B2Hfdzcd++$#|Xuzf(*`7U-C2 zGRLPPEz`iCZZhRf2hPU2ErqyzZ8AINAl`FL*8F)UiZ3*oQwyPE5z>owpz~Y!{nli~ zi!_)6Aw5e>Cg&29Ik5zB{t@x~$%K6k==<4Zb*w->tTbUx1pL)x%B(R_cB9GS+yvYX zf4iXnFQoSfo{yL;F<|lt{2qty<0dP%o+xQCTeDU(xi2&usSC08sQ5WzCiU!yX|5xt zo2esa5k8N!XtgmkQ-$ai6;=`CEjxDCJAsbanL?i>sL%Bsyq$-iBc@Nh95KBe=!ofa zBS(zSkk}nfSs|Y_G0o>pjC|(A$mdUteD1_}vEU_wH3fN(likq;D6B1ru0YXF!8(GM z3tk~uSMW-~s|2qWtS5Ml;I)F+30^OVtw{VFvHF5H3c3XK#k>al>=waW1#c7Nb6s}7LlE1UioQ$GE!a%3xnK*ymV(@6vYxvI?-9ILu(jZQ zg7*vRb6!X60ioLpwiC<~#Fi+2j#zua4uTy89}-0OjGrUcSrFT%isr7G`FtkJ_^4nP z!N&x<3Zfgw&k@TPED$UdEE4nz`UHywy9uIu$IlV-3#P|%jdkFDCI1{TbomNP1Tjw1qDNbPY8wuF(lyUh(!g<1u;b6=ZN(b>?PP+5W@z3j@XlePYFIP_>ADQf-%A8 z1fLh|EBJz7Kf(TjFA5G294I(QaIoM@f1i1cY@ywE*4xOxKuDL_=Dh&fK%IQ}foP(wb zomL&1gXRgHH%QAb5*lY@_&Mljq49!{qBjfe7JAyHWTEYb8}pla7H-kW{YA|x$yJ&J4N6p zYiRxe;Zq&W|4!u((HP;UZ_xZs4Yd43;k!JVe}P%^r|0w+X#PgwFBZPrtNC3-|2p9( zLYlwM(0cX@KNb}|7i)f%MmoKrp_)HI~qUUn*H8g*I6|Ltr;V0^7{#hJt{5}$X@;c2|7Yo6k zo8vdv{K0l5PAi4)zEAV-Ia~903qRgj^V^HO(OBnCwyWk(7y0VKPnK%_(L1!BdO7|? z&Hqr+d%N)SKi2%`M1O~z{x3EEGp&Y-b9yFg{s$LnhbMD-7Hj_2OEiC&@bk84{=Hmm z_)QRgVxQ*MV!&^j@KeV%zxCCc|DEt1S93z0)Kki3gYe@`bOsEPd^jY0XA3R=qD||m z+C=ADvbE;lEa|;k_}M(oUnA+dUHIv4n!lmG*3(w_sgauBrLZ zRfl^(_{mn9|D9&z?KGV~vAZ?jCGoE#{A3%=zh#v6&{X)@jherJr{(zN2|smM^Q%jJ zD;9p{h~{4``kxX$89ZTf(i-89&B>pk`9U{pCz>w&y!$kNm!xa4@ZEWuKVI^AjqtPi zn!lyK*0U$4f0*X~cCO}Exmo8!`fbg}(Te)j5k9@I`JYI-ZV`U+L(Nys5%)`KvX5v-I<`g`bzv{D`!>Uxc6jQ}e5e{$0Y) zCzjn?M$TQ$GG4wkkFKOy|O690xWze=B}*MAawp-P5&iyN@&xaI(~Wkw0qktG@TLJF7EL^w7Wy- zjL_AEb|290wR7@9Unz7}=<9RtY6Ao7RiRynwEx_CB&0Sn9MoLgabATV);~FYLcgKX z<77wmdtcFRp-zW<@$VBX6D${eQZObsP;i7o*J%o^Zpp8@+yESOme4L$F&%Wi&}pG- z3QbpO`OAgQ3VpTEc~@)q8-&LB8T6kX{>}BJeqE#GzsTvsIUC34YoT4&X?l^+Nq(UV z?my(*asI~is+>FSeKMV^e`%pNi@T$dcHbj(T{OC5ez=v6}J<6bAHFC%nJ=pk22evZ-Z zo5el;x~6vuofLX>PJXO*-zV-Vp>y@u^@euOt;caziSYk@{P`SH<-h22PttTQz6qgo z;pgGbDa(J`O2;4PnTlR2bp9ur&V^4n<7D~gE|>HQUHvLerxbm9{8os*)q?93I-yJd zHVA*SU{6(E&YUyVyIbqOUa+BH6Tw>rwO$8pm;7xe{8oZ(1v?0K5^UK*>)#{({w4g! z1oH($QjfX`y;ZCFR_LtI^@Vn>*Z!Ld z9TNJ^oV?I2gideJ^7jbs*r@6IbM8X76FRm@yLS-UwOP{-3!N3Zi_p&BwR@4!Zrq9H z`Wz5CBy?ElgwQ>OP79rDpR`r`-*FG;cV+(XK84qxGL5c(&lVf)@&2ELcmhj^I^-*9qPz*jTWs;O&BL!B&E; z1s@RXDEP48qk>%p3j~V=1A-C3rv&>74iZSy2$*2tRu!PkbHp zozQOF#b-L5qtDUwFG9zKu64D}-;B_|iF=+y%Wuia3%y(Dw9p5HcAl%{=>e@TCbU&( zx7y%5eLUDG?pp-2f(HbT3u?Wm``?tO!%G+G@V5y~K27fyIxF=4oP4o%KP+@cXnIiV z%LcW(qhfzm({^!B^w9K~LZ^iuCF5bDr*=PA+>=6ID0IBHcCRJ0yN{;p2<=b{90y%3 zbVlgwg--O-@=bDdf2L2*pEVEZ^tkap0@sI)LQ_i9IsI9obNXUmYxi9F=g-mf_ME=C zn$8NH{D$e%!yndOho2iy4|LM>%6hyGa?mlMUzU6uCG(ZsIGvNTcGmvRQs{(V{d?zO zN#9x>pAUp~Wi*|u503Sk&Xr&O22Fo1@_CyyJyOx`ochyn%p*FycLf&-ZV@yd)$Y{< zFBZH~@J7K01-lA{1)mpuSMX!OnS#p%{}42~=F+Ik~^(4HqZL z@}6Q#nRd{5A@=8l(Z6IT-WbDqt6-)x)0{&6I}p&}oUQ!fywk%QLO8z_Oe(CDkB!j! z;-fSs6uR)LB5}S{=pCuj=>$jra(by5$Jjxq>UI9A_T3)PhVKif&`#T|NZ9klahoqwnDo2rdo2Zcl~Cx3_Vv%;rGw4Rp2 z&lB4981vmQfB#Fyb+}&&&K8^}xbzfyxzMWwHwtbQJSccX&@SmZOYovo=u3sJBiKOj zCPCXPI)3qdoxY@CO6qOOtN9thtYBWT=4S;R-88Ms*;$bzOC-O3ROmV_lYSQW)q)v? zd8f&p%1Bn@gM|30?EhmrvzX)U{`dZtu)DLueZUxqk^{AIXzB%20{N)Z!qm5yeg}H zP7M^B%@P=g1T*LB{wygp{<)!Y57pF2muk$4d!EoCLDyu_Cv-wEmD88f?hZj`4r^(> zE`_JpC%3rg*Je2o1)ZDQI+x{>&-*Q_tw|GJ;vbe>cA5;-4E|-i_#bkjt;! z{J<5^dUNxGdLrubykee`FZr93&q?f^!us*9i{xKIFed59mm14MyIsi|5)AsKOR-S#Qx*-j9$z2 zwz8kWC*ai2vFzmjFfDYhKTPEMNrlde@GJVmpS6G23XRT{8tE5}8NvUmKXj>n(Osec z)Q8k6(YKnhG95X&;p=q2^}1j?HBWR6;n0K6M ztnb9f8>*kdnoivR@75Kkr^lVs`@gZSK$P4jSTQG2p-RX9>v-iO^pk(QuD~zG@SGDC ze!P-gwL#}I^VzHunj1QsjY4zp$7YMrx-^J(3C&vEF#8nkpyz+r}m=@e5xKFUkRvlg~!G?nO2zC(+ z3l0!`MeqZ`uLV~K?iRFe6a9jX1n(E@Dp)93F4$WzcW?GZp@#_$7aSw_hTwaGp9x;v zLWe(H=sAM(1iu$tD!4*$li)7Ftl(k6BZAiLTK}1X^{&(O1wz-#@dfwGc~t|UZxw7Q z_<&$1L62ZW@F~HU1;+@E7yLwUn&1+_)q)!Zw+ikPH1E*yK1=Wt!McJ?1ltI95PV$l z3Bdt^!vx0*P7<7>@bv!X4Aowpv4y-$z_0W=jt~DogMWVilLPcvzCB?RNbcdHjy5f8zpSX77}6Zr7N&L-@J$ zZxMZ4HM+NJbcug_lM)QnAHk%c`bazYu{XqbbEt3!N|eleu)QE zhi}sSOYd_fx-z=(rC_4kFy|;&>@+Ao*B^FwD{gJrId{c?l~C?_K7T%FnZDEV{HmZT z_ru-&Euhg}1>K`Ho&HT@-Wlu@I#j$LG)}^OPhM(3khBr)<5c19|m(Q z8@}mmt7|12?t9uWw%d;2A8_H@zD8S^Fbw{~vN0b9_wbCSb~2(c<6u%S_y($R2nKg! zjC)~+*n!`k4K7z@@TyiFK!#o8u4(3Og12B#8 zvC{y|M`w|BFU%$QCn$IFKSF`QM^LTrz~H+G)}LYa!`Sdq)N5hzk5a6~FnwU+FdxAz zgjox-AEwGV&;?TurYX$5=a8i%FaXmZW;jd&CJ8eGCJpl|%nlg57jLcNAnTccdL=>ijliNlP8nGUn?e6p>CF<(G7d@Id%Hw@~uZPo?2ON@UyQyZo+%p)*^U?#$( zVfNxbQakY9r=2iOVcNo!z=SU%6TVVueF=6aZ>Fpt1I z4$}kXd6+oN7?_DLlVRq;EQ85ZCyTiTSucXA2h$0r5GD-sJWL#BBFto%?_oB=9DuQ1 zjJU$og=q|PH_XE@B``0*jD`6KW(LgnFl%9U!Qj7QTOBZUVQz=XgUN^K1M?Ehn=nb3 zIWRxMtcTePW3Guf!dwN@6y`pdE-wu84fcJW-82ln4e)b!yLhX-mZEnk*7tA z7UABZC_i}cABg!M5m!EX?)C=?N>6084){-$^*j{v7DRoJxVu?6T+q8&DC7%xI~A0c zSMpkfeJ6@&@`3VbL1Ag7&^^9ri(q+xb!$yvC^gNZtpi?PFXlHd4|q#`ErOxmt$O*2 zw1S7)x2bf3p9c#30WHVumIcv*%HWxTNb}xNUtTnva|fr5FVHPoq8R?7s6QAe2=_k0 zTLllI9eam-ty`Wf3U)<`Tb?MaxUGxx!oG-4C+#E+dEsEl7moIBHIl=;2PZtpAbYM~aT!HCMj6Id# z1-f+DK?TYs*(~6d4D$OTcZY*z?R}A8dALYLzCw~6DiyW&g>+dIa4B<4D+F^{c4CMf zI<%22<|jlc&*uww43|exO_`(O(jpj$`g&;&lF_`pxY!r=dE0X-`THO?kOaT2uUjzc zM?>(o@P|r#sD7vNk(y|*C|KIb7mlddi9mT-p)cH_JQNCsD||zzeqJm=x0_i5b&v5pA%{o;HD|@)FDBxb-TOE14R`iXGP0k8EQ}4 zf-)TtgqX|CL#sX|MGq998UMWt*Fo*l!587ww+rbK0<&}2&pk{BU(pG%=h8rBEeqy? zKh2fv$lv*D6AW}~>5CMF{kb4c_Noe%Ys23uKtbku0K})Y7tPuqMMMyplXCV1w+ely zNuXx4&j$*kMI~r^DzdG?Y+c4ht;qX*N_neZQC}E6@u~F}amWjn`irEuLS`vns*0-m zT3!fOD5+$(>VeK#7r(Da2_j7=M6IH~h3>y`mQFh7h$3$mC@KktPtd?sMEw4(bGtw( z;^S%QD=sK6jkYfj_}T=E3b?bvuc)MZB--8MEeQAII^ppY_VI;-{GeG7@D+9U6ni}p zU(^%q;R_d+279u*FB}e{Re3yR1(EJyXjRX?vZ7FL*2+{Qgg!1>TtSAr`H;=vM+=}6 zLZ0FRKZd&#Io-+&!e~Cs@*;?kJo*EZu>6}qG069SF~5lL?I9#1rgmaHC2 zQ4t?6W4}m>dMGGVdLwQ+GQM6&WwD4B7X_lo<6^HC zEcOM9L5cU`;?nX6M&e?W3_>c#5D-A=ql}BXGl54H<>EjYw;GV5MVBn-PZZmZqrOs(Gy}Vq2Tq7l zPu)Qw%9ZLtAR27P^~^~|koXEYCW2f$ zAj*XhEcO!6MFTf21H9g-mx$t+@PAH^S2TPG+_(=R`uR zc`%4N5kUJ#zJcbxL=V)J^BeA(P@S5i=^)||;*L>G0#9dG`chM(69v#!G>b;VZ3+r~ z95%=nr79~b9&^2{cGaDu>L#W4)qK^9w(*y7uL3H#|~}Ty$G2S_UWjHrDF+~sU$>v$hBzQ z2CgQ^6m&YM!mw3FIQrg4``jXN`wk3L=rBf&hCw zscA;g)1sSG8LXb!FL<2sjGV8GD!2H7OMo$gkKgixw_Hm|7X*%a;*!R*^mKSaSEM+B z6N3xn^apZ!Lxo}VBap9%LM|ZiltYv|T@cZr76eLQ7$?M~oF96Zp=4O5cLX((Q;r92 z(Lhuf@}SR$rMlv1Sx9$~QH*_hepk*TA$iIJ=qk_|q0dsY$x%Itsf=mRf3O; zU7z9+2!@C8RRSYXC0Xp7qG@b7jZO^@jTg@ zVd8N>%_7un3yCv(XtXIz{4XTq?_LNW>G$w2Zz=T-+p%$1!#7vlKTTYaF*BKY3KFQ8 z*VBGeG>A5cS-gk(o8fWFx$xql5oW)agQd^GjLkk5+Oo6QiThYozJ+E~E?UBlQ`s@C z?BuU3g5hhsIoKUid*GhxLAv5nOWt_CNqYlgZLLYVGP>+j7R}`mca%Yr5LTT zGzmmKD8nG~uv>(7nNaDcnWK>&MIL$?|BEj>zBX%|ga7kO*_5*9UWVuRaBPB5W*27} z|5Il4S&>LVHy`ab%Dhb~s6U`0HHSSU=3NHS1{E%2ER8Cj6BaUi{oQ<#sE7VCF#MN! zq8Kb_Joq{fJj|r62D+Z8&qFB-^5R8~L3S3a70)L{WRImnQNxOm4#H#nW#w@zN1dlO zoW&EZXak;50cJf(E16M0ya?u~MItrX%C-0+PVtH1MRJQS`pv2Wt7QDnKEA#RJE`1h z_Vjr%vGeedPHT+9a(^l2r^x9IMiH&FcxkcKAMwymYk9;MR;7YvQ^bSW8!x_Jv602= zrH!Ui`pk%8Dq6xKxi#4eqdZ!IifKc_)^X`)Hgmo3sw7ZfyDD2B;s07uVjH`7Xqde` zT&fG*NAJQR0|%6oa#nMp8Fp23=D;ofm#R|x*ej0(w9>A7g|%=@?of`~*^a5_^!9Vj z4e2j?h@Pv0(%Ho>@!jkh0~jV5uU0AMNyO__$jpuV#VSbm+bp@0CA0X)Gsw52{G9sh zTob0L^c_Tb!2hNSPr!a)*@Nt!gb!W+tDv3H9(KSkBpi;hb7BBLClCR$_>t8woYCDM zqCsbrmSc_{KOj~4q{DlWv2!!t;$X+I}1KG!g;` z(5SN`+})!P@G)egfv`{V6g#^>3!lX8e>OTmnhu4j#VXU5upJwHA(SJngR4O&rrjq5 z{xXh4QWKQaA6IaeAn{zgKdlz|yI`k4JTpp-HDh>`IZ0Qh+TTQJb2T!2^jbB{m1t(Q zNU4W*aF8Q7$Sl4kis-$?W#J8Zid3IU6VD0wd*uk6K-h&p>r5}#yBTMdQ2K0@cTPD?J_qeqRi(rS9iV>8Cv1ap`k039r=<(;m|0JagHs=Vo8(2tG?4L%o%rH{@n zr-kQ|;h`VS;r83tfzfI?e5baliOgg*$_=TDMw!P^$xS%^Jl7Kl>d3{;%Q5?(hjcv0 zvyQ}(^I>OVIE*v6uJSzKv-3)WJf?fF)SG%<&w|qKiaiUSQd8?dJo|&Pr`17((IxLZ zkDJXtcAmiw>CfO`$&GElpN9_X@OkJKuxZr)eBD*ObUqsETtwFF=NSMEKcAQMpM$$l zm12A#&!A%KICAl{ve&8#L#xj}sj>bBFR33{Ahwb11fDUsU~NavSKY(&7f9g_xBv;A zuSAud{DDPLEoj08MI}7cO}ZdbUPzxqF1DHFQkytTKeryN$(LRrbN}Tm0MAJ2Y8E)L zX=N`!D@JJ_fJ|x)%Vh8m36Y4O)HBEK3}o5w=NHk?3%q_T8NyxpJrry~~x zd_HdkdkVbMFycbBj2d&Hs``lw)zW4Bg$Q{8>q|i^I$`w77pf#@FO;+%fJjUQAK#(` zx3Znx$#!D*`6j&vdha4``xw#bt&4(KV|{oLN@WMjq_aw%Kg(;y>YPPJU*x4}7x}T3 zLW?d66=1GFOE1zL)^hmE{=z=uzq6f5b2U^6c&>Vox3N5ubuU)ux;vygVxhYE*glp| zs@%@tnap~5HM6=pW{_R8xz))~o$sgB%L>p-1Or9oVNCs_G^Kik7C~EluL^e++c6Xh zvgTLy3>zs>qsQ^;(#(Bc>Q@7$T1gJBQHH%ff2b5EIWO1X@_VfYGC?U#%;jlkTqQ5N zpOvPU)rFn>Lj^Mi-K^m&!*q#fCp&7O$K6|ld+|fikXgoUEWQvK&eQ%i_9{NAW>!nnGuMp;2`56@*A(W)9JR>n*X zRSP%Qh|m`oa|cYTFD?(US2~QCWPahqW(U=Po!L;=BZVu z0DI}(+FX}ZYCov0GV+t!sy%t=>)IjS>(-6q=h{+Rey!aLOLz3Dn1Zk8V3zW*5&wnl z*a99^O4YD{sVN_P&b>^}5f)vBM0}%$p80Gi)pG{Vs2)(Y|1u1?+%b9SPl(2pP+AEk z)pLqP4K&ly&PX}7Ba3nRMsGQ>mG7nZoQQ$;!BTd;m$l_GFL#W)F7s2&soO%>r{rI8 zVp#jo84X4YN<9+MZ=B@;-7|g%ZOPRfF`m8r;AADQ)Zwl`rSVs`Gpkfmeo`D2%QSL8 zji|HhRL1WccuW1vLMi1r^+7E>$CfJ|4P@qJMYQxXWDcwH(S$l&s;FaXEj+0XItt0$&+D9& z6Vng~eOHHjr*|(uDL*D%p39HVFYoCuEyeDf%DZWoTWBT5d0r=mJv94rwXyf<6^I$Q zNGPsJApcgdomz>7vY|?0@fDSE`00wA>R;e3^|i`GWv6CyCaS~w7wYPYGpH`KfsJfa zcAP~FUBYkIRn>4pT|F_G1krSgMN@NBCe3ASYJ2;~x+*7DLLxIyNx%*5LOmxiG2)Tk zOUJG#qIg|3YyG^g%E|BRN>0++x|J!|g~;(BFkmzx^?uFfh zZnWYmwN&v0(HUT02S<#w<|^*yb3-bh4{x{%dGi(TbtINlM;_{(j*(aM)NJh4$ln?4 zHdQ6BsFdEh8d-zW?_g;UwBOIJ#ttY=g;-)@b=2Bfc*?G452>}v&Qv!S(}t@9v=uI~ zHO$NW%657q+evL}zIslp=aha{n&N$t9?W08#Wbm&Z0~+vPjzv$`)XBkN3T|uqi;Q4 zBoC~|YvW<{_=rAAuhxUj?APnzjzTHDU9X&-C)Ddf)9NAGgLwj*-ipZU9YBg-1A2#w z;uf~!zav-B8F^{^HK-r-(KV{heg?7RCY1&Vz{~H|O#%7|+{8{r?_oQ(S3Kin0A0(5 zYl@&qKX1Lps}e)I;U}gwZDv0S4zLObIPx0g?KLWei&faaTvO7(Lw{VOQv2GqI)!gs zixhfrm=mFQujP%K@9LFcVoD!e%Tt%FR|QMxm#cdRX#KS)m3MfbE*$FEgw zw%>JNkFJd(9E_*N6@e^NR;3l6UT=%|9VKNAQRIsHsR=y zHiHvWlb+Z%wfdUHQ=j-Ewi9ci$?l==udj&Oj_YMeR>?hdJtkv59C_ln6`jWQJoxhT zj9$1wxevM_;5j7*@f(nr2#F`{H1Y;@q()o7j3@B_&MEU2+i5&wNxpmS6_8`Y9>SD;hM^}hl2Naw>L#-9_Ud6xigLp=m2_IeZA32-`4LL zp;avX8>ch2sfMW`?FF6Q%5-W=4U?xQt|wr1&V7}?yo{c|5pp|J38E9A0XM3Oo&Yz# ziT$L1*KW8*G5JP4ftkUMDuC2Z7RhGW&g@d+yV*{_CJQ&5bvLSHZn{yr5O)q>}9;n_~phR z&XhfL@WzlIo$9MD%pNDWFfMS-@X*Hks8{rr3(4%Os?l>?fiuTdY!4%z7;AL*H$)#Q zywV`VtGm$+kjgjMyD;7g*rV)Kt73z7(#VFWG4WX)#CNxyXGoLp^ ze$8ap_yRr?$;JEihANNWZdi(WHO*|Ock{n%sCM&zfT!48vTjdVj@0M}GsuG`tooN&E6 z&ZlhU5n9)Xr&gO-!6+pH8@q17Xakpvo^OmC(MNx1V*?r^Z7J@SQ!1>~Tz<~J!69Pm zgeLxZW8NX32DwCEc1w(9J9$VYXb2}LJ(v@uH=aB#+O=)lszpcotuc@9Ud+959HdTl ze&?WOvgZtLM#9EjM{r(bJMltIw3u;C@HBzl(!&sAYY}d?mEstlMm14w_su3{d_ihr z6Yhh#{UUl_G~rGBhBO_1ldrL^_()Ez@{rXY4m2S%wrf*OB3Pas0a1YCH5%T;M=#xk z5Lc?CtW$AX%^SG9S*54$<8R`9+K+Bh`Kr3W&)_5b4$CHxNeJyPwzFHg+H8bdW(&%^ z#7o<5B1eHb2Kcy9QIHll!l6(j+*&{pcxY(jVt+Ui)w8P!oKw8Mz~KT-YFt9I8{?)5 zrZ()ImNqWqdk0=x-k5K#(H|V^-dT$$l8eK4_wAZ_>RP z#;y?UN9!#d^EP%tI zy*NJP6=bd$hBwu%GfbnJ>auF;r({!%X^Wf6J~#?%6})CvUW{Qgc5_ild7!(8GEK?e z09sH!AJs3Q11=xUZctWGgg$yz1Fm^5;217Ku|~X~`|2&o>eso>#m2IocvCf~ueg6n zzQKcHOmzm?SFhycU?T~`745qvNQdDw6XWgL#CI5kEV*jB^A;~1zXh8cT%`iI@`Iji z*sYv{n5<$J;iXq^h1Lb!8GGpUTh%bM2&^P-7DlD#EJsiBIR|+c-DN!=dtb4#<@ir8a zN_l$al^pPJ40%Sg4lP=@))VEWw-pp(o>-3I6DLWu{5F3;T^%aqgNN0(k=2W{hyd$aL zc~GFAZ^z_9T_mQdw->3gY}W1E`g!F&?{?l8pl@%-cH*zML)%17GjB3@X!q^tJb53B z5BefB3P;Kr60dDGLJ~reT`kFh`0silI z@N6KWwwI7-IaU7QjxyQ_@#Jf~R*Y{@X&H@w>ZQ&z(RoK{?4A1bRjp~>xf4=bSSq%O z?ZjC2mmQ*fzX*RgBf<49-3^Vrvxwfm6LC;_=G@66gL+(eC$6vJ33DbT8KEV2s;S4a zJGshXZ>1V5)n@}vm2)54e_9=t1zVH;;nbQB&la6)?Ey+UA=J16j_TOFBusIR-c z6su?tjdSay=5|9S-&I5l@8a%VPXlS)UGlK$u9LSSd5atuqa(EaF5d9r1p9i>p1age z2TgOMhrwC4nnt^MpV8A3w;7PScblQU(%d_+UwsEw?&u}BU`i-?7w<^Y2hC85s*zk=6x}}-Sg?2S7m#6(uls(Q{nMq~Gm7RjkqaW|C zecBv(kHfW6n$jEt16q$BW4XsFNA;%nnyZbfqFw>|uz4xXY>w%L91`Q4Qs*2|J`^E^Lh)Ela3C3)FQVpI==ECM zz}%J?kq)b8t?Sd4Wf%Ykx5CB*z15O$7!(E3PUy8((5|+V6H~dPz~#k?jk~W}72(EQ zZbkexBoj;3V(1e!j2&e=%M&c4peLp|{%$=Q)Am*}+1k@eb|mN=JH)6CKLJQPw7Q{gH5CyQfD{_Y+w=C)|*zk!{G78KK;mzg>jMCcGW$^IO8 zX8UC(404!IAnZZ+lC32V^ncy0uHbdXK5R$cCVTFl_Pm(yh$~zX>_~D9BlO}u9q9La zl>0HnfR||$zZWssuUgNSd}12l1Jkf4R9@H}x0g5Ei`ybwA(Hu+cZ8CYc+V&lq5iFT zu0t=iMwWnw*nR{TUi0I`t95Q}ooKBp?0A+s%-jC)18ishQk(xgefz#OZ{_?5fvi4s zI0z>Tt6}{Sn%^4dGb>x8t{{JYZ_V~j2qz}iF=M+Kvkhi>Xdj30CRd^C05y@u3S6a| z-oFo}&$sH;N}0FZKfVux9N*a4e0MjDRd3(xr``AR9kmhnVIq1Tl*c)nvxC@<4RLa^ zN_pwA=e|O`z!IT@_myCYd=!%LqpD6Ezk(BWjB`)lHh%klebsov{ivhJk-qoi`l`Ai z`TG4mabJZd-H#ko>+&RQbk#muc|Z2V*Mgr?oCY^x@pXTrhS-3mEV#*+IXbEFY{%bY zJ2Aqk54-qM)$leD8KXo-v7J`p@pqN@IAy=-G<(X>H0i50JRs;>BVV(>*O5j(PhZd` z>M2+CQcoU#W5?m_Is1xIF@XiSCwk$5U`QRbp%vq9;-Cl6tJ3dnf>=rFqB_KAww(vMjtq;cVwDqmFsNnk2;e0ry zKSd{D#nk4&{c1whzYV6bb06USI{LnCG~64J)5FAXZIOJMeLvC)f2rrW!lf~f!MX{T z9Y?prFsXJa-)e`N^AfL-GsD~uFbx}*C-(*MJP~h6;Tl37@<`v-Q+D>p3rrZpvtXxx!tsb&=Z9%qo*s%0N?ZiVbK8QGc%5lhk#&OUSO7vJfxBKEj*myI7d!FeKOm0`*^mvsAc%@OF z7}16Y)uHcJNW^zAw}^H>sP5Yy2P-p~^?ImZdv&jDczY1I$b?(1dOK{*gXktkwMWcx z2LxH6Zi47~@>P3P!M=uL@-KEwAG^X-$WwroU}X*~))D0k?HNJ`uTVQNYvGUQ$+W$_ z%sTe8=g#OL!p5OCEofhg%iu>@?GElsGt1ddA7eYahV2w=qyx7}{oUy64%o;n!^>{G zKxM{)4v^l)5?nKZ{HxrptIIsnctgKWj6hNT@<4lVDf@Axc!> z=`*LVIuui)V<~;rkq`HDYCQBi0!n98vgfPd5D+I`b^>NSq{5i@5Q=vnE|bZOh#p6GOHvjr$f(o!d77AF6)3!$S7nXvS2J{6i>1PzETgrfWh6)N1fC> z05_i_^ciFmD_Nh1rgq|!Sj^k}xPk|Ma*v8J;>9iEDsyEB*_>pA4zPl?ERyZZWs`hC z1u1)BZ*^Abd#^L%zL!Jc5tTmdtTt(piM;;glQo(JiL@GgNBzaChSUnB61KG69i64^ z?uBG_7rUl+T~#^h9P}_E`I`zt&o$!@SElCehtX`+NEo8coh6MPI@B38YyvzcR6hA= z*2DU`CDt#jj`R8KQ;yv~>A*`+zF_uchawvMkk^ND$mQD9hkW=yUBxuC6DlvQMLwfj zInt>+pNokUjqV(xd7b4#d8TuOG7n=Jt6sOuBGAkixHv=y@RWQ}bz*8~Gu>Ye>Cds9 zfSns(pL;})uP;7A7QMRO{VxxuE2w|^Ey_RsrMvgP{)GiR4S57xp~XIWubq!Z=ata7 z2lc8o^&oeT@3jxn+Z}K*V$;8H%JJ4Ch|FNsvA?7`b{|ea_CA9BxI=J>4aVU=9pk4T z)X6c105bTs9D38m`gOtDp;%qsDWOo1^aeCN?H?jDco0?n8fL+3!&93P`rn^>r#F>t3IrgdH9pnMZ# zv#WTgBK4ZuJK@O|Z)gS8$=LBOav8SYV~`t!O*d;1-^RrimQudwOFwnNeJ@==zjV>l z&Fx*VuQB*BtZCGp;s%}uA)H;%1Zaq@;#j3(mm?;=a3MM^bSHcpm$pJ48!=JZ%>li~ zgGKUFw&So>m*~NqbYxeR{;^$=5Uf_?UDXWnovzS%SS`tCb4!iQP`zl8deduB*WA#) zv@520sJ35p?ar_D%+3>Q)#e+ZX`7ZvrSrI3jaXV=W9O6GI6(?<~1 zDyUpo-n~^+OrI91uSh58FmxwpDXnu< z2w$_ETA=KOY^PJ|`CIk8gzfB7wv%bZw5kq&t`|K%R-AmKk8yI5SLNVRFV9vqYq=L) zM>ij>_HuUq=Ea5>s@?BiJyStfg&7LJb+pr~qP)*5(eolQU#UQ0W5++2d+U8FwOf2> zvfH@%CVt9;J9<}ozF2MT4JhW;%w7|)F*e|3N_qqDCHAIw;gnQP87(lA#Zt;n&OFsoq-uwix{ueNc>`{WO(dfTUUcjQi4fDG@uQ#XLJe%%llK3ReQR&YG{1wju^)!6TQ-7w^J!z=|m3LmoE8kUPqWjmvuQ)}VJ!UGo? zw%R`O^DK!E=k$ro;%<1)i_Zam!f8Mee=>sim`)M;1#fhri(iKzQs1K9Vmkqm?S{>* zNX1Jilq^A@>p1A-LR2lhIKWf#CH&$qzXZ1o&T(WiRAe|E;jp?KyR)Px?SoTlBm2y% zsK+O>Kw}!}Z%QNla7(BJDLbyJaO`ar&JQf7mOqpIXxX?>gm?aC_%UqLIDccB2>(ex zHeH}2JEj`PY#iJ1>D>1C+|Gks578EEqxGa+el!{Ma6M^1%g<%W#5}e$%8q}-&*}MW zXO*2?1UDJq?;)!Yzop75~xQg_+URd*0+cz1}s#A0b>#|I+|jE3}i_r^4>dsCX- zoz5qe7H%4k&yTKM4-wcZ)v4+U{rHU?Dy?fqvz<{^)l z)2Qw`p5JuG7Ax<-tKoJ5UZCV_Wtv)CP*#GoeEwcXZrhrEDu|*I4=Ut*q@NJe>}t-e z*s5wKbVX}QQIbDY!@Z7R8D`D6d{Jsp_ELN&CXH*Vl)x=K%3KU9R>M>pprK{FYQQi} z$4fc$UMP#=1OS&6y3xQg9luw~kPXvt%4F8xX26BaGOSgw%+;R(h)@a=nT#2cNbTUL zBsZ$4YymsF=7gy1DnkTnBkW{dSaF;T;Syq5h~G>eguA8cfN_|9HyK+rBLbNJqs$NE z;vr7z3-B6G0KV?vxYuVTH}cbs9NwRNfh2iET|L3~We^+1iSJcM+THDPWERz zdw_5Js5`;~f^xBNXb>6(D%TfynuIZTJhBBBU*M1$q8#4lC2PP-v+8}tgb+PAoNHwB7q! z%GlU`&fe@^TqVL=IhJ_h9bT+@lbS4QGMG%e;Av z{Zgq4qoNo@FiUzf3W--)B0WJVQd>^3UHqJRnU!J*s``}g@gWWR5#sUb?3kLuj#9I? z;=R~X+ReJgDlLC1kpWz;S=gxS>Q=yTzLGhr9AYnEbGm@u#AB)-Pj&UY{iSlApGIj? zd9JEYg+yW?>q$*gIzOpx!hD@F;Ad165Ub7Q-F+CL_Lk%78jXwQs{VAoY7A|uD37!{ z;h21);?qi;FaLos)b&HjlKxm<%qq|A3a%>eSwM#nO7aDjq9H1DWha)ZQ$ajeX8E=r za(^z{1N+kQys}5JJgv<+Z|s3hfgafE6o-$)Igu~0(}Qtje6H;FU=O-)l#jr0+p$Lv z8r&0QG)Zkdjbl6U9@|;YJ=AXQEV4awxptr@x;@!s*oX_K$fIqzv~&b2vTDmM^F`&B z8%^lNjZ~d`P3i^3YM(kDQ;OA4xTse^kBLir;WY$4-lTXhy*B>57baTE;VU_uTYh{C zuL5IR+0N`xXV*h`Ga`W%x@v^4_0Gldjoy_lw_k6bVGQogy~NACaoespBKrH4SQvfL zyRv&b-V1BOG@OzLd4-mpt9HA7#X8NvDMtZq@2%D`dwQ#PL=N^QJMJxqis_>#y3w2H zaXv;CZ0S`_t9s+Kh>k*0dLS>JVv|)p{YojFt`>jlISw1Go4)UZyK;Rnr}WeOKIOEs z4=SS;7{K1sEN1oNyCHoj)u$923G4fy_Xf4I55Ggs7pG`npFSA%{B#(elY`WfO{>u1 z!A2XQ$xq^}=}D+p+=RASy@6Of8KfVd>_aQzo>4Ao<;zbyp2XI}lZYR!eX^VmJqc+9 zAED%vh)g-nc@ja>^G}hr3=5!W5Bj1{AQ;e#py^23@jlTWctIO)@xk{?Pm!&K)SPbv zc#o?J&b-Y~;qnV!KpfGhmxtbc3SEETp$NVMRvN^?$@;P| zO%3ohg>Rq2*vzZDEIzV_M10P6a<7_M>|{HQp&b(@56yfUJL^v)AMjN^2)@8}q94AM zZWM(1gn8N1{NV*mAXYuit%fp?jrC=z`2K39`}uv0*fR*{fSM}6JDDrLa6zv;bFVs` zr_qo}>bQ*Jcx48hb4GJqXYkU8PxBWw=+mcLftd1iYi>b{p3bAqPq$Y`O#PqffU5e| zGadOeHdCI#OeoYl?C(~Bn+wnIiF!BQmBstEH2&%0Qr^U#i=fg2c>a?3+QjxzwzEsv zjxRNF%H&1|ef%tclH`kLah6nsOL8>*StM>Ldrb~uJM+J|x(|S{pKXdQBE+%K+M=FQ=dpe4`s8lj?e(fSFje{x>Zc&9q z5|AF=uM&lO)o1+MVe)|VsIC|$2>L*s@1hnGaXxNx|nKk zz0<|KNqXV4E@nE&x^*@0XejTe@Vc5#I<$v%H8JF-b~W!YKJ04Nm)+R5t<-M!k6op$ zy;Pyex0O;2Z)c@+g531h%~T6(1EXtqiMcfv&dBSo`cT-mU>RMEz z7IOaVX=7q{Q?}5}8XMD9PVf6P&u;aZbgh!l0Hw(HG5}?b(6()Jb;kOu?xvjK!;L^Y zx|>EdMvUIw&GdSTK3bRCo4T7#Ws_>kfq+cZ*eErSmkP=?b~%cbi<{l$)eW-nelGPW zcQBH)7R%N2{biLh2%l-*eHQ~KI6C2zh|h=AV|Mirz+Y+4kw>9 z`t>y1w39|Q!5N3P#^9c&%q-osR9jgaKW9_ABr&$aPO53_k|IR{fV_V+N$#sW39 zPkNe9KOqN0a&WCmJJ{1~_k=p#)UB7AcN1%b(j~cG|>c= z#+#&~P2?3=jpR&MFEcGt693*yS}A+Sd<;8yLIymfXQts^adK>NELT zwN@^JNZ-o=@Uq@&bf|W>F;=OxK1SKLG{;u;8Q@dp%hy%Mcyh0ev8%UvyZ(E3ZxaRV z>ut)}lk_NXVQ(1%Z}wITe|o5&?&5CiEnU-GPHoDRWh>oV4G=l=tfo3pO)2iLKEpxj zvI%IUq3=1f!jgVQ{HR87^=jr0D)Uoh1Xf;##& z#=Kz4D=+Z+?Ql`bVp$n;BpAG20k>WWur;NP~l3 zFy&;y3#!^%YpM?VQGLdH)Tb}6yp^t&_W;P%OS#akPEn0}QP!WvlousK^mEO;TI~#d zQJ!`f`J%cpS$*wpOG}7rn(97_kJMNGd#Z?z#%C{@ax>lz^;Hn3sW#O#Wtmi07}FBv zH)3VtU(}SYZD$PXD{~;7`vYD~SG=K2NNyTQ#TUsjMJhmHf9Euc?&YK{bg$UZ*Ud-O~xV>eH7= z8?v*l&Ts7OZ>IO4{Uq7i$SWk}H5KVZ7OI5q3{`ykQnZ8pWrd^4A2C2WU;W_^P?PAb z(j{qk%SB|l?$xB()5fX+GNj&A@n}pMM~l;5bo;3?(`jxWV9E*LwlV{EsY2Czvz|6~ z50G}tLm=B!8T(Wj$tYDuBvVpH;Y~WosnE%usZPe+X3X?dFBva;l6bECEvNT~^fT4{ zShCOGOr?F=nA*>j`L8h+Q@Ij{RjLAzrjWL5vInq)OcTF55l~rr( z>4VI4k81WHvweC@zhIEbOP2CP#31QX*|Ma^Cp`z5=@V(M4U$H=awuga&r8eF2F)I9 z%1TIKA(I}&S-V~(l{;%y)zf*scBm;A$=O}+t9)TP7?Rm)uQ!^Z zCf?NeW2o6o&U(sx>oLrHs=b^WZECzYOeLP0PNa)!le{WWUYa^{n5p^~jhm~|#1fS; zHc^cjx3!cfcYk08N5jlEdT4w&EZu^n2S=Z(Z0<`cL-=pQIIN-Z#XwV4IXwX1JJ4)w zj2LV-F_sKYJD#85{&>mB(! z7+hTy&|77d7c!>H?(X4c2mSXxmD&G8Wea+$q(Ki!T2nnR`GhfVxOB*x;bzlD7pm>k zr!vVVof=}f-!@z=hZi<&WNaU~sI(#xuW8&oa5Se;px*HWr8z9USvzwxv&VuZxK($x#p%x267`uZu3@UzgG$`^Rt1x^Bu{=-T@tQIOMSgYPK^?y`$(=B zUKl9}Lz$TL$x=1R^hJGBMq>3fYozRRG?opc+2koq+1NV5OpnWc7$LnON1(q;vRcJXM-Mx|Wm{jZvS$gjzD+@4dtLWuz&m<>in4Bh5BypGf}fGD@W$snW$GYMG6m zQO%m5zD!0e_ND7+ntZ2R_!*t<((D?YE-Aaybf2b0ZB|9$?3Fi0 zcAVw$yJ2J0RMY7N->XE?k7?2k>N8odGUyf8Yh$>!YGAA#W6CS3(j7r#$!OUub}&|s zmZkZ<(XuqRZZ0=Y?;CB(>lWm_RAWr_4%FFWREMbBcNUD1ef;K4<;8%nN)_b!AXR~6 zn_6dj6Vrv`d-Zp?OODHOa?Fq}N6W^ly}MOoC29DB3Mb#GusUxq&z2Zl#>%m1yM~>x zJ>062c`89=I#PnMGCbR~Y^csB8wA#U) z08c-?wQ|u*=qIPj_)LyTC#ui zO?e)ob@Rr?FDiohOh=MNaoA7P*8U3t^!2LKg$6@Dj?l@D{U5dcpm?@n-s7#wFvWnB-u(zcfB?swZ?mRA2df(_GV431ONy z9Hah@rC-!}8Mzv;f4o|ScbT9HSf8ewsdkUm!Hw+Hyfi^ZX)>=> zXxc=*(Vjg~?<*{rD4Sq;a!Nh1`|3n9Jv2`n|C($v&AdeVO<_tqpS(tS%6CO1V) zQp-uAzVcp6r!q=?1|!sGJUsn-nEDLU?<4tJmTx&#_h;?LP1bFiGFeJVhN{#a(#ckN zvWb1a4JsJElopFg{E~K?OhWDB$&CGZvZ=Rxdne1$ZPC+3aBaE+yvFs<)-lO{yg8o5540LjLcn68>aWt!Rq+ zOeW^#r1ilmvj5O+s_K<~>RW$t8e5`1gM})^*r}3YlG+o(>haep={mH}R9TC)HeQ~Z zu1aU968shEf%K1RL2cO4cy+2N`>Ar;b<0#ar=oTOx2jZbI?{u=>2zkL)7hhzlyIK< z+uyJLj$c)OyFvP?%ER(9W13oC=1f!5iqf1bRHt%zSv&2&%gg#{(yv@zx=iEp(rcPt zUiwYL@-lduEH5ulFME+yq_7f zeYxy>t6l4zD&OkqDogLQK?Bl?_DnzfsLx0Wk;EvTU6`oh3)## zuAON%Z_rrnPsz(aq{^~i)xdCHQM3FVHM?Rt(2&`hUQGyAsUsQnp65NY(|wNvvsJp) z=~2#GD%Mb)XHYML8Wfo7diC%?5(Mj1NcPCa1hTzNFC)wgWc)l~bPZ&yx;syZ>O9-*K96lY^39Yxw4X8HCJtO%rJTrYO_n3K-%>6M<@RRzC{*(UwnvF?oW2p6utfZ~R1B<(2cy_UcvjYv!5h z?KbMm2F;tcmJ{0P<=uDY$vl^7yYz8Td2OKS!pMNeghNslUBhlJ);z#M(Mv7H~P2p>FC-*J@fhn(Ydc3hbjwJUX zEKs{Jhsz_p4vaa@AvNvJc;`snKJRtVfoB)z*bcmd*a!BGsWcu+Y2p z5BRKIBps|?{h@{nACX$W2+ewbk!*F1Zi~%wdYm|Mv8tGQL-IGOchx%`8W__TtGT^S zwJ2Dk?s^Y4s=t%;DrcB}2AkA3?nh~>xHkXnr%zF<4Z{` zS5S>*ud4a--!z}Us`l3Y>#tNES6*)}pFgB`#ioA;@+os8efVt5GF%IqxJ;7z`_tPn z*QukxV2S$M#l664g6SE`^lnvotvz0bwqcp@atIv3@nnKHt4dv|3sFiAucl=687|lzA^VO%j zP?FTb0&2`(AvRj6s%k+t1GpYHrA-A`LCrFlAB`HL0TtcN@&WuXjZ7kvplrHK9hSU)7SpIvcly3 zt?#Uq;V-WaYHiGuwAFP&8FdZRUBPP0ynLC7>maL_rB@AP1!=ssOiqz(k)dWxU9N_# zywqNbRF$2&LKc=)q3WrHYMjRMY2@nSX3ZOAp2?jLubKDp;UBf1Q+Wffu`QF4)wZp= z{x)2uXiS%(B)6&V3T1zwk@1EktW#ILU)^}W)WGnclwZ$i(pFX&yX5@_#v82~8-1UX z_co^Y9;n-`q`H!FTB^XFTSN;x6TXINYNiLDE%R#;AG7D}P%q}2;0 ztIRT)T&^U2W7}4kw>`7uN_SPMV31R@D9F3gC3aX9rb~Y=z^Pkn1m63c# zdCx2tm9NQ_N8loqM^XZbn#&MGCQC$qZJ%awikRBvZk6LmZ#%O1c+&S$UWJ=aWR#tj{mjVczm&yhsn`%B9#W*s+uq zR9KQTu9T@&_?4kq6iG+>W|Ft1Z%R_XTp|-Ic!x`O9U^^HP(?)YZ+L{83+oi38t##v zloaM8)2k8Ylgdc)c+#zQDXb~=D9QH~UZo=;X`C7YNrjYex-|nCC2Ic23Lr9_xGFr< zlEISX<9sAbjLch4dLWcO@MPIaDx#`Ly53Im{@qT|H{FW(SXVkjQj}B|CWnNFdZuNE zY9?6a;Lu{xJxuB$O^~RkvU)kIP%Kz>p9FHv-A*| zE7Isd+L*{dN^-8sYI%9rbZe+?kp)R=hJT}+m-DMU`7FA5FE5>UR3Izfe8DbA-^xES zI|9}Frc<`cvcj^W%2K%~qeh0ZbbFX{3ZYasZE_$pFq8?a|H@Y-NmNvS$2mK!aLrJb zgo0N+%0;p+cBN6SR4$S#Ml#!F$~l=#&dUcfk`ie`B9%(ak|%8{TE2`HN$^*xuT;`C z{d_sD=BugYd@0M5F)ibvARShboMB69U-G&&V`+=@f)t*Qs>?PcAIk(Ish|~A$m%JU zb!|l~138pW8Cg;fFPBIpk@+4<4P#los(;-Yg`)JYClz#MeHF?7nGVE@lF!jeJgnKBG~GtA5K8p^=% zrD>`sV$+c|Q;>^gt0kMbpu#&=+ATA=Aj7~t#)@-lv*gQ$O`2aQTLM{7nbYnd5gHMcU!mu&A)6_|@HF5M(+Xqn}aS(N{UvNKW)^D?{gQH7nzgri(&mTc*o zV#&=XQhG72CXzn%E8=t17oM3^S2MhZYLaD3ttuVaib#r3#(<lFXqDC12WKEUC&R`9#_;<3s*+ z<-3yOIK@QPtBw@wN*-V88{8_RL#7~&j_O2aIg~}ql0A+fSM=pux1tzGuXs6G8L2%2 z%a++I!>CZO)c>Tm@{fESRj6tBGW4Y>rk|6_$<(Ys_I|9eO7@KMiS(4rMOBPyrL5G= zc(j@;rc5B+4{(C&LC&^i<|Jw@6<1pBrM7gqEg6DbB&Dl4Ejvci0@*W^9#WgxP^MRs zovX6ild+@Pj$17{#FI`)q^w9~v8=LPC?~n3nk$1RklhhkKe~Be3M?i$slkO(vW&>^ z5H+1RAIW+$%*8c)S!7Csj1QF3MElI2zwU72}NRhV;Yg=$k> z+m*FoB*(kzpMk9m<51aucjSHg@*iUqZOQZX$`j~F9&S;dP8a0$zRGj8&xM!K#q;3T zY5M|r9bKY7(CID2zn}|$hj-FGy_=5c{d9a0(${Fs_WT1rkxs6K&!VH7;EQOl9&FR) zJK-B?!+~$7{RiRtbVxr!7am2tC0%R)cc7gT{2ZM$fqUrm&EbJ`c@#X6wim*)Y3n0+ zDQ#?nSJ9;(;0<(4e?|Md5dVoT{0JYUJ-W~a{TtIK(pG}>f1?XO!I#mcpW*B1kgi8N z|3UmAI;Q1fbUHr0Ul4Dv<8)Wr-h=o6ot_>=C-gKO{}t(%(biu09lE>^{)G1Fujz#T znGW_N{qJ;0*C?a@#RG^ROULw?+OjmM<>_MD%fbJo-3s^yoxVC;PrDBM5FH)^KS4)D zxFhYJ3is6cPlt!n)*0|bou8gh8)qWEnoj75cK(X^r?g9dPY3j`w09QLS3ZUQDxD1< zMknXMMcO(S{u>?q4Zd8*{|?`v;}^p9>4Y zfalS2i)0!P>5^O(RO#QQ6MB=54@dlS+NHPa_z1**qUBz*w7dg!KvzA@@hCThsp%a? zhxGBZH5&2LX`eoyHsr15$$; z7v~^-tn)8`chH_(=TXy7Xlo<9hYo0?9olbgLi})AU1C-FPuB5|;q&NNE}^RUrL^-o zT$eUt_zt>6KR|o5Tp39FKcwYupwxw}$p4H^Pj}Pl>3(!VzeE?eA^!xrOwZQo>7{h^ zCDOl67vxH>YTvs$PH(2&uMyuyTi?Jx&eKPIS=g<*- zF>QQ@{QsoAAK;sH{#|fAy6_|X5FOCX>2iX22Ri-46+ z_rNRY_*eK%+TROrqQl?e&*`LAE}hCwtk3O4@ z=!@xM9i+dGcIn$_`$)v^*ZFCAlW{tKi+@494Q(6?KTEsE!M*6@cz7^fIsqO-7te>M z(%uE|d>y|CUQXLrz;DyW)o?@yHvAbKT?cqYJmfm(nhMEgjRh)8TDMe;*yuP3gkzh|A@xwEvTO@bk2PC;S2(JOB@+ormG^ zbkrE0NgGYzg>*uPI(<{b-=<^wL!G`2;-Axg8Q!kl0se`O=mR?55%FrB(7u2!(B3nM zpGe#Pg3qK2&%%GFWBMxE?}7L&+CAa=bZG$mC|#yo()JL<<#`dT-^Re5>BxsY+8qav z(&;C_Q|ZD)cpmM@T^(xuvzjix0?V5QFg>{uLd8GRUIBkY8zKB7ozTC~?rVr2q)V&d zs%KdKYPdEXtbvc9oj2eUb^5jNnc8y4fU4i$>Cy-AKWYC{_(nRS@7DQ0NBl8bPEMxf zHKz;PV7a#{?T^xz@V{v1Yq%%v(;n?zluyf>M2B=hM;9Z$j5Z#CKcSt6;O(^c6uh4< zJP+6U7wT8+3jal0?uk_WQ>4pszohbov>|s+D&I&){o%Xla0vVmZOQ$&Dt!yu9SL`& zZMpqa#e32Ia(DZXcfUnV>2;V`wli){a zPoA1o(`!!0GvQ}+{#W1uba6H;Z=p!1AJG9VXYhAs|+2h!efcn0m$Yv_QEwWlNf4|GKDr%UoW z2emxb=z{jyufWIANdTX(<8xt~cIBlIrsQu(2OHpL>C$`faN64h&!gjS;pKE$-hg3B zdGF9Z{Q>RDyD?NertQbhrcFOPAzHHr4*BZfIXwo@rA)Qu{~v zY&!Y{zLGBNfp4e7U*X5-m~Nxf??v3Dy@T)|I-qCJevN8reOBrGHQ|qG_YioOj-L$g zr{mM%>fJg2&VY}mL;4K5a5mx>(%wbz&2-s@@26wBDP6o4@%FSs_nn08&H zzlM&x!1d^`JNz&m^nhE?QE#{toeY4x)5aip5be{G>5yJYJ42EFT{?aV{)D#1!aHei zK5X{l_+AJfL0hZfQ|S10*rLNVuuc2x;ahZ^evppnW^_zXoxzn4x=kDyBt;;+y? z9nuNCfwta5`Y-4*ozTUNi0`Fsx_WPpcls#0OrJ#u@(8|K-(5@>cf$YFHmaxbdbE>= zAE2!YxRH+6gj;DB;7)XMINXPhkAO$f#*uJ9myd_v)bSJGPiTk!L8qq=>4Wxr^cl2I zUrHBGM0t167Tt)p>9%y~B&6@E^PdclqMhsES+sityoUDZFX-}(i0`NEo8S{(K>eLt z;IrxC-S9uPAA;-CUQ@UwZMBAjJ6}hck1*T;r+Bl*Y1n<+Vn}N}SIURoz@qs#jYk0hl_kicn?f`f#?Tm!qr^C_kmpcC#_(wV#3;#hE#>2<< zNBax%2)J5*UPQ<8UJd0NwdM60%Ju^)rUJJL=>FFMH@FwD;bex_;TW=x0f_CY5 zX!~u%Kc)kE2VHyz@x65PK5PzP`!>M^I-*adoevSen6^HG@1~2J;g+=VG2D%g>A`gP z3F1?Ad<(psE_@BYMced;I{gmBzticzhxgFNZrJe9zVff|5p-c6d^TM?0AEhq^i8x+ z-$O@qiFW=#{#JCEeoot{nU0UaI)4Q`f%a;_Gj+T+yjtf!6n>X39R+WuWBN;-{y4vLx;zin~&!@}u)wDMX>Fa85f$J$(7)EgyT%rpVwbK4* zOFPx!?zC|VJdBRcgQwC~19+*<-w<9$+mFMa(|#FFXty1l8-)6m`@=`k#X;~{beKCN zt?yNIPzl$gqbj%|ZPkR^>G&~lFWNr^9zh4^!n3rmgG1WB6@H)g?uWmjlgHrSbp9vd zLk6RL!F2d!y7UTsA)PFMZ_w!%!Vl>5>*1EPvmJh(_WuJ9q{BbpiFDzwwbTAvM0=OO zZ_~xP@Mm;z3!Ko21LudJJyA3GFLXEzKAX1Z!&lR#rSP4!@ebUGw&?bBxDN5&w7VW2 zNtf(H)AqbV2RFd4>GU_kn{@nk_***p3f@PDzrnSKqJ8lJxJVoM!_w(pq~kT<8)@fO z_(9rs;3w&%1b5c?2f%~qXdFC=Hm1Uh>0k!@4qaFbe@>TIz(3L6yKu!Yw5KGmqE*|+ zqiH9G&!MAz@IUCdW+6@Q&_xSwOk0=39cce5xDOqUhey%wGJK!&9|7ZAT?LBbiaI`1b2OmQxzr*L!R{n^z{@3Vu4frm)d@}qv zU1$P#q)Q#)7ijN!cr6qR|SDcCTJL&55e)iiEP{)|rl7~D(8=^;Aa0P%4; zPS2(jdI?=9A^jV)N57}z4H5sGF45o90sSj&HA4EMN1;D1rmvu{q#vUlx*1)568XE( zb}M+iPEW6-qc(_tNN=Zqp^Ih2|Dd0wYmP?!TG2<*A$>9(KZX2v(O=Qe(h1#}w%Q~8 zIJ!*Fr#*Tt9nf3ph~7_I9Z+8FF{p2eK32OU;%Cstv+(8gS@ccxRJy5hHQC=Dj`Yva zF5Qm~=`nOnze0O2BmXk(k?^}ZJ-v;#M4F3qRX@4QFKC2roB0czd}26;Wau=ucw1~ zh;P>M`S2HXya3)!M+@N^KKd`AkEV-@5I=|RL|;j7UX1t+bZIGkC!NqOY426U+vzyn zk1i}jd@^m(^XbxZ#Fx{ZR=}^*o9XrRKwFy-Z$n>9ccCw*htXHiGiaM$N|)%jXqWz& zE`NgQ{h(aaFv?rt>f_-~bRF8IucjB%kJBOj6dlpe(wpgFbWG2or+$j*=cKC+ll6f-w3!*s&yzb$E-@#pC1EL=a3(`9LXo0ipo>VTd_ z7y6+5H)y{v{5c(;i|f+~ZS{bwOWjocyu0Aj>1ZR)w_HQp@4@%c2IH;i@L}8^(wTM} zz(eRVJz3{}1o6eRL%&U1tr3^o(9`<)jbOQrId!oF=Vb<|`j-czzmBJi<51sAb=-&L zHq$hHvK8qY(*@oy(1$K9LVw6@iD`P9>EEY|+mK)0teM8$)kuGmocl@Z^9AB{X-{6V zC)G3_rIYz^C)(lkp@W4JnuC z(`lQ&g!bf@bX58qXHt4MN6as`ou%dbbRXJadi6s8v_Co`zudN!+M{2i z6Q-Bjl#t#Z}SZ)JK%P)3^ z>ua-qO=5%?_j_B{`fZj)!=~`8+@7)+b zXVDJt@3=ZzeW98>Ga!RS&gLiO@4w$(LUpgbbfjhZP9Yu zN18w0iu@I_?o{(XX8dT{rR6q>H15z>(Gm0CMJK#Ju}u5CpRm8q&-*)O&~|Msf9vSd z9Mne^<8*rAH}H=-J^SMz?cR?5J+?a2zmN3i(=M+UIdo|q)-Nq+dp-Pu_S?umhAzJg z&!ycB@LFY=Uk>Nj`?SyPevdwjF0;IU(51~te+Rvtak-3? z=6AV0eu~~p%VnW7Uj0MlA5527pQ$=O;|q0udX2J-2fIDS=Vx?z3+C5Pv|ok(lhgPZ zKL+N<$#n5|^w-sNiSY+$`w?8vYegqdz@4=jm(%j7&tr&BqMZlf#dL5A>hrp?)bVEa z*G9&@?r6_9wEH9KXVgOZh3)X++KgX7+utExmo|Qe@2885x1vj5BHl}%S{u}MmH_qYzA{~1MlY@fVy4(;EE`l|QAsqx~RgZ6z)2aJD5+jn63+ea6^LjFS!L;lh^ zh@VT_%x}}yMx=j)4tPIu2io}?rr(>6|Az8LX#X8?Ic<*mS7LcvMTZX|{rft7CwMz; zcZB6vin{!q}tPq z_N(CGbbQH8>E$$j+P@a#6>@-=ZlCBA=>mNq|RK|E98R4KihC3SDOWGP=n9 zi`$f?f2y-T9%S4fiS{<3OFSNbUV9Mc*D$&$2MTI_`E>FbJXgngzxpcL{v7em$};`S zIsI>RJVAUnUH%EqAIvy!J70!0De%M~quK zPG3j+EdODhelN;vPaD6%eQB5FkD)D=H;4A=wRF@M<6#qR4}`y^oj2j%=t33l2Pqtj z_PC=k{S&nLyuo?2^(^Ao>iFT<-qxcFhoL_oqJ2Iu(u%f=NdGJy_dC3|dgs#)^It{FyUfz*-$Tb6 z;FdZ)g|>PAc@=HEj`;iZaQbUyX}HVhL3Y!jh4L$oN8G*` zK8lX$OK9U##BZcMmiK^8e-Yv>b)4ltONY!qm@Z$A^i$~4W$-dOqTi=|`dixK^nRrS zmR~pl?J3YF({2}xk8`zcOz&Dc{wI7d9bFAKqrF4nj&#WLr`>h>+Yuj5`+R=p747R0 zf1P$4!W-z~WAHXQ=6L;?j+!H0aU$C1G=q&2a3hn!pjw<1UbT9_#4?P+6Ee(gy)Lso=Nf%ea z_2_`{#f-bqo=`I@krTp>4)LqaFHZI$`?ir=a{!EdNwx zS)V05-*z>vF3QT+#?5q5Dy94Y9gfEG|2Q4UMJW~UNW1rY0hjla=>mNo9kRXG(hl#ZzMr<& zbnygup!V_bB)Y)(LLF!RwX{utq0`q#`~E|hnEwwt_$$hRA-sq#)`K_F$&K(f+N%riQ1dBT3h|TZ@-q1E+Kk^qhjL=rlwwMBp%?r#UE=&3Mth48pG6yQ!*9{{JMcF;KV5MK z>gRKMr_m0tS6xY4oL{%uV>QsABbN=7x%*t({jX_&fiY7!}uV&!1yfM zV|)!=mJ1Tl&S{nP03QuN;ybnpq{*VD!N@SSw&e)w^n z{yz9w+NB554n0xF51@aS(FOS#I@O-{=vaQ=QTb~+;rYtn=#c4aorCtMgJ_lhM7qrV z$4ls9b=2=h9j}D%r`;;JDecK`>Z9@}A$~vY)qz{;ILq%w2P}UyZPh^f zxpYFWqCM7si%!q-ex!{%usj~n`5pMMzo9(^F3+da#d{FHf)40AXpiX|(a|xO{~c(X z+sp2>!|mlT+NeVLljxY++xa@q?aSM=*BR~KLKo?sw8Qh?2k7uUq_1@z+81#BcM@%E zM*ITWrmv&DbFu!rpDv#bKS>9SccUZ5N763Ko3HbKjOo3t^Dn^iwUsX2gZOUR;rg%I z`J6usk^We^v<2zUp(9>zy^0R$+vs3F(%(-zTz;DB_(8;F`$C;r8qgI(Y^0qc1>vL;5n>S%CN*beYeSHP-3hMf~5i zyiPlvet+6y{_%84F2t((g>*0x-a^N`KJ+VHX8n(}P(LR?`g3V}0(>hSFn<%;TZH(( z=@Q#Nh_)6ZKAkSJzHibt+ZWTtnMnUD?ahFz{*L;oALUl@yfEiZ07w17tq`3>*>Apea!Fk{Vz@E;$)QfG;NQAyVCJ^co6MQgvZk1 z1!(_#9q*3#>vW+Xw!a_I#xi&ZU2cW^xr@=hP;R_Y57WiV z5N|=p^s_oY-@n&~4ksi1Xxh6G4(Q+}_zj)^W_UC0FusE>GoHT;?e*y+>B23@e&WqC4qzxfTyYJBl|ntPevcntZQ(nY!>ZPC5y51lL8FQG&F1KMhd>Fv~U`VXDIHR7jVf%Y1Yz?aZ5;}6ny8^oW`o&-Oq(=+}8ZJmzz zaAoNakNq)4=Px5ZN4qV&j4rc2Z_w=xj$(%1S2$8!bZ$J6B;{5Lw}@#58V!uO%nqdgv9Hlj;4k-r1&SA%=& z{Pa-Tu7mglIye=cOGhWdA?+RtzeC46uz&P1?eP5iH?+t8*-w{wy}R}`XurYuX>>?m zMhEn*+Fdcd2kEE>`~>Y@13ybUSHLgQ#?|l`o&Gv_j!u6iyoN5=@W*t>^V8qa38!~} zj#>U8|K$ArC-R>_m;V7-{g$?hA;|pd+4N zUQU;JzTpGf;Q8#Gble;H5733taKT3V!jbSPv>`WMtL5P;y1X2&r{k;OhP3@U{H#t- z528bk?Xt8(Yxdy>x!L(c3iS z_ciD;J%M)VIkZQwq(gc=UEuUSrz6I{r!5}O?xSPItJg*U6zIRu27Nkh(-+c3+NOQF z9$lgzp&hz~PA})lRr@>X^si(4*o7`f@Bljg7#>AiOW>)r%kAqT+M(Cb_G+ZxM3+{< zU(r7OGhJAUxN$wl&uj4Eboo{IEZSoJE45kwo0Kc$eA(^Te|U&-r#sr;lJ-k*d+q1p z9(1`G?9m=QmUgEgK9vr7!i(rqD|i)MYz?ocqqguzbT}CPnzq})yJ=?#oVx-26LbHk z4sBeBc#%%zJc63v=g?(2E>*sSwoM#gUPH&{!ne`xU*Y?8oNh%I&PKd5ZTx}x)1M9u z#7EKLdGItkVtf%D%Y$R8erss&AiRmT8UKbZorUra=s4?B<3{vP!1f$Zdz}7x$`$gw zUVV%YTc`g4)2l}p&PVx=(#g~KJ&`AAuRYwEc00gB=$P>_w9^ssd32#09BMQFdYzuX z=kx_#?t=6?=z!(_uG2Gr;U=`d_!!b3PkZ!vw0$??|Iq30g>RPHG_>Q*eJ#Fnv3nzl{7n>3|-t&GM$u{>@0gfG*txuchr<;16k+ z@o#mU`S;R=8<4)*Eogtt^vBRX%R7q>uSfdJbv!_S)uo*!@Evrp2!4nzy$Uy>i;Llo zv`cr_=~;e%+L(j%BWZssJXxoo4$q_I7d)|kpyS!_2HK%NrK3FB_k&J<5bMAFI{hDT zja$)QC8j@$HhxF^RJvRZ*DDAO+ z6Y2N}#OKpi0bWhpN5SvW<>TPbbi4}QPJ3+Me`t&Sb5J{n^oQPt{;{O?s{SX@KI>=E z_VI}SgLYY;Tj@dt;*Zc}=5Ixf4e1I-VzbMzb9sS|aC(*`Th@VGCvfWncuckxUPAT6> zTZ}i-`5AAg^UHptO5cO2quhW+E0;;^tborm~cXTYrl`6iE zb{)9(9cZspA3m8b-VdKc2W=g_k;+SHhyD4sjx+sdbdmFWmyXl5K<8P~N3AlC0ejM#Kgcs4)Bk&t^nSPHB=`ZPo4d)r)srr; z{NZ#QA^#L*=|5{e`foAg&J&owt7&5+(nmV~&+unD{ww?~EkEX+&c8i6z7MXD^@8f3 zg1o3g&EF&FWIKEsZS8b!p>!_-?wy=|7_L??Jpd9Wma4cE3fuC!Kr)52MR- z(Ef3BVIw?;wid##(e@&E9UU^hg-+%p{sZmN2kGc9n0`%J52*ero`&O(qv$eSq&@mv z+FFG5!xeNXgs-QQh45W;A%-8Jg9Y%DI?nOmQO8+cciR3M={?$60*|2mP4Eml+6FJ6 z%U{7EUHB4ylP-M&e?(gm{59>p3-8vx3jJ%|!{v`Yg7)dtY3DuUKc7zI#WHF{Mf=U->qT94@sq)Y4I@jCtvJdd`S|83e~d<&htjr7~;0^@t>kghJ<@|VqwmwFAo9Kk&?@Jx$cuwe$>G#q8KQO)O_o2Vy&rsfRw6PgJi*{L` zi|OKa#IL8VFW~!helGuwboy0@chK?I;U2WV79K`htKrFX!1N1fhvmJl<8LAT`*eZc zs?)!T_)oO`D!iXg=oTE4@I5+N4##x#8N5r! zC!v13>G(Fd_5)~@6q}DA>Np_S$=2Q z9fJ4(+8YLsrJWk^BHE(Y(RNM5zocEp_iB$qyvD<5PjMprSK8t7b3I)ciTGnW{mbx^ zw8#7}==9?dpG3#w;icLm;kRgKGW>~hEjeD{`vtc%ZcRgcKb=g0YdwPchxA`)YdYdZ z+MNNPN5@Qm1s$;b8|X4!pDwX}O=*MqpQb~W@6z#XOm8q<4&bS@OE0HOa}bYooc>aq z?+@ImTuq*jUWoPaFO2()|4s*V)uZSi|2gcxpG;e4!spNd?^n8vHh4eVojO13^9b#> zK>jD_gnmK$NyJCeMk{zBUF7{)uhAa;kxtM1vA(8VdLJE>QC`JkXrJT4C(@-Zuti(l z;Ol6QzFWHo;!U+*ggeoGU-$*OJP;m9M|7a$y#MNTI-ozG?ZL>uoi4o$@1-NUMgz33 zGy?JCXk#RN9_{<^Kj@J6cim2xIUXLPOLR-Itj;QBRhs_OF5}J_dl~x~&xNaWd2eL= zLB=~XK9KQ|rL=y3mUltMH)ecq#!WNsnDL7lkI#5<#vf(;RmK$!|9^dt&-na|Z_W6T zjGJZrRK{I19-Z-uj5lWdUB(A8KC03GZ_ht7ej?*uaNgiQ12dkG@q&!kXZ&@>RgKg7 z{8|3#8DE|8tr_2wanp=DW!yjG(HYOn__d6;Wc*9UHL+ir*Zp;5#usLMYsRfIelg>T z8HX8f%lOxftD5}({yra zLeG!7nfRR<*U$Koj33XqMaJzi{#V9bGwzcy?~D0!e2mD%$7MV<kwDD!snwm+{z)XJ@=A+EalkxhD zH)Xsv<8L$mIpg0mu7>k~e~!n)GCnfnlQKRt;|nsrJYzfKdKo{Iaife|WZX96XEW}W zao>!GWIQJ0=^4+@cv;48WxVnK+B?r6$+G3H_ZK3B5dnb_1VJF+;fapv9xv=n&&=*< z$1y!?-UC!rm+7wUa$BZ*dNC3ng!fj+3-7)6-UNXOKHxz>V1ySg0`vQ4<}vr)ntcj_ zZ|K9Rx|zq^JT6b3%sl6|;J@2~zrF>3Lks@K7W_Y3@V9V1ZSKF%ZNZ<{g1<)#{{Aia zpap+H3%=iizpw>AZ^7@j;4f;yXDxWqf-hU}7q{RqZNXpmIeUA$6aLEyUqSdv!dDT# zn(#G*uO)mP;nx#>1K~FkeiPw06MhTfw-SCE;kOfh2jO=Teiz|)6Mhfj_Y!^|;rA2% z0O1c3{t)306aEO{j}rbE;g1vk1mRB-{uJR)6aEb0&l3I|;m;HP0^u(b{u1FY6aEU} zuM++mfzLVb{dEG@QtbT=!rvtPEyCX>aCBnt?+`cwvBxzLdmMe(<9dg^zeo7{gnvNz zhlGDb_{W5QLineIuP6L7!apbcOTxb*{Aj ze-OA9VvnmH_PG9G?|%{gH-V!SdmLZisqY6&mnwE!nY!P zYr?l7d@kYJ5_Gox+Y!D!fh#iiz60Sq6224RI}<*S@LdSsmB10`z3)cgsPo=;CvXIM zk7Lz)pHKLngzrW8-h@vPz7OI1622dStH$?!0O1D`eh}dY6F6SJw@=_$`<`^+TnDmu zNVrb8LAXh{MYv74L%2)$0>Td={7}LVBm8i}k0AU=!ac%$!jB@nBpef75#A-dM|hv` z0pZhx&k%kz;l~huEa8g?J;IM8^a&?~0bxiO5ypg5!Wm&g_>gc;m=b1$IblIq5rVKc4Ut2tSeVlL%i-_!7cTCj1n_PbK^`!cQms48qSO{4B!H zCVVO3=Ma7_;pY*4KH(P-ej(u(5q>e@mk@p_;g=D9IpJ3jekI{o5q>q{*ARX!;mZiW zj_~D#uONIS;j0K=P52tZ*Al*t@Xho3n>Mfi1@rNnGPnOD>HZVpKNG%@@c(MA!wtUV z|EKwW#Mpd5cu06ec#H5h;W6P03GWb|5S|jA5uOuX5I!59P&?725lJ{$B5B zyPEbMJbvrp@vGj`2R8%p_S1VuZSeT*dxtk~)d|4dJUHyNu;aO*i2@l!D2p~Y$l6&!LJV2o7H4~ zT45&h@uIgLZFxdQ z-h4BiHSntu?baJkPDkra?`*SK_GY8?x__Ffu-uJQv*FE8NTfIPHdo8h!8aw*^<9aE z44C0(B`Q+o_Z{vm$}86DNYyE-e5&!*pX82L)MTAv*W0BAV;NWxZ7#gAnrQK%B#B?Vgr+N)w9HSoG zHx28-Kn!CL4L2CuD9M8YcnA&s;fFABxbJjY-X3v-dEt5q1!K}w=}#w_XVp>XqtS9# zBnwTyw;Zt|WbPl?G#4vw7TAxrqg5Jcfm)3Q7o{$ueNA~S%-MD`TwJCBNY1kZEeNl# z=p!cSrq>^DM!A8A?tfyeSfeNCl4*SNv*liEt;+olJZIy}SP$E1qrXBn+j>*CPn~L=_?6zM7HXG6-K+F!iT+?PS|%Q(Y&1ocWJ@C? z@N6_Vf1x4Q6pNUggY({e(Ri0|tz?ts8H>q!3;XVA&=vV)P)E6F(VOH6P)A<&r{{IX z=|rMbb3Gh5vf{NFQ!xTh1oO$lS){7DNhdWH;MU48s~8 zR;M-0E-n?x8?R5ensp@{{|HsBqKA|9puZYQxOzj(;H)g?8i*n>f>UHN%NQYp!Fcy8jHpPphSNF>oav zUGyxfZ-Q(6?i4c|Nu=EwvzX__t1fE@zQNq<$jNZJGt;t<6t?Rv4W^)yIt@2otZb$k zi>-^OWG3tQ_9CFtgq!tYfs6TIyIL{P>JoOBYuF7_Z`K>FR*SqIsl4{$8o1zqStvDn zNXt-rQ`Brb-AtC#QRYlhRBJ$Wmu#h*^{;GaaJ{b08wOr`h^G25k@p{gq+Z&r(XGBqaz zP;W7xULm?RhWFxpVnSFh$`CEq%eIhILau7IQ?P5cW6csY6h(Ry%RuTPD`|A#Z|bJe zUUfW~j>=nDkDX2TF8b4Lo=MBaVk(Agqb$8VBgJpV!(2$lU-l=PHr^M&>0~z9G&9)f zm@h6_%*xcZqK52GSBoqMIu3qKUsk>0Xtw+ad3oVTNCe>XGHDEpmZOERhvnoHo_ELhm3%rNC~C%jVXrvN&s4jV`Okt)lg~<3;T3wzCmCDhz49 zzqOq#71#UTSlVW>=})!C>NbJ$ZRd@}Ad%6nYt7#ymBs=CNxF;{MQ^J8C)9jLt>0YZ zidO|KU@ARUY8hc6ywje-&(OQI$QF8Dw&-;!JKOgY+IDxlUQSTgb&9HYo=oDh_Z?jJ z7TXO_NQ7QfyCo{nrj z$@(0Z(~>k%^tQuAVlzCoHW7{~(!XG8#2{ZxFEZN|cC$)~h~bsQ|HKUfO3K;*6Dt;2 zHMGF0iv$)$i=d)W5mf7q1XJy1@=bq|R(Qp4o7pd*vZm`|iSBw+Va|}k8#M_;=*6Qe zC|USHC*^?g(n?c};mFpky$b5&0#UV>lCb0EZHPK~jzwuih>qPcL#tntqGoHW>{g=+ zWy5KiSM|~BaVs<{NN5m;E8&iZr2lJr(0TIE!jUY0~b zhLBRd5v1%b^uThN=LSg06WT)+Qkt02wabl;$ygI}6JhJj2hMnG6DU;OYJ#;F86-7|WlFn~s!U5&?^rBhZA>#nWlEEN zHWeTpVqaz)xJ(BZZ5ZaCH%3=hG*kUHcOikQxsjp5U`6+Cws{JOoQnNfLb&3=wQD_$ zn*7y7L5L$uhH&~%%j4DKC0fA;L*(W|;3kB2zK`!$@tUs*V<+*N;`jgXFjsSQvf*0Wiy zCuUbIjXCYCf1X)lN+(=qFA1qN%f;-PKou+NYAgA=VS&@y|YF~H6rTqH#pnQvAZD)bXviqoJC~b z13`{&wYnqgDVs;DOo16W>uCqvu;<`**LXy{g=@nn3MZGeb9 z?0Ghe)I?fNlN=#RTSL=O!#QeTmf7ey$EDe05Nb0Gn)yO1g*ut~iA@D>O---#)f(=z z%5Bd%qvlV=QYOp8O1POUFK*B=CPnvBAArQ{mfx}N-8(*d{J7p9(Bl0QGHsDEFeRsV ziRB`7Os6NshB%c@s3%DzD?=PrFQtxYYGE8FRuaWKLRD@d%-*IoHR0j&>NQ#3(@>lZ zZ{&Qq7?kG`9Bii>NyCupKw_6btHD`nF71VFfH&BlVU6Rnb|lIi=^iK59?j6~T-zyC z*EVjs8i7Jw^o2R9Y$a6V-C&I(>;@_!Hv{iZEZ6l+nwd>qljBX3lbSwIsIIV4z&V?E z@mUwh5;al???N^8*RmX;n$EOYt}qaz?{5@ldMm8gy^{rs>?C?ST{&*Wx`i7=H{*8t zNm)I1M`r1?dzXD2gi?j)avhQ67Vj|F24;<@#-b%?NNR@JwoqvAv?r1Eo#k7r&X$EM zm#Jto>kVF~oyJ_Yi>6c-D0az}k;#xdj4Fmlu?06lGAasR!;ky0AQ6*CuA!^BXRx%# z?BDAJGVt=JQqgq{G#ni(rCXogZp1c~@~CN3tXzHu3x+)Z)p}%JGKQa>D@sCaCyPa0 z9KJCh*2*{KQ~BilEYTG~G=!{m4V^Kzno;7fX$)1{#U$QbB6CenFKz_=fo?GJz*U@_ zdA%NeaP!*T$Yn4b7}0)QyigoFUC<2Aw{}KU4o9%wB7PQ9X)b&qR=wr+anKFizMSu*|P= zi-jR2BBzQ5x;b-G3DpEkd{F#Z`Rj5ulbjJ(r8*Kje+$P5%{$6eXoXoZ0K6MhJ}IC2 zCsTLvDfS^!$#`9MYlb+v+T^}B1e?AnNE=ME!esaonOB~LY2{q?g<;(*7*@4|TfLJs zF0`ZpXLF6<>xVU5iDnY2`>YSJ(S`$%@Rfj=z#XY7nNz9GWUsH=Pspl|1Xk9@1omcd zt5oSoqV=bCYV)+Xci4z;leb==2xz~!X2+Ht!P8z(%IvYE2(4I6x+LFaf&}<-(nQ5x zu8EZD2iDU>Zs%+&(l~=m>0nn43$sSm6?E0h*t$O+4Q5GJ7DR7W>U*_hrJfR4RZPRX zD_w#;nJ!Ki*<}WV)GsyM+$pWk`nWG=`42EWnroC6n=)rf1AobCP#k2XTeXBgzWXjqhW}oUM3Q!{n+pL}< z8p<>)K;2SFZH7aV2m*HHsAB8>Q1MmNtdBaorm2c+xY_HCC^JK(%ez0Jk*QNlPnJu^NqQ`Y$2$MOLjPACmdUBjoQkty->5u5h{ z#z1#O(jPgrym9@u2K#oy7jZocFK{Pf+lgATK-sA=+cP$>g_uYebrHFN@lgTd7F+B( zbD=a+`W&s3xK_Q!&_G7w9D6EltW9hkU02s#qNE406o76pOg>}@TeT=@wBm)6SxPV) zp|vli6uL=n8~GCF;s!m6>|qDoC21 z`IjbfxW+7&Y3vx!*IO_yRw+zktl;JwDb$3)DuEc9Jh|8xZ&x~QV{x+CS<7J@Ejff` z2|Y!!ke7)x^AA2L1WF>(LP+lI$7Ly7pH{Yk(pw z{1^I4vZOaFOmbStNo2Rx5^mLRLv$p3cHEm*}QKhcy>sGepU0x-Ua=7u1 z5F~bx4K=m{sB))mM+YTW7~3E2h-tkL7FkasuaS0brh%;TYe&%_HMSTn-1$f+B0b+l zYouPZhH7@YjO6W3y;wJT)pdf+zH(gE){ba2R-l>{t(AU3ucO2PTq|T$seODMP2jwS zTl@z88ik3|Hc1u6bc>hC(!R##h4%kr&j~bTkwi3%IG}A4ijhuAE?%heZC0CwJmPZJkL!Xq7hD~YvvS;V zq3x}|gt@TTA{JIqiEEUy6@;5cq!g41S6m_0AX?shp`|J0D7&EX)cABf+{ZA+rY@i( z6OsdXSVcUBDh#AYgb z&zuYF+X#@d&qTUcjIsqd^rTFl;(NMzNTN21wzdPB7v1HbHV&ej}zlJXPK)M(xT;+zOeJ+pD` zxzqbY;IBBk7*blFu6KEo3{ z9w+kw>tFy&IXFEjx<^Eon)C z=^>E{KeTw}i|ry^j53r~LCfMD_(+??BW;oJe2H9Oo^&v!*taA(GTi(nZ!rkxn)NPZ z^NzRN;5b{er!sJ{G?j-Pb9DsXa!H^tgigs-`8OK(4TL0HY0{!Z@v##BcIdq*>TO>x z)00h~1R%|&$2B@vnIkJq25ft133)OPg8<~lW{+&UOc_%FOf9KR4MXphr$oU!ZrClu z0|Xkwd-snlZGwENIpl*`&uZUDCPx;mo~NS=oJ<0TfAHbUcPgMi$8zVb{|+M$$3jC$ z=7K^;X;aorl!nne46E1foNB2xi25fZA7k&}pNzI&Zb(s>;LS?sMJ+WWl8*9`{EnDe zun#?N5|JNnrCPD{bD0V3iIrh+7Mt~ga1W>gZx-B+kY2_rP|8PbQ~>&Dv_eZh(!EiZ z8_Rb*;YH29$dL3^^#UMtn{`5(XtQ0-QyHd$rR7s@(;RrEo@iFU?Oc~Y;f83#v~jc) z(ez>-^iND*p~-1w7cdXCC&mq3zO&+uThp_V!9dL$O07{%nk*Ho`bjepn+Dqol!D7h z<;8MwbJ?LJ*!q^QAj00{i^-GZbzt$Dy7UNAT~H>8p@CqKscPfQ-=AnEv)v16z=}Dw z%NFd>j&b=D;(@DbeDXZW2L)=l(Gg5+y{s-86g7^O>IwFt5v~*`-tPiYd(w> z8m%gCP*GKNpDc`xIu}Hhia{K0#Ms5Kko!qH3^ed5ma#fUiT;T8*KF9BCeKxKt;+Tsjiuglwh_W)+ z6O?)R+-w>sfb0b?=-U~L*xON%)=GztZEv;;uW(8NLG5v#;x;;bSwhk|Mu+McEAcoy z6D_@D=IO$cM`WJj$F82WWQ;!bO(X#-{dP=)>mX>vF@VzA^U4^)tEU#@0Lst?ywF0M zF-)ipY9!wHN|S3dJGn}ActxWJ>v`1!smY#&hF3`GS9Q@TcI|!gE<4uX=kMZ;lY#f@ zrRzORKI}Jn`FpN&POk=Z6In#c46#0Y?(4&QW|dfYJMm0Gv)Q43H=eNwWG6@)=IDD9k)>| z`}2tpZW|yjMzqC`N{pnJ?2aBUs**N{kcmjI^KoAoX6f;Y&-Y>Xs0T?Ry09XT?EB$K`|yB$0}{G zB#FFkbHjuk$Pop|V&cJh=>$=aB*1D-0IG%xkewQ_Q=eXz?QP`W>2*kh)s{0y`K^LV z-B_*!Rr?2l&9d{T?Acx@T2hSkgv&j+?9z)DVo(eI9bRjQMirF@YxWt=@tlFlwJ~&E zT_KXFXQk9FqsVsRxTF=8BW&Z1PgiFr;OMR-l!oE;$L zu)8WEf(s}@TF^|dhdW?3+=1%h4p@deK)i>iYWM=RhA)_EzzRwOmgmNR72F)Kl53>G z(YWzeP7Ka*8{9OjQLtIG26bkSE>FR?YB?fv%N)D(-CHWW?ntTl>S2;)N;6pJ1qbI_ z>+TR268Iqnd#TyANp*Uim&cw>As^n8-aw^050^NH{v-A*25~?E<+W*3D8x{4NkRfA zzQMI9>~JpE7_{)#v}f*>JhyvOQ?_a#TY}PW2D(Fq&tx2b@c!3DCfY8fGp{t{f@8C; zp|dAj#PsBhTEa6F1j2N0_Po4uMH~R*|9#d66eKTAij?Ni(WczoaU7VS=VyzQ|y;#o9%VhP);bNzBmc?l%cadc_3$ z@W_y@v30kwm9;9$S%hYeT8hpf?@mJ{HWIRU+ zThciiz zMteU$)hc3`O8aUs0;IgccfPGs##&k~b{XnwJO&&48J%?vt2((E=DL@ug?A~kg-rID zHhL>1VnSviFd?Md!ZZJ5G#u(4FEhE9YTZBY^d>SYB^^#gS3FxXJK-sfZ^USGjFED?Qb+*`qt$R+AI_^ca!K zYFCFax$J7W7D9eQayC-eS(IyT^{6rv`B)~{7ALGTuMBOu_YW^FySPM1Ee)PnwN6FA z@BJnUB?-SCS9L^M8~1g)L?X;6jTB)bYT#mKR7I;<5Or#dS?p^>7I!No2L({(L~8^E zRfU|$<@u%g8CUt1l3^;iv||+FytzuDyTx><%uq1yx`&iF_DUb4x;b*^nn(14`V`E2 z*&q7oNd1RP=TR?TrJo*qkK)q&jCgE2bgpr+PA2T*@e4SWZIg~3 zHA;BF2_TNsUOhn~@YlT$Uphw3+Ske5M|J$;HLtMq4v${4H;R;-%tg%(jBa?-W zs<`JiuY_TnV+W9V1nk`{8N#QoUr_DaSv{A80tTyNOf! zf~PiYHx|=8H6x?xr;q(e!)WNanZ+Kv6aO|xG+4-V_Xnv&i9N7P9qCG`ah%N}PAJaW zVCgfBw__g8HM1ITBHiQXk6gv-iPRJi>}vmKcEMZ0YI+3JtkKgx(){iijX{q&Mr8#p z&qD_f(meNw9t|q$)f)`f*ZoKI!yF_#Dx3G(sGzy1OE&d3UX7)x_|{F36uf}?g< zJ``yzE7^vqjo0l7u@q9!4=-TOw$UK7CDfEG#AklHJ35$jiey~e!+UkHs!GtH3#gJD25ByylzWM^laszSLd-Im1%07sRg2T|WI43!w6x zd^}pQJLTwspXZ2tgOm}GvR>CUMW>jxKCx!FQEZ1 zOSZ6_3X_el#++{16*vk7v%a*TSd7ByNr&PciTWJ3j(8P^ZOV)D$s!Iyq_f6sg6F3n zn&0($w6O;}IE;sH+`q1WU5(oxXcunYd#oi3ZEz8rZlt4HeKtX0XjVjI`u?@Hs(n-$ zc=56jxHzUmYj_TY3>rJ`!I^Eh<(4HIHSsQ$hx}-NCX%8l^-E}t5}kpPM;u-)(?}|B zWixsYr!Ed*AG~6jb7HW|?)8#XI_66YwDEZ83CAN{SEKEqu7)1R5u5QTN=!f&i8;Mb z9}mt2@Mt8D=eCOmj8f9ZYs^(M2!#4mex@hYc7a>JG$IS3?D;^Eb>-x7ku!q?xBbz% zq9tQ}>hZJZ4<5>qnGY#QNo{|M_2X?pQS3+{xfBlo8Tyrn5&z~BtAE>V^B`Tr$(8pG zpsOVGAUQz)mno&(8gn`USl}#)xh0P66w|3)kf-Z&(DU%=1oU1!E(U69cGer+e0h#E zracH_V-@qWiF{^Pr;_ZxYsp|Bv^cQ1jZfJk0f~7robEGqXlW9Ob()yiMVDMAO4SKq zCimEpJaM!8IpC4F0wt!$#D^W_?9&)&@Mp&xpS7zZ+AwvlP|i^ufqaC;8wP}`jhUr= ziJFIt$GCSXo_(MjT90aBOnvrqaLxV>`E8Dt^jQFLA6?O-e@%4fM)vQDywKp}6Bx5| zf1Qs^{WAT^C|t&D^D7|SSC*ZH=w52CkS2l8fsfYqm8rxgd@AU-QKk^?0l|~+Q1u|C z$fq9Md-?w3XT66XygGiihgL}*mdQj1%Qnd%)JuL{+ouk$-K0_6`x36^tto_E(Prb8 z=L>drAn`huJCCui;_8~5c(bqTI@Mr}L(^Ot8&h))r-jW~1KTrmL;q@c{j1^iZ=S_^ zkfBHa_5mp#%mz zlx|G8C~X~_OXl;~;{;n>y4DuUzKtPik9?2}7cU>acp`sBf7@_jmzOd2%sQe~7j=hg zrKs&RIbJhEv;~&ys&RF5wO1au7|6Ed<4HP==m~^*MC_9Va-}|clvM;&=aKQhV_qQF zWT{oc6zEr}U9NQ57w?y5Ei4q2Bcq*FnHUPmnqNew(5z&_D~~%I0yKWrd0Z~e>v-$7 zf4>KpLa+)z!wWh4w7)t@D)Rfekt}&s%AR?7)9P`bJ1G68FpE$6@hDtiJZAgWeQIo1 zi&=)^_y?X9E|Gb*M=Yipd-qy%tH5>uBuDKQ1>>i4Wr6^L>d~$L|mgqJs5dk z2VFi|7{e6m6{S(t2e=?j{7`cA7WVMS0|y#lZ)376DJ8qB7^2N^$h?uS7y8G&o*b-j z8{-3f3@?e7T#V~J$nrYVnW@+AHkkd%JfG1zSPbBHVcohc9F%Oji)jJEthLx z%~{&us;4|bHkbj%v+LChEO`Tnes0nLBGbTgd2e$>L{>LrSxJ?*jS7Ho;Ya3GprSY@ z#L5v(jWdq%<~T&kG=JcM|CFv)W|$PeGx9*I*Z^hd0_2sXCI%6x(}F@6F%emND``z9IF-9@ zhNlo%c?uT@p2R9WoiEOyv`f$xHay0P%@ehu?Rm(|ThBIqcnId4KWK1DN@u!6CTW^S zmEz3#G)ff4h|qGa_5RcjU6VFR5T~W|BylII^(g`qni&x$5o=`lik%Paay%GTI<96u zWzQGUD%@C?n4Nu)#qX&V3#TaNi<8IhM~k4%F7vuGj}p}L7LCDkJ*$&#T1(nrv;d675q6 z=BdXZ#^uL7;xHsK4rJWnX=uDv4|&fBkPTq=9F|o&+V)7`l8kAO&MbILJP7U#6oN7j zGxK8;q4G_z)t(-vxLEk*Ba*n2jZkghXb>BtaXFaydR&FgrNqYOsp$yb5Ql|u$7GN& z8f=MKZE?B>I9UuOOrjK=;0SD^2r0R|*S8bqMGHN&iak1s@-h}7_{Ku6^Dc|dkGAkp zsB<^eN6F1_L2!C9QYuVP>{oDdehyTN@#>|r&uyF40rY8wjjgIUuRW{8D)5 zX6${(gLMRlr1kAq^8vMItFzgdsFp62kh#gWGy}H$aY)vh)^6QE&!q%xAV~`ISV%#| zxqZE^LWUru5hZXJ+MFFa#v7l$M*_ok6(iNfIt5U{VUZ-nce6~S2<~}UfuJMY1Px;2Rvk_&E zZ;m!z9Jt1N6V3&zDrftxiW)R4!VOAw74%tayG6&7mdkS-enWu_LT=lP(ez1uz@c4DSt8+hhhz#8lyCsPBl`_q*3@2ff5S*}r%QifMW1805E z(-os-wA%X+q3xr=_LVm;vfSWcDcC1kQMjn2kMhzge4@CNWMHnA$Ch3vX*=tVo>hVE zUIkbBfkla{ChM0vrhac=e2T<~Wx`6{+&PY2u+U*x^A5;h>`yWrl@UAeFV(PI{hmG#mUd$i?TZmh zxAqc&<8w`EuW29m@D+fic*l3`EkVTSTlQRT)n5-L)TfT2*|>%DO_3&9FtYFiq(k&o zD^3!!g6k;+0;Cl|?#igA@QQXD3aLT~r+!SIn&}Nqe$tnes90#tQuXWa9_el33Fg7) z$^)@J|1^uMGSl2Ic%%|t7iF%FTC4s1^k~H@v`$}b^PRZ2M81~860R=ok~4euDtdgB z!|2pUOKfT8EZU_`K@PZb*3rIcF0i)>3TqbQG(QbMK=nPZJ7dIVL@zC0j3}eUa5x3} z+*6b3a1n@Zk~FB0@FGoQDu_&EO3}^J{3M+V zH={NIq}drDQ%w8*fP4$%pAv}A2p~$kHPf)zR6@SXpzAF%=<78v&XaMTPPy%1xe~IewCi-V39?SMQhl=$x5?->z96{9G}GM1-MEz~uUN}%g(^+{vW*!yz=-&`Vsvjl6Cqpg?p{S|C-cybjq^Kaoi%QF)aj4e>KT|46w z(>K{JfMD(d!8Pj}s6Eb1B>Bfs;sZ{P%s^13VQ3wNGe2NSwU5SNoAFGTh zyG)5;7|)oa{qq-*}T5nW7tf4NpwEDh~ zS~@p})D-sN*qF%-U5Nr-Kia_@mkMTxH+GeP`(pK;lELrwDTodHSIeyb7jgsk6(KjB z7^+JFj8vGde;mM`U7G|!r`i_E7K0i`&E!YRkic*HUXlZ(X|c?gXnM2ToqhgUS;P~1 z8{;CETT1y58~ubT;#f)66ut^RTPSmZnJ1P+fyy_~7=tL$lD(3PyA(pDDCeUE(YU&} zpnW~Zd{Jk1;l4^_!heAiQH&wHtq^$Rd4*Z)c$@U=nU1)N*M?aAiW79dEDm_+JKHFQ zM+_r8EmtK@)mP6}{NYkq%tY~0=7FZU{ zbgxPx0Tjlr4C&g@SdZXFxf1@|;e5n*_@3pdKJA-|$vlq)nW1@P#qU5&)1AHkoS859 zvOWWJ-mFjEMx&F}piUY%V@V>QQzs$ckgci}y9O3D^kMd?uBE(M3d+W31n)!AIp-&_5Ms1mztL6a>6`x zt!k2Wb)qequ2W-5i3l%rB@TK$jOd}#r2HDz@~fK%>c*1r?8#-6qDb^WEu0lz-OtPm zT*Qzd6ED|GwKqm(i&bBG08@1Ox3|>7Qq;SZ26Mpj;+E5F)cHNn(GO0!ZurJhjU6uC z>u$?19~9aZ<6l5wEt`oEFu|!J1vJKo!)06q9Ng2Pim5xIJr+`_ja_yi!>z?L24jtv zuyW82lq5v|oF<72vHSk>y$ z!DhvhfFLq$%M-{spRO0DmoE_4uFys5Q!t$lZE50h#u&0z;~y@R>Y z!QAX%ZgnuXI~eQ$t+(IpVB|>GN_5br`k+hpL6`1>F5w4V$`87vA9QIy=n{X>rT(x> z{b85-!!GrQUFr|J)E{=KKkQO}*rookOZ{P&`s-cluXm}}>AO}BUGGwVy-WS|F7?;D z)L-vXf4xin^)B@{y42t3Qh%dM{f#d5H@ei{=u&^9OZ|;5^*6fI-{?{=U&&Uh-t1C; zvrGNWF7-FN)ZgqQe8wSl3rh_ilBmztyGw zR+su)UFvUjslVN&{&tu8+g<8!cd5VKZTs6@>Th?czul$&c9;6wUFz?2slU^u{!W+r zJ6-DUbg947rT$Kr`a50f?{ulZ)204ym-@S1>hE@`zuTq$ZkPJIUFz?4slVH${%)80 zyItz-lhv(hdvL8w|G~9x1rDxtYjAL_TLt{6JFMa0TDKAh*SfVhxYn)4!L=Rr*tzUd z4}3zBLS#RSq~R`Ed%5nj8`QNgmg60yd0k4kFK_y{pFe-+orj;+reb{|5eC}x|Tw6D>Uqz`_H;KE=WwauU_oOhw|e5t+ct?N@nyRe>H>~h^#i% zeXhufy61J@?xd2V0nS0z4C{UNRd#bcbxBYvsGqofc2B+KuHI%`+^a<;jJ9&&g9q#W@o2Ebinu!18FT&4jb;qnq2uRA?;PJ`UN6pdOJ|&i;}U;8+t$aPKg7(X z^B(FqY5wW9drw|G>m9#%c+`7a+XJh$jVFD8b|23heb4v3q{(Gi*)<;Wv6EVc0`j*e zDx7ts8Q~(4Y}7Rj=c$srVW-Bp=>dyel?wgOtcJ}nR>jMSsse2)35Lcu@mc9xEDvdh zocqN1I^l3Ae`EhGoK>ukR8968NQ#f^*hqmU1`m6RSaR|)UXMSIKXJyy;@X@y3Zfw_ znn9g%L`HNLe9v&pr&py6i$U*tcDb~nfVx1zrYl|Db-;G*jAD>>-d4(ig?sQf&BW@! zFt?IdiL4YG2WB?n&9Z7~;O`GMn(1UvOv^5}FI*7TFxcⅅ^PC8!sL%i$5$5FLVD~ z7$urj-u12a21Wq?Mbm5m`UQ)WiNYvk_0Z>3cGJEAm4m6j|m+wd)Yw^g%b~=1FKHn0nT^u^w z*DA1&KxQjl1IZjq>jx}ew@9W1qzSS>cr;gAPPji88>=j$SQ^v=(i^G`_w_S@BY!*^ zzWwUe3%pJ2s~=C|)!|eaeu(I|;=@+^ff3vKY)NtO#1Tu!tE!hdAbnxjywu7e*X;XI VmuwEJqe>mJb}Z#eQRd$Ie*ku6_|O0V literal 0 HcmV?d00001 From 43e6d50ffc4151f224f400e7685837618ebf19cd Mon Sep 17 00:00:00 2001 From: Seth Sandler Date: Fri, 10 Oct 2025 14:01:18 -0700 Subject: [PATCH 11/16] no message --- src/main.cpp | 176 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 166 insertions(+), 10 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 02d009c..111e456 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -119,6 +120,7 @@ struct ArtboardData struct RiveFileData { + std::string rivOriginalFileName; std::string rivPascalCase; std::string rivCameCase; std::string riveSnakeCase; @@ -299,21 +301,59 @@ static rive::rcp openFile(const char name[]) return rive::File::import(bytes, &gFactory); } +static bool shouldIncludeElement(const std::string& name, bool ignorePrivate) +{ + if (!ignorePrivate) + { + return true; + } + + // Check for underscore prefix + if (!name.empty() && name[0] == '_') + { + return false; + } + + // Check for "internal" or "private" prefix (case-insensitive) + std::string lowerName = name; + std::transform(lowerName.begin(), lowerName.end(), lowerName.begin(), ::tolower); + + if (lowerName.rfind("internal", 0) == 0) + { + return false; + } + + if (lowerName.rfind("private", 0) == 0) + { + return false; + } + + return true; +} + static std::vector getAnimationsFromArtboard( - rive::ArtboardInstance* artboard) + rive::ArtboardInstance* artboard, bool ignorePrivate = false) { std::vector animations; auto animationCount = artboard->animationCount(); for (int i = 0; i < animationCount; i++) { auto animation = artboard->animationAt(i); - animations.push_back(animation->name()); + std::string animationName = animation->name(); + + // Skip animations that start with internal/private/_ + if (!shouldIncludeElement(animationName, ignorePrivate)) + { + continue; + } + + animations.push_back(animationName); } return animations; } static std::vector>> -getStateMachinesFromArtboard(rive::ArtboardInstance* artboard) +getStateMachinesFromArtboard(rive::ArtboardInstance* artboard, bool ignorePrivate = false) { std::vector>> stateMachines; auto stateMachineCount = artboard->stateMachineCount(); @@ -322,6 +362,12 @@ getStateMachinesFromArtboard(rive::ArtboardInstance* artboard) auto stateMachine = artboard->stateMachineAt(i); std::string stateMachineName = stateMachine->name(); + // Skip state machines that start with internal/private/_ + if (!shouldIncludeElement(stateMachineName, ignorePrivate)) + { + continue; + } + std::vector inputs; auto inputCount = stateMachine->inputCount(); for (int j = 0; j < inputCount; j++) @@ -551,7 +597,7 @@ static std::string dataTypeToString(rive::DataType type) } } -static std::optional processRiveFile(const std::string& riveFilePath) +static std::optional processRiveFile(const std::string& riveFilePath, bool ignorePrivate = false) { // Check if the file is empty if (std::filesystem::is_empty(riveFilePath)) @@ -573,6 +619,7 @@ static std::optional processRiveFile(const std::string& riveFilePa std::string fileNameWithoutExtension = path.stem().string(); std::vector assets = getAssetsFromFile(riveFile.get()); RiveFileData fileData; + fileData.rivOriginalFileName = fileNameWithoutExtension; // Preserve original filename fileData.rivPascalCase = toPascalCase(fileNameWithoutExtension); fileData.rivCameCase = toCamelCase(fileNameWithoutExtension); fileData.riveSnakeCase = toSnakeCase(fileNameWithoutExtension); @@ -596,17 +643,32 @@ static std::optional processRiveFile(const std::string& riveFilePa } } + // Track which enums are actually used by non-filtered ViewModels + std::unordered_set usedEnumNames; + // Process view models for (size_t i = 0; i < riveFile->viewModelCount(); i++) { auto viewModel = riveFile->viewModelByIndex(i); if (viewModel) { + // Skip view models that start with internal/private/_ + if (!shouldIncludeElement(viewModel->name(), ignorePrivate)) + { + continue; + } + ViewModelInfo viewModelInfo; viewModelInfo.name = viewModel->name(); auto propertiesData = viewModel->properties(); for (const auto& property : propertiesData) { + // Skip properties that start with internal/private/_ + if (!shouldIncludeElement(property.name, ignorePrivate)) + { + continue; + } + if (property.type == rive::DataType::viewModel) { // TODO: this is a hack @@ -614,6 +676,13 @@ static std::optional processRiveFile(const std::string& riveFilePa viewModel->createInstance()->propertyViewModel( property.name); auto vm = nestedViewModel->instance()->viewModel(); + + // Skip nested ViewModels that have private names + if (!shouldIncludeElement(vm->name(), ignorePrivate)) + { + continue; + } + viewModelInfo.properties.push_back( {property.name, dataTypeToString(property.type), @@ -632,6 +701,9 @@ static std::optional processRiveFile(const std::string& riveFilePa ->as(); auto enumName = enumProperty->dataEnum()->enumName(); + // Track that this enum is used by a non-filtered ViewModel + usedEnumNames.insert(enumName); + // Get the default value from the enum instance uint32_t defaultIndex = enum_instance->propertyValue(); auto dataEnum = enumProperty->dataEnum(); @@ -667,7 +739,21 @@ static std::optional processRiveFile(const std::string& riveFilePa vmi->propertyValue(property.name)); defaultValue = string_instance->propertyValue(); } - // Trigger and viewModel types don't have default values + else if (property.type == rive::DataType::color) { + auto color_instance = static_cast( + vmi->propertyValue(property.name)); + int colorValue = color_instance->propertyValue(); + // Format as hex string (0xAARRGGBB) + std::stringstream ss; + ss << "0x" << std::hex << std::uppercase << std::setfill('0') + << std::setw(8) << static_cast(colorValue); + defaultValue = ss.str(); + } + else if (property.type == rive::DataType::assetImage) { + // Image properties don't have extractable default values + defaultValue = ""; + } + // Trigger and other types don't have default values viewModelInfo.properties.push_back( {property.name, dataTypeToString(property.type), "", defaultValue}); @@ -677,6 +763,22 @@ static std::optional processRiveFile(const std::string& riveFilePa } } + // Filter enums to only include those used by non-filtered ViewModels + // If ignorePrivate is enabled and we have ViewModels, only keep enums that are actually used + if (ignorePrivate && !fileData.viewmodels.empty()) + { + std::vector filteredEnums; + for (const auto& enumInfo : fileData.enums) + { + // Keep enum if it's used by a non-filtered ViewModel + if (usedEnumNames.count(enumInfo.name) > 0) + { + filteredEnums.push_back(enumInfo); + } + } + fileData.enums = filteredEnums; + } + // Extract default relationship chain auto defaultArtboard = riveFile->artboard(); // First artboard is default fileData.hasDefaults = (defaultArtboard != nullptr); @@ -705,6 +807,12 @@ static std::optional processRiveFile(const std::string& riveFilePa auto artboard = riveFile->artboardAt(i); std::string artboardName = artboard->name(); + // Skip artboards that start with internal/private/_ + if (!shouldIncludeElement(artboardName, ignorePrivate)) + { + continue; + } + std::string artboardPascalCase = toPascalCase(artboardName); std::string artboardCameCase = toCamelCase(artboardName); std::string artboardSnakeCase = toSnakeCase(artboardName); @@ -715,9 +823,9 @@ static std::optional processRiveFile(const std::string& riveFilePa makeUnique(artboardCameCase, usedArtboardNames); std::vector animations = - getAnimationsFromArtboard(artboard.get()); + getAnimationsFromArtboard(artboard.get(), ignorePrivate); std::vector>> - stateMachines = getStateMachinesFromArtboard(artboard.get()); + stateMachines = getStateMachinesFromArtboard(artboard.get(), ignorePrivate); std::vector textValueRuns = getTextValueRunsFromArtboard(artboard.get()); std::vector nestedTextValueRuns = @@ -785,6 +893,7 @@ int main(int argc, char* argv[]) std::string outputFilePath; std::string templatePath; Language language = Language::Dart; // Default to Dart + bool ignorePrivate = false; app.add_option("-i, --input", inputPath, @@ -805,6 +914,10 @@ int main(int argc, char* argv[]) {"js", Language::JavaScript}}, CLI::ignore_case)); + app.add_flag("--ignore-private", + ignorePrivate, + "Skip artboards, animations, state machines, and properties starting with 'internal', 'private', or '_'"); + CLI11_PARSE(app, argc, argv) std::string templateStr; @@ -850,7 +963,7 @@ int main(int argc, char* argv[]) std::vector riveFileDataList; for (const auto& riv_file : riveFiles) { - auto result = processRiveFile(riv_file); + auto result = processRiveFile(riv_file, ignorePrivate); if (result) { riveFileDataList.push_back(*result); @@ -867,6 +980,7 @@ int main(int argc, char* argv[]) { const auto& fileData = riveFileDataList[fileIndex]; kainjow::mustache::data riveFileData; + riveFileData["riv_original_file_name"] = fileData.rivOriginalFileName; riveFileData["riv_pascal_case"] = fileData.rivPascalCase; riveFileData["riv_camel_case"] = fileData.rivCameCase; riveFileData["riv_snake_case"] = fileData.riveSnakeCase; @@ -899,11 +1013,16 @@ int main(int argc, char* argv[]) { const auto& value = enumInfo.values[valueIndex]; kainjow::mustache::data valueData; + const auto enumValueCamel = toCamelCase(value.key); valueData["enum_value_key"] = value.key; - valueData["enum_value_camel_case"] = toCamelCase(value.key); + valueData["enum_value_camel_case"] = enumValueCamel; valueData["enum_value_pascal_case"] = toPascalCase(value.key); valueData["enum_value_snake_case"] = toSnakeCase(value.key); valueData["enum_value_kebab_case"] = toKebabCase(value.key); + if (value.key != enumValueCamel) + { + valueData["enum_value_needs_explicit_value"] = true; + } valueData["last"] = (valueIndex == enumInfo.values.size() - 1); enumValues.push_back(valueData); @@ -964,6 +1083,7 @@ int main(int argc, char* argv[]) property.type == "boolean"); propertyTypeData.set("is_color", property.type == "color"); propertyTypeData.set("is_list", property.type == "list"); + propertyTypeData.set("is_image", property.type == "image" || property.type == "assetImage"); propertyTypeData.set("is_trigger", property.type == "trigger"); propertyTypeData.set("backing_name", property.backingName); @@ -1155,6 +1275,42 @@ int main(int argc, char* argv[]) } riveFileData["artboards"] = artboardList; + + // Add count flags for conditional generation + riveFileData["artboard_count"] = fileData.artboards.size(); + riveFileData["has_multiple_artboards"] = fileData.artboards.size() > 1; + + // Count total animations and state machines across all artboards + size_t totalAnimations = 0; + size_t totalStateMachines = 0; + for (const auto& artboard : fileData.artboards) { + totalAnimations += artboard.animations.size(); + totalStateMachines += artboard.stateMachines.size(); + } + riveFileData["total_animation_count"] = totalAnimations; + riveFileData["has_multiple_animations"] = totalAnimations > 1; + riveFileData["total_state_machine_count"] = totalStateMachines; + riveFileData["has_state_machines"] = totalStateMachines > 0; + riveFileData["has_multiple_state_machines"] = totalStateMachines > 1; + + // Add metadata flag - show metadata if there are multiples of any type + bool hasMetadata = fileData.artboards.size() > 1 || totalAnimations > 1 || totalStateMachines > 1; + riveFileData["has_metadata"] = hasMetadata; + + // Add view model existence flag + bool hasViewModel = !fileData.viewmodels.empty(); + riveFileData["has_view_model"] = hasViewModel; + + // Add type-safe switching flag - show type-safe methods only if there will be actual methods + // Methods are shown when: + // - switchArtboard: has_multiple_artboards + // - playAnimation: !has_view_model && !has_state_machines && has_multiple_animations + // - switchStateMachine: has_multiple_state_machines + bool hasTypeSafeSwitching = fileData.artboards.size() > 1 || + (!hasViewModel && totalStateMachines == 0 && totalAnimations > 1) || + totalStateMachines > 1; + riveFileData["has_type_safe_switching"] = hasTypeSafeSwitching; + riveFileList.push_back(riveFileData); } @@ -1191,4 +1347,4 @@ int main(int argc, char* argv[]) std::cout << "File generated successfully: " << output_path << std::endl; return 0; -} \ No newline at end of file +} From b4af108598bc4d07d2c31444a93ce4326673ccc7 Mon Sep 17 00:00:00 2001 From: Seth Sandler Date: Tue, 21 Oct 2025 16:47:44 -0700 Subject: [PATCH 12/16] Add support for Inja templating instead of mustache --- external/inja.hpp | 3075 +++++ external/nlohmann/json.hpp | 25677 +++++++++++++++++++++++++++++++++++ src/main.cpp | 351 +- 3 files changed, 29101 insertions(+), 2 deletions(-) create mode 100644 external/inja.hpp create mode 100644 external/nlohmann/json.hpp diff --git a/external/inja.hpp b/external/inja.hpp new file mode 100644 index 0000000..db597fa --- /dev/null +++ b/external/inja.hpp @@ -0,0 +1,3075 @@ +/* + ___ _ Version 3.5.0 + |_ _|_ __ (_) __ _ https://github.com/pantor/inja + | || '_ \ | |/ _` | Licensed under the MIT License . + | || | | || | (_| | + |___|_| |_|/ |\__,_| Copyright (c) 2018-2025 Lars Berscheid + |__/ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef INCLUDE_INJA_INJA_HPP_ +#define INCLUDE_INJA_INJA_HPP_ + +// #include "json.hpp" +#ifndef INCLUDE_INJA_JSON_HPP_ +#define INCLUDE_INJA_JSON_HPP_ + +#include + +namespace inja { +#ifndef INJA_DATA_TYPE +using json = nlohmann::json; +#else +using json = INJA_DATA_TYPE; +#endif +} // namespace inja + +#endif // INCLUDE_INJA_JSON_HPP_ + +// #include "throw.hpp" +#ifndef INCLUDE_INJA_THROW_HPP_ +#define INCLUDE_INJA_THROW_HPP_ + +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(INJA_NOEXCEPTION) +#ifndef INJA_THROW +#define INJA_THROW(exception) throw exception +#endif +#else +#include +#ifndef INJA_THROW +#define INJA_THROW(exception) \ +std::abort(); \ + std::ignore = exception +#endif +#ifndef INJA_NOEXCEPTION +#define INJA_NOEXCEPTION +#endif +#endif + +#endif // INCLUDE_INJA_THROW_HPP_ + +// #include "environment.hpp" +#ifndef INCLUDE_INJA_ENVIRONMENT_HPP_ +#define INCLUDE_INJA_ENVIRONMENT_HPP_ + +#include +#include +#include +#include +#include +#include + +// #include "json.hpp" + +// #include "config.hpp" +#ifndef INCLUDE_INJA_CONFIG_HPP_ +#define INCLUDE_INJA_CONFIG_HPP_ + +#include +#include +#include + +// #include "template.hpp" +#ifndef INCLUDE_INJA_TEMPLATE_HPP_ +#define INCLUDE_INJA_TEMPLATE_HPP_ + +#include +#include +#include + +// #include "node.hpp" +#ifndef INCLUDE_INJA_NODE_HPP_ +#define INCLUDE_INJA_NODE_HPP_ + +#include +#include +#include +#include +#include +#include + +// #include "function_storage.hpp" +#ifndef INCLUDE_INJA_FUNCTION_STORAGE_HPP_ +#define INCLUDE_INJA_FUNCTION_STORAGE_HPP_ + +#include +#include +#include +#include +#include +#include + +// #include "json.hpp" + + +namespace inja { + +using Arguments = std::vector; +using CallbackFunction = std::function; +using VoidCallbackFunction = std::function; + +/*! + * \brief Class for builtin functions and user-defined callbacks. + */ +class FunctionStorage { +public: + enum class Operation { + Not, + And, + Or, + In, + Equal, + NotEqual, + Greater, + GreaterEqual, + Less, + LessEqual, + Add, + Subtract, + Multiplication, + Division, + Power, + Modulo, + AtId, + At, + Capitalize, + Default, + DivisibleBy, + Even, + Exists, + ExistsInObject, + First, + Float, + Int, + IsArray, + IsBoolean, + IsFloat, + IsInteger, + IsNumber, + IsObject, + IsString, + Last, + Length, + Lower, + Max, + Min, + Odd, + Range, + Replace, + Round, + Sort, + Upper, + Super, + Join, + Callback, + None, + }; + + struct FunctionData { + explicit FunctionData(const Operation& op, const CallbackFunction& cb = CallbackFunction {}): operation(op), callback(cb) {} + const Operation operation; + const CallbackFunction callback; + }; + +private: + const int VARIADIC {-1}; + + std::map, FunctionData> function_storage = { + {std::make_pair("at", 2), FunctionData {Operation::At}}, + {std::make_pair("capitalize", 1), FunctionData {Operation::Capitalize}}, + {std::make_pair("default", 2), FunctionData {Operation::Default}}, + {std::make_pair("divisibleBy", 2), FunctionData {Operation::DivisibleBy}}, + {std::make_pair("even", 1), FunctionData {Operation::Even}}, + {std::make_pair("exists", 1), FunctionData {Operation::Exists}}, + {std::make_pair("existsIn", 2), FunctionData {Operation::ExistsInObject}}, + {std::make_pair("first", 1), FunctionData {Operation::First}}, + {std::make_pair("float", 1), FunctionData {Operation::Float}}, + {std::make_pair("int", 1), FunctionData {Operation::Int}}, + {std::make_pair("isArray", 1), FunctionData {Operation::IsArray}}, + {std::make_pair("isBoolean", 1), FunctionData {Operation::IsBoolean}}, + {std::make_pair("isFloat", 1), FunctionData {Operation::IsFloat}}, + {std::make_pair("isInteger", 1), FunctionData {Operation::IsInteger}}, + {std::make_pair("isNumber", 1), FunctionData {Operation::IsNumber}}, + {std::make_pair("isObject", 1), FunctionData {Operation::IsObject}}, + {std::make_pair("isString", 1), FunctionData {Operation::IsString}}, + {std::make_pair("last", 1), FunctionData {Operation::Last}}, + {std::make_pair("length", 1), FunctionData {Operation::Length}}, + {std::make_pair("lower", 1), FunctionData {Operation::Lower}}, + {std::make_pair("max", 1), FunctionData {Operation::Max}}, + {std::make_pair("min", 1), FunctionData {Operation::Min}}, + {std::make_pair("odd", 1), FunctionData {Operation::Odd}}, + {std::make_pair("range", 1), FunctionData {Operation::Range}}, + {std::make_pair("replace", 3), FunctionData {Operation::Replace}}, + {std::make_pair("round", 2), FunctionData {Operation::Round}}, + {std::make_pair("sort", 1), FunctionData {Operation::Sort}}, + {std::make_pair("upper", 1), FunctionData {Operation::Upper}}, + {std::make_pair("super", 0), FunctionData {Operation::Super}}, + {std::make_pair("super", 1), FunctionData {Operation::Super}}, + {std::make_pair("join", 2), FunctionData {Operation::Join}}, + }; + +public: + void add_builtin(std::string_view name, int num_args, Operation op) { + function_storage.emplace(std::make_pair(static_cast(name), num_args), FunctionData {op}); + } + + void add_callback(std::string_view name, int num_args, const CallbackFunction& callback) { + function_storage.emplace(std::make_pair(static_cast(name), num_args), FunctionData {Operation::Callback, callback}); + } + + FunctionData find_function(std::string_view name, int num_args) const { + auto it = function_storage.find(std::make_pair(static_cast(name), num_args)); + if (it != function_storage.end()) { + return it->second; + + // Find variadic function + } else if (num_args > 0) { + it = function_storage.find(std::make_pair(static_cast(name), VARIADIC)); + if (it != function_storage.end()) { + return it->second; + } + } + + return FunctionData {Operation::None}; + } +}; + +} // namespace inja + +#endif // INCLUDE_INJA_FUNCTION_STORAGE_HPP_ + +// #include "utils.hpp" +#ifndef INCLUDE_INJA_UTILS_HPP_ +#define INCLUDE_INJA_UTILS_HPP_ + +#include +#include +#include +#include +#include + +// #include "exceptions.hpp" +#ifndef INCLUDE_INJA_EXCEPTIONS_HPP_ +#define INCLUDE_INJA_EXCEPTIONS_HPP_ + +#include +#include +#include + +namespace inja { + +struct SourceLocation { + size_t line; + size_t column; +}; + +struct InjaError : public std::runtime_error { + const std::string type; + const std::string message; + + const SourceLocation location; + + explicit InjaError(const std::string& type, const std::string& message) + : std::runtime_error("[inja.exception." + type + "] " + message), type(type), message(message), location({0, 0}) {} + + explicit InjaError(const std::string& type, const std::string& message, SourceLocation location) + : std::runtime_error("[inja.exception." + type + "] (at " + std::to_string(location.line) + ":" + std::to_string(location.column) + ") " + message), + type(type), message(message), location(location) {} +}; + +struct ParserError : public InjaError { + explicit ParserError(const std::string& message, SourceLocation location): InjaError("parser_error", message, location) {} +}; + +struct RenderError : public InjaError { + explicit RenderError(const std::string& message, SourceLocation location): InjaError("render_error", message, location) {} +}; + +struct FileError : public InjaError { + explicit FileError(const std::string& message): InjaError("file_error", message) {} + explicit FileError(const std::string& message, SourceLocation location): InjaError("file_error", message, location) {} +}; + +struct DataError : public InjaError { + explicit DataError(const std::string& message, SourceLocation location): InjaError("data_error", message, location) {} +}; + +} // namespace inja + +#endif // INCLUDE_INJA_EXCEPTIONS_HPP_ + + +namespace inja { + +namespace string_view { +inline std::string_view slice(std::string_view view, size_t start, size_t end) { + start = std::min(start, view.size()); + end = std::min(std::max(start, end), view.size()); + return view.substr(start, end - start); +} + +inline std::pair split(std::string_view view, char Separator) { + const size_t idx = view.find(Separator); + if (idx == std::string_view::npos) { + return std::make_pair(view, std::string_view()); + } + return std::make_pair(slice(view, 0, idx), slice(view, idx + 1, std::string_view::npos)); +} + +inline bool starts_with(std::string_view view, std::string_view prefix) { + return (view.size() >= prefix.size() && view.compare(0, prefix.size(), prefix) == 0); +} +} // namespace string_view + +inline SourceLocation get_source_location(std::string_view content, size_t pos) { + // Get line and offset position (starts at 1:1) + auto sliced = string_view::slice(content, 0, pos); + const std::size_t last_newline = sliced.rfind('\n'); + + if (last_newline == std::string_view::npos) { + return {1, sliced.length() + 1}; + } + + // Count newlines + size_t count_lines = 0; + size_t search_start = 0; + while (search_start <= sliced.size()) { + search_start = sliced.find('\n', search_start) + 1; + if (search_start == 0) { + break; + } + count_lines += 1; + } + + return {count_lines + 1, sliced.length() - last_newline}; +} + +inline void replace_substring(std::string& s, const std::string& f, const std::string& t) { + if (f.empty()) { + return; + } + for (auto pos = s.find(f); // find first occurrence of f + pos != std::string::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} +} + +} // namespace inja + +#endif // INCLUDE_INJA_UTILS_HPP_ + +// #include "json.hpp" + + +namespace inja { + +class NodeVisitor; +class BlockNode; +class TextNode; +class ExpressionNode; +class LiteralNode; +class DataNode; +class FunctionNode; +class ExpressionListNode; +class StatementNode; +class ForStatementNode; +class ForArrayStatementNode; +class ForObjectStatementNode; +class IfStatementNode; +class IncludeStatementNode; +class ExtendsStatementNode; +class BlockStatementNode; +class SetStatementNode; + +class NodeVisitor { +public: + virtual ~NodeVisitor() = default; + + virtual void visit(const BlockNode& node) = 0; + virtual void visit(const TextNode& node) = 0; + virtual void visit(const ExpressionNode& node) = 0; + virtual void visit(const LiteralNode& node) = 0; + virtual void visit(const DataNode& node) = 0; + virtual void visit(const FunctionNode& node) = 0; + virtual void visit(const ExpressionListNode& node) = 0; + virtual void visit(const StatementNode& node) = 0; + virtual void visit(const ForStatementNode& node) = 0; + virtual void visit(const ForArrayStatementNode& node) = 0; + virtual void visit(const ForObjectStatementNode& node) = 0; + virtual void visit(const IfStatementNode& node) = 0; + virtual void visit(const IncludeStatementNode& node) = 0; + virtual void visit(const ExtendsStatementNode& node) = 0; + virtual void visit(const BlockStatementNode& node) = 0; + virtual void visit(const SetStatementNode& node) = 0; +}; + +/*! + * \brief Base node class for the abstract syntax tree (AST). + */ +class AstNode { +public: + virtual void accept(NodeVisitor& v) const = 0; + + size_t pos; + + explicit AstNode(size_t pos): pos(pos) {} + virtual ~AstNode() {} +}; + +class BlockNode : public AstNode { +public: + std::vector> nodes; + + explicit BlockNode(): AstNode(0) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class TextNode : public AstNode { +public: + const size_t length; + + explicit TextNode(size_t pos, size_t length): AstNode(pos), length(length) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class ExpressionNode : public AstNode { +public: + explicit ExpressionNode(size_t pos): AstNode(pos) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class LiteralNode : public ExpressionNode { +public: + const json value; + + explicit LiteralNode(std::string_view data_text, size_t pos): ExpressionNode(pos), value(json::parse(data_text)) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class DataNode : public ExpressionNode { +public: + const std::string name; + const json::json_pointer ptr; + + static std::string convert_dot_to_ptr(std::string_view ptr_name) { + std::string result; + do { + std::string_view part; + std::tie(part, ptr_name) = string_view::split(ptr_name, '.'); + result.push_back('/'); + result.append(part.begin(), part.end()); + } while (!ptr_name.empty()); + return result; + } + + explicit DataNode(std::string_view ptr_name, size_t pos): ExpressionNode(pos), name(ptr_name), ptr(json::json_pointer(convert_dot_to_ptr(ptr_name))) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class FunctionNode : public ExpressionNode { + using Op = FunctionStorage::Operation; + +public: + enum class Associativity { + Left, + Right, + }; + + unsigned int precedence; + Associativity associativity; + + Op operation; + + std::string name; + int number_args; // Can also be negative -> -1 for unknown number + std::vector> arguments; + CallbackFunction callback; + + explicit FunctionNode(std::string_view name, size_t pos) + : ExpressionNode(pos), precedence(8), associativity(Associativity::Left), operation(Op::Callback), name(name), number_args(0) {} + explicit FunctionNode(Op operation, size_t pos): ExpressionNode(pos), operation(operation), number_args(1) { + switch (operation) { + case Op::Not: { + number_args = 1; + precedence = 4; + associativity = Associativity::Left; + } break; + case Op::And: { + number_args = 2; + precedence = 1; + associativity = Associativity::Left; + } break; + case Op::Or: { + number_args = 2; + precedence = 1; + associativity = Associativity::Left; + } break; + case Op::In: { + number_args = 2; + precedence = 2; + associativity = Associativity::Left; + } break; + case Op::Equal: { + number_args = 2; + precedence = 2; + associativity = Associativity::Left; + } break; + case Op::NotEqual: { + number_args = 2; + precedence = 2; + associativity = Associativity::Left; + } break; + case Op::Greater: { + number_args = 2; + precedence = 2; + associativity = Associativity::Left; + } break; + case Op::GreaterEqual: { + number_args = 2; + precedence = 2; + associativity = Associativity::Left; + } break; + case Op::Less: { + number_args = 2; + precedence = 2; + associativity = Associativity::Left; + } break; + case Op::LessEqual: { + number_args = 2; + precedence = 2; + associativity = Associativity::Left; + } break; + case Op::Add: { + number_args = 2; + precedence = 3; + associativity = Associativity::Left; + } break; + case Op::Subtract: { + number_args = 2; + precedence = 3; + associativity = Associativity::Left; + } break; + case Op::Multiplication: { + number_args = 2; + precedence = 4; + associativity = Associativity::Left; + } break; + case Op::Division: { + number_args = 2; + precedence = 4; + associativity = Associativity::Left; + } break; + case Op::Power: { + number_args = 2; + precedence = 5; + associativity = Associativity::Right; + } break; + case Op::Modulo: { + number_args = 2; + precedence = 4; + associativity = Associativity::Left; + } break; + case Op::AtId: { + number_args = 2; + precedence = 8; + associativity = Associativity::Left; + } break; + default: { + precedence = 1; + associativity = Associativity::Left; + } + } + } + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class ExpressionListNode : public AstNode { +public: + std::shared_ptr root; + + explicit ExpressionListNode(): AstNode(0) {} + explicit ExpressionListNode(size_t pos): AstNode(pos) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class StatementNode : public AstNode { +public: + explicit StatementNode(size_t pos): AstNode(pos) {} + + virtual void accept(NodeVisitor& v) const = 0; +}; + +class ForStatementNode : public StatementNode { +public: + ExpressionListNode condition; + BlockNode body; + BlockNode* const parent; + + explicit ForStatementNode(BlockNode* const parent, size_t pos): StatementNode(pos), parent(parent) {} + + virtual void accept(NodeVisitor& v) const = 0; +}; + +class ForArrayStatementNode : public ForStatementNode { +public: + const std::string value; + + explicit ForArrayStatementNode(const std::string& value, BlockNode* const parent, size_t pos): ForStatementNode(parent, pos), value(value) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class ForObjectStatementNode : public ForStatementNode { +public: + const std::string key; + const std::string value; + + explicit ForObjectStatementNode(const std::string& key, const std::string& value, BlockNode* const parent, size_t pos) + : ForStatementNode(parent, pos), key(key), value(value) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class IfStatementNode : public StatementNode { +public: + ExpressionListNode condition; + BlockNode true_statement; + BlockNode false_statement; + BlockNode* const parent; + + const bool is_nested; + bool has_false_statement {false}; + + explicit IfStatementNode(BlockNode* const parent, size_t pos): StatementNode(pos), parent(parent), is_nested(false) {} + explicit IfStatementNode(bool is_nested, BlockNode* const parent, size_t pos): StatementNode(pos), parent(parent), is_nested(is_nested) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class IncludeStatementNode : public StatementNode { +public: + const std::string file; + + explicit IncludeStatementNode(const std::string& file, size_t pos): StatementNode(pos), file(file) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class ExtendsStatementNode : public StatementNode { +public: + const std::string file; + + explicit ExtendsStatementNode(const std::string& file, size_t pos): StatementNode(pos), file(file) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class BlockStatementNode : public StatementNode { +public: + const std::string name; + BlockNode block; + BlockNode* const parent; + + explicit BlockStatementNode(BlockNode* const parent, const std::string& name, size_t pos): StatementNode(pos), name(name), parent(parent) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +class SetStatementNode : public StatementNode { +public: + const std::string key; + ExpressionListNode expression; + + explicit SetStatementNode(const std::string& key, size_t pos): StatementNode(pos), key(key) {} + + void accept(NodeVisitor& v) const override { + v.visit(*this); + } +}; + +} // namespace inja + +#endif // INCLUDE_INJA_NODE_HPP_ + +// #include "statistics.hpp" +#ifndef INCLUDE_INJA_STATISTICS_HPP_ +#define INCLUDE_INJA_STATISTICS_HPP_ + +// #include "node.hpp" + + +namespace inja { + +/*! + * \brief A class for counting statistics on a Template. + */ +class StatisticsVisitor : public NodeVisitor { + void visit(const BlockNode& node) override { + for (const auto& n : node.nodes) { + n->accept(*this); + } + } + + void visit(const TextNode&) override {} + void visit(const ExpressionNode&) override {} + void visit(const LiteralNode&) override {} + + void visit(const DataNode&) override { + variable_counter += 1; + } + + void visit(const FunctionNode& node) override { + for (const auto& n : node.arguments) { + n->accept(*this); + } + } + + void visit(const ExpressionListNode& node) override { + node.root->accept(*this); + } + + void visit(const StatementNode&) override {} + void visit(const ForStatementNode&) override {} + + void visit(const ForArrayStatementNode& node) override { + node.condition.accept(*this); + node.body.accept(*this); + } + + void visit(const ForObjectStatementNode& node) override { + node.condition.accept(*this); + node.body.accept(*this); + } + + void visit(const IfStatementNode& node) override { + node.condition.accept(*this); + node.true_statement.accept(*this); + node.false_statement.accept(*this); + } + + void visit(const IncludeStatementNode&) override {} + + void visit(const ExtendsStatementNode&) override {} + + void visit(const BlockStatementNode& node) override { + node.block.accept(*this); + } + + void visit(const SetStatementNode&) override {} + +public: + size_t variable_counter {0}; + + explicit StatisticsVisitor() {} +}; + +} // namespace inja + +#endif // INCLUDE_INJA_STATISTICS_HPP_ + + +namespace inja { + +/*! + * \brief The main inja Template. + */ +struct Template { + BlockNode root; + std::string content; + std::map> block_storage; + + explicit Template() {} + explicit Template(std::string content): content(std::move(content)) {} + + /// Return number of variables (total number, not distinct ones) in the template + size_t count_variables() const { + auto statistic_visitor = StatisticsVisitor(); + root.accept(statistic_visitor); + return statistic_visitor.variable_counter; + } +}; + +using TemplateStorage = std::map; + +} // namespace inja + +#endif // INCLUDE_INJA_TEMPLATE_HPP_ + + +namespace inja { + +/*! + * \brief Class for lexer configuration. + */ +struct LexerConfig { + std::string statement_open {"{%"}; + std::string statement_open_no_lstrip {"{%+"}; + std::string statement_open_force_lstrip {"{%-"}; + std::string statement_close {"%}"}; + std::string statement_close_force_rstrip {"-%}"}; + std::string line_statement {"##"}; + std::string expression_open {"{{"}; + std::string expression_open_force_lstrip {"{{-"}; + std::string expression_close {"}}"}; + std::string expression_close_force_rstrip {"-}}"}; + std::string comment_open {"{#"}; + std::string comment_open_force_lstrip {"{#-"}; + std::string comment_close {"#}"}; + std::string comment_close_force_rstrip {"-#}"}; + std::string open_chars {"#{"}; + + bool trim_blocks {false}; + bool lstrip_blocks {false}; + + void update_open_chars() { + open_chars = ""; + if (open_chars.find(line_statement[0]) == std::string::npos) { + open_chars += line_statement[0]; + } + if (open_chars.find(statement_open[0]) == std::string::npos) { + open_chars += statement_open[0]; + } + if (open_chars.find(statement_open_no_lstrip[0]) == std::string::npos) { + open_chars += statement_open_no_lstrip[0]; + } + if (open_chars.find(statement_open_force_lstrip[0]) == std::string::npos) { + open_chars += statement_open_force_lstrip[0]; + } + if (open_chars.find(expression_open[0]) == std::string::npos) { + open_chars += expression_open[0]; + } + if (open_chars.find(expression_open_force_lstrip[0]) == std::string::npos) { + open_chars += expression_open_force_lstrip[0]; + } + if (open_chars.find(comment_open[0]) == std::string::npos) { + open_chars += comment_open[0]; + } + if (open_chars.find(comment_open_force_lstrip[0]) == std::string::npos) { + open_chars += comment_open_force_lstrip[0]; + } + } +}; + +/*! + * \brief Class for parser configuration. + */ +struct ParserConfig { + bool search_included_templates_in_files {true}; + + std::function include_callback; +}; + +/*! + * \brief Class for render configuration. + */ +struct RenderConfig { + bool throw_at_missing_includes {true}; + bool html_autoescape {false}; +}; + +} // namespace inja + +#endif // INCLUDE_INJA_CONFIG_HPP_ + +// #include "function_storage.hpp" + +// #include "parser.hpp" +#ifndef INCLUDE_INJA_PARSER_HPP_ +#define INCLUDE_INJA_PARSER_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// #include "config.hpp" + +// #include "exceptions.hpp" + +// #include "function_storage.hpp" + +// #include "lexer.hpp" +#ifndef INCLUDE_INJA_LEXER_HPP_ +#define INCLUDE_INJA_LEXER_HPP_ + +#include +#include +#include + +// #include "config.hpp" + +// #include "exceptions.hpp" + +// #include "token.hpp" +#ifndef INCLUDE_INJA_TOKEN_HPP_ +#define INCLUDE_INJA_TOKEN_HPP_ + +#include +#include + +namespace inja { + +/*! + * \brief Helper-class for the inja Lexer. + */ +struct Token { + enum class Kind { + Text, + ExpressionOpen, // {{ + ExpressionClose, // }} + LineStatementOpen, // ## + LineStatementClose, // \n + StatementOpen, // {% + StatementClose, // %} + CommentOpen, // {# + CommentClose, // #} + Id, // this, this.foo + Number, // 1, 2, -1, 5.2, -5.3 + String, // "this" + Plus, // + + Minus, // - + Times, // * + Slash, // / + Percent, // % + Power, // ^ + Comma, // , + Dot, // . + Colon, // : + LeftParen, // ( + RightParen, // ) + LeftBracket, // [ + RightBracket, // ] + LeftBrace, // { + RightBrace, // } + Equal, // == + NotEqual, // != + GreaterThan, // > + GreaterEqual, // >= + LessThan, // < + LessEqual, // <= + Pipe, // | + Unknown, + Eof, + }; + + Kind kind {Kind::Unknown}; + std::string_view text; + + explicit constexpr Token() = default; + explicit constexpr Token(Kind kind, std::string_view text): kind(kind), text(text) {} + + std::string describe() const { + switch (kind) { + case Kind::Text: + return ""; + case Kind::LineStatementClose: + return ""; + case Kind::Eof: + return ""; + default: + return static_cast(text); + } + } +}; + +} // namespace inja + +#endif // INCLUDE_INJA_TOKEN_HPP_ + +// #include "utils.hpp" + + +namespace inja { + +/*! + * \brief Class for lexing an inja Template. + */ +class Lexer { + enum class State { + Text, + ExpressionStart, + ExpressionStartForceLstrip, + ExpressionBody, + LineStart, + LineBody, + StatementStart, + StatementStartNoLstrip, + StatementStartForceLstrip, + StatementBody, + CommentStart, + CommentStartForceLstrip, + CommentBody, + }; + + enum class MinusState { + Operator, + Number, + }; + + const LexerConfig& config; + + State state; + MinusState minus_state; + std::string_view m_in; + size_t tok_start; + size_t pos; + + Token scan_body(std::string_view close, Token::Kind closeKind, std::string_view close_trim = std::string_view(), bool trim = false) { + again: + // skip whitespace (except for \n as it might be a close) + if (tok_start >= m_in.size()) { + return make_token(Token::Kind::Eof); + } + const char ch = m_in[tok_start]; + if (ch == ' ' || ch == '\t' || ch == '\r') { + tok_start += 1; + goto again; + } + + // check for close + if (!close_trim.empty() && inja::string_view::starts_with(m_in.substr(tok_start), close_trim)) { + state = State::Text; + pos = tok_start + close_trim.size(); + const Token tok = make_token(closeKind); + skip_whitespaces_and_newlines(); + return tok; + } + + if (inja::string_view::starts_with(m_in.substr(tok_start), close)) { + state = State::Text; + pos = tok_start + close.size(); + const Token tok = make_token(closeKind); + if (trim) { + skip_whitespaces_and_first_newline(); + } + return tok; + } + + // skip \n + if (ch == '\n') { + tok_start += 1; + goto again; + } + + pos = tok_start + 1; + if (std::isalpha(ch)) { + minus_state = MinusState::Operator; + return scan_id(); + } + + const MinusState current_minus_state = minus_state; + if (minus_state == MinusState::Operator) { + minus_state = MinusState::Number; + } + + switch (ch) { + case '+': + return make_token(Token::Kind::Plus); + case '-': + if (current_minus_state == MinusState::Operator) { + return make_token(Token::Kind::Minus); + } + return scan_number(); + case '*': + return make_token(Token::Kind::Times); + case '/': + return make_token(Token::Kind::Slash); + case '^': + return make_token(Token::Kind::Power); + case '%': + return make_token(Token::Kind::Percent); + case '.': + return make_token(Token::Kind::Dot); + case ',': + return make_token(Token::Kind::Comma); + case ':': + return make_token(Token::Kind::Colon); + case '|': + return make_token(Token::Kind::Pipe); + case '(': + return make_token(Token::Kind::LeftParen); + case ')': + minus_state = MinusState::Operator; + return make_token(Token::Kind::RightParen); + case '[': + return make_token(Token::Kind::LeftBracket); + case ']': + minus_state = MinusState::Operator; + return make_token(Token::Kind::RightBracket); + case '{': + return make_token(Token::Kind::LeftBrace); + case '}': + minus_state = MinusState::Operator; + return make_token(Token::Kind::RightBrace); + case '>': + if (pos < m_in.size() && m_in[pos] == '=') { + pos += 1; + return make_token(Token::Kind::GreaterEqual); + } + return make_token(Token::Kind::GreaterThan); + case '<': + if (pos < m_in.size() && m_in[pos] == '=') { + pos += 1; + return make_token(Token::Kind::LessEqual); + } + return make_token(Token::Kind::LessThan); + case '=': + if (pos < m_in.size() && m_in[pos] == '=') { + pos += 1; + return make_token(Token::Kind::Equal); + } + return make_token(Token::Kind::Unknown); + case '!': + if (pos < m_in.size() && m_in[pos] == '=') { + pos += 1; + return make_token(Token::Kind::NotEqual); + } + return make_token(Token::Kind::Unknown); + case '\"': + return scan_string(); + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + minus_state = MinusState::Operator; + return scan_number(); + case '_': + case '@': + case '$': + minus_state = MinusState::Operator; + return scan_id(); + default: + return make_token(Token::Kind::Unknown); + } + } + + Token scan_id() { + for (;;) { + if (pos >= m_in.size()) { + break; + } + const char ch = m_in[pos]; + if (!std::isalnum(ch) && ch != '.' && ch != '/' && ch != '_' && ch != '-') { + break; + } + pos += 1; + } + return make_token(Token::Kind::Id); + } + + Token scan_number() { + for (;;) { + if (pos >= m_in.size()) { + break; + } + const char ch = m_in[pos]; + // be very permissive in lexer (we'll catch errors when conversion happens) + if (!(std::isdigit(ch) || ch == '.' || ch == 'e' || ch == 'E' || (ch == '+' && (pos == 0 || m_in[pos-1] == 'e' || m_in[pos-1] == 'E')) || (ch == '-' && (pos == 0 || m_in[pos-1] == 'e' || m_in[pos-1] == 'E')))) { + break; + } + pos += 1; + } + return make_token(Token::Kind::Number); + } + + Token scan_string() { + bool escape {false}; + for (;;) { + if (pos >= m_in.size()) { + break; + } + const char ch = m_in[pos++]; + if (ch == '\\') { + escape = !escape; + } else if (!escape && ch == m_in[tok_start]) { + break; + } else { + escape = false; + } + } + return make_token(Token::Kind::String); + } + + Token make_token(Token::Kind kind) const { + return Token(kind, string_view::slice(m_in, tok_start, pos)); + } + + void skip_whitespaces_and_newlines() { + if (pos < m_in.size()) { + while (pos < m_in.size() && (m_in[pos] == ' ' || m_in[pos] == '\t' || m_in[pos] == '\n' || m_in[pos] == '\r')) { + pos += 1; + } + } + } + + void skip_whitespaces_and_first_newline() { + if (pos < m_in.size()) { + while (pos < m_in.size() && (m_in[pos] == ' ' || m_in[pos] == '\t')) { + pos += 1; + } + } + + if (pos < m_in.size()) { + const char ch = m_in[pos]; + if (ch == '\n') { + pos += 1; + } else if (ch == '\r') { + pos += 1; + if (pos < m_in.size() && m_in[pos] == '\n') { + pos += 1; + } + } + } + } + + static std::string_view clear_final_line_if_whitespace(std::string_view text) { + std::string_view result = text; + while (!result.empty()) { + const char ch = result.back(); + if (ch == ' ' || ch == '\t') { + result.remove_suffix(1); + } else if (ch == '\n' || ch == '\r') { + break; + } else { + return text; + } + } + return result; + } + +public: + explicit Lexer(const LexerConfig& config): config(config), state(State::Text), minus_state(MinusState::Number), tok_start(0), pos(0) {} + + SourceLocation current_position() const { + return get_source_location(m_in, tok_start); + } + + void start(std::string_view input) { + m_in = input; + tok_start = 0; + pos = 0; + state = State::Text; + minus_state = MinusState::Number; + + // Consume byte order mark (BOM) for UTF-8 + if (inja::string_view::starts_with(m_in, "\xEF\xBB\xBF")) { + m_in = m_in.substr(3); + } + } + + Token scan() { + tok_start = pos; + + again: + if (tok_start >= m_in.size()) { + return make_token(Token::Kind::Eof); + } + + switch (state) { + default: + case State::Text: { + // fast-scan to first open character + const size_t open_start = m_in.substr(pos).find_first_of(config.open_chars); + if (open_start == std::string_view::npos) { + // didn't find open, return remaining text as text token + pos = m_in.size(); + return make_token(Token::Kind::Text); + } + pos += open_start; + + // try to match one of the opening sequences, and get the close + const std::string_view open_str = m_in.substr(pos); + bool must_lstrip = false; + if (inja::string_view::starts_with(open_str, config.expression_open)) { + if (inja::string_view::starts_with(open_str, config.expression_open_force_lstrip)) { + state = State::ExpressionStartForceLstrip; + must_lstrip = true; + } else { + state = State::ExpressionStart; + } + } else if (inja::string_view::starts_with(open_str, config.statement_open)) { + if (inja::string_view::starts_with(open_str, config.statement_open_no_lstrip)) { + state = State::StatementStartNoLstrip; + } else if (inja::string_view::starts_with(open_str, config.statement_open_force_lstrip)) { + state = State::StatementStartForceLstrip; + must_lstrip = true; + } else { + state = State::StatementStart; + must_lstrip = config.lstrip_blocks; + } + } else if (inja::string_view::starts_with(open_str, config.comment_open)) { + if (inja::string_view::starts_with(open_str, config.comment_open_force_lstrip)) { + state = State::CommentStartForceLstrip; + must_lstrip = true; + } else { + state = State::CommentStart; + must_lstrip = config.lstrip_blocks; + } + } else if ((pos == 0 || m_in[pos - 1] == '\n') && inja::string_view::starts_with(open_str, config.line_statement)) { + state = State::LineStart; + } else { + pos += 1; // wasn't actually an opening sequence + goto again; + } + + std::string_view text = string_view::slice(m_in, tok_start, pos); + if (must_lstrip) { + text = clear_final_line_if_whitespace(text); + } + + if (text.empty()) { + goto again; // don't generate empty token + } + return Token(Token::Kind::Text, text); + } + case State::ExpressionStart: { + state = State::ExpressionBody; + pos += config.expression_open.size(); + return make_token(Token::Kind::ExpressionOpen); + } + case State::ExpressionStartForceLstrip: { + state = State::ExpressionBody; + pos += config.expression_open_force_lstrip.size(); + return make_token(Token::Kind::ExpressionOpen); + } + case State::LineStart: { + state = State::LineBody; + pos += config.line_statement.size(); + return make_token(Token::Kind::LineStatementOpen); + } + case State::StatementStart: { + state = State::StatementBody; + pos += config.statement_open.size(); + return make_token(Token::Kind::StatementOpen); + } + case State::StatementStartNoLstrip: { + state = State::StatementBody; + pos += config.statement_open_no_lstrip.size(); + return make_token(Token::Kind::StatementOpen); + } + case State::StatementStartForceLstrip: { + state = State::StatementBody; + pos += config.statement_open_force_lstrip.size(); + return make_token(Token::Kind::StatementOpen); + } + case State::CommentStart: { + state = State::CommentBody; + pos += config.comment_open.size(); + return make_token(Token::Kind::CommentOpen); + } + case State::CommentStartForceLstrip: { + state = State::CommentBody; + pos += config.comment_open_force_lstrip.size(); + return make_token(Token::Kind::CommentOpen); + } + case State::ExpressionBody: + return scan_body(config.expression_close, Token::Kind::ExpressionClose, config.expression_close_force_rstrip); + case State::LineBody: + return scan_body("\n", Token::Kind::LineStatementClose); + case State::StatementBody: + return scan_body(config.statement_close, Token::Kind::StatementClose, config.statement_close_force_rstrip, config.trim_blocks); + case State::CommentBody: { + // fast-scan to comment close + const size_t end = m_in.substr(pos).find(config.comment_close); + if (end == std::string_view::npos) { + pos = m_in.size(); + return make_token(Token::Kind::Eof); + } + + // Check for trim pattern + const bool must_rstrip = inja::string_view::starts_with(m_in.substr(pos + end - 1), config.comment_close_force_rstrip); + + // return the entire comment in the close token + state = State::Text; + pos += end + config.comment_close.size(); + Token tok = make_token(Token::Kind::CommentClose); + + if (must_rstrip || config.trim_blocks) { + skip_whitespaces_and_first_newline(); + } + return tok; + } + } + } + + const LexerConfig& get_config() const { + return config; + } +}; + +} // namespace inja + +#endif // INCLUDE_INJA_LEXER_HPP_ + +// #include "node.hpp" + +// #include "template.hpp" + +// #include "throw.hpp" + +// #include "token.hpp" + + +namespace inja { + +/*! + * \brief Class for parsing an inja Template. + */ +class Parser { + using Arguments = std::vector>; + using OperatorStack = std::stack>; + + const ParserConfig& config; + + Lexer lexer; + TemplateStorage& template_storage; + const FunctionStorage& function_storage; + + Token tok, peek_tok; + bool have_peek_tok {false}; + + std::string_view literal_start; + + BlockNode* current_block {nullptr}; + ExpressionListNode* current_expression_list {nullptr}; + + std::stack if_statement_stack; + std::stack for_statement_stack; + std::stack block_statement_stack; + + void throw_parser_error(const std::string& message) const { + INJA_THROW(ParserError(message, lexer.current_position())); + } + + void get_next_token() { + if (have_peek_tok) { + tok = peek_tok; + have_peek_tok = false; + } else { + tok = lexer.scan(); + } + } + + void get_peek_token() { + if (!have_peek_tok) { + peek_tok = lexer.scan(); + have_peek_tok = true; + } + } + + void add_literal(Arguments &arguments, const char* content_ptr) { + const std::string_view data_text(literal_start.data(), tok.text.data() - literal_start.data() + tok.text.size()); + arguments.emplace_back(std::make_shared(data_text, data_text.data() - content_ptr)); + } + + void add_operator(Arguments &arguments, OperatorStack &operator_stack) { + auto function = operator_stack.top(); + operator_stack.pop(); + + if (static_cast(arguments.size()) < function->number_args) { + throw_parser_error("too few arguments"); + } + + for (int i = 0; i < function->number_args; ++i) { + function->arguments.insert(function->arguments.begin(), arguments.back()); + arguments.pop_back(); + } + arguments.emplace_back(function); + } + + void add_to_template_storage(const std::filesystem::path& path, std::string& template_name) { + if (template_storage.find(template_name) != template_storage.end()) { + return; + } + + const std::string original_name = template_name; + + if (config.search_included_templates_in_files) { + // Build the relative path + template_name = (path / original_name).string(); + if (template_name.compare(0, 2, "./") == 0) { + template_name.erase(0, 2); + } + + if (template_storage.find(template_name) == template_storage.end()) { + // Load file + std::ifstream file; + file.open(template_name); + if (!file.fail()) { + const std::string text((std::istreambuf_iterator(file)), std::istreambuf_iterator()); + + auto include_template = Template(text); + template_storage.emplace(template_name, include_template); + parse_into_template(template_storage[template_name], template_name); + return; + } else if (!config.include_callback) { + INJA_THROW(FileError("failed accessing file at '" + template_name + "'")); + } + } + } + + // Try include callback + if (config.include_callback) { + auto include_template = config.include_callback(path, original_name); + template_storage.emplace(template_name, include_template); + } + } + + std::string parse_filename() const { + if (tok.kind != Token::Kind::String) { + throw_parser_error("expected string, got '" + tok.describe() + "'"); + } + + if (tok.text.length() < 2) { + throw_parser_error("expected filename, got '" + static_cast(tok.text) + "'"); + } + + // Remove first and last character "" + return std::string {tok.text.substr(1, tok.text.length() - 2)}; + } + + bool parse_expression(Template& tmpl, Token::Kind closing) { + current_expression_list->root = parse_expression(tmpl); + return tok.kind == closing; + } + + std::shared_ptr parse_expression(Template& tmpl) { + size_t current_bracket_level {0}; + size_t current_brace_level {0}; + Arguments arguments; + OperatorStack operator_stack; + + while (tok.kind != Token::Kind::Eof) { + // Literals + switch (tok.kind) { + case Token::Kind::String: { + if (current_brace_level == 0 && current_bracket_level == 0) { + literal_start = tok.text; + add_literal(arguments, tmpl.content.c_str()); + } + } break; + case Token::Kind::Number: { + if (current_brace_level == 0 && current_bracket_level == 0) { + literal_start = tok.text; + add_literal(arguments, tmpl.content.c_str()); + } + } break; + case Token::Kind::LeftBracket: { + if (current_brace_level == 0 && current_bracket_level == 0) { + literal_start = tok.text; + } + current_bracket_level += 1; + } break; + case Token::Kind::LeftBrace: { + if (current_brace_level == 0 && current_bracket_level == 0) { + literal_start = tok.text; + } + current_brace_level += 1; + } break; + case Token::Kind::RightBracket: { + if (current_bracket_level == 0) { + throw_parser_error("unexpected ']'"); + } + + current_bracket_level -= 1; + if (current_brace_level == 0 && current_bracket_level == 0) { + add_literal(arguments, tmpl.content.c_str()); + } + } break; + case Token::Kind::RightBrace: { + if (current_brace_level == 0) { + throw_parser_error("unexpected '}'"); + } + + current_brace_level -= 1; + if (current_brace_level == 0 && current_bracket_level == 0) { + add_literal(arguments, tmpl.content.c_str()); + } + } break; + case Token::Kind::Id: { + get_peek_token(); + + // Data Literal + if (tok.text == static_cast("true") || tok.text == static_cast("false") || + tok.text == static_cast("null")) { + if (current_brace_level == 0 && current_bracket_level == 0) { + literal_start = tok.text; + add_literal(arguments, tmpl.content.c_str()); + } + + // Operator + } else if (tok.text == "and" || tok.text == "or" || tok.text == "in" || tok.text == "not") { + goto parse_operator; + + // Functions + } else if (peek_tok.kind == Token::Kind::LeftParen) { + auto func = std::make_shared(tok.text, tok.text.data() - tmpl.content.c_str()); + get_next_token(); + do { + get_next_token(); + auto expr = parse_expression(tmpl); + if (!expr) { + break; + } + func->number_args += 1; + func->arguments.emplace_back(expr); + } while (tok.kind == Token::Kind::Comma); + if (tok.kind != Token::Kind::RightParen) { + throw_parser_error("expected right parenthesis, got '" + tok.describe() + "'"); + } + + auto function_data = function_storage.find_function(func->name, func->number_args); + if (function_data.operation == FunctionStorage::Operation::None) { + throw_parser_error("unknown function " + func->name); + } + func->operation = function_data.operation; + if (function_data.operation == FunctionStorage::Operation::Callback) { + func->callback = function_data.callback; + } + arguments.emplace_back(func); + + // Variables + } else { + arguments.emplace_back(std::make_shared(static_cast(tok.text), tok.text.data() - tmpl.content.c_str())); + } + + // Operators + } break; + case Token::Kind::Equal: + case Token::Kind::NotEqual: + case Token::Kind::GreaterThan: + case Token::Kind::GreaterEqual: + case Token::Kind::LessThan: + case Token::Kind::LessEqual: + case Token::Kind::Plus: + case Token::Kind::Minus: + case Token::Kind::Times: + case Token::Kind::Slash: + case Token::Kind::Power: + case Token::Kind::Percent: + case Token::Kind::Dot: { + + parse_operator: + FunctionStorage::Operation operation; + switch (tok.kind) { + case Token::Kind::Id: { + if (tok.text == "and") { + operation = FunctionStorage::Operation::And; + } else if (tok.text == "or") { + operation = FunctionStorage::Operation::Or; + } else if (tok.text == "in") { + operation = FunctionStorage::Operation::In; + } else if (tok.text == "not") { + operation = FunctionStorage::Operation::Not; + } else { + throw_parser_error("unknown operator in parser."); + } + } break; + case Token::Kind::Equal: { + operation = FunctionStorage::Operation::Equal; + } break; + case Token::Kind::NotEqual: { + operation = FunctionStorage::Operation::NotEqual; + } break; + case Token::Kind::GreaterThan: { + operation = FunctionStorage::Operation::Greater; + } break; + case Token::Kind::GreaterEqual: { + operation = FunctionStorage::Operation::GreaterEqual; + } break; + case Token::Kind::LessThan: { + operation = FunctionStorage::Operation::Less; + } break; + case Token::Kind::LessEqual: { + operation = FunctionStorage::Operation::LessEqual; + } break; + case Token::Kind::Plus: { + operation = FunctionStorage::Operation::Add; + } break; + case Token::Kind::Minus: { + operation = FunctionStorage::Operation::Subtract; + } break; + case Token::Kind::Times: { + operation = FunctionStorage::Operation::Multiplication; + } break; + case Token::Kind::Slash: { + operation = FunctionStorage::Operation::Division; + } break; + case Token::Kind::Power: { + operation = FunctionStorage::Operation::Power; + } break; + case Token::Kind::Percent: { + operation = FunctionStorage::Operation::Modulo; + } break; + case Token::Kind::Dot: { + operation = FunctionStorage::Operation::AtId; + } break; + default: { + throw_parser_error("unknown operator in parser."); + } + } + auto function_node = std::make_shared(operation, tok.text.data() - tmpl.content.c_str()); + + while (!operator_stack.empty() && + ((operator_stack.top()->precedence > function_node->precedence) || + (operator_stack.top()->precedence == function_node->precedence && function_node->associativity == FunctionNode::Associativity::Left))) { + add_operator(arguments, operator_stack); + } + + operator_stack.emplace(function_node); + } break; + case Token::Kind::Comma: { + if (current_brace_level == 0 && current_bracket_level == 0) { + goto break_loop; + } + } break; + case Token::Kind::Colon: { + if (current_brace_level == 0 && current_bracket_level == 0) { + throw_parser_error("unexpected ':'"); + } + } break; + case Token::Kind::LeftParen: { + get_next_token(); + auto expr = parse_expression(tmpl); + if (tok.kind != Token::Kind::RightParen) { + throw_parser_error("expected right parenthesis, got '" + tok.describe() + "'"); + } + if (!expr) { + throw_parser_error("empty expression in parentheses"); + } + arguments.emplace_back(expr); + } break; + + // parse function call pipe syntax + case Token::Kind::Pipe: { + // get function name + get_next_token(); + if (tok.kind != Token::Kind::Id) { + throw_parser_error("expected function name, got '" + tok.describe() + "'"); + } + auto func = std::make_shared(tok.text, tok.text.data() - tmpl.content.c_str()); + // add first parameter as last value from arguments + func->number_args += 1; + func->arguments.emplace_back(arguments.back()); + arguments.pop_back(); + get_peek_token(); + if (peek_tok.kind == Token::Kind::LeftParen) { + get_next_token(); + // parse additional parameters + do { + get_next_token(); + auto expr = parse_expression(tmpl); + if (!expr) { + break; + } + func->number_args += 1; + func->arguments.emplace_back(expr); + } while (tok.kind == Token::Kind::Comma); + if (tok.kind != Token::Kind::RightParen) { + throw_parser_error("expected right parenthesis, got '" + tok.describe() + "'"); + } + } + // search store for defined function with such name and number of args + auto function_data = function_storage.find_function(func->name, func->number_args); + if (function_data.operation == FunctionStorage::Operation::None) { + throw_parser_error("unknown function " + func->name); + } + func->operation = function_data.operation; + if (function_data.operation == FunctionStorage::Operation::Callback) { + func->callback = function_data.callback; + } + arguments.emplace_back(func); + } break; + default: + goto break_loop; + } + + get_next_token(); + } + + break_loop: + while (!operator_stack.empty()) { + add_operator(arguments, operator_stack); + } + + std::shared_ptr expr; + if (arguments.size() == 1) { + expr = arguments[0]; + arguments = {}; + } else if (arguments.size() > 1) { + throw_parser_error("malformed expression"); + } + return expr; + } + + bool parse_statement(Template& tmpl, Token::Kind closing, const std::filesystem::path& path) { + if (tok.kind != Token::Kind::Id) { + return false; + } + + if (tok.text == static_cast("if")) { + get_next_token(); + + auto if_statement_node = std::make_shared(current_block, tok.text.data() - tmpl.content.c_str()); + current_block->nodes.emplace_back(if_statement_node); + if_statement_stack.emplace(if_statement_node.get()); + current_block = &if_statement_node->true_statement; + current_expression_list = &if_statement_node->condition; + + if (!parse_expression(tmpl, closing)) { + return false; + } + } else if (tok.text == static_cast("else")) { + if (if_statement_stack.empty()) { + throw_parser_error("else without matching if"); + } + auto& if_statement_data = if_statement_stack.top(); + get_next_token(); + + if_statement_data->has_false_statement = true; + current_block = &if_statement_data->false_statement; + + // Chained else if + if (tok.kind == Token::Kind::Id && tok.text == static_cast("if")) { + get_next_token(); + + auto if_statement_node = std::make_shared(true, current_block, tok.text.data() - tmpl.content.c_str()); + current_block->nodes.emplace_back(if_statement_node); + if_statement_stack.emplace(if_statement_node.get()); + current_block = &if_statement_node->true_statement; + current_expression_list = &if_statement_node->condition; + + if (!parse_expression(tmpl, closing)) { + return false; + } + } + } else if (tok.text == static_cast("endif")) { + if (if_statement_stack.empty()) { + throw_parser_error("endif without matching if"); + } + + // Nested if statements + while (if_statement_stack.top()->is_nested) { + if_statement_stack.pop(); + } + + auto& if_statement_data = if_statement_stack.top(); + get_next_token(); + + current_block = if_statement_data->parent; + if_statement_stack.pop(); + } else if (tok.text == static_cast("block")) { + get_next_token(); + + if (tok.kind != Token::Kind::Id) { + throw_parser_error("expected block name, got '" + tok.describe() + "'"); + } + + const std::string block_name = static_cast(tok.text); + + auto block_statement_node = std::make_shared(current_block, block_name, tok.text.data() - tmpl.content.c_str()); + current_block->nodes.emplace_back(block_statement_node); + block_statement_stack.emplace(block_statement_node.get()); + current_block = &block_statement_node->block; + auto success = tmpl.block_storage.emplace(block_name, block_statement_node); + if (!success.second) { + throw_parser_error("block with the name '" + block_name + "' does already exist"); + } + + get_next_token(); + } else if (tok.text == static_cast("endblock")) { + if (block_statement_stack.empty()) { + throw_parser_error("endblock without matching block"); + } + + auto& block_statement_data = block_statement_stack.top(); + get_next_token(); + + current_block = block_statement_data->parent; + block_statement_stack.pop(); + } else if (tok.text == static_cast("for")) { + get_next_token(); + + // options: for a in arr; for a, b in obj + if (tok.kind != Token::Kind::Id) { + throw_parser_error("expected id, got '" + tok.describe() + "'"); + } + + Token value_token = tok; + get_next_token(); + + // Object type + std::shared_ptr for_statement_node; + if (tok.kind == Token::Kind::Comma) { + get_next_token(); + if (tok.kind != Token::Kind::Id) { + throw_parser_error("expected id, got '" + tok.describe() + "'"); + } + + const Token key_token = value_token; + value_token = tok; + get_next_token(); + + for_statement_node = std::make_shared(static_cast(key_token.text), static_cast(value_token.text), + current_block, tok.text.data() - tmpl.content.c_str()); + + // Array type + } else { + for_statement_node = + std::make_shared(static_cast(value_token.text), current_block, tok.text.data() - tmpl.content.c_str()); + } + + current_block->nodes.emplace_back(for_statement_node); + for_statement_stack.emplace(for_statement_node.get()); + current_block = &for_statement_node->body; + current_expression_list = &for_statement_node->condition; + + if (tok.kind != Token::Kind::Id || tok.text != static_cast("in")) { + throw_parser_error("expected 'in', got '" + tok.describe() + "'"); + } + get_next_token(); + + if (!parse_expression(tmpl, closing)) { + return false; + } + } else if (tok.text == static_cast("endfor")) { + if (for_statement_stack.empty()) { + throw_parser_error("endfor without matching for"); + } + + auto& for_statement_data = for_statement_stack.top(); + get_next_token(); + + current_block = for_statement_data->parent; + for_statement_stack.pop(); + } else if (tok.text == static_cast("include")) { + get_next_token(); + + std::string template_name = parse_filename(); + add_to_template_storage(path, template_name); + + current_block->nodes.emplace_back(std::make_shared(template_name, tok.text.data() - tmpl.content.c_str())); + + get_next_token(); + } else if (tok.text == static_cast("extends")) { + get_next_token(); + + std::string template_name = parse_filename(); + add_to_template_storage(path, template_name); + + current_block->nodes.emplace_back(std::make_shared(template_name, tok.text.data() - tmpl.content.c_str())); + + get_next_token(); + } else if (tok.text == static_cast("set")) { + get_next_token(); + + if (tok.kind != Token::Kind::Id) { + throw_parser_error("expected variable name, got '" + tok.describe() + "'"); + } + + const std::string key = static_cast(tok.text); + get_next_token(); + + auto set_statement_node = std::make_shared(key, tok.text.data() - tmpl.content.c_str()); + current_block->nodes.emplace_back(set_statement_node); + current_expression_list = &set_statement_node->expression; + + if (tok.text != static_cast("=")) { + throw_parser_error("expected '=', got '" + tok.describe() + "'"); + } + get_next_token(); + + if (!parse_expression(tmpl, closing)) { + return false; + } + } else { + return false; + } + return true; + } + + void parse_into(Template& tmpl, const std::filesystem::path& path) { + lexer.start(tmpl.content); + current_block = &tmpl.root; + + for (;;) { + get_next_token(); + switch (tok.kind) { + case Token::Kind::Eof: { + if (!if_statement_stack.empty()) { + throw_parser_error("unmatched if"); + } + if (!for_statement_stack.empty()) { + throw_parser_error("unmatched for"); + } + } + current_block = nullptr; + return; + case Token::Kind::Text: { + current_block->nodes.emplace_back(std::make_shared(tok.text.data() - tmpl.content.c_str(), tok.text.size())); + } break; + case Token::Kind::StatementOpen: { + get_next_token(); + if (!parse_statement(tmpl, Token::Kind::StatementClose, path)) { + throw_parser_error("expected statement, got '" + tok.describe() + "'"); + } + if (tok.kind != Token::Kind::StatementClose) { + throw_parser_error("expected statement close, got '" + tok.describe() + "'"); + } + } break; + case Token::Kind::LineStatementOpen: { + get_next_token(); + if (!parse_statement(tmpl, Token::Kind::LineStatementClose, path)) { + throw_parser_error("expected statement, got '" + tok.describe() + "'"); + } + if (tok.kind != Token::Kind::LineStatementClose && tok.kind != Token::Kind::Eof) { + throw_parser_error("expected line statement close, got '" + tok.describe() + "'"); + } + } break; + case Token::Kind::ExpressionOpen: { + get_next_token(); + + auto expression_list_node = std::make_shared(tok.text.data() - tmpl.content.c_str()); + current_block->nodes.emplace_back(expression_list_node); + current_expression_list = expression_list_node.get(); + + if (!parse_expression(tmpl, Token::Kind::ExpressionClose)) { + throw_parser_error("expected expression close, got '" + tok.describe() + "'"); + } + } break; + case Token::Kind::CommentOpen: { + get_next_token(); + if (tok.kind != Token::Kind::CommentClose) { + throw_parser_error("expected comment close, got '" + tok.describe() + "'"); + } + } break; + default: { + throw_parser_error("unexpected token '" + tok.describe() + "'"); + } break; + } + } + current_block = nullptr; + } + +public: + explicit Parser(const ParserConfig& parser_config, const LexerConfig& lexer_config, TemplateStorage& template_storage, + const FunctionStorage& function_storage) + : config(parser_config), lexer(lexer_config), template_storage(template_storage), function_storage(function_storage) {} + + Template parse(std::string_view input, const std::filesystem::path& path) { + auto result = Template(std::string(input)); + parse_into(result, path); + return result; + } + + void parse_into_template(Template& tmpl, const std::filesystem::path& filename) { + auto sub_parser = Parser(config, lexer.get_config(), template_storage, function_storage); + sub_parser.parse_into(tmpl, filename.parent_path()); + } + + static std::string load_file(const std::filesystem::path& filename) { + std::ifstream file; + file.open(filename); + if (file.fail()) { + INJA_THROW(FileError("failed accessing file at '" + filename.string() + "'")); + } + std::string text((std::istreambuf_iterator(file)), std::istreambuf_iterator()); + return text; + } +}; + +} // namespace inja + +#endif // INCLUDE_INJA_PARSER_HPP_ + +// #include "renderer.hpp" +#ifndef INCLUDE_INJA_RENDERER_HPP_ +#define INCLUDE_INJA_RENDERER_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// #include "config.hpp" + +// #include "exceptions.hpp" + +// #include "function_storage.hpp" + +// #include "node.hpp" + +// #include "template.hpp" + +// #include "throw.hpp" + +// #include "utils.hpp" + + +namespace inja { + +/*! +@brief Escapes HTML +*/ +inline std::string htmlescape(const std::string& data) { + std::string buffer; + buffer.reserve(static_cast(1.1 * data.size())); + for (size_t pos = 0; pos != data.size(); ++pos) { + switch (data[pos]) { + case '&': buffer.append("&"); break; + case '\"': buffer.append("""); break; + case '\'': buffer.append("'"); break; + case '<': buffer.append("<"); break; + case '>': buffer.append(">"); break; + default: buffer.append(&data[pos], 1); break; + } + } + return buffer; +} + +/*! + * \brief Class for rendering a Template with data. + */ +class Renderer : public NodeVisitor { + using Op = FunctionStorage::Operation; + + const RenderConfig config; + const TemplateStorage& template_storage; + const FunctionStorage& function_storage; + + const Template* current_template; + size_t current_level {0}; + std::vector template_stack; + std::vector block_statement_stack; + + const json* data_input; + std::ostream* output_stream; + + json additional_data; + json* current_loop_data = &additional_data["loop"]; + + std::vector> data_tmp_stack; + std::stack data_eval_stack; + std::stack not_found_stack; + + bool break_rendering {false}; + + static bool truthy(const json* data) { + if (data->is_boolean()) { + return data->get(); + } else if (data->is_number()) { + return (*data != 0); + } else if (data->is_null()) { + return false; + } + return !data->empty(); + } + + void print_data(const std::shared_ptr& value) { + if (value->is_string()) { + if (config.html_autoescape) { + *output_stream << htmlescape(value->get_ref()); + } else { + *output_stream << value->get_ref(); + } + } else if (value->is_number_unsigned()) { + *output_stream << value->get(); + } else if (value->is_number_integer()) { + *output_stream << value->get(); + } else if (value->is_null()) { + } else { + *output_stream << value->dump(); + } + } + + const std::shared_ptr eval_expression_list(const ExpressionListNode& expression_list) { + if (!expression_list.root) { + throw_renderer_error("empty expression", expression_list); + } + + expression_list.root->accept(*this); + + if (data_eval_stack.empty()) { + throw_renderer_error("empty expression", expression_list); + } else if (data_eval_stack.size() != 1) { + throw_renderer_error("malformed expression", expression_list); + } + + const auto result = data_eval_stack.top(); + data_eval_stack.pop(); + + if (result == nullptr) { + if (not_found_stack.empty()) { + throw_renderer_error("expression could not be evaluated", expression_list); + } + + const auto node = not_found_stack.top(); + not_found_stack.pop(); + + throw_renderer_error("variable '" + static_cast(node->name) + "' not found", *node); + } + return std::make_shared(*result); + } + + void throw_renderer_error(const std::string& message, const AstNode& node) { + const SourceLocation loc = get_source_location(current_template->content, node.pos); + INJA_THROW(RenderError(message, loc)); + } + + void make_result(const json&& result) { + auto result_ptr = std::make_shared(result); + data_tmp_stack.push_back(result_ptr); + data_eval_stack.push(result_ptr.get()); + } + + template std::array get_arguments(const FunctionNode& node) { + if (node.arguments.size() < N_start + N) { + throw_renderer_error("function needs " + std::to_string(N_start + N) + " variables, but has only found " + std::to_string(node.arguments.size()), node); + } + + for (size_t i = N_start; i < N_start + N; i += 1) { + node.arguments[i]->accept(*this); + } + + if (data_eval_stack.size() < N) { + throw_renderer_error("function needs " + std::to_string(N) + " variables, but has only found " + std::to_string(data_eval_stack.size()), node); + } + + std::array result; + for (size_t i = 0; i < N; i += 1) { + result[N - i - 1] = data_eval_stack.top(); + data_eval_stack.pop(); + + if (!result[N - i - 1]) { + const auto data_node = not_found_stack.top(); + not_found_stack.pop(); + + if (throw_not_found) { + throw_renderer_error("variable '" + static_cast(data_node->name) + "' not found", *data_node); + } + } + } + return result; + } + + template Arguments get_argument_vector(const FunctionNode& node) { + const size_t N = node.arguments.size(); + for (const auto& a : node.arguments) { + a->accept(*this); + } + + if (data_eval_stack.size() < N) { + throw_renderer_error("function needs " + std::to_string(N) + " variables, but has only found " + std::to_string(data_eval_stack.size()), node); + } + + Arguments result {N}; + for (size_t i = 0; i < N; i += 1) { + result[N - i - 1] = data_eval_stack.top(); + data_eval_stack.pop(); + + if (!result[N - i - 1]) { + const auto data_node = not_found_stack.top(); + not_found_stack.pop(); + + if (throw_not_found) { + throw_renderer_error("variable '" + static_cast(data_node->name) + "' not found", *data_node); + } + } + } + return result; + } + + void visit(const BlockNode& node) override { + for (const auto& n : node.nodes) { + n->accept(*this); + + if (break_rendering) { + break; + } + } + } + + void visit(const TextNode& node) override { + output_stream->write(current_template->content.c_str() + node.pos, node.length); + } + + void visit(const ExpressionNode&) override {} + + void visit(const LiteralNode& node) override { + data_eval_stack.push(&node.value); + } + + void visit(const DataNode& node) override { + if (additional_data.contains(node.ptr)) { + data_eval_stack.push(&(additional_data[node.ptr])); + } else if (data_input->contains(node.ptr)) { + data_eval_stack.push(&(*data_input)[node.ptr]); + } else { + // Try to evaluate as a no-argument callback + const auto function_data = function_storage.find_function(node.name, 0); + if (function_data.operation == FunctionStorage::Operation::Callback) { + Arguments empty_args {}; + const auto value = std::make_shared(function_data.callback(empty_args)); + data_tmp_stack.push_back(value); + data_eval_stack.push(value.get()); + } else { + data_eval_stack.push(nullptr); + not_found_stack.emplace(&node); + } + } + } + + void visit(const FunctionNode& node) override { + switch (node.operation) { + case Op::Not: { + const auto args = get_arguments<1>(node); + make_result(!truthy(args[0])); + } break; + case Op::And: { + make_result(truthy(get_arguments<1, 0>(node)[0]) && truthy(get_arguments<1, 1>(node)[0])); + } break; + case Op::Or: { + make_result(truthy(get_arguments<1, 0>(node)[0]) || truthy(get_arguments<1, 1>(node)[0])); + } break; + case Op::In: { + const auto args = get_arguments<2>(node); + make_result(std::find(args[1]->begin(), args[1]->end(), *args[0]) != args[1]->end()); + } break; + case Op::Equal: { + const auto args = get_arguments<2>(node); + make_result(*args[0] == *args[1]); + } break; + case Op::NotEqual: { + const auto args = get_arguments<2>(node); + make_result(*args[0] != *args[1]); + } break; + case Op::Greater: { + const auto args = get_arguments<2>(node); + make_result(*args[0] > *args[1]); + } break; + case Op::GreaterEqual: { + const auto args = get_arguments<2>(node); + make_result(*args[0] >= *args[1]); + } break; + case Op::Less: { + const auto args = get_arguments<2>(node); + make_result(*args[0] < *args[1]); + } break; + case Op::LessEqual: { + const auto args = get_arguments<2>(node); + make_result(*args[0] <= *args[1]); + } break; + case Op::Add: { + const auto args = get_arguments<2>(node); + if (args[0]->is_string() && args[1]->is_string()) { + make_result(args[0]->get_ref() + args[1]->get_ref()); + } else if (args[0]->is_number_integer() && args[1]->is_number_integer()) { + make_result(args[0]->get() + args[1]->get()); + } else { + make_result(args[0]->get() + args[1]->get()); + } + } break; + case Op::Subtract: { + const auto args = get_arguments<2>(node); + if (args[0]->is_number_integer() && args[1]->is_number_integer()) { + make_result(args[0]->get() - args[1]->get()); + } else { + make_result(args[0]->get() - args[1]->get()); + } + } break; + case Op::Multiplication: { + const auto args = get_arguments<2>(node); + if (args[0]->is_number_integer() && args[1]->is_number_integer()) { + make_result(args[0]->get() * args[1]->get()); + } else { + make_result(args[0]->get() * args[1]->get()); + } + } break; + case Op::Division: { + const auto args = get_arguments<2>(node); + if (args[1]->get() == 0) { + throw_renderer_error("division by zero", node); + } + make_result(args[0]->get() / args[1]->get()); + } break; + case Op::Power: { + const auto args = get_arguments<2>(node); + if (args[0]->is_number_integer() && args[1]->get() >= 0) { + const auto result = static_cast(std::pow(args[0]->get(), args[1]->get())); + make_result(result); + } else { + const auto result = std::pow(args[0]->get(), args[1]->get()); + make_result(result); + } + } break; + case Op::Modulo: { + const auto args = get_arguments<2>(node); + make_result(args[0]->get() % args[1]->get()); + } break; + case Op::AtId: { + const auto container = get_arguments<1, 0, false>(node)[0]; + node.arguments[1]->accept(*this); + if (not_found_stack.empty()) { + throw_renderer_error("could not find element with given name", node); + } + const auto id_node = not_found_stack.top(); + not_found_stack.pop(); + data_eval_stack.pop(); + data_eval_stack.push(&container->at(id_node->name)); + } break; + case Op::At: { + const auto args = get_arguments<2>(node); + if (args[0]->is_object()) { + data_eval_stack.push(&args[0]->at(args[1]->get())); + } else { + data_eval_stack.push(&args[0]->at(args[1]->get())); + } + } break; + case Op::Capitalize: { + auto result = get_arguments<1>(node)[0]->get(); + result[0] = static_cast(::toupper(result[0])); + std::transform(result.begin() + 1, result.end(), result.begin() + 1, [](char c) { return static_cast(::tolower(c)); }); + make_result(std::move(result)); + } break; + case Op::Default: { + const auto test_arg = get_arguments<1, 0, false>(node)[0]; + data_eval_stack.push((test_arg != nullptr) ? test_arg : get_arguments<1, 1>(node)[0]); + } break; + case Op::DivisibleBy: { + const auto args = get_arguments<2>(node); + const auto divisor = args[1]->get(); + make_result((divisor != 0) && (args[0]->get() % divisor == 0)); + } break; + case Op::Even: { + make_result(get_arguments<1>(node)[0]->get() % 2 == 0); + } break; + case Op::Exists: { + auto&& name = get_arguments<1>(node)[0]->get_ref(); + make_result(data_input->contains(json::json_pointer(DataNode::convert_dot_to_ptr(name)))); + } break; + case Op::ExistsInObject: { + const auto args = get_arguments<2>(node); + auto&& name = args[1]->get_ref(); + make_result(args[0]->find(name) != args[0]->end()); + } break; + case Op::First: { + const auto result = &get_arguments<1>(node)[0]->front(); + data_eval_stack.push(result); + } break; + case Op::Float: { + make_result(std::stod(get_arguments<1>(node)[0]->get_ref())); + } break; + case Op::Int: { + make_result(std::stoi(get_arguments<1>(node)[0]->get_ref())); + } break; + case Op::Last: { + const auto result = &get_arguments<1>(node)[0]->back(); + data_eval_stack.push(result); + } break; + case Op::Length: { + const auto val = get_arguments<1>(node)[0]; + if (val->is_string()) { + make_result(val->get_ref().length()); + } else { + make_result(val->size()); + } + } break; + case Op::Lower: { + auto result = get_arguments<1>(node)[0]->get(); + std::transform(result.begin(), result.end(), result.begin(), [](char c) { return static_cast(::tolower(c)); }); + make_result(std::move(result)); + } break; + case Op::Max: { + const auto args = get_arguments<1>(node); + const auto result = std::max_element(args[0]->begin(), args[0]->end()); + data_eval_stack.push(&(*result)); + } break; + case Op::Min: { + const auto args = get_arguments<1>(node); + const auto result = std::min_element(args[0]->begin(), args[0]->end()); + data_eval_stack.push(&(*result)); + } break; + case Op::Odd: { + make_result(get_arguments<1>(node)[0]->get() % 2 != 0); + } break; + case Op::Range: { + std::vector result(get_arguments<1>(node)[0]->get()); + std::iota(result.begin(), result.end(), 0); + make_result(std::move(result)); + } break; + case Op::Replace: { + const auto args = get_arguments<3>(node); + auto result = args[0]->get(); + replace_substring(result, args[1]->get(), args[2]->get()); + make_result(std::move(result)); + } break; + case Op::Round: { + const auto args = get_arguments<2>(node); + const auto precision = args[1]->get(); + const double result = std::round(args[0]->get() * std::pow(10.0, precision)) / std::pow(10.0, precision); + if (precision == 0) { + make_result(static_cast(result)); + } else { + make_result(result); + } + } break; + case Op::Sort: { + auto result_ptr = std::make_shared(get_arguments<1>(node)[0]->get>()); + std::sort(result_ptr->begin(), result_ptr->end()); + data_tmp_stack.push_back(result_ptr); + data_eval_stack.push(result_ptr.get()); + } break; + case Op::Upper: { + auto result = get_arguments<1>(node)[0]->get(); + std::transform(result.begin(), result.end(), result.begin(), [](char c) { return static_cast(::toupper(c)); }); + make_result(std::move(result)); + } break; + case Op::IsBoolean: { + make_result(get_arguments<1>(node)[0]->is_boolean()); + } break; + case Op::IsNumber: { + make_result(get_arguments<1>(node)[0]->is_number()); + } break; + case Op::IsInteger: { + make_result(get_arguments<1>(node)[0]->is_number_integer()); + } break; + case Op::IsFloat: { + make_result(get_arguments<1>(node)[0]->is_number_float()); + } break; + case Op::IsObject: { + make_result(get_arguments<1>(node)[0]->is_object()); + } break; + case Op::IsArray: { + make_result(get_arguments<1>(node)[0]->is_array()); + } break; + case Op::IsString: { + make_result(get_arguments<1>(node)[0]->is_string()); + } break; + case Op::Callback: { + auto args = get_argument_vector(node); + make_result(node.callback(args)); + } break; + case Op::Super: { + const auto args = get_argument_vector(node); + const size_t old_level = current_level; + const size_t level_diff = (args.size() == 1) ? args[0]->get() : 1; + const size_t level = current_level + level_diff; + + if (block_statement_stack.empty()) { + throw_renderer_error("super() call is not within a block", node); + } + + if (level < 1 || level > template_stack.size() - 1) { + throw_renderer_error("level of super() call does not match parent templates (between 1 and " + std::to_string(template_stack.size() - 1) + ")", node); + } + + const auto current_block_statement = block_statement_stack.back(); + const Template* new_template = template_stack.at(level); + const Template* old_template = current_template; + const auto block_it = new_template->block_storage.find(current_block_statement->name); + if (block_it != new_template->block_storage.end()) { + current_template = new_template; + current_level = level; + block_it->second->block.accept(*this); + current_level = old_level; + current_template = old_template; + } else { + throw_renderer_error("could not find block with name '" + current_block_statement->name + "'", node); + } + make_result(nullptr); + } break; + case Op::Join: { + const auto args = get_arguments<2>(node); + const auto separator = args[1]->get(); + std::ostringstream os; + std::string sep; + for (const auto& value : *args[0]) { + os << sep; + if (value.is_string()) { + os << value.get(); // otherwise the value is surrounded with "" + } else { + os << value.dump(); + } + sep = separator; + } + make_result(os.str()); + } break; + case Op::None: + break; + } + } + + void visit(const ExpressionListNode& node) override { + print_data(eval_expression_list(node)); + } + + void visit(const StatementNode&) override {} + + void visit(const ForStatementNode&) override {} + + void visit(const ForArrayStatementNode& node) override { + const auto result = eval_expression_list(node.condition); + if (!result->is_array()) { + throw_renderer_error("object must be an array", node); + } + + if (!current_loop_data->empty()) { + auto tmp = *current_loop_data; // Because of clang-3 + (*current_loop_data)["parent"] = std::move(tmp); + } + + size_t index = 0; + (*current_loop_data)["is_first"] = true; + (*current_loop_data)["is_last"] = (result->size() <= 1); + for (auto it = result->begin(); it != result->end(); ++it) { + additional_data[static_cast(node.value)] = *it; + + (*current_loop_data)["index"] = index; + (*current_loop_data)["index1"] = index + 1; + if (index == 1) { + (*current_loop_data)["is_first"] = false; + } + if (index == result->size() - 1) { + (*current_loop_data)["is_last"] = true; + } + + node.body.accept(*this); + ++index; + } + + additional_data[static_cast(node.value)].clear(); + if (!(*current_loop_data)["parent"].empty()) { + const auto tmp = (*current_loop_data)["parent"]; + *current_loop_data = tmp; + } else { + current_loop_data = &additional_data["loop"]; + } + } + + void visit(const ForObjectStatementNode& node) override { + const auto result = eval_expression_list(node.condition); + if (!result->is_object()) { + throw_renderer_error("object must be an object", node); + } + + if (!current_loop_data->empty()) { + (*current_loop_data)["parent"] = std::move(*current_loop_data); + } + + size_t index = 0; + (*current_loop_data)["is_first"] = true; + (*current_loop_data)["is_last"] = (result->size() <= 1); + for (auto it = result->begin(); it != result->end(); ++it) { + additional_data[static_cast(node.key)] = it.key(); + additional_data[static_cast(node.value)] = it.value(); + + (*current_loop_data)["index"] = index; + (*current_loop_data)["index1"] = index + 1; + if (index == 1) { + (*current_loop_data)["is_first"] = false; + } + if (index == result->size() - 1) { + (*current_loop_data)["is_last"] = true; + } + + node.body.accept(*this); + ++index; + } + + additional_data[static_cast(node.key)].clear(); + additional_data[static_cast(node.value)].clear(); + if (!(*current_loop_data)["parent"].empty()) { + *current_loop_data = std::move((*current_loop_data)["parent"]); + } else { + current_loop_data = &additional_data["loop"]; + } + } + + void visit(const IfStatementNode& node) override { + const auto result = eval_expression_list(node.condition); + if (truthy(result.get())) { + node.true_statement.accept(*this); + } else if (node.has_false_statement) { + node.false_statement.accept(*this); + } + } + + void visit(const IncludeStatementNode& node) override { + auto sub_renderer = Renderer(config, template_storage, function_storage); + const auto included_template_it = template_storage.find(node.file); + if (included_template_it != template_storage.end()) { + sub_renderer.render_to(*output_stream, included_template_it->second, *data_input, &additional_data); + } else if (config.throw_at_missing_includes) { + throw_renderer_error("include '" + node.file + "' not found", node); + } + } + + void visit(const ExtendsStatementNode& node) override { + const auto included_template_it = template_storage.find(node.file); + if (included_template_it != template_storage.end()) { + const Template* parent_template = &included_template_it->second; + render_to(*output_stream, *parent_template, *data_input, &additional_data); + break_rendering = true; + } else if (config.throw_at_missing_includes) { + throw_renderer_error("extends '" + node.file + "' not found", node); + } + } + + void visit(const BlockStatementNode& node) override { + const size_t old_level = current_level; + current_level = 0; + current_template = template_stack.front(); + const auto block_it = current_template->block_storage.find(node.name); + if (block_it != current_template->block_storage.end()) { + block_statement_stack.emplace_back(&node); + block_it->second->block.accept(*this); + block_statement_stack.pop_back(); + } + current_level = old_level; + current_template = template_stack.back(); + } + + void visit(const SetStatementNode& node) override { + std::string ptr = node.key; + replace_substring(ptr, ".", "/"); + ptr = "/" + ptr; + additional_data[json::json_pointer(ptr)] = *eval_expression_list(node.expression); + } + +public: + explicit Renderer(const RenderConfig& config, const TemplateStorage& template_storage, const FunctionStorage& function_storage) + : config(config), template_storage(template_storage), function_storage(function_storage) {} + + void render_to(std::ostream& os, const Template& tmpl, const json& data, json* loop_data = nullptr) { + output_stream = &os; + current_template = &tmpl; + data_input = &data; + if (loop_data != nullptr) { + additional_data = *loop_data; + current_loop_data = &additional_data["loop"]; + } + + template_stack.emplace_back(current_template); + current_template->root.accept(*this); + + data_tmp_stack.clear(); + } +}; + +} // namespace inja + +#endif // INCLUDE_INJA_RENDERER_HPP_ + +// #include "template.hpp" + +// #include "throw.hpp" + + +namespace inja { + +/*! + * \brief Class for changing the configuration. + */ +class Environment { + FunctionStorage function_storage; + TemplateStorage template_storage; + +protected: + LexerConfig lexer_config; + ParserConfig parser_config; + RenderConfig render_config; + + std::filesystem::path input_path; + std::filesystem::path output_path; + +public: + Environment(): Environment("") {} + explicit Environment(const std::filesystem::path& global_path): input_path(global_path), output_path(global_path) {} + Environment(const std::filesystem::path& input_path, const std::filesystem::path& output_path): input_path(input_path), output_path(output_path) {} + + /// Sets the opener and closer for template statements + void set_statement(const std::string& open, const std::string& close) { + lexer_config.statement_open = open; + lexer_config.statement_open_no_lstrip = open + "+"; + lexer_config.statement_open_force_lstrip = open + "-"; + lexer_config.statement_close = close; + lexer_config.statement_close_force_rstrip = "-" + close; + lexer_config.update_open_chars(); + } + + /// Sets the opener for template line statements + void set_line_statement(const std::string& open) { + lexer_config.line_statement = open; + lexer_config.update_open_chars(); + } + + /// Sets the opener and closer for template expressions + void set_expression(const std::string& open, const std::string& close) { + lexer_config.expression_open = open; + lexer_config.expression_open_force_lstrip = open + "-"; + lexer_config.expression_close = close; + lexer_config.expression_close_force_rstrip = "-" + close; + lexer_config.update_open_chars(); + } + + /// Sets the opener and closer for template comments + void set_comment(const std::string& open, const std::string& close) { + lexer_config.comment_open = open; + lexer_config.comment_open_force_lstrip = open + "-"; + lexer_config.comment_close = close; + lexer_config.comment_close_force_rstrip = "-" + close; + lexer_config.update_open_chars(); + } + + /// Sets whether to remove the first newline after a block + void set_trim_blocks(bool trim_blocks) { + lexer_config.trim_blocks = trim_blocks; + } + + /// Sets whether to strip the spaces and tabs from the start of a line to a block + void set_lstrip_blocks(bool lstrip_blocks) { + lexer_config.lstrip_blocks = lstrip_blocks; + } + + /// Sets the element notation syntax + void set_search_included_templates_in_files(bool search_in_files) { + parser_config.search_included_templates_in_files = search_in_files; + } + + /// Sets whether a missing include will throw an error + void set_throw_at_missing_includes(bool will_throw) { + render_config.throw_at_missing_includes = will_throw; + } + + /// Sets whether we'll automatically perform HTML escape + void set_html_autoescape(bool will_escape) { + render_config.html_autoescape = will_escape; + } + + Template parse(std::string_view input) { + Parser parser(parser_config, lexer_config, template_storage, function_storage); + return parser.parse(input, input_path); + } + + Template parse_template(const std::filesystem::path& filename) { + Parser parser(parser_config, lexer_config, template_storage, function_storage); + auto result = Template(Parser::load_file(input_path / filename)); + parser.parse_into_template(result, (input_path / filename).string()); + return result; + } + + Template parse_file(const std::filesystem::path& filename) { + return parse_template(filename); + } + + std::string render(std::string_view input, const json& data) { + return render(parse(input), data); + } + + std::string render(const Template& tmpl, const json& data) { + std::stringstream os; + render_to(os, tmpl, data); + return os.str(); + } + + std::string render_file(const std::filesystem::path& filename, const json& data) { + return render(parse_template(filename), data); + } + + std::string render_file_with_json_file(const std::filesystem::path& filename, const std::string& filename_data) { + const json data = load_json(filename_data); + return render_file(filename, data); + } + + void write(const std::filesystem::path& filename, const json& data, const std::string& filename_out) { + std::ofstream file(output_path / filename_out); + file << render_file(filename, data); + file.close(); + } + + void write(const Template& temp, const json& data, const std::string& filename_out) { + std::ofstream file(output_path / filename_out); + file << render(temp, data); + file.close(); + } + + void write_with_json_file(const std::filesystem::path& filename, const std::string& filename_data, const std::string& filename_out) { + const json data = load_json(filename_data); + write(filename, data, filename_out); + } + + void write_with_json_file(const Template& temp, const std::string& filename_data, const std::string& filename_out) { + const json data = load_json(filename_data); + write(temp, data, filename_out); + } + + std::ostream& render_to(std::ostream& os, const Template& tmpl, const json& data) { + Renderer(render_config, template_storage, function_storage).render_to(os, tmpl, data); + return os; + } + + std::ostream& render_to(std::ostream& os, const std::string_view input, const json& data) { + return render_to(os, parse(input), data); + } + + std::string load_file(const std::string& filename) { + const Parser parser(parser_config, lexer_config, template_storage, function_storage); + return Parser::load_file(input_path / filename); + } + + json load_json(const std::string& filename) { + std::ifstream file; + file.open(input_path / filename); + if (file.fail()) { + INJA_THROW(FileError("failed accessing file at '" + (input_path / filename).string() + "'")); + } + + return json::parse(std::istreambuf_iterator(file), std::istreambuf_iterator()); + } + + /*! + @brief Adds a variadic callback + */ + void add_callback(const std::string& name, const CallbackFunction& callback) { + add_callback(name, -1, callback); + } + + /*! + @brief Adds a variadic void callback + */ + void add_void_callback(const std::string& name, const VoidCallbackFunction& callback) { + add_void_callback(name, -1, callback); + } + + /*! + @brief Adds a callback with given number or arguments + */ + void add_callback(const std::string& name, int num_args, const CallbackFunction& callback) { + function_storage.add_callback(name, num_args, callback); + } + + /*! + @brief Adds a void callback with given number or arguments + */ + void add_void_callback(const std::string& name, int num_args, const VoidCallbackFunction& callback) { + function_storage.add_callback(name, num_args, [callback](Arguments& args) { + callback(args); + return json(); + }); + } + + /** Includes a template with a given name into the environment. + * Then, a template can be rendered in another template using the + * include "" syntax. + */ + void include_template(const std::string& name, const Template& tmpl) { + template_storage[name] = tmpl; + } + + /*! + @brief Sets a function that is called when an included file is not found + */ + void set_include_callback(const std::function& callback) { + parser_config.include_callback = callback; + } +}; + +/*! +@brief render with default settings to a string +*/ +inline std::string render(std::string_view input, const json& data) { + return Environment().render(input, data); +} + +/*! +@brief render with default settings to the given output stream +*/ +inline void render_to(std::ostream& os, std::string_view input, const json& data) { + Environment env; + env.render_to(os, env.parse(input), data); +} + +} // namespace inja + +#endif // INCLUDE_INJA_ENVIRONMENT_HPP_ + +// #include "exceptions.hpp" + +// #include "parser.hpp" + +// #include "renderer.hpp" + +// #include "template.hpp" + + +#endif // INCLUDE_INJA_INJA_HPP_ diff --git a/external/nlohmann/json.hpp b/external/nlohmann/json.hpp new file mode 100644 index 0000000..aafeaf5 --- /dev/null +++ b/external/nlohmann/json.hpp @@ -0,0 +1,25677 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + +/****************************************************************************\ + * Note on documentation: The source files contain links to the online * + * documentation of the public API at https://json.nlohmann.me. This URL * + * contains the most recent documentation and should also be applicable to * + * previous versions; documentation for deprecated functions is not * + * removed, but marked deprecated. See "Generate documentation" section in * + * file docs/README.md. * +\****************************************************************************/ + +#ifndef INCLUDE_NLOHMANN_JSON_HPP_ +#define INCLUDE_NLOHMANN_JSON_HPP_ + +#include // all_of, find, for_each +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#ifndef JSON_NO_IO + #include // istream, ostream +#endif // JSON_NO_IO +#include // random_access_iterator_tag +#include // unique_ptr +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// This file contains all macro definitions affecting or depending on the ABI + +#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK + #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) + #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 12 || NLOHMANN_JSON_VERSION_PATCH != 0 + #warning "Already included a different version of the library!" + #endif + #endif +#endif + +#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_MINOR 12 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_PATCH 0 // NOLINT(modernize-macro-to-enum) + +#ifndef JSON_DIAGNOSTICS + #define JSON_DIAGNOSTICS 0 +#endif + +#ifndef JSON_DIAGNOSTIC_POSITIONS + #define JSON_DIAGNOSTIC_POSITIONS 0 +#endif + +#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 +#endif + +#if JSON_DIAGNOSTICS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS +#endif + +#if JSON_DIAGNOSTIC_POSITIONS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS _dp +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS +#endif + +#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp +#else + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION + #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 +#endif + +// Construct the namespace ABI tags component +#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) json_abi ## a ## b ## c +#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b, c) \ + NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) + +#define NLOHMANN_JSON_ABI_TAGS \ + NLOHMANN_JSON_ABI_TAGS_CONCAT( \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ + NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON, \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS) + +// Construct the namespace version component +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ + _v ## major ## _ ## minor ## _ ## patch +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) + +#if NLOHMANN_JSON_NAMESPACE_NO_VERSION +#define NLOHMANN_JSON_NAMESPACE_VERSION +#else +#define NLOHMANN_JSON_NAMESPACE_VERSION \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ + NLOHMANN_JSON_VERSION_MINOR, \ + NLOHMANN_JSON_VERSION_PATCH) +#endif + +// Combine namespace components +#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b +#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ + NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) + +#ifndef NLOHMANN_JSON_NAMESPACE +#define NLOHMANN_JSON_NAMESPACE \ + nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN +#define NLOHMANN_JSON_NAMESPACE_BEGIN \ + namespace nlohmann \ + { \ + inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) \ + { +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_END +#define NLOHMANN_JSON_NAMESPACE_END \ + } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ + } // namespace nlohmann +#endif + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // transform +#include // array +#include // forward_list +#include // inserter, front_inserter, end +#include // map +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // unordered_map +#include // pair, declval +#include // valarray + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // nullptr_t +#include // exception +#if JSON_DIAGNOSTICS + #include // accumulate +#endif +#include // runtime_error +#include // to_string +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // uint8_t +#include // string + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // declval, pair +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template struct make_void +{ + using type = void; +}; +template using void_t = typename make_void::type; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// https://en.cppreference.com/w/cpp/experimental/is_detected +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; +}; + +template class Op, + class... Args> +struct detector +{ + using value_t = std::false_type; + using type = Default; +}; + +template class Op, class... Args> +struct detector>, Op, Args...> +{ + using value_t = std::true_type; + using type = Op; +}; + +template class Op, class... Args> +using is_detected = typename detector::value_t; + +template class Op, class... Args> +struct is_detected_lazy : is_detected { }; + +template class Op, class... Args> +using detected_t = typename detector::type; + +template class Op, class... Args> +using detected_or = detector; + +template class Op, class... Args> +using detected_or_t = typename detected_or::type; + +template class Op, class... Args> +using is_detected_exact = std::is_same>; + +template class Op, class... Args> +using is_detected_convertible = + std::is_convertible, To>; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + + +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-FileCopyrightText: 2016 - 2021 Evan Nemerson +// SPDX-License-Identifier: MIT + +/* Hedley - https://nemequ.github.io/hedley + * Created by Evan Nemerson + */ + +#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) +#if defined(JSON_HEDLEY_VERSION) + #undef JSON_HEDLEY_VERSION +#endif +#define JSON_HEDLEY_VERSION 15 + +#if defined(JSON_HEDLEY_STRINGIFY_EX) + #undef JSON_HEDLEY_STRINGIFY_EX +#endif +#define JSON_HEDLEY_STRINGIFY_EX(x) #x + +#if defined(JSON_HEDLEY_STRINGIFY) + #undef JSON_HEDLEY_STRINGIFY +#endif +#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) + +#if defined(JSON_HEDLEY_CONCAT_EX) + #undef JSON_HEDLEY_CONCAT_EX +#endif +#define JSON_HEDLEY_CONCAT_EX(a,b) a##b + +#if defined(JSON_HEDLEY_CONCAT) + #undef JSON_HEDLEY_CONCAT +#endif +#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) + +#if defined(JSON_HEDLEY_CONCAT3_EX) + #undef JSON_HEDLEY_CONCAT3_EX +#endif +#define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c + +#if defined(JSON_HEDLEY_CONCAT3) + #undef JSON_HEDLEY_CONCAT3 +#endif +#define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) + +#if defined(JSON_HEDLEY_VERSION_ENCODE) + #undef JSON_HEDLEY_VERSION_ENCODE +#endif +#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) + #undef JSON_HEDLEY_VERSION_DECODE_MAJOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) + #undef JSON_HEDLEY_VERSION_DECODE_MINOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) + #undef JSON_HEDLEY_VERSION_DECODE_REVISION +#endif +#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) + +#if defined(JSON_HEDLEY_GNUC_VERSION) + #undef JSON_HEDLEY_GNUC_VERSION +#endif +#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#elif defined(__GNUC__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) +#endif + +#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) + #undef JSON_HEDLEY_GNUC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GNUC_VERSION) + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION) + #undef JSON_HEDLEY_MSVC_VERSION +#endif +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) +#elif defined(_MSC_FULL_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) +#elif defined(_MSC_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) + #undef JSON_HEDLEY_MSVC_VERSION_CHECK +#endif +#if !defined(JSON_HEDLEY_MSVC_VERSION) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) +#else + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION) + #undef JSON_HEDLEY_INTEL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) +#elif defined(__INTEL_COMPILER) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_VERSION) + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #undef JSON_HEDLEY_INTEL_CL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) + #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION) + #undef JSON_HEDLEY_PGI_VERSION +#endif +#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) + #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION_CHECK) + #undef JSON_HEDLEY_PGI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PGI_VERSION) + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #undef JSON_HEDLEY_SUNPRO_VERSION +#endif +#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) +#elif defined(__SUNPRO_C) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) +#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) +#elif defined(__SUNPRO_CC) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) + #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION +#endif +#if defined(__EMSCRIPTEN__) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION) + #undef JSON_HEDLEY_ARM_VERSION +#endif +#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) +#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION_CHECK) + #undef JSON_HEDLEY_ARM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_ARM_VERSION) + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION) + #undef JSON_HEDLEY_IBM_VERSION +#endif +#if defined(__ibmxl__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) +#elif defined(__xlC__) && defined(__xlC_ver__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) +#elif defined(__xlC__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION_CHECK) + #undef JSON_HEDLEY_IBM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IBM_VERSION) + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_VERSION) + #undef JSON_HEDLEY_TI_VERSION +#endif +#if \ + defined(__TI_COMPILER_VERSION__) && \ + ( \ + defined(__TMS470__) || defined(__TI_ARM__) || \ + defined(__MSP430__) || \ + defined(__TMS320C2000__) \ + ) +#if (__TI_COMPILER_VERSION__ >= 16000000) + #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif +#endif + +#if defined(JSON_HEDLEY_TI_VERSION_CHECK) + #undef JSON_HEDLEY_TI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_VERSION) + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #undef JSON_HEDLEY_TI_CL2000_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) + #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #undef JSON_HEDLEY_TI_CL430_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) + #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #undef JSON_HEDLEY_TI_ARMCL_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) + #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) + #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #undef JSON_HEDLEY_TI_CL6X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) + #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #undef JSON_HEDLEY_TI_CL7X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) + #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #undef JSON_HEDLEY_TI_CLPRU_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) + #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION) + #undef JSON_HEDLEY_CRAY_VERSION +#endif +#if defined(_CRAYC) + #if defined(_RELEASE_PATCHLEVEL) + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) + #else + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) + #undef JSON_HEDLEY_CRAY_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_CRAY_VERSION) + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION) + #undef JSON_HEDLEY_IAR_VERSION +#endif +#if defined(__IAR_SYSTEMS_ICC__) + #if __VER__ > 1000 + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) + #else + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION_CHECK) + #undef JSON_HEDLEY_IAR_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IAR_VERSION) + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION) + #undef JSON_HEDLEY_TINYC_VERSION +#endif +#if defined(__TINYC__) + #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) + #undef JSON_HEDLEY_TINYC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION) + #undef JSON_HEDLEY_DMC_VERSION +#endif +#if defined(__DMC__) + #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION_CHECK) + #undef JSON_HEDLEY_DMC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_DMC_VERSION) + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #undef JSON_HEDLEY_COMPCERT_VERSION +#endif +#if defined(__COMPCERT_VERSION__) + #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) + #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION) + #undef JSON_HEDLEY_PELLES_VERSION +#endif +#if defined(__POCC__) + #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) + #undef JSON_HEDLEY_PELLES_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PELLES_VERSION) + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #undef JSON_HEDLEY_MCST_LCC_VERSION +#endif +#if defined(__LCC__) && defined(__LCC_MINOR__) + #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) + #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION) + #undef JSON_HEDLEY_GCC_VERSION +#endif +#if \ + defined(JSON_HEDLEY_GNUC_VERSION) && \ + !defined(__clang__) && \ + !defined(JSON_HEDLEY_INTEL_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_ARM_VERSION) && \ + !defined(JSON_HEDLEY_CRAY_VERSION) && \ + !defined(JSON_HEDLEY_TI_VERSION) && \ + !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ + !defined(__COMPCERT__) && \ + !defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_ATTRIBUTE +#endif +#if \ + defined(__has_attribute) && \ + ( \ + (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ + ) +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) +#else +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE +#endif +#if \ + defined(__has_cpp_attribute) && \ + defined(__cplusplus) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS +#endif +#if !defined(__cplusplus) || !defined(__has_cpp_attribute) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#elif \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ + (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_BUILTIN) + #undef JSON_HEDLEY_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) +#else + #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) + #undef JSON_HEDLEY_GNUC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) + #undef JSON_HEDLEY_GCC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_FEATURE) + #undef JSON_HEDLEY_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) +#else + #define JSON_HEDLEY_HAS_FEATURE(feature) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) + #undef JSON_HEDLEY_GNUC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_FEATURE) + #undef JSON_HEDLEY_GCC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_EXTENSION) + #undef JSON_HEDLEY_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) +#else + #define JSON_HEDLEY_HAS_EXTENSION(extension) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) + #undef JSON_HEDLEY_GNUC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) + #undef JSON_HEDLEY_GCC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_WARNING) + #undef JSON_HEDLEY_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) +#else + #define JSON_HEDLEY_HAS_WARNING(warning) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_WARNING) + #undef JSON_HEDLEY_GNUC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_WARNING) + #undef JSON_HEDLEY_GCC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + defined(__clang__) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ + (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) + #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_PRAGMA(value) __pragma(value) +#else + #define JSON_HEDLEY_PRAGMA(value) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) + #undef JSON_HEDLEY_DIAGNOSTIC_PUSH +#endif +#if defined(JSON_HEDLEY_DIAGNOSTIC_POP) + #undef JSON_HEDLEY_DIAGNOSTIC_POP +#endif +#if defined(__clang__) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) + #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) +#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_PUSH + #define JSON_HEDLEY_DIAGNOSTIC_POP +#endif + +/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") +# if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") +# if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# endif +#endif +#if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x +#endif + +#if defined(JSON_HEDLEY_CONST_CAST) + #undef JSON_HEDLEY_CONST_CAST +#endif +#if defined(__cplusplus) +# define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) +#elif \ + JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_REINTERPRET_CAST) + #undef JSON_HEDLEY_REINTERPRET_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) +#else + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_STATIC_CAST) + #undef JSON_HEDLEY_STATIC_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) +#else + #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_CPP_CAST) + #undef JSON_HEDLEY_CPP_CAST +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ + ((T) (expr)) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("diag_suppress=Pe137") \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) +# endif +#else +# define JSON_HEDLEY_CPP_CAST(T, expr) (expr) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunused-function") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif + +#if defined(JSON_HEDLEY_DEPRECATED) + #undef JSON_HEDLEY_DEPRECATED +#endif +#if defined(JSON_HEDLEY_DEPRECATED_FOR) + #undef JSON_HEDLEY_DEPRECATED_FOR +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) +#elif \ + (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) +#elif defined(__cplusplus) && (__cplusplus >= 201402L) + #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") +#else + #define JSON_HEDLEY_DEPRECATED(since) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) +#endif + +#if defined(JSON_HEDLEY_UNAVAILABLE) + #undef JSON_HEDLEY_UNAVAILABLE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) +#else + #define JSON_HEDLEY_UNAVAILABLE(available_since) +#endif + +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT +#endif +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) +#elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#elif defined(_Check_return_) /* SAL */ + #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ +#else + #define JSON_HEDLEY_WARN_UNUSED_RESULT + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) +#endif + +#if defined(JSON_HEDLEY_SENTINEL) + #undef JSON_HEDLEY_SENTINEL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) +#else + #define JSON_HEDLEY_SENTINEL(position) +#endif + +#if defined(JSON_HEDLEY_NO_RETURN) + #undef JSON_HEDLEY_NO_RETURN +#endif +#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NO_RETURN __noreturn +#elif \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + #define JSON_HEDLEY_NO_RETURN _Noreturn +#elif defined(__cplusplus) && (__cplusplus >= 201103L) + #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#else + #define JSON_HEDLEY_NO_RETURN +#endif + +#if defined(JSON_HEDLEY_NO_ESCAPE) + #undef JSON_HEDLEY_NO_ESCAPE +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) + #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) +#else + #define JSON_HEDLEY_NO_ESCAPE +#endif + +#if defined(JSON_HEDLEY_UNREACHABLE) + #undef JSON_HEDLEY_UNREACHABLE +#endif +#if defined(JSON_HEDLEY_UNREACHABLE_RETURN) + #undef JSON_HEDLEY_UNREACHABLE_RETURN +#endif +#if defined(JSON_HEDLEY_ASSUME) + #undef JSON_HEDLEY_ASSUME +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_ASSUME(expr) __assume(expr) +#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) + #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) +#elif \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #if defined(__cplusplus) + #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) + #else + #define JSON_HEDLEY_ASSUME(expr) _nassert(expr) + #endif +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() +#elif defined(JSON_HEDLEY_ASSUME) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif +#if !defined(JSON_HEDLEY_ASSUME) + #if defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) + #else + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) + #endif +#endif +#if defined(JSON_HEDLEY_UNREACHABLE) + #if \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) + #else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() + #endif +#else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) +#endif +#if !defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif + +JSON_HEDLEY_DIAGNOSTIC_PUSH +#if JSON_HEDLEY_HAS_WARNING("-Wpedantic") + #pragma clang diagnostic ignored "-Wpedantic" +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) + #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif +#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) + #if defined(__clang__) + #pragma clang diagnostic ignored "-Wvariadic-macros" + #elif defined(JSON_HEDLEY_GCC_VERSION) + #pragma GCC diagnostic ignored "-Wvariadic-macros" + #endif +#endif +#if defined(JSON_HEDLEY_NON_NULL) + #undef JSON_HEDLEY_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) +#else + #define JSON_HEDLEY_NON_NULL(...) +#endif +JSON_HEDLEY_DIAGNOSTIC_POP + +#if defined(JSON_HEDLEY_PRINTF_FORMAT) + #undef JSON_HEDLEY_PRINTF_FORMAT +#endif +#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) +#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) +#else + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) +#endif + +#if defined(JSON_HEDLEY_CONSTEXPR) + #undef JSON_HEDLEY_CONSTEXPR +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) + #endif +#endif +#if !defined(JSON_HEDLEY_CONSTEXPR) + #define JSON_HEDLEY_CONSTEXPR +#endif + +#if defined(JSON_HEDLEY_PREDICT) + #undef JSON_HEDLEY_PREDICT +#endif +#if defined(JSON_HEDLEY_LIKELY) + #undef JSON_HEDLEY_LIKELY +#endif +#if defined(JSON_HEDLEY_UNLIKELY) + #undef JSON_HEDLEY_UNLIKELY +#endif +#if defined(JSON_HEDLEY_UNPREDICTABLE) + #undef JSON_HEDLEY_UNPREDICTABLE +#endif +#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) + #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) +#elif \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, expected, probability) \ + (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ + })) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ + })) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +#else +# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_LIKELY(expr) (!!(expr)) +# define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) +#endif +#if !defined(JSON_HEDLEY_UNPREDICTABLE) + #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) +#endif + +#if defined(JSON_HEDLEY_MALLOC) + #undef JSON_HEDLEY_MALLOC +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_MALLOC __declspec(restrict) +#else + #define JSON_HEDLEY_MALLOC +#endif + +#if defined(JSON_HEDLEY_PURE) + #undef JSON_HEDLEY_PURE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PURE __attribute__((__pure__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +# define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ + ) +# define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") +#else +# define JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_CONST) + #undef JSON_HEDLEY_CONST +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_CONST __attribute__((__const__)) +#elif \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_CONST _Pragma("no_side_effect") +#else + #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_RESTRICT) + #undef JSON_HEDLEY_RESTRICT +#endif +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT restrict +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + defined(__clang__) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RESTRICT __restrict +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT _Restrict +#else + #define JSON_HEDLEY_RESTRICT +#endif + +#if defined(JSON_HEDLEY_INLINE) + #undef JSON_HEDLEY_INLINE +#endif +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + (defined(__cplusplus) && (__cplusplus >= 199711L)) + #define JSON_HEDLEY_INLINE inline +#elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) + #define JSON_HEDLEY_INLINE __inline__ +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_INLINE __inline +#else + #define JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_ALWAYS_INLINE) + #undef JSON_HEDLEY_ALWAYS_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +# define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_ALWAYS_INLINE __forceinline +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ + ) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") +#else +# define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_NEVER_INLINE) + #undef JSON_HEDLEY_NEVER_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#else + #define JSON_HEDLEY_NEVER_INLINE +#endif + +#if defined(JSON_HEDLEY_PRIVATE) + #undef JSON_HEDLEY_PRIVATE +#endif +#if defined(JSON_HEDLEY_PUBLIC) + #undef JSON_HEDLEY_PUBLIC +#endif +#if defined(JSON_HEDLEY_IMPORT) + #undef JSON_HEDLEY_IMPORT +#endif +#if defined(_WIN32) || defined(__CYGWIN__) +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC __declspec(dllexport) +# define JSON_HEDLEY_IMPORT __declspec(dllimport) +#else +# if \ + JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + ( \ + defined(__TI_EABI__) && \ + ( \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ + ) \ + ) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) +# define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) +# else +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC +# endif +# define JSON_HEDLEY_IMPORT extern +#endif + +#if defined(JSON_HEDLEY_NO_THROW) + #undef JSON_HEDLEY_NO_THROW +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NO_THROW __declspec(nothrow) +#else + #define JSON_HEDLEY_NO_THROW +#endif + +#if defined(JSON_HEDLEY_FALL_THROUGH) + #undef JSON_HEDLEY_FALL_THROUGH +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) +#elif defined(__fallthrough) /* SAL */ + #define JSON_HEDLEY_FALL_THROUGH __fallthrough +#else + #define JSON_HEDLEY_FALL_THROUGH +#endif + +#if defined(JSON_HEDLEY_RETURNS_NON_NULL) + #undef JSON_HEDLEY_RETURNS_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) +#elif defined(_Ret_notnull_) /* SAL */ + #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ +#else + #define JSON_HEDLEY_RETURNS_NON_NULL +#endif + +#if defined(JSON_HEDLEY_ARRAY_PARAM) + #undef JSON_HEDLEY_ARRAY_PARAM +#endif +#if \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + !defined(__STDC_NO_VLA__) && \ + !defined(__cplusplus) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_ARRAY_PARAM(name) (name) +#else + #define JSON_HEDLEY_ARRAY_PARAM(name) +#endif + +#if defined(JSON_HEDLEY_IS_CONSTANT) + #undef JSON_HEDLEY_IS_CONSTANT +#endif +#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) + #undef JSON_HEDLEY_REQUIRE_CONSTEXPR +#endif +/* JSON_HEDLEY_IS_CONSTEXPR_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #undef JSON_HEDLEY_IS_CONSTEXPR_ +#endif +#if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) +#endif +#if !defined(__cplusplus) +# if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) +#endif +# elif \ + ( \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION)) || \ + (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) +#endif +# elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + defined(JSON_HEDLEY_INTEL_VERSION) || \ + defined(JSON_HEDLEY_TINYC_VERSION) || \ + defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ + defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ + defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ + defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ + defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ + defined(__clang__) +# define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ + sizeof(void) != \ + sizeof(*( \ + 1 ? \ + ((void*) ((expr) * 0L) ) : \ +((struct { char v[sizeof(void) * 2]; } *) 1) \ + ) \ + ) \ + ) +# endif +#endif +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) +#else + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) (0) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) +#endif + +#if defined(JSON_HEDLEY_BEGIN_C_DECLS) + #undef JSON_HEDLEY_BEGIN_C_DECLS +#endif +#if defined(JSON_HEDLEY_END_C_DECLS) + #undef JSON_HEDLEY_END_C_DECLS +#endif +#if defined(JSON_HEDLEY_C_DECL) + #undef JSON_HEDLEY_C_DECL +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { + #define JSON_HEDLEY_END_C_DECLS } + #define JSON_HEDLEY_C_DECL extern "C" +#else + #define JSON_HEDLEY_BEGIN_C_DECLS + #define JSON_HEDLEY_END_C_DECLS + #define JSON_HEDLEY_C_DECL +#endif + +#if defined(JSON_HEDLEY_STATIC_ASSERT) + #undef JSON_HEDLEY_STATIC_ASSERT +#endif +#if \ + !defined(__cplusplus) && ( \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ + (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + defined(_Static_assert) \ + ) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) +#elif \ + (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) +#else +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) +#endif + +#if defined(JSON_HEDLEY_NULL) + #undef JSON_HEDLEY_NULL +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) + #elif defined(NULL) + #define JSON_HEDLEY_NULL NULL + #else + #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) + #endif +#elif defined(NULL) + #define JSON_HEDLEY_NULL NULL +#else + #define JSON_HEDLEY_NULL ((void*) 0) +#endif + +#if defined(JSON_HEDLEY_MESSAGE) + #undef JSON_HEDLEY_MESSAGE +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_MESSAGE(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(message msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) +#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_WARNING) + #undef JSON_HEDLEY_WARNING +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_WARNING(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(clang warning msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_REQUIRE) + #undef JSON_HEDLEY_REQUIRE +#endif +#if defined(JSON_HEDLEY_REQUIRE_MSG) + #undef JSON_HEDLEY_REQUIRE_MSG +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) +# if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") +# define JSON_HEDLEY_REQUIRE(expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), #expr, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), msg, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) +# endif +#else +# define JSON_HEDLEY_REQUIRE(expr) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) +#endif + +#if defined(JSON_HEDLEY_FLAGS) + #undef JSON_HEDLEY_FLAGS +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) + #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) +#else + #define JSON_HEDLEY_FLAGS +#endif + +#if defined(JSON_HEDLEY_FLAGS_CAST) + #undef JSON_HEDLEY_FLAGS_CAST +#endif +#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) +# define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("warning(disable:188)") \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) +#endif + +#if defined(JSON_HEDLEY_EMPTY_BASES) + #undef JSON_HEDLEY_EMPTY_BASES +#endif +#if \ + (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) +#else + #define JSON_HEDLEY_EMPTY_BASES +#endif + +/* Remaining macros are deprecated. */ + +#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK +#endif +#if defined(__clang__) + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) +#else + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) + #undef JSON_HEDLEY_CLANG_HAS_BUILTIN +#endif +#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) + +#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) + #undef JSON_HEDLEY_CLANG_HAS_FEATURE +#endif +#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) + +#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) + #undef JSON_HEDLEY_CLANG_HAS_EXTENSION +#endif +#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) + +#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_WARNING) + #undef JSON_HEDLEY_CLANG_HAS_WARNING +#endif +#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) + +#endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ + + +// This file contains all internal macro definitions (except those affecting ABI) +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// #include + + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) + #if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #endif +#endif + +// C++ language standard detection +// if the user manually specified the used C++ version, this is skipped +#if !defined(JSON_HAS_CPP_26) && !defined(JSON_HAS_CPP_23) && !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) + #if (defined(__cplusplus) && __cplusplus > 202302L) || (defined(_MSVC_LANG) && _MSVC_LANG > 202302L) + #define JSON_HAS_CPP_26 + #define JSON_HAS_CPP_23 + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus > 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG > 202002L) + #define JSON_HAS_CPP_23 + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus > 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG > 201703L) + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus > 201402L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus > 201103L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 + #endif + // the cpp 11 flag is always specified because it is the minimal required version + #define JSON_HAS_CPP_11 +#endif + +#ifdef __has_include + #if __has_include() + #include + #endif +#endif + +#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) + #ifdef JSON_HAS_CPP_17 + #if defined(__cpp_lib_filesystem) + #define JSON_HAS_FILESYSTEM 1 + #elif defined(__cpp_lib_experimental_filesystem) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif !defined(__has_include) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #endif + + // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ + #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__clang_major__) && __clang_major__ < 7 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support + #if defined(_MSC_VER) && _MSC_VER < 1914 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before iOS 13 + #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before macOS Catalina + #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + #endif +#endif + +#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_FILESYSTEM + #define JSON_HAS_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_THREE_WAY_COMPARISON + #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ + && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L + #define JSON_HAS_THREE_WAY_COMPARISON 1 + #else + #define JSON_HAS_THREE_WAY_COMPARISON 0 + #endif +#endif + +#ifndef JSON_HAS_RANGES + // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has a syntax error + #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 + #define JSON_HAS_RANGES 0 + #elif defined(__cpp_lib_ranges) + #define JSON_HAS_RANGES 1 + #else + #define JSON_HAS_RANGES 0 + #endif +#endif + +#ifndef JSON_HAS_STATIC_RTTI + #if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0 + #define JSON_HAS_STATIC_RTTI 1 + #else + #define JSON_HAS_STATIC_RTTI 0 + #endif +#endif + +#ifdef JSON_HAS_CPP_17 + #define JSON_INLINE_VARIABLE inline +#else + #define JSON_INLINE_VARIABLE +#endif + +#if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) + #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] +#else + #define JSON_NO_UNIQUE_ADDRESS +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdocumentation" + #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" +#endif + +// allow disabling exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) + #define JSON_INTERNAL_CATCH(exception) catch(exception) +#else + #include + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) + #define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// allow overriding assert +#if !defined(JSON_ASSERT) + #include // assert + #define JSON_ASSERT(x) assert(x) +#endif + +// allow accessing some private functions (needed by the test suite) +#if defined(JSON_TESTS_PRIVATE) + #define JSON_PRIVATE_UNLESS_TESTED public +#else + #define JSON_PRIVATE_UNLESS_TESTED private +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + /* NOLINTNEXTLINE(modernize-type-traits) we use C++11 */ \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + /* NOLINTNEXTLINE(modernize-avoid-c-arrays) we don't want to depend on */ \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + /* NOLINTNEXTLINE(modernize-type-traits) we use C++11 */ \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + /* NOLINTNEXTLINE(modernize-avoid-c-arrays) we don't want to depend on */ \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [&j](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer, \ + class BinaryType, \ + class CustomBaseClass> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); +#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = !nlohmann_json_j.is_null() ? nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1) : nlohmann_json_default_obj.v1; + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT +@since version 3.11.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE +@since version 3.11.3 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT +@since version 3.11.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE +@since version 3.11.3 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(Type, BaseType, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT(Type, BaseType, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, BaseType, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(Type, BaseType, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, BaseType, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, BaseType, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +// inspired from https://stackoverflow.com/a/26745591 +// allows calling any std function as if (e.g., with begin): +// using std::begin; begin(x); +// +// it allows using the detected idiom to retrieve the return type +// of such an expression +#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ + namespace detail { \ + using std::std_name; \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + } \ + \ + namespace detail2 { \ + struct std_name##_tag \ + { \ + }; \ + \ + template \ + std_name##_tag std_name(T&&...); \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + \ + template \ + struct would_call_std_##std_name \ + { \ + static constexpr auto const value = ::nlohmann::detail:: \ + is_detected_exact::value; \ + }; \ + } /* namespace detail2 */ \ + \ + template \ + struct would_call_std_##std_name : detail2::would_call_std_##std_name \ + { \ + } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_EXPLICIT +#else + #define JSON_EXPLICIT explicit +#endif + +#ifndef JSON_DISABLE_ENUM_SERIALIZATION + #define JSON_DISABLE_ENUM_SERIALIZATION 0 +#endif + +#ifndef JSON_USE_GLOBAL_UDLS + #define JSON_USE_GLOBAL_UDLS 1 +#endif + +#if JSON_HAS_THREE_WAY_COMPARISON + #include // partial_ordering +#endif + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + binary, ///< binary array (ordered collection of bytes) + discarded ///< discarded by the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string < binary +- furthermore, each type is not smaller than itself +- discarded values are not comparable +- binary is represented as a b"" string in python and directly comparable to a + string; however, making a binary array directly comparable with a string would + be surprising behavior in a JSON file. + +@since version 1.0.0 +*/ +#if JSON_HAS_THREE_WAY_COMPARISON + inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* +#else + inline bool operator<(const value_t lhs, const value_t rhs) noexcept +#endif +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, + 6 /* binary */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); +#if JSON_HAS_THREE_WAY_COMPARISON + if (l_index < order.size() && r_index < order.size()) + { + return order[l_index] <=> order[r_index]; // *NOPAD* + } + return std::partial_ordering::unordered; +#else + return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; +#endif +} + +// GCC selects the built-in operator< over an operator rewritten from +// a user-defined spaceship operator +// Clang, MSVC, and ICC select the rewritten candidate +// (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) +#if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + return std::is_lt(lhs <=> rhs); // *NOPAD* +} +#endif + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief replace all occurrences of a substring by another string + +@param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t +@param[in] f the substring to replace with @a t +@param[in] t the string to replace @a f + +@pre The search string @a f must not be empty. **This precondition is +enforced with an assertion.** + +@since version 2.0.0 +*/ +template +inline void replace_substring(StringType& s, const StringType& f, + const StringType& t) +{ + JSON_ASSERT(!f.empty()); + for (auto pos = s.find(f); // find the first occurrence of f + pos != StringType::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find the next occurrence of f + {} +} + +/*! + * @brief string escaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to escape + * @return escaped string + * + * Note the order of escaping "~" to "~0" and "/" to "~1" is important. + */ +template +inline StringType escape(StringType s) +{ + replace_substring(s, StringType{"~"}, StringType{"~0"}); + replace_substring(s, StringType{"/"}, StringType{"~1"}); + return s; +} + +/*! + * @brief string unescaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to unescape + * @return unescaped string + * + * Note the order of escaping "~1" to "/" and "~0" to "~" is important. + */ +template +inline void unescape(StringType& s) +{ + replace_substring(s, StringType{"~1"}, StringType{"/"}); + replace_substring(s, StringType{"~0"}, StringType{"~"}); +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // size_t + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/// struct to capture the start position of the current token +struct position_t +{ + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-FileCopyrightText: 2018 The Abseil Authors +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // index_sequence, make_index_sequence, index_sequence_for + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +using uncvref_t = typename std::remove_cv::type>::type; + +#ifdef JSON_HAS_CPP_14 + +// the following utilities are natively available in C++14 +using std::enable_if_t; +using std::index_sequence; +using std::make_index_sequence; +using std::index_sequence_for; + +#else + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h +// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. + +//// START OF CODE FROM GOOGLE ABSEIL + +// integer_sequence +// +// Class template representing a compile-time integer sequence. An instantiation +// of `integer_sequence` has a sequence of integers encoded in its +// type through its template arguments (which is a common need when +// working with C++11 variadic templates). `absl::integer_sequence` is designed +// to be a drop-in replacement for C++14's `std::integer_sequence`. +// +// Example: +// +// template< class T, T... Ints > +// void user_function(integer_sequence); +// +// int main() +// { +// // user_function's `T` will be deduced to `int` and `Ints...` +// // will be deduced to `0, 1, 2, 3, 4`. +// user_function(make_integer_sequence()); +// } +template +struct integer_sequence +{ + using value_type = T; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +// index_sequence +// +// A helper template for an `integer_sequence` of `size_t`, +// `absl::index_sequence` is designed to be a drop-in replacement for C++14's +// `std::index_sequence`. +template +using index_sequence = integer_sequence; + +namespace utility_internal +{ + +template +struct Extend; + +// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. +template +struct Extend, SeqSize, 0> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; +}; + +template +struct Extend, SeqSize, 1> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; +}; + +// Recursion helper for 'make_integer_sequence'. +// 'Gen::type' is an alias for 'integer_sequence'. +template +struct Gen +{ + using type = + typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; +}; + +template +struct Gen +{ + using type = integer_sequence; +}; + +} // namespace utility_internal + +// Compile-time sequences of integers + +// make_integer_sequence +// +// This template alias is equivalent to +// `integer_sequence`, and is designed to be a drop-in +// replacement for C++14's `std::make_integer_sequence`. +template +using make_integer_sequence = typename utility_internal::Gen::type; + +// make_index_sequence +// +// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, +// and is designed to be a drop-in replacement for C++14's +// `std::make_index_sequence`. +template +using make_index_sequence = make_integer_sequence; + +// index_sequence_for +// +// Converts a typename pack into an index sequence of the same length, and +// is designed to be a drop-in replacement for C++14's +// `std::index_sequence_for()` +template +using index_sequence_for = make_index_sequence; + +//// END OF CODE FROM GOOGLE ABSEIL + +#endif + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +// taken from ranges-v3 +template +struct static_const +{ + static JSON_INLINE_VARIABLE constexpr T value{}; +}; + +#ifndef JSON_HAS_CPP_17 + template + constexpr T static_const::value; +#endif + +template +constexpr std::array make_array(Args&& ... args) +{ + return std::array {{static_cast(std::forward(args))...}}; +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // numeric_limits +#include // char_traits +#include // tuple +#include // false_type, is_constructible, is_integral, is_same, true_type +#include // declval +#if defined(__cpp_lib_byte) && __cpp_lib_byte >= 201603L + #include // byte +#endif +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // random_access_iterator_tag + +// #include + +// #include + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +struct iterator_types {}; + +template +struct iterator_types < + It, + void_t> +{ + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; +}; + +// This is required as some compilers implement std::iterator_traits in a way that +// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. +template +struct iterator_traits +{ +}; + +template +struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> + : iterator_types +{ +}; + +template +struct iterator_traits::value>> +{ + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); + +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); + +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + +#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ + #define INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + #include // int64_t, uint64_t + #include // map + #include // allocator + #include // string + #include // vector + + // #include + + + /*! + @brief namespace for Niels Lohmann + @see https://github.com/nlohmann + @since version 1.0.0 + */ + NLOHMANN_JSON_NAMESPACE_BEGIN + + /*! + @brief default JSONSerializer template argument + + This serializer ignores the template arguments and uses ADL + ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) + for serialization. + */ + template + struct adl_serializer; + + /// a class to store JSON values + /// @sa https://json.nlohmann.me/api/basic_json/ + template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer, + class BinaryType = std::vector, // cppcheck-suppress syntaxError + class CustomBaseClass = void> + class basic_json; + + /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document + /// @sa https://json.nlohmann.me/api/json_pointer/ + template + class json_pointer; + + /*! + @brief default specialization + @sa https://json.nlohmann.me/api/json/ + */ + using json = basic_json<>; + + /// @brief a minimal map-like container that preserves insertion order + /// @sa https://json.nlohmann.me/api/ordered_map/ + template + struct ordered_map; + + /// @brief specialization that maintains the insertion order of object keys + /// @sa https://json.nlohmann.me/api/ordered_json/ + using ordered_json = basic_json; + + NLOHMANN_JSON_NAMESPACE_END + +#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + +NLOHMANN_JSON_NAMESPACE_BEGIN +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ + +///////////// +// helpers // +///////////// + +// Note to maintainers: +// +// Every trait in this file expects a non-CV-qualified type. +// The only exceptions are in the 'aliases for detected' section +// (i.e., those of the form: decltype(T::member_function(std::declval()))) +// +// In this case, T has to be properly CV-qualified to constraint the function arguments +// (e.g., to_json(BasicJsonType&, const T&)) + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// used by exceptions create() member functions +// true_type for the pointer to possibly cv-qualified basic_json or std::nullptr_t +// false_type otherwise +template +struct is_basic_json_context : + std::integral_constant < bool, + is_basic_json::type>::type>::value + || std::is_same::value > +{}; + +////////////////////// +// json_ref helpers // +////////////////////// + +template +class json_ref; + +template +struct is_json_ref : std::false_type {}; + +template +struct is_json_ref> : std::true_type {}; + +////////////////////////// +// aliases for detected // +////////////////////////// + +template +using mapped_type_t = typename T::mapped_type; + +template +using key_type_t = typename T::key_type; + +template +using value_type_t = typename T::value_type; + +template +using difference_type_t = typename T::difference_type; + +template +using pointer_t = typename T::pointer; + +template +using reference_t = typename T::reference; + +template +using iterator_category_t = typename T::iterator_category; + +template +using to_json_function = decltype(T::to_json(std::declval()...)); + +template +using from_json_function = decltype(T::from_json(std::declval()...)); + +template +using get_template_function = decltype(std::declval().template get()); + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json : std::false_type {}; + +// trait checking if j.get is valid +// use this trait instead of std::is_constructible or std::is_convertible, +// both rely on, or make use of implicit conversions, and thus fail when T +// has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) +template +struct is_getable +{ + static constexpr bool value = is_detected::value; +}; + +template +struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json : std::false_type {}; + +template +struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. +template +struct has_to_json : std::false_type {}; + +template +struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +template +using detect_key_compare = typename T::key_compare; + +template +struct has_key_compare : std::integral_constant::value> {}; + +// obtains the actual object key comparator +template +struct actual_object_comparator +{ + using object_t = typename BasicJsonType::object_t; + using object_comparator_t = typename BasicJsonType::default_object_comparator_t; + using type = typename std::conditional < has_key_compare::value, + typename object_t::key_compare, object_comparator_t>::type; +}; + +template +using actual_object_comparator_t = typename actual_object_comparator::type; + +///////////////// +// char_traits // +///////////////// + +// Primary template of char_traits calls std char_traits +template +struct char_traits : std::char_traits +{}; + +// Explicitly define char traits for unsigned char since it is not standard +template<> +struct char_traits : std::char_traits +{ + using char_type = unsigned char; + using int_type = uint64_t; + + // Redefine to_int_type function + static int_type to_int_type(char_type c) noexcept + { + return static_cast(c); + } + + static char_type to_char_type(int_type i) noexcept + { + return static_cast(i); + } + + static constexpr int_type eof() noexcept + { + return static_cast(std::char_traits::eof()); + } +}; + +// Explicitly define char traits for signed char since it is not standard +template<> +struct char_traits : std::char_traits +{ + using char_type = signed char; + using int_type = uint64_t; + + // Redefine to_int_type function + static int_type to_int_type(char_type c) noexcept + { + return static_cast(c); + } + + static char_type to_char_type(int_type i) noexcept + { + return static_cast(i); + } + + static constexpr int_type eof() noexcept + { + return static_cast(std::char_traits::eof()); + } +}; + +#if defined(__cpp_lib_byte) && __cpp_lib_byte >= 201603L +template<> +struct char_traits : std::char_traits +{ + using char_type = std::byte; + using int_type = uint64_t; + + static int_type to_int_type(char_type c) noexcept + { + return static_cast(std::to_integer(c)); + } + + static char_type to_char_type(int_type i) noexcept + { + return std::byte(static_cast(i)); + } + + static constexpr int_type eof() noexcept + { + return static_cast(std::char_traits::eof()); + } +}; +#endif + +/////////////////// +// is_ functions // +/////////////////// + +// https://en.cppreference.com/w/cpp/types/conjunction +template struct conjunction : std::true_type { }; +template struct conjunction : B { }; +template +struct conjunction +: std::conditional(B::value), conjunction, B>::type {}; + +// https://en.cppreference.com/w/cpp/types/negation +template struct negation : std::integral_constant < bool, !B::value > { }; + +// Reimplementation of is_constructible and is_default_constructible, due to them being broken for +// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). +// This causes compile errors in e.g., Clang 3.5 or GCC 4.9. +template +struct is_default_constructible : std::is_default_constructible {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_constructible : std::is_constructible {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_iterator_traits : std::false_type {}; + +template +struct is_iterator_traits> +{ + private: + using traits = iterator_traits; + + public: + static constexpr auto value = + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value; +}; + +template +struct is_range +{ + private: + using t_ref = typename std::add_lvalue_reference::type; + + using iterator = detected_t; + using sentinel = detected_t; + + // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator + // and https://en.cppreference.com/w/cpp/iterator/sentinel_for + // but reimplementing these would be too much work, as a lot of other concepts are used underneath + static constexpr auto is_iterator_begin = + is_iterator_traits>::value; + + public: + static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; +}; + +template +using iterator_t = enable_if_t::value, result_of_begin())>>; + +template +using range_value_t = value_type_t>>; + +// The following implementation of is_complete_type is taken from +// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ +// and is written by Xiang Fan who agreed to use it in this library. + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + is_constructible::value && + is_constructible::value; +}; + +template +struct is_compatible_object_type + : is_compatible_object_type_impl {}; + +template +struct is_constructible_object_type_impl : std::false_type {}; + +template +struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + (is_constructible::value && + std::is_same < + typename object_t::mapped_type, + typename ConstructibleObjectType::mapped_type >::value)) || + (has_from_json::value || + has_non_default_from_json < + BasicJsonType, + typename ConstructibleObjectType::mapped_type >::value); +}; + +template +struct is_constructible_object_type + : is_constructible_object_type_impl {}; + +template +struct is_compatible_string_type +{ + static constexpr auto value = + is_constructible::value; +}; + +template +struct is_constructible_string_type +{ + // launder type through decltype() to fix compilation failure on ICPC +#ifdef __INTEL_COMPILER + using laundered_type = decltype(std::declval()); +#else + using laundered_type = ConstructibleStringType; +#endif + + static constexpr auto value = + conjunction < + is_constructible, + is_detected_exact>::value; +}; + +template +struct is_compatible_array_type_impl : std::false_type {}; + +template +struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t < + is_detected::value&& + is_iterator_traits>>::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 + !std::is_same>::value >> +{ + static constexpr bool value = + is_constructible>::value; +}; + +template +struct is_compatible_array_type + : is_compatible_array_type_impl {}; + +template +struct is_constructible_array_type_impl : std::false_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t::value >> + : std::true_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t < !std::is_same::value&& + !is_compatible_string_type::value&& + is_default_constructible::value&& +(std::is_move_assignable::value || + std::is_copy_assignable::value)&& +is_detected::value&& +is_iterator_traits>>::value&& +is_detected::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 +!std::is_same>::value&& +is_complete_type < +detected_t>::value >> +{ + using value_type = range_value_t; + + static constexpr bool value = + std::is_same::value || + has_from_json::value || + has_non_default_from_json < + BasicJsonType, + value_type >::value; +}; + +template +struct is_constructible_array_type + : is_constructible_array_type_impl {}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t < std::is_integral::value&& + std::is_integral::value&& + !std::is_same::value >> +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + is_constructible::value && + CompatibleLimits::is_integer && + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type + : is_compatible_integer_type_impl {}; + +template +struct is_compatible_type_impl: std::false_type {}; + +template +struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t::value >> +{ + static constexpr bool value = + has_to_json::value; +}; + +template +struct is_compatible_type + : is_compatible_type_impl {}; + +template +struct is_constructible_tuple : std::false_type {}; + +template +struct is_constructible_tuple> : conjunction...> {}; + +template +struct is_json_iterator_of : std::false_type {}; + +template +struct is_json_iterator_of : std::true_type {}; + +template +struct is_json_iterator_of : std::true_type +{}; + +// checks if a given type T is a template specialization of Primary +template

U{$$|vp9I%NK~%*!zp;in`WGX zcfR3rZ4ZQlFr?LWUB^EOPxUjb0TFRx|4hI|fENL-1iXa)hoaV2yJlt_eNx_T!@DF7 zPBm=TaIv7}lN+^_S;G5z?x zI*;Gm%llD2@xizH5!~iISg&=h@;Gw(?!)>{X{z0-NEL+hFlr8}h|Eb%MV+o|w+o}+ ztXwT`38q_ zoAM3pN_n1mza{}r0S{!IxF&$m26(o_S6<6ukb=6~LFH!y&IddNa3$bMuvg~StDd(m zS-?^-0=1xx5*ir6rur=3aU7h~F5a=nOqQ|~?OqDrzf{Vog@9|3&PLjcbUo5XkRC*O z66r9KrlTwc?_Ww$MKA0|$gPdK+}a4nxe=^$Bjnab$gPc#TN@#_HbQP~gxuN)xwR2; zYa`^=M#wGTXL`=1qXY?3<kb0r6m})%T8LZCEg(-{q&J_DMghoG+7o$0OP3EbpLNIiuH< z5BoD+$#}oo3phKZ5>52@gXjR4P097glU*5qb>)^yWy{K{ip@~S*VWzS^J0r_{PPBY zT7M{{<8pi)xWs5a&5%|eR6Yr!n`QXEhNZBap;Tudi5t#P_EMi41(Fh~u9X1ICUlxj z;PnJ(Hi1GCpxFdyHUXMVfMye**#u}d0h&#KW)q-Uh*f&tHepmAoVEU(zP@wT&x)3ZGeb**!KFi);d1ok zTHT)rdfr=Sj^?gCj4^;y3X9VzED`d@l0~wCf+a8uXT3lS1uGn{VtjQBsYHBTAN0;ybvPW`C#K6A0rMUs(oZ+|lO zb%rwm)y4XHKr0vSt6K)D(tu_%X@Jzs~01p6O2l!FI4+DM}-(mhvkkcROfzJ7{-1Xm>kkcROfz zJ7{-1Xcrn6Xm>k4d6(P{WxL@n*;%}!G7{NOJ0Tf%LNe@xWY`I-U?(KQPDqBGkPJH^ z8FoT4?1W_43CXY%l3}MV8FoT4>_p|BGVDZ&X*4U1CNh5uzL&>ux8QrS9UIV&4SG8^ zpdA~~jtywX2DD=X+OYxc*noCyKsz>|9UIV&4QR&(v;)}Sw4VhCiy(C%4I?c?T8nfx z(q5$Nkv@X-AkvdahmkZHb`5HJ4L+}PFo=~l89kb(^Z^&6^@1s%nKS>9VeEz>15qh^ z)Tls=M8uwIGDjPoD1dKse|ts>@IlO<()7{e2IOi<`uOoK=cHtms}|XcYvrX-$6z+v zSxDI}E{7R`r*3a35Y9)CwY#kLbiON+9qho8z-lH{i(5QKlhqVT1?>n9XlonkO4x&` z5N;VgmUu1IR&5W@9_{z%(lNU)7EMPhz1`JlDjN0KW9gi~e{`%GFJ}`@tI1-w*sXrM z-ET$4VzN3C*>a*fCeoRa?zk%)b$LsDm8jVYfrbC9=4hp_1R)l7#k)r`X?!>AG$|&F z&*aZ!i_uKA7{vL3nP@Sa@tb@W{N!Z#La3+TYO@9d-c-IPQ>j)fnVx*g8wlcNe^2j7 zI1zzpXzw0~Lt^tkTYR9q-D9&w65$c@pXQkTgvNgsXd~4DxImJ06hwFI*d!6EPhhlp zrKpf}^p5A+ISZ7QtdE~ibAM;r`uo$w-?>|%)z=Lfb zOHNJVcjd*wQ!iaG|B}-O2T#9b{(?(S9b8mibjI-T84Ei*7ZNTiUmMEzClY;y5YI$Q z^yfoj8=vEQI^<)mukk7QmI~=V2psuu#Momlg=F-J@=$uv5lAfS%oHw+?3>s%mr` zA}0=!6Nku&ql@AYIhfi*+KY5O(npXUM0yhGFp?&6;t)CU86rm~&~|;EQF&HxmEOw6 zvt!#%>g_#g+t@M9`xzTPwrxc(tXX(%l*hEF+5pt_GEC07*m`HZ;VkGbm!Vp>816EB z%J6x^mkr-EykhvJ;g5#D3X2F}=BZN*iAk|ctQT8AmhTqVi4Td7iv!{d;yLkc@gwm| z@kjAj#OMT+Hl<4$RwfMwovN_Px{#MrD`E}lxu_m11Q};-$(LI4tn$a=-d7%*x<}cRnEHX@ zciBTu#JVgG0oYv2U3R-uUb}3}*j&qy@pzEAL;vXx{SJSU&)gZZx!uVBmXCz&uHWKC zd1J+lM?;}sd+Z_J5>>sh#&=jY@11!3msp3!xAB0>g`C(o{bDV|_Z*Jp`fn?aDk(Jc z>nun%4;5_G91itu6o`t4Ld{ReVnWBOPvcwDZw<1>{N8Wh?CW;tZ`7wlzfl_&BHm;p zrYrg}y}XaHD14JOmX9pgf0=Hbb|+L<&YXHi>6&_3OxaywJ{{)YwQNpHI)T3+-DmT7 zSmu1~w>8@J&0+cTA9*|My7{PIWohB>sUK*3MV969{QP)N;kR|#@1k2~T&~8Y%-Ebx zaf$jFy>|N7<+a_lReN!b_PF|4r`W4~sBx*Rp2%pGR)3%Vp8nd;wVxYb;o}ac^Jj!8 zQ?Ho*;D^-ve^VcO?@?c$uU+5ApTo`tTBXz;aXRJ4QMgJti2kyXGt=uNkYs->H`KI;34kv}=af@^_li{5^$ec}f~9X4$xt z)A3T1kMw|-94CQVSB)S%XMAP7zGie38C)X&R@i$=!`@6yOPxStBUw2+AUD%uBYDk< zH(s-my!LC?Y$UJgo8#|nB(LMzHK%fUou;n@2dKzy&_lGMT8LIqTiHKz#|SQ{P-n*t zGW766?vrYuJqkn4#N zN-e979eV)PDQgl2r>jX2gd~IzAUm9p9ZiV+lGHeUGbk;O8%I+b5oALIq8<2A5A}0s zITd*>{Kkz|)!#fbe)His1~jR^ae1Yh3r;`9HsnCZAv_tL{yj4Ndk(+H@LPQPx5SL! zQuvK7Tb8R+EVgnT61DarY~Md*6@@TPGY(@?OD3IWU*9ag*x0cNI{%+He`;Uj2m6F= z%Y)+PO^uh7=%&UJbj*#Lr+z2;H#c@XxTW#uefyNIE3bTDi?BAnzggVWSh{Iu&sdXdvJ@eHD20; z?OvB`QjAlti!YWMJ4B`2`17Yq`+(fruWbDHmIoRaZx(%1Z)_4zg8HMI8%xE_n;YL_ zPwd-gfJJ&VM-3k{+-t>y6V|uHl#|}c1KUH4q zT)T(!@N%X~jh0PGdz!&A;*gpkmYRvWO-)*vb;@zEN?R)%R38@<-H4#j<%sdE1(0A*FNo<+Jy_(F+eY10+7F_0Qr0yAcam5FbdcK$mh#|e7*~i z&-VcG`98ob;2>ZDa2Sy9j{x%hQ9!;w4#@W>0Qvr0K)yc@umZRkum-pkkmW4{WO*w9 zS>8%OmbVI!<*fl^d20b#-g-cmcN*Z=0XG6J0Nez)2yhD^zjGEKzjHPqzq1XH-#HJE z-`Nhx?_3DT@9Y5NcXn#myS3}RfE#fCQb2z1GC+Rs3P67ENumVYN8%fAbd<$prEzDK*h z50K@35|HIR2*~mt0%Uog24r~;1G2nFwd=>U>&F54{u6+F|4Bf;{}dqKKd4#t60t%Y!OsDMo-XTsKd%roI|HVO6XH@o*%_uuNbDbs+YRSgi9Fr=RcCa%!pF(9e3Ne_J@6TQuXTC3tG-^l!_ib1SBw68PfH(7spV$&;slKW{p> zefr6p@#KYg>Y^EUuEw2frk}ocI(OZ4?nBeLTeY07rCaNTj3`;7{n+WCgzS(NIo{Dz z)L4kBccaGUUHJ~K@eY5DmaL)_HskuJXXJC(%Nf7o8NEz-w_orD?Q8fxAJDC{{CPw5 z;c7iu8yJdgt-d^PaG+ATY-nKkvU+8B&%i+S_nRtWQ)PR7VC11nrSi;R|KOJg`YXFD z0|UPYT(_xTyk1FF1{&|Kh-G-?LA<^j4_-Q08GIIyd2E}1#8BCTUwHS5k;?F1-2Ht; z*ailAhbn`Y*DE8N2KS8&Q%~MLym;u0k?QbegO%aS242}Za7zV;HsHPZaAhQj_r%gl z7SP0S4dpQQ87N_-U2M2p zShR6;BQ$Oq1-9RCh14Q;Lg}V9p~mFPDGD=YpXKJRTor4EWrxsqq*+KykWNK97wO$d z`;qQII)L;v(u+u(MdwIKzl78;XAt+p?%I!Of&G{k*pF#}{g@Wmk7X?=IX$v6_rRj=X6-?uD_v>1#XX!$j}8>EsbHnUA1k}<*cK#REQi`Eebu4F!cr(^wF;XPv*hIg zEc73$4Mbyct1!D}R|7rO(R%7~|f5vPLI3)Zm;QV0fS0Xm$KF~dh`c%Vi3IEmbJqh>Y z8Q#AMv`4rV^hWp-kQr^mr$DwokS))OVtx+tb5Pz{c>X4s+6N8Wv>a>`{7!Z420Y6= zRkT~Q{B6kd{U@l;p9>?FA9-4fTX_Sp-W$ljp{`w! zBv|S|&_tiW(H~q7W5mC3n<5usV=w7a#~`SfK^cfIBUNKv1Id)MK278528p2H_94uq zfGbyrSu(a4=crI3HHL8X=?j0=*b6m09U}tYGs@>lzI{fH4Y_M72LcyRgjqm)3)M3Q zq&fQ>Vc^D(O|f*r8}BkIMy&A-dlf}7n=J@($FAZ|1#y80Cv;8y#)TL{lhvv?V~V$`uH8}{*t&LM$muZ~8{Y{g5<#&A0G&RBoK*$l(Qo)lhG{9wmCyKzta=(c%p8n-!?SIhMPu{C7j4qvD32|L(b#$$NX-y z+p5IwiyN)T1!6v@$7Zrv1eShm59Ye#@oq#lYOvE4PW%1ou&Xzp?-l#(CZo+{3;Qho zpx^8>I{d*zD4dCfoc>aK)`bwWu+3_*SZ(2;*W}8!m;BC9EE5hTf_{h5XU0nwUl;`# zO?F$R*zQSm#9XdeN5a!y%$(S1vvrO{avgqm#A~y8BW_-J+W91 z+tm}pSspG|B<0Wd_QJ5#$J|EvZ7w(5qsfv>4DFJzPmu(D5PqEtBw=p_@#>?9`7sdk z7$dmOhBJsGA&p@~xD(e5CWd_ln(zCmF( zL~R3?-v%zf4P1U3xcoMZu5IA*D3@H`qcUxd7|-nr6mFu2dsy`(;=S46(G=!12760y zPhh3qpwW3WeYLlHz+s)vSbNgb-kw=KXf&IRgNNch*-$8pvtGJ$fk3Vs3i5>E4dr?9 z8?4Q_%kZ$_F~ipkFB{%4uGIMMt?0hnkiL)fL!>q&9*j7FG>J4Hi5ncQLplve0Rsw8T#OfT;D;y(Q_qj-nEUyFO!q7M7eGl%9B2Pp6LFB)JJdNT*$g`H;LjGIGUyJ;Y z@%5kK`j^PR4){99%KZpaAR1m{OfBH`2uvXSEVkGrGyp+_H$z<_TKF;5u8|toYtXn} zgU0n5G_Kd6alHnO>op9(*PwB|hQeNh#`PLBuGb&|UqcbE=^EE-5QVQ{_(2Y##Ai^o z@1psBEKU5bLJV^e|dd!B^F{#}-2m??3?I7H|YEF*xS1`_B z(Z~5K80W8GoWFu`{tCwVD;VdmV4S~#asCRr;}wkaS1`_BLC3s;4gfB&vjy*8kFUz| z4x_xodU=d2IgIiSqrAf??=Z?cjPeenJgS$6QQl#ccNpazMtQ&?T6`FF{{ZTK<8+O0 z#VvL4%zOZ5~I9gM4ExK7coZ|qs>$V+)GgD)qPDuVju(pa2P zV;#bSSRRn)YkiQ%)N%RG5`jh#jbI%bR9P+vkjeu>F6DD2Fg9eYh$6vH(|-zh2`db$ zUeOLcLT*2rQMF_($aAo1osPjVjQ! zh4TE|Xn5|Rue-O??Ms*xo5dMKaKFhJ$P|siOr{tK6x#ycL?P^~O)e=UhHI6uCt;s6 z#}ctASbJ%*D8 zemc$0fXN+6W8r}%Y6M22iqR!p{<+KIMw3t)|5ZM}UhXaR-EOp5QQfuef5LtvmP96H zwPF97HXNI4^LzZZ$WXv;MU^9ip=7~k%M2%MHes{5+cHTzHouoi4os9;Li1rTtB35%0Z7C!M>uyW23`VR8zkzcRnp98Zy$M7A)b8^sMfZDtv*&6F}3%<7y@IE|$ zAD(Ca0pwZUX8>8xe*}CE@G#(EJi~f@6ZvlLsicvV6Jro?!iFuWk4bD9_VbzVgK_*HPgS9K2fDmdV);DE1!1HK9l_$oNy ztKfjIf&;z^4)`iK;H%((uYv=<3J!=bfdjsZYN^~^^3)el;tP6-FQCL1P~ribRRDM1C6TX7 ziwmY(xobLiTWfpoM(ys_Yj-zlcQb`MN{KY{Om{v{;UV{r(4{Sf&2A@KD>pxHy<>xaPC4}q^A0$)D_zJ3UN{SYYR z5cv8bov$APUq2-II$QKTl=waJb=XC)u<~9Zw*>>tF$3Uitd)AQupYYbEKhh(@rM7z@>K>4>~aaeO(e1zQz(R| z149v;PZ(37TEuGY0$WcEx7iVKZ%?(gxxwe3cX?0&GIA?ex>GSb?Jl3mWk(jg)@X~l ze9y(PDL^P><3mQXt7;@KH`yGxG=afK!05SLOI!(22LFcHXoRinvzZ(&o6BhSla(vv z(I#+r2sD%nc5kxSl2-74qsxqISe911(`d1DyTQN}6Pdf&X0+V%&_i7|C%O$LINa&6d>$|#E@mb>`RtVmTZBKl7-!+ECJqqVOjQNizn~@f6l#{t7eT8 z_Wgce;P~FTnmPBJr$5hm&T}mMjC&X4m<3la(x`C`j>OgN32S%%Ya)nGM=iXWoOi$8l=jlh|qMu#C&Mv)T_g+QN!QpLV>5Wo!iQYjIyo z8Cj*5BB;Vc+PM^_wpYPf_Q4Q}X$0*3ILz6j{m~z37l@C1L}*_-txZ}>cZ(C&NrXZ5 zcYYf03|LO+@2rNVqgYkdY}HzVp>wLyy$i2lxd4vIgM02Ir0wowRHsHCPYoUzfZ=@= zzR0n;aV6k*@5jBLQh;L(q2W+pjJIEo*=PMQ{p5f?sTHYp3Xwa2Y5Oe5NRT%AcNNvTcuj-DqV$>Zg!txFyo>d7J3HK4Z&@OjB zaKG#F%U$}luhW$W z%1`d($bt@nYIo&ZPX7nBf%USWDuYdUuxu@KX&qjx1`cggW%m_*s{AVCHv@e2V$3Qw zM+<$6M-s(qZ=yLF%*DK8B9n+@!;WZwds3|HTG^M2K-^|ZzjY-e9$%_$QTs@sKI8eU z7HnQZxUEA3;C1cYa0rvS++eJfQo%zmwIC~jd(#I|^I|IQI56ldzU~M(Qt1?OPF-E6E?<}ds()c;pkOBBz&7^5K z@_6J{kafcvKHUO+Yner5O~h|f8EHjGT(H{)*{R1o*AxNnu(o!ZcDY|ZcZ-YzR6Dua7T`nB5P?s*? zpr59M*H-$)OwfH0%EjSI1X9KJCemb+Wf}CxZI(s=K*?8SFLO#>)*Eh>H)_7En1?an z0Osq(XIg0#_yx*WeJTj0QT6v%vz!T0t3U8H+VM=QN=NGw@mL*#wti=%Ia2y@L!>T| zj6od%^U*?B?8=mWEIi4cK&_{`+F2KiM{5x9{J@ewsqYQcx}huUq6zH4b6CZpmA7_} zc5%-T>L_FX>B|tcS%eB7(&bN4kM5^Hg_PfQdIC&X@*BQ{q1!M88>Sh-{UGkcxGtjH zHnK*mxKf25=k$^u7G#s=KvXJWidlO#`V+oD{f)cV2K8@|7KYLBF!0})Yqp1SzG4W+ z|25L<%{5{Dh^J%q5oXwj-yni^hTLJx4N8~2*bAEt_Fh=aUUZjr<;vsR9u|)Ds{DqI zgXeGZUiRqzzEi8OxoBH+c>mkpeZ#KqQP;S$x2bu1?~$!rY#;l+_Jt2uJtU4jaPKpF z*LB6>V$I5f!@hT2*4Hb>$1gwnp8c1tYu-H~y4Ix{QX4lO84gjl+1~h#_8&Oun`c=U zu@aB5%QX|J_h+4EJ;;;v1}){Y*@pRG*z}-$-Zi*$#SSF5@f$edbnF8C!3ZCWs0Xwa zD5$6oTl8xWuH7*C`+#2xE|w})cfb>mR3&~E>+!C$e-%YKgCIpt%S$L{+$h zp^dW*VUMuD9cr0$@+0<=`moUy2lrtKB?2p(hDtF25t-90?ITTIZ_`M7xP7G2>unrq z--N)rC+Lna!X9x4@u6n>`frf^G)h!~~vSy&+EB*$S zwQlg2{sDJxH}3v+-#)RU^absS(&xpxGuw#)4H!5h&$2Hf17fe`6J`t~2&{w&zI}Yq zXL>N}aP=kp#u5cz7Gk3KVzLrT9VKvW#&y%HDrt&l(@xy)A`f)xiR?R&j6oPLf*Pao zwFqA_Y#H8L0o7_iOP)eobkA`pBp>O(EmjJD?fq{%^VvF&)2_X(%AXx*3b!oEd%gKZ zE#c<=tiNi%W^;I*PC~uf9r24@27W@u%|?Zvu(zhh8&>%7?Av#vGZ1q&F6~a1(Sll; zO*jeES;maExI*+%j&_N6LHaxawHmSf%#5q@G1xk#&nkdaN7U4rkQe5IuzElnlDML& zSdB)r(T2}X+|%Zy?P-{ghTZAHGp?!l(1>GYQbJ7QGi`Jqp3!laRRvhUhIkF?cy{U= z7;5p{DS3w78C_G885U}QMZ4gLHsZ`_6!6N~bIthVD?YGW6!u&p-f3&PYqPy|SEKFx zyR^kuUG?OlCrdy7^rxSALPTjbfxiD;oPkTd7LNT6@&A}%<|P2UrlUFa!ye0rcZT?l zkm(zSxPZRy-Cu25)iO(_33*6(CcW@ zim1U&6bj-dqn$vz8|@*qPoX`J_Ej`m5p-GV&{m+WMC3fj|7USB2Yl{k3OoFy1q4*~u zH760Sm_)c@65)zTgexWyu9!r)ViMtsNrWpV5v~BgtCD(?2vZw zvhBi-e0R+*TTK!(HABVf-)Z-=T;r2wTXGyyBxme3k8Ylln z;`#2nK-l?GJaatz(#01mjksC+574V0+HlgcQGCQqujTrUI*&J!k{V6K*USgarU$Kj z&}w?n!v{U42RajYrpR-a5}hUFBkTiy#MDnRe2_6c7~+E=^`Hlc3n)qsfRgny&1!HH zMJu2Up{+*Sfp$6C3ADS>9zy#R+Vf~%MI$9AK@O~CQ;#caRgB?E1-=XvJcjF}{&_t< zuR~jpXB$Y>;B!f}Ha*&#f#F0dHjFPGyiSEfHztoxGPu&{r18m@*l=Bk>pHxY_Zt~y z0DT#y%9@%Xl&a0dX$P5(iuuSB)uKV41E_C?&F}$`;XB$EW!;WscOxv$n!VcFUG|-J zm(^J(cH)X+5m`{B&k3rmyV&kJ^CO&r9&l?|2Do*%IFsm}XuGF%MNb?DTWC*SYLH?f zReDlvus=SF7{#wLt*x0yy@{Zsv|UkN@Qsr8OK6rD5ZMT8>?Jeh>0+;JdS!{=tVx+v z^Fg(Vu5{5^CXzJ2kv0)Yo(~{Oc#d?lw3neP09l&+6n}ACQ-F8_8ud>HH+VPbYmYe{ zeJtuqG&257^ihitZB6unU~WknP>LOHwy>;q>piJv%px z2d=v6%vZE0&TJP=u>g*=_e3*(NNuqKPULCr+wdIhmVPr#&5FXtsnOfy6lj-H4>Q)p z185qd?4bCH;`A~6_mtLhrVUkuHA_ibiLl*oWX}cJGXpAAvorfZ=gcRSWnP<$ks_Li zC9d=q(6p6L;y?D6c;j{LC#aLl{fIZ2N2;HBR91_2V$N&$S=Lf7jk~?WgeHwfE3-y9M*RN&73Pq#nz# zFsd{7Wq5#2m(pqj6f}U~0EWZi)3TxJLer)JM}5ogL|Qfdok-?DB@m7zg{TfUMS*TDB@ly z;$A4?UMS*TDB@lyVjh@=*MA!~KSkrZJI6Xe26jfXr_R@VP5u z0y7I$ytKgN>ygf%rr%-aR>X5n;(or$l$BJt)cSvW^mo6RUAofeNIHD-AMxJV#VN~w zRmCY&EHQbpQJiuIi&LI*1p+P{cj`(;>GMOifZv$?DE3`b-|MAi|~LZ%Y9bz;9Hy-E&m&__~HG;}qPk?6QnXYd(sf zH0#fqM+L7fht(gLUpnMaX;#+ur0G`ATF4PZeyv%kQ&}8skhPesQb!`ngI|WUyKZc+ z4aL%-dr^Ma8*a!rY9k>}Am5*#T)n(%#mFV2lN*23?e+(%ys4;LgyT2F!>e6EudDh7 zdno9s8HVRp7sz(k-y3eM#|HTNTuZd4Ye}(s7&k#aPjiOopwsp>W8t zI8$GW*T-sHo|?z2Jw6{qs92`06fa7d8`WW^Brc$$3T%Q>Ah*Oa@0AHkR>*V>$Hd}f zwjTmCSIXb$#+!{o)TZ>Ih4SAD?@X^*@|KI$V;C|;B7#&3WDyT)-$m+p&!L{)-X86T zJ6_nm>-lY4pWnUf^bV+n0*3zk%Ew2+^p=lvhlp2Ih;tMdP0bH-WQRCL4Da-=-Oq2` z_WZ8hFYKUBd@oM>JBafbe3p$m%+;}gO103np~iGj<~pR7Q{_t4VuKA&)E)OCt2>W= z2OvSMV#NWJ2ib*k$o6K@_sAoY8&|L1IQg-UO>SDfYNNT1NO*n5n<)W$^cE8!YYk7OwCye8xj7s$n*C;~~9E z=FZ6jpQKN>a7ax&+dR>mqC&Y0H_$i}%}=?*4ZgL$hKS1*kvB*oewyDXeYHt_w@D1~ zSKsof*qN{N8(*5=PGdv52m_?QfQ4LbF|tl%j8Tw}g~=4w%_V91k`i?0MofTMU=YJ6 z!t3ums&(9OX1msb-#!W`?b7}jdy;mWVbso^p~h)dC8f+&TRU3`qfWqs$8L7w4K$}h zxL2|o_jtyI0!DGNh-S7zjb$O0u?T|LuUZh0jxY>kCT{6QvP=jNc2u#EPOjcW>1g6% z6c0!6FoNqSIVf!NAa@K|WKbQ5{d2t+&K9$3)^z z%I_|_5EOmTB>)teh;(4XRl`+NE7c6$OqW9rK(SHDp-g|EX!TjO^yQZyD}D3tzJBcU zzrOtLI}eB#N~^@hrB6r<{)={{_DNXD?~x;7`lVWNO#y#20xY_@%OmR;IS1}Cq*`hD zvcv=fNl8maS_fQ(cB$Ozx4ilYT98&L)-n)cFY=g2S)4JKwdZ`S&psx^Z3Ejz(#Nms z-#(H(JTSUwSpZez#_NxX$4cMz4v7EJuz1Jdp&Jqd=MQx+9$S>@NH`nBvFmQEtEB{c znM#kU_C(pn(Z#c3ioZ*9g`O;GRKJ zerAxA3yIVYZTMRPD?LewnMTR7)ue2VO9zrosnHqwsuu%gw#_xC7z1N8LB++y1;%Q? z*22=BRMm~PWc`+WA>X{tc>a)R$xh~4T5^;5LKWlF=^B^o0;Z@6iwS`6YQUca+zJr216;gzDlZE*C%)i> zgTrezt}32fEk#Sz(km&hL5DBXsvGd*34L{jh5M2EWJGbKamvgkRd+rBa3ZFIzsg`u zKaWFDz}GF)e({Nx<=ydUFqxZDHM#m=INmi;c(^B5ThmnI%=Pr-*5-O5HC`M(m&;^w z!~VFpM*CcS@2Zyi{75vithK#qS$90%y{xIdZFx94lB;i7)mvYR<~us_P97E@I=F^Y z%zJW0R}{(!boo*Ivj=dC12UV;c+jPU#DfK^gHk~VDM>>>9 z!?I^itU8SUo;xJ|_z>PP{zgfB8E4|~9T%G4F)OAz%`690G(d;4RGtel^QElfNENR* z9FhnxX0Sp`9zHCNHeDb}hyL+%;2H4+_yFJ2zE7q$zujyqNHam;8`4ZDS_3(&w&RvZ zAHC%f?fa#NO79Za0PA12{Jl0Vek_Lmf{B8itwpis5e`rs=I8`=$RKUhqOC`? z3zdc}SD0s-qV57Q(w4F5Iz5GPrD@AB86}OD#RJ2JN#mYHevDNoe&%WuuTflSA6jr< z&p50u9IdbkpyOcxNEr!*kHw?nvyS@SmiscrOrW~9?wTV9YVGz&XsIvks`}LN<61C1 zG1Qo79T?~heDlKnFL=5;(vDEQ|IDvsjBWWF|4aLl_8~~7ODq@b@b1&&3(EmDGS|hr zCJf1?8=5SeEFo$Eu4-bf8DH6^$AA*(hM(6kT8?WJpLt9)$krya>uqITgFFv&c|zr` zPlYL^gNzuMJj~JXp!F~`^4oRkWGpOew?T&L+r{MC{RbB6{3)cAS z8d!66i?1~ot*c3Xt1eMzwbp(zJJOLzc8;VU%@4Om#LmLXo&8Vt?OItVtlZUiTed5g zcsZ8I#JW*SzRuwdAS+1u1_xp1*kQYzZ>ANU@5^>hS+&gJJCnL=Kq%4?q#tbqcaVor z!YLOh26D|sYfilOh1ki@-1?~#U$}dTolE9twttfbz18wQ427cz!M5qq^^g9RavfFu zfr~_p!fPbrh;FSiCYZ(R8OCel>)Ui(TXgFuk1Gu#xGx}CJHAR`8>S5l)q_*Tr0&U~ zZW_&)Y95mSv{KImQD-pWsq@A|&eF#{iJ(l_1n6HhaISehx2h2pvFBWjm!=959l}NNOnt(BQ&p;GS@TxI2HD!Y zOxY%>Ewn_A=VG%L%j5apeCaoNoHV6P;mU;=^;}ZCJYpv?g*9fH%5IF9k^<##)!Gs5 zF1fz?D*k|bhH!}&eko3IA~E5EJCw^X&j5KFM2GKvVj#P?Ego-MoCOY|?pUA>CmgvS z)}BcAE^RD*xoNyNc@se^qMig`y_u5r{TTQGz}R8gY=-e!Xq;u!7zt8>TdvAuVEPh) zN=fBN?X=%v-%1-7R}mIlO6}rrOHbkY)R80dSRwNWYAx%{BhZeL8y z!CzjSFtlAp+1Gq`?Ge2A!(w0Qqw2Maw#ZjqmUo-q8Y5zGM)H&oqbDv%Oi6#*%w#sH z4i$4*;KZv(q`+6#a{UM70{ zhUOb_VMrT?^Wllelh}V}8B_$xyn+6S%?I_5NXiqbwC6GjpENT}t z46bVFX?o0XUDw_Oe_#Put|l; zCsfNpcl8*ph>ZcV23b^hK_^*uM9jFP{3{sWUso z>8t-^It*R~ zTfk$O1g&lgBl4dTN}vVKK<4)e_x0ER({W~G%*89)LlNlXZDu^p;<|G1 zR4J_lUdgzR6o>_k#|WMl@X!E%T6gQ9jj@0?CG-rJj!K##gnsduA?K!I1s{}AfZqTL zm~FHCT1aw)ni4Q!v!gPmSv3^{x&wfeCyA%Q=AyV0h)Ox?wjWDH7iZSDtnN>z`&YMo z&=E{}*U_F@7xCS7!a!KGBY3FEA1te<(!~E_im1Yy3vxo6l0JSwuwhL<_Vq(InkW`r+0tv-ED;etme}HoR05ag>G=|4VdI@z;~PF7v|ZeIrg;4CMjdv zP(t`R#^VI;(zs?hm3B~6w}-nY`x{sGr|+nC z#lx|jN&4C?%givIWo?>O3thN!_9?WP$`-}gjZ~dw&xr4S_Ij=Drkl=un`FgxC0dsW z%SGn5=w^Req{oTcxCympBV&ppDQNh9Ql$!y(Q7an9UTFY|tXlLnPUEh?4Uj~u{3M1}@X0+l&YH_nYHkds5 z_^r=e|BGv0JA&1uCvax&PvO=ka2J?v@639eu0_gkTUh;<9YNYUHmU6y*H?Gtp*aLb z7btQirl@t=;~3bpf;PlGg-=X>9lM&V_F|ydBC$U zT~_HF6V|b5V9?=FD-FnGmLtdDtj3tEu(HRWzV!+?hRlc8kyT)~^q3)0rs#5SLvj9@KEX1KgWMS6AGY<+Sw2< zdydL!F-$CNn%khf;i9M|#KmFpd#?HarTC%Ni><0QORI#nk>sLmv?`V1K>FZUu;v4J zP-bItxn?nX_2C(*RNF4+G>~89B9W1y(8$rxyjJ+ zR1WQUp!OpuYGBle7O4YY_T!pU+Bydum0Oo4%#{gZJmR*&Ouw}psjPz z);VZvYywc)ItOi?lbLqxwV6~hmA;-~ctQra4HK}OzW%HhX43-nD_Z} zz3C^bed$EBC2MnqouB-qGb}EioqAs9$C7;{`cgc$KTf!P7XNGnXAu(9EWaQXXwalU zb#f{LvMjk2S;Sz*A+l?|#?97SxwXN)l$9q<`wY075jvvpr);2UXrd!g5LfVuU9q(DudQXkm z^@8h2q2UfDKi`^RdDLey@AaUU-1G=&fU^#m5?swPl9mD^NeMC#5}HB8(0nois)9*I zR6bl@t7QQ61JP{tb+x-Tw6v}0NhEq!w6$#7RdZc+CXPkcmh_QGaP>Ah%(jW{#J08J zXbZ;3d;kMCKCGYIVy5X?@o60uW!#i`Upa_j;KmK@5|+53x8f(6Gd9MZ614Su!%^H#sslE;cHd~rNj#28$?398`x;gTzhRB@X*nbo|={O`7_&(d^6Kx z%4mXdsL`q+3Nxxn?lO1VKT=%U)b`0yc zj&kbvEs1>UnndS#(~Z^5MV0L>EI&h}B@R9cSuQotXBHQk4JjLRB!x0#C8RCtURt44 zi!RDoBOJ^~0wW7_McmZE$gZuIx)RY5q>@P?p~dsL)@!f5;=&7~UCZ0^+E{BQe5CZC zxbldvZAEti^z_Ud=SvwGL!9A&d6ctQTUXZD8^R@Ir4TtP##l)_aYCK(hBz9B9>+uH zt7!Pl*n<&-%`o<$;tt5jL7IX}*P#m%Q5(T!dcL+f+BTB^>EEPUAIvUBskipU+4r5o zf(1gX3C}5Urlhqj>4;q2gnc`m%iHg0U)~wHnkh;LnW6-4{){fg64N6;vy3f0>QLsB zvQ?s+0y@H^O+*E54nAYfbmSSCpu@npDnnfqY_+)O;z$sD#=Y-Br4i+RL|QcFElS9d z7DwV4zx|qPJej~q`|^(PwYC6CJKc*^Du3w}?TIf`+th|3F-UQZ$?3ZZ7?-tM&NJgq zpF!E&F|$5#HYcpLZ)_Gn2Q6D+>`aT|%(5WOdx#7R zl4UUr{D-2)qq!k0@ z(s>34l>kOQWL;{TZ-468v5&vwcQ3sJ-{td<{F1hc+U4<9;^ixj9n<6G0U-KUkcwTF zXU!Parbb3l_{xXZae6y%0Pt|#WiF*WIIp|5?SGa}(& z@V+>MA{273pw9Zb6@b~z7acB7XQn|G1x{&(NgYXP&7upGR_5q%QjZSnVKzg_7elk` zt#+m1+oiolRo~Fs+R&12ZJlLr(U3VJb-gmTXv@5@S=)$N(3ZK@Ox?3|k8a$|y)W@B zb_`V!Cr4X``68?Z;=yM>6{g9eBtJ*WoAAt*WV*fa$dLkUm+5nIe@T1t$Ttkzu{@Um zjKEvWbD3p^&6@pvi zuHTj$REl<{W%kpfjcqmQ!nHIyr!2G5i#4T>eaU^KHS-N+oI%dM3V!O+xLUK=JiGFK z=CVAnKrV1e2a;3m7KQ}DxGaP@9T^#BM6xlKa3FW;VEHHpX_j?;(jmZ_)_# zCSkWGAqbNQ^d=GLO(M{nM4&f`KyMO(-XsFONd$V62=pcq=tVLt0=+aDJY+UK@+udd zb*`grG#FB%({TE<XE~;gwYKu zsWrH@f&5knc*{K)=7sg+AWHA#2SKj zarCIKF$DF~9zI$PW9+aKiz#AB$?8JsatLIxq4bJB6@e`#lwSr}X0yOhm{qp~zyUXa zawMsu(uTgmlR;!Ofq>%aYd&=KrMs_zQTw7;j^2PG?dRytIX$b^EGcFfF|R^Qf_tj#Eu;&?z#*Ao-8eS`;w=h{x2b(eU>oO<^PPmu=*?^ z?D0}NUdNZR{+eBXsk-APGQ5P~yYuQI;J4@MXFeKz^pygyL+?DB5U;@jnp8 zP7b^Ho+jL>*hjazoG2+PXBzaK_fVn5hWiiJ_vFJ?*YP^x3WOb3ZMfus+lg8CcRaX< zN6>srD`?%?y`UFkZxS&uEw(81*rImt-o5Z`mZ3)4i`tW9#gnD2_|yabzkl-NCD)fedlEyw z?6Na|EIwV@#%6)cdLKr9&@^(Mq4=4KM=z&iUbC4#9j+fxBVbw)L>9^E0e!((O;b(7 zfHkL~V68&xoF0vA!zN-Bh#l5o%Cw2-g4gP9Wi_T8F-==e{mPRkOOKp5@wt;H7acFX zcC_?^V-f;p7$`VcQSx?=_Mn6VR~)8g*_Y{r!&l^P%#&mvQS*yRba5%bm=9OF4ccLL zay9lZvEDUOo0u%btQXozKR$U&MjSMripUasId=I z>3$CoLJJM6tt4co1}F?uEfZsE-vLFc9FQ3bGA426oyT%3v$qeRG_wmM^Bv4 zYUJQvE6;y)Kc=<_<9iw7E1#_VA@dk#EeGpq>EJp8R%+1n9B8<3Yz%7AhvFg*PW@G> z>Wu!R@dqP}%}^<4$!&LB{o%b4f8-?jW16Ni)Q$UklBfv-VlV)#vvJPkRdLIqgUP|< zb#{-_fwJ0B*O`L{zi{Q1S6%hoRafb=Z(eiW#?Gw|O7xQiM)&W>emgrh?eEe4at8ml zSsph-qD;Tj^?o^kR3Qh4B?lX|fo3k7G1$ZSnVEwPZVlr(xs}qC@TMo@qiWRwAb|jY zAooi)R-vCpvR}XClKc1Web1$ritOIK@7lZf-Fx?5hsEWKBCX+rDBx@3;Vk$U{KEgv z{E7G!fyAcRr!cX4Q?YZydFPR`uLaEB37E0^MQ*xI$TCQx7dydP1`~eNhE>|~X^cFL zS=Qq|gZm5-OM?hJEk_K7*4bNTw2`@+F+(k$9IC&=pK?|?>%BK67bTO!$=iK7r{-z! z-B8+&Xb`rL3=SOZ&tjoqRkrUy-@t)^{A6Qcb)!NxIQud1`vsZ{yQAKx^ZP3BKKW}E zMq@}Ek{li882+{jtgncXPdQ#*bGY&sJ-GH@+tkR^H~Dl0o~}@pG_ha>aqR_wC_~t# zao00-H=^GG4Be>tnX1NlVmbIU{Y?@cy@(05iSDtg!OrT%-0a`Oa?b>f9pPZq{Rn9n z1RHYcuvH7E^YwxIync_@iL%kP!sGMYB|;7PbXb#r3yQnlUYBr$YPGt6LpWVdfqj(D zR9jzX#%j&=40bk%cq%R$(t)Hm){qdX&VlZ%X3cgDw5POiBJ6AQ2J(I(g0TpS5W{AG zU9cN=!Dm1Z^IH;dV8n~3w9lORthNy*r>^Ju8@pvh$Ahvzl;uN>MOgw(uGEwUa+xwb z@kbVgtfosy*9ia9T2EejQuVLiVa3UVyJ7FBcR2K2v?{@h*rt6|evA4{E>o@-2(}tZ zotRTA3C7C1dSeD}WYdludBbu~ri}~{16mDD)cjB{G zQkNA^C>Hsb0M($6IZjw36E@ABYtp2ulW7&?1?_WfTifm{Y$)6rU*zLCXCtNeA#e4W z2TR|7?|VhlgV()&V({95|2Xrk#v=$%U?g{ABtAVanVqX~kdA2+@a;~uw5`gOnKT~X zZ!M;Djdyq7{=R!&xYL`@Cu_BuR8vb(y;WO3a_Z#K!GR+uZWtqem*bsZ!aI3Vx3cBw z7*Ve(2+KLD6W=jMt1&}K)iB^W$LOc;ZCT%Pr#J1b3!-3lB-!8rpbu-$oOzaWTzU73 zuKnF3*Bv{ySkBXmV|DkS&YyyKbc(8YXt(iJLYVkPbv?DpAn7Dm{ zALX!M)3#w;-jy1Iru~Ige)yL(=b^Sc1FBNQTc<=kK&+%# z5eJ14<-W|a?Azy#=$FwM)nV!_pZ`?Aa>yT0dPIo5i-fGkA1stYT7X#W$7v}i|d7a##y)^!K3)z zcFB!=YUn85Q`R#8ydC$8alaVfUN!Y?KHY++TPW}CSeDfblGuSjJHlsngwN~LtGbHH2i_pKN(@3-TAyHv2%xo(t!%=Q;Mt^GZ^s%8BGoH~;W^+CJ9jtb&KXLWz5 z*qy4v(E-xV?ZMx2#l9lTQ5VI_TB5l<9~I(0C=P$v8wk}}Z2`Z>?}aA0H0S}Zw>8G0Ki*N*wQO<;)~`fW9t&3a?ogoaNX@5QbNwANA73%OVOcYM>(TI!p?p;AN)oPe9|jYOKQ zX+C=Cjqhn==o_VL^}g{+ARE6>rRPE6QZZ;_r4L8N4Psa6l=$#`zm&UAroD>;9E)N{ z&<)Mvj)?pnW;2E{mfvU^BSkph*bfg4Z@gXXi(+Qtc8v68{BC&K@1{noB8_sSaBH>U z(tS~JvDhUZE+NrZpCf*0pOV^K>NCwzZExcGr<^PM;B2E}AE#?gqZ?oWkRldl_F`z= zSr8*?N*|7t9wv4GHB5i5vEVdQH5Lxl5b7KYFr~wR@Y@$903{?OJCGkVso1y z{k%BqcT*#sLBIH2o48PH7LS*1pBm{L_%>mN7@0=DoUQDnbQkEC{G;gi#&e|K$J$Ge zfqn@!OkaoEw6QEqzY=~Iwh@355|SRK^`ZE2A^N?rolrp^<@unOKOFsXu0p*;PFKDN zbABE)wrY;?o(=x1O3#dr0)-crZU+2snu0$yq+vT6vsPC7RBwjFmGa}GDeR>DdofwM zUmO`mFE7j*%fj$qHCp;wO`LMpM~ImNlILTbKJ#|(*4GK{-E&Z zT!ngxoUVKk-t=df^O8BnI|Z>hI&Jq64jFg@M{DDS5Z_cqS z4F4r+Ud_OuU^cB+T==Hozj=fN1ss;?=?@Bj&Q++F$mz-#VZ4&&0J*Znn=$7pNhvAq z0TLSJmc*O5vx47A2;EEo@pmr(KIFIZ`{t9dt4fDK*b*juALyENvheSglx`uRk(TFt z-+Yo8?;91HAcZ~(6wLX?`F@EvN^%rWgBbZv^6?CqPP0i2DWI(?eP&cVASv*V=7Z|o zza$Tco2Be{dg`5kPwi9|Hxr$t9aICL(HpbkTBDqISlSxBM(TLjjL`6_(4R-nALQ{a zEOJR07!qlYUX=!B)WK@eWUs7#RAcnYUB~S8Gov2DhCEhDuje*aN>27#hWgwPIJdDb z(5qT2f_zd7V1z4#{dBkzs>;4w<)MH89bZwp#*opop*n--2vtO?ra{%P7-2h0PP`=L zQ9{3T&D{8Z3**#f*&lA4>`;wUSt@seP7R-AicY87bl7=9yHo0oYfyNG6m(?R!@17x zV`{E5`T(U3oxFB0;-#9GYx=(AsT6s7oyI}#3rfiW& z(i#=l=+K+>2G#Q{%1|Mtv-nKqHz)*8!FK8mMx1qC?~M7yN_N}j)-b%&EW67%l<%5D zze`?`@LKR)hLmJ#hLY&ac&;-fdihY|Kvw?|KYkJ%YXK5$s)$VDEYad)Fh_yB@*b^$7N^H-f$E5$s(rx3Nv2$IT3^ znKEwmeM3cSiYK$60#B!YR8vIX>xKkTxz`QZ;wlFc<=j~8Kvt1|W$?0fU0v%h8@zj9 z|N73(_4^0DDAFUFdROhgR*2Nl#@_Y48;4R?YTk5rx`5{WYP31#>gzset@C?*kzjRA zo$d0=aqQ?{x2@jY|Bc1Fmgn=!cP;*U-<~yXrJ?p^ossPqKiP9$Z#>?+w#T37$Oc0B zj>xb4sg_9BXr14MLsoBax%yqKfM>?g63Yh5B@1C_H4h;Jz?Vn_%z>E+WG?Uvy*Q`H zj2XglaiwrcTEtASi^P-acSij?eW9rT0)G_Z&G?Es(RHT|wJ}Mqb3kp44mCx` z6;fOE)K0x7>|;|q6LLn~JZ#ge5JX;AplXkOVo_qrnl(!jizll0*iwl=G#aP~NRPX` zBje`*P^*`WHYo7SpsNuu^Pz?4Y7HukkX#0EZd94$)!`M3z|f0S31!9oD^cH$Up9`f zGq`^kG$u}@ zkIo6TRp7=2p*Aj|#e?5hOMpyD`8fxDEyl_iA*K$aE6dBpfY@4qcP*EqDuG%=Zq1Y5 z#7Q&|X-J4iM#LZvurA_g#tLa}S1{WeS(ofcd0&eLKKXpKJsr5mAJT5r!j*AmB;K71 zMH)N8yB#6V#eqy`;+^%u5ULYS=gcM3cV^7RnM-uKE8>taGu`z8Fhc-L5!YcZAsCux zK(Co;(A)sN(2Fk);##?U!+u9*kcW^7-(Mu_RtPw;BOQ#bTeod&Y+^~eBK}+*kM8{6 z|9j{7+8JEA0`xVluIXIR>4z96*>pm8^14BasX6FtEssjX7rOL=Gz{nr0V*pimij0c zBnzF-+*YY?l&%y;?_Jve@eg=oJELtGzdzF!-MP*ejr!JA1g?imk1k$zQ7B;dW_lVn zH1wo>7bb$E!Q>3enpl`Oha_bgu%cw^vhsGRu@6m;hnmvV&QDv_O^X~&+^y^Pf zLl&PChX}R#l}8Cz2nzAUp#yvN>^=NcWi;`%6DP!vzI*B8GvUxPy&m{%K9~az)9JrL zjFa9gof>GpvRS<(el$b=ZL^#_J6=y)&YLFx)K<1Z5b=3H;+TG2Zq}?LJdO$cZb-#V zmd(@ne*`~VQYqidTKANH@FAc+0F@bsYo42Q6q|z1JSL%K#d@gvUa7dK{ zF&$2e;SyZA5RZ21e#24;F9S}eVZ`+tN2D2c?;<@k(>o*LLc$xVlq<`So4skdLZGGT z(1)XuUAw}8%0c#V2{QW);)gq@9IiJ3FF-|#q}9{7k8TwpIo-Bfq5G(Vb6CU`ORpq8>X*mp<$x9R@rbl+-pdcDHg8qE;oWvc3g zxyv(5Og7#ye0Z~sM-RTUQffjH@U#utl|kf}(Y4K9Z?wA*-?y(KcFRZO`vUcifrrGw z8FKo3%l}-6!*Qz>e<;?D(F*j_(QV_@2Oy?+NVqp0K=t_6nLyFTgpotir4qXd``F zS=kj8A`FL4DPm(Mc%=r)p?A8RuG+PUrnqysGQb-`miQ~}9+uV5&HH(l{#_hscAKZ;7kt3Vw&UknGD>Fhq75D$B^Z~oIDxB|( z{NnqwBTEC8y=Uiq13uW&Fo*?4*1%wG0Y-^@AR3+l7{yMe?kP{Eck1pOy?z!bjbOJy z#SrP(an;TdSIWJsB1$R!hq&S^-Fy0HQp(6VKw#7afzf#(Q1M5y!3G|@Fh z2{_$e#(x;#HSWq#GJIc}ALrx+SF0Kas5n_Uu!i^T9UR=dd-vYKfxQ($YSW(_Jov|d zf&)5dK&gMB$e9UB112aj&U)@ps?efGrB7Ayp+eGeU7SC#bMfMfDuP7m#hbI4c5)=egZmzp!%#M2geTPMXW2?2-Y~DGDh^<)=fU95bpA|EP}qmgj{NvW41=5? z9b@9ErFw3G5r6E%x#HM7MjLt(HuR)nLr=nno`elO3Hdt-8+sBp^dxNPN!ZYnu%Rbm zLr=nno`elO2^$){plZ@2aJ2nZZvJ}SvK05banG!UJr(n2n8!TAvIbIA@kyK%st${V zmCdc@vNk^IvcV2l$Hbgd@;ZFM zx^Q7V?4oG6yO5~}mx~(4;=b-gcA3|yksff^lxBC>aFT2|+7K0MwHmLx&Rbg*N(PgK zq(|7i4Ks5ShTs?7vJi$BO_P(#GBqspZh*PlyoPMV#|)d4Ryw~-vwjg|s9}T9BReNf zsy5d3a1w2Q#bM^lMn|_id)sYWwp0YsnEfEbXvd zzOb&pSdR}3)76G_T4&jZ>m0KG0)5T!e9IpBMT36N2i-0K{Vo9>F2McjO65twsE{ZZ z4I?3xdr&$+FYziJ{@ko%c`F0%FXQdmKp@*5?~NAH0kOmCa`kvawSn4>SVtxh$aKUu zYXNV&FBtT-dqWk0y!4Ymwj=g*ygd`}rCOpjet*=T)~bS;&R8IZWT%^a(U{NSk3|DB zG;hCU%|a4{hSQu-FHZAdE3_&GGwP_|3JLLAkz9Sz(Dn-}g2GLu%f-?Wq|lo)kv3Z{ z#YsT-FEq>Dx`OLOCLC$)YGlRDIqQq`W&dHBhG*Cr^hVCN3`?#rV!QJszIBoOGzr?H z{M-vqmwN6>rqvoY1c++hytzj8r8&+oW{wVOEA#kbxsW3RO9TDo^FhNAa(;y%7O{A1 z%ImB{d53gsbaAvb?e}{_-ukxK`7vLcFDCzSV`<0dad{fO-ilChmoMEO_XTrqS93HT zZLRnD>RWMBa5Xgg;_Yc)=`~+C?6Z@`Kg(EstuLy@Q73b{lwkJVg6kTcDB(biP0nW- zu7HycUoRztFBAg2rqlWgf0P*N+%HeuY9z7J1CDLgXXplS6MZ>`o4wLesb`kVGwf<6Z59E<1-;ejzL^pPeNaeD*XTE|Od2a9 z^Z9J2VV<0m#nmX`nvwrjN})c0uJrSB^W>B}H-m4tf(k#f5Eaht(c$cNz{YR}w&4B( zz-v3M7nyUNFR)xFDRH{D$J$0*FGt2BelXMP<3Y{m1jCB_KkK=G_)pL71%9$p*e~D- ziV205>C*IoTH7Q)KeJwl}10I*j9BUeGKjYFmF$LE9id=Q_nF=OZ|s8F-4Fg(cr zTb|=-%a!Mb?Z$KWA)%p_{Hm10zU6Sil}uLVO13wrO6ONf5$EVn+IonvTe+B?goN2;=iHh>2=fCtwA0~>L_5%*in{J2@SS10wX=jqlEefw3GNolb% z4!=lwt>f@o#|^J_9A4`Bsmhu1m|uXP+=D|Vxx zFwll`#2EcoH{vw299V`B#!yA+9HNq9`^a)nrY9pE*+eK7qa*vf4?AL|Z&k`yaAs5e zO%b}YP0?gpcV{~k?^rGFH(uBNP5UzJuv*xc({hKqSy!-IotY`{1>zLPP)dI3CZ7;H zswgpIwlVpICRss~7FLy|Nn#_0uhs#fb?_=W^`|JeEy2);>^mYH#`Tyr zgM2Jx=)pC`Qtoz?;EJF%qYa|1Lfek^Hni)|?n3(j+T&G_cS&QmBxcM0xP8^~^ zt5W|}$zs+5%So`;;WgEGU9~#cGY9I<8PuHv26CY89H={o;pRZyIZ$^F)SUx$=Rn;# zPQB~`(X~OOdc+xTLBCXc% zar$bjsvSP3BZd?;@3t~IFsep;ACmZ9Ww~0cnh)Q*ESn^r522(i@%?`Z@7q8teBC~7 zTEq4KTl`O8G{paD!~)cvGGteSMplEH59&|f0(~@#T&<`?0BGNT6XerVdhw`OapuQo zml$u7u)aqLQ@U;e2~#B{?B9ao>QI$92-)xfGtKE|7s&NwbrZ&*di z29R5D4dIH~&B!x=j$_%1Dtv*(;2jXqJm3(2!Pf%#S^$4l_4aU&XMTK>HEh)>cIqf} z))G{AsD54!aRVztw+s92+5;}V7B2;WTz&y0koB9+tBu-9Y?zp?fqzvp*@H8GMZi_ zFob=hA&6Ne8NGNVPd?$!1+|F{nIO1dj^}AyR{$FubZnf47)k4RA?(k`-?r#aPFuF> zchg|s_@+fIkQV5-Tips>XZ|eN*Ai+?dq8zXv%~OX~j_s3DJIoI0U4H(G9&^l%z}u3uuTRma#m8Kz}g z1%u^kZCfTkw_~F*QM-n!5?80bg`^r+rzH7m2%|;#>l*oK5sKN`sOq?}Ux zl->r8(FzH_t-6`J348qskJsNE@OlHSUXS>3sIiy|h6`SAM>3V{&IJOwZrpVEGVQ?> z`g+a8VO#yM0BZuFP~eqdG8wE5B(*q>aYA3ydoRJbeJ-axfV`ALeIVkKlTQ%WcLM%`V+cxen%^ z!ptFgt+pI8VJ3yYUMHcSQX9Ctz=&O7#4a#m7Z|Y%jMxQ6>;fZpff2jFh+SaBE-+#j z7!jFws#<3k7_mz-BI8f37)~pOxf=JB1LxzOTOW7go?iZLFxwSy3lt4psoyCfcr&J! z!gubfgcjZ!OD;q{e?A}iloq`i4*p{4?~aPbe|)p#_UCVbh=H-@X&76fV{Ba|7?b+MSUQ{^GjiQad+&Uh2}_p`AkH3yloXALh6Cb?XLdJ0dkc_?9m(I(4e(@$x{XTY~zU&v1Dh{0LD@{7ZIHi93BP=)`cNtVW+)6fKI^qvN5 zq`{(TXo55}K^mGM4NZ`SCP+gQq@f95<0(y$h9*c$O+cqL4@uvGH*@(?_S=qr+tF`3 z`fW$Q?dZ21{kEgucJ$khe%sM+JNj)$zwJi9?dZ21{W9H7^>-Q^toO`hp`~!Sm*NX} zO)YL>Xf0@q(AJ<`fOZAiNwj;=K8W@N+6!o}pfR8{q4!rlMH}1JxZj>z#%EO)vAU5K zB#&yw-v=`)Nhl|?x|)BzU^$V?db+!NF6-&-?a}J^uly_?oxgsF`1Fn!cJF$A+t%lI z?>fC>$LU?WpWnLe`CYqT*kPszAMEWeFwwv2^bpsJJ*iUqpo2z&6a*56W5R2dJd%Qo z%oOY@)ZhZvviM%nz*-}|-UzHU0&9)HS|hNAlb6wsquq)2ezeEXo8h>Pb%6RH&JT$=(ghAltQaby(z^8(6}SF?Zt zag)$-)U9jD20ZUJaFWHhv%pCfILQJhS>PlKoMeHMEO3$qPO`vB7C6ZQCs_k0S>Plq zanh*wM-NZ$nK&5)P6iE}3<4*E`0F5WG68vt_RhGl7Zb?E}PL#|t>)3ZF_pCrE5Vc@C(xZ)2RfU5@J zssXra0InKi}z*Pfq)gW<2RI@)?E_%I1I&fU7>>st>s81Frgjt3KeW54b`N4)D*Q-XEM@6OLxqXgMpQu9{Vu<$<{{ zbbO9NEL!cnC@O2Yn38H!7%~onsK#*+L_$g;!6e;WfCT^G&^=Q_y19VLdZ4l%e(8Uw zgwti`A56lj{-&KmKUY1Nvmxon^A~}6ZZ2erkIY^5MI`4%7+AuPa4v9Bhp5sys)J{k z0v#DjAt;$F(9i@lFgjD9_2v^Fy=tH)G=;P1R=%Ohf?EB9!ER>9{cJ4qC|m0P(0)GQa^O zwtT?tE&PKZ%y3Oeq*3y9%VSR@F0#M{m58*qvcLs(Ru;I(0vB1}A`4t(fr~6~kp(WY zz(p3g$O0EsMap_lNQu^D^h{i|02d7Ew*VI{z(osi(E?nw02eL5MGJ7z0$j8J7cIaA zRHd>!TY!reiHml)vdb zRnz93^Wp1tRqV#ZH({_q@06UYo6dNq01w2 zRL|{3&*aW7Py|Cjk|Mf55naGW7bv0&6ww8W=mJG_fg-v<5nZ5&E>J`lD547#!9Wss zFsq({uQ_Y$oK3um8)sD1d1i`v%m(&tGfL=)i_H9E#*^8qW;x~%*5!URjfa2@hwe?W zgfOuZqay??Fd|+B86a@2me}xHVw7W~aJpU&;J^VKIDi8OaNqzA9KeACIB)<54&cB6 z95{dj80rcK4&cBcalm5~+23i{zIxBZK^i!q^CfYRmZNFGgGFd-&@Mo`0_`N)J!l_9 zdjjnRv{%rGgPh(UtN~Qi~K0Hh0mbODeq0MZ3O8lwlK+w}gp$RIb}%I({%8+2BP$I8`$=7jqzQ`Ldy2Yy*k z*FkMHi7gWHdZkbwvkRaC#*iN?k7RA&1DK?I-~*@~2$rFexWyp}P@B55Pu^vVm9Z`V*FgR)6E^U+PZko)BQqRUb*^JWebG z*oOf75MUny>_dQk2(S+U_94JN1lWfF`w(EywIf>ZM$a*$XL4o|^g_cu33^F_UXq}f zBUtx%xq=S9#+7;LD3!@!rCG>sUEpb=?4=v5KDI0MG7lQ zo`pC?UYxRM~A7(+{r=Z6UHh+_q@f8ANarr-FTiO%n6wyAX79TQv_s+fD99b zi-1fKkSPK(ML?zq$P@vYA|O))WQu?c%H9Do1A2e-_&kzEr8XJ{%@2d-hw+7B(EKoH zei$@A44NMX%@2d-he7khp!s3Y{IEgu!=QPFZfHWP{-oYkm7di00g}Jm*Ahm;tGP-Z zj_sS*@)F-UTk)sI=VB7^`T46oiMDwe$An8|B^yyQqjtIjsIU=th7D|3U4{dyZ054n z6@_ivV(>` z8tbG1i{GGzZcszFK@HuYhHg+pH>jZ-)X)uT=ms@(gBrR)4c(xIZcsxvsG%Fw04pCj zE9(6jI5RLcRdwpD#@4Or>9wYwoy!7{SeaH_3b?2shUozlcUTrrSzA$vB{GOQ0~*-K zSz6_TAWb7Fop>fBBO^odn#SL`AzRXS4p_(m3prpR2Q1`(g&eSu0~T_?LJnBS0Sh@` zAqOll`%2369I(I~uG9Fj>W`)H^q$F+L%_n2frTMpVF*|l0v3jVg&|;J2v`^b7KVU@ zAz)z$SQr8phJXc(6g@B2`vVrrvCBEDT%8pi56&)a^(S*-L~EF{mepBY`f?1$1#^WG zucXU63qBL*>JW2g!r3hW03G;AS(F#=&|_m&KmosMNI0^U8xk&o@3k9vO5sZ>fI5YD zq=2Us@RS0cQovIRcuE0JDc~suJf(mqJv;B)xcMm>@s!c~qwEZqW6XaL*{S+7<7rk+ zt+OhdPtGi)^_4jhw0(Bvte;fEGc&ORTu6||bq|sfEj}GPJgk&hsnz{_13NSdsDJ)D zv7_Vt52o2vf6)0x1ao!;ud_1H6*KF0-7^<<{&{wtF7fX9u~W9Pm4EZkI_DTlg!v)N z3DV_uM#A~MB9e8AMH5W zooMezdkpP4w3pFz{ZR$ER7LebDi1?fgbiI0#_Pk-6=CR#Fmy#2x*`l+5r(b^Lsx{M zE5gtfVd#o5bOofR)IwMXGNfe-9{vHMWbBVxNbi{=eaqX)xs^io2WiRp=Gm*0HJ&ZJ z@Goa8NmlyjIVt5Y=P5$=#d*obWCuEcn&zoksXG2#rGap9+y-{6qdn*$P9)tZKdD~Y z@P-{|9H7pOxUi+(z!`t!0VR1rNghy=2bAOiC3!$e9#E18l;i;=c|b`XP!ik(Wr=t| zNgk=;c$7H%qps6?CeHGpuDn5Ac}yV>;>d%#@}RCfs4EZZ%7eP{psqZqD-Y_*gSzsd zE_ffHu4cVI;LKDD?W{sGtSX=l%!!2`=_Su9S`Ss$ciFO_S%)|Spv{0l4a__qTn4xs zc6bnuF5z#}O+&@U>Oe{>e)8XGhudY5D9P1-5IbD;N6TW)%4=su!MkUaTYGd)TsUXe zR}+6-2`|)uB=Tajl%aYksJ!z+e^Ae8LcNM6aH~ZvVnZ5;wN?^o)zn>$e#azfriCC; zx)FI-EY!wzk^mkC)Ygd%XgOohat5@V0WD`h%Nfve2DF?3EoVT>8PIYDw44DgXF$st z&@y7RT;7lht6KYywerZwgkC=Ftg`P}qi|g5 zf6Rr|XH;Rdzo-P0ZUjeKr(-fi#32|q73ItE0h}K`2w~tJ3BZuWBLT?xx4LuccWNQE zm6&AmUo%=8eip-gV+xbaz+|(5$z~~7Tkv2J+8VSA(5^r`iFOa#2hpBDdjahgG-9$D zJ*MSAVwSW%5aZ5?9{&$}?*Se~_5F>{o!!Z9LUyxRLXshrP1yueXrY&EvKs;jA|`|) zT?i0JLg=6|C~EBn@va}{=VP;`@FyB zc>{Om-gDcz=bU?PowEc(eMn_hI7tf93Qk(VNh>&M1t+cGq!paBf|FKo(h5#m!AUDP ziJQ&}C#~S5m2*<#9^HtlgVxlc*1@lEPw|HX9*!UJz#gBcExhXZDF&7|fOmIlrCcpD zcz0i%<>M7w>e)xF#7MNu%~=}(u)9wHYLqVs%8)|2?5K15B)8At_IbN~bkw0-#G|YJ zQN;HKpiBf@0~D%IjcdjKcr;SZQ0sCuwee1;j!*PEmKuyUB9+n5+wG&n6@n=@nfw%~ z_>V_kO+zW)lPNN;V5xogpq={K=%-ygEdEs|60E?(%-`KZmB|Aesv7pYFKM7t_i#4Q zQyRR8`CcB<5I_KY$3oIT^BMY(#SD&yVA!mSlr+-PHmc?eb^F3qA2?53_fdNJe|#!W zD;zi~5$NcE4!ykq^CJ0zKNx=ctj1sA=6`%zPaCpuR3b_bfjeFVav}F^ZoaoaS$d^9QoF-^a6Evp@n$rZ$X@cf7L35g* zIZe=QajHIq75m`NOANl1aT?yQhj`eK?=$n z)b$2+y+K`XP}dvO^#*mlL0xZ9*BjLJ26eqbU2l!L-k`2Gr>?KNb6CTDZ+{d*P15(cC{&Ef3V?AOBW6<*bMAo1d(drWg39 z%S^bR8A%kjQe8|`sY-WCiFkq3Zj$O4^^+s*tfUSJC=#@xPrtD=psA*!HR#SzGocNq zcmvhPDISB;Vo+`jC>{ff$AIE7pm+=@9s`QUfZ{Qrcnl~W1B%CJ6psPLV>rbdxl8V# zl}r@>FMPW0Qp>{(;(ordtd=1)s<-?RQyH)BR&Vc7Ouio;w#P>reOND*haog828&v& zUyVi3WSn@JsG0@9`2|nV9iP`xLNAg&#n9t_EW^q-Lk*$H8$zqoN0m+Cr^!w;=)exZ zpgSal%S9sOA`xglRgiN3!7&e-JLFDjE9cJ1Grm;9t^X(~Hkz-2ScUK+9hRi0|_ zF0bqYP*wx~?Gy1BxVh+RtYFRXDSwJldT5kchETEPJ z)UtqD7EsFqYFR)n3#erQwJe|($_KUncixV#)~05)j9y&1Aq(xV1-5zc8qcK?#9i-DEmB`NpadKsEz*F z4tct1eK7$gCP4HPP+|f!a{@GT0yJ|1G;;zpa{@GT0yJ|1G;;zpbAqOs6QG&N0xIo1 zE9LFO=gex!)ECnrU1^$hr9ryVAYEyYt~5wj8l)=?(v=43N`rKzLAuf)U1^Z6G)Pw( zm#$uFd34648dm&Q7CftEW$wSS+c~;24zIaiGo9=})m$&@^~!xmT8q&a5wwWlJl5_z zO6tBVc3?PC0I@)^$ez>Wu!?8U3p>`WJdN+;F%_aC6~S!EJ=w1$Puq zo%wV||LV;9S68*XeK3-zmQ4L?0Q%Pet$z(b{~Cb)H30o<0Q%Pe^sfQvUjxv;2B3cp zK>r$m{xtyoYXJHeT7{lFSS=4@-G6GGv^s{eb^p#J>G?_--|l~8gOo*8DJbY)nxtr7 z@M(9A1=^(r+v{m-Bkc=5T)*HEw1Gznly6-AcYfER+3q0CU6s>niSJLo@eyrU_(sl?U)%lS2O_Bp$kTQ@0 zaG;MWM!5LbF0>!h6up%`^=gXV+7wBfqPI3hZ*7X++7!LDDSB&D^wy^6txeHen`*ta zDSB&D-dmfy_kLUuAG)r~_h(bkTT`^&nu6Y%g5H{f-kO5mnu6Y%g5H{f-kO5mnu6Y% zg5H{f-kO5m3Y^hfyQt;4&4pEBcK9A^w$&W;t|Lo$OtZA=Ho4lN%-HJPi_2qGjOsU(hE~JrOaJqIB~KY}V){OiEmvhAR2|?F)GyYe>2MITkO01G zvOrrsBnvvog(45i7I-kpMT+`ke_EgI2_wQJRI+=9rQE<4kgli3o&UHuDQ6drfmCB4 zMQ4<);3p$st+DcPsk)iZ%u=8#QlRTopzBlkzg~C_hnoa97j6~YMz~#YN8!|&SqgML zsdCcD+CG0D?1<9*kn4ng(DnT^UEdEa?gw4p54ye|a`c0)?+0Dq54ye|bbUYQ`hL*$ z{h;gnLDz#yD0!e-o+e}eGi$chZB23QKk45Zuw7Y=9QyscO)A)|{j|zK0^_+hH-kMV zej3o2wNz!(UsW;MctHnBq)_M@fDvz_Dvy3Nc4%h=njHG5_m{O9oq$nQF`lEHfYB8g zx{GO5W9X)!l7{x36pnKV3W5X$L4txHK|v6SAj}qmAVEQppdd(45F{uF5)=dp3W5Y- zYew1C41xp&aS5vJmY{~fi_8mh35taTk>L$g;|-4t*AT7^To<^$aG7vZ;TFKHh1(3b z7w$M5Nl;_8JWYZ;Z0F)PTdJGcamnbZn9J>%yssLLZ_@U)o_eafeJxKd6A69dWQ$c! z*20Gwq!j$s6E@{rWzCX`^3AexY%yH5Kg!wt?#c*B34mZYtaYxV3Pb z;r7BEha;*-dCEsLhI~XrKB6HX(U6a5$VW8fBO3A%4f%+MeBgq;A|KI^ zk7zC*ac=o&j~eKL569F2OdT4g4q)nld^muq1DHC1sRNigfT;tRI)JGIm^y%|1DJvq zz|^Uhr^!dqKUnJhCyBXRg>BxStC63$O0Dr$vqgp*6l|`rPCQTgL6sr*++X3o+MX8H zR_UqYtUhy=xmy5Br6L2Q&x>3-Qx=`kpN-pgvlS8Vldw%{QDnr8W- zn)Rb<8GUu)IZKE=*uS315)sg%ZR-ZIm)XmxV}U;Azz#l^8fG6~iyRaYY+?e=^Xow# z;>3?J@%9s1yX8m(P4~DBjM9vz28|%fc}K-_4zxx)A7~YCXn|jkyW6;N&&8uA_4KJ( zLp1m3(82Z5vF-s8fy7B`>2Jb1*0nmR<-gCzrS=ytv?R5qH<*N6{{^YV58vUx@)N~g zDsk0s!(g78^#au$^twT1~b-P|$~0QYg-fU=v5+Q)umVS%m{Xve^$0j&b#&9R_40cVuak+eVY zHkc@&eVnNWC+U+(Md_Q6ga&~iq5$sSLeWFd>8RzJAdcd&Kv3p}MiU^}6?U-|Kby5PehqYW-oUxpcy-me<7e=RXg7Gcm zS>p|FfA6V2Q9cCKI^rbfi+`mrq>)>b51~Lz`B6zwFcBW8WISnrSe*7`B^Q|nKy zUsV6HEyy;+w#;@Qbahy-u%E+?;Z4JjN3@N2$sS-o6`2?LYUDeSH>0*kor?Oc!BY(n zH~cf&9$gguU94AZWNbq0nArKT8)Emyo{zm1XN_wdmmW7QZhhRzMgfg3H=frdrOC;r zzcfp3_EfW5@%`d=H@7zL(R^X^t1VnDMz?se#dj@(S|+r5sMQm#cC=pHy0p!AZRNJ{ zZHKmfqTSi{!#dbH%ykS-j7xky@x!DVNslFcm;6n~*(q|$l}@X=KKtO%?q_-|e0WjM znZ3vN-qHKVK3)6F@3XbfdwqWC8`O7M-$RcKdE{untp0HWqyaAsyfwJl;0r@)42d7| z%A*U1HXM3n=*3};hfN>$&am4V{u$93&Wr&WB^lR;4<7#eh@=sRMs^yRlj)N=CiA7t zFGoqEnvO~zb#V0P(QjnMX3fsJkX=9fk?e1B+T;w%c`@hK7~7cDV}8l)ll%JE=3_UE z>osn{xJ%=M#!ndk(S(o*k4%_7vF60~6Ca)U_{5cynoim_sdRGIKh)cGD(35&p!uCr&(Z^U1I$GoD=WZ)5$9AH6noQ=`p^n}6PNVe7!xdu?0xhT%=~n?>6#JDTjc_SUVpkL_Hx zYw+$iyYKG#Xz%)c5A8SY|MkGugHIjmT@Y4qqp+}OYVpdF9*0AY2uH3R{q>y-$JQP1 z@@~wD)RXm2)jKVpE_(0dGq1k?)Ye6`aW~$5F)P}SIs0uaz2HP|A($0n96Bh}XXkNMMM#v;KaelM69 z?8UHyfNer~-LZ*MjPrvOAxMOQB+yzGVdzCXBZP=yxCwU#mm$uetma5h?ik8j0-D|d z?E~SzB!rMdTdiUr*dlBUjei7|S%wRd;-`3DLD?AYL>%^s*+PBMM+g(I2ovE(!7WAm z%;E>2vjwz*V{ZxG;-%8x6(=~wOWZl|ZlJpEc#~@h*T&=R3x7TKk?;sP_U!W^m1~2zda5Jb62RYJb{PCC zhWkhuAkGHw=D?|Mwod27*8aD)%NUxB*<_XgaXNCWz?Ao!7v)2b%?Tj40J=FY%R`L%omC)q)Mp5`dt zsGsL2JhZw$hM#aI`2?MW95~{4Gq|yE8rHa|f48eE zn00mFWQoFs@bzvl5I0A7H$| zm`7s@jd3(L(Ai2`3wLyHVh(Ugw@h6#C{qAD*&l*lyv~+m&qokW;h%u=`CC^4J?u`W zdUQfjtOb5@LRwPyWT8+9Exn@FVZ+=21yGzgO_zoj$AHf`KwgYn=n(v^*OUFiw}m{+ zN16+Rgu(dzi&ydcTAPKpu*dd4$Tc+u3{~Q8QfUc1=dl(x;e*saM-Z0nPGD|)`KG^L_8mH#xB@> zf%SU(EA}1sUG@X^LiVH$go^4QvtcfKw=fI8QnL>$i9BIC=BtO%L$-r+JB1SAec`O| z0d&*^hHdA3A+~G2caJ{X8C%+S4=bIMpImplw{FnDxO^6Cvvtf&&S!(;^2OME79ARw zuZy*%DyseQux+7{Xtb{V$NmSP(@WLUo5&fkd0SlG9*Eni6MlZj`~KB4)EeM8*d zjJ|!_#^vj&800|eg?&-LD765*IjHg9arshgS6jX=vPYkX`{d^(hvX+F_YDaRwROxd z?9nH`FgYZ&Z{N6lFE@_B^@+@21zSUGzE^ZyzELS5txtYpNWRc_;X*1etxtGpe%``` zAq&w0EnHYWyoU)D0g0XfP@v-;me&JC;T0YlLV)nl@K9jbH#sifJGN_DpN>E=v~L_X zlw!N$HoXUl@q5R0_u|}R&EGFs49{r#ytTE^} zKKRvWPf!82GwHm{BN2VUsTcgQ!|APx7FMM@7!zaI4pG8$w>V`$m*({aW6W;do{cm5 zw<4c@lm?Sx!$WFfGdpItS3}h&>}H><356X7W{Albl%j!F0MKiMc|~)K#q+pE3lRE4 zALWw26ndKdjd6W5kD=csc!WlCy*I+W;1oZ@%%GR*7jX(WT=nZffC;K!FVL@pDCz0` z#8K5xAAMaAT=)g&Tpaa{gVq}%j6^OQ@;0F(ark-yl7V+JQrU3vcq&3;pkr;g6*LaM zQ3wy^d6I;Qc#i~ZoG|{L^r=WU0x7aEf{#Pl^b<2pgm&0DO~S7kCBsKGl$9Tc``Mm3 z?ybLkd@rP?dNWn*v>K`}l`j~HzNI_S=F0wy zv)LbnABAhePr}c_b>W6^Q}{*rRk$VmCj5^5p+AH>!k@xl!r#JOp%myrJeiK^aU$r& z49tjAHXl}l`7#qTGe2fw{>;j1vH(^~7|eoLFq2sb#@f30a=JdVu}~I1~`ky=-Yy|WUYiD7(a;06EI%4Mq5O*Yakl=E5_Y{!V-3Z z86KK4BqwuX_DS~FW>FaRAv-{4AXuH^p%(^s>hVxo@}zDP1;I$O1zV@IbmyKsdwxY2 zM<_yc=Uz#vX+eq05dIor*F$NIn>E=L*8|J^`3MhA>zULuZ~D|11i`xj!ZU|V8ZvIl z>+4at_v@5@X!ej?a0zL>t|HugDB=@?)~`nVrwChzPMToT*YZ7w^7|khI6QYm_PqQt z-=lkx&CsWYBmLs`6H&fIvyV|DhK#4)XhHhrcpFD#O&vaYpy3AMHzC|}1k!i>YVF4; z|3`$okIWb{tk%9I<4}JD!YxMv;8mg4^x;a}+=6iNmU2hcAlGs(wB0&S+`yYYxm;g?qvBOr+ump?%o{ zs-JEmsJe%Vf)5*|!gXckGdr@o_wvH|qUV z_4^17*k7t2_PWIg)$fbFObs6s_TjX;%tEZVsv6zaMkv#54+&GCm2#jvCSv~gPnyk! z8zQ77CqQeC2lX1`-w5O--8WHq6q;=)bWk>+uab4P?H zpoa~?hgzC8F0bdBshX2?r%nCWu0lC+_|)Xyaw=-bvXaVUQF-p(XoZGRWu=$l`yf&d zQ)!t7e>VJ1v^)z??Oj%a1}Tq2DyJavq;hPkPF;pa)oIF8wCZ%8EvY(H#Wq%*^53*o zOUuxs@hzr+zJ?iq&*Tv!C-61@F=zuD;t;_o4Z_g<*gjyfaNbzW3Fuz}#sZ8>*eMq< zCP`!qA>Iz7#VKxT%7<_#g&I<%bk)tT4Nvjs2 z&04f*9v+Gx&g=xfbdZK%5}efcRyjP?mqkL^5u7L$~7OEiPciVT3D$*29%a_@K4nlypL`-yH4vnMw`iOy$!a7+&yqe(eu0-ECdkR6j*` z5W%uDm5#zN(FwefUl&-~NVuba1?d*+r|=SaUiBej-^CwvA}VAN9fWDh8+2-hF}3_3 z;p6_p?t%>%w-8z=bpSU?&(nxH&`S_(yk*onYLmyl3u0*GQ)U1y_&x@nr6-l#yA58F zUMDgkHvfT1p9jaq=66(HUA5O=1bkppW4t;pv~^lIB)`+7k-_y`>#QZj=b+MYO+jrpj31NJ}s$T*;!N(n< zkv+@iieHzu7H^k!Lzt+qNY(w$>FQt>S8)!J&Mot zlvHJDiSGjSA@z^sgZeI6=Oqb2R|R$PkC&`G0r5wqNU12^$m6K53%D&JQh%pnFrv~g zg|vhQ?T&Q-2QgN*`-eFo`aN$s%?8o&sDG>J^wj@Vzr-b9$?xTn#-OtyjhYH+jfD_+ z`t#Z9J+@Z5wZBaW=@h-yexyZuljFP%N?HcY^y{fj3wT4QWL`S(r8X&T$1{(9Ng^Z< zDNQiaCNdF!z*=O!-~RC2b3c45XZ#_{f7J2`9~)-eD=dqS_OZ=C?p?YAdUKZv8QFu< zGO{v;PRJaSgI)Y$z1}q@Q}O9KWn_a?tMscRxo2i}hV9WI<1>cYGIJ(mjLRJZmW>%_ zYkEr(f0Kk?(f4u9^?Thasitd8&ZLZS6KoU4*wQA9%gh;JYx6p zkWKg%L35X!q2n@8=%8LhvL9L`3z>Am3@XtbvW4wZfM@m#6?9ww~3*oSp_l&ZNIy$q9TgJNRTLP!jK6WgPQVyH)nazj46s} z=rwU5xiRz@moXl)PWY+?>_SVaT9K;VP6%$-8zJfwGIJog1Yq0sdbE5zml_?foEIwW zMu`>3dkBS~Y!mghxXhgK6Ncmr&DaH+=Tph~O03y6GGqLNDx-Z-S!Iz>b|#_&CLXtw z3_{|@WTS8?tm99*kRO@wj$YL39~^=nPMytkLN8Kx)A5j54T(aa6cLJ_-tNf3p-PIH z5{rDeL-*3Cty{7a1PV2_H7Sh}ggl35=(7&OS{;2jFU&)|g0Jf*9WL(cB*`EQUP+MG zoj>Ue!Umn>^%sVdT<72XxlCfW_4Vxsv#WKNya0L9Yr&|pOe`0&x?o z`$S0?pbrR+!qzyY`>oTldd))E+aQ^S9tr+EkF+8W0;iwMl#lcx$WcveuIa^}^y1HY zc3m&3f(s07N0{y?=A>Stn-yV%WdMe=`mKCuh|S8($-v;)qLm+4RkjC*3>~R}+AL&- zZbPQ>vC|B;(TZ1A|I6Re6#+`$;Iq z5Mog6Ir^(XN1b!^MR{ID^YmvLcXLAGs_GNh^bCTgN|`9t_TW~NGhLl#dVpJX%DAPl zig%D{Qaw*rA)v8JRpRY6H55jeh2F0katmQ+G^!~zGyE`PhV_2$Px@H5R%(U7>>DbcT^HTsVL;-_5`LXeTWA2oiB$SZs0L)11cChDNh7ls`&( z2b8N`XOwG_Rcd92V3krC;cmTiKLtRWc*DV9reta$x}QPtMZnp~ak%{lN&a_gCjrWa zs~(-AdNj3@SL9OE&d~B|M^L8KHf36kmfWA_`OHJ}{MELp!=E0cHB`+bLi2p}{(F1O z7sgt4L$dXzE2R^Q&41%@gn3~Iz%pr&Bq^H6t4yM&NeGB;wS<5mcq$~c4%)~^(MEGI zUI>Y+Ap};*U(rd>Kt9XG8jD4J(-uvda4}gdJ|pQNDgq3al1@s0K8bgKC?qrW{e%D^ z&*`a+tddpf_yJN4Z~_*qlir#5e1h->TcxZ2&34CXozEvT62KPysEOIRf*h|GYPYZm z^^(PoHBz`lTaB;A&wEpiabS)ye%&IbjP`el@!sdc2EjQh>^rB zDm9x*6=EgBAlu+(O_xLrAv!;bN5N1E4$BkMk~3(A%hNO*cDHoDE92{3Ym&>*@ClA> zcC1*=d;Iipp!D za%;KDgYKj9pmLR4rSA+%zqyZ&uM9Sv&wRyzpVGyI4)c8CJYO-?BTZQMo)yFWO-t+2 z46dP6-;YG0ui;IcUZAx4q?<1l&e03MwRg?c16(o>kS0mh47NYflujFLQAQm;qr5*X zFea8s@>K&L6b*TkXKBLy4R&#*2&fI8WV4X_Trxs-)1}gRNoL#bIxd7FO+upeuvxIY zau}_N>igs6&zz44g+IIc3Ar1RIVkt&0f2uhrP)5Em*jK9k)ywSE8 z@Myn~pI+!-*`eR&@TZ6Axc}fH^W4|=BtoOc5TP8FtEJN&{`3G&kC9TIq$*fZ4+R^m zDA+hp1&ctLf<*x5W=x9N#$a+DHGUNAOh8fnsi^CPsHYjP2cU8Hlpe2?-rTcv1jv1K5 zUP{I$=Fnu!O@}69RQcXuFElH&$nOo9hU8sx@w~S8^Bw-tbAl30LS9}8TJ&r&6iR0s zzPgsW1h<>%TOxPNoLJ05BYHgVl)H5wQN%+V7OW|j$B#c+!b6*~I=STYhl-WB32TqJ z=*T3&WCl%Awc$yW}@>YdCqR=F;g-dD-v7l4ySW1B}n(5#7li;|l%$ zz{#Sp9)FfP!xL_9E5WQPja($n*Q59tq=t&4o{kuwK-qt!h6%|uMf=eZ-L`I^EA;x< z@S?EugN_%6Z|`@L3h6`6qmZUjXAr#KH?r^f(JkAcD4FMV7nx7y>RmJAFY zA-r%{ZWfPnDU^CEv{)AA4kXHDZdke! z3iDayk}oxApp^26v2(KAw`iCW_x{*DF8Q+vQK>KNsXi{bNlYInHTD|O>Y5??=asRp z(2qd)u;`EVuJC{@zK7AoQRFMlMAU{ak_yD1>IixMGIZ4~ksxn5kKl5tSToCT@Q>UP;$t2vp zCFeGV9~PGynzCLSGc|6#+-cssxIxJ#@h-kFkY-|jApA&6$eB(AXE9UMmU+eI!C&4; zg22pX9=$U8iD;MkT3Bfzde9ukMP@Dw7KB$@2yxOpHaxGCjhKZm4kbWOJo;0yJV;*Y z#F0X4C*l{d5o*-%gL6vc!T?{2VlG52a!2j?WM+ws*^C2G5Q8{r2^*nP3f$P`FAV+j zbp%~T&=^#csn2?u*X@qUA3TQZt)OQ9~-#o<=!>0XN?8<1E zHIMjsy^N37IUk!O0eYhhdV@o;@U4avYZX#F%Yy&vv9g5Ys5SaIrDcd(*Yh%>8jdJJ z)b%8^;RSb8%Soq7&$P;p6dywpEijO z^J~pYiXa5rnBS-uMj!I;`|Ai2w7deygqQRN0}BTi^*ry_B{6;QVto?b0uy?ZkH|?i4bh#OKUx&}_nnfY zuxYN>lEOFS*G@u@e~U#%wqHjJSNP24M(WCy@HgF%b`_Z0J#;mZi}NlPJZapu7V@+a zKKS-qLh#_B7Zc^HkAxK}!KE+zIc4wcn@QjmX4^c;-aDO=3~k^L-E%>GJ<+I=mB_I$PA(;LP)l%Ou_%hITIBQ9#OS(h`T zwl2gnQAwP2`3c0HO@NI4X0ZGEcH*n<-wZ!tSV&ZNQ+_wtb5AM*;qRQe>l1l2-&GO8 zM$4wHOC0|6F#VD3m0(`WqTx9JZ5ziHakEX_N~d~$kR5%4)( z9-ljg=+x!!7lk&Sn_e9D?dq4D;kmP4Cw$JZ$o{8M75CMgbJo4XjtK9Uf!^?Gdx+Qw zMz&dx-S`D&2Qd88VArkvfm8QSj$t9kP1%}4WB&3$JI_IACvy4*A}0Dkdg-CiyM~iV zVOxab&T#UfhEG`}Z?xu92l?J0JSq6z;0(P<1N-$qKL3zqSs_NEtXi`jrmH@ko#y(( zy-PrrFPPs4F9jx8zW;oo!=D}|;mJIQS;)glfknDNswiB#$b#2TWl8eR!G@yLx0*lK zA?-ltfFvwdF0tV={$?X)iaGOcurV{m+}Xdgu`~2amd@Q0lH^&xpK+uPH?&Jk+p*y5 zL}a<_&VsaKX6SQ~bL>o7^P!fV>BEZTYni!;sVBefk(k!y*XC5q*KGL0A9yWGzH!&0 zW$E5%bdfxw-baP0t2-Y$l-Bdb8&t~`cNVGzh#@D{5`$VsrnT7a$m}?NQo^Xm1B64P zkDfp4$a=U#-Q?^;>(fckUoBJo`Eyjj6T_l?q4+PE7LlI++hEW97-C?R?i%b3U0XS4 z?y9eg|VB&hU50$EkI5Qr(v17mGv#tXj{zJPAcbL}R*X;H)NfvXCn0T4WCJ48O*R~j9Wg_nqf!$;(!ll2T7eLlV;Z`Eaac+ip}`Qf5x3R53Dv-wb3 z%eF?!a=VHwG13h-^4riIj!gFB1BXUkKbD#>y5HPAj;!sb_gvXKTXZ4X->Jw90Ln8X z&!{nDhSAN88Ah7h3JNoLXDd{hF;h)c#*7{UR#LoYH27OCF&{X2tr*OhAy(HjW{SLL z%o2l}KRvHNeoTrhO1)D5hYo39*NUb#&lZQD96=r9**>;olPJ6OU@kuS7BOH& zwG4PhVZh3&7_h3c28T;XUpWKTRGGeV20UA3`pOybd}ZllfX~RSj?<3Jk;~T}9CbQ* zSBKHhj{C@w71_}zIs2K65yXIX6&V0Pc?QgNGhkjB1Ljr9fce!hAn=Ls67z|*am0XE zt7X7Og#oXL!9VJ!6w2N7jf?Oho{fZa6RC4VME}_(NzOUZvmo`s#Ty-I(?%4NC~i?> z-?|)>C_9}^lCZ#l@?b+yMb4C7nvU# z*u4m}+fyy=_A0d7R|)O*Q~ME7IqeRrv6a)VK#i@Oc11+HeU;O$nMF*_Uhg-PXjf8^ zc1zr}TUtiDrIpZbSsCq?RYJSvYP1e>63e6oa~vlBCpwmx*A4Wd$^Qv4j}ciU>7*FE zFS%!-{71*|Ld=12oEayb68UluQQf8=PmupGy-HJN9`&9(YEHLwmwa*YYMMFosQ2Ab zCx^f3lE>@LCTdY1(CQJzozKsA$t};WrG*sF^N|`+_w=hSdG*74ictF}Dy;o)JzVn3 z8~ofAeCDp;hYj8?x#OZ0gzR}YbfUw@C9ix9E0s9u3pe!dEi0X}@Z&OCh+T9;-&r!& zDTnpFbqLTe-O&8~%ai1`S(v59Nna5(23U_Yx!!S%rj4$wQ;lZ0vVZu7bMBjpngRe% zO%W(PWsLsrjf(}L(wFZfg%#DxcZHJ=)5)u1WY9i7v4zibVvC^nVN7hlU*t#21_b%U zw#9p44%$|En)5j~iKaWYBI+Z7fK^e+PhzAnk5@vzxYyjXXEh?qFW84F(PD#B>@<5` zVRX-)S9nOBd-nVc2P%{PJU-Uv@kxK6^o%ijd8N($P1I)3icg(AbIEL5Fv?+?7w;-I z|8X!a36lAT(p&F{!G*(5JLO(p+lo^gO`27Z_Fg-?6AJB5aroL(e13`-jrMpc!#%RZ zTx;i&Q&RpcPVI5wTteEre||?A@^3yGV5)}c0p`G%9$?liNl3r*Ojnou!0FS2b>SdG_kE8yUV@wDUox-Qb| zl|N{S4WIFCZOPAr1F-gvlIGr}B{rqY|D!bO#{6Y!uy*e~rBRF9Hz%F(oY8JRsEqQ@ z8I_^?d3But4nNOXC~)Sj=L0`yUab{V9j1|Yt`(anulJ{(ze{1>Ze8$0CV$#W+oSLe zfW(Xig>t*(7R9NS0iP74Sqi@*zU@Q2dW4BITbB4Z<*mCdC8_?MgA3AbpU)twAJFlg z&6#2jHaLk<|$iu+=#~J7ww1Pe|ko6~gbtN>9dNY2EdclR_R5zc3E$<`}sZ0sj|Kj?ebEYc6sR@?V=23 zWdd67@1`ZnG}9t|sSxcl5$!7?nj~G;1y5=3TO_}5wh^`A8-*2XXFu?zO9l>$nwC9n@)MttM!RY-|2?Gy_&WclsY0-+FkM}hrR^!rXD1jKa`OX zIgODaF1gE*Z;B9ejpP`xT(Lc-J->~h)ISqiF@So=v2*`2SGKP*3B6H~xBz$(H&A-n z7~Su$v(8Z8nzo`a$GjL<_@`m@NREGnV%WeH2z;Ij1VK*)Lg_pd2!fsp~=q+J;vK{{PK%q7&ba0_IU!JKC zerd?jB)RVMt!NgDC0Lv^OFw)&js!Tj5dZr`hf99(`=@Bq%;V>jk6-ZAFiekQzoIh( z9zRddg$Y?hCg(ck`CBAnG>=+9Q8Cg?{YYEgQ;yN}$T}AHvnzXi|6J-9i}daph;nWM zK&fsRTOXgC!33OlQG0AOC@$3pj~+hjkleQ9dzzQ8C&ZVLd?BL8@+7C+?05)O%Ojpr zFhbORzZouB{#oaaTH%gb{17JS-}Y}o6Lg+yr5>m*)sL+G)#r}U^vL>d@fBCLaB(c5 zy1F8&0F*;DP>Ky8$HBC*%H(?L0&W3KfI-kPp_$o_--|qqCjbrF*-N0g)8*UEs-T*L;6m4 zg}3iIuo$(zq>mEvHj>_bN$+v+SQdP&-Yayy!ut5zn8R8AKbF@mO}Zjh=9UgZ#?jGLhq;cc#~3i4Fpw(F{Ej7InXJ8GVgC^ zY6-jLNZYaEJxa4#uMT5l#M~Xv@tsCqqUq+`V)^}=?OZ)ao>-iae&@EHQsZla7}PiN z($o!(%$pP2cNi7ZDed6s)w`Z{WDP#-mz>=vx+QUBTSbllP=Orbo!h2Jn6^Dz>J=&H~>)%qO?`^#-+RKFW2;O|AYEl}LF`x}yf0@^IGvmq1YhMV)p>-P0$}5V?+cl8dX4G~dZY zuCo=%1wc7+S*5M+arO1GS^Mj}8vrv4qrn||_(23+Xq zjbVBldkn+%3}!mC`Qs#W_uM8lT>qgr)oj_g#Qa&GBqHP;y*4!eslRtC>o4kPi1@y9 zs!KlBypMY`>8=`a&z4l4q~zEX{)$WX`Lm!1{cENQyJt&kwi@BNaWt3iP5!ALNjpZ$ zw$TvdTvv9;0={OLFI70^-(j@Vo)2d8ZyD{6f1wOhZ*ekt?(~S%ZlS?h92aiLwY`+EuR0C}}jNwd`=_@~VI9plz7@$6~`(T`VwQY9t zz$iT0kEUSOkZxYd+1-A^_1akJ!}8?ifCj@bjdo@58?{zxkNaR^Z`r}bUQYQ!zPD4z zhj^>BPaPH@y8C#vaxko%OA2bD{c0j&jivFc!yW$gFeSDymY7d1iJ()RFRJCr1%)dY zE8)te%BX-V4^?sHa+T>T=gQYrrmvhUS1L=7%MsGZ?OXRaGADog$e~eqB#fqDR^1*r z4t{Vpzi)rFB3A$?&y@pit{g1m%E3ywa;S_ehpOaCfd^Mirk2k*&BgEjeh9p{A(<@t zqqtf49aT3u%PBXii8K8;=?-awUp%$Jo;QAVW&iriG7{InDiQ_&Pr?LB zg~sR|C$pTP;`i}MVcnMXafZJl70|+^RMKua!B=+6$to3xfsJ^2X40)bL!2Sm?!Rf+9*+N4ezV=|^eD zpc_r-7rUdLY}3dk|5$7+26U-fQt{pdm+bvM-*Q^6!XEnsdznv9Gg9fhsEDWCMdY~_ zIAuq@v+k&8+)>l|S(D^fHtcXSV--ckpjjTHuqWZyc)6!9Gz!N`0C*DKDiy0TWR*(F zW`!l3pq}dm9Xh_LUdsE$=GYbKG=W*C5cEYaTro^cl#T7W&>rx5Y93&F-VS!jpP#Bj zEqhsoeK}~hOYXIMd=X$9RM^z{GigoPfzoYMnu*+}o0wg4g#Y&h-Q^B6f3=6vGD+uZ~S5RanF&mc2G3nEu{ytJs_~aygAIN4-oI7F%r2eTJ_h-XZxp2H8u#&{7tT z%xVd7IIhB$3`}s!FJ$#15jmm4oV}(v<=u<-QOB`R#3@CrP(+PGPbA3?JhPUfct3y7 z9pzd2`(Eg0$2>*t{K7@9Y@^o#615L1iW&f(q82T^CdcQJyjvRG1%o-6?0c z*h2)kx-)B z^?gNp0pLk5t8~(>mrj-GrBl59o_fhDoi1Cgp1y}Xd>MAF9xhI$2__mDZ+e+-v~Gme z=!rzqV!wE4%dlU)?p=o6A{rrLa9+4mzA)BE8t!)$793`A$x9}N6hmzCiJ*U|5v}Vz z>ykJ2`j9R#{Hen3nSKAQMy%R}-LuPIX1Gf!C9?hMNw%RLtI-(-w>qbfq^#0=?$zj- zveoDrP6kawDZ?S!{mUM#K;Avky% zZS_SykJXnJyebFLIoDi+NwoO7%&Yo`6l;uGZV1i`_G>K*>G``s(x(jI31A=YJX9>- zdW(-RD^yr~)1k$(r8J$!jg=~FsrA)FxzXxVG*espE;PI-bl{0rqd!3AqtXq^)C7y70oST7p*d}F;KSQyoz z6;Ot+->RRSa?7;%VkOu+Y=uj%W!*>D-4VNH;ZrX8LZ=l@B{-^gH<#SDx8zcS^Rfmf z$p_{2PB8rg9KT=(7fRA@`5^SH!#}gxQHQDU@mj^^yjpW$(qBkpT3gGU!JfiZ4v)qd;tc?lm{q?MEL4zGbj{b$GkO zpB|>X$#WCUwig0u$LMW?U)agd4w!B~@RHMP^LyC|>~|V0ufKjh!Ji%|C5yh580F+N z-em}m`nfLdTbx)(m<}TX0+wn-_sK1Pj@aQdE!L?=Dni3OTIZ}uDdG03hVB4$)+@& zC+t#3+;{moY`SMvk7j?D;7<>eP%Im6BRcHu)^x^6!MSmhPYRQi4A{Q2kd_eQl-sqlVyG7uvYwu5E|7 zi3-@GZI8O-=K}V+s|T#{QCtSg5iR%As&^}C6=3(YstVXWtwOrWTIC@sdHG6%&KQC} z-+E@ZEW9hW(pU#r@pliqSLdDK`+T(kDiH#)E@+ z2mFM0H5Jo-}}t$ag~SD=gw=!Eh6e{%TGIN*)XHif*_=vOc; zua~|w;475w^v&lI7drH3M*EY4aDIecg3ov{3H(dsi0aK;2s89jIC7se+SepaEHh9c zGHxCMwsr2?AdOgNkS18-Mu=gBAo&N$zX6$w==_7^SKc!~gSb88d4f4iipndrc|dDp!&K%pbG>F#;YlXt}71?x~_m`64En8 z4w@CT83pu=0@_HRjRaC(!3gohdkM5xiQ%tcgm}yeiaDXglz;s}F@GpA3v}== z(D9Ph7kxt5EtTM3Dye?{+OCA&rI>d$KVpIr;?%f6F&C5= z{sL2!n41)HQ;C`F1^;X>UgSFRuhaY-v{MNkq?m(>AM1|*OzC+vX50bN=bE2`@KtI6 z=9b()*8u-q1NXm3{>_SCeeERBP6edCzEnb23}ok|j!?(pd@$UR)cn~|4rlLAJ39dI z`2>Lab4ELy0dI5yASrlpn!{N<6d$v_!B*>jd>9{E)k$hyr?11gBFC2!%y=Ov!HNFu z;0fx_S%UzO0GTiMi8)doxp@d*Ct$Ht&`Mj?Qn;)UClF8TF0<-hqLqB zfm#W91l*e5+2PbLxXulKaPy0Dd?;*g%+Yh38+o5xb-^SEH^*2mf(#ds2^TV5H-6BA zVE!rUTC_qN9<3J6;}f)arKvn#Egtc1wyNe@H1=s^DPvbTMwCTsr03BZ zS<9j|Lh@*hL_DC8gamy9Vb?wAiESfh?j-hD`oL~wOjO4t4!hFeY?vMmM=|4 zPP39z$X!SwwH!61l|w68Ilfc}q#i*c6N>+eI{AhqgotKeQwZxK#b(gnp*hrFP;Xh% z)+L@v!ze_Q2^^36V{-g#Vjr{$XDshu1}+ql0K<-u%Lg@nV@%<;N)(=5p&HLojaFph z5pui>$w6SWiOK`xdB$&zDP8BC>cHXpj#rH-WK;tos-Jr~dn-@+SECsfk^)OAAGLEl zsSsMop%LSiHlQHtw>7mis#T;mQ`)ii^*TI~K>D(rxR%MOi)=BKNvcZzn_r(J93DY| zWzwi6Rpn7lT6fZEEopg~gJCBs8O1b%=R0GH&*qs#kt7YAqtwj7Zt+udrTBe4mx>Kn z(x@$0vTAXIJmM7At8Ec15FR47GB8+h+Mu+BN0hN14N{3J$7^gS5NEBzOm_-}VeX*9 zcw#p|U;>O)sXk&B!OECJp~@{Fs&=1X_)y{|5Z5r{I(Ce~Xw(;?ctHg5?lCn5bBj9F z))cbo1#Z9$o9(bW1(S+i502r6k5$8Fdc_)*NG7RtRD-VC0#Sfs;nktoutF||61Z_j zT$nwl7`*x$7Q%EenL}87qg#Tj%19uh;HnZZV5iwu(`;ZR_9jb6WKGqiT5;73+vYL7 z$!#Z@?9ZYCz{+eZ4~30c0xCw9ga9fi85a2Tw0h7jlf>nchy}z2{XZC}gQ3BSMlF%w zij@w2BSVs~&gH_hk>&kBlA)!Vs7)3nW`}{%b{% zjLcb|7HRsm8c(Yw3JsOn4E6yoVo4SjQyW0a3hz-yQ}L%ONx69%Qh_ouus-Q0T@=wI672nF#v-BlU)f~D?JC;l`wRJSlccay@;*sO^mXC#2>b`Q zA3J#sv2&15J90Qh(7~Y9Cc|k8L7`Zr7`{ys8yq@kagq#^&b0X%8@yq87nc$WM<^pC z&?V=7HoPeH$ZP)mYggLCiw!mkdvGZ}57)dYbh~snj3QBp^0a#H&muYM(S=2+ebx^s zpf6;}SjJ<~E#G-PA#~vrFBONaM;(oT1>GHrC+Be|I9iJ7-$%uKp$oXqAk15#9ltvX za|d=nT3gyLdq2US9x!NifKsJ6(Orck=n5f;r$~x7IQ;2>ocpnTCUh&VkfP;^&m8{r zK#D?2(WpWSlaRQF${y%hwgt6kJ0?2(>48Wx5UX4l>kw>|PQsAZ2h(UD35}Md4#5u{ z`2R|~`sgUCD?YQklP}39F=TQ=$j8}5mJlF|Km~R;yO@L{iUd%EKtxPT2r<#{A!2Yr zzWk`QG^mITC?8@_w6%V;ek4oksT#|n8s&J}#&EDlJ=P-?4pgy8fA_wbo!QMMdfGpB z^4`1mzIX4PH*em(xpUu%F7>`kWwW^U_B159vBmUyxOOZ7wevmfbkxwl+Oelg?Nl2C zaqj%vy40zqcZ*u~-`+T`j{jXi)ShXByZ71OY!S8kk}7ztTka4wOU=W6^&gA3idtao zpZ#h&VBl(}XxdCoS&v%C#XKvsucfF?wfi>Ot+oP$J0I%e6i$F&-C$eQB`Sdl4p{z(9I zwQ-XeV{j9R!P+tiwWc&>qkY-3WjI)Y=gR|hPr+rZvY1Ch?y54%T_yRAmkILuqOT0) z9;bx2A$)rmefd->z&z@}%v|Egx-5%adrKTM3a4wK*;oZyXcb8Dk*6+0Y0-#5B8Yq6 z?Wg}6E_cjxEg|CNj`At0s@VL2$=h^N;Puz z)s<+n^nPc0F$!7IlzZ(-u_^D9Kk!~6pXleL9<*WwWCC%Fe?TUfh&PhFfNhrTqmr^I zdUA_wpXqcn))vNkO}H&PN!oAlidV)RP>Om~&p}iD9n~vXN`k^(GOVte5u7FS}+w(c=iZ#%b01GiL(iC-a<1aI=vCwO}k{DEidK?r@EG+!NCnYVY03qOI8gq zD?RKIY;9IA<>Ou{C$5q#DkqxzI zz#IUVV5Xd$3%8&}$iTDFU}mKmfYU+DGK`rvqM~{=9k@YGre@(RGSsu_B!V5x>XBCU z8R9Hj^wEqk9m$lR#;lg?)!$Qtp^g;;7pcL}K>k$+slgC9EpcK14TiuOd-|y%OyG%r zv^XJ3B3sG#krG}!4zr<|^syh2+p235z!SCGXhHcwt8`TMH`8p;M5e8Aq{J_6ijcU$ z@(wX*OoWf-UZ4i!-XF=15b}i;+=n6Ln*0bMok_*vLcW`V9r6DuBpFeLkotiYKTANr zWSYT@K`Jbm#}xpr8PA*R2zfZ&QOiKoq#cB)|K$V+s(SE!>Q3|_;E;}dYm%w*$~ zZAhg}epF_|cZWQTIVlZm!@?HDzWS&1Lt{kbaW)y(ZoHX{a|vWJuEhx}Yc@1h140Hj z#-e1d;nqv6E-Txv7x0xD$Q`@k;8GrPDGJ4Opa4gm2&nTel6? zkkt}vVUyRGkTWe^M=S{^iXT*S~(>d}XWAHh7F zxh#f`$J!wlhCVsrG-mE8>m}`s974XN3m+p(f*^qw5S>ENDR6cX-c~%;U=nLZHy zd3>uol`e^Gmm`~T(x*!)x&rzArNFdY`ouCu&HeV3;|nkETjO1n{dK$Vh9i#@cHBrM zSa>m+``^m)S1hrd@hn&%f8v8t5Tm~FUantamCRU2d#}ZIL;Z4`==`-^ukE4juuw{v=Zvrt;}v*e>?tK7dAHGkAmalaB>;i=T_Iy-?$ra znp@q<6{}HBC~v&8?rxmOg<2H%@$?7e5cWfu+1N&-$wZ_z;&otZ)K_sUUNCbXw^^RS ze81)p)_hznhtbVDK6({}dKPQG6=XWTM5s(8Y4})1I#Z)ABaeymdTch~Ru(7m;HkGr z>nQR|Cd2YoeCcnw>8V^RzU-&CdA){j2W`)RA*theydFcX$e}DJ#yvmKnKXC&JHaCs z9F(oZrhHHz?@gr(fxJoO<4;o1bsWdLCI5BToVQW~pYA7TOKvB|JlTni(kV(jo^C}+ z$gD^{6;#hIaR<3}Px7e}^}AXBGS%!4byGN=fmwnnxJPydG7p#J{kyEelYhA4x88zt z$Gd}=gUR#@^D4zx77{m!Ckt}MCB@~ucyv@ch9Aj`OS;-Rr(H|cTaYbs$k{iF!3467}jpqSW&A>XaPlm#HFmSO!lPG1&TyC5T1AzA!le2ij*-BBWGwaij+J;7+RDf zgbHarL>H$>u_Giir}htD?(x*qW%cU=Ykdur;vW&2W2<6r9YDSM)1r+On7CKAOE*Kr zH04Q@#`W;J@}$Wjq2~^XgLs83-h|=AD*|&9h7)fRAq*#8vEIW_;!S~g6KZL4*V6^3 zd#?+LH#I`MUqh&0uy}1KQF<~g;cYCQi0~4t8%;(@s)Z#b;dA~JWd;j6b2vd~MNh#K zqs$ymde4wl!>OcXNUEV{b&=waPBmVc8L2#3%#Ew7Y^J$Us9arTy_J+(ElH>8C9_X< zcH#-kTRi%OVE#)e6`WXmh#r%2NBy__n3OxDh5B2Dnz^R95sjlGjeVnZg`1YB#J=aS zF!es$MPD*rn^-ILO-nl0o;4j0)^#}DVU8!Is`3s`DqZO5dJVTG@EUH-Jlq;ZxgOus zydOkX@AoP0GKC_M=j+XIpqrW(gf&y3Cu1+to4J!v^NpBW*VlgE?)22*(y@w4^>kU? zKd{Hw;3|KD9-^Bt%W!T3DW;7SvtM?8G0+{%>&GQO8`0JUsT6WOQdz2RB9@vq5mx2e z=7cAeE)Z)ui&d3bw;taOoL#q>IO_94tef%alA-|c!3KO#@XM6GwUCShwyg>!G|bHJ%AuY{RT67wxJOWep3Hw~8f z4i>B_b6!t`#LXJu9umzg@mfgSL^C2>;`Q8|0M)1#z;yj=;O3q=3xeu~@)l}leQreW z+dRlh&m#V(J^SI>KIFAJj?#2a*3CN@(+ESv_ z9Jf((LOYelA$7EsHr)6gkIpoRnC{yRK=_2;8372%4U;vjs}KMiBYYeuN0s~%y*sYy zXr^iZunf`p<i3UeeU^6E>W!FvOm>#2>?+M;wZ#?KDGs%tDk3dEYq$rFr-*$FC8;tq4|4 zVu-l}KXZ$FrQ17yP8WHp4}E~Jy!hc#Q+Z4R50dK{^1@cGeo~Xc(2)Y!3nvnX&IxT`?Gr;+V+SwKE7u9L3$B zNX|ua$%^yI4$Gw%uBaqu8#&^h(Hvs}nE~M&dC@H*nuhFF#Eu=2OZQbR)4P3kaJNHP z1h=nk;9EeOe{ALdMsx5AA4``QZLhDn#Jo|A1lep*C`4q_h{%@(qaw_I#*QXj lEPzD~F)>A$$k8H9OmK;MS6FUguTZDLx?yWYm@FY?{tGATo&Ep- literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp index 4198713..057cd8b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,6 +14,10 @@ #include "rive/generated/animation/state_machine_bool_base.hpp" #include "rive/generated/animation/state_machine_number_base.hpp" #include "rive/generated/animation/state_machine_trigger_base.hpp" +#include "rive/viewmodel/runtime/viewmodel_runtime.hpp" +#include "rive/viewmodel/data_enum.hpp" +#include "rive/viewmodel/data_enum_value.hpp" +#include "rive/viewmodel/viewmodel_property_enum.hpp" #include "utils/no_op_factory.hpp" #include #include @@ -37,23 +41,27 @@ enum class Language JavaScript }; -struct InputInfo { +struct InputInfo +{ std::string name; std::string type; std::string default_value; }; -struct TextValueRunInfo { +struct TextValueRunInfo +{ std::string name; std::string default_value; }; -struct NestedTextValueRunInfo { +struct NestedTextValueRunInfo +{ std::string name; std::string path; }; -struct AssetInfo { +struct AssetInfo +{ std::string name; std::string type; std::string file_extension; @@ -62,6 +70,30 @@ struct AssetInfo { std::string cdn_base_url; }; +struct EnumValueInfo +{ + std::string key; +}; + +struct EnumInfo +{ + std::string name; + std::vector values; +}; + +struct PropertyInfo +{ + std::string name; + std::string type; + std::string backing_name; +}; + +struct ViewModelInfo +{ + std::string name; + std::vector properties; +}; + struct ArtboardData { std::string artboard_name; @@ -83,6 +115,8 @@ struct RiveFileData std::string riv_kebab_case; std::vector artboards; std::vector assets; + std::vector enums; + std::vector view_models; }; // Helper function to convert a string to the specified case style @@ -124,16 +158,16 @@ std::string toCaseHelper(const std::string &str, CaseStyle style) { switch (style) { - case CaseStyle::Camel: - case CaseStyle::Pascal: - capitalizeNext = true; - break; - case CaseStyle::Snake: - result << '_'; - break; - case CaseStyle::Kebab: - result << '-'; - break; + case CaseStyle::Camel: + case CaseStyle::Pascal: + capitalizeNext = true; + break; + case CaseStyle::Snake: + result << '_'; + break; + case CaseStyle::Kebab: + result << '-'; + break; } } } @@ -152,7 +186,13 @@ std::string toCaseHelper(const std::string &str, CaseStyle style) std::string toCamelCase(const std::string &str) { - return toCaseHelper(str, CaseStyle::Camel); + std::string result = toCaseHelper(str, CaseStyle::Camel); + // Handle Dart reserved keywords + if (result == "with" || result == "class" || result == "enum" || result == "var" || result == "const" || result == "final" || result == "static" || result == "void" || result == "int" || result == "double" || result == "bool" || result == "String" || result == "List" || result == "Map" || result == "dynamic" || result == "null" || result == "true" || result == "false") + { + result = result + "Value"; + } + return result; } std::string toPascalCase(const std::string &str) @@ -170,23 +210,39 @@ std::string toKebabCase(const std::string &str) return toCaseHelper(str, CaseStyle::Kebab); } -std::string sanitizeString(const std::string& input) { +std::string sanitizeString(const std::string &input) +{ std::string output; - for (char c : input) { - switch (c) { - case '\n': output += "\\n"; break; - case '\r': output += "\\r"; break; - case '\t': output += "\\t"; break; - case '\"': output += "\\\""; break; - case '\\': output += "\\\\"; break; - default: - if (std::isprint(c)) { - output += c; - } else { - char hex[7]; - std::snprintf(hex, sizeof(hex), "\\u%04x", static_cast(c)); - output += hex; - } + for (char c : input) + { + switch (c) + { + case '\n': + output += "\\n"; + break; + case '\r': + output += "\\r"; + break; + case '\t': + output += "\\t"; + break; + case '\"': + output += "\\\""; + break; + case '\\': + output += "\\\\"; + break; + default: + if (std::isprint(c)) + { + output += c; + } + else + { + char hex[7]; + std::snprintf(hex, sizeof(hex), "\\u%04x", static_cast(c)); + output += hex; + } } } return output; @@ -242,38 +298,39 @@ std::vector>> get_state_machines_f for (int j = 0; j < inputCount; j++) { auto input = stateMachine->input(j); - + std::string inputType; std::string defaultValue; - + // Determine the input type and default value - switch (input->inputCoreType()) { - case rive::StateMachineNumberBase::typeKey: - { - auto smiNumberInput = static_cast(input); - inputType = "number"; - defaultValue = std::to_string(smiNumberInput->value()); - break; - } - case rive::StateMachineTriggerBase::typeKey: - { - inputType = "trigger"; - defaultValue = "false"; - break; - } - case rive::StateMachineBoolBase::typeKey: - { - auto smiBoolInput = static_cast(input); - inputType = "boolean"; - defaultValue = smiBoolInput->value() ? "true" : "false"; - break; - } - default: - { - inputType = "unknown"; - defaultValue = ""; - break; - } + switch (input->inputCoreType()) + { + case rive::StateMachineNumberBase::typeKey: + { + auto smiNumberInput = static_cast(input); + inputType = "number"; + defaultValue = std::to_string(smiNumberInput->value()); + break; + } + case rive::StateMachineTriggerBase::typeKey: + { + inputType = "trigger"; + defaultValue = "false"; + break; + } + case rive::StateMachineBoolBase::typeKey: + { + auto smiBoolInput = static_cast(input); + inputType = "boolean"; + defaultValue = smiBoolInput->value() ? "true" : "false"; + break; + } + default: + { + inputType = "unknown"; + defaultValue = ""; + break; + } } inputs.push_back({input->name(), inputType, defaultValue}); @@ -319,57 +376,59 @@ std::string makeUnique(const std::string &base, std::unordered_set return uniqueName; } - template -void findAll(std::vector& results, rive::ArtboardInstance *artboard) +void findAll(std::vector &results, rive::ArtboardInstance *artboard) { for (auto object : artboard->objects()) { if (object != nullptr && object->is()) { - results.push_back(static_cast(object)); + results.push_back(static_cast(object)); } } } std::vector get_text_value_runs_from_artboard(rive::ArtboardInstance *artboard) { - std::vector text_value_runs; + std::vector text_value_runs; std::vector text_value_runs_info; findAll(text_value_runs, artboard); for (auto text_value_run : text_value_runs) { - if (!text_value_run->name().empty()) { + if (!text_value_run->name().empty()) + { text_value_runs_info.push_back({text_value_run->name(), text_value_run->text()}); } } return text_value_runs_info; } -std::vector get_nested_text_value_run_paths_from_artboard(rive::ArtboardInstance *artboard, const std::string& current_path = "") +std::vector get_nested_text_value_run_paths_from_artboard(rive::ArtboardInstance *artboard, const std::string ¤t_path = "") { std::vector nested_text_value_runs_info; auto count = artboard->nestedArtboards().size(); - - if (!current_path.empty()) { + if (!current_path.empty()) + { auto text_runs = get_text_value_runs_from_artboard(artboard); - for (const auto& text_run : text_runs) { + for (const auto &text_run : text_runs) + { nested_text_value_runs_info.push_back({text_run.name, current_path}); } } // Recursively process nested artboards - for (int i = 0; i < count; i++) { + for (int i = 0; i < count; i++) + { auto nested = artboard->nestedArtboards()[i]; auto nested_name = nested->name(); - if (!nested_name.empty()) + if (!nested_name.empty()) { // Only process nested artboards that have an exported name std::string new_path = current_path.empty() ? nested->name() : current_path + "/" + nested->name(); - + auto nested_results = get_nested_text_value_run_paths_from_artboard(nested->artboardInstance(), new_path); nested_text_value_runs_info.insert(nested_text_value_runs_info.end(), nested_results.begin(), nested_results.end()); } @@ -387,19 +446,20 @@ std::vector get_assets_from_file(rive::File *file) for (auto asset : assets) { std::string assetType; - switch (asset->coreType()) { - case rive::ImageAsset::typeKey: - assetType = "image"; - break; - case rive::FontAsset::typeKey: - assetType = "font"; - break; - case rive::AudioAsset::typeKey: - assetType = "audio"; - break; - default: - assetType = "unknown"; - break; + switch (asset->coreType()) + { + case rive::ImageAsset::typeKey: + assetType = "image"; + break; + case rive::FontAsset::typeKey: + assetType = "font"; + break; + case rive::AudioAsset::typeKey: + assetType = "audio"; + break; + default: + assetType = "unknown"; + break; } auto assetName = asset->name(); @@ -411,12 +471,44 @@ std::vector get_assets_from_file(rive::File *file) asset->fileExtension(), std::to_string(asset->assetId()), asset->cdnUuidStr(), - asset->cdnBaseUrl() - }); + asset->cdnBaseUrl()}); } return assetsInfo; } +std::string dataTypeToString(rive::DataType type) +{ + switch (type) + { + case rive::DataType::none: + return "none"; + case rive::DataType::string: + return "string"; + case rive::DataType::number: + return "number"; + case rive::DataType::boolean: + return "boolean"; + case rive::DataType::color: + return "color"; + case rive::DataType::list: + return "list"; + case rive::DataType::enumType: + return "enum"; + case rive::DataType::trigger: + return "trigger"; + case rive::DataType::viewModel: + return "viewModel"; + case rive::DataType::integer: + return "integer"; + case rive::DataType::symbolListIndex: + return "symbolListIndex"; + case rive::DataType::assetImage: + return "assetImage"; + default: + return "unknown"; + } +} + std::optional process_riv_file(const std::string &rive_file_path) { // Check if the file is empty @@ -443,6 +535,64 @@ std::optional process_riv_file(const std::string &rive_file_path) file_data.riv_kebab_case = toKebabCase(file_name_without_extension); file_data.assets = assets; + // Process enums + const auto &fileEnums = riveFile->enums(); + for (auto *dataEnum : fileEnums) + { + if (dataEnum) + { + EnumInfo enumInfo; + enumInfo.name = dataEnum->enumName(); + const auto &values = dataEnum->values(); + for (const auto *value : values) + { + enumInfo.values.push_back({value->key()}); + } + file_data.enums.push_back(enumInfo); + } + } + + // Process view models + for (size_t i = 0; i < riveFile->viewModelCount(); i++) + { + auto viewModel = riveFile->viewModelByIndex(i); + if (viewModel) + { + ViewModelInfo viewModelInfo; + viewModelInfo.name = viewModel->name(); + auto propertiesData = viewModel->properties(); + for (const auto &property : propertiesData) + { + if (property.type == rive::DataType::viewModel) + { + // TODO: this is a hack + auto nestedViewModel = viewModel->createInstance()->propertyViewModel(property.name); + auto vm = nestedViewModel->instance()->viewModel(); + viewModelInfo.properties.push_back({property.name, + dataTypeToString(property.type), + vm->name()}); + } + else if (property.type == rive::DataType::enumType) + { + // TODO: this is a hack + auto vmi = riveFile->createViewModelInstance(viewModel->name()); + auto enum_instance = static_cast(vmi->propertyValue(property.name)); + auto enumProperty = enum_instance->viewModelProperty()->as(); + auto enumName = enumProperty->dataEnum()->enumName(); + viewModelInfo.properties.push_back({property.name, + dataTypeToString(property.type), + enumName}); + } + else + { + viewModelInfo.properties.push_back({property.name, + dataTypeToString(property.type)}); + } + } + file_data.view_models.push_back(viewModelInfo); + } + } + std::unordered_set usedArtboardNames; auto artboardCount = riveFile->artboardCount(); @@ -569,6 +719,88 @@ int main(int argc, char *argv[]) riv_file_data["riv_kebab_case"] = file_data.riv_kebab_case; riv_file_data["last"] = (file_index == rive_file_data_list.size() - 1); + // Add enums to template data + std::vector enums; + for (size_t enum_index = 0; enum_index < file_data.enums.size(); enum_index++) + { + const auto &enum_info = file_data.enums[enum_index]; + kainjow::mustache::data enum_data; + enum_data["enum_name"] = enum_info.name; + enum_data["enum_camel_case"] = toCamelCase(enum_info.name); + enum_data["enum_pascal_case"] = toPascalCase(enum_info.name); + enum_data["enum_snake_case"] = toSnakeCase(enum_info.name); + enum_data["enum_kebab_case"] = toKebabCase(enum_info.name); + enum_data["last"] = (enum_index == file_data.enums.size() - 1); + + std::vector enum_values; + for (size_t value_index = 0; value_index < enum_info.values.size(); value_index++) + { + const auto &value = enum_info.values[value_index]; + kainjow::mustache::data value_data; + value_data["enum_value_key"] = value.key; + value_data["enum_value_camel_case"] = toCamelCase(value.key); + value_data["enum_value_pascal_case"] = toPascalCase(value.key); + value_data["enum_value_snake_case"] = toSnakeCase(value.key); + value_data["enum_value_kebab_case"] = toKebabCase(value.key); + value_data["last"] = (value_index == enum_info.values.size() - 1); + enum_values.push_back(value_data); + } + enum_data["enum_values"] = enum_values; + enums.push_back(enum_data); + } + riv_file_data["enums"] = enums; + + // Add view models to template data + std::vector view_models; + for (size_t vm_index = 0; vm_index < file_data.view_models.size(); vm_index++) + { + const auto &view_model = file_data.view_models[vm_index]; + kainjow::mustache::data view_model_data; + view_model_data["view_model_name"] = view_model.name; + view_model_data["view_model_camel_case"] = toCamelCase(view_model.name); + view_model_data["view_model_pascal_case"] = toPascalCase(view_model.name); + view_model_data["view_model_snake_case"] = toSnakeCase(view_model.name); + view_model_data["view_model_kebab_case"] = toKebabCase(view_model.name); + view_model_data["last"] = (vm_index == file_data.view_models.size() - 1); + + std::vector properties; + for (size_t prop_index = 0; prop_index < view_model.properties.size(); prop_index++) + { + const auto &property = view_model.properties[prop_index]; + kainjow::mustache::data property_data; + property_data["property_name"] = property.name; + property_data["property_camel_case"] = toCamelCase(property.name); + property_data["property_pascal_case"] = toPascalCase(property.name); + property_data["property_snake_case"] = toSnakeCase(property.name); + property_data["property_kebab_case"] = toKebabCase(property.name); + property_data["property_type"] = property.type; + + // Add property type information for the viewmodel template + kainjow::mustache::data property_type_data; + property_type_data.set("is_view_model", property.type == "viewModel"); + property_type_data.set("is_enum", property.type == "enum"); + property_type_data.set("is_string", property.type == "string"); + property_type_data.set("is_number", property.type == "number"); + property_type_data.set("is_integer", property.type == "integer"); + property_type_data.set("is_boolean", property.type == "boolean"); + property_type_data.set("is_color", property.type == "color"); + property_type_data.set("is_list", property.type == "list"); + property_type_data.set("is_trigger", property.type == "trigger"); + property_type_data.set("backing_name", property.backing_name); + property_type_data.set("backing_camel_case", toCamelCase(property.backing_name)); + property_type_data.set("backing_pascal_case", toPascalCase(property.backing_name)); + property_type_data.set("backing_snake_case", toSnakeCase(property.backing_name)); + property_type_data.set("backing_kebab_case", toKebabCase(property.backing_name)); + property_data.set("property_type", property_type_data); + + property_data["last"] = (prop_index == view_model.properties.size() - 1); + properties.push_back(property_data); + } + view_model_data["properties"] = properties; + view_models.push_back(view_model_data); + } + riv_file_data["view_models"] = view_models; + std::vector assets; for (size_t asset_index = 0; asset_index < file_data.assets.size(); asset_index++) { @@ -690,7 +922,11 @@ int main(int argc, char *argv[]) } riv_file_data["artboards"] = artboard_list; - riv_file_list.push_back(riv_file_data); + // Only add the section if there are view models or enums + if (!view_models.empty() || !enums.empty()) + { + riv_file_list.push_back(riv_file_data); + } } template_data["generated_file_name"] = generated_file_name; diff --git a/templates/json_template.mustache b/templates/json_template.mustache index 3466888..1aaf020 100644 --- a/templates/json_template.mustache +++ b/templates/json_template.mustache @@ -13,6 +13,33 @@ }{{^last}},{{/last}} {{/assets}} }, + "enums": { + {{#enums}} + "{{enum_camel_case}}": { + "name": "{{enum_name}}", + "values": { + {{#enum_values}} + "{{enum_value_camel_case}}": "{{enum_value_key}}"{{^last}},{{/last}} + {{/enum_values}} + } + }{{^last}},{{/last}} + {{/enums}} + }, + "viewModels": { + {{#view_models}} + "{{view_model_camel_case}}": { + "name": "{{view_model_name}}", + "properties": { + {{#properties}} + "{{property_camel_case}}": { + "name": "{{property_name}}", + "type": "{{property_type}}" + }{{^last}},{{/last}} + {{/properties}} + } + }{{^last}},{{/last}} + {{/view_models}} + }, "artboards": { {{#artboards}} "{{artboard_camel_case}}": { diff --git a/templates/viewmodel_template.mustache b/templates/viewmodel_template.mustache new file mode 100644 index 0000000..bbaecb7 --- /dev/null +++ b/templates/viewmodel_template.mustache @@ -0,0 +1,63 @@ +// {{generated_file_name}}_viewmodels.dart + +// ignore_for_file: lines_longer_than_80_chars, unused_field + +import 'dart:ui'; +import 'package:rive_native/rive_native.dart' as rive; + +/// ViewModel classes for Rive files +{{#riv_files}} +// ---------------------- +// {{riv_camel_case}} ViewModels +// ---------------------- + +{{#enums}} +/// Enum for {{enum_name}} +enum {{enum_pascal_case}}Enum { + {{#enum_values}} + {{enum_value_camel_case}}('{{enum_value_key}}'){{^last}},{{/last}}{{#last}};{{/last}} + {{/enum_values}} + + final String value; + const {{enum_pascal_case}}Enum(this.value); + + @override + String toString() => value; +} +{{/enums}} + +{{#view_models}} +/// ViewModel class for {{view_model_name}} +class {{view_model_pascal_case}} { + final rive.ViewModelInstance instance; + {{#properties}} + {{#property_type}}{{#is_view_model}}final {{backing_pascal_case}} {{property_camel_case}};{{/is_view_model}}{{/property_type}}{{#property_type}}final {{#is_view_model}}rive.ViewModelInstance{{/is_view_model}}{{#is_enum}}rive.ViewModelInstanceEnum{{/is_enum}}{{#is_string}}rive.ViewModelInstanceString{{/is_string}}{{#is_number}}rive.ViewModelInstanceNumber{{/is_number}}{{#is_boolean}}rive.ViewModelInstanceBoolean{{/is_boolean}}{{#is_color}}rive.ViewModelInstanceColor{{/is_color}}{{#is_trigger}}rive.ViewModelInstanceTrigger{{/is_trigger}} _{{property_camel_case}}Property;{{/property_type}} + {{/properties}} + + {{view_model_pascal_case}}(this.instance): {{#properties}} + {{#property_type}}{{#is_view_model}}{{property_camel_case}} = {{backing_pascal_case}}(instance.viewModel('{{property_name}}')!),{{/is_view_model}}{{/property_type}} + {{#property_type}} + _{{property_camel_case}}Property = instance.{{#is_view_model}}viewModel{{/is_view_model}}{{#is_enum}}enumerator{{/is_enum}}{{#is_string}}string{{/is_string}}{{#is_number}}number{{/is_number}}{{#is_boolean}}boolean{{/is_boolean}}{{#is_color}}color{{/is_color}}{{#is_trigger}}trigger{{/is_trigger}}('{{property_name}}')!{{^last}},{{/last}}{{#last}};{{/last}} + {{/property_type}} + {{/properties}} + + {{#properties}} + {{#property_type}}{{#is_enum}}{{backing_pascal_case}}Enum get {{property_camel_case}} => {{backing_pascal_case}}Enum.values.byName(_{{property_camel_case}}Property.value.toLowerCase()); + set {{property_camel_case}}({{backing_pascal_case}}Enum value) => _{{property_camel_case}}Property.value = value.value;{{/is_enum}}{{#is_string}}String get {{property_camel_case}} => _{{property_camel_case}}Property.value; + set {{property_camel_case}}(String value) => _{{property_camel_case}}Property.value = value;{{/is_string}}{{#is_number}}double get {{property_camel_case}} => _{{property_camel_case}}Property.value; + set {{property_camel_case}}(double value) => _{{property_camel_case}}Property.value = value;{{/is_number}}{{#is_boolean}}bool get {{property_camel_case}} => _{{property_camel_case}}Property.value; + set {{property_camel_case}}(bool value) => _{{property_camel_case}}Property.value = value;{{/is_boolean}}{{#is_color}}Color get {{property_camel_case}} => _{{property_camel_case}}Property.value; + set {{property_camel_case}}(Color value) => _{{property_camel_case}}Property.value = value;{{/is_color}}{{#is_list}}List get {{property_camel_case}} => _{{property_camel_case}}Property.value; + set {{property_camel_case}}(List value) => _{{property_camel_case}}Property.value = value;{{/is_list}}{{#is_trigger}}void {{property_camel_case}}() => _{{property_camel_case}}Property.trigger();{{/is_trigger}}{{/property_type}} + {{/properties}} + + Map toJson() { + return { + {{#properties}} + {{#property_type}}{{#is_view_model}}'{{property_name}}': {{property_camel_case}}.toJson(),{{/is_view_model}}{{#is_enum}}'{{property_name}}': {{property_camel_case}}.value,{{/is_enum}}{{#is_string}}'{{property_name}}': {{property_camel_case}},{{/is_string}}{{#is_number}}'{{property_name}}': {{property_camel_case}},{{/is_number}}{{#is_boolean}}'{{property_name}}': {{property_camel_case}},{{/is_boolean}}{{#is_color}}'{{property_name}}': {{property_camel_case}}.value,{{/is_color}}{{#is_list}}'{{property_name}}': {{property_camel_case}},{{/is_list}}{{/property_type}} + {{/properties}} + }; + } +} +{{/view_models}} +{{/riv_files}} From 3bb039073559758e2de27d29bba5d0aca2b570ab Mon Sep 17 00:00:00 2001 From: CI Date: Fri, 13 Jun 2025 18:59:23 +0200 Subject: [PATCH 02/16] chore: clang formatting --- .clang-format | 83 +++++++ src/main.cpp | 610 +++++++++++++++++++++++++++++--------------------- 2 files changed, 444 insertions(+), 249 deletions(-) create mode 100644 .clang-format diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..b82c169 --- /dev/null +++ b/.clang-format @@ -0,0 +1,83 @@ +BasedOnStyle: LLVM +IndentWidth: 4 +UseTab: Never +TabWidth: 4 +IndentCaseLabels: true +Language: Cpp +# Force pointers to the type for C++. +DerivePointerAlignment: false +PointerAlignment: Left +NamespaceIndentation: None +AccessModifierOffset: -4 +BreakConstructorInitializers: AfterColon +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ColumnLimit: 80 +BinPackArguments: false +BinPackParameters: false +AlignAfterOpenBracket: Align +AllowAllArgumentsOnNextLine: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortCaseLabelsOnASingleLine: false +PenaltyReturnTypeOnItsOwnLine: 9999 +PenaltyExcessCharacter: 9999 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 999 +BreakBeforeBraces: Custom +SortIncludes: false +BraceWrapping: + AfterEnum: true + AfterClass: true + AfterControlStatement: true + AfterNamespace: true + AfterFunction: true + AfterStruct: true + AfterObjCDeclaration: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + AfterCaseLabel: true + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: false + SplitEmptyNamespace: false +--- +Language: ObjC +# Force pointers to the type for C++. +DerivePointerAlignment: false +IndentWidth: 4 +IndentCaseLabels: True +PointerAlignment: Left +NamespaceIndentation: None +AccessModifierOffset: -4 +BreakConstructorInitializers: AfterColon +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ColumnLimit: 80 +BinPackArguments: false +BinPackParameters: false +AlignAfterOpenBracket: Align +BreakBeforeBraces: Custom +SortIncludes: false +PenaltyReturnTypeOnItsOwnLine: 9999 +PenaltyExcessCharacter: 9999 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 999 +BraceWrapping: + AfterEnum: true + AfterClass: true + AfterControlStatement: true + AfterNamespace: true + AfterFunction: true + AfterStruct: true + AfterObjCDeclaration: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + AfterCaseLabel: true + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: false + SplitEmptyNamespace: false diff --git a/src/main.cpp b/src/main.cpp index 057cd8b..b33659c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,29 +1,30 @@ +#include #include -#include #include +#include #include +#include +#include +#include + #include "CLIUTILS/CLI11.hpp" +#include "default_template.h" #include "kainjow/mustache.hpp" -#include "rive/file.hpp" #include "rive/animation/linear_animation_instance.hpp" -#include "rive/animation/state_machine_instance.hpp" #include "rive/animation/state_machine_input_instance.hpp" -#include "rive/assets/image_asset.hpp" -#include "rive/assets/font_asset.hpp" +#include "rive/animation/state_machine_instance.hpp" #include "rive/assets/audio_asset.hpp" +#include "rive/assets/font_asset.hpp" +#include "rive/assets/image_asset.hpp" +#include "rive/file.hpp" #include "rive/generated/animation/state_machine_bool_base.hpp" #include "rive/generated/animation/state_machine_number_base.hpp" #include "rive/generated/animation/state_machine_trigger_base.hpp" -#include "rive/viewmodel/runtime/viewmodel_runtime.hpp" #include "rive/viewmodel/data_enum.hpp" #include "rive/viewmodel/data_enum_value.hpp" +#include "rive/viewmodel/runtime/viewmodel_runtime.hpp" #include "rive/viewmodel/viewmodel_property_enum.hpp" #include "utils/no_op_factory.hpp" -#include -#include -#include -#include -#include "default_template.h" const std::string generated_file_name = "rive_generated"; @@ -120,7 +121,7 @@ struct RiveFileData }; // Helper function to convert a string to the specified case style -std::string toCaseHelper(const std::string &str, CaseStyle style) +std::string toCaseHelper(const std::string& str, CaseStyle style) { std::stringstream result; bool capitalizeNext = (style == CaseStyle::Pascal); @@ -148,7 +149,8 @@ std::string toCaseHelper(const std::string &str, CaseStyle style) } else { - result << (style == CaseStyle::Pascal ? c : (char)std::tolower(c)); + result << (style == CaseStyle::Pascal ? c + : (char)std::tolower(c)); } firstChar = false; } @@ -158,16 +160,16 @@ std::string toCaseHelper(const std::string &str, CaseStyle style) { switch (style) { - case CaseStyle::Camel: - case CaseStyle::Pascal: - capitalizeNext = true; - break; - case CaseStyle::Snake: - result << '_'; - break; - case CaseStyle::Kebab: - result << '-'; - break; + case CaseStyle::Camel: + case CaseStyle::Pascal: + capitalizeNext = true; + break; + case CaseStyle::Snake: + result << '_'; + break; + case CaseStyle::Kebab: + result << '-'; + break; } } } @@ -184,65 +186,73 @@ std::string toCaseHelper(const std::string &str, CaseStyle style) return finalResult; } -std::string toCamelCase(const std::string &str) +std::string toCamelCase(const std::string& str) { std::string result = toCaseHelper(str, CaseStyle::Camel); // Handle Dart reserved keywords - if (result == "with" || result == "class" || result == "enum" || result == "var" || result == "const" || result == "final" || result == "static" || result == "void" || result == "int" || result == "double" || result == "bool" || result == "String" || result == "List" || result == "Map" || result == "dynamic" || result == "null" || result == "true" || result == "false") + if (result == "with" || result == "class" || result == "enum" || + result == "var" || result == "const" || result == "final" || + result == "static" || result == "void" || result == "int" || + result == "double" || result == "bool" || result == "String" || + result == "List" || result == "Map" || result == "dynamic" || + result == "null" || result == "true" || result == "false") { result = result + "Value"; } return result; } -std::string toPascalCase(const std::string &str) +std::string toPascalCase(const std::string& str) { return toCaseHelper(str, CaseStyle::Pascal); } -std::string toSnakeCase(const std::string &str) +std::string toSnakeCase(const std::string& str) { return toCaseHelper(str, CaseStyle::Snake); } -std::string toKebabCase(const std::string &str) +std::string toKebabCase(const std::string& str) { return toCaseHelper(str, CaseStyle::Kebab); } -std::string sanitizeString(const std::string &input) +std::string sanitizeString(const std::string& input) { std::string output; for (char c : input) { switch (c) { - case '\n': - output += "\\n"; - break; - case '\r': - output += "\\r"; - break; - case '\t': - output += "\\t"; - break; - case '\"': - output += "\\\""; - break; - case '\\': - output += "\\\\"; - break; - default: - if (std::isprint(c)) - { - output += c; - } - else - { - char hex[7]; - std::snprintf(hex, sizeof(hex), "\\u%04x", static_cast(c)); - output += hex; - } + case '\n': + output += "\\n"; + break; + case '\r': + output += "\\r"; + break; + case '\t': + output += "\\t"; + break; + case '\"': + output += "\\\""; + break; + case '\\': + output += "\\\\"; + break; + default: + if (std::isprint(c)) + { + output += c; + } + else + { + char hex[7]; + std::snprintf(hex, + sizeof(hex), + "\\u%04x", + static_cast(c)); + output += hex; + } } } return output; @@ -250,7 +260,7 @@ std::string sanitizeString(const std::string &input) static std::unique_ptr open_file(const char name[]) { - FILE *f = fopen(name, "rb"); + FILE* f = fopen(name, "rb"); if (!f) { return nullptr; @@ -272,7 +282,8 @@ static std::unique_ptr open_file(const char name[]) return rive::File::import(bytes, &gFactory); } -static std::vector get_animations_from_artboard(rive::ArtboardInstance *artboard) +static std::vector get_animations_from_artboard( + rive::ArtboardInstance* artboard) { std::vector animations; auto animationCount = artboard->animationCount(); @@ -284,7 +295,8 @@ static std::vector get_animations_from_artboard(rive::ArtboardInsta return animations; } -std::vector>> get_state_machines_from_artboard(rive::ArtboardInstance *artboard) +std::vector>> +get_state_machines_from_artboard(rive::ArtboardInstance* artboard) { std::vector>> state_machines; auto stateMachineCount = artboard->stateMachineCount(); @@ -305,32 +317,32 @@ std::vector>> get_state_machines_f // Determine the input type and default value switch (input->inputCoreType()) { - case rive::StateMachineNumberBase::typeKey: - { - auto smiNumberInput = static_cast(input); - inputType = "number"; - defaultValue = std::to_string(smiNumberInput->value()); - break; - } - case rive::StateMachineTriggerBase::typeKey: - { - inputType = "trigger"; - defaultValue = "false"; - break; - } - case rive::StateMachineBoolBase::typeKey: - { - auto smiBoolInput = static_cast(input); - inputType = "boolean"; - defaultValue = smiBoolInput->value() ? "true" : "false"; - break; - } - default: - { - inputType = "unknown"; - defaultValue = ""; - break; - } + case rive::StateMachineNumberBase::typeKey: + { + auto smiNumberInput = static_cast(input); + inputType = "number"; + defaultValue = std::to_string(smiNumberInput->value()); + break; + } + case rive::StateMachineTriggerBase::typeKey: + { + inputType = "trigger"; + defaultValue = "false"; + break; + } + case rive::StateMachineBoolBase::typeKey: + { + auto smiBoolInput = static_cast(input); + inputType = "boolean"; + defaultValue = smiBoolInput->value() ? "true" : "false"; + break; + } + default: + { + inputType = "unknown"; + defaultValue = ""; + break; + } } inputs.push_back({input->name(), inputType, defaultValue}); @@ -341,13 +353,13 @@ std::vector>> get_state_machines_f return state_machines; } -std::vector find_riv_files(const std::string &path) +std::vector find_riv_files(const std::string& path) { std::vector riv_files; if (std::filesystem::is_directory(path)) { - for (const auto &entry : std::filesystem::directory_iterator(path)) + for (const auto& entry : std::filesystem::directory_iterator(path)) { if (entry.path().extension() == ".riv") { @@ -363,7 +375,8 @@ std::vector find_riv_files(const std::string &path) return riv_files; } -std::string makeUnique(const std::string &base, std::unordered_set &usedNames) +std::string makeUnique(const std::string& base, + std::unordered_set& usedNames) { std::string uniqueName = base; int counter = 1; @@ -377,20 +390,21 @@ std::string makeUnique(const std::string &base, std::unordered_set } template -void findAll(std::vector &results, rive::ArtboardInstance *artboard) +void findAll(std::vector& results, rive::ArtboardInstance* artboard) { for (auto object : artboard->objects()) { if (object != nullptr && object->is()) { - results.push_back(static_cast(object)); + results.push_back(static_cast(object)); } } } -std::vector get_text_value_runs_from_artboard(rive::ArtboardInstance *artboard) +std::vector get_text_value_runs_from_artboard( + rive::ArtboardInstance* artboard) { - std::vector text_value_runs; + std::vector text_value_runs; std::vector text_value_runs_info; findAll(text_value_runs, artboard); @@ -399,13 +413,17 @@ std::vector get_text_value_runs_from_artboard(rive::ArtboardIn { if (!text_value_run->name().empty()) { - text_value_runs_info.push_back({text_value_run->name(), text_value_run->text()}); + text_value_runs_info.push_back( + {text_value_run->name(), text_value_run->text()}); } } return text_value_runs_info; } -std::vector get_nested_text_value_run_paths_from_artboard(rive::ArtboardInstance *artboard, const std::string ¤t_path = "") +std::vector +get_nested_text_value_run_paths_from_artboard( + rive::ArtboardInstance* artboard, + const std::string& current_path = "") { std::vector nested_text_value_runs_info; auto count = artboard->nestedArtboards().size(); @@ -413,9 +431,10 @@ std::vector get_nested_text_value_run_paths_from_artboar if (!current_path.empty()) { auto text_runs = get_text_value_runs_from_artboard(artboard); - for (const auto &text_run : text_runs) + for (const auto& text_run : text_runs) { - nested_text_value_runs_info.push_back({text_run.name, current_path}); + nested_text_value_runs_info.push_back( + {text_run.name, current_path}); } } @@ -427,17 +446,24 @@ std::vector get_nested_text_value_run_paths_from_artboar if (!nested_name.empty()) { // Only process nested artboards that have an exported name - std::string new_path = current_path.empty() ? nested->name() : current_path + "/" + nested->name(); - - auto nested_results = get_nested_text_value_run_paths_from_artboard(nested->artboardInstance(), new_path); - nested_text_value_runs_info.insert(nested_text_value_runs_info.end(), nested_results.begin(), nested_results.end()); + std::string new_path = current_path.empty() + ? nested->name() + : current_path + "/" + nested->name(); + + auto nested_results = get_nested_text_value_run_paths_from_artboard( + nested->artboardInstance(), + new_path); + nested_text_value_runs_info.insert( + nested_text_value_runs_info.end(), + nested_results.begin(), + nested_results.end()); } } return nested_text_value_runs_info; } -std::vector get_assets_from_file(rive::File *file) +std::vector get_assets_from_file(rive::File* file) { std::vector assetsInfo; std::unordered_set usedAssetNames; @@ -448,30 +474,29 @@ std::vector get_assets_from_file(rive::File *file) std::string assetType; switch (asset->coreType()) { - case rive::ImageAsset::typeKey: - assetType = "image"; - break; - case rive::FontAsset::typeKey: - assetType = "font"; - break; - case rive::AudioAsset::typeKey: - assetType = "audio"; - break; - default: - assetType = "unknown"; - break; + case rive::ImageAsset::typeKey: + assetType = "image"; + break; + case rive::FontAsset::typeKey: + assetType = "font"; + break; + case rive::AudioAsset::typeKey: + assetType = "audio"; + break; + default: + assetType = "unknown"; + break; } auto assetName = asset->name(); auto uniqueAssetName = makeUnique(assetName, usedAssetNames); - assetsInfo.push_back(AssetInfo{ - uniqueAssetName, - assetType, - asset->fileExtension(), - std::to_string(asset->assetId()), - asset->cdnUuidStr(), - asset->cdnBaseUrl()}); + assetsInfo.push_back(AssetInfo{uniqueAssetName, + assetType, + asset->fileExtension(), + std::to_string(asset->assetId()), + asset->cdnUuidStr(), + asset->cdnBaseUrl()}); } return assetsInfo; } @@ -480,48 +505,50 @@ std::string dataTypeToString(rive::DataType type) { switch (type) { - case rive::DataType::none: - return "none"; - case rive::DataType::string: - return "string"; - case rive::DataType::number: - return "number"; - case rive::DataType::boolean: - return "boolean"; - case rive::DataType::color: - return "color"; - case rive::DataType::list: - return "list"; - case rive::DataType::enumType: - return "enum"; - case rive::DataType::trigger: - return "trigger"; - case rive::DataType::viewModel: - return "viewModel"; - case rive::DataType::integer: - return "integer"; - case rive::DataType::symbolListIndex: - return "symbolListIndex"; - case rive::DataType::assetImage: - return "assetImage"; - default: - return "unknown"; + case rive::DataType::none: + return "none"; + case rive::DataType::string: + return "string"; + case rive::DataType::number: + return "number"; + case rive::DataType::boolean: + return "boolean"; + case rive::DataType::color: + return "color"; + case rive::DataType::list: + return "list"; + case rive::DataType::enumType: + return "enum"; + case rive::DataType::trigger: + return "trigger"; + case rive::DataType::viewModel: + return "viewModel"; + case rive::DataType::integer: + return "integer"; + case rive::DataType::symbolListIndex: + return "symbolListIndex"; + case rive::DataType::assetImage: + return "assetImage"; + default: + return "unknown"; } } -std::optional process_riv_file(const std::string &rive_file_path) +std::optional process_riv_file(const std::string& rive_file_path) { // Check if the file is empty if (std::filesystem::is_empty(rive_file_path)) { - std::cerr << "Error: Rive file is empty: " << rive_file_path << std::endl; + std::cerr << "Error: Rive file is empty: " << rive_file_path + << std::endl; return std::nullopt; } auto riveFile = open_file(rive_file_path.c_str()); if (!riveFile) { - std::cerr << "Error: Failed to parse Rive file: " << rive_file_path << std::endl; + std::cerr << "Error: Failed to parse Rive file: " << rive_file_path + << std::endl; return std::nullopt; } @@ -536,15 +563,15 @@ std::optional process_riv_file(const std::string &rive_file_path) file_data.assets = assets; // Process enums - const auto &fileEnums = riveFile->enums(); - for (auto *dataEnum : fileEnums) + const auto& fileEnums = riveFile->enums(); + for (auto* dataEnum : fileEnums) { if (dataEnum) { EnumInfo enumInfo; enumInfo.name = dataEnum->enumName(); - const auto &values = dataEnum->values(); - for (const auto *value : values) + const auto& values = dataEnum->values(); + for (const auto* value : values) { enumInfo.values.push_back({value->key()}); } @@ -561,32 +588,40 @@ std::optional process_riv_file(const std::string &rive_file_path) ViewModelInfo viewModelInfo; viewModelInfo.name = viewModel->name(); auto propertiesData = viewModel->properties(); - for (const auto &property : propertiesData) + for (const auto& property : propertiesData) { if (property.type == rive::DataType::viewModel) { // TODO: this is a hack - auto nestedViewModel = viewModel->createInstance()->propertyViewModel(property.name); + auto nestedViewModel = + viewModel->createInstance()->propertyViewModel( + property.name); auto vm = nestedViewModel->instance()->viewModel(); - viewModelInfo.properties.push_back({property.name, - dataTypeToString(property.type), - vm->name()}); + viewModelInfo.properties.push_back( + {property.name, + dataTypeToString(property.type), + vm->name()}); } else if (property.type == rive::DataType::enumType) { // TODO: this is a hack - auto vmi = riveFile->createViewModelInstance(viewModel->name()); - auto enum_instance = static_cast(vmi->propertyValue(property.name)); - auto enumProperty = enum_instance->viewModelProperty()->as(); + auto vmi = + riveFile->createViewModelInstance(viewModel->name()); + auto enum_instance = + static_cast( + vmi->propertyValue(property.name)); + auto enumProperty = enum_instance->viewModelProperty() + ->as(); auto enumName = enumProperty->dataEnum()->enumName(); - viewModelInfo.properties.push_back({property.name, - dataTypeToString(property.type), - enumName}); + viewModelInfo.properties.push_back( + {property.name, + dataTypeToString(property.type), + enumName}); } else { - viewModelInfo.properties.push_back({property.name, - dataTypeToString(property.type)}); + viewModelInfo.properties.push_back( + {property.name, dataTypeToString(property.type)}); } } file_data.view_models.push_back(viewModelInfo); @@ -607,31 +642,46 @@ std::optional process_riv_file(const std::string &rive_file_path) std::string artboard_kebab_case = toKebabCase(artboard_name); // Ensure unique artboard variable names - artboard_camel_case = makeUnique(artboard_camel_case, usedArtboardNames); - - std::vector animations = get_animations_from_artboard(artboard.get()); - std::vector>> state_machines = get_state_machines_from_artboard(artboard.get()); - std::vector text_value_runs = get_text_value_runs_from_artboard(artboard.get()); - std::vector nested_text_value_runs = get_nested_text_value_run_paths_from_artboard(artboard.get()); - - file_data.artboards.push_back({artboard_name, artboard_pascal_case, artboard_camel_case, artboard_snake_case, artboard_kebab_case, animations, state_machines, text_value_runs, nested_text_value_runs}); + artboard_camel_case = + makeUnique(artboard_camel_case, usedArtboardNames); + + std::vector animations = + get_animations_from_artboard(artboard.get()); + std::vector>> + state_machines = get_state_machines_from_artboard(artboard.get()); + std::vector text_value_runs = + get_text_value_runs_from_artboard(artboard.get()); + std::vector nested_text_value_runs = + get_nested_text_value_run_paths_from_artboard(artboard.get()); + + file_data.artboards.push_back({artboard_name, + artboard_pascal_case, + artboard_camel_case, + artboard_snake_case, + artboard_kebab_case, + animations, + state_machines, + text_value_runs, + nested_text_value_runs}); } return file_data; } -std::optional read_template_file(const std::string &path) +std::optional read_template_file(const std::string& path) { std::ifstream file(path); if (!file.is_open()) { - std::cerr << "Warning: Unable to open template file: " << path << std::endl; + std::cerr << "Warning: Unable to open template file: " << path + << std::endl; return std::nullopt; } - return std::string(std::istreambuf_iterator(file), std::istreambuf_iterator()); + return std::string(std::istreambuf_iterator(file), + std::istreambuf_iterator()); } -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { CLI::App app{"Rive Code Generator"}; @@ -640,7 +690,9 @@ int main(int argc, char *argv[]) std::string template_path; Language language = Language::Dart; // Default to Dart - app.add_option("-i, --input", input_path, "Path to Rive file or directory containing Rive files") + app.add_option("-i, --input", + input_path, + "Path to Rive file or directory containing Rive files") ->required() ->check(CLI::ExistingFile | CLI::ExistingDirectory); @@ -649,11 +701,13 @@ int main(int argc, char *argv[]) app.add_option("-t,--template", template_path, "Custom template file path"); - app.add_option("-l, --language", language, "Programming language for code generation") - ->transform(CLI::CheckedTransformer(std::map{ - {"dart", Language::Dart}, - {"js", Language::JavaScript}}, - CLI::ignore_case)); + app.add_option("-l, --language", + language, + "Programming language for code generation") + ->transform(CLI::CheckedTransformer( + std::map{{"dart", Language::Dart}, + {"js", Language::JavaScript}}, + CLI::ignore_case)); CLI11_PARSE(app, argc, argv); @@ -664,11 +718,13 @@ int main(int argc, char *argv[]) if (custom_template) { template_str = *custom_template; - std::cout << "Using custom template from: " << template_path << std::endl; + std::cout << "Using custom template from: " << template_path + << std::endl; } else { - // TODO: This is probably not needed. Or can have a safety to fallback to the language specified + // TODO: This is probably not needed. Or can have a safety to + // fallback to the language specified std::cout << "Falling back to default template." << std::endl; template_str = default_templates::DEFAULT_DART_TEMPLATE; } @@ -681,7 +737,8 @@ int main(int argc, char *argv[]) } else if (language == Language::JavaScript) { - std::cout << "JavaScript code generation is not yet supported." << std::endl; + std::cout << "JavaScript code generation is not yet supported." + << std::endl; return 1; } } @@ -695,7 +752,7 @@ int main(int argc, char *argv[]) } std::vector rive_file_data_list; - for (const auto &riv_file : riv_files) + for (const auto& riv_file : riv_files) { auto result = process_riv_file(riv_file); if (result) @@ -709,9 +766,10 @@ int main(int argc, char *argv[]) kainjow::mustache::data template_data; std::vector riv_file_list; - for (size_t file_index = 0; file_index < rive_file_data_list.size(); file_index++) + for (size_t file_index = 0; file_index < rive_file_data_list.size(); + file_index++) { - const auto &file_data = rive_file_data_list[file_index]; + const auto& file_data = rive_file_data_list[file_index]; kainjow::mustache::data riv_file_data; riv_file_data["riv_pascal_case"] = file_data.riv_pascal_case; riv_file_data["riv_camel_case"] = file_data.riv_camel_case; @@ -721,9 +779,10 @@ int main(int argc, char *argv[]) // Add enums to template data std::vector enums; - for (size_t enum_index = 0; enum_index < file_data.enums.size(); enum_index++) + for (size_t enum_index = 0; enum_index < file_data.enums.size(); + enum_index++) { - const auto &enum_info = file_data.enums[enum_index]; + const auto& enum_info = file_data.enums[enum_index]; kainjow::mustache::data enum_data; enum_data["enum_name"] = enum_info.name; enum_data["enum_camel_case"] = toCamelCase(enum_info.name); @@ -733,16 +792,18 @@ int main(int argc, char *argv[]) enum_data["last"] = (enum_index == file_data.enums.size() - 1); std::vector enum_values; - for (size_t value_index = 0; value_index < enum_info.values.size(); value_index++) + for (size_t value_index = 0; value_index < enum_info.values.size(); + value_index++) { - const auto &value = enum_info.values[value_index]; + const auto& value = enum_info.values[value_index]; kainjow::mustache::data value_data; value_data["enum_value_key"] = value.key; value_data["enum_value_camel_case"] = toCamelCase(value.key); value_data["enum_value_pascal_case"] = toPascalCase(value.key); value_data["enum_value_snake_case"] = toSnakeCase(value.key); value_data["enum_value_kebab_case"] = toKebabCase(value.key); - value_data["last"] = (value_index == enum_info.values.size() - 1); + value_data["last"] = + (value_index == enum_info.values.size() - 1); enum_values.push_back(value_data); } enum_data["enum_values"] = enum_values; @@ -752,48 +813,69 @@ int main(int argc, char *argv[]) // Add view models to template data std::vector view_models; - for (size_t vm_index = 0; vm_index < file_data.view_models.size(); vm_index++) + for (size_t vm_index = 0; vm_index < file_data.view_models.size(); + vm_index++) { - const auto &view_model = file_data.view_models[vm_index]; + const auto& view_model = file_data.view_models[vm_index]; kainjow::mustache::data view_model_data; view_model_data["view_model_name"] = view_model.name; - view_model_data["view_model_camel_case"] = toCamelCase(view_model.name); - view_model_data["view_model_pascal_case"] = toPascalCase(view_model.name); - view_model_data["view_model_snake_case"] = toSnakeCase(view_model.name); - view_model_data["view_model_kebab_case"] = toKebabCase(view_model.name); - view_model_data["last"] = (vm_index == file_data.view_models.size() - 1); + view_model_data["view_model_camel_case"] = + toCamelCase(view_model.name); + view_model_data["view_model_pascal_case"] = + toPascalCase(view_model.name); + view_model_data["view_model_snake_case"] = + toSnakeCase(view_model.name); + view_model_data["view_model_kebab_case"] = + toKebabCase(view_model.name); + view_model_data["last"] = + (vm_index == file_data.view_models.size() - 1); std::vector properties; - for (size_t prop_index = 0; prop_index < view_model.properties.size(); prop_index++) + for (size_t prop_index = 0; + prop_index < view_model.properties.size(); + prop_index++) { - const auto &property = view_model.properties[prop_index]; + const auto& property = view_model.properties[prop_index]; kainjow::mustache::data property_data; property_data["property_name"] = property.name; - property_data["property_camel_case"] = toCamelCase(property.name); - property_data["property_pascal_case"] = toPascalCase(property.name); - property_data["property_snake_case"] = toSnakeCase(property.name); - property_data["property_kebab_case"] = toKebabCase(property.name); + property_data["property_camel_case"] = + toCamelCase(property.name); + property_data["property_pascal_case"] = + toPascalCase(property.name); + property_data["property_snake_case"] = + toSnakeCase(property.name); + property_data["property_kebab_case"] = + toKebabCase(property.name); property_data["property_type"] = property.type; // Add property type information for the viewmodel template kainjow::mustache::data property_type_data; - property_type_data.set("is_view_model", property.type == "viewModel"); + property_type_data.set("is_view_model", + property.type == "viewModel"); property_type_data.set("is_enum", property.type == "enum"); property_type_data.set("is_string", property.type == "string"); property_type_data.set("is_number", property.type == "number"); - property_type_data.set("is_integer", property.type == "integer"); - property_type_data.set("is_boolean", property.type == "boolean"); + property_type_data.set("is_integer", + property.type == "integer"); + property_type_data.set("is_boolean", + property.type == "boolean"); property_type_data.set("is_color", property.type == "color"); property_type_data.set("is_list", property.type == "list"); - property_type_data.set("is_trigger", property.type == "trigger"); + property_type_data.set("is_trigger", + property.type == "trigger"); property_type_data.set("backing_name", property.backing_name); - property_type_data.set("backing_camel_case", toCamelCase(property.backing_name)); - property_type_data.set("backing_pascal_case", toPascalCase(property.backing_name)); - property_type_data.set("backing_snake_case", toSnakeCase(property.backing_name)); - property_type_data.set("backing_kebab_case", toKebabCase(property.backing_name)); + property_type_data.set("backing_camel_case", + toCamelCase(property.backing_name)); + property_type_data.set("backing_pascal_case", + toPascalCase(property.backing_name)); + property_type_data.set("backing_snake_case", + toSnakeCase(property.backing_name)); + property_type_data.set("backing_kebab_case", + toKebabCase(property.backing_name)); property_data.set("property_type", property_type_data); - property_data["last"] = (prop_index == view_model.properties.size() - 1); + property_data["last"] = + (prop_index == view_model.properties.size() - 1); properties.push_back(property_data); } view_model_data["properties"] = properties; @@ -802,9 +884,10 @@ int main(int argc, char *argv[]) riv_file_data["view_models"] = view_models; std::vector assets; - for (size_t asset_index = 0; asset_index < file_data.assets.size(); asset_index++) + for (size_t asset_index = 0; asset_index < file_data.assets.size(); + asset_index++) { - const auto &asset = file_data.assets[asset_index]; + const auto& asset = file_data.assets[asset_index]; kainjow::mustache::data asset_data; asset_data["asset_name"] = asset.name; asset_data["asset_camel_case"] = toCamelCase(asset.name); @@ -821,22 +904,27 @@ int main(int argc, char *argv[]) riv_file_data["assets"] = assets; std::vector artboard_list; - for (size_t artboard_index = 0; artboard_index < file_data.artboards.size(); artboard_index++) + for (size_t artboard_index = 0; + artboard_index < file_data.artboards.size(); + artboard_index++) { - const auto &artboard = file_data.artboards[artboard_index]; + const auto& artboard = file_data.artboards[artboard_index]; kainjow::mustache::data artboard_data; artboard_data["artboard_name"] = artboard.artboard_name; - artboard_data["artboard_pascal_case"] = artboard.artboard_pascal_case; + artboard_data["artboard_pascal_case"] = + artboard.artboard_pascal_case; artboard_data["artboard_camel_case"] = artboard.artboard_camel_case; artboard_data["artboard_snake_case"] = artboard.artboard_snake_case; artboard_data["artboard_kebab_case"] = artboard.artboard_kebab_case; - artboard_data["last"] = (artboard_index == file_data.artboards.size() - 1); + artboard_data["last"] = + (artboard_index == file_data.artboards.size() - 1); std::unordered_set usedAnimationNames; std::vector animations; - for (size_t anim_index = 0; anim_index < artboard.animations.size(); anim_index++) + for (size_t anim_index = 0; anim_index < artboard.animations.size(); + anim_index++) { - const auto &animation = artboard.animations[anim_index]; + const auto& animation = artboard.animations[anim_index]; kainjow::mustache::data anim_data; auto unique_name = makeUnique(animation, usedAnimationNames); anim_data["animation_name"] = animation; @@ -844,30 +932,40 @@ int main(int argc, char *argv[]) anim_data["animation_pascal_case"] = toPascalCase(unique_name); anim_data["animation_snake_case"] = toSnakeCase(unique_name); anim_data["animation_kebab_case"] = toKebabCase(unique_name); - anim_data["last"] = (anim_index == artboard.animations.size() - 1); + anim_data["last"] = + (anim_index == artboard.animations.size() - 1); animations.push_back(anim_data); } artboard_data["animations"] = animations; std::unordered_set usedStateMachineNames; std::vector state_machines; - for (size_t sm_index = 0; sm_index < artboard.state_machines.size(); sm_index++) + for (size_t sm_index = 0; sm_index < artboard.state_machines.size(); + sm_index++) { - const auto &state_machine = artboard.state_machines[sm_index]; + const auto& state_machine = artboard.state_machines[sm_index]; kainjow::mustache::data state_machine_data; - auto unique_name = makeUnique(state_machine.first, usedStateMachineNames); + auto unique_name = + makeUnique(state_machine.first, usedStateMachineNames); state_machine_data["state_machine_name"] = state_machine.first; - state_machine_data["state_machine_camel_case"] = toCamelCase(unique_name); - state_machine_data["state_machine_pascal_case"] = toPascalCase(unique_name); - state_machine_data["state_machine_snake_case"] = toSnakeCase(unique_name); - state_machine_data["state_machine_kebab_case"] = toKebabCase(unique_name); - state_machine_data["last"] = (sm_index == artboard.state_machines.size() - 1); + state_machine_data["state_machine_camel_case"] = + toCamelCase(unique_name); + state_machine_data["state_machine_pascal_case"] = + toPascalCase(unique_name); + state_machine_data["state_machine_snake_case"] = + toSnakeCase(unique_name); + state_machine_data["state_machine_kebab_case"] = + toKebabCase(unique_name); + state_machine_data["last"] = + (sm_index == artboard.state_machines.size() - 1); std::unordered_set usedInputNames; std::vector inputs; - for (size_t input_index = 0; input_index < state_machine.second.size(); input_index++) + for (size_t input_index = 0; + input_index < state_machine.second.size(); + input_index++) { - const auto &input = state_machine.second[input_index]; + const auto& input = state_machine.second[input_index]; kainjow::mustache::data input_data; auto unique_name = makeUnique(input.name, usedInputNames); input_data["input_name"] = input.name; @@ -877,7 +975,8 @@ int main(int argc, char *argv[]) input_data["input_kebab_case"] = toKebabCase(unique_name); input_data["input_type"] = input.type; input_data["input_default_value"] = input.default_value; - input_data["last"] = (input_index == state_machine.second.size() - 1); + input_data["last"] = + (input_index == state_machine.second.size() - 1); inputs.push_back(input_data); } state_machine_data["inputs"] = inputs; @@ -888,31 +987,42 @@ int main(int argc, char *argv[]) std::unordered_set usedTextValueRunNames; std::vector text_value_runs; - for (size_t tvr_index = 0; tvr_index < artboard.text_value_runs.size(); tvr_index++) + for (size_t tvr_index = 0; + tvr_index < artboard.text_value_runs.size(); + tvr_index++) { - const auto &tvr = artboard.text_value_runs[tvr_index]; + const auto& tvr = artboard.text_value_runs[tvr_index]; kainjow::mustache::data tvr_data; auto unique_name = makeUnique(tvr.name, usedTextValueRunNames); tvr_data["text_value_run_name"] = tvr.name; - tvr_data["text_value_run_camel_case"] = toCamelCase(unique_name); - tvr_data["text_value_run_pascal_case"] = toPascalCase(unique_name); - tvr_data["text_value_run_snake_case"] = toSnakeCase(unique_name); - tvr_data["text_value_run_kebab_case"] = toKebabCase(unique_name); + tvr_data["text_value_run_camel_case"] = + toCamelCase(unique_name); + tvr_data["text_value_run_pascal_case"] = + toPascalCase(unique_name); + tvr_data["text_value_run_snake_case"] = + toSnakeCase(unique_name); + tvr_data["text_value_run_kebab_case"] = + toKebabCase(unique_name); tvr_data["text_value_run_default"] = tvr.default_value; - tvr_data["text_value_run_default_sanitized"] = sanitizeString(tvr.default_value); - tvr_data["last"] = (tvr_index == artboard.text_value_runs.size() - 1); + tvr_data["text_value_run_default_sanitized"] = + sanitizeString(tvr.default_value); + tvr_data["last"] = + (tvr_index == artboard.text_value_runs.size() - 1); text_value_runs.push_back(tvr_data); } artboard_data["text_value_runs"] = text_value_runs; std::vector nested_text_value_runs; - for (size_t ntvr_index = 0; ntvr_index < artboard.nested_text_value_runs.size(); ntvr_index++) + for (size_t ntvr_index = 0; + ntvr_index < artboard.nested_text_value_runs.size(); + ntvr_index++) { - const auto &ntvr = artboard.nested_text_value_runs[ntvr_index]; + const auto& ntvr = artboard.nested_text_value_runs[ntvr_index]; kainjow::mustache::data ntvr_data; ntvr_data["nested_text_value_run_name"] = ntvr.name; ntvr_data["nested_text_value_run_path"] = ntvr.path; - ntvr_data["last"] = (ntvr_index == artboard.nested_text_value_runs.size() - 1); + ntvr_data["last"] = + (ntvr_index == artboard.nested_text_value_runs.size() - 1); nested_text_value_runs.push_back(ntvr_data); } @@ -945,13 +1055,15 @@ int main(int argc, char *argv[]) output_path = std::filesystem::current_path() / output_path; } - // Create directories if they don't exist (this won't do anything if it's just a filename) + // Create directories if they don't exist (this won't do anything if it's + // just a filename) std::filesystem::create_directories(output_path.parent_path()); std::ofstream output_file(output_path); if (!output_file.is_open()) { - std::cerr << "Error: Unable to open output file: " << output_path << std::endl; + std::cerr << "Error: Unable to open output file: " << output_path + << std::endl; return 1; } output_file << result; From 0133ac5c41ae31c80434348fdc6b6f1fbb780f35 Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Sun, 15 Jun 2025 14:13:01 +0200 Subject: [PATCH 03/16] chore: bump rive runtime submodule --- rive-runtime | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rive-runtime b/rive-runtime index fc31e5e..1a9350e 160000 --- a/rive-runtime +++ b/rive-runtime @@ -1 +1 @@ -Subproject commit fc31e5e7572d17817463f12e13e1cf39f19aff84 +Subproject commit 1a9350e4ae1b7d0652757e9425c2b74a6c3b2992 From b1878094ca91a2598537196765a8a209e438ec98 Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Sun, 15 Jun 2025 14:14:07 +0200 Subject: [PATCH 04/16] feat: add windows build scripts --- .gitignore | 1 + build/build.ps1 | 2 + build/build.sh | 191 +++++++++++++++++++++++------- build/premake5_code_generator.lua | 5 +- 4 files changed, 153 insertions(+), 46 deletions(-) create mode 100644 build/build.ps1 diff --git a/.gitignore b/.gitignore index 5222697..f31139a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # build build/out build/macosx +build/dependencies # examples examples/generated/ diff --git a/build/build.ps1 b/build/build.ps1 new file mode 100644 index 0000000..d77a780 --- /dev/null +++ b/build/build.ps1 @@ -0,0 +1,2 @@ +..\rive-runtime\build\setup_windows_dev.ps1 +bash ".\build.sh" @args \ No newline at end of file diff --git a/build/build.sh b/build/build.sh index cf41103..fcb6962 100755 --- a/build/build.sh +++ b/build/build.sh @@ -1,60 +1,161 @@ -#!/bin/sh -set -e -echo "Building rive_code_generator" - +#!/bin/bash +set -euo pipefail -source ../rive-runtime/dependencies/config_directories.sh -# if [[ "$OSTYPE" == "darwin"* ]]; then -# # macOS-specific code -# echo "Detected macOS. Running macOS build script..." -# source ../rive-runtime/dependencies/macosx/config_directories.sh -# else -# echo "This script currently only supports macOS." -# exit 1 -# fi +echo "Building rive_code_generator" CONFIG=debug +KIND= +CLEAN=false +RUN=false +DEV=false +RUNTIME_PATH="$PWD/../rive-runtime/build" for var in "$@"; do - if [[ $var = "release" ]]; then - CONFIG=release - fi + case "$var" in + --help|-h) + echo "Usage: ./build.sh [release] [clean] [run] [dev]" + exit 0 + ;; + esac done -if [[ ! -f "$DEPENDENCIES/bin/premake5" ]]; then - pushd $DEPENDENCIES_SCRIPTS - ./get_premake5.sh +for var in "$@"; do + case "$var" in + release) CONFIG=release ;; + clean) CLEAN=true ;; + run) RUN=true ;; + dev) DEV=true ;; + esac +done + +unameOut="$(uname -s)" +case "${unameOut}" in +Linux*) machine=linux ;; +Darwin*) machine=macosx ;; +MINGW*) machine=windows ;; +*) machine="unhandled:${unameOut}" ;; +esac +OS=$machine + +if [[ $OS == "windows" ]]; then + if ! command -v msbuild.exe &>/dev/null; then + powershell "./build.ps1" $@ + exit $? + fi +fi +if [[ $OS = "linux" ]]; then + LOCAL_ARCH=$('arch') + if [[ $LOCAL_ARCH == "aarch64" ]]; then + LINUX_ARCH=arm64 + else + LINUX_ARCH=x64 + fi +fi + +# Setup PREMAKE +download_premake() { + mkdir -p dependencies/bin + pushd dependencies/bin + echo Downloading Premake5 + if [[ $OS = "macosx" ]]; then + curl https://github.com/premake/premake-core/releases/download/v5.0.0-beta3/premake-5.0.0-beta3-macosx.tar.gz -L -o premake_macosx.tar.gz + # Export premake5 into bin + tar -xvf premake_macosx.tar.gz 2>/dev/null + # the zip for beta3 does not have x + chmod +x premake5 + # Delete downloaded archive + rm premake_macosx.tar.gz + elif [[ $OS = "windows" ]]; then + curl https://github.com/premake/premake-core/releases/download/v5.0.0-beta3/premake-5.0.0-beta3-windows.zip -L -o premake_windows.zip + unzip premake_windows.zip + rm premake_windows.zip + elif [[ $OS = "linux" ]]; then + pushd .. + git clone --depth 1 --branch v5.0.0-beta2 https://github.com/premake/premake-core.git + pushd premake-core + if [[ $LINUX_ARCH == "arm64" ]]; then + PREMAKE_MAKE_ARCH=ARM + else + PREMAKE_MAKE_ARCH=x86 + fi + make -f Bootstrap.mak linux PLATFORM=$PREMAKE_MAKE_ARCH + cp bin/release/* ../bin + popd + popd + # curl https://github.com/premake/premake-core/releases/download/v5.0.0-beta2/premake-5.0.0-beta2-linux.tar.gz -L -o premake_linux.tar.gz + # # Export premake5 into bin + # tar -xvf premake_linux.tar.gz 2>/dev/null + # # Delete downloaded archive + # rm premake_linux.tar.gz + fi popd +} +if [[ ! -f "dependencies/bin/premake5" ]]; then + download_premake fi -echo "Using premake5 from $DEPENDENCIES/bin/premake5" -export PREMAKE=$DEPENDENCIES/bin/premake5 -$PREMAKE --version +if [[ ! -d "dependencies/export-compile-commands" ]]; then + pushd dependencies + git clone https://github.com/tarruda/premake-export-compile-commands export-compile-commands + popd +fi -export PREMAKE_PATH="$PWD/../rive-runtime/build":$PREMAKE_PATH +export PREMAKE=$PWD/dependencies/bin/premake5 -OUT=out/lib/$CONFIG -$PREMAKE --scripts=../build --file=./premake5_code_generator.lua --no-rive-decoders --config=$CONFIG --out=$OUT gmake2 +case "$OS" in + macosx|linux) TARGET=gmake2 ;; + windows) TARGET=vs2022; KIND=--shared; EXTRA_OUT=_shared ;; +esac -for var in "$@"; do - if [[ $var = "clean" ]]; then - make -C $OUT clean - fi -done +# export PREMAKE_PATH="$RUNTIME_PATH":$PREMAKE_PATH -make -C $OUT -j$(($(sysctl -n hw.physicalcpu) + 1)) +if [[ $CLEAN == true ]]; then + echo 'Cleaning...' + rm -fR out +fi -for var in "$@"; do - if [[ $var = "run" ]]; then - $OUT/rive_code_generator --help - fi - if [[ $var = "dev" ]]; then - # $OUT/rive_code_generator -i ../samples/signage_v03.riv -o out/rive_generated.dart -t ../templates/dart_template.mustache - # $OUT/rive_code_generator -i ../samples/rating.riv -o out/rive_generated.dart -t ../templates/dart_template.mustache - # $OUT/rive_code_generator -i ../samples/ -o out/generated/rive_generated.dart -t ../templates/dart_template.mustache - $OUT/rive_code_generator -i ../samples/ -o out/generated/rive_viewmodel.dart -t ../templates/viewmodel_template.mustache - # $OUT/rive_code_generator -i ../samples/ -o out/generated/rive.json -t ../templates/json_template.mustache - # $OUT/rive_code_generator -i ../samples/nested_test.riv -o out/rive_generated.dart --help - # $OUT/rive_code_generator -i ../samples/ -o out/rive_generated.dart - fi -done \ No newline at end of file +OUT="out/lib/$CONFIG" +OUT="${OUT%/}" # Remove trailing slash if it exists +$PREMAKE --scripts=../rive-runtime/build/ --file=premake5_code_generator.lua $TARGET --config=$CONFIG --out=$OUT + +if [ "$OS" = "macosx" ]; then + NUM_CORES=$(($(sysctl -n hw.physicalcpu) + 1)) +elif [ "$OS" = "linux" ]; then + NUM_CORES=$(nproc) +elif [ "$OS" = "windows" ]; then + NUM_CORES=$NUMBER_OF_PROCESSORS +else + echo "Unsupported OS: $OS" + exit 1 +fi + +if [[ $OS = "windows" ]]; then + pushd "$OUT" + msbuild.exe rive.sln -m:$NUM_CORES + popd +else + make -C $OUT -j$NUM_CORES +fi + +EXECUTABLE_NAME=rive_code_generator +if [[ $OS = "windows" ]]; then + EXECUTABLE="$EXECUTABLE_NAME.exe" +else + EXECUTABLE="$EXECUTABLE_NAME" +fi + +echo -e "\033[0;32m\nBuild complete: $OUT/$EXECUTABLE\033[0m" + +if [[ $RUN == true ]]; then + "$OUT/rive_code_generator" --help +fi +if [[ $DEV == true ]]; then + pwd + # "$OUT/$EXECUTABLE" -i ../samples/signage_v03.riv -o out/rive_generated.dart -t ../templates/dart_template.mustache + # "$OUT/$EXECUTABLE" -i ../samples/rating.riv -o out/rive_generated.dart -t ../templates/dart_template.mustache + # "$OUT/$EXECUTABLE" -i ../samples/ -o out/generated/rive_generated.dart -t ../templates/dart_template.mustache + "$OUT/$EXECUTABLE" -i ../samples/ -o out/generated/rive_viewmodel.dart -t ../templates/viewmodel_template.mustache + # "$OUT/$EXECUTABLE" -i ../samples/ -o out/generated/rive.json -t ../templates/json_template.mustache + # "$OUT/$EXECUTABLE" -i ../samples/nested_test.riv -o out/rive_generated.dart --help + # "$OUT/$EXECUTABLE" -i ../samples/ -o out/rive_generated.dart +fi \ No newline at end of file diff --git a/build/premake5_code_generator.lua b/build/premake5_code_generator.lua index 5de47fd..ca26c8a 100644 --- a/build/premake5_code_generator.lua +++ b/build/premake5_code_generator.lua @@ -3,7 +3,6 @@ rive = '../rive-runtime' -- dofile(path.join(path.getabsolute(rive) .. '/build', 'premake5.lua')) -- dofile(path.join(path.getabsolute(rive) .. '/build', 'rive_build_config.lua')) dofile(path.join(path.getabsolute(rive) .. '/premake5_v2.lua')) -dofile(path.join(path.getabsolute(rive) .. '/renderer/premake5_pls_renderer.lua')) project('rive_code_generator') do @@ -34,4 +33,8 @@ do -- -- 'CoreText.framework', -- }) -- end + + filter "action:vs*" + buildoptions { "/EHsc" } + filter {} end \ No newline at end of file From 119715c8740ff9b563f26178bae2bfae3b6e2b74 Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Sun, 15 Jun 2025 14:39:05 +0200 Subject: [PATCH 05/16] chore: fix build warnings --- src/main.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b33659c..1e2f443 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -121,7 +121,7 @@ struct RiveFileData }; // Helper function to convert a string to the specified case style -std::string toCaseHelper(const std::string& str, CaseStyle style) +static std::string toCaseHelper(const std::string& str, CaseStyle style) { std::stringstream result; bool capitalizeNext = (style == CaseStyle::Pascal); @@ -186,7 +186,7 @@ std::string toCaseHelper(const std::string& str, CaseStyle style) return finalResult; } -std::string toCamelCase(const std::string& str) +static std::string toCamelCase(const std::string& str) { std::string result = toCaseHelper(str, CaseStyle::Camel); // Handle Dart reserved keywords @@ -202,22 +202,22 @@ std::string toCamelCase(const std::string& str) return result; } -std::string toPascalCase(const std::string& str) +static std::string toPascalCase(const std::string& str) { return toCaseHelper(str, CaseStyle::Pascal); } -std::string toSnakeCase(const std::string& str) +static std::string toSnakeCase(const std::string& str) { return toCaseHelper(str, CaseStyle::Snake); } -std::string toKebabCase(const std::string& str) +static std::string toKebabCase(const std::string& str) { return toCaseHelper(str, CaseStyle::Kebab); } -std::string sanitizeString(const std::string& input) +static std::string sanitizeString(const std::string& input) { std::string output; for (char c : input) @@ -295,7 +295,7 @@ static std::vector get_animations_from_artboard( return animations; } -std::vector>> +static std::vector>> get_state_machines_from_artboard(rive::ArtboardInstance* artboard) { std::vector>> state_machines; @@ -353,7 +353,7 @@ get_state_machines_from_artboard(rive::ArtboardInstance* artboard) return state_machines; } -std::vector find_riv_files(const std::string& path) +static std::vector find_riv_files(const std::string& path) { std::vector riv_files; @@ -375,7 +375,7 @@ std::vector find_riv_files(const std::string& path) return riv_files; } -std::string makeUnique(const std::string& base, +static std::string makeUnique(const std::string& base, std::unordered_set& usedNames) { std::string uniqueName = base; @@ -401,7 +401,7 @@ void findAll(std::vector& results, rive::ArtboardInstance* artboard) } } -std::vector get_text_value_runs_from_artboard( +static std::vector get_text_value_runs_from_artboard( rive::ArtboardInstance* artboard) { std::vector text_value_runs; @@ -420,7 +420,7 @@ std::vector get_text_value_runs_from_artboard( return text_value_runs_info; } -std::vector +static std::vector get_nested_text_value_run_paths_from_artboard( rive::ArtboardInstance* artboard, const std::string& current_path = "") @@ -463,7 +463,7 @@ get_nested_text_value_run_paths_from_artboard( return nested_text_value_runs_info; } -std::vector get_assets_from_file(rive::File* file) +static std::vector get_assets_from_file(rive::File* file) { std::vector assetsInfo; std::unordered_set usedAssetNames; @@ -501,7 +501,7 @@ std::vector get_assets_from_file(rive::File* file) return assetsInfo; } -std::string dataTypeToString(rive::DataType type) +static std::string dataTypeToString(rive::DataType type) { switch (type) { @@ -534,7 +534,7 @@ std::string dataTypeToString(rive::DataType type) } } -std::optional process_riv_file(const std::string& rive_file_path) +static std::optional process_riv_file(const std::string& rive_file_path) { // Check if the file is empty if (std::filesystem::is_empty(rive_file_path)) @@ -668,7 +668,7 @@ std::optional process_riv_file(const std::string& rive_file_path) return file_data; } -std::optional read_template_file(const std::string& path) +static std::optional read_template_file(const std::string& path) { std::ifstream file(path); if (!file.is_open()) @@ -709,7 +709,7 @@ int main(int argc, char* argv[]) {"js", Language::JavaScript}}, CLI::ignore_case)); - CLI11_PARSE(app, argc, argv); + CLI11_PARSE(app, argc, argv) std::string template_str; if (!template_path.empty()) From 744221414263c767c71ad24510643dc7c9b99600 Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Sun, 15 Jun 2025 15:48:45 +0200 Subject: [PATCH 06/16] refactor: prefer camelCase --- src/main.cpp | 684 +++++++++++++++++++++++++-------------------------- 1 file changed, 341 insertions(+), 343 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 1e2f443..80d3a75 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,7 +26,7 @@ #include "rive/viewmodel/viewmodel_property_enum.hpp" #include "utils/no_op_factory.hpp" -const std::string generated_file_name = "rive_generated"; +const std::string generatedFileName = "rive_generated"; enum class CaseStyle { @@ -46,13 +46,13 @@ struct InputInfo { std::string name; std::string type; - std::string default_value; + std::string defaultValue; }; struct TextValueRunInfo { std::string name; - std::string default_value; + std::string defaultValue; }; struct NestedTextValueRunInfo @@ -65,10 +65,10 @@ struct AssetInfo { std::string name; std::string type; - std::string file_extension; - std::string asset_id; - std::string cdn_uuid; - std::string cdn_base_url; + std::string fileExtension; + std::string assetId; + std::string cdnUuid; + std::string cdnBaseUrl; }; struct EnumValueInfo @@ -86,7 +86,7 @@ struct PropertyInfo { std::string name; std::string type; - std::string backing_name; + std::string backingName; }; struct ViewModelInfo @@ -97,27 +97,27 @@ struct ViewModelInfo struct ArtboardData { - std::string artboard_name; - std::string artboard_pascal_case; - std::string artboard_camel_case; - std::string artboard_snake_case; - std::string artboard_kebab_case; + std::string artboardName; + std::string artboardPascalCase; + std::string artboardCameCase; + std::string artboardSnakeCase; + std::string artboardKebabCase; std::vector animations; - std::vector>> state_machines; - std::vector text_value_runs; - std::vector nested_text_value_runs; + std::vector>> stateMachines; + std::vector textValueRuns; + std::vector nestedTextValueRuns; }; struct RiveFileData { - std::string riv_pascal_case; - std::string riv_camel_case; - std::string riv_snake_case; - std::string riv_kebab_case; + std::string rivPascalCase; + std::string rivCameCase; + std::string riveSnakeCase; + std::string rivKebabCase; std::vector artboards; std::vector assets; std::vector enums; - std::vector view_models; + std::vector viewmodels; }; // Helper function to convert a string to the specified case style @@ -189,6 +189,8 @@ static std::string toCaseHelper(const std::string& str, CaseStyle style) static std::string toCamelCase(const std::string& str) { std::string result = toCaseHelper(str, CaseStyle::Camel); + // TODO: These handlers are generic to dart, we need to make something more + // generic to handle all languages // Handle Dart reserved keywords if (result == "with" || result == "class" || result == "enum" || result == "var" || result == "const" || result == "final" || @@ -258,7 +260,7 @@ static std::string sanitizeString(const std::string& input) return output; } -static std::unique_ptr open_file(const char name[]) +static std::unique_ptr openFile(const char name[]) { FILE* f = fopen(name, "rb"); if (!f) @@ -282,7 +284,7 @@ static std::unique_ptr open_file(const char name[]) return rive::File::import(bytes, &gFactory); } -static std::vector get_animations_from_artboard( +static std::vector getAnimationsFromArtboard( rive::ArtboardInstance* artboard) { std::vector animations; @@ -296,14 +298,14 @@ static std::vector get_animations_from_artboard( } static std::vector>> -get_state_machines_from_artboard(rive::ArtboardInstance* artboard) +getStateMachinesFromArtboard(rive::ArtboardInstance* artboard) { - std::vector>> state_machines; + std::vector>> stateMachines; auto stateMachineCount = artboard->stateMachineCount(); for (int i = 0; i < stateMachineCount; i++) { auto stateMachine = artboard->stateMachineAt(i); - std::string state_machine_name = stateMachine->name(); + std::string stateMachineName = stateMachine->name(); std::vector inputs; auto inputCount = stateMachine->inputCount(); @@ -348,14 +350,14 @@ get_state_machines_from_artboard(rive::ArtboardInstance* artboard) inputs.push_back({input->name(), inputType, defaultValue}); } - state_machines.emplace_back(state_machine_name, inputs); + stateMachines.emplace_back(stateMachineName, inputs); } - return state_machines; + return stateMachines; } -static std::vector find_riv_files(const std::string& path) +static std::vector findRiveFiles(const std::string& path) { - std::vector riv_files; + std::vector riveFile; if (std::filesystem::is_directory(path)) { @@ -363,16 +365,16 @@ static std::vector find_riv_files(const std::string& path) { if (entry.path().extension() == ".riv") { - riv_files.push_back(entry.path().string()); + riveFile.push_back(entry.path().string()); } } } else if (std::filesystem::path(path).extension() == ".riv") { - riv_files.push_back(path); + riveFile.push_back(path); } - return riv_files; + return riveFile; } static std::string makeUnique(const std::string& base, @@ -401,40 +403,40 @@ void findAll(std::vector& results, rive::ArtboardInstance* artboard) } } -static std::vector get_text_value_runs_from_artboard( +static std::vector getTextValueRunsFromArtboard( rive::ArtboardInstance* artboard) { - std::vector text_value_runs; - std::vector text_value_runs_info; + std::vector textValueRuns; + std::vector textValueRunsInfo; - findAll(text_value_runs, artboard); + findAll(textValueRuns, artboard); - for (auto text_value_run : text_value_runs) + for (auto textValueRun : textValueRuns) { - if (!text_value_run->name().empty()) + if (!textValueRun->name().empty()) { - text_value_runs_info.push_back( - {text_value_run->name(), text_value_run->text()}); + textValueRunsInfo.push_back( + {textValueRun->name(), textValueRun->text()}); } } - return text_value_runs_info; + return textValueRunsInfo; } static std::vector -get_nested_text_value_run_paths_from_artboard( +getNestedTextValueRunPathsFromArtboard( rive::ArtboardInstance* artboard, - const std::string& current_path = "") + const std::string& currentPath = "") { - std::vector nested_text_value_runs_info; + std::vector nestedTextValueRunsInfo; auto count = artboard->nestedArtboards().size(); - if (!current_path.empty()) + if (!currentPath.empty()) { - auto text_runs = get_text_value_runs_from_artboard(artboard); - for (const auto& text_run : text_runs) + auto textRuns = getTextValueRunsFromArtboard(artboard); + for (const auto& textRun : textRuns) { - nested_text_value_runs_info.push_back( - {text_run.name, current_path}); + nestedTextValueRunsInfo.push_back( + {textRun.name, currentPath}); } } @@ -442,28 +444,28 @@ get_nested_text_value_run_paths_from_artboard( for (int i = 0; i < count; i++) { auto nested = artboard->nestedArtboards()[i]; - auto nested_name = nested->name(); - if (!nested_name.empty()) + auto nestedName = nested->name(); + if (!nestedName.empty()) { // Only process nested artboards that have an exported name - std::string new_path = current_path.empty() + std::string newPath = currentPath.empty() ? nested->name() - : current_path + "/" + nested->name(); + : currentPath + "/" + nested->name(); - auto nested_results = get_nested_text_value_run_paths_from_artboard( + auto nestedResults = getNestedTextValueRunPathsFromArtboard( nested->artboardInstance(), - new_path); - nested_text_value_runs_info.insert( - nested_text_value_runs_info.end(), - nested_results.begin(), - nested_results.end()); + newPath); + nestedTextValueRunsInfo.insert( + nestedTextValueRunsInfo.end(), + nestedResults.begin(), + nestedResults.end()); } } - return nested_text_value_runs_info; + return nestedTextValueRunsInfo; } -static std::vector get_assets_from_file(rive::File* file) +static std::vector getAssetsFromFile(rive::File* file) { std::vector assetsInfo; std::unordered_set usedAssetNames; @@ -534,33 +536,33 @@ static std::string dataTypeToString(rive::DataType type) } } -static std::optional process_riv_file(const std::string& rive_file_path) +static std::optional processRiveFile(const std::string& riveFilePath) { // Check if the file is empty - if (std::filesystem::is_empty(rive_file_path)) + if (std::filesystem::is_empty(riveFilePath)) { - std::cerr << "Error: Rive file is empty: " << rive_file_path + std::cerr << "Error: Rive file is empty: " << riveFilePath << std::endl; return std::nullopt; } - auto riveFile = open_file(rive_file_path.c_str()); + auto riveFile = openFile(riveFilePath.c_str()); if (!riveFile) { - std::cerr << "Error: Failed to parse Rive file: " << rive_file_path + std::cerr << "Error: Failed to parse Rive file: " << riveFilePath << std::endl; return std::nullopt; } - std::filesystem::path path(rive_file_path); - std::string file_name_without_extension = path.stem().string(); - std::vector assets = get_assets_from_file(riveFile.get()); - RiveFileData file_data; - file_data.riv_pascal_case = toPascalCase(file_name_without_extension); - file_data.riv_camel_case = toCamelCase(file_name_without_extension); - file_data.riv_snake_case = toSnakeCase(file_name_without_extension); - file_data.riv_kebab_case = toKebabCase(file_name_without_extension); - file_data.assets = assets; + std::filesystem::path path(riveFilePath); + std::string fileNameWithoutExtension = path.stem().string(); + std::vector assets = getAssetsFromFile(riveFile.get()); + RiveFileData fileData; + fileData.rivPascalCase = toPascalCase(fileNameWithoutExtension); + fileData.rivCameCase = toCamelCase(fileNameWithoutExtension); + fileData.riveSnakeCase = toSnakeCase(fileNameWithoutExtension); + fileData.rivKebabCase = toKebabCase(fileNameWithoutExtension); + fileData.assets = assets; // Process enums const auto& fileEnums = riveFile->enums(); @@ -575,7 +577,7 @@ static std::optional process_riv_file(const std::string& rive_file { enumInfo.values.push_back({value->key()}); } - file_data.enums.push_back(enumInfo); + fileData.enums.push_back(enumInfo); } } @@ -624,7 +626,7 @@ static std::optional process_riv_file(const std::string& rive_file {property.name, dataTypeToString(property.type)}); } } - file_data.view_models.push_back(viewModelInfo); + fileData.viewmodels.push_back(viewModelInfo); } } @@ -634,41 +636,41 @@ static std::optional process_riv_file(const std::string& rive_file for (int i = 0; i < artboardCount; i++) { auto artboard = riveFile->artboardAt(i); - std::string artboard_name = artboard->name(); + std::string artboardName = artboard->name(); - std::string artboard_pascal_case = toPascalCase(artboard_name); - std::string artboard_camel_case = toCamelCase(artboard_name); - std::string artboard_snake_case = toSnakeCase(artboard_name); - std::string artboard_kebab_case = toKebabCase(artboard_name); + std::string artboardPascalCase = toPascalCase(artboardName); + std::string artboardCameCase = toCamelCase(artboardName); + std::string artboardSnakeCase = toSnakeCase(artboardName); + std::string artboardKebabCase = toKebabCase(artboardName); // Ensure unique artboard variable names - artboard_camel_case = - makeUnique(artboard_camel_case, usedArtboardNames); + artboardCameCase = + makeUnique(artboardCameCase, usedArtboardNames); std::vector animations = - get_animations_from_artboard(artboard.get()); + getAnimationsFromArtboard(artboard.get()); std::vector>> - state_machines = get_state_machines_from_artboard(artboard.get()); - std::vector text_value_runs = - get_text_value_runs_from_artboard(artboard.get()); - std::vector nested_text_value_runs = - get_nested_text_value_run_paths_from_artboard(artboard.get()); - - file_data.artboards.push_back({artboard_name, - artboard_pascal_case, - artboard_camel_case, - artboard_snake_case, - artboard_kebab_case, + stateMachines = getStateMachinesFromArtboard(artboard.get()); + std::vector textValueRuns = + getTextValueRunsFromArtboard(artboard.get()); + std::vector nestedTextValueRuns = + getNestedTextValueRunPathsFromArtboard(artboard.get()); + + fileData.artboards.push_back({artboardName, + artboardPascalCase, + artboardCameCase, + artboardSnakeCase, + artboardKebabCase, animations, - state_machines, - text_value_runs, - nested_text_value_runs}); + stateMachines, + textValueRuns, + nestedTextValueRuns}); } - return file_data; + return fileData; } -static std::optional read_template_file(const std::string& path) +static std::optional readTemplateFile(const std::string& path) { std::ifstream file(path); if (!file.is_open()) @@ -685,21 +687,21 @@ int main(int argc, char* argv[]) { CLI::App app{"Rive Code Generator"}; - std::string input_path; - std::string output_file_path; - std::string template_path; + std::string inputPath; + std::string outputFilePath; + std::string templatePath; Language language = Language::Dart; // Default to Dart app.add_option("-i, --input", - input_path, + inputPath, "Path to Rive file or directory containing Rive files") ->required() ->check(CLI::ExistingFile | CLI::ExistingDirectory); - app.add_option("-o, --output", output_file_path, "Output file path") + app.add_option("-o, --output", outputFilePath, "Output file path") ->required(); - app.add_option("-t,--template", template_path, "Custom template file path"); + app.add_option("-t,--template", templatePath, "Custom template file path"); app.add_option("-l, --language", language, @@ -711,14 +713,14 @@ int main(int argc, char* argv[]) CLI11_PARSE(app, argc, argv) - std::string template_str; - if (!template_path.empty()) + std::string templateStr; + if (!templatePath.empty()) { - auto custom_template = read_template_file(template_path); - if (custom_template) + auto customTemplate = readTemplateFile(templatePath); + if (customTemplate) { - template_str = *custom_template; - std::cout << "Using custom template from: " << template_path + templateStr = *customTemplate; + std::cout << "Using custom template from: " << templatePath << std::endl; } else @@ -726,14 +728,14 @@ int main(int argc, char* argv[]) // TODO: This is probably not needed. Or can have a safety to // fallback to the language specified std::cout << "Falling back to default template." << std::endl; - template_str = default_templates::DEFAULT_DART_TEMPLATE; + templateStr = default_templates::DEFAULT_DART_TEMPLATE; } } else { if (language == Language::Dart) { - template_str = default_templates::DEFAULT_DART_TEMPLATE; + templateStr = default_templates::DEFAULT_DART_TEMPLATE; } else if (language == Language::JavaScript) { @@ -743,311 +745,307 @@ int main(int argc, char* argv[]) } } - std::vector riv_files = find_riv_files(input_path); + std::vector riveFiles = findRiveFiles(inputPath); - if (riv_files.empty()) + if (riveFiles.empty()) { std::cerr << "No .riv files found in the specified path." << std::endl; return 1; } - std::vector rive_file_data_list; - for (const auto& riv_file : riv_files) + std::vector riveFileDataList; + for (const auto& riv_file : riveFiles) { - auto result = process_riv_file(riv_file); + auto result = processRiveFile(riv_file); if (result) { - rive_file_data_list.push_back(*result); + riveFileDataList.push_back(*result); } // If result is nullopt, the error has already been printed } // Mustache template rendering - kainjow::mustache::data template_data; - std::vector riv_file_list; + kainjow::mustache::data templateData; + std::vector riveFileList; - for (size_t file_index = 0; file_index < rive_file_data_list.size(); - file_index++) + for (size_t fileIndex = 0; fileIndex < riveFileDataList.size(); + fileIndex++) { - const auto& file_data = rive_file_data_list[file_index]; - kainjow::mustache::data riv_file_data; - riv_file_data["riv_pascal_case"] = file_data.riv_pascal_case; - riv_file_data["riv_camel_case"] = file_data.riv_camel_case; - riv_file_data["riv_snake_case"] = file_data.riv_snake_case; - riv_file_data["riv_kebab_case"] = file_data.riv_kebab_case; - riv_file_data["last"] = (file_index == rive_file_data_list.size() - 1); + const auto& fileData = riveFileDataList[fileIndex]; + kainjow::mustache::data riveFileData; + riveFileData["riv_pascal_case"] = fileData.rivPascalCase; + riveFileData["riv_camel_case"] = fileData.rivCameCase; + riveFileData["riv_snake_case"] = fileData.riveSnakeCase; + riveFileData["riv_kebab_case"] = fileData.rivKebabCase; + riveFileData["last"] = (fileIndex == riveFileDataList.size() - 1); // Add enums to template data std::vector enums; - for (size_t enum_index = 0; enum_index < file_data.enums.size(); - enum_index++) + for (size_t enumIndex = 0; enumIndex < fileData.enums.size(); + enumIndex++) { - const auto& enum_info = file_data.enums[enum_index]; - kainjow::mustache::data enum_data; - enum_data["enum_name"] = enum_info.name; - enum_data["enum_camel_case"] = toCamelCase(enum_info.name); - enum_data["enum_pascal_case"] = toPascalCase(enum_info.name); - enum_data["enum_snake_case"] = toSnakeCase(enum_info.name); - enum_data["enum_kebab_case"] = toKebabCase(enum_info.name); - enum_data["last"] = (enum_index == file_data.enums.size() - 1); - - std::vector enum_values; - for (size_t value_index = 0; value_index < enum_info.values.size(); - value_index++) + const auto& enumInfo = fileData.enums[enumIndex]; + kainjow::mustache::data enumData; + enumData["enum_name"] = enumInfo.name; + enumData["enum_camel_case"] = toCamelCase(enumInfo.name); + enumData["enum_pascal_case"] = toPascalCase(enumInfo.name); + enumData["enum_snake_case"] = toSnakeCase(enumInfo.name); + enumData["enum_kebab_case"] = toKebabCase(enumInfo.name); + enumData["last"] = (enumIndex == fileData.enums.size() - 1); + + std::vector enumValues; + for (size_t valueIndex = 0; valueIndex < enumInfo.values.size(); + valueIndex++) { - const auto& value = enum_info.values[value_index]; - kainjow::mustache::data value_data; - value_data["enum_value_key"] = value.key; - value_data["enum_value_camel_case"] = toCamelCase(value.key); - value_data["enum_value_pascal_case"] = toPascalCase(value.key); - value_data["enum_value_snake_case"] = toSnakeCase(value.key); - value_data["enum_value_kebab_case"] = toKebabCase(value.key); - value_data["last"] = - (value_index == enum_info.values.size() - 1); - enum_values.push_back(value_data); + const auto& value = enumInfo.values[valueIndex]; + kainjow::mustache::data valueData; + valueData["enum_value_key"] = value.key; + valueData["enum_value_camel_case"] = toCamelCase(value.key); + valueData["enum_value_pascal_case"] = toPascalCase(value.key); + valueData["enum_value_snake_case"] = toSnakeCase(value.key); + valueData["enum_value_kebab_case"] = toKebabCase(value.key); + valueData["last"] = + (valueIndex == enumInfo.values.size() - 1); + enumValues.push_back(valueData); } - enum_data["enum_values"] = enum_values; - enums.push_back(enum_data); + enumData["enum_values"] = enumValues; + enums.push_back(enumData); } - riv_file_data["enums"] = enums; + riveFileData["enums"] = enums; // Add view models to template data - std::vector view_models; - for (size_t vm_index = 0; vm_index < file_data.view_models.size(); - vm_index++) + std::vector viewmodels; + for (size_t vmIndex = 0; vmIndex < fileData.viewmodels.size(); + vmIndex++) { - const auto& view_model = file_data.view_models[vm_index]; - kainjow::mustache::data view_model_data; - view_model_data["view_model_name"] = view_model.name; - view_model_data["view_model_camel_case"] = - toCamelCase(view_model.name); - view_model_data["view_model_pascal_case"] = - toPascalCase(view_model.name); - view_model_data["view_model_snake_case"] = - toSnakeCase(view_model.name); - view_model_data["view_model_kebab_case"] = - toKebabCase(view_model.name); - view_model_data["last"] = - (vm_index == file_data.view_models.size() - 1); + const auto& viewModel = fileData.viewmodels[vmIndex]; + kainjow::mustache::data viewmodelData; + viewmodelData["view_model_name"] = viewModel.name; + viewmodelData["view_model_camel_case"] = + toCamelCase(viewModel.name); + viewmodelData["view_model_pascal_case"] = + toPascalCase(viewModel.name); + viewmodelData["view_model_snake_case"] = + toSnakeCase(viewModel.name); + viewmodelData["view_model_kebab_case"] = + toKebabCase(viewModel.name); + viewmodelData["last"] = + (vmIndex == fileData.viewmodels.size() - 1); std::vector properties; - for (size_t prop_index = 0; - prop_index < view_model.properties.size(); - prop_index++) + for (size_t propIndex = 0; + propIndex < viewModel.properties.size(); + propIndex++) { - const auto& property = view_model.properties[prop_index]; - kainjow::mustache::data property_data; - property_data["property_name"] = property.name; - property_data["property_camel_case"] = + const auto& property = viewModel.properties[propIndex]; + kainjow::mustache::data propertyData; + propertyData["property_name"] = property.name; + propertyData["property_camel_case"] = toCamelCase(property.name); - property_data["property_pascal_case"] = + propertyData["property_pascal_case"] = toPascalCase(property.name); - property_data["property_snake_case"] = + propertyData["property_snake_case"] = toSnakeCase(property.name); - property_data["property_kebab_case"] = + propertyData["property_kebab_case"] = toKebabCase(property.name); - property_data["property_type"] = property.type; + propertyData["property_type"] = property.type; // Add property type information for the viewmodel template - kainjow::mustache::data property_type_data; - property_type_data.set("is_view_model", + kainjow::mustache::data propertyTypeData; + propertyTypeData.set("is_view_model", property.type == "viewModel"); - property_type_data.set("is_enum", property.type == "enum"); - property_type_data.set("is_string", property.type == "string"); - property_type_data.set("is_number", property.type == "number"); - property_type_data.set("is_integer", + propertyTypeData.set("is_enum", property.type == "enum"); + propertyTypeData.set("is_string", property.type == "string"); + propertyTypeData.set("is_number", property.type == "number"); + propertyTypeData.set("is_integer", property.type == "integer"); - property_type_data.set("is_boolean", + propertyTypeData.set("is_boolean", property.type == "boolean"); - property_type_data.set("is_color", property.type == "color"); - property_type_data.set("is_list", property.type == "list"); - property_type_data.set("is_trigger", + propertyTypeData.set("is_color", property.type == "color"); + propertyTypeData.set("is_list", property.type == "list"); + propertyTypeData.set("is_trigger", property.type == "trigger"); - property_type_data.set("backing_name", property.backing_name); - property_type_data.set("backing_camel_case", - toCamelCase(property.backing_name)); - property_type_data.set("backing_pascal_case", - toPascalCase(property.backing_name)); - property_type_data.set("backing_snake_case", - toSnakeCase(property.backing_name)); - property_type_data.set("backing_kebab_case", - toKebabCase(property.backing_name)); - property_data.set("property_type", property_type_data); - - property_data["last"] = - (prop_index == view_model.properties.size() - 1); - properties.push_back(property_data); + propertyTypeData.set("backing_name", property.backingName); + propertyTypeData.set("backing_camel_case", + toCamelCase(property.backingName)); + propertyTypeData.set("backing_pascal_case", + toPascalCase(property.backingName)); + propertyTypeData.set("backing_snake_case", + toSnakeCase(property.backingName)); + propertyTypeData.set("backing_kebab_case", + toKebabCase(property.backingName)); + propertyData.set("property_type", propertyTypeData); + + propertyData["last"] = + (propIndex == viewModel.properties.size() - 1); + properties.push_back(propertyData); } - view_model_data["properties"] = properties; - view_models.push_back(view_model_data); + viewmodelData["properties"] = properties; + viewmodels.push_back(viewmodelData); } - riv_file_data["view_models"] = view_models; + riveFileData["view_models"] = viewmodels; std::vector assets; - for (size_t asset_index = 0; asset_index < file_data.assets.size(); - asset_index++) + for (size_t assetIndex = 0; assetIndex < fileData.assets.size(); + assetIndex++) { - const auto& asset = file_data.assets[asset_index]; - kainjow::mustache::data asset_data; - asset_data["asset_name"] = asset.name; - asset_data["asset_camel_case"] = toCamelCase(asset.name); - asset_data["asset_pascal_case"] = toPascalCase(asset.name); - asset_data["asset_snake_case"] = toSnakeCase(asset.name); - asset_data["asset_kebab_case"] = toKebabCase(asset.name); - asset_data["asset_type"] = asset.type; - asset_data["asset_id"] = asset.asset_id; - asset_data["asset_cdn_uuid"] = asset.cdn_uuid; - asset_data["asset_cdn_base_url"] = asset.cdn_base_url; - asset_data["last"] = (asset_index == file_data.assets.size() - 1); - assets.push_back(asset_data); + const auto& asset = fileData.assets[assetIndex]; + kainjow::mustache::data assetData; + assetData["asset_name"] = asset.name; + assetData["asset_camel_case"] = toCamelCase(asset.name); + assetData["asset_pascal_case"] = toPascalCase(asset.name); + assetData["asset_snake_case"] = toSnakeCase(asset.name); + assetData["asset_kebab_case"] = toKebabCase(asset.name); + assetData["asset_type"] = asset.type; + assetData["asset_id"] = asset.assetId; + assetData["asset_cdn_uuid"] = asset.cdnUuid; + assetData["asset_cdn_base_url"] = asset.cdnBaseUrl; + assetData["last"] = (assetIndex == fileData.assets.size() - 1); + assets.push_back(assetData); } - riv_file_data["assets"] = assets; + riveFileData["assets"] = assets; - std::vector artboard_list; - for (size_t artboard_index = 0; - artboard_index < file_data.artboards.size(); - artboard_index++) + std::vector artboardList; + for (size_t artboardIndex = 0; + artboardIndex < fileData.artboards.size(); + artboardIndex++) { - const auto& artboard = file_data.artboards[artboard_index]; - kainjow::mustache::data artboard_data; - artboard_data["artboard_name"] = artboard.artboard_name; - artboard_data["artboard_pascal_case"] = - artboard.artboard_pascal_case; - artboard_data["artboard_camel_case"] = artboard.artboard_camel_case; - artboard_data["artboard_snake_case"] = artboard.artboard_snake_case; - artboard_data["artboard_kebab_case"] = artboard.artboard_kebab_case; - artboard_data["last"] = - (artboard_index == file_data.artboards.size() - 1); + const auto& artboard = fileData.artboards[artboardIndex]; + kainjow::mustache::data artboardData; + artboardData["artboard_name"] = artboard.artboardName; + artboardData["artboard_pascal_case"] = + artboard.artboardPascalCase; + artboardData["artboard_camel_case"] = artboard.artboardCameCase; + artboardData["artboard_snake_case"] = artboard.artboardSnakeCase; + artboardData["artboard_kebab_case"] = artboard.artboardKebabCase; + artboardData["last"] = + (artboardIndex == fileData.artboards.size() - 1); std::unordered_set usedAnimationNames; std::vector animations; - for (size_t anim_index = 0; anim_index < artboard.animations.size(); - anim_index++) + for (size_t animIndex = 0; animIndex < artboard.animations.size(); + animIndex++) { - const auto& animation = artboard.animations[anim_index]; - kainjow::mustache::data anim_data; - auto unique_name = makeUnique(animation, usedAnimationNames); - anim_data["animation_name"] = animation; - anim_data["animation_camel_case"] = toCamelCase(unique_name); - anim_data["animation_pascal_case"] = toPascalCase(unique_name); - anim_data["animation_snake_case"] = toSnakeCase(unique_name); - anim_data["animation_kebab_case"] = toKebabCase(unique_name); - anim_data["last"] = - (anim_index == artboard.animations.size() - 1); - animations.push_back(anim_data); + const auto& animation = artboard.animations[animIndex]; + kainjow::mustache::data animData; + auto uniqueName = makeUnique(animation, usedAnimationNames); + animData["animation_name"] = animation; + animData["animation_camel_case"] = toCamelCase(uniqueName); + animData["animation_pascal_case"] = toPascalCase(uniqueName); + animData["animation_snake_case"] = toSnakeCase(uniqueName); + animData["animation_kebab_case"] = toKebabCase(uniqueName); + animData["last"] = + (animIndex == artboard.animations.size() - 1); + animations.push_back(animData); } - artboard_data["animations"] = animations; + artboardData["animations"] = animations; std::unordered_set usedStateMachineNames; - std::vector state_machines; - for (size_t sm_index = 0; sm_index < artboard.state_machines.size(); - sm_index++) + std::vector stateMachines; + for (size_t smIndex = 0; smIndex < artboard.stateMachines.size(); + smIndex++) { - const auto& state_machine = artboard.state_machines[sm_index]; - kainjow::mustache::data state_machine_data; - auto unique_name = - makeUnique(state_machine.first, usedStateMachineNames); - state_machine_data["state_machine_name"] = state_machine.first; - state_machine_data["state_machine_camel_case"] = - toCamelCase(unique_name); - state_machine_data["state_machine_pascal_case"] = - toPascalCase(unique_name); - state_machine_data["state_machine_snake_case"] = - toSnakeCase(unique_name); - state_machine_data["state_machine_kebab_case"] = - toKebabCase(unique_name); - state_machine_data["last"] = - (sm_index == artboard.state_machines.size() - 1); + const auto& stateMachine = artboard.stateMachines[smIndex]; + kainjow::mustache::data stateMachineData; + auto uniqueName = + makeUnique(stateMachine.first, usedStateMachineNames); + stateMachineData["state_machine_name"] = stateMachine.first; + stateMachineData["state_machine_camel_case"] = + toCamelCase(uniqueName); + stateMachineData["state_machine_pascal_case"] = + toPascalCase(uniqueName); + stateMachineData["state_machine_snake_case"] = + toSnakeCase(uniqueName); + stateMachineData["state_machine_kebab_case"] = + toKebabCase(uniqueName); + stateMachineData["last"] = + (smIndex == artboard.stateMachines.size() - 1); std::unordered_set usedInputNames; std::vector inputs; - for (size_t input_index = 0; - input_index < state_machine.second.size(); - input_index++) + for (size_t inputIndex = 0; + inputIndex < stateMachine.second.size(); + inputIndex++) { - const auto& input = state_machine.second[input_index]; - kainjow::mustache::data input_data; - auto unique_name = makeUnique(input.name, usedInputNames); - input_data["input_name"] = input.name; - input_data["input_camel_case"] = toCamelCase(unique_name); - input_data["input_pascal_case"] = toPascalCase(unique_name); - input_data["input_snake_case"] = toSnakeCase(unique_name); - input_data["input_kebab_case"] = toKebabCase(unique_name); - input_data["input_type"] = input.type; - input_data["input_default_value"] = input.default_value; - input_data["last"] = - (input_index == state_machine.second.size() - 1); - inputs.push_back(input_data); + const auto& input = stateMachine.second[inputIndex]; + kainjow::mustache::data inputData; + auto uniqueName = makeUnique(input.name, usedInputNames); + inputData["input_name"] = input.name; + inputData["input_camel_case"] = toCamelCase(uniqueName); + inputData["input_pascal_case"] = toPascalCase(uniqueName); + inputData["input_snake_case"] = toSnakeCase(uniqueName); + inputData["input_kebab_case"] = toKebabCase(uniqueName); + inputData["input_type"] = input.type; + inputData["input_default_value"] = input.defaultValue; + inputData["last"] = + (inputIndex == stateMachine.second.size() - 1); + inputs.push_back(inputData); } - state_machine_data["inputs"] = inputs; + stateMachineData["inputs"] = inputs; - state_machines.push_back(state_machine_data); + stateMachines.push_back(stateMachineData); } - artboard_data["state_machines"] = state_machines; + artboardData["state_machines"] = stateMachines; std::unordered_set usedTextValueRunNames; - std::vector text_value_runs; - for (size_t tvr_index = 0; - tvr_index < artboard.text_value_runs.size(); - tvr_index++) + std::vector textValueRuns; + for (size_t tvrIndex = 0; + tvrIndex < artboard.textValueRuns.size(); + tvrIndex++) { - const auto& tvr = artboard.text_value_runs[tvr_index]; - kainjow::mustache::data tvr_data; - auto unique_name = makeUnique(tvr.name, usedTextValueRunNames); - tvr_data["text_value_run_name"] = tvr.name; - tvr_data["text_value_run_camel_case"] = - toCamelCase(unique_name); - tvr_data["text_value_run_pascal_case"] = - toPascalCase(unique_name); - tvr_data["text_value_run_snake_case"] = - toSnakeCase(unique_name); - tvr_data["text_value_run_kebab_case"] = - toKebabCase(unique_name); - tvr_data["text_value_run_default"] = tvr.default_value; - tvr_data["text_value_run_default_sanitized"] = - sanitizeString(tvr.default_value); - tvr_data["last"] = - (tvr_index == artboard.text_value_runs.size() - 1); - text_value_runs.push_back(tvr_data); + const auto& tvr = artboard.textValueRuns[tvrIndex]; + kainjow::mustache::data tvrData; + auto uniqueName = makeUnique(tvr.name, usedTextValueRunNames); + tvrData["text_value_run_name"] = tvr.name; + tvrData["text_value_run_camel_case"] = + toCamelCase(uniqueName); + tvrData["text_value_run_pascal_case"] = + toPascalCase(uniqueName); + tvrData["text_value_run_snake_case"] = + toSnakeCase(uniqueName); + tvrData["text_value_run_kebab_case"] = + toKebabCase(uniqueName); + tvrData["text_value_run_default"] = tvr.defaultValue; + tvrData["text_value_run_default_sanitized"] = + sanitizeString(tvr.defaultValue); + tvrData["last"] = + (tvrIndex == artboard.textValueRuns.size() - 1); + textValueRuns.push_back(tvrData); } - artboard_data["text_value_runs"] = text_value_runs; + artboardData["text_value_runs"] = textValueRuns; - std::vector nested_text_value_runs; - for (size_t ntvr_index = 0; - ntvr_index < artboard.nested_text_value_runs.size(); - ntvr_index++) + std::vector nestedTextValueRuns; + for (size_t ntvrIndex = 0; + ntvrIndex < artboard.nestedTextValueRuns.size(); + ntvrIndex++) { - const auto& ntvr = artboard.nested_text_value_runs[ntvr_index]; - kainjow::mustache::data ntvr_data; - ntvr_data["nested_text_value_run_name"] = ntvr.name; - ntvr_data["nested_text_value_run_path"] = ntvr.path; - ntvr_data["last"] = - (ntvr_index == artboard.nested_text_value_runs.size() - 1); - nested_text_value_runs.push_back(ntvr_data); + const auto& ntvr = artboard.nestedTextValueRuns[ntvrIndex]; + kainjow::mustache::data ntvrData; + ntvrData["nested_text_value_run_name"] = ntvr.name; + ntvrData["nested_text_value_run_path"] = ntvr.path; + ntvrData["last"] = + (ntvrIndex == artboard.nestedTextValueRuns.size() - 1); + nestedTextValueRuns.push_back(ntvrData); } - artboard_data["nested_text_value_runs"] = nested_text_value_runs; + artboardData["nested_text_value_runs"] = nestedTextValueRuns; - artboard_list.push_back(artboard_data); + artboardList.push_back(artboardData); } - riv_file_data["artboards"] = artboard_list; - // Only add the section if there are view models or enums - if (!view_models.empty() || !enums.empty()) - { - riv_file_list.push_back(riv_file_data); - } + riveFileData["artboards"] = artboardList; + riveFileList.push_back(riveFileData); } - template_data["generated_file_name"] = generated_file_name; - template_data["riv_files"] = riv_file_list; + templateData["generated_file_name"] = generatedFileName; + templateData["riv_files"] = riveFileList; - kainjow::mustache::mustache tmpl(template_str); - std::string result = tmpl.render(template_data); + kainjow::mustache::mustache tmpl(templateStr); + std::string result = tmpl.render(templateData); - std::cout << "Rive: output_file_path = " << output_file_path << std::endl; + std::cout << "Rive: output_file_path = " << outputFilePath << std::endl; - std::filesystem::path output_path(output_file_path); + std::filesystem::path output_path(outputFilePath); // If only a filename is provided, use the current directory if (output_path.is_relative() && output_path.parent_path().empty()) From 9704cce9d5ddd4df0555696db6bcb08d4ba1ed5e Mon Sep 17 00:00:00 2001 From: Seth Sandler Date: Fri, 22 Aug 2025 13:25:53 -0700 Subject: [PATCH 07/16] Align with add-data-bindings branch on main repo --- .clang-format | 83 +++ .gitignore | 1 + README.md | 143 +++-- build/build.ps1 | 2 + build/build.sh | 190 ++++-- build/premake5_code_generator.lua | 9 +- samples/db_generator.riv | Bin 0 -> 375 bytes samples/rewards.riv | Bin 0 -> 216976 bytes src/main.cpp | 892 ++++++++++++++++++-------- templates/json_template.mustache | 27 + templates/viewmodel_template.mustache | 63 ++ 11 files changed, 1044 insertions(+), 366 deletions(-) create mode 100644 .clang-format create mode 100644 build/build.ps1 create mode 100644 samples/db_generator.riv create mode 100644 samples/rewards.riv create mode 100644 templates/viewmodel_template.mustache diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..b82c169 --- /dev/null +++ b/.clang-format @@ -0,0 +1,83 @@ +BasedOnStyle: LLVM +IndentWidth: 4 +UseTab: Never +TabWidth: 4 +IndentCaseLabels: true +Language: Cpp +# Force pointers to the type for C++. +DerivePointerAlignment: false +PointerAlignment: Left +NamespaceIndentation: None +AccessModifierOffset: -4 +BreakConstructorInitializers: AfterColon +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ColumnLimit: 80 +BinPackArguments: false +BinPackParameters: false +AlignAfterOpenBracket: Align +AllowAllArgumentsOnNextLine: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortCaseLabelsOnASingleLine: false +PenaltyReturnTypeOnItsOwnLine: 9999 +PenaltyExcessCharacter: 9999 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 999 +BreakBeforeBraces: Custom +SortIncludes: false +BraceWrapping: + AfterEnum: true + AfterClass: true + AfterControlStatement: true + AfterNamespace: true + AfterFunction: true + AfterStruct: true + AfterObjCDeclaration: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + AfterCaseLabel: true + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: false + SplitEmptyNamespace: false +--- +Language: ObjC +# Force pointers to the type for C++. +DerivePointerAlignment: false +IndentWidth: 4 +IndentCaseLabels: True +PointerAlignment: Left +NamespaceIndentation: None +AccessModifierOffset: -4 +BreakConstructorInitializers: AfterColon +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ColumnLimit: 80 +BinPackArguments: false +BinPackParameters: false +AlignAfterOpenBracket: Align +BreakBeforeBraces: Custom +SortIncludes: false +PenaltyReturnTypeOnItsOwnLine: 9999 +PenaltyExcessCharacter: 9999 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 999 +BraceWrapping: + AfterEnum: true + AfterClass: true + AfterControlStatement: true + AfterNamespace: true + AfterFunction: true + AfterStruct: true + AfterObjCDeclaration: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + AfterCaseLabel: true + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: false + SplitEmptyNamespace: false diff --git a/.gitignore b/.gitignore index 5222697..f31139a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # build build/out build/macosx +build/dependencies # examples examples/generated/ diff --git a/README.md b/README.md index ee5c18c..dcdae6f 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ Run the code generator using: ``` Example: + ```sh ./build/out/lib/release/rive_code_generator -i ./examples/rive_files/animation.riv -o ./examples/generated_code.dart -l dart ``` @@ -81,6 +82,7 @@ Sample templates are available in the [`templates`](./templates) directory. The tool uses [Mustache](https://mustache.github.io/) templating. Please refer to the [Mustache documentation](https://mustache.github.io/) for syntax details. For each Rive file `{{#riv_files}}`, the following variables are available: + - `{{riv_pascal_case}}`: The Rive file name in PascalCase - `{{riv_camel_case}}`: The Rive file name in camelCase - `{{riv_snake_case}}`: The Rive file name in snake_case @@ -88,57 +90,108 @@ For each Rive file `{{#riv_files}}`, the following variables are available: - `{{assets}}`: List of assets in the Rive file - For each asset `{{#assets}}`: - - `{{asset_name}}`: Name of the asset - - `{{asset_camel_case}}`: Name of the asset in camelCase - - `{{asset_pascal_case}}`: Name of the asset in PascalCase - - `{{asset_snake_case}}`: Name of the asset in snake_case - - `{{asset_kebab_case}}`: Name of the asset in kebab-case - - `{{asset_type}}`: Type of the asset - - `{{asset_id}}`: ID of the asset - - `{{asset_cdn_uuid}}`: CDN UUID of the asset - - `{{asset_cdn_base_url}}`: CDN base URL of the asset + + - `{{asset_name}}`: Name of the asset + - `{{asset_camel_case}}`: Name of the asset in camelCase + - `{{asset_pascal_case}}`: Name of the asset in PascalCase + - `{{asset_snake_case}}`: Name of the asset in snake_case + - `{{asset_kebab_case}}`: Name of the asset in kebab-case + - `{{asset_type}}`: Type of the asset + - `{{asset_id}}`: ID of the asset + - `{{asset_cdn_uuid}}`: CDN UUID of the asset + - `{{asset_cdn_base_url}}`: CDN base URL of the asset - For each artboard `{{#artboards}}`: - - `{{artboard_name}}`: The original artboard name - - `{{artboard_pascal_case}}`: The artboard name in PascalCase - - `{{artboard_camel_case}}`: The artboard name in camelCase - - `{{artboard_snake_case}}`: The artboard name in snake_case - - `{{artboard_kebab_case}}`: The artboard name in kebab-case - - `{{animations}}`: List of animation names for the artboard - - For each animation `{{#animations}}`: - - `{{animation_name}}`: Name of the animation - - `{{animation_camel_case}}`: Name of the animation in camelCase - - `{{animation_pascal_case}}`: Name of the animation in PascalCase - - `{{animation_snake_case}}`: Name of the animation in snake_case - - `{{animation_kebab_case}}`: Name of the animation in kebab-case - - `{{state_machines}}`: List of state machines for the artboard - - For each state machine `{{#state_machines}}`: - - `{{state_machine_name}}`: Name of the state machine - - `{{state_machine_camel_case}}`: Name of the state machine in camelCase - - `{{state_machine_pascal_case}}`: Name of the state machine in PascalCase - - `{{state_machine_snake_case}}`: Name of the state machine in snake_case - - `{{state_machine_kebab_case}}`: Name of the state machine in kebab-case - - `{{inputs}}`: List of inputs for the state machine - - For each input `{{#inputs}}`: - - `{{input_name}}`: Name of the input - - `{{input_type}}`: Type of the input - - `{{input_default_value}}`: Default value of the input - - `{{text_value_runs}}`: List of text value runs for the artboard - - For each text value run `{{#text_value_runs}}`: - - `{{text_value_run_name}}`: Name of the text value run - - `{{text_value_run_camel_case}}`: Name of the text value run in camelCase - - `{{text_value_run_pascal_case}}`: Name of the text value run in PascalCase - - `{{text_value_run_snake_case}}`: Name of the text value run in snake_case - - `{{text_value_run_kebab_case}}`: Name of the text value run in kebab-case - - `{{text_value_run_default}}`: Default value of the text value run - - `{{text_value_run_default_sanitized}}`: Default value of the text value run with special characters encoded - - For each nested text value run `{{#nested_text_value_runs}}`: - - `{{nested_text_value_run_name}}`: Name of the nested text value run - - `{{nested_text_value_run_path}}`: Path of the nested text value run + + - `{{artboard_name}}`: The original artboard name + - `{{artboard_pascal_case}}`: The artboard name in PascalCase + - `{{artboard_camel_case}}`: The artboard name in camelCase + - `{{artboard_snake_case}}`: The artboard name in snake_case + - `{{artboard_kebab_case}}`: The artboard name in kebab-case + - `{{animations}}`: List of animation names for the artboard + - For each animation `{{#animations}}`: + - `{{animation_name}}`: Name of the animation + - `{{animation_camel_case}}`: Name of the animation in camelCase + - `{{animation_pascal_case}}`: Name of the animation in PascalCase + - `{{animation_snake_case}}`: Name of the animation in snake_case + - `{{animation_kebab_case}}`: Name of the animation in kebab-case + - `{{state_machines}}`: List of state machines for the artboard + - For each state machine `{{#state_machines}}`: + - `{{state_machine_name}}`: Name of the state machine + - `{{state_machine_camel_case}}`: Name of the state machine in camelCase + - `{{state_machine_pascal_case}}`: Name of the state machine in PascalCase + - `{{state_machine_snake_case}}`: Name of the state machine in snake_case + - `{{state_machine_kebab_case}}`: Name of the state machine in kebab-case + - `{{inputs}}`: List of inputs for the state machine + - For each input `{{#inputs}}`: + - `{{input_name}}`: Name of the input + - `{{input_type}}`: Type of the input + - `{{input_default_value}}`: Default value of the input + - `{{text_value_runs}}`: List of text value runs for the artboard + - For each text value run `{{#text_value_runs}}`: + - `{{text_value_run_name}}`: Name of the text value run + - `{{text_value_run_camel_case}}`: Name of the text value run in camelCase + - `{{text_value_run_pascal_case}}`: Name of the text value run in PascalCase + - `{{text_value_run_snake_case}}`: Name of the text value run in snake_case + - `{{text_value_run_kebab_case}}`: Name of the text value run in kebab-case + - `{{text_value_run_default}}`: Default value of the text value run + - `{{text_value_run_default_sanitized}}`: Default value of the text value run with special characters encoded + - For each nested text value run `{{#nested_text_value_runs}}`: + + - `{{nested_text_value_run_name}}`: Name of the nested text value run + - `{{nested_text_value_run_path}}`: Path of the nested text value run + + - `{{enums}}`: List of enums in the Rive file + - For each enum `{{#enums}}`: + + - `{{enum_name}}`: Name of the enum + - `{{enum_camel_case}}`: Name of the enum in camelCase + - `{{enum_pascal_case}}`: Name of the enum in PascalCase + - `{{enum_snake_case}}`: Name of the enum in snake_case + - `{{enum_kebab_case}}`: Name of the enum in kebab-case + - `{{enum_values}}`: List of enum values + - For each enum value `{{#enum_values}}`: + - `{{enum_value_key}}`: Key of the enum value + - `{{enum_value_camel_case}}`: Key of the enum value in camelCase + - `{{enum_value_pascal_case}}`: Key of the enum value in PascalCase + - `{{enum_value_snake_case}}`: Key of the enum value in snake_case + - `{{enum_value_kebab_case}}`: Key of the enum value in kebab-case + + - `{{view_models}}`: List of view models in the Rive file + - For each view model `{{#view_models}}`: + - `{{view_model_name}}`: Name of the view model + - `{{view_model_camel_case}}`: Name of the view model in camelCase + - `{{view_model_pascal_case}}`: Name of the view model in PascalCase + - `{{view_model_snake_case}}`: Name of the view model in snake_case + - `{{view_model_kebab_case}}`: Name of the view model in kebab-case + - `{{properties}}`: List of properties in the view model + - For each property `{{#properties}}`: + - `{{property_name}}`: Name of the property + - `{{property_camel_case}}`: Name of the property in camelCase + - `{{property_pascal_case}}`: Name of the property in PascalCase + - `{{property_snake_case}}`: Name of the property in snake_case + - `{{property_kebab_case}}`: Name of the property in kebab-case + - `{{property_type}}`: Type information for the property + - For property type `{{#property_type}}`: + - `{{is_view_model}}`: Whether the property is a view model + - `{{is_enum}}`: Whether the property is an enum + - `{{is_string}}`: Whether the property is a string + - `{{is_number}}`: Whether the property is a number + - `{{is_integer}}`: Whether the property is an integer + - `{{is_boolean}}`: Whether the property is a boolean + - `{{is_color}}`: Whether the property is a color + - `{{is_list}}`: Whether the property is a list + - `{{is_trigger}}`: Whether the property is a trigger + - `{{backing_name}}`: Backing name of the property + - `{{backing_camel_case}}`: Backing name in camelCase + - `{{backing_pascal_case}}`: Backing name in PascalCase + - `{{backing_snake_case}}`: Backing name in snake_case + - `{{backing_kebab_case}}`: Backing name in kebab-case **:warning: Warning:** For duplicated names (e.g., multiple artboards, animations, or assets with the same name), the original unique names will be preserved. However, the case-converted versions (such as camelCase, PascalCase, etc.) will have a unique identifier attached to avoid conflicts. For example: + - Original names: "MyArtboard", "MyArtboard" - Unique camelCase: "myArtboard", "myArtboardU1" diff --git a/build/build.ps1 b/build/build.ps1 new file mode 100644 index 0000000..d77a780 --- /dev/null +++ b/build/build.ps1 @@ -0,0 +1,2 @@ +..\rive-runtime\build\setup_windows_dev.ps1 +bash ".\build.sh" @args \ No newline at end of file diff --git a/build/build.sh b/build/build.sh index 9658692..fcb6962 100755 --- a/build/build.sh +++ b/build/build.sh @@ -1,59 +1,161 @@ -#!/bin/sh -set -e -echo "Building rive_code_generator" - +#!/bin/bash +set -euo pipefail -source ../rive-runtime/dependencies/config_directories.sh -# if [[ "$OSTYPE" == "darwin"* ]]; then -# # macOS-specific code -# echo "Detected macOS. Running macOS build script..." -# source ../rive-runtime/dependencies/macosx/config_directories.sh -# else -# echo "This script currently only supports macOS." -# exit 1 -# fi +echo "Building rive_code_generator" CONFIG=debug +KIND= +CLEAN=false +RUN=false +DEV=false +RUNTIME_PATH="$PWD/../rive-runtime/build" for var in "$@"; do - if [[ $var = "release" ]]; then - CONFIG=release - fi + case "$var" in + --help|-h) + echo "Usage: ./build.sh [release] [clean] [run] [dev]" + exit 0 + ;; + esac done -if [[ ! -f "$DEPENDENCIES/bin/premake5" ]]; then - pushd $DEPENDENCIES_SCRIPTS - ./get_premake5.sh +for var in "$@"; do + case "$var" in + release) CONFIG=release ;; + clean) CLEAN=true ;; + run) RUN=true ;; + dev) DEV=true ;; + esac +done + +unameOut="$(uname -s)" +case "${unameOut}" in +Linux*) machine=linux ;; +Darwin*) machine=macosx ;; +MINGW*) machine=windows ;; +*) machine="unhandled:${unameOut}" ;; +esac +OS=$machine + +if [[ $OS == "windows" ]]; then + if ! command -v msbuild.exe &>/dev/null; then + powershell "./build.ps1" $@ + exit $? + fi +fi +if [[ $OS = "linux" ]]; then + LOCAL_ARCH=$('arch') + if [[ $LOCAL_ARCH == "aarch64" ]]; then + LINUX_ARCH=arm64 + else + LINUX_ARCH=x64 + fi +fi + +# Setup PREMAKE +download_premake() { + mkdir -p dependencies/bin + pushd dependencies/bin + echo Downloading Premake5 + if [[ $OS = "macosx" ]]; then + curl https://github.com/premake/premake-core/releases/download/v5.0.0-beta3/premake-5.0.0-beta3-macosx.tar.gz -L -o premake_macosx.tar.gz + # Export premake5 into bin + tar -xvf premake_macosx.tar.gz 2>/dev/null + # the zip for beta3 does not have x + chmod +x premake5 + # Delete downloaded archive + rm premake_macosx.tar.gz + elif [[ $OS = "windows" ]]; then + curl https://github.com/premake/premake-core/releases/download/v5.0.0-beta3/premake-5.0.0-beta3-windows.zip -L -o premake_windows.zip + unzip premake_windows.zip + rm premake_windows.zip + elif [[ $OS = "linux" ]]; then + pushd .. + git clone --depth 1 --branch v5.0.0-beta2 https://github.com/premake/premake-core.git + pushd premake-core + if [[ $LINUX_ARCH == "arm64" ]]; then + PREMAKE_MAKE_ARCH=ARM + else + PREMAKE_MAKE_ARCH=x86 + fi + make -f Bootstrap.mak linux PLATFORM=$PREMAKE_MAKE_ARCH + cp bin/release/* ../bin + popd + popd + # curl https://github.com/premake/premake-core/releases/download/v5.0.0-beta2/premake-5.0.0-beta2-linux.tar.gz -L -o premake_linux.tar.gz + # # Export premake5 into bin + # tar -xvf premake_linux.tar.gz 2>/dev/null + # # Delete downloaded archive + # rm premake_linux.tar.gz + fi popd +} +if [[ ! -f "dependencies/bin/premake5" ]]; then + download_premake fi -echo "Using premake5 from $DEPENDENCIES/bin/premake5" -export PREMAKE=$DEPENDENCIES/bin/premake5 -$PREMAKE --version +if [[ ! -d "dependencies/export-compile-commands" ]]; then + pushd dependencies + git clone https://github.com/tarruda/premake-export-compile-commands export-compile-commands + popd +fi -export PREMAKE_PATH="$PWD/../rive-runtime/build":$PREMAKE_PATH +export PREMAKE=$PWD/dependencies/bin/premake5 -OUT=out/lib/$CONFIG -$PREMAKE --scripts=../build --file=./premake5_code_generator.lua --config=$CONFIG --out=$OUT gmake2 +case "$OS" in + macosx|linux) TARGET=gmake2 ;; + windows) TARGET=vs2022; KIND=--shared; EXTRA_OUT=_shared ;; +esac -for var in "$@"; do - if [[ $var = "clean" ]]; then - make -C $OUT clean - fi -done +# export PREMAKE_PATH="$RUNTIME_PATH":$PREMAKE_PATH -make -C $OUT -j$(($(sysctl -n hw.physicalcpu) + 1)) +if [[ $CLEAN == true ]]; then + echo 'Cleaning...' + rm -fR out +fi -for var in "$@"; do - if [[ $var = "run" ]]; then - $OUT/rive_code_generator --help - fi - if [[ $var = "dev" ]]; then - # $OUT/rive_code_generator -i ../samples/signage_v03.riv -o out/rive_generated.dart -t ../templates/dart_template.mustache - # $OUT/rive_code_generator -i ../samples/rating.riv -o out/rive_generated.dart -t ../templates/dart_template.mustache - # $OUT/rive_code_generator -i ../samples/ -o out/generated/rive_generated.dart -t ../templates/dart_template.mustache - $OUT/rive_code_generator -i ../samples/ -o out/generated/rive.json -t ../templates/json_template.mustache - # $OUT/rive_code_generator -i ../samples/nested_test.riv -o out/rive_generated.dart --help - # $OUT/rive_code_generator -i ../samples/ -o out/rive_generated.dart - fi -done \ No newline at end of file +OUT="out/lib/$CONFIG" +OUT="${OUT%/}" # Remove trailing slash if it exists +$PREMAKE --scripts=../rive-runtime/build/ --file=premake5_code_generator.lua $TARGET --config=$CONFIG --out=$OUT + +if [ "$OS" = "macosx" ]; then + NUM_CORES=$(($(sysctl -n hw.physicalcpu) + 1)) +elif [ "$OS" = "linux" ]; then + NUM_CORES=$(nproc) +elif [ "$OS" = "windows" ]; then + NUM_CORES=$NUMBER_OF_PROCESSORS +else + echo "Unsupported OS: $OS" + exit 1 +fi + +if [[ $OS = "windows" ]]; then + pushd "$OUT" + msbuild.exe rive.sln -m:$NUM_CORES + popd +else + make -C $OUT -j$NUM_CORES +fi + +EXECUTABLE_NAME=rive_code_generator +if [[ $OS = "windows" ]]; then + EXECUTABLE="$EXECUTABLE_NAME.exe" +else + EXECUTABLE="$EXECUTABLE_NAME" +fi + +echo -e "\033[0;32m\nBuild complete: $OUT/$EXECUTABLE\033[0m" + +if [[ $RUN == true ]]; then + "$OUT/rive_code_generator" --help +fi +if [[ $DEV == true ]]; then + pwd + # "$OUT/$EXECUTABLE" -i ../samples/signage_v03.riv -o out/rive_generated.dart -t ../templates/dart_template.mustache + # "$OUT/$EXECUTABLE" -i ../samples/rating.riv -o out/rive_generated.dart -t ../templates/dart_template.mustache + # "$OUT/$EXECUTABLE" -i ../samples/ -o out/generated/rive_generated.dart -t ../templates/dart_template.mustache + "$OUT/$EXECUTABLE" -i ../samples/ -o out/generated/rive_viewmodel.dart -t ../templates/viewmodel_template.mustache + # "$OUT/$EXECUTABLE" -i ../samples/ -o out/generated/rive.json -t ../templates/json_template.mustache + # "$OUT/$EXECUTABLE" -i ../samples/nested_test.riv -o out/rive_generated.dart --help + # "$OUT/$EXECUTABLE" -i ../samples/ -o out/rive_generated.dart +fi \ No newline at end of file diff --git a/build/premake5_code_generator.lua b/build/premake5_code_generator.lua index 956056e..ca26c8a 100644 --- a/build/premake5_code_generator.lua +++ b/build/premake5_code_generator.lua @@ -13,17 +13,14 @@ do includedirs({ '../include', rive .. '/include', - -- miniaudio, - -- yoga, '../external/', }) - -- links({ 'rive', 'rive_harfbuzz', 'rive_sheenbidi', 'rive_yoga' }) links({ 'rive' }) files({ '../src/**.cpp', - rive .. '/utils/**.cpp', + rive .. '/utils/no_op_factory.cpp', }) -- buildoptions({ '-Wall', '-fno-exceptions', '-fno-rtti' }) @@ -36,4 +33,8 @@ do -- -- 'CoreText.framework', -- }) -- end + + filter "action:vs*" + buildoptions { "/EHsc" } + filter {} end \ No newline at end of file diff --git a/samples/db_generator.riv b/samples/db_generator.riv new file mode 100644 index 0000000000000000000000000000000000000000..c49f1412c48c31e12ff3165c445d7fcb17dbf496 GIT binary patch literal 375 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