From 3dd2a89f52d1e5fea0ae9756fcd35a49a66c6bf9 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Fri, 3 Jan 2025 23:13:30 +0400 Subject: [PATCH 001/364] feat: add draft (untested!) device for emscripten exception support --- src/dev_emscripten.erl | 56 ++++++++++++++++++++++++++++++++++++++++++ src/hb_beamr.erl | 16 ++++++------ src/hb_opts.erl | 1 + 3 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 src/dev_emscripten.erl diff --git a/src/dev_emscripten.erl b/src/dev_emscripten.erl new file mode 100644 index 000000000..3658a56ab --- /dev/null +++ b/src/dev_emscripten.erl @@ -0,0 +1,56 @@ +%%% @doc Implements the legacy/classic exception handling pattern of the +%%% Emscripten WASM execution environment. +%%% +%%% Emscripten has many subtly different ways of handling exceptions. +%%% For the avoidance of doubt, the pattern in question works as follows: +%%% +%%% ``` +%%% function invoke_vjj(index, a1, a2) { +%%% var sp = stackSave(); +%%% try { +%%% getWasmTableEntry(Number(index))(a1, a2); +%%% } catch (e) { +%%% stackRestore(sp); +%%% if (e !== e + 0) throw e; +%%% _setThrew(1, 0); +%%% } +%%% } +%%% ''' +%%% +%%% Where '_vjj' represents the type spec of the function. +-module(dev_emscripten). +-export([info/1, init/1]). + +info(_) -> + #{ + handler => fun router/4 + }. + +%% @doc On-boot, initialize the virtual file system with: +%% - Empty stdio files +init(M1, _M2, Opts) -> + MsgWithLib = + hb_converge:set( + M1, + #{ + <<"WASM/stdlib/_emscripten_system">> => + #{ device => <<"Emscripten/1.0">>} + }, + Opts + ), + {ok, MsgWithLib}. + +router(<<"invoke_v", _/binary>>, Msg1, Msg2, Opts) -> + State = hb_converge:get(<<"State">>, Msg1, #{ hashpath => ignore }), + WASM = dev_wasm:instance(State, Msg2, Opts), + [Index|Args] = hb_converge:get(args, Msg2, #{ hashpath => ignore }), + {ok, SP, _} = hb_beamr:call(WASM, <<"emscripten_stack_get_current">>, []), + ImportResolver = hb_private:get(<<"WASM/Import-Resolver">>, State, Opts), + try + hb_beamr:call(WASM, <<"_indirect:", Index/binary>>, Args, ImportResolver, State, Opts) + catch + _:Error -> + hb_beamr:call(WASM, <<"_emscripten_stack_restore">>, [SP]), + hb_beamr:call(WASM, <<"setThrew">>, [1, 0]), + {error, Error} + end. \ No newline at end of file diff --git a/src/hb_beamr.erl b/src/hb_beamr.erl index 9be12ccc3..5178f1daf 100644 --- a/src/hb_beamr.erl +++ b/src/hb_beamr.erl @@ -129,16 +129,16 @@ stop(WASM) when is_pid(WASM) -> ok. %% @doc Call a function in the WASM executor (see moduledoc for more details). -call(Port, FunctionName, Args) -> - {ok, Res, _} = call(Port, FunctionName, Args, fun stub/3), +call(PID, FunctionName, Args) -> + {ok, Res, _} = call(PID, FunctionName, Args, fun stub/3), {ok, Res}. -call(Port, FunctionName, Args, ImportFun) -> - call(Port, FunctionName, Args, ImportFun, #{}). -call(Port, FunctionName, Args, ImportFun, StateMsg) -> - call(Port, FunctionName, Args, ImportFun, StateMsg, #{}). -call(Port, FunctionName, Args, ImportFun, StateMsg, Opts) +call(PID, FunctionName, Args, ImportFun) -> + call(PID, FunctionName, Args, ImportFun, #{}). +call(PID, FunctionName, Args, ImportFun, StateMsg) -> + call(PID, FunctionName, Args, ImportFun, StateMsg, #{}). +call(PID, FunctionName, Args, ImportFun, StateMsg, Opts) when is_binary(FunctionName) -> - call(Port, binary_to_list(FunctionName), Args, ImportFun, StateMsg, Opts); + call(PID, binary_to_list(FunctionName), Args, ImportFun, StateMsg, Opts); call(WASM, FunctionName, Args, ImportFun, StateMsg, Opts) when is_pid(WASM) andalso is_list(FunctionName) diff --git a/src/hb_opts.erl b/src/hb_opts.erl index 6299dfc5b..2b49edf17 100644 --- a/src/hb_opts.erl +++ b/src/hb_opts.erl @@ -57,6 +57,7 @@ config() -> <<"WASM-64/1.0">> => dev_wasm, <<"WASI/1.0">> => dev_wasi, <<"JSON-Iface/1.0">> => dev_json_iface, + <<"Emscripten/1.0">> => dev_emscripten, <<"Cron">> => dev_cron, <<"Deduplicate">> => dev_dedup, <<"PODA">> => dev_poda, From 44e405b15d4e32a8050e69c3836705678c4942e8 Mon Sep 17 00:00:00 2001 From: Peter Farber Date: Fri, 3 Jan 2025 15:22:12 -0500 Subject: [PATCH 002/364] chore(aot): added c code for invoke_export_function --- Makefile | 7 +- c_src/hb_beamr.c | 202 ++++++++++++++++++++++++++++++++++++++++- rebar.config | 3 +- src/dev_emscripten.erl | 2 +- test/core.aot | Bin 0 -> 1491088 bytes 5 files changed, 208 insertions(+), 6 deletions(-) create mode 100644 test/core.aot diff --git a/Makefile b/Makefile index 20cfdea6b..f8c9a6cda 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ compile: rebar3 compile -WAMR_VERSION = 2.1.2 +WAMR_VERSION = 2.2.0 WAMR_DIR = _build/wamr # commented out to remove NFR blocking commits @@ -51,6 +51,7 @@ $(WAMR_DIR): --single-branch $(WAMR_DIR)/lib/libvmlib.a: $(WAMR_DIR) + sed -i '742a tbl_inst->is_table64 = 1;' ./_build/wamr/core/iwasm/aot/aot_runtime.c; \ cmake \ $(WAMR_FLAGS) \ -S $(WAMR_DIR) \ @@ -62,11 +63,11 @@ $(WAMR_DIR)/lib/libvmlib.a: $(WAMR_DIR) -DWAMR_DISABLE_HW_BOUND_CHECK=1 \ -DWAMR_BUILD_EXCE_HANDLING=1 \ -DWAMR_BUILD_SHARED_MEMORY=0 \ - -DWAMR_BUILD_AOT=0 \ + -DWAMR_BUILD_AOT=1 \ -DWAMR_BUILD_FAST_INTERP=0 \ -DWAMR_BUILD_INTERP=1 \ -DWAMR_BUILD_JIT=0 - make -C $(WAMR_DIR)/lib + make -C $(WAMR_DIR)/lib -j8 # $(GITHOOKS_DIR)/_/setup: # @sh ./$(GITHOOKS_DIR)/_/install.sh diff --git a/c_src/hb_beamr.c b/c_src/hb_beamr.c index ca1b94a9a..983206742 100644 --- a/c_src/hb_beamr.c +++ b/c_src/hb_beamr.c @@ -33,6 +33,43 @@ typedef struct { time_t start_time; } Proc; + +// Structure for a common WASM module instance +typedef struct WASMModuleInstanceCommon { + uint32_t module_type; // Type of the module + uint8_t module_inst_data[1]; // Module instance data +} WASMModuleInstanceCommon; + +// Structure to store host information about the WASM instance +struct wasm_host_info { + void *info; // Pointer to host info + void (*finalizer)(void *); // Finalizer function for the host info +}; + +// Structure representing a WASM function (extended with host-specific details) +struct wasm_func_t { + wasm_store_t *store; // WASM store + wasm_name_t *module_name; // Module name for the function + wasm_name_t *name; // Function name + uint16_t kind; // Function kind (e.g., export) + struct wasm_host_info host_info; // Host-specific information + wasm_functype_t *type; // Function type (parameters and results) + uint16_t param_count; // Number of parameters + uint16_t result_count; // Number of results + bool with_env; // Whether the function has an environment + union { + wasm_func_callback_t cb; // Callback function + struct callback_ext { + void *env; // Environment for the callback + wasm_func_callback_with_env_t cb; // Callback function with environment + void (*finalizer)(void *); // Finalizer for the callback + } cb_env; + } u; + uint16_t func_idx_rt; // Function index in the runtime + WASMModuleInstanceCommon *inst_comm_rt; // Module instance data + WASMFunctionInstanceCommon *func_comm_rt; // Function instance data +}; + typedef struct { char* module_name; char* field_name; @@ -318,10 +355,173 @@ void send_error(Proc* proc, const char* message_fmt, ...) { va_end(args); } + +// Checks if the given export name corresponds to the indirect function table +static bool is_indirect_function_table(const char *export_name) { + return strcmp(export_name, "__indirect_function_table") == 0; +} + +// Prepares the function arguments by removing the first argument (function index) +static void prepare_function_arguments(const wasm_val_vec_t *input_args, wasm_val_vec_t *prepared_args) { + // If there are no arguments or only one argument (function index), no preparation is needed + if (input_args->size <= 1) { + DRV_DEBUG("Not enough arguments to create new wasm_val_vec_t"); + return; + } + + // Allocate memory for the prepared arguments + wasm_val_t* prepared_data = malloc(sizeof(wasm_val_t) * (input_args->size - 1)); + + // Copy the arguments starting from the second element (skip function index) + for (size_t i = 1; i < input_args->size; ++i) { + prepared_data[i - 1] = input_args->data[i]; + } + + // Create a new wasm_val_vec_t with the prepared arguments + wasm_val_vec_new(prepared_args, input_args->size - 1, prepared_data); + DRV_DEBUG("Prepared %zu arguments for function call", prepared_args->size); +} + + + +// Calls the specified WASM function using an indirect call +static int handle_wasm_function_call(wasm_exec_env_t exec_env, int function_index, uint64_t argc, uint64_t* argv) { + DRV_DEBUG("Calling WASM function with indirect call..."); + + // Attempt to call the function and check for any exceptions + if (!wasm_runtime_call_indirect(exec_env, function_index, argc, argv)) { + if (wasm_runtime_get_exception(exec_env)) { + DRV_DEBUG("%s", wasm_runtime_get_exception(exec_env)); + } + DRV_DEBUG("WASM function call failed"); + return -1; + } + + return 0; +} + +// Main function to invoke an exported function from the WASM instance +static int invoke_exported_function(Proc* proc, const char *field_name, const wasm_val_vec_t* input_args, wasm_val_vec_t* output_results) { + DRV_DEBUG("================================================="); + DRV_DEBUG("Starting function invocation for field: %s", field_name); + DRV_DEBUG("================================================="); + + int result = 0; + + // Check if the field name is "invoke"; if not, exit early + if (strncmp(field_name, "invoke", 6) != 0) { + DRV_DEBUG("Field name '%s' is not an invoke operation", field_name); + return; + } + + // Retrieve exported functions from the WASM instance and module + wasm_extern_vec_t exported_externs; + wasm_instance_exports(proc->instance, &exported_externs); + + wasm_exporttype_vec_t export_types; + wasm_module_exports(proc->module, &export_types); + + DRV_DEBUG("Retrieved %zu exported externs from the instance.", exported_externs.size); + DRV_DEBUG("Retrieved %zu export types from the module.", export_types.size); + + // Iterate over the exported types and search for the indirect function table + for (int i = 0; i < export_types.size; i++) { + const wasm_exporttype_t* export = export_types.data[i]; + const wasm_name_t* export_name = wasm_exporttype_name(export); + + // Check if the export is the indirect function table + if (is_indirect_function_table(export_name->data)) { + DRV_DEBUG("-------------------------------------------------"); + DRV_DEBUG("Found indirect function table: %.*s", export_name->size, export_name->data); + DRV_DEBUG("-------------------------------------------------"); + + // Retrieve the function table and its limits + const wasm_externtype_t* export_type = wasm_exporttype_type(export); + const wasm_tabletype_t* table_type = wasm_externtype_as_tabletype_const(export_type); + const wasm_limits_t* table_limits = wasm_tabletype_limits(table_type); + DRV_DEBUG("Table limits: max=%d", table_limits->max); + + // Retrieve the indirect function table + const wasm_table_t* indirect_function_table = wasm_extern_as_table(exported_externs.data[i]); + + // Extract the function index from the input arguments + int function_index = input_args->data[0].of.i32; + DRV_DEBUG("Function index retrieved from input_args: %d", function_index); + + // Get the function reference from the table and cast it to a function + wasm_ref_t* function_ref = wasm_table_get(indirect_function_table, function_index); + const wasm_func_t* func = wasm_ref_as_func(function_ref); + DRV_DEBUG("Function pointer: %p", func); + + // Retrieve the function type and log its parameters and results + const wasm_functype_t* function_type = wasm_func_type(func); + if (!function_type) { + DRV_DEBUG("Failed to retrieve function type for function at index %d", function_index); + continue; + } + + // Log the function's parameter types + const wasm_valtype_vec_t* param_types = wasm_functype_params(function_type); + DRV_DEBUG("Function at index %d has %zu parameters", function_index, param_types->size); + for (size_t j = 0; j < param_types->size; ++j) { + const wasm_valtype_t* param_type = param_types->data[j]; + wasm_valkind_t param_kind = wasm_valtype_kind(param_type); + DRV_DEBUG("Param %zu: %s", j, get_wasm_type_name(param_kind)); + } + + // Log the function's result types + const wasm_valtype_vec_t* result_types = wasm_functype_results(function_type); + DRV_DEBUG("Function at index %d has %zu results", function_index, result_types->size); + for (size_t k = 0; k < result_types->size; ++k) { + const wasm_valtype_t* result_type = result_types->data[k]; + wasm_valkind_t result_kind = wasm_valtype_kind(result_type); + DRV_DEBUG("Result %zu: %s", k, get_wasm_type_name(result_kind)); + } + + // Prepare the arguments for the function call + wasm_val_vec_t prepared_args; + prepare_function_arguments(input_args, &prepared_args); + + // Get the execution environment for the function + wasm_exec_env_t exec_env = wasm_runtime_get_exec_env_singleton(func->inst_comm_rt); + if (!exec_env) { + DRV_DEBUG("Failed to get execution environment"); + } + + + uint64_t argc = prepared_args.size; + uint64_t* argv = malloc(sizeof(uint64_t) * argc); + + // Convert prepared arguments to an array of 64-bit integers + for (uint64_t i = 0; i < argc; ++i) { + argv[i] = prepared_args.data[i].of.i64; + } + + result = handle_wasm_function_call(exec_env, function_index, argc, argv); + + + // Free allocated memory + free(argv); + free(prepared_args.data); + DRV_DEBUG("Function call completed successfully"); + } + } + + + DRV_DEBUG("================================================="); + DRV_DEBUG("Invoke function completed successfully for field: %s", field_name); + DRV_DEBUG("=================================================\n"); + return result; +} + + wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_val_vec_t* results) { DRV_DEBUG("generic_import_handler called"); ImportHook* import_hook = (ImportHook*)env; Proc* proc = import_hook->proc; + + // invoke_exported_function(proc, import_hook->field_name, args, results); // TODO: Add this line when using AOT + DRV_DEBUG("Proc: %p. Args size: %d", proc, args->size); DRV_DEBUG("Import name: %s.%s [%s]", import_hook->module_name, import_hook->field_name, import_hook->signature); @@ -419,7 +619,7 @@ static void async_init(void* raw) { wasm_runtime_set_log_level(WASM_LOG_LEVEL_ERROR); #endif - wasm_runtime_set_default_running_mode(Mode_Interp); + wasm_runtime_set_default_running_mode(Mode_Interp); // TODO: Remove this line when using AOT proc->engine = wasm_engine_new(); DRV_DEBUG("Created engine"); diff --git a/rebar.config b/rebar.config index dbc8f3a32..9661c9447 100644 --- a/rebar.config +++ b/rebar.config @@ -14,7 +14,8 @@ {post_hooks, [ {"(linux|darwin|solaris)", clean, "rm -rf \"${REBAR_ROOT_DIR}/_build\" \"${REBAR_ROOT_DIR}/priv\""}, - {"(linux|darwin|solaris)", compile, "echo 'Post-compile hooks executed'"} + {"(linux|darwin|solaris)", compile, "echo 'Post-compile hooks executed'"}, + { compile, "rm -f c_src/*.o c_src/*.d"} % remove object files after compilation ]}. {provider_hooks, [ diff --git a/src/dev_emscripten.erl b/src/dev_emscripten.erl index 3658a56ab..f970b2821 100644 --- a/src/dev_emscripten.erl +++ b/src/dev_emscripten.erl @@ -19,7 +19,7 @@ %%% %%% Where '_vjj' represents the type spec of the function. -module(dev_emscripten). --export([info/1, init/1]). +-export([info/1, init/3]). info(_) -> #{ diff --git a/test/core.aot b/test/core.aot new file mode 100644 index 0000000000000000000000000000000000000000..a270a1a73406ac0d1d70b19e8a04c591bb2114ec GIT binary patch literal 1491088 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

YHR)AU8elIWquXr=StWr-M%?m9}^e{1yOK%5C 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

KOR-S~ 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�}qzp-!#KxXov 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 uFthSYYxa(B&kV+J*hS0E@ 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 Un+)Uk{N8W~6 zV{#PzqhFB4AzEQ3;8IgNY{I!zoKs6A=}M36X&7Wv#$`A=-q20qldS?$K0XLx15*?C zUzaqmvvgK@pTfAOsw=A~eRIGyku_XB(*iKS66WQ!n)tAp_>ux$lefm7m@Rxs@wiFj z*X%sX=7mXq@Gd0`o`&_EnO>p9BsVFTN;QvMIoOoZdo81hCd7>%HtdHvw~u?}QyfCz z!QP{yz_{J|q0o#}@s>b+u$g-pK$*+Iy~A^GXd^;cCpyvrpeU2O)z2Ck{>nrhVhTT6 zU05|PdN!B%Mzjy{MSn)l#EGbFH7*FZRdA0nd;AzR>8pa0cs^sACRK3;h2+~`pe`pxf~=*khNy>GBY5K_A1zqb!fl<085qOO zLG%D435N(yH>PHnlIxdtnCEha-D;X)OZuOzeW7ep_VE7_vm)-Ii-G{Y7gb%v4k zG!!j|rOhuEV(GiV3bRp&*&R!G=fynUULDZpeK$+5k0W6#haG6%VFyinl3|BPj>670 z%t%Y!3B|jigu5x>wrN6$rXGm}R@MorccCI1i>0wwIf!BLJ@bW}P3BKCrXUtkgZFf1HV zh=s*qd~aB|r*d~J?Ds`sVdA9hZ!F85q}d&pPk%-ib-qznJ|z2ixj*E<`9TjATA)Z? zD-5?i4qG*8?L3=x&OIMgxC8Dfdj3`F=Qh80g0cc+JiP}pn!K0yf{fcZJjwG;08KyM zDWDG2Y4OfgjykSj4jf)C&>=hID-Eks!~(;FHT*<3q=EJ}XpWFlIwCvVkU|))oQ|ut z7n$7nX^`{cb4Qksb&Q}W5^{R@4Hivy0J?$MS~e7-;euw{UHphiXg~Y^adsu}Q58u) z0|CN0iAD^F5-@542n10RgPMT^-oOl?f}*0JDB^mdhJd>)*W}-+z!`@J^_L3h9W_%T(luj=aR>guZ+-HR-3b&=JGfg8M` zgW%t-7@my0_TKUgu^oCNPx7xOq00{P%{GuHfx8ahPGH(eICh(C=-R8G4Rj(5A}G&g z)75C5`r-qr@Rp8(o#Jq48@ifs=sH?2u*SegN0rDuuk){9T~~K;?|GF!Q|L115t})m z0+36FHLABIwy{DC)4lCU@`jBi0@fOaiYs6>37db4*EP3+eJ5uSbWPA)auPP>i;Dam zHr3ZPxoC{~Yyua&rEi@@HfbI68Tz8=n7Q~WY_e~f$?=aWZ+Y@iEfP(w{aA2C$C55} ztF2>c3L$$4=SE?feYsFb7{nm8E2$U+%v zD0KQ3ga*?-S7Xcn&`+fY_D6t-R$=y+*0~v)TSQ)J>}4PMoBZS7uC;9MtWekGo+FVgXElVbjUVY$GXjnT6QzI(eBDG;m~? z2F2sGVyRo^aF#jzkIMAMm)RUOJ9(J}e_ZAU?Co2%khb5gXL5X*d^YFgWv;mK59@gs z%bfm4W#XWT+n#Hz-z#(EAD4Ns3(7nlWzytZg{;+*C68*{BwuOD+wL$Z57eocTr4$c z{BtDro6D_L$VHkCb35B~T#xCa(p}z?r6AfL#!@aG_k!owNdqI@JO+;{y*7v?LsX3j z=1#fCyya(0saP=M^(>yT#M!UV5(q2YmLdlx%4HOBqmB4C+VL^hrp^MnDiIPC-HRjv z^D`s#S@OV0Q4{oZq_}`(Hs)#~GkaH403)2~;B#Xs3&YwY3PbEq8BPKidAA)|7lv1Z zRU#ztmUd4k7i2by$&6JFR87!8;^OMnT@o*_{sKnWTIwyKT(lHU@m&J>ww1l#+y{5< zn6qi4>KW7vop<&D{5T6G_eh7p!uNWHBI;;1)JsG#8>zcQ0-}_wwSi)~yOU~L-*<5> z>;M*y;}rcep=;l?$(JT5Gh262ZskM8j_|`jPbp6mI+nsZ4C_38*3#OB&te8`AqQw0 zU?H7rkZ|HCYlq`uA4n~065CM6qmsMoSU}Gr!jc2<&$COfB#d5iAccJre!!f)DqDTY z%4=O!qKeZFUbYsnG@17|U2-@jG0EBsTf?5?tVH=j>=Q795v*oU7V*aH$1~xF6%<}K*8&NbD7#qky}VI6-03@ux6Gm`-8drz2z?mJ;{n5nFCVB zWPB5Q)?3=KJ@N=Ggei-Ag-0+6h6R#hox!h~^u{{@+jeEypAcgG-QXv9xEKbZre(|R z3Tai2z`{m*820*5)jc;>#Sg`0KXyVUpCiO(;E%!wTG`BX1ngyu%(fxn`kuP!X9&78 zr+!(Yos5ex-(bW+se(mLbK9~!MQrEavEbn4P>r~Hwm6Dq9hzcKrW>9%zT1wx)YjYw zFdf92`xn0oFJ&50lkib|Ey|jaq1O&zjl1Ij8W`xE@$2hcw}2v$4MjQ|CBU17=-j-8&n5dI1jxV+ilhO7fAUoq|Ew@iry%pv3aB%$JmaQcd{YciO;OFB zq4h*fL5|vhj|@;v@u>vjcsUmKamL-BcbTX`9E|ic6$0QXXxZ6>mDaf7aJ;I*4Lm)>z*b(v0x)^1u1z(6QYlWC{p>vpSaBOwrAvR7@Z^05%a}chq3+k7cI)__i-Gr!oAJ;3kx8 z)7dV~pl~10B`s(tSRa~)+IY)mBNwYL8b^jx zIVNvkmYQ-I^V5g?DTeWVm3-l{!)%F!<&L`dr>w!96k~=mWTr5d8o4H6m5cy-vRHOE z>=0|Uh_c!x;+a?(&E}ygrK8$22wWxho7E@pm-{h1{XxHcA|0i9FH#wUGOC#x56{#} zk?Eo!IB79I55kG<@0Di$acSqWv^OqfY1)5QF4l(clsY(XBvw~(7fgC(O5W=Qg{4( zj$_8#2(ib{U!B(CEdmQ_OvX>{M%YF*vjzX)qP?cklJ)WZ{D4G1**JRgK{OX*B6Ce< zo9p|2#9-P zhp9cS{tR(PRWP2N1H#&ALtNd;o0M{ zOS!W03mcXWOSgK<@5VqW%L_G$O=Zwl6>_fpzgo)-?Nypy6a^ZzFF6M7;S{Bulx2HQ zLzeC1LxmP4z4ba98xD#*ZAtBjWlL(WT_JZUmh?fP)E#op&D$>Gn#BaKY6wH3=i?)N_)g(emhrLlX{l@e>r> zv^a@fHwW_Jiew!dd8HOjZ6oJ8HnPd$4oy)cDjV5d^Bu{x%8{I@ZpCUHG@oNDzX(AV zTX`Eu1WYTzD{Kpm1aLQpsberF*Q-komLN6huW3`%l&+^;|FSc7)eItp}*5O z5|0pjaF2t{#Vcn#9`^rJxMhP$t35#K&Q^EDJ(Lf<>}v;W&S~(hOnrMdNJNZdYisPnFgWi=5pnMtIf1f zpuR9SRU@=5+4~Zc5+~qgF?Huk`p6u}Ou$T3r=YOAK8Q`mTM2QlNz3_7xhDM$jqD7| z+>JjBNl=|n<^&=5+Jxh_<4{5h&$R z_w1IGYng0fpVm^B>VaDCcu_toEPOl#Y{xNh**cyEondQVJQmK)<IrbPpI>9xAHQ2N)t9~N({-H&x4Ih=J3cAjw< z=93;=B+k)yJubtppvWUFanv0avXzT5Vey7NU8-d&cHa3o+gX#?mC9PyXRg5qHXFt~ zSSGq7dyL4RGG)Rg*CBcHZ<@qw9!|}oUC@bk0j}fGmL zKV$-F5Bw+9vgi#sbAgk}T!~;=O1Tc>^i7tBZ_(>O6WUU%$`}uu*zBhiYi%mN;xgzb z!k!uUiVRciPH7xp2zw9fiL~iUM~Vo<$w||E%1L4diKCzd&5d}e97|>RZVx5!f^;gg z^puI1zWq%Y_IBrus;Dt}kt=V7F z2j-ItjjR<){KS~S4ba8t)OLniJ)j6-{d&;hujYELl9af0pVs{5Av<>7UekBPjymdRoyLCE5SBZWyOZeo@_j|xj)M{6+ zDS;36`dmBsJCIWvfK`+>-jX*! zKC8OYngd7;qDkKJ)zUw?$NHw4w(El5g3f92{wHtT56k4Zop^vfjChdD}lX{GPRHFYbqqj>GRX!Q5ns;q$yLrC{eGt}#UJ-dIfpzYTT>aroY+g%^oiT(j0Zf%*U6w0Wm+4|Zwx$CjtFe_T zCQG0wjtkLkv3h%^R4{I&wddAagZxIjHr^(?5=&81 zX*JZ!ILmLgzHrCcw?HtfxX_vlC>U-Vw<{@i^v`1|htarl_#!HAx4v(ysw+W@Y zY&)BzVYD%adDJn+%nW|PQO|1b5aFF<=)foBTT`wVYgZJmlRt{K@Bka8TnPXVaHL=J z;5K|vJa|u}A&v*n#_>Q#9WbJMJP#g61mOWJ^qxE@N;m%xiqMU;t%>jjP>f*1oo8VI z0M`pH2$&rd4+Iv*fC)ocI9+w*4M%6%CL=7yFA;?a!#T*kgqAe&CLr_&J^sciQ!F^5 zfj2q>vn+g|x?Aui)F+F5Jlk9HAFX1RTl1*bWQeXw;J(wzBp;d{lK%sI_nbuXpVzg; zoa$sp11^Eqww~|8`so4d6jeP87ql&*$R^xWN6-@x?#vMDjuwte;pCc~fy+L-^H`hu zs>RT%rP}I8)uL<5O`&?VH6eMBFU3*t({%VB@DH* z!Bx6?)phC$la6ZbB-LGnj!|!l>o8xtksS^3uog;nDY>WOqL8$NBe+9c!M(s+{-!Vj zvZze}itK(#0Pd@`I*4p<)Xo*z7aWoOn=P_IbAw*?saLW1c5IHi1qT~;1*%%25E8yltOn%iR@RV(6eKWjeN@Iv^ zY2fe#4{byONzjiiaNLnC0`&{0=h(9cBhbp0FLb~&p`FykdV!xfiI5zv`ALkS=S@5U z|DC$sfcgcv>JBG%JV`%HvXv<~rqn8WO(Kjgq>lI+p@2q382@=~7MCL=mB(9t*6*fj zj8r&_`7#6v_np-Mfbj&H4b+)m8d)oGi}nEg0D?s87W6JXC#uYtCdH~pG|IMb!E(vH z9UBN1{csyX)cMb%)3_oqTz0?T>W;2~Sx*}-9%DEBHQ+Mafq^G8LT9s9=5A={w&x_!*xQQ|k5nZT4m?&YcgPu+6ST?fVIraGzaHx1qE4!qyA7+G}%EC8Uxy z2@B$DQdW-YTPx9VsP4s>!|>clHf>U=@zvC%p5l8J;eTw;eJ#1vSA4k;9%aw2p8mgg{+-_`TC!R)ryz~oq5y{F4ETP-^CFM539l;&Uu$X&PYc!L3Q zceL?@n?)l0-6#>R-1P(g`*Qa$m_SSRTw6!(%DIuQR|4duOtQ5*5kja>=x(YbgtuUs zxsDLRF_O(F&rk7k_%dVKOI82dnfS+~b^bRwG+EsLEQj+Uy*wUYPY!R0uZfbwYtb*` z?Ot*G_z9|$y0OgjB_cj? zx{CO*eo9+y&B>di^jcPkeDns~X;_7uFixcVNoaP;ad+xZNIP+nWBZga_q^b0OkV8x zBps1)JW0kj`W)k$mCW<*?!=lx-DCHwWmR+Te#yD7vr#?!7~XbQno-b8qPU?_x&9T< zMOzZwAOQz`$$ubN_T$mqvIAvQuhzNEHTt9}jme|x=(i#en z;$3B>%h3vDT#}-CvK?=O!9bzqaS{n1!@2P9N_hFh7`JT|=lChmD|ha;C~PxM0n4^e zg(T0=HbS*XvK3gVOyP8Uxp+CMw|F`Z(sjixEq3D-Aacp>opABhz1mxLDe5Vw9&^ct z3LHG)-&FX%ZyAJpkD2)lC(#Y9A8NBfbsn3koa&c_-vDW!VobCJ`X`7#8yTMSGvW4= zHUf8^@*(qsTt}&boVVYqp1;?CMI+NJK@HS=?r zs8|wn#WjXBlu~c$pGcK0m0ds-rPAWp#T#n7R7?HrbN^)ze}_8#4ZAk+{E$}RdO-Lx zKXp&eZ>)ziP5swq<8g{&VSKk@7k6JNG~-0q_Kx~{S!AkNVKH~d(zo;{7Mh00k5 zUcrNtVIF^+c`9>nT2qk3fr~~zE@$KWkW~9Sq(Q!C%J)j=J0xGetFwE@obRx-^ z3)@9Q#VV;Ctk+ZQt|F^%b!hVAnJfA;*6NG0FB3rJZKv!pC_}4*Gt*tqc$Wfl< ziw;3{I3aF%K5FMEPvdx%qd%({#p$mn?7!Husc6Xll3tn1{xkA9ufvoOHA zhh#1dA+MKZoqB0Wr$gry5eMDt6hk7uW^vO09@^77s=Gishe5-Ga`{sDLMco6yTqwO zxCO|Q-SL^o6H{)4(qrb7acbzUNjR_<37zMAchlyl;UR7`l;MFHB9@$BC7xt}?29za z4NGfccjyOIOb_vN+uLb-=tS{$YV`-CoAsfLbkHs4mCxpp765yni@U&F+31kO?DBDw z!|Iu+3Pi=9kPJlpu)cPRJ50+IXE<^8g32Jl_RizP-kIHZMrW(We8*rA1K zqGKOaA8;2%@70AC!qF?1z#nEnxOH7&gf1+M!yK(6$II%4B`aMA#UROF2pliFg|k7(G)o!aTbK zPKv+>3HqEAfvC5H-pDov63%QHR;H%`Pfh^4}O(Qi>{m|QKaANuZ~Iy znwu!rW=4_~l!jJ*c%=(-f|rs?#dh2R8w#@_Q( zOwihVUt&rUE|5rC5w7=i?}U&+Qt}XhehjZ~MT7m3ewc4T;QlVL-_vfp5bHJhz?))q zhJbonA!x2bOX6q%m|J_c8&^J@psq1@5L<4Mx9sctj~|a^e}`f3bqH>3IH1}lv77ND zrkM2vzfMwLOYN^}Ll&CI`U``fz<29g9O05Au{Vj<0FCtqq~cmvGGe}q_a#2S#d{GS z=;ED;pZYy=`YUrBC*GR0F(p6A=ZxHE@o&t zp=IX)I-AgZLgx~Ck5E@auM_G+=p{nSnDgN@Kri##ZbGjCV%?`Q!kZeo4@e(uZUopX2olRHf`F9|`7(%~(M zECOPA2rVPDKLgMUhXMI9$BPZ+HzN(-#t^!U&_Xh!D?>jf)QQjvLZ=h@j!uZv&Vl zRDC4&D?S(|JPK2f`14AsME;wW){k^|2BdP$KMeF# z224RRO-LK!W5H03lh?7;B>uN_K*tDeBb3Ez^nuA9JCDSEi*G91dx=&$=uFc77E|Pr z_J0u?MIlUJ+HBV1VSamwq;H3f9b3re+(_s)w&5y5t=L?j6Y9!}jbn;4S+N@l^=HNW zgg#_w0U$+7A*sUqLP{8? z5XEb}h)N-}dfD4(&mSRZD0Ap$&v?VY7cn=(DweJ|h%#OS*|U9AN&HDS$3#UO|5Q zg3ybMeWe@w0)`xB>{*Q6mvK7sTLJ~{&-~`+x0d{thIpC}htCAwm~pOVoB-o&;kQn1 zobQNVNWHg^&_O~Kgg&AM{1>6=)PVmWbT>8N-vOz{8Fv8aBMi8TSwBRmtDE&?;#V`| zK0la*5yY)7ZVz^7SQ>C;?)sf_p~aJE;fT1z6nT` zxtke2?_}758SdI^kFHaW0NnsoMea)iS9_7m{)2#)As{yL2SD=)J;a=^bh2vAtX_4p zn$E1AV!U@Kst*x5V-27ggpM)4NrbLJgX!kJiwrme&8BhT^*R?1GW-=b=67cRdW?dU&ZjVNmB|?RiDkIX%6ExVTuD-Qi|Q^mj4Ut66@@iw}$v;7ypd- zn=Jnt=J6cM4-)#0rM}MGdM9{bTLMz$pUd(e1**#5&+^Yj3Yp4ik>RyY%xd^!%}qmY zx49Hu&l0=36bvH1)5Y_Mze+lmvi~VS2ifMadewkb_0DJY{tZ;6xRZ_QV~Ts-Dm;Vg#x8V8 zo=NL4o<#8eNbE<7d4ERfOCtIZx}OF10;I_4NpjA1(#~V6 zyoI!ix}!v2U{;CD^a&^6N1~4~z|WjF{%YsfpZR?SH1_9%fIcSlPghIdz$BL9DEtMJqmcN1MBuCQ?4iUGNFI4YR?cF$NJ17G@O+vAvD4zdMfdl zi{C^16OuZL(1(PE6WYm&y|oMUzQtkT6++iA^lyMvm4>oP4>DkYTZOZbSV`t&)*#VA zA7^9kwHq&X9#wgeiB|#AjN5?V*k4@>f^Owvon3xa6Cb_LiT@7qg)TlDxaJ?P(^)-I z9h?{5td77HarYksdK;oEbjV?#BbeKbtmA)n+I75&b({k}O=3N#Qf&5cod0nLYO>vBs4#d7L#}6>TUq%E z#8C}=J1hTBpenCMM}S_yctc!XbSK`6jX4bwHQBOVHbI!eN$j1>=Oz~2gjrleXc)4v zHlsaarL0+XBB1A3r(8FitJeYVPGP+zptUtUM=|8s^dsXza1y>=<%O zCsu_Cs21v0PV`QcvR_X{^kxXQhM>GyHG5Yfp=JD*N2u8bC-E1IUFHsC3y8mpVNYlN zHt~L#J!||$;ELw%EUXl$t`gsLvNnJgjq|Y}aqFmYzCvSFyWxD`#CpfY`J9F|+r{an z*?JUsECu9RGq!{9w>ch9A{69={%%5#a*}@wp+q*pb%f4gilKy7aTjln&>u@t-sb3fgx`Aa|l-iRgs_w zlV3~OTDQ&a42kULbomflxCa5F2$fPkDiI~-rzHHFP;1J-TtbHky+CLK<=_cIud~xU z2uM>yXYSTi)LLne?Yn{AfnbF``YX_p4tfzI2Z1V5@1nGRhe?A%y-2J0&BeFn_^!*~ z`ElzEl%a8+u(n!~({GWQBNpgN`Vs5F_p6M)MMqW{Q7=w+GvX6+)|agKdrY{930oqe z6(w|(w7*U0Ws?0Wp#h}$SwbH$#iNAA{RSu_JjVJU5 zGaCy?$x4mL2sXB$oR$1wcS`oP#4!*yx3WK8yy;-)DsGGB=g=Wg?0PT}+DAoKE`gpv zaUx30b$skair4Ixw#b|bitS$bi4|#Oe~+;yQ-Ero@kYKSOY=OK7CTB_TfE_aFjo-x-@H7+Lf7Zw&H^yM}{9}?=wUNwi%YN|wD6OGN^?vU~{@%zznw1Aca z*Co>Nk+lk>*&@ky``<)z(upGJkqlw&Dv^Ahve2eEh$v$#-m(dO;YmW*0je)i@79s1 z39jB`fOS5(+R|lCC3F2Jne!T<0c6hefE1^1+XnP;1`Kz(VFK5+ABc>sA6#y1Wk$AEpRV;M;IT$5`L`rMFR{#Rgf3%g z>j{nA=Csvn;sKZXPk^h+UzIR{NLo`8E%d~<`ZR(-3VR796J*l&bm!y`Fj}p4%A!hQHH)oXe;Vw z-Neuf$-T$ZG!4z8w&1ZGi0#b~;feQLAWM%gOO4|R{2c9^w4;+;Yoj&j%N^gs%pmz%g zoYAD?N7C^dzpbY>4)EI+ep}CPPr4(_x5UqLN0_C+7409;etCz%et%3J@WNV;7v{2CDr}aGIXq>Jqtq5>M+4~gF z(@D=fM*OicpgS35HXs#cKBN4G9AnS0{x`2f{huc^g3w$-g9*jZ!di8G%GkkLge)X9 zg4*~kLi^a_uMo<0b?ytmHFZlUB|AZm#_5pBS_fQ_ayi+4JEALe0MYB*)VwkzY}ToH zb;FwN=ElSB)}yTK?G&aNYi-$D;gHU;qz&mC!;*^;BX&1)UDOEQS~0&Up&`tvFG3x? zIFpTn7Zf1K&UyMWI>^$rFu*#^smUy&FDBa341-i>Fq4YaK9FD56|JB%V1V^CNgG8b zEm;H7j{H;6|37MyNeYr|;g_QIxK;X-@p#ph4pY(Ugjk$)u#eLs*FD z#SZ%G8lagDTE@_JBzrqMiq{F)%XkS4SV-kC4B5w)5E@7*2I6Y3j1_~j+V-)9#0p|l zh_#A+PVA!CgTNGRQZu2=x{8UvXN1#YPdX8-KK#rzGl{BGnTxCpd~ZnooZPYGy!JMI@m%zb>wP1AH~4P!jk>`CrMhp;0=HCr zXwlkFVri89Gf|+{U_35ponmu1mdJ7C*eaVpJ&5jf&@-8My@Pfpy3#?X z>!1^;-T&dBB}AVT6#hx2d>+#@r>`Jfze0;tb9G^sqn$i@vcM}G^n8Z)bRu7SgMLOd$3ed)n&qGyh_-jo4@gE! z2VFq)$hUR{KOy>ygMLeNEzq&vjs*z`Lkq%9C~F2zu_Xqws_uisyaDO=H6Bq5mv~c? z=eIUfyV^JGs-c1KRNUa2n2e+NhIyFYs}@)g)cK7N-=9}j0U0Q6 z?>DDH!1wF)Mrd&oB^>g-C>VZf5~2jcgNFLTiH+o`lV(L-a0z9?z+iYz6~Y!AMSlL= zukVY()7L3Dew?|Wv&VzW%j=7;t9{jul!Q-=^n{L->_ob-cAAdlk6e|u;8aPw(OZ5S zPF2D&0&XIeEPRRO=v?7T8zDhZ6U3R;EB&EGX$vkuqG0YO+(Aarpm1V)^Wz1V;v3Q~ zTaTK87~IcR88-4q28{RD3`qA$Nz01cEg&=>i(N3nA$}D};Iy?5kgZUW0xKKq;FMwU zqJy1laIg2zQ~9NzvPON=ri@GQmM%n!fccjs>q7uT!>y5@YAz#dncH0Ox*6YGBNnOl z9WD(v98G3~w&xh(Q8>+gG!VWAN1>+<^_#ol%`yc>GPQSS(Vyb_7qBw z5fje(&Ee@_A!IA3p7wN^T!_4iGOBpvEFpSz2XGI^^wZ?!lU5nz{1V}OAvj;CI6v(# zWPCX*ZQhk+j9G?*^BJUK6KRYTjyLjfpxaw^5n{yn&AJCdP*I2i=rang=}|zyY?XmZ z#1)PrmmHkR)AFXM%A$;9nT2@R@GL%<6wPd_JDj4SF-ky9F5pyb$_OdS4jE-UF-CO6d>!3e+0hBwB1 zJPkKXyrqp$F(X_ybV!qgSOt^tO4}?%M58tL#FpZdKli}IsowV!oBBN;$3DY{zDo<* zczOo%!pwZ)Ek^ip$ud;ksPD|g7S`K!x&T{eSVk4l%(3k&X|6}*N%2t*}q(7W6m677&Ru#<}X##7{_lIW*hoDK(Ee%hq z$5tk%AQD(!d`1N!E%F1XRj;Qa6+6L|bWtZK*CjaP-!@=;ss3&+Jdb~gK(fW00jJ$r(GV|qg4TShSRHC?Dls{4z z)WeUykS;?+?eK~&$dNs0u|Gopq-IgZ2;Et6!#@B)&tzve@o?!E(vy0+{ih%!M?Q@< z%sb-rXHi;VHXPhJG%BCGhSD`6JcjVP)wauA#~%xRo_fO=*xv*dS;I zLsuFHQ>47hp&l>y)@SD} z$dRvRlb!E@HYIN4iL^*s1qDyC+M*~7nA_@zvSAL2>*(InQ<0(S)RWIoh#o*9o452W z2YrvxZ>Qm@k(V2=o9hbB4rEcNKwGkE!n1--G&lgVUWq@ zIw89?Qr9CmUNd=1Z$@Tz4$yQw)|(K6UN|nvPeXEaIpn6d!aR;R)y?KCWFz%9mjsor zwOZm+Gzt!=aq-DRK+7Do45+u`G?e!Lvj1f~qbVu&gW1ykA3m7@fE;UR;)#6UXXU3ob^CfEh@}dmeCxt3x5JVu>#B>GVlda7OOq zEako~I@E~Vmu}$w5r1T&*x&}U%3WG~)&fF$*qn+eJVMGRZ`AMy<~Jd(4DoL<8X4yD z`0>+k_IEA93Cn`!6g_bMf9(Nx{KOQBBj;3(oOskXJ$f}L^>G~(a`~?cQF=S^C?tVM z|BUFhtUsR>I3_Vf7X-rnhKBp(ntkA47q_=oAS4)mLDEL1WJYfnF06wiYzdGlmoMDy zlF(5^eo?X!V4?l*_f0xB>+uNx}XkZ<}= z$1lh2TgP;Q`PQQb3o5g2#XdF7mrWw|Yax&qQ>lgW=7ox17X{3vSxL!Et?U+w}@ZZ^kx_+)a zV}6+lLl8;<^UEQq>Ht`NU&xE}*R}G^FGYDumBJeV?Li|lWS1ZQ-v|fs9t$fP$X$*1 zO+?zB$RJN>RHQ*jpx}c;osA$m zlkhiAY;Ro3$+x$(l+id^`{w_~c%iBTf!tLSAMn*AHaZpYee)0FvmZXxnc>8n{NWOz z!ymbKe8B9JX6Cn5EGvT~5Xx(qN(komY40sbz<`3!9T+XkKW1d34)i5oy}60u*(EJv zl&+ref%P+na^L(I2(-9F;+wyc;7EXW&k>W$AMwFkDjx9sgq^2a%q3rr-<~=9rcKV^ z-1#xKi+MwmYI4*QSB=@AHiP8WrEh*4@)D!-jNhd66hSe;Br$OEk7b{QXsR@P_M5F5 z`LUrR4b4XuxGchHop1gbk_z|FIk99MksMyOmwV^1Cu}*Z%jQMC`HNY{Nl51O?>O=Q zz4aBf9G0Jeu~2pEK;*`>if*6;eU>x^`84z^-~xI&MH|A|sv?`=xHen}-q~>4|G*w(t^Jf4Y8AMG!^SwyL<5KTRq|;72!7zM6(%aOC2Vp6~v* z`cAJ8*3kzeWW9+DGLJ&_VZ}cAaqv=Bubg5PUq~fwRg?Qlmo$oA3b} zDb44XypW=RE|jpC!q!7j4uX6YHAvpKrlbcW;yapITSlk4k%N)KBXCdLjAx(hx*Ijq zRxA*+1VS@lyn!XfjmQcrzBt8KLD2Uh$4BcE&!?LLv>+yQ6~%}Prul37r{9Wf+$lhR%yolt_GE^yVjLnA zX0HyI6Tm>>$<|NpP+_i_Dm`u0`e34CGOD$H+w zBl@<|l**U0&hTPVoFV!lXpYwUVKv+}Okd2zaYWgJL?EI~mh0d|ViaCh+K=^}$^OWY zv|wcX_(0?}HWyT1Pk-bdSkx@v4g_U4<;Lw0Ml8ZMZGlp`|s=`zg3mEf|(xDnL zjkvHXgmE3JijDWNCvL%GDh`qO!!0qogf?CtIs`9u3$X+dI)t|hwxbh;4xNifjR9bb zAw#C_`+$g_>;nYC@HEr4H=NWQOZGneFj--{ZII!Wr%G zV9EkkJPBZM_G-oA@3|JCSj?5W zh=KPkp(E)i`7qQ!Ume3c*4zBy3&N>w#D^~&scn~m0i1MNgTCd!QrNn9-|lP>15S1i znw$ObVjX$}6w%>eW}H6ohr4B9GQ7*k-GOIY5W(QX6KcxX743Q2E_8#_XpJ0@sJXS? z@>)iVTn85}KxljV!xHrXqhdt(HITbw;v9dt1K!&qIi#hdi1-C0r#3mRe4$4K2+>4- z;5nYvqL+Cy6^`tCqg&t=!xi}Gj|@klcob*{k#I{Gm>!hZI|Zg6V!@)TWdL7I`^AZY zz8_BXU{N3L1gW3H@`z^HI51rFluy)`6~qdNud*0TXwsbSrbqstuZJ`g`9W*$$qap2(Pn=A)eh-N&`_>e|F*V9{e2|j5-h4^X?Ue*F!X~`1774oC(-^f=7zJbxf+Hp_?2Cxu_ z?p{VqSBJmPaC%hmRW5;wvgQl8oZ!0xUI}(sa{)SHUQvqV(Y~00L36PSRwIh^{B1$= zJ9hxh&k340pP0%bLn2#jiH^x#vvznRYsLO3 z$(V*51Ci0m)|gftVPq)BC=Pe@-m)!-<1$H0^gdL;suec`m~Y^PYA_zFevP~j9Rzy| zOICYJb^*W(0(c@IwB(pC(hnPA8~s_!;i<3R)&jf{fCs5d7BI3|?VG*<2FXATP;VUekgUk*kqWijOD|Zqx7x-*65n;+7Ec#T!-mKN&j`#GnG*`=*mLoQy0k z!N{V##UVOgqWJ>u${2&A%WO9)O2gxTCSIhL(Iu}PyaGz7_6-N;(xYJ6dTQ{lAlQcJ zAOQwNBnWcUBaaR_o0!lhXLFr0hULH>O-)kFjtl^SEo8tO!4@D%^6Hc_&rn7nhq=em zR3a@U(uT*_a?*s9P)#~I?lEua2jHi53&s)6O+Jd4m*XvK+fZXZfxcj!MV}7RKg)VG z6zMQq{2W;@R&-8 zT!$`he}bGPleCZ|R&m@IaJ-1ED3lEMrX22&G3^3vll}+RKs`b3%3)Q};0|;hSwLq^ zUC+oAPiPC~;;lU161=D(RZKVV7=@9S>@D*)l)-zD-=plNSviTceIuLvT=j7W!wsYwOq z_XSzip$&L#q&Jiud4@*dj!-jiStEQop%ouwUL%ngS=kd~qaKw)pvhOs50)3kOdXQE zW#2*joRC!pvq~XZsxzF|ka?8BM&AyX1=o@Pig#=i7kF}of6i-ve3eIP*_7&q7j<%cQHBDwY;iV=qKC5Q zW%{#zsWaNZfvMQiZ86coIg)$QX^SLl&E1#G$QIIJK!>U@yIkP}7BVnZ1$wYATLjOl zu>BqaB|7=FjPWbHAdu5TfC#6HlYNy$)Y$(Og6(li&E7bS{^1by8j|Vez#@uFknHi( zZ+-^Tb^tO(}v z!!jn1)ht&mm3)1`LQi=DFVTf#??u1gTi-$ep7hO|F+2Yc{2H)J=MmMb1Ctk z_>9bw;r18n0zw;e8ZS|0Q`|K%9E9mT1-3GzeYmMXiat=^og&MAFM)ccBT1n z{v(XRKN;M|!qY*tYZquM&a^|vu!qtKOe)O6!E4TvBYh`{H`+nEsUQn7d1m@aOph4j zBt~unF~;c_BP7Oc4a69sV;B-+cmpvE9V16#^lKnSj*gKjF|r$ok*Q-~!4}T3J2ntQ z8A38zAOO+3Ugq4o6efqp=M$gc;?=}& zb@64yhr9SE#0y>gOX3#-HzGLIi?x|DZmOJ6iGCF498|(q&AN}FCq~itkJBvJk^N=B zJT3--x^^8jC)(x!^ntSFj>Cn4r1jGVcpvK|x+1@jkT+p0XnYs(=YZ=L&?CH9z4Xuw z&O@0rHzMOOLVebN@@h@Km+Io!gy=At5O0iG%NvNE%;;B3^u%P2UT4#gE}IShpTLa_ z#_eL)#Od7a@mV@I#))L4^HuVT^&RYidTf)4HddF#_QhF*IHvi{!8X${Ouz(wfUAtw#x$_c2tPOp9m+6!W4dPK8+i}PHeT764GCy2$$T1)41|cFXC)eZU>L8< z8G7OaiD~Z7{n%U9vmwK6ASoDuX}?g6f40E!0g*-R|_h*gxA?JYaKAzlq*x;-0JI`&?OK6>wFnRhsr zfJlAlIG#4TlG2J}Th^tr9$_yb`9n)kQgbi@??FK42lBdj%MLZfh+$;J3@H!;wf#bt zqSD-PJarktBsIc}MKs;I0mkK1K4i16@->*K!pVS%htcv*XBgJjx=6k@QEa7rj>q9v zDYQP{6+;)th4ES&s^P2T2dhS#L20z85_^JXd)7ar1=PRQN!E+ixB})tkOs@BAk3j4 zDdrpmb101vq#}sg|bk}NbATNsH;Xt$;m~RO4Z?`8|Y7Q<+ zDRjIE%rM3Lp_Y371%k-qzhp}wG9Ikyg~y({kF6Osfry$#g-ur7&p{9jf-}?Max=^Hp2gr(RO+bBMdZCFEa8zl6m2Yyu6*Y>Y}Nj zAde7Uo=Hui#u5%gBalx*=s0#JOQp!_(N+=WCX^J|HAeV-mbWkQGAx%_>+n6aFwroF zH3e^}0P$dm5x$I0Mcm-`aCH=2+oZO^VKQ^fxuCuK!mtgT3Xu^y#ugKLbuK~=`% zC?}BcG^0JSww|#`ZjKIhn=fuZzy()-gI?qM_yt-m~U;2dx1 z?qj%Ig?UfHSiAz<8Ed1!+_`zohL&*M&b6_Jvd{!$Bz}v$e;6l(H(Yu{COYI zyqt)A)o=Wf$Jq&d(PIep=RH}0fZ{Xd+~Od8ilqvtYU1t;F7k&6 z`l5vh2yzqmFJkJa;zU_0_PZM)quP#6Zmm>q-tysy#T+FsUvv<@`>~xr<5GObUDkA8 zbeJ8ri$qP##88s#{a`1nnJ|_Qd0Y!9bQDVhWdtT?q$SAlKVS5L6bPrcV3|MMOy0=Z ziuUnEC*!NU8vQ*`Q09w<7!Rwl=uUW6n&hhZTq*KLh9>!Q7IPummJrhx}A%c~~ zC_%Nd*as199SlVS3op_yN1VCH6qb91-~@R0NZFT;VsypS6-*h}xK+A!oQYTlE(n9TzkvzC zypG=Tm+)N%V`I!W0o=r@-iXJj7h*gG^V(UDFq9RRq|?!Akgd|a;8+0;aHJKM{^XrC z0qbQvsFYr4ZU&8^BZ=M_ckr9iUpOFGXzuY%-vm=)YW6;V^`=BWo^XnEyI77E{D7r> zf20piXW*{O8X|n|sZ|#eVYb5U;9(d|BY|FcI|uJRVSDUjNf79%Hp}>ate+1y4$Fce zG%OeV&IhPhUNAg z7zucK8hHKNFjL!LPcGk|yT@A^fc#p|LOB*dX{Qx<7i=la{mnb;5?IuQc;|E0+XxDp zhYHR8zR)qW{v6=c?`ZgAzUiCU@FE~0=-Iynp#>oYMuf*|ddWeW=1J^ptup;QVxzWU zU>}NA*E=QPsWwd9GLtM(zwVF)Bty(okPJvexDcY&%b&a7Ti#A*0ntDf zUF|G{;Gz`h$)e`SM;8qFPz9f@Q$aqE>Own}&&2dX&e3KEB9nViPA-F-6wx55UvRq4 z0+NC(df8b>!NXG02b#m0JL1v>;&O_#a~GXTiAx_zCHjsOip+F}%oO#qWv1vtRJZ6f z>5G&TJH3(`m0sFM(qk!XShg)X!*EE;90qoUmOyxFy``r?c(^N)E*eS{lQk2PLv=sv zGmsKAj}@9*#&Y5@V;(1IJ03jI|xB)R;0orq7x}sc45tiYR3Ie23 zF@INpj@C=XM(jd~YkQ*fTqM$Cr&rQbKRsnPmm-wHOu9gNRH=J)sY-g9LBqz^QA(xg zv^`ODRH=4)B|7!fOR12bq7-IA(P=B9b6l6IL?=Z`{qIDlZh9p;D*b;eI%mX-4rW1L z7?_MJ2{JJ_;|^DLmDLTFJx(I~LYo_VOWwj~as`^Ohc9{yrfL{l@NV=@Z`nT(q|&~H z6~pY0tq)PN!t8y%&=w@5n>(Gbi@$nvqA&VlG801!@*v`$kz`P$PgBY1b>!rWzKn3| zW@d#Ape>DyM(gC=VS{*K1VmEt&^MA^jwn2=%=?=l<9SJ3h8Wg42tggBb12G2V-`9j zlG@mxyRG;PU-UN6uL2HXs)?vUbHCL`W~#P!#NK?UhK3H#9-_Q2ipTq+cRR@z$qdzw z+bspt5sZ@Ea{b{hq^;}*4CKD(KT#7^%;P7G-(BJll=u-4ui}qEd_VH^V@a}11>Wlv z-XDR!XeF&6^lCVT6?}n%pDXxM2X8C*#}3|9@O2Kp53@#JbfbfB7Tj|1Zw24(;7bK> zZI5RyJJ86Z zpy80vM~-1f{fBeRp`~d1RJ1+h1aZG+xR8g)1?Xu~qAHFrU*@8?M&6PenI(rsfB15L z=#%uI=SP1oo{4@3qk7P@$j>`lSK3A4y-K+hhDuAJDKsMen08P_k3lRLpAeQk-tw>P zB!+p&tztWCC$jZL_dBfcVD9XTu6CHZ8?#qm^pF$IBP_n?S|@y^;2ww1)q?-*guf$r zq7yz_@U2exqk^}0!lw&<%n83&@H3t8n*{eb^jsl$h7;}+Jjn^q7W_OXyp!N9o$wUF zFLlB_f_HMlcVqv<7tMFVHwd2Lgs&8QfD>LVcvmO<9l-}W;j;zr?u0)o_-H45y5I#) z_`QOUal&sBe1H>vh2Vd3!hM1dcEYm-zsm{lB={9hcna`1LF8392qKTBj6)9+MS_lz zhQosexf{H2Ss}wf)@MGx4ZPn7{oJf*e8Akz^LxJNZzu+H+9W*4Ei-9v`M+gR4?W9| zGgFW|?Gytu&Z1n-4mrRWp6@Uv=Nu3hkY(9ODbSk4T$F|kr!?Y`!O}YrLkKG13Bhmu z*t{-gkG1}eHZ!sgF)wz;$PkntQTd$>P3R9tCLw7}0e7r1>fnlr6V5AEZg`pw&ve2Y z*9p(m;dm%q=f4LTyXj@k68RfW_@+AHhE9)%!*%+v>V(TW7SfM%!WY#EAE(pfA#t7l zU4+}shYC)T2%(+RFz{gGnrkdzkQxq(?3OMtH*0O-Hul@d$J{FsIp!IRTd!$)#*Kq+ z(=-kp#c0l%dHwha4aQFl9ZmF>T-ZST6|zlUzv-KVjyCa@G-)9IOAW?v8aj%rHs4U& z3H^s0Q5FA6@~!PUZ{m{45;=C4L*Ifj@%IOT~;{gtp-I5CHLVkiqp(Re-bV6$V8 z=pMie;qhr^I%&LROCb+ffN^^J**cvXF1m>=1N#KF4D1t>H<~=6%|b(pC(&)$!n8IQ z(^?FPIJi*qGd6g2@u&DhpQi^ryTx{GjiQ5|rGDP)31aQSkQE8szNe<(7=?9%)NG7V zxc`ia5*8qKB849Vr6dVB1!B!k#xoAX*;cVG?nJ6#C4uT6kcmTehLZ_%h^JZxYc;aA z^@o;YWc?Z*;k@P7!0ri{D>+}`-0M@ynj-u&XK-zSb*E0~E?HuxgYdCZ<`QrUht1|W zqGcY$J~3!VbZpP3W?8RceAV~mVewM?{DJ?x6YtAU-#!xw;Q<26na6ks54Y!WMfRGZ zhPlg_zI3j%@%xY`fB3}}=*K}`rwdQ*X+-Xr<~QF~pWfywCGO{V%hz*P9GB!K@seCV z*O_vH;ist~4YM+18giq<1q160B@cq+K;)%QrG#pf5X^gxtK#1BXOT(2X?;2;pzkvh zPp=0e`RTssazx_|x^bA$a+M7??sz#rIY^fjqmXP+xDS>Mzd$rxI8Bnz20qIy)EE7h z$s_&Y)&SADfe$kZ%V%pC9oh8sqt3`UU8<6da8_lsFS?oOFzX$M2itK~ANAY=)y z_mQV6gw4sw#h)iv!M)`@kd}{}a~duO5~iF>dXsn@Zy_QYa%gcpz0Bnl`+QM;vtC9% zYPSbh+2kS}&k#?!+kkT`ID`9?>9lJ)9QB?qrSfC#oz9x6T1hF)(bos$)XEYrj~2Si zqds+k?Jl%|FS;1%{pMCIH=1`RSu;QA=`uU`?#!a+D+ZuxeU<}G`aU&bKNAAa)-9`uAu7jH?a#4E{| zhTp&#oH`~+Sjm7l$UbvnTHcJT!Bca`R(wm~!OZg{Y4XGymK>Ubmc;)U+(guwcv2J- zHpn!0OVF76^sV!0tMHYFauRet6E3&b;**qT9YqCH$vmlH?GUvtI$#(@1&2V9SKs5Q zTXlWP+qmldz@5nH7Y53wYEH9z-D3@ac1`u9FUt>WX=YA)Ymn1$N%oi3-8?L6P!& zStYKq3K4QY_I@^t*l6#mghh>@iC}~V;2e++$6h8?nJC?11o!5&XRooxTV+~rtAxUR zob}F$eaPJbdTZSbwS(jAuGi3b?`{+RTyYsI3zrM`xM|r*RNCK3nP1T#DRJeWL|V0w zp^8_Lj-Ec#5unp!N6W2lyaP1xk{Rbk1`ZDINUB@Mr;(?1Ix6b=_xLaUo!I_l#h<0} z{RNwa&Z~A|e>g2V7zFA*As#ug$vyF}0o$F%3_q+T0!Vou|tkNxl}2EPL0 z@9RE^U0r-el#m{ShNOdK4ZF#Nqy@~+*%r3fU1xhx`AQuJCb{0e;`}ZAkNk@Bw-DM6 z>+Uv;9HWw>Q$eLq@hexn>fU!gyrhaP7r8q>T83bFPQcCEiEzUy9#NtZd>a_H8o(~niQ=@iSY3%cH4|*Zi#Tunj1RMx~NI$K#K`Y3UaF^ zTk}EV8ir#eCW+ICkQ6sd%8gJpZ&@)PvWb>;d2QPv?R@8$>C z`rOiK;~BT>y`m-zE&Jy;?YQxZGpepX)>qP0-u zISQ#0zn<-!BJ2BzL*-X?qK!StZ>{Os8PJ5DPimg-`N+$({e;)*Pom}()(=yH!_I&f zUd%>N5PHFizG_fY*j99Ymi>F8)(?_6jgI2<;4f-OGHk`JJ@}*hlO0x*GGFn)O!CS9xAHYhBNp+3R}N z&E7~o>v~qo^F`}`yN+8Tr9B&GzpCjQ!Q+$JPe=Q5Yfp;y_1B%#vl9%x4gh1XBS={( z`Q&R&H_b|?8-hWrRrTNY^OLjFhf&iVU(^pd(W;M^t?>)dzKZM5FtyYuRq2pSji1bV z`m`K&NVR!A+e=8!ARuVf05+3i$d(Z3!21YuRIiQ=fP6-)STp+{l<4W%So3 zOskFTboQFA|2i*<|;*Sl>(q2x{Ic-xlsQWC* zVuY~3xUU~y>fm`PcBjY;L3fpWj4l(Y$!e9*0q73PW8+J4M)pli4~lUmw@%By&~Q^I ze)hG_c=hqPiL`LVYu3U>iUeJG^+cuf+)LT6#Bhs3Oo8=5_d_lHT*GOeq!Dztk}}Py zK4N_+y7U$NlL;aXhj|SNx}WnI$74l!uhY$<1~iB`K@nDsIG1IWsJoxcnj9=|yWlWc zQf6b$DL$UW22R|wiRKLRvOeb%2-)|yXDF-@~G}=1)5m9h4D`2bwKi9rYsNV zP&{<)na;>^aeldPp%CU({H?k2n0$xX(j5npWc}-k#4jyxyIXF~3v!|}ji{q`mZ$W# zMchYz$1EI1)Sg34G%>F@?A(mgxBUSdakhsmA2oYvF(CD5t4&=3NCdC3i6g01P#Qr2 z0dK+|>;XOx@IiN^;0=5PEPy9(1*ql4KhX)x+h4EB1l0IH{ogBp`}^z3Xu_t>5Y^O4 z)Kq`?V)+R^DLY%+se`iYY|XwDm(Hn~cykSQtsfP{ORam9P)`(Pq9a4y^ zvSo$f&=soVs&<~%WB`8G&=7FC)2$s*jUF&Mz@$~zQLfBj^Qk0W)GkA1uC-#ObjDjxM@T5_egxJ$y8R0Pb&x zdTx#Jzdz^sP<;Fk!`$0#{T)Dqv4S#Zhx2^bhX*wEsu$vZadkWI)LgD6*Kvt#Lh-iM zxi33A#1rw$o+sj)L($&A;x`qKUaR#2s+x{zlgjR{@Rjc%SX#V^Y=(Wkc4u$8F^#A2 z;`hiix$G@zcd~$lpwpB59>2EpLeP0Od8y=SB9F@IO&iof@w*3*D}JkGTof0SB`eAG zU(L6S=LY6l4iw^3lpnSEWw6hk8PuS7A==?yetyG8cuu>XV~Ju z*VzfrWe;K0_|7$1vfmyXIOLu%su+=~^An#-&B}C@>Qc~Z6*h@@PLHD#22ZwHYMCQ- z4oKu9a7HTBOQ5x21{vv?qujM%23tyd_9p|DaoM3$1Ru{Oy6EYAN$$Ip7Bs>fNGC>6 zOtFagO88G8w}-_U(Fq4~yrxe* z?LNv!R1$|&)gCuJHs+|r$%0_~TwKiT;A#*Jn`}K%d|+_vQtrH5!>gf1{E97!h2#v& zN_Pby5{|wt_t`N#cuNTP#Q41(oVZ=;i>Y!^t+dM}|DBR3_Sd48_e5)j&1EJQpn^c+ zr{qYB`+1b{a$)3OvL$JgfB-2oFYPkAhe#mtTLrt_n3mA!{StrF6mFDvv2&a5j2tY7 za*4l5YNc+htk&Q11#I&ZPimE3Ki?s#=0;>#XNxyNPM7t>_~Fs#2(U6fmwnk>aA(+w zo!@nVa6BldK*t5z$)fgY8}HP^2Ayx{nrw^nF{gGkr$%}>z{YN@ z$8R2!2}>n6gX34%FZufoL`xCAkA_}3Swit^BHSX}{bMiRGQ#u5nztzb8nV#Xo=;{O z!FwaZ^+rz^Uo-nH%D<=r`X@CjMT+bu;Tc3qBdugwsPG0&-4ANQ=BwG|;g#s9ZKqd)y^9RmICG*~%n8)=!gn&)>&llF8X1$XwW5!46z z)BdXaJ?LjhvD0jP(xge%s9eE!A(5YlP0v?K&n_#Qq$R%0-}A{uohqOI$NCfe6iNJn zYd8q;!uCwYhw9B+M2_*oNQmaS{ScOqLtOdMyy?>rt?VNrOpoJe#}lko_BzJ9B0Raxxw-=c%tm8 zeb4S+ZhG#bZnvCzlSi^1yHn+wWe{-)IJlKwsubJqM) z9s5t^^``gpr7KatV`PDtbj=L(#&HVHWu?ARpOIJcHcNxrGlv!c^l z@O#axy5LFT57hY44#g*-^PE)lDW$N>sNX->A&=%rU><^jj%&e&?V+MHi4o2{#IVz) zTRS}Aa>;7B-Z7BzzC_jgk|`^WUft=k?-HAgDuGg>X4)uZBM^<~dw`H7UJu&i#=#EOO zr3p<+sDCNG-s|5>J&^EqwoBMRRWGV8wq!GnE%0p7)PkIDv#u4vV?}P_IOs>ht;I6P zy)@$VnY6}Cnk-|QZ+#|BHYu96DwBp<*rau4(j=-F`8cEYDtN+AnBgT9n}l1{bG4Ut zrJwc?50chpoK@e>Ys#X%VP}Kh^ZT91HzqV5G$}YDy1lY?eai}~`Fc?qNx&{?n{4w6 z+bVey#`xNy@S7Y*ydz#Pck5THUWn1zLHpj2}&8|sv1;X!Nr6CN^xO3fFeGS~-#T3Ooxi?>O6ACIb{i!!AL5Oq0% zs8ZoEp9*4qj2U(2}|qH=C=HvAt;+ki(^jFT%Qc@)642L(IiH!13gV22F5WId1RDHwui&!O}~ zqo)2|_n2$TI)#0MPtgRfmad?9stN#{Yb7KOw$ybUfISF0Q^;;gMs*#$yDZJSLIA=r zGy_3q?vT?Hc63=x)+&1QfT9gep2z!tDL)T5&$C&WS)4^WLzm|4lrxm)QApgftmg;U zFv>pc)1Hja;uglk+f!~)% zvYn8g;t+_#kXenZ1VU3!iR6D?@*lC%WRQs>H1>5-%d8DG5o|uEF?_^FqA%RQKIX-q zb+i7-UPcz49QHPE^ZX*4Q>*oQt*a)FlgO+3+UDR4gRRFVws1ZCcFL{|Oct%DT8e$d zmTyJR%9`!^yKdIIY>hY*saeXo$wt0E5&$pCJVW{;`SQGzbBffg=lK6vj=Zm|d92UC z0NeICi}rZ?qH$ndf>{x!~3R#H=UPy6iEKrNtuX04HeTz7ui?)q@N#~eR8Mdp=u zs!Y|ah;E%7Esqt^i#1Mu6&D?KcgdsooSeW$=@(q{kbp{uR=BXSA?Wv~a zu7A(=4_Upg(Ls;PmYeb;P9Mj7R`WWATmmRe!jrG-+uFS1?8-RGppKp&a8_R`;vsXT z9+T_R$f5FHE7c`IY7I8tD6R(n1zkjdC=$W9L}F`*5n58}`vFsQDJRvOe_-dF-}JW3 zY0w({9-A1n?&?}PsqfRRoD_`k3BRzFWs%tn7uqeS%F^W>Q9eE~VJwpZ8#XlYRK=Y_>c*L>e~(TCuagP*z|c$KCJQMF7kK`WZk=@^l8{c zct%*Ld9~FnuD;qnPBWHpGqLh~X0qD^F#iIq{kd)1$d~3SF&OlC4mQcl1$8sjCy=Kzqex38ZfvrXW>P5efjWs#V2Z`)%>>V&otU633Q-`6MEWa8mh+Wxka zif){5>-G59jH&XG8BdfxI`hrCuTau9*4!76U!z2Oni&cu*R1>Uy>B^MZq^#kBN~om znrJQ*NOn_q4L@yN1_gx}uIR2mGU9B(-)+d5VKy$({cL6JtUXIGH;F^iuZIU06pE9M z9NH)|8d{!Noxop_e2&SgZDkf^8~)&tD^1mFm8z>URBia-UMVUv2ZPVBwm+reGC*gF z%S9l00j^-((5GxN@{5p?=&R|;c_IiOEiEF3xnDbqRaU9(GtJ_<{e+FyLJ_7t zlC=eo0+VPj`XY{yh_jdm7RYHkmv69xjZ3i%LB^E(n$uqE_t7gTgl0S z0!!O+2s@_Sc4hVF-~6Q;L({)5-)7kTouMOGdutR;S)@N@kzUL15@qd`vaqwr?_BZ> z`@tVf?+&EtcOBvy=SyEsf3mmp{1QFW`!!rEfgVMR5^_FuKclTG4`POexwuB?3s-Em z7R;3SHg>;;<8%AT#o_(&=J1}|JtC5c2`6guO7)7uG0Cc6*PBCRzf@SwZXDA=-TU!J z!Uww4OSnsvO$)IewOYsVE`cLOA`8YQ3~pI{%ZcIm+|MF%0g2jj&WMevbp9EAdm@6> zW5-il1*SfvTMH~H(m3JxoVoir*kAW*uIT4SSuOLRu>#o2gY(a(w~y-V@89ox#Uq2x zYtHLkso}wY;0@S@x?_!KOY@|M29j*|sKkhSM+4`YC_L`yi9|IB@{KpMW9fG}u6tB)*IiPGq10glBm$g|NCKB0n;{hCY#{YV} z92}Z6&!97YFvp#>`^RT;?nx-vmSw_^(d?j--R@|dCno;}8t#Yk^r$?YAWy%LrwQ_O zuRQ%op5i>oDu$n%o`73?wAaUxO4Gp&H*zj_ylg6t<5LJtk{D4I*5B;PyHO#XpDACs zM|r}(Hfz_3O{>5;Yyh0=TzNNeEcY=mQeYmRP2vP|Z!t47>-MB_J;Fs>ovoNk8~OTS zD#hKAJC2%Cr+($KKbNvalvT{cuHakw$x9fmY>ED3{d9a zeWM%B=r5L8GKVX9(Pa;&E{!gGBf9IN)a>|_H==zPa$SjU@hQuqeOp<&HB(D;*E`ma zJBya5zKeu-S7+)H>|gHcvYzPbj_#VzQ*>8RYHD=Zs_3p^sgb-$(z0#QUHhcUqRTp> zyAGyw>iGDSRT$X%Kp!MIHDZsnA!N;89$nHB-9epQrCLi_XKM3TvG4Tl%QO4I8OFHt z1+|%G&lg=*$WGCY-yCo+;wuK^4HHALzsscHUO@tPaZZoKuUId( z)W>jr?*yBe$zr=>%ssEyGRx}6y7FXfe0+OPV~vw_^pKQJ$nc36Z$>+r;9OONW2Emxi}aQ4Lq@; z3PuOFcIDOnF&sZe2cMe52;fY72u~pFVcV<$D|xW{DDjy!j`(rwHSLKF|PK{X(0i}wzz2t z=WtM}XSZP|FW{eP^QZ{fg&3S^OlLe-0RgpU^SDH7NhNzq+g_u@%I8i!=@D zNMJGud#6Z7cFeoaKwmsa_lM#Qg^AC!C8WqK8H(TBm&oU)lWpRWHr(W!D-nr_8`Z3H zISEU@n<$gt_P&b|itXeLPmGk0F+E-gRrEGgf>c%F5J^N-=VE|r)i~8JXRR#Fm?{^M zBV5s0e?mf@eBKSS$xur&Rp^whaJ*BP^!eEU238GSLGf;!>#6U{R)|We?kP3$E>ApZxCdN{6UQo&Ya14&n@mI=>;T}(vcw4kN^lEV`3F1oGE)lQpps&g(l&SIAVyiD zijTf+TKg}~x1`UQ2%oqSom&Cl1O`Nro) zV&leUSnM-C!(ztW&SH5pY?l0%6n?@lZ1aYdR_@|9Ji~EM7{f|eQk2rZZ?96B( znu!|C)E^}QV8lR+)#r;wum=Z5hr?6r2gn=$4SzQT&?*Rj%aw{x?D)5e+)_|ALRU=B z>(!`91bfeJFTzYp&kt`|cT0tPhEjn=<0LZRsWRZ6D=n2}%7ZCjI;AS6xfc2iD%IV?osj<{~y1F4P(Wr811Y5hFj`o zJP2n2!`&&o+3{=qCe_bU+Y*#yhVLcJ@IcFt0b^W(Ciju`9IiJ))Ht1uH(Xttr_&@EJr)Hqaga_4+Y09VT9ujrLn; zxECfKvk7kE(4lFAlLw`H!?6zG4kqqFEFGt{-ytO=t9l8K*9Y2vK}y6|D5sZ>L97}l z1{X`Wg{?^+C*?HATRsR5KPAxqS09i%yPos0_-Km^9zQ5~r{+`+8AHy(_GkQ@t$c~Z z#t*`uM^);Y_SZ~$!wtAv7}Wj-Z^9n=VJ>`LLO%~W$W&iDxqUO=A{EaxgqY%wY#)4_ zO!3zai&VVca7ufcaZT>AYsS80ly$QQ>pVYbSVd3Rn(_&jtoiL@q$qc?Mtj@88jnLd zMYVQO@Zt-*gRzl=ym-tlq9bJ zj)q?cD+)%;`va?FP5XSUZh6BU{VUpUlTyw~@v|8jJZ4a&Vx`qu4@=ObgSkKOTv7Y4 z43t6+NZpMb(c9MKC1Ju;w93^h0@)60|EPi(I;l?{`-39WMV9nKy(0x5fe$m#t$8R2#?x5zzqET{~q zr-K~rPx!d}nK!1)6WbG-f}H-Kri>dV9)H_ANewyUMrcb~_`=kh-`?%#y+QL948uAV zPceBX29np2BKJkUqI|CRiRB`(Sfhm`+&$)Jq28%Q>!=FjF!?dl%r`Tme=6GjoigzK z%e(f#aX-p^onm5!b`yuh*sD#=FbwR11=&~LpYL^lD)w`71$rljRN?qVMIG-7wybmv z+}mV777}*(9SOJ|4|IIMSB>p>FDVfd#f$sU$3q{2i&%4n|!f5_W9TJj?4ZNQTMe4e-&PG#JiZp3YE_JYF-%xVBnku7|@5JI-AfK2x(<&Rfk!~nUC2%D9md!|~2a;Pwo>$30 z`G9*ADJq@zlEUp7BNHBsbUGqiI{n<=eq9}Kzo|eF%6QvU-_7vrI-NrubLOIrwJy$bb7E#D4=tkN~fFC(rG@tofIEsyyVq!CNcXMek`}rxraYt2lTyDg_2@oM$s3M;&xofZhPgWaHdU-rsO;lj zO1=TFcv9;1cKpmj_YJK8y9)FzR8SymQ&pxZ%|#@8QmWO=<#z<>KKz(1rG-3kzPp;I z$zr)A`$<_|g!j+SI%XZ@P<8^m{oQX$ZL{k6zW&0 z2UY1}7_NzV0EPq{n#g7UqEz7W+u8f{KO1r0wVF?nvEG8Y^-$$y)%JOlmmDDGslA1o z=(1p->AIdftGJffD#awEyEtx}A}{e<*fF)6Mea=!wxVLRT4bHK#Yu(EZYXg&WFutf zey)knDU^b-V%t?Er!9}bFmhsJW)`1Dl()8k#OwYuNzC%sSq#ZBs2K9+Q%{f|#$*O(Qf3O_7Jt{bUCr zEY}P+VzQWkX!Iej6n1Gn#fZ)am=%Z~J08Om&c zV4>Jw=1RR24uGr^$*uT#Y}2wrPKbR|Z0#Ji;Cu@UPN~1(8(P0{7vkFl?iG(UROKE( z_T(*6N7GKD=$J^==}zcPbHzfjMRMicOe@K&4G|E*O#VWt{c_WKbyvJS?5s0`Aw!Jb zJT^pmxaf3c7`BgsaZ)^g@<6p?T%N{EzWoO15QBdfvCqu|9FS~hB1mmnQ-`(h! zlprD5CB<1`eA+PgJt#xYjS=I?vwMTF^c8vQVA0zR(9CTriAZiXd8#`Uj#_F!}rskO5 zLU%Wi6JLJUU**1~PpO7WIj}$|$~(+Wk-``@`@K&aZ1)4r@=?R-Ubiuyvm%YmPs(*x z_h4zH9ISIwO1LLADrAnB-2c^bFW+#CSGOa_-1r1|XOA|jKpu{bImrD3WxVXsZW@xR zFHoM<8d6Wv+QX3g#Wq36Qk41Tx?0J&69dPWPHgqr&dnzlm|J%qX%?aONzt6YMcuV=UxW8lQ6F`-;{7OJJ;P` zkcjqj6Z4IR2n!jw9#00hP|}$-ib9@0s^g_hQLu46XN}`?s~6!s6aERf<20iq#Ai%# z;P_m<+R?Eyhs1_5$;SbiX?gP40k80XsrwDUn9O=)DK;DF_Ay$WaEaeE+Zk7yY-Li$ zg<3W8OV)PA&fd-tac6#D@qQ3q*>+F;f!*}J$eC*DOh_wnlRxW7WQ&o?9i3xZO3KqdC0yQ%n2JGELE~*j0b3^g#xHuEy zL@|%UYX~i$7>tgbM|`=3>D|GU)tM!uEYjFmaIL z_%d@k-b=&Iny`~JlEx&XQWk7Y^u9lfI4Rs`?%{=;*TT;9eE6+EtUIf;S(UDl9nK@K zB!uQXH}+{cD)1U6aqbZ9+Rv{1 zp;>r-#0NU5kytiXb4Z03ip83w81QNjOW6wX6qC=6Wq;)+s7S2e*4mgO`N$p_;CC3{ z=kTF%LIB9UNShH6lRq0Gm=_c?r^35`)&(wpW4;DP*uuBQ3FUcp$0(GFkC{LUOc*34 zpfO%|MRyIFH#RvP{Nyt^(f@LZeh76jqh>N$aapUX85`kHbY}_o;aT9SafxrX=V2!m zj$g`=b+~v2PDMoYFSo~br;g+_E=%7L%Kd=lJP_)CCKUZF*ShU28lnsmYt%WbqT6bH zU>`{nr!^*Aa_q<2tk`(0KyIOFn6v$iER7Q?^6CypH%}ZE%-=@PTI-2%xpvFux}#F} zdiyESYiLlm!AdAXm0%^@EE;RAHM*=Y=pI_eh=|W4Hc{;MYiXm_@V@4+F0LWa3y~75 zPa~OHUXtY8=j`0)RoHoX6Qcw=(O4Y;+}=x$2Dld~K<}k;iWKeIB7~ub#xt5{9=ge{ zyhnz))%q~)$B4ZIpFfALkIg)AlZxJXwYNlf5L@;(MnQVuUR#JsJwNI_RaWW!H?DQ!1YA99Kc{llR+7b z(=ympLL~j3BvkN$)F`tar1|NW3T$M+?tnbMso}={=8LS|=ko5(^nE6F1^MDwu`cvB4%+#<5#@L-QkcG}-3i|@Ge5BGH^H(yM z4K*ZeVJ6C<25RO)l$j`%-b{A8)4QO!QDdCn=L5DK*}S1?X1qk454b0ti?l-z$OjY! zs^HS06B@frxeimxaQg%wSAYGG64GMC%`^X3z1$-V9Hb z{&*qFZsX-fCZ~ThUar!)Yp>(wVIhn+RN~bP8yOf+YJOTXEk2^7wG$Y>G$jP{pR$$gtiL0|C2`c9DTng z{XU8J^vFJtQwtq~_4PqlUXpJ^hoCESVe&P7w9=6C71GG`d!Gb)a{rZn-=y!KrQcuC z_ty0La((|%`rYLnreW-7^Gw?_B1t$em#u(hjHoC3vLLr`_K=Lkzp#;v+^>PWEQ`~z ziPd_3kZ$n|eQ!#?SLwURJIQTS9d!Se?u?`L)1&G4uj%_w((n7|`;+PSPl@;xbUV`T zZ|nP}^!rQto=U&>==))568ufyk4eA(THj@6OkE6VDVO}QChd~PR(;GRcXFOS%EX-d zX3%{)-L}g#{e|@VOnrYP{a&r_GII6!B{`n=Z24gi{pfHGNQ=amNF1dW z$&?Ur#*7HIe^ZMq4z_r*I1dOIr{)LSE98p+B}g|lES713<%BO)f=euKUnUoJ(CS%C zCrmM}v*Q;O2HVe&95ROv(XtDrY_NTrmYbK4{$&Dw*u8?wtp)29^aX)nd&DpJEJn%10__c$B0(z0U02{ z_J;&93CtVqnnVsW5x>uP+nSe;{q1Xf319Yf( zYpRmLPG2nIJA3}h5Iy60dE-WuF^{D_cr7M5xJGr0hr4J4DfnZOr^ROP3th$#eNFKu z+x6!M+wbNRXVeX0?<`dolzg_i60atA&&Do1khL{+xHRF9luS3F{@h@@Bp5IA5$D1p z)O~yRGVjlQv?DiWv9B^6a$iUXQ;LA z=;RU9l|A2lY5#S5*w>;DDS=-xKV;sRk1pgT(MzC4YA#+ydL-V!sR9Sq@fi=mXLImX)sCwj&~a86=UB2HMuO_v{YJ<(Y;{gf0=koQG?ET zXd5^cs#0$#a#->do`7sF1U*ExFcb$(szDCZ=UBtwf`pA!eA+9xyF7`CDR;vgpE`DCMICF(4qQ8IH1Q>98t zSq$dlrzAW!$y`?&2=xvbM-O6}j<*n&3UTxCp7x+;x!bFh6MYq1hxCnz<)nI+u?!Nn zXq|j(HS^qGrG&&x^zD)#&16>EUlMkHRV<2R@mo=%eL(%<6CM8-(dAVFka-x5(vUO2 zjh)qC+quv%frnL@Vx>x@TNRYJ!QrxYDE4E}ZY#DSDrSn$P^ z`WxQ{P^u%7S>0<~;uD8@g+2p`^G^^`;-;86JN)0$m98f^PgmOBbrm!rXeqU5YAm4 z&Rx;Cabn}j#znJHi1a^iS8Qo`X4_hCjKV3(6o!?%b`;rN+l#pIKXi-N=gC&p0xmVM&@{*I$fZcA!kED?*p}fJ)Z}?8Rc*}+;7PJv z+j^G{{B&HYU-;}I16g9tI4`ud9s#`GAxDna5oMTVciwI823qpky>(lgauCZ2Ck)dO`rpyVFBc7M9o3544p?lJg<{J984XmUi9BtlG0`Zs}AOP__L`X_Cx^8lMa^VQTQ^ zLanG#E1D^l;4$Gtrja88_MGL=>z@WVw{9~Ib-c;rk~IA6X|^W=dXH(ggKq;SkENN+ zrrZAQvd2CR4nJeY2Zy~e(BUAUWErqduhZeCRM~@po|bWxy-qL9Wd0Hi z^ti!gkHLQrJY`2gJwN%XG-SXUJC7W6ry4+Es1zs9PL4*+B^GS zBOp9U6p_p{OU7Wx*&OXAlA`QR#hUIAG*77mO;&F$L|zR$n`M)R$ga#3bT6PvRifGP zsf=T^rdOlh2*1y zWe*Vc!;L_|CMq&=A5P7(MZY?^JMN3`Dw>l!N^V_5-V>w{l$kpA5E^T1%hn~ANN8^N zFxj)fOF7AD`d-R=>X@K=iu@iHbWfMxgM#jb>3m0OzVWcUqHhZCuZefSBj){ciF@td zpMKvgF_o2FWi~|xs%WNHj)uQ_T@iF|(=VK}XJ#!feR2yR=-$mIPv&Td`pZn3Z|ErI zEZUxy4)v_Q$h}mk+B^8Cl+Ny`$bczW!k$TYvrf;HSf-QnTUOW3@(JvBzALhF^y%CX z%USQ>-zusfelgH{GC&FQshg`X7u=j6OyKeAAEZr$ja~QvouD~@ZD^Q~sL8Qgb+?Gx z8G>tiS}6Gm-wlG+;?>&c?}#LHJSes;IhMiLJLF>urP0ewPi0%ZS>#g=e6-al8ObWm zPEG=B&`tQ&B~R4%P`WFR)c1qZ-$&?scbY#2>H7)k{2vpPC+L1J{r;xD|26%-THpK9 z@RsO%P5QgU{0_Ry)9@eG_mk7#f2{8}rQa9m``^>=*X#TK(Akjn|LObF)R(NJ`9b&F z>8w-r(<|w!PSN-B^!H=+{g(9mD1CoHKyAUZP0)QI{pqt0<^2`;^pbum0)gby`nZ8y z$qs!yR#N|}kDDa*clvmOq>4*#;(SQzo%*;aO`-=Ccs%|7BYl5RD!W3n{ze`z)W<)_ z<2m{`GL79uTHwueL(kOrfAO9?RL1aTGS=*g-cf6^sYyXKFD=nO!_H zjAn-Q3uRe|C;ohZ%q2>iCn=y~n?+}~I003q1<>93d})(yr09!!2XCM?1_RL*O-5k! zA|#mJYMh9yP_LU#@wWJ(!2TL-^kD;0rscV=I2$rxdk2@7%T%y)uV8};QEool1Pf-u ztda68SaKCZPrQ;t`RKz3_i8j7GqV~nnwr498W*a)gL5#{%dSUBic)0HM##mnu)2)= zFxr=AwTjBi>GV95_|*x4#ICz-Hd}bWUk7;V%B~>|TUsKkMa%g>*07h^P(%gLwh&n2 zw{`IQP`PX~{Pu;A=r^my5=g(`j}M7Hbt6DBjlB$PglGN5eYYMnr1cDMvBu$IUw$E2 zoIFa~@?A<(3#HjgtkPy?V-pbu@_28eWVBi&K0$Is7CJ(nYt!h=`#*?dwVVb3p}BC) z>j>3;v(jX~k;PQAk$86ofJwyM77mGcMqq=-4PV7%vUwy?R-V(QjA5dQr^h;wOS^m z(RRg8vVzAicJV7px;N5dn)D?4-Wv?CMzS(FDlh}*U!K8(E%wF)y+@HUMD~0lyfDI5 z>|jdJ0mwN)*=FIooTT6_1JmG*95*E7)T^9hXe&dHS*p9S0$hJg9m(-oP^Fi?Lutc& zmZJQ{L&0h}3jp2-lMa`#Rz89PYKj4+@1y}#N z&9)YH1G4Q*fS?9cr_u-Acn8^x1HQf)Tczsy3r;!B`C9U$JkmW_7Y zUhkn@e`?!=49YH+5Po%@W(YMthTVC?++wPRxsNAz+Yv|L7@K<#y2Vvh|F*U}u>Dho zlL6r850QT$r(T`a=i*mVNB2Y2oE)D;G3Htkf%6TkGIYJcb@v|dyrG%3M4an4;}Qh{ z*7s8is=_?}G&NvAA4vi2So=QVnYQ1O-Si@k(t55KOUr$A>D`!35bi+KWNZY_KpL|l2(!_Khte0F4(kB2kxWZ?U5mr5@7&T;jaMH8~aisYmj1E9?bc@h3Iug}xTfonP~ zEuu)i`+$&IbTs0Cbiu6*n^5eIxsX}7he1FzXt|}wkvTLVWPo&-sJ#|0qKx}TN+-|J zLTZ1iS?t)NMaofeme}8sUp`iqbsDN^_s`JIouQ0@R8*yA6=0M9HVU%Hb)46g9#h?SBn{8+K-hOc>-`_pWnq>0#Y z8T+Q#gg~_afZEz<|NeE~2^oX1j^Tg_SFF6g=PWFTI!5w_6NvIq#j6c}5mjKvXi_jY zZ}@d+&d5MVvAlJ?IS79h9Oy1-_>tQ`v9UjRR9=8MmrY$cRa{u#kc0QspE9n&NwenEMpVx!eMK}0F3_AFDav3}92FUV9~sP^vx z@{?UxaEc6_T?&xy|HJtlD|4f63JHF@c8Z!N#4R*PjY$0v-RW)p-V3F>>Q4l|YD7 z_2&6wd<<8tuP^VACu8yVUGkiZ+C4zps7b=iheFJMZforT&k#Bwe98I;)z-d|00NEq|;G< zsvwS$y148i*x-qN*AtKwgz=>J5Lr9qEvUielk23LJ^uKP$y6WckS8yL$S&Fa9(4Nw z5hnhHvqGk9-w6(jzrWL$C~Lza1n)@Y1)Y(2P004<(cQ5NDkSFsHrVu*7m9RJy!luY zh%|3l>iO*IJU_Z>3ikz7J=k#z=t_J5s!R?8Fqa{kLGr)4A7|`UF@+i!&oo9=^~WUS zr#(Oo$iGN1{Tu{Dv)vu*+~!UrgRBb6Lh*}OtzIHh5MrvX34zR-Fa>$&VxM-tv(}RI z^mJjjE(_?^M0LlJapGR7+;IB6!jgoavKHK+J+7khq*y^o{JPJ$m8LSVwO|^VquX&! z5!8qMtd`A!x(U0P_ygd=74KRLN&z8v%oC510zbj0I2k>d)JXh1LT-{8s#tBc=1aag z*bT%d#DSAz51vqJMAN|nI6TN0fWO&ccS5W8%3a9dX=b~V;rOYqn| z^y$R@!@jk=Z+?Xf#>bdtuX+EeuK@>|udW2apWy zHIT3vXAnhGsE(J`k%soT#CS4BD%M*IR+15C zCr2bs5k#U(2p-1$ufJ(=TnI{h;R50dGZ~ytX9Z*9hZ0|S+ZV(aCbsY@XNklXUS(nn zTMI`}DimEBNc>f657p<0SDV=zdOv!U- zGz-#j=&J3H_5>20d%+)sI>?Ut@h2kfJhY@bZB)q`?@U$R|2~R^)B31TDM!H1VNc zU#DcPLo*SPJ2Hc`wl5;YZnI`N%$itvF~ZZOD5=b>v^P1b7q!q3B{-MB}VYc^9_sT4xha9 z_UQ9f*ujV5(-15t6^$krIMfFc@)XpCF)5;u`!FO?UpA5W|Ip1$yKl-N8Yb-A?#@~R zC$XnYD;CvcLSnUelP?>h64cx7T$1FdtdyXMYBy~Ln1N;T>XwJ_*I21eDjEwi)G5N} z2Cgd0z9}n;pq_o#-6W&0rL(Ry;(Tn!&lux1wqc6bx%QlDAzc@jry<=+>`&_MR??}} zL&*7O#8Ea$otSuuK1_{HY?hx9iS_ccU!qJ2LjNNvOcP0=+B*@@Hf%y_D9>8yzbZd} z;rP3VYU>LV^5YM}kaL#tLzp_*AA&OW5<*omvxHRt#;aj%zCV6t{3R|Ez|txV;tN8R z_lOm1!%uzld|W9ntIlQRzlv;peT=VG>s*yk^hzGV3Ynj;y}TEX$}r$ulkHl~c6KJ4 z#IWhvHNQH4hW;(pziiwX{5^dQ-Iw3~rT43zy?=K6U6J(Nh185MRGCKEXf_2M)~4ry`Vx`d8NelgjW>y0YQqU`6=E z{P{@y7Zu3+IC(F)<>mgT>(;o>n+h5p#3$m37`_x5$(c~JkMkw9$XzTyP1*DHSM>iN zZXV>U9J~tM_ko7GRSib*Q+l5Jsnj2zG&F4N)*H?Un+eVxj5lE#R~l@*EHLyljHRzH z3CF)x;|`H@d;=Z~!hw)eU0Q>H_Yhp+?#~zThH-#0NyrHnsYFaZ6cmzoWU0oF{*V3f zF@Mj+r9N}_HOQf7sN>FhD{&h2nvHEO+{tbAayiEDMghWvSRU+>& zw0)#YT~JPEtd`H=B)ut&y_TUv#oa<}Yk@e|48`KYY8(-9OTN=;`7UVy5cjJ~Ne{(Z zv}c(7YE+y$TN(s@+!||-M4H#p^swBx6OYl8W7RF7)E(V8ap{trZL6x| z(?1JFw;$bb&t*l?!{3 zwTR2%wK$twoBRfii!K>N^;TS>J158RC%qpGMtAksUKN_dhAeM^My*EnqmM)iM(er#M9agKm$1p>Py8}M2$%XGj0h72CA6v=up+aI3*d}N5^i&+X1`QUIm?LSn ze0@;z3HfN`0jYzTfASKqQL&OqE?Nm)_%=k=Sf-|BrHQxstm=kAd=AI*P6>9sm6!O4 z)amh=MND|yoD|>Rv4T-b8~nvbw{z(I7HN^(^@*II%paY&a3w)TN@55pqO)G`H&VD< zvF}qaF=BNtISHZbBM04rxrVYsWc(lynueD$oe}#KXyd^Vv4T_l&ij)9U_=z!xvLUW zw7;N!j)DNku%@gvlwa@x+Z27>SQ(IgMH$7;S&>jJS_@_ID&X5q87fKH|c zzuvrn5K*<_I_MR*2+?&w?^+?g%<H;2@I`C5RKrU8C++Z5h@MV86a^Z z;L@n~>IP2N1HroPwAB9##tMcjBt!SQaRWO;RSCvb zLm@z=otP=z$*l6!rDNz#E;%G~`JivfZCEFKHGfq-edl-Lv+8y|UzmCB42>tLQh0Ja z0~G~%({}l5HJ3BYOiUdKAA!NePBu43OT^Ni?I(2A{ouw1?+5}10z^lNeoiCZRj@+p zfJnt+8KgH9xo`Na!J!Rej28l+XZ!h`Ns$G->#$8-vgNlIGuQFYYP65of^UdZ{m_W( zC)z`oh_taJDaIzmz4H#vh`|yMdjX%8P?N+LEpX*YC6&|<=|0_chd9-R=dmZ+wY2-A zBZ;8Ljzvv-(y^RStrDkixu8~8CE-K7*3q^bhPf+%nLG*PJV9KdpP~$`h<0^K;}=LM zBTwNC=H;c@3AjbxwsR8)A*5-ys??*B|T3Q)UO_cg^H7_ECN5RW+?sPzv%9B2F&rL?tZhguTVY5*0Op zh30TH)*EpY+0-At!hT|p^9bZoTl5J*=SAZS)*P{G8IWLO* z3P&JtdAI+9i5e+DN@+Mg5=mwxmfy-?2s&rRXRi)~Dn4njaAyz*CN9?6KB+G;j_Zs9 zB)wsUQS3CaFH}ihRxzNATs zLhdyDA`<(pj5z{y6a*7*lNzpgyCD`#e4u%EH8jf10zMzfdu$Asmbz!y5-8*{SXaDD z1ru8}D|$iMD0V3y*wK5P2NUI(^ zrYtn)6Pr7fgU1i&#^Gb2N)Qy49u%zurKHtCHX<^F2ag%8zL%GK8H$35(PSV>^A_#Q z$21*k3zmE=;v=5J4xtkVvw9z>@hF!R(nb4i;aF%>+N8gMg5C{7(;tcBC~Ek}c2+tQ z@Nn&2LKUl3FRLuCqLJaU*C0`UoFceXBEMP-FGCFRAW5pHp*cj$ddggGRwS;3Rvwpf zev0FOE)uU+0(R98Qvk_#bfKs7@!1yOSXNV|y6ed2M`A3ghw_r()%0fyG0S-;|Dx={ z7DnBr9`T5LSE zaMkcvQfjaDrv!nyDwy&-+-?U_~Wmj`w#&IA&A zM%4@Q6|k&=!a2eckxaUBWo6t;>18lMFfoDr5$AGjOV&l4HG74;Vb$p80jpJRTc}5tkaNG@C>On-^l-D@rMI2Y2%y3Igj52!vaOEs$DqER zw4h8vg#c|46?IZQi^Ol5;X2YBraoHnJhzf*B6oC8HBG&BKvU&SgQL78qr)`UTBsBI zoM%I^yR^w_3h;9QH|Obei$_{5V(PE0mc_QvYkI%4R@<+Q&R{AnKa2d>m=)4=IWkbY zArTx`CS-#2TG;c^_dFUrLSnGDSuerTJe3Mbs0zr7f|r)ZcuC4duEnCuP42IaWtvvm z9+wc=;kBb|F-Yt9`xJ!<`|#Hwo8-#p>to!Eku|oc%l{x7GS% zO_+w(+aKyAa8*B0IElzEf&HpudFTQ$o((xKOYn#0I_RW^ebmXy!8#O)-xz4mrv?rI zL~bijjW+wEP=5~+PoUcAltb0%2uh~C?Qk^y53s_zMP`g?G4YWZFBqIgV}-2o@yqtX zHEqFBTf3@iAIC~`aGz*XTBSLlcvPQ_dKXteX2bk@QVD9fPmaH}m(%=5aAjMka*?PS zdxJ%J)eH@+-ioZ&UsFIQ=NZBPjBjEKyvW#O4)h|Q$*vhy+B{@9G0rx0v|5bYWoTk^ zr6=Sh(@0+eM8AieH-&V`J~-F6-whA5-XU@aJsp9$fo?5LU^4b%yMcF^lXG=NW`2VxR9u`Q3=#d^)|D zT+L#hIgg+ULP3x|skgdZ7*HC4Frw!-$|)Nq&4f;xw6(gTu*z!Qm;9ml#kk;jK$bJB zbs2fMf?vTgLN~s%*T7$-Y|R@D@Ym>|G*KiL8Z}iEa>&C~$4uY(9k6gdY3`qCYEtGe zcO}zsvPquS@|3#Kt>RPa2KOy_`<|PWpYOP5O5#QCujK7~_gs0K;r>D1LT;PUo{Y6X#;P<{iVtr*M6M7}F~6g^gW_ecB=j&`=nk@?=-vpsKCQ2G`ClTPH$%Fs=Gpfp|G-za;7>`xpv0||;&qYK zRro26?z${~(fwBV^`Q0hWzOs1QWA8w1-m{RRJK`KT4mkUBe@Sxoz}Fh9KJK*ZNcZ2 zvdzH`4_Iwc`&xs`4I@0+W|pUL?@W~i9fHVp?U)$4a=D3HomcFp_OZh?+XBlJ-5!;Kq?1W4E+!84rKXa2^ z8M{`#e#843ir>;H!V=%Ma5$P*ZZocngiP*96d}6+t3S@uM!q2y`kb6@k{lYFXD{Ik z)P+9V4xC(5^)%|o6d9YBuZ52Z6FI1GY3; zgf*r8I}|tcP!iz_?NB0x7pdx$z(@k1<$}YhDfrY%cT;ritnL_A;Z#*9}yi%$>np4CyE%3CJt0kyaa|%hLwXdHN%E?}$oG)Nq%3i`8%pjK;zF`Q;)F7rZY?WpXnE1QkpydQTXl6R|OU|ezXChx)QP`qlYuu40 zpU?XZXAZ~*IK%jdm~2HpxMO$ERwT7jVToImL9qS+?M%c|!X9x5;uX@NDPM%c?Or10 zXxSaPqdSMPW7`YSgA`6KgvZoeFC)+WNAibW*f92Qa%S=`y%NSLRqT8uL8G^i)uWfc zrBvp9yK?#r{3)QvUnuL7u=kC$u>KHNeln{0$z}y+ij>Etig(V%n&`17dH2iShJ_&=wo>PUU~=q%MZ=z z^9E)Dm$gGAFO6dx$rz{t})ZTTw|L1K}f0LMD%sQ_9;DHw6q%LK=HHL96_WJ}j0$LYH6VqR06sx-q(E_TR8 zYiEgiV`62IAy%lHcA%pN@OJBF71LGw?KI(We3WaoGy%iCH$z?BCRnWnBzx4wR56ge zfcLL_zm(kNt8kworReELfFQG%dUyW57Em)Zu+MEK44Z_=EPugjzEnQNrw)?* zi~Rf&Nz2<2`S~ln{ADKpV98(O=QlxZ2f!cdle@-O%E-@Ir3A9(q%Gx_(G{P+3!BYWnT?W^F!@uF;j z^HbMx&MIeZYIdc%!Ut^T1gk@SbWTVPA#Y|LKv%0HpM%XWJdm?m-T((VlndwfCB-Ht z?DQp{=7C$9->FGhu;?)s{ha0yMRYoUHkt8f<%bEL8(Sdb+pk2rAjQnnh>lR3^0Q; zh!qtpT3Xa%wThSvR#adT!Z?n#)gG&-7kk=s+Mc#*Z#pxO8xSs96}8@Ky|mWL7`0R@ zA}INPzH7hlOoEr%o^Vp_X z`YW~m)WS@nX|VyFpb7f^?MK888G1kCgn#w2fps(fe@SITiSx8n*ah1w&BEgga1fd& zn|-BPs>n!S&Hc|OAU!C52gby3yI?V56%>50$-NaiD5NLm;moa;7u&3hkcUZdkTY-6 zR{wrp>w%I)DhZaoBeRp_X#MTBdm3%TG_7)=;lX<@@&o_5bpb+N+h}q7j%xY#WS8Bh zOtnnPw(~{Xb}vm?(^l8{A?iv4J$GiP@BB{uAE$K zH@^OaQi@YI(K!C>}}PGZ?$SBXbKo+M8KI0i!O?IG7aFsZkv^^pYpD zjE{Di@;AIWY6QKTKD|=ZV0x-nz1Jvba=;OVu>fpFz)+&dlF2qbHa74a!FyhJvHo>= z@O|RJC0!yFqKD*Ey)63@ zEr`^;hIWvt#}{f6%|!G>pl<9%T6uS%`@x-mn0N*^#qED8e8n`I479Dw4kR z-R#{I@Z;juTV=R#EJBZ^zdAm93E^ zew>dDt0z~->eo2@ep1W;e)1f#fG&)w`Zc@FkianjB6YuU0G4UU^EwhC%o1_?OSOEB@4XvCm@ImK?cT5<4ikR0_K@GtTRWZ zZnr&%U_Hq zhvwRz60}~+e@~tby;onu6zNo3s%0#-2v|jGSbnuykiK*vJ4+3BUDe8cIH&4LFBzXb zg%7aNK&1XR)=jI891om#NUY@cz@qe~u&6BtiD_8c!y8w(xMK@hXJveHquEvdF%DRv0EJt4?v77Dkni&oDwlY|rR&>=6=?4U#T=nCyz z9xL<*km(QC59*Uh$v^3j71R;*$L-=WNBso1KfQMOC=`p){f?gVj6)d*OXsY=`OwTTr6LF zK~Kp4m%iegnjy|IA-)TMEii!)U zC@o=Nl0mTu=IY_v>@Vq1iH&a3(RRFnv#cdYsc=IieQHHEs~ij{Bs`Z?mhEy$-l}#Z z4A_O zu>(pqmQ`faLIdk5`-RQmS1PsX+Crzxrl{`cZWhofTVx^b7Tx4*%x5#S&e^0u42kv; z5nxVY>J1}=e;GcaeMMVn@Q{CfM}ZB$`(bRzpnt#yy^Z&zxf2G#kHUlBpb8mL^%f#**tasa4x$ z0vTSZ-s-x9qnnH@xW}j2MC2$=6LOU3p=lA=kf! z0GjBlG<%g-fya1dG2|~Is2jU#PQ{+{qiJwh$BGM<7OIZ-U9rAM9Ra=Wq6)F&HO4rw zg`guY`MfwM=n{gk7Dm^hRz6T~4jN+IFv{L6D!H?z76Vq6{{*nzyr7ysW;Ge-B9zue z2DWH$P0BB@d0UJLGn)mSaT$a1Vq28ihZHdQp1J4J@Y5)khnnmL>UHZVm0+ztUXgX` zZ*+^SE?h&0;nfWVU zuqkahm@eiBB{(@8yf2Tt6Yx0np2J9bX;P2QcHQK}x zOv|`r*Dft)|FmK)GgXU&6+mM8+!M~DESo-v=8^5qFW!6U2b%JsdYcz%Cl+SqV+2@ zwpv0_E}`L*4YAdlP}4J1dd2C{3Y%?h%}KS+IXM-puEaS}Q}vi|YCLE5PkL=D)qfHe z@&8c~)h$a+2}GgsRz1t7?Dth+-9xQ6o-Dx&YvKNV_^a@#UfY|cl+{)B$9V`7<*lLV zxkx(f?2-P4#2;n-V@Bw~g5)KxiIGCCVI!J4vzq`LURyy8`Om_{jq;U_bb-TFlGrBS zuNE@JGbwHO%a`8ji7nh3?fuKhXvsZswoZw625l;YH2QKYD3eA3kQ9mdYnv3tH(5}t zFuSVn*CYL63DzJ>lcFH3+O0apV{TA^upKMt;wWC^{(u?R^qPl!kfl|F0L|$?rauJjizx3C!Znj>cz3)G$L%;Sd_b*GUY2;yOYB1Ppe>pa-4F|J??oh{+npj?t(qe`oE>9E#K4Up z+k#+pVg-XE{Qi9k5}}!4D7+7We#H7{;B{UV$JcNWQ1(jKd<`;P$TBIm(${7rpRu;) zvmj{g)CEY0gpHMTzt^$1H8M6y!wQqJq#Eid#!$k}N-+g6t(xRat5)--<~7atn@cOj z_7u_q3WU^#NxjnX4~WhJ&q^-A72rm?mq-<05}jRVP}-aRAj2h;Ka%oA*gic4ScazY z`d?{!@;Xj5;KXC1OA1I&_F;Q%fA*Ql$o}&p*(Z@>2-%oLNDw zWW&NHJ^yvpke+dR_C=t>tB!2jkmth7r%F+KBY7DD`PWFY`OEc4{yx3`tjNxtyyGoU z%_{U>wSo{gxB`vIaaH{vw-Whps_bsc<~w-ur>X4oBt+%VXbFkTVW&vfE*Z)uvwSU0 z$nFD{`OovcdntHDO5V!u5>-@cDyhusld`)l1tZR*lwyvN@T@SBW148ad582mD(s8R z=dt9(+Wg10`4tuJ8%%|lk?{PEr=#?AsGdT4694$CM1|fpjQ#gvdjF!m!&yXSK*Y>mqmnP^X{Db2 z#M4LiAM-x?(iN{Pf;XJX^j$649K*~J+oorihSwfK_c*n%Gx&<8XFMB8CZtbA@uBsL z>9F;1WE<3VN02!%EbyY~OHp4OqolgNmQTc!3qvqA!2?uX(dOCLKG~LXMyj#4lzUjU zlTxMCCule{eKN75x>+j~qTNZMX$Eaa%iQoq2y!e6 za{L#t!)x{GM74A2_zYK&QNQ73p^;UzTpMv?anP2zHsaPCj!LTH>4gYbTwLEBOFm_b z?4XMvC$Wm2?_@2fbGU?xY(_v0Fs>?7Bi7^8eik)5Ac6BP=4Cl@9a6ZaP`HsD&bVWUGBRrx)N94mREcrJuY}oYH8_MvA!Te!s6cWG8Pf-h|n?Kzu(~{WB?wY@=oG zq}mUpkZY9a1a+MJ;1=bATRqXG`3u@uO%hh&wX3L6bD&c!x14Y6mj68y;NTi_`*10@ zK=%)X+_c|&IBY$@!)w1vEj8N-Tw9jE4A9~T_4U0hRxd@`8_;%C_h^*YaxooOZ7G=JwJjj5x zKHyLCZiTn<;HNp(1<9UbS~SRar+c`rs)(JHp95mjU{r_&L>)#CJ?(Q^sxci5guV^e7@!ZqdA8YlUNyI#km zWHB6{wXZfq3q|rXTMh`rFFUdXNDd)E6Y`|+lfq}Iy1^|MrrAna?Nh-C&na91_Esi~ z_=qt=sf%mNI90-h$U87aGQZ-_qLkPEnsH7_;*bh2vh9K*PjZr7K{V#{?<@mg^NO|Z zGuhc*TQ7|`;RuQ~?VZ?hrPuzy+G5azdzcq|7PBa$3<@;l9IxMR(>n|&mR1Y*U;j_L~k<2E)i`aIk~&e$BrEvCS5^pg_oUsv?HdRmFtG+!u7okU8%N z#9YhUV|g*5p{jY5IZq6^8)!I%qy`*On=945xB5MUvsq0jiOuE7b*4dbEc%EP;dF>q zYtxeE-D8)N zPeKtnWb}O(UJbAP3b~fr$R^husz$zSR@1HAte^Y@K*N!T@KhOIf2%Q5~ zLTLU+L}&~sfJ%7nxfIANd_{Qej6wx%R$;vG-em7{3-9OI`&SC@bM1X`;l0t`Z!Nq} zw)YhD1B)KI3wHvI_I`bT`WSY#p)8|I; zB+vuj=B^=wynh^p^;|U7Ege;^jkMXR$%n>K&qeFrY{fI{?26nCq!KH<<*;b-)DYH3 zzW2(SCzFq(P#)~qY<8;gcm!ujOR3Z6;B^@r`EoCwo>PL0z?RymooONfoyhc6Y6lH6 z8;PdFY*E9Z@u#XDf>n$YE_yRBqW!BQN%T~?TMgmuUWcxx3IP5yj?cYlsrWhgBB`^J zT$ox?%4>Jw9?c|uYx*Xl3InjvJ;ZW%lmeJft`jKUP;c#&X(J^)#|$g-9NIlVi0%gG6c`rF8GZEoQ>?r%MbH!3W=<@fx4 zZGw7D+zO+|^;ZBtx~GDEiupB?zOfX`9SEIpt|CU{N-?Q8!%zpI zny$f}D6wkC)#M~T;)~VwqJmcVnH1GE|06MuE0lX&RMMO|E7??os|*9Bc-KC!!^-F- z4S@0a>{RKoV#*@(9L~pl7k>tmSlcf)W5j5}!|VH#w?GNm14?eGFg)Z?7D}TE&ehO} zc%6B?@m8*pVDGn7z-u1De&VpijuX80)!<*OoHJe>CO}W^m?Fj!JcL{)VPWAqn|-5Q z@hR?tgKO-CmcQXNvc3nQ*{O*imm_yGmyu&S)QdPBfiG)$nUz|0G>dMzoq<=wycqn= zWaz@(k3!u@VfgC!qyd_kK3|$!Z37}+$4o&Kv8OAI^*;h*A1%6s;PMgjHNFaZMCv(z z^Ey67CYnqOlog}f@q0t$@EXPBaiUk4W;V z*jQS7LSg#ABjEn_-Dl&;V{PV;1-#81mp7`7AyMEpqX6UEc~dqD%yAS*{_Xvmej{?O zn%+NEW2Z1|yutMqhfQI`Y%h)wjToN^ms|zzxHL38ZN$Q;1M31lY?B|tnkSilO1*Ed zf9uJbhw}$eeJ%{rZVbPLgr1vGczsE)pD(;Vq1T`B+J8;%H~Lwc%joB_T(^F{ntMY( z3k$^fl;(V!?B?h6+<$CtzH)?f&H9;=`?`KUlM~zY@1MI~KS$(l)z2Y0QPO5dnvnmZ zYJNf=M&@4Nhct)q3_b)S%gDUP)TyDg(dJD>02s=32Mg!~@XD`;3hsROqx!3TKmQeI z|8*g_wZidoSP@Q3J=O3OE~Dx7RQ zuB`jN0#Zcl?#c-I%JcXeb(R_3KjZ7B(wZ_&O^9{TdTXoK(NN5T#-)ae2IPdJz1s$a zIokn*)*ddhRGO)F9xBgHO)Ydo8vn?0`1B;{_;#OCw`0j;WFFgnA9Z4)&liAA+gLiK zr2nGs`T$Kdg++G|I@t3~y}PFg)y6WRN^$2jWTmd#1R0{%7W=N_bN?1w>(anhoEw5_ z2l7^J@c>|bG(EGv`;Ud%Z5(|mlA2i6e`5CqB=;ZNeW8A;yD!ntVcnPM=iu%p{p{bZ zOZ)xh-AVn7?7o2?m36$Ayb4k8EpvS^s75<-n9g)EJh;6;0UeH2#JQ&z?tTFnFx!%z zlT)Qry7PjV=z*uUwcd_n)Zthlh<2BW^x}fHoshu!9>x=0PxGH?P+4~chY-g5t+W`Q z)5En*JxGa)W=11J+%nR;lZ@m8E+cyrSqt|?h%y&T=5hUJi=*jK%LZxXbrXk!>=$i6 zJLvkGMP2Sb1gP;k<8^Q44kRR>{=OOcRZeCCgN(ck8AA)XqbLSUJJ`s($~4oI`TJ;| z23L2y;Iic}>z+(GVu-*q|6%Oi(QZ{5i+0!ZaaywRsIme=y3ZFd%rt!^(8JzhqC{T> z7g(G$HLaLwRuBlHk4e3I2fbnO+`2pUbTIk4*XgN(r$P4zKI;7D`%@pX|EOhdLxT7s zN7ft5GPA+aKkcqJo8FcKiPuJ#$dcM9g4IO+$BZ$BUP!Hx1Soenb>oirR;5Ws2cuar zGhcM7duT~-<}!P_XUW~MRD2G4f&<}2FR|n7CT=UD2EQF@Bz7F(wVPsbpf{5uf2{7o z)($i?oU6@XqcJ0Ny(J>m>=1Ch`G+nL9|1%W;mJR57!9B~#DEUvRH? zQ)AVr=)eQ<^gPzoU0y;M);u)zTtWA~y-qTJj5}fS_UcRPGisT%ITe$F#ugjLn)&|) z+dE6p9KDqP0YDmRw{g&FuQ%B1Mz5`r2M%0H;@F2I*PHv&T1#pe9usm`xR(-pY2gKW zjGB6c*Ve@IwB^f24gYlWUC~6(h&bLsf7wvG@$!-Qrs)5Lwd@Pz;cZ&&ZXe-ytk=p0>`n+xRFH2Csd@Qd=;@%-cpAggQ2$pS(LO9VZ}#mQ1Aj4VE&wVn z`?u0}vDDp*?dK;NIWZSG2Z#Nd2x945v;~c&zqtqs#gaczfw-*XzrjN!y<#58Yc2zr z9PMuS;j*!9heb$oPdcV>PnCryO@}V+aRKJ&p+nrc<_ciooC(eAu!?xydavUcQcq5f z8=u%6UNTl*%a&g|a+rKK{8#$@G;=02_{?ko|H~3HAJ$!-x^y9;q^E4~fcKDtAo}6qOCuQA+ z70brX9T(Ei{BaHXId9y84J($8Z5y}T|6D#!o{%qD^MFI4^^$nWa~pb>RwOJ#@3M+9 z8~AftNPo|6(BFj%qN#+S&q})5M4AFlV+%NqbvV(Av4vKQb*)(Q7`4Ug*0oedlV^oY z6XjnDi)dl# z)=G0|a7@AexA7y!1AM>rXQ|d6rvv-qoM>`;cy0Myzl~h! z1t*u&iYoW;+WjdiQ|0uxcaSx*sjXT?M3llw=YGZfv2^E4d=9T2PqA3?x78}-n_F{e zs7215N`%)QNeF1yxwjx;QzjuBbvT!F|`hRR^Vm}T;0==#cRrT%?utK|@ z&s2{$w!eX6(<$KBG)w!4d6D$EV_v>#G|-hPc@m zS@EvgL1421+ZsZTP9^m3UC1mYf!WBvdG?6$!(;XTDSEVCvc0it48`6c z-57_R%fX}72TEx^B^b^z>rsv7qR#J9cAM{7Z@7L{(4&gxqhbVFRL2a_XZWx~{gF6WWm818aAWpXpYN6LI zk*{V8*N)Xn@7uk>8Ityr;kCB}P0jDmyWg4zNK`}g>$RVYqAwt-8T-;Avx;KC#FHB| zX7(WRkovd4RJuB0T&P>CBV2$mlzdk4dCNGa$R?|vK;+0T1w^2)7zs&P@}+a1 z@WK8z-!q@iaq(602bzRTT&cJ^6z;5ol7 z;m+j&Myq)R(SyUC?Mg~t$u7)piL_pZ7uzWZIE0#JhdXa{MOx2t*?;D;k0!efu4#z6 z7au&j`!O&GuMr*-9t(3x1oa1gqz?^+>-rt6m^b4Y9GGN`6sMJiJ9`Z9A6pKiOXF+^ z{SkvwUk5AZA>thQh&X3`I5lp+#9vNK?A*(1{}JVhwE1|r^E_^JMC;bKvfGA$ofq;- z0J}=Mr1h6HdrG+T66Hu=i8AAv)?34M|knjDXo#ex9HdZnYp>WM>*UmE~oZodZWl0}nYxHGF%qK8D1rCx#Mz)wRY z+_~1uU`L*_GUjpsNiN*E)ryr@u6eFXQxe`56gH1=FKo5Nws>c@66T{N-1&&Bg~%;S z#RhH>xquwo8%xR>ytc3Mh(R-S+{{f?m6Ycb^Lp|sMJ=rEgNCnO^Q(BQc`~u{NNy^U zS@E2z`3-kILyyyAUdL!&U9bJs*y-y5J9!;{WB6+KGzA|5EArwzjGj==jXLkbVDtj{M% zA0-fmqg?l*jDiCWP#$r>X;#w69PT`lRP^YTk>pfd20PmOZbVb%sPnI2A53l96>TrA zZCLZE3DCVwuW;$!;m+eIZ#mv&wj>AFhKBPo+<5{Y3VxjA;(#*=7-X8TNMC`qI#9Q` zGMK?zK+!^XoN7ROTA-L7otX69LDR9F$8m}ob4NOb$Pn_RXOpn66l$hS|Kwm2|EQ%- zq?BAJ=jD_wn1AeX#f5+PIA+Mi_8U-a}dPZo?PBqB|h_GGPYd|Alow{$$ z0N>)N$%J8?F)b3DmEC6Tso0azjgZ^}DOiobl+Tt~CCeV6~ z+XQeeq92{QWIZI6h|1Mb6Dc0j$w(b z>pGVLwgw)qj|AfEy2Mf_RY6K&fvfLUuuaytF%fUt&i=T+xE*RmRs={C6 z(|_cOomx;lbN@xw%C1|2th(?kEKu4vbUhVd@m*45O!!@|lM>ab_O+yNH>;jtRT&WK z+NrGRQ+LD&+J_IP`=y7eW|(gSSiKGpLP{wk_R#)`xA$)?PhU2W*u9^Zu;T<@fi`EJ zScsE)>D#*W<`iiCp{}1eOj-|!r%LO)ejzN<5$05@yrn9dYzZN|7xjN!i{J*>5Gw+f z-!TUmxx6+-?C8o_TY6g8ot&CFqHC));1njzw5`9t$lA)wwYB=u6CSj=E*+~2b-R_g z?k$59@n*c8mt%M7Y|9EUNeKcsn?oP&jd1X7r@c*8GB0MIBq}sGX)(}J`Ia8$r0yzt z6>0!G6F28r2u&SyHgJ4xYOeWEg`73pweOiE!eTM3xCLfD5P-Z2&ik8HxWFbKNqodu zH0ZjC5vad(cA?AhFe^u;eqTn@OUt`9Szq98=7*NO$LCw9UfH#kZ#HjBuk15${OEDq z?i+_a7T2evy)TcPk#5|tB)<&apuaho5g)TXDeF2SC_U3kmyU^KY40`sABdIoMu?L( zY}j&d<%>3Vc!1PmI?8&Mn4YW~aTq^!SFRiP4nB?h>S0`AO+GRhw|_qCRiC@o~pT z>c@Fr+hbq>bVA?){Z4^hSjy#pwgvJh)F!ajcMBrD&yJL0@_)eJ{O-XE^unz4T>Ny< zc@funzN)ghtY-Ury6Siu85=PdS1szJVk3j@QA=Iw|LMb$w2*qhdxNhs^ z=f%=zR&@QHuTkN=m9HnKChy;v?2G846aAHZOhOu4*tedEryD=R<*khb6DdC=RtMRS zqD73IN*Hs3n(G|Nr^}B`yj{}#g!OkgxfKk?bbbCTt*|zJypBb}0*lBoU6dLYp0G8t zY27w;vPJ|1+3=Uk-g+%u_tI5i=98Z}sxg^;U2XBp6eeE&3)({y@4#z}8#-zp6*_ElSuMEbXoLyhj*WC3M!_ny8qUHMmWn zVEX3x6oP(_hP3D8ds{TzN&VLih(EMThjm1r*C)4tsVj7Rk@#wQHH4;(A)4 zr<3$_8Fl6Bc#4$l>Po3%7CfuCN}sP+N*$+NUdK4zIkx^dV*%=Mt^X9nUm8TH z<8`EXXN1(|e@649)>cOvJO2bL(Cr$BsgdeJqEaltt5LKHfQsT#@8t zub`29MM}4n1F^3_;CugZI-ZI4lxGWIoP#a{6HEWc20nKlDoC43J>^BepiztO*V`h= zlpfK7X$ti^t~2;nvhy<(xnSBr>4DMoRXv4fe${gPT#eA272@L#u=sS3Aa_nvHO>iz zvrLL5Z?c;(ob{;)=g6J&52J2x`b*K|#3`LoE8r7o-$Av{;R6IZ_BKvXA+mq>u!wyANr9E&h8=VX*wVn+cFeHl_>1tsv8 zJUrtU`Ke!|x=`enp+(HludMSrE2kA3fS6tYR16&9YzK|p0#@Z#OnlJIb$(Mh(^s=l zKh}zolag+>q^>(vmeeT)jQGe-A9I4n;}CPor^JqKJg%08;F_`_^q-U>m~6{uJM|Q{ zeVuYgl8ZuipzIc9j*oRt_dY)Dxk5Ms9Hj!pPGDUmy~M?$@?Fmh@d{H5Mx|6VRC8R8 z8D?ueV5N(ui^ezqAd;GFSAvKQt?TrB11L+lU(ofj+&VM$VenI4mcdjLI?o8*4(bI3 zBAXI?O%n;Q%<6#clxaA!tM`;#)>_lC&vaK6nT_`N?@MvXRUbsly$LqO5E6YI9w z9f|3daa={`k@~_24e@C-L(WOMNAh|3)QVwEFxp(k%Q4DDj8`kWcTl#*r8ZdV8%Sb~ z86CUe?C)kcBc}nXPD3yKS@IWH4@+Nop~ARn5S`ZnMgTfbAhXYE;w67{qY5%HyWO(c z62Shkvq6|(=560D{h;RZ>*6* zuR$!8o`%e@(QE$d>pyqjg74n5LK9XCm&}4XwhDn z((*gXMGV>rSv|SgR2?3&z4`V?VncP&%q$N*h8aWYl#wugOl!tk!Pd1RLQ&tyNLLrNv=2EGzb@uGb4_*=F5vQbR)i?qZ>8OFr(fnTNY8VN?G-hssZ2tpX~Cp#J=kDoOp) zl&pzO71`e_x7?n}wk-RwYLAyRDUzpKG&!<72$O)5)50+7V4*zhh?4_}}ZPz+}EI{{jf=7+C$qe%ufx z@>BLLgG?CKKfv59&xd4plM<~%VZV+PqDk+|ELD~rIbY5Hwi|I4qngp2EhjbZlt6?} zBfnp@Vxhr4f5SX$Y~r4VX~}VWN0YriGvj`H3cIDtK&*)eNe{UdK_^uMQT?;71kZ2L zPG@)1gOYHcUk|Jg_?m`gTIcJy| ziU?Om?8mcuGVzC?IE>dph7@!fIz|bfAJHl!hKFINn*GZ{s82=FBTcEwgh7IXh5I8pkA)z#B7x?4~APcgp~dzQI1cgv@+ zRruk*7|%55uRYfnb=aj0!FMC+FO+rPLyi9W;-)a&`mz?Ivvnf2xe*&Y75hUumYO~% zReDfj$IPY^6FZo7zY10TNviu#z=i3T{2EDUZ1*#IORTGwKhE1?si|Y*?E}rzGSlhD z{NzEU-f*RG0SgVRmvtXNF=jh4yXi8& zQJj@ilWP($c!}Mm%_nzeCK+)Mz3!aMg#eG%`}q7Iili@mqN(3jiT;^O_zaUB#OWm3 zH0;!`fL~Ijkg+L|*iq7aWadickPYP*`BKx9m^yZt_wAm%_%Or&f&4r@0c%)(Hc#&S z?_XR$hKx__sTEKDVa4a+{w7CemD%rrguj;9G^e#B#B3XNmpHTEvt~>j6-%E!HC}(S z&}liCo5-5A5bXA}=8vY%)lJOGM#5O zCZCyrjZr?b@TExNMQ*vh+_Z?m>0;09i-3!21M(2Vf_98EbDaRy!V+{bn2adJ$?Vpa z(b?B2W3jZ&Lgts`6JW965yIkCDen zrh7a4g3k2xNth^}K52T*79T;=Chy==K!fze`&8Sk5fiy;_K4T<0^iuyPe3ie;OALR z^nSyG4e#RmPI)z$kRME-=#P@k=6^MF)B#a1I9v*S$-3r~|LRS9pqU*;mhH6ejv6MeFZSOPqy)PZoG}g81|u z@`z_6^=xWdre^h?k0aS-zpbZN5%jX()zfo&`d>Xgp{LvR^njka^wh^wz}@kM>xERh z8Fq$~pNvXT@g5d#LHcxe8|;p3bDcOi;Kl$+oMvkWQJLNAi<*&q!q1~Jp9YP|@#qT% zkJa_r%Z1Qnp?0;Nj?&Y;dJ6I6i#*a&Z~y}vkFiAS3UwGJR>(bgPMj&(dsC^-0>r7q z69bqB8~_;$7LR3O*P_u`lmYAWZbzdE>x>nEDU;cvbWO*98>5&(0(%yY@F#L}>?yB9 zI*3Tg+i>J)RTpq>Y9d*d9mSz=x2+6UMN0B$AxD?JPbPTCW%{z8$q?TI5^Ur$&Ga)> z3K9ZFD4OVf$7`RXsd=^Nb*ShiSAf|g^z?$Bj?>eh^mL-09@0}xPn&sSQnk@iXE#f|?*eB4^f zxz$+Ms%2tUKjDlhR@~cfgsmzIQtLT^rFjOq*oj4PqFkW!!(8{#2*%I2y?mR9V?%br zv1Ds7QFBm@->^MFYKfMQ(S>E%PZ$nTL?PyAQy8gx*;{!rJ;EWjCJLQAPDs4nfGzLa z+=F&TDa{BsJEnRax2gc^@AoLYSkLLHld>}a$sP$mQ$UGuU8iKgUN!y4OCE@o;D2bK zf0l#rq=VqK*{u;D%0OTCN&!hvMg-*q`6(tDER|y=yY2OUUSlQq36|pQye5akLz-wB zkt|a9u$(yC1i;@2AYS^CuMJUV#FCe@a&NTlf(d}(jELd2%iX6@sE2~lbSuNbKk8N( zgQz2pch@aT*hx%VJ-@Cj`+G9R>)iHzrF5cxCJbRCsb77Sd;}+{K)RfP3CD&NS6@?FS5PMCkln{>BNJG@-D+wbo=sWZ z^y9}!0c`TQVF2lq+U0>4ipl$(|2 zzOD{R>kWYq>yiF_V+Rv%5^Xu}s``Gg7 za88f5X)ufDQ$vpW4{=brVuPNG3)7%o9?nii?xzMQEC?Hm%2@I~sph$yEbU<|xqh%Q zy=mZmxXbH@HU9{K-)`G#L9Ptvo&$wQx_yTjv)+tdy^gU)T(bq{*2uG0jHI%0*i<_F zuli3`yZQ+a%J_ELCY<>r7`+@5+{~?q% z4Sxi1u6IqYr;Evf*l9iNn<;l|by4S{+-5TP6Gb?T^!s(ibpl$yN=@WQfa7e3g}|}@ zY|_?~)4^fSQ7R+nVINo<-Q~5PMqNVy#ON)cEXW0|+B9sxF9S-vT42i(>r2DgI-MhP zuf5FB=J+1!&T*~s+8%}Lgc^!(>y>aW1T@rKOKqom36r=xc*%WA>FFh;-|uytLArlm zAXPpJPfFMVwx7m8+*CS>Vak$k1PJG@QYq|{=6D^4Qzo2S=_iDk0t|@HP&$&OU30>@ z8_1#1)_*P;Q$7hBB#eX`3ezwKSASIZJJR1MV2R!avxizoI{7pg`;czcXI$1dFtsq` zX5)y!TiL5nPXrkzX#0iJ{VS0z;L-I z(M#m#BBbF(NWXHBIDe+SFOL}7F2@eyBAQkyV444<^F@;CLCh4{RB{(!hH|j+)PU@> zQZRxeVi&oL$GM^WEPx7Aw7fGG2x_dpQFv`?D^oW8qr_@{3haKOm2ek4axatFztKwY zb$_tgxGaoUuULaTS}-&wR>#|4<${6n9V3RuwpA@xRWL_{7FR8HRU$U&<1jk zM;uSqZm(6@zXrVxxX=Y@0M;9Gi0371g)Iq+jc=D@>kV{2X}8dvKueP=MLIbq9uLJizB z{KtZyd?cq4L@NU$OIo;B!B|7aD^7+8hPT1GZe+1HI!T4A6UXG2Z^!C}U*p8_19 z(PWR9#Mwkg06p9$F56TUA^zztu}DnehsITfbHAc&IEfxlfLHXoh1}e^cpdnc4`|4Y zplL6hyGsp`bKvy#nhwol=O_76vn8>1l2V3wx2%icA!pTv^uX!|W9f1C^-?Bp4h~XA zChLNTj1J^T<~b1Zd#dIkEk8(Z$1;VcR_mtwinnhS%#-dBgK#bNy1f^#KrI&d#~Dsx zqYrEQZ>yG*wb8qKsw2BZsS^Q2$l*aG*U6^Vb~-26gozxH<#n)BH%=QxURKQcn5pJw zQk<4f&QfKY+KyA9WfIZSw{ParDl3euu~w;((Py)P9>)+8WJ(dqZ!$8d@fQFvXfEBG zdze|=7{Ood9(=P%JlRFLk_Iiq!YZDUSahktz*u(CGhCasRlxW~U19(=Tq7oIT{Q$| zMmALjP*=*t`2yHH6riS%<>V`_YzEFoxxqXdm^oH68~nz*HteHGn{x8yd~QrloTSxn z!LX*Vql?X)R^jwve}n-C&7VW(6`MHaTT)Ytn@_g)g}in-jP*%OJKd-=vKRq0?#?{V z#$ACnZoCm#D@~9^Ek1(5V#6M_pGH3P;+cfVJxxjx;ZQzz-9OBR^!4y&RP&l^_gx+)9 z?m1-NEXY0H-4h|J2~PomZJ;7UeF8u>cNVDfzQpwmX=l^NZsZ6`85c#;*WOSZdR~WO zWk%gtL%eiD_0wdIBqxscLwI`~^DUFVZ?OyO8kNVB%}rRF+Qw@8_;nka*RCE6|4Lkq z`tbd}9x^Jit}?4a`rmDHY&5YfgaK~D5|(t`9!tJGc!(YY;DCFE5XzX)*n8M4fEZ(b zIIW)h`yQYIZY(n5usH&yFcW^rMEPKR(=e*G$d$cphk=ScGN!ngxT# z`JPL97{E3J#Z1E)6#l~S&v@#Gtih1Ut)8|57|Ywt;}#Ck+0PAE^AzsHqT(ps$Ufce z4(a%C?qF3dGb|YC&cPk6keU9RFSwP3iT`i|zILo~Q|PwAg+@?Fs2~&C#OXuJ>2F0g2u9t| zX>Hp30x~id3HI#(j7>YP_l=Q+O2k2U&phkTWoJ`1f3)i|>_APY9$xYMuwi8Z-$@YK z3LEy}hhxKYS74U3Vf__{_YF4*smDIh*~$?}yJdL7xUNc{Oe2zG@^$AjLk0)11Xz4FQut`3&=h!um{@Niv07kYxxz2Lav(4e}A(_{HG$`alQ0w2n zZ!z~Y=gCEGYjn-x9uBy>ucnharIm=Keq{QvbgYUC6pd9o{96hU=S-#bMBkZMEIDpe zcRQtgbLiG1eT&`*8x@qhW?A(ubv>5lpX}CCr#mjWCWJ2E*LXWCAG?Roh#g7&W?_{Z zBTSr)PhfvgIKr0wfsDADH^`4ea&s(c82A6~Bm3|9aC@Dh=RN-o;w@u+#oFJD6>7Hh zPs=O@L$h^}Adkq4s&AQWGk4({$7Z%c@pmvRiY2e{)iYb{sG@1C`R*8O>k~^(My+Ko z^cKQ0O;6iYk8DpeI+U`^$3z{4+55G~uJe$WV@V6z?VO@pHCF~I47=xeDqQKnWX_|s zjY$KMaUlL#`LUEw_UTUF_bDDAG!=xJKuBVtfpk)!P%LdK3CN`=1J!BcNF0H%g^L0Csv_sV*mDx!Cnt+H^vGEjVBMm>XSY|bKvJ4 zs{2g)sH%Tzuk#*%r0o57Imb|^(1DlENnbG#PX3`Wxvuvw2XY~ieP(3gfH!?zWAZP= z1&CZY;DT?y8|i(QsHT5Au`%6rLdlA^?_Y>TUv;?mg?;y4*SPoViF=NYV%H;^o|^MD zvd{|u5d1QF>pvjs+cO?v-|{V089f>6I>%5CaMXrT;{334ePKs!!LZwV9mU~axJqnz zA9YFf8;rh4(kGR>Kl=?)1;zw5wyb#>JBAbYAJdq8eNP0TA%);O00@~=zEI#>0@U4^l8Bo@G99vba z9*2o3+6H63)5xe}l22yz6xd-gVxR|xSb+uBkUr5&1ikR*caMlwuy!oC($zHBw0BT; zy|cu%+bW#CHP)47zF@W5?W`r=^wFEfrA6FZ*4puEV$+z+5@iYu`Q_5i&zN|7Z||nw z%SZQ*7R;}M>{p#@-l%yQl~vmGPzSZPRA%%O99s~M#vNPqe=gvdaPqNf z>GF3&bUTG>?b;AyE3$BlC=!@A6+%Zk$7o!=`D-lsY=P5>wY4FVj*M0e$xK=mijCOA zOK;t}$`>nTd|x?Z^|H|D%uVD86!slvgzoDb@fAzSVMNhv`hGY)Q=2dhS0WR7qv_J$ zV|lSPlv!hCyA}f)KiuNf^s?WFq9e@dimV#^JI?tp@NEzKz(LbZWWpeK76<55u1kxe zEkJ=i^iX@YU{x1uVjG=4Bh-CQ&{lf12ZUr4da!@Fqx%6q#!^*d<7piV5DgDYHd~t+ zNqbtd;cI+?yiT;~xPlXPjDMQv7!_NNV2D(9{{>)zzBXc(du=1g*Zqd7*P`G5-$8#; zmO-&}w2m{(W9KGT751wkt$dX_heFC;fQ@tQN51+sF96YiVUt*qjqt9C zP<5Db=tfQIGYM9*Nw=<&zOkahVr%i#3R-DW!^N^$WXRqLhOJlmtj;y0+F1S1MWfcG ze%kEhoDUYF=~-@@xcy^b%u&gIqSxBm;jR6Blg_g`R^%&`G{|8|vKe^P(P zg1eRPW+sz|qfZQ|Hql3%=8WNcg!wL-VzQIpJ^mS^Jf!|%L@h?Q-GbRSm#o}9QnPU| zuE?GYG;ij%%$fW~yqUfEP6`z{g~<;m+^`Dz2RHvY!K!dx%q=6J8fUjQ`MqO2Lf1&R zxBD+}1JX(b0n^|e)l^vg<7LK0Hl&O-a29ob8Ejyzf%42QoM8gOMci`q)!Un|r#}aa zY#Ftne`Mxde%zb_uA0$@=CeuN$rF;{0(oNV2l}fSV*jfP0Ff21tQJA#%hzIIvNmnU zpUa&jhI3yJs*lv0gHn7ls1|2m7*AcrVav5-nVtIX|I>%r$?NPln!bI5^3~sA4ZbFx z{-56)yl;^?R{s;59WPYGzvUz|6hh(Lt$ae~=~vVmiKOnnRb+6?dRn?5VB zGrYTg{8_=na&j-ZU6c~?CxTqJyJfNs%5YBa{_Kxh_B1#9GkZ5CpXJzEO)gC0=Ws6x zFNc{sNOT9L9A+-o$*}63)VTV*s{Jo$L=$T^r8*27LVuPfG>;Y@N<2dHzHOJJn*` zXG~*U*kH$}y1=zal~l|9u^}{T#Kn_pGiTF~=%$9y8ekSN)5bIo>%LrIOTx=B-kJ2w zZniSc^p)7L7cq({uYm9__`D{$Xu1V;#UsMed8)N(6sNhoo5e-$amrvSpd2H(+b2tZ zT_rGmL^$`f(lztq`G_>#cSR`>&OJ}MCQ`zFaAL^hxzZi@p2ogfEu+#`RFvCDd3nhR zT2GrZGRV<9y^9RFt+2l%L9xNQ1koB?*S;O;T_{+a!?^*~QEx$my$+e* z3T@Ea>no%?)jKGTbtw90($|qqsHbO4xOZDjm)pYPmS~NiW{U0V=@=KoRmBuJpS5 zTlO=)FO+pxPGiHjf%A@VZUVWC&gIAXNL}kzZET5Ov@U@b;oL+4LoT%m`TwFNvXb>eQ-d-i_WOj80gk9k$|lUOS(|i$gmW#%DYNFpTCB}9 zx+k&HydG(PwYevpyGDp{(6y3BlWjtz`1qqim8?1X&zG|X3J>Zmz_SC_lJ{3BmBnz*^}+vI5&>(KP{X)mn{8z zg>#pxK5<=PW_dnPjnQ5Ws1hIOFFqWoI=yW9QVpX!fS}g}oCzx8qo$JZih(KMeKkM> z%M~hRr~@^qnuWo2&zB8=vAA$p8b+K>mLHWrgY@2aM~t`__EL4Z&jK=>dl(qZbt~T0 zs~3ADQvV$h%j+0GNo*OplWl_8axq-}xJqH<;SI}IR`@MFlO7QHp8m)!?R(ozlmL$< z-_=Z+9}m!f_r7pp{}M^O!Zu#!z^yF2L>0MS+>!Z5KrHqOYM~@(6J@zjyrH77a@q24 z3IX}=w0%HhYP=U-v8w?BUGru1g`#sjeM&`Ulxi19=h-Jcj<1M#ii6itz4g(1w{FwURaj@2P>9Ie}-CvRod&V(vp?Yo2yvH zz!~+jDblnLsm+z0J=f6U?DvGehPcBhZ8*`xd1SGU2@$XbSdbO zz{_j@EA28e$b<3!;lAt8{hclHE)pHJc_?_o4$}l*0I_ReGv{z;pcWIu zgSmxrMz&d`30xt3jJ%loa$R8N>Dh#Ru^0qi$1W3j%qakxVT?3~FMqql>v))&bnRnf z>G0v&zu!g~;>>YZM^AZ0o(zbnojNtn%fi)6jf5n}2t|_53qv>U{vOS=7#_?tXxE7@ zgD}bIGZtk3%VF(iqAwV3rs1%rM_B2yKM^K@-P2?=(mnY?3tJ8k*Y<3=_AB75Ip>h0t^PK(l9t{(O4{6v#NL*r%!3{g6 z*sw13<23sBIPXXIU;g9laC)P_9tQ;t97XET2CB1%G|;5%cd5*8o44u^^=_p~N~@8V zC$>02aSVOy67~FG%%y7>B*<6359U__1TP(030;@`$|#&YMWE8HXP7|F5z(-XjZ@Ab z<;=?L83FE4K;y#X_(nb8xI}uM6s~=o=Oy0Mx0Fy|7!Av7iWRCtNG6C1R(hR-1`5FiH{-0#uv^yK54}D z+Git!?O#LIXhw$V0f$N-1{6nWBTf#B#u0@#KEp~{Gh!KN*;Z*DO zZ&Ef=Us}ansK@-%;+YIwsDIbs2y%GML&0E(r{j$Ep6FYz$Gkfp8$2H>s3U%xAwt}n zy*0*Nu;e|1ct_W$M1lOnJfH$;9H#RLTeSYEe*3-pgv2Y=?|;APdo-Zs(2RbJ$&p)4 zs4+}%3Yga&%1j@f?w@`=oO|{d4FkE1R4@Px2&LRBbCY9npNCvgxZDIB|HgI?fC5gS zP^OyqoXBR2`AA#=Y15R_Wlda%L>Na(>zS9ZUvL@fuIJS)L8J2n4%Glj^ucMAH zQFrBt+ll(_zeN(Il@<9DpthYY=DvWzhS97`z(x1_KZJ5DkCasVoHIld`t|_yRsiVf z4+W%?yl}TjB5--FT>pxGQ(<<{iQjNqMB3hKD)2&f^~Q+V7YrM=Uk}kKnA@uTZRLuc zWvDH<)GPW*jOX9B6Z`&t<`&JgZ87N6w`-n_tG-dR09jPQ(bT{(EHM)^bHlu2L@K`Je0p)$4yW`?eBa0 znBL~8UuT8y*a{WGxw?yB12hxF-10j1Ho{c615uy0+q(PSKC?%A^S(FErKW)9+pgiV zU-Rg`x2revzxV9*Ck$L8nma?o-XX&T^Aj7cczlc}Lwxr)`W#1;f9C z*{N?4DkX2oeShzc$$kAt^-wO^08uRIr3puDLy(K5zw#qKw|K)?6S`_&@-uAi5k=hFWI;(w&T zD}8Uwzqjwnv$pg9hjZ-Pye;&4FJ<1M(_e#I=zMj$I{9B2FTwfTko^Vgf!kkXFCxT? z8;y}Vi!HZgE`o*xlrzl(;8{^%H-Jfn6nb>`F^Qg$cI@qGx zmP%Il>r@W4*|AwYg}Ws_$!`J+ZKLl|$k+M~Rj>!ECU6w!trVLOyEN*b2n6SUZmlU; zh)A0&1Ccv)K|Fhl)oo`xOH#hfko~?AQf z&CN4hWmsRoPi2pPNM*Y08ZOzS`dEli&4l0j)AD6irJru}rax=0SqtYS|7v`z)6HG} zOayH_WvqEeNYt6zfhC{to#e+-H;a7XH6>^XaahdN(uZ62iznxWY=qzd=^PWC!d{o$ z*Gz4`I5Mz4yk@a-CoOmDL-F+F8Y03ZAMYQ(hd+f#dVX0+WS|$Itv~1T>G*@RkjnNT zvFmd#vKeB?tK~s=JPD0s6!ow5U`}-p0dwJy>`UAiO7#68@$SJ( zHuaAUubD<0^83+|3bL78k2z1tE~g93;Py$A9lU_YP88C5@)Vn!!bx-x*t=T+sSRLGN|WdV#Fz_Oe13!5w)uV4&C7C9t zH)l4{zbdy294x-B%4Ta_E;()C1B&RY(u zO#I|r(~vupEG}Ywn^D8|yN6g#=f@^@t{}fp%=$E#1?Z;9W9V)Wx_Wcy=Kny)%JL;Q zPEZsPd>tvdgLtzx{FXO>D^mTj0k9(+u$F~6J^6rAWGv2zLj%?CR-k&bsp+*7&LM&7 z<*dgASIHd#8RH7#ilUCqMC~Auv0|ut-GW41M-v{CKrh{PgZ3)#fvqU*4*G!hwvZJ4 z1b*OipH^FW^<&jzjR{q}4!Nw4rW{q}rKL7kM@F2`DZsc(#sv)##vNZ;Z{B2O98b#Y z1Hw${p<<$9hhIjPyaK<-YkO`fAfxpT0-<$=R9TGXoolyj0cRXDC>v^kl77OuIh`PV z!qx_d?TExilMfK zPVae!%&_FT#66)z&(_4cpKb3Q?lrDcWKV!*bxx)YU7wt=(9YyKr+kXA>Q+j2?=5jl zT?8lZC`D~MSZwcbwO392ooZ%$Ikg0es@9JOZPdXE+pNiBb8FSux{WPFo6G0#VrTE- zxW{Y>3}wcHi|yW~hx*B>o2wzWebCZqflUV~y8`~ZMsSS(*hlxzFh+P(*!Yal`mG`& zgP7ns%MvhwLZJrP#00t5_zafCUK>RZtpIXcG*!^nbtx3f#q0DytExpYd$#t0cas+IyNe3?|#vzI1FQ3*+~?Iq?L;H>KX)7J3NrZdcL@P8 zVOY~Ck@RXZ^aNo#I#wt zIO7bl8A=tPEO1bsEkH>ZpuEifYY3FD3Cc>68UH)~g z4&S2O(etaSLl7DQo z)VWs7m*1D^1f*5*N(sKp!$?K_Xk}FB&91af=~VHAgY8um|bttIK;U=g{M} z&~&~)o>;o|ov1Ev*NG8Q*J|T7BQbNIYeB z0G)4>C|j>+ea^{Fd3q07WuWzj`$B3qp(>ak}Is_}gms@)~4*`Cp?g?+@SHM73XDT&@a9Wx@ zx*A!FCcx=VW%w!K!g|$%xd5p7hkrw{@hR@LUu$eAV_#P3LVa>9SIrex&{FtLE~SJM z?+#yfQY3wHdFM&Mj|S!=k0CR}9fb+%w0C1&zR`>2H>_Ly#(m9*x?Cg;r%xX^?7{Ga z`@)Ak(wNM5E~9w7Zl%pEE5BnRhZ&yWEN3{*d6T)VG$#K#A3Eo&rn*~AZd&;@QUP{087zJBK#i;;WrR7yV!L%PU^lOhbzPSiUkR%ovne>LqNEz6Yw- zweghmzLNfd0`NwY-&gbf^YBRBeXR?l>4s2v&3};}^+D@gKN4nm&3}`^CXaCGn_EAp zHD!TJHdLjCWGww_2{hp~zg5B17-9xjRSGgDIb*_WdJNoymrt z#(}UOG!iW%!9a&sMAD})8kw=qQeo ztmJ7~ktBAPG#?a*_MhKR7!*{=U}%2K@XN!6mbZJeqlNZt9v5v{}}F=`;4vj>VRJ zNaHo{E8y<$t@X^hZBRCz##DZ#ptPQn%n>fFt?Eu|l%?&k&aOHe@M($D0L+*8~m^_Sm*=yeoB)Y1tN;L@NJUNzF z>IldNbP+5&nag!Y0^K$))ZzEH`Hh%Q0HgMO1(kzOin9b5qpz)64qBQS7eta4Pi~Q! zGk=kV*MJx9KBtl6{F?*vHc%lvf;-UlclGe?kP#~zgbkunwdA;n(Y?Wd;h=^srvbT$ zOpioT!(t`u^4JlTH`zr??bHg^F@kxE!8BRuQpeQA>BT5)JqJaNKa$loJ@NLx2J=oV z`Kr7EKfno&VR5HnVZFa>&)%>3|42I*_^7ID|0fVJVDtnV6&0^hqb7@7%nCAbxHw3UN@*Y1@Hbn{8uN zqT~L=_M@G)XDHcIu>y?pyIY;>uD62Dq4n%4m<61&{{wp29CeUY5TBq9m9x>72W<@_ z0LFVvk#K=29$5iU8!&vc^5trQBB%RBu-(3u8i~K??cAeyP;!t;ijZ!yzA=nNx=dDe z)Q8PtT#}C&*5YHtBIzX@YS?ow!zugdoH9JvULirA7hCUoG^HQVd=CA00!L#0k|b!{ z;}aKiHCb~tAxDB)vV|mwvxX)C@(O70rM!<_Mb!o6@ zEud^ZE*gNih4W878##kh34LaSV4lH1x7Zab)UAN>MRm`acVw=Fe#z6toVd7D|LF=+OwtogZ1BOeaNDj zh@w2s|2{ib#85hKqV1lgi8l+Kx!1DKl{OJwU#}oCK@nmWgRt2v`K;cL^J%57Ki47x zq#Vi^s-RtjZ{;R^B^h$qf{$_-LTbUd^Y;;Ih~AyH2gqfk@1Qg2{<%nj=oj3O?W;f=Vw~S2TNXL%p}v?mu=@}zX?gtxQw7GqSWg z?hf9{#J^rl?4IDX9;uFMOxM|%Zua9``Kv-=O+T;fP_}n&f3|!%R8l=^LSb0Yh-wym z`VFuodEf$FwIunEd4*UDzeBJ0pj4l@oYrp=+$4ZEf=Vz!^qh&XPVZ-pg)`=FY^Zgz zIMhsof7iSUleVoN@d7z>1ekVTVGtxQ^GZ3L4Cbf%;Jgw%Y9Y}-f4UIh7V^^Kv+#nZ zi@VPWx@RmZ4`HnFnDc6s*KvVAe#EwDJ2Ya1~)#ZuK zI}YFtUabH@rsxd~UHR zwMxeHViH&sN4QE3qi#eC*6771V8Qh`@y$sQz4W~DZ6BfXrbRoHg>*!|Qr@99L+u0A zgOZ9Ke;y1M0=fbJ0Z`m~jY$b1>dbqWy-#)*f8rsrci{r6W?h?umBjuwMBsEwe2Js? z?I$;#V_14kkP`yNiw7+dAQ}{c==vwgtyI+UindmFpHEK@zpZ%J;_oKT#Hhu73@Z9FEIGx0^s8I*f?{GdY4^;*y1a3hDwZ~$oU zJ)4a2>TlU#ch1f(dg|P8uu0$OD}(<2#qV#WRSIia$#s3%*AWT@)NxF{5u!I7Qx>!V z_@(&yS6Sss@k6f!g-A%Gra`+M-RR0hgy<1o7wEeNz zpJ1E*Da2t8iQ^cQ2O)fnNdTlAjkHlJppg(XeDgtbmDLDnJ{>B_PlSrG;GbJ0m5&F> zL1F)M#F7sbXWpwKjkj#vn(*mNxK^0qwZVi3i{l}XoS)(|YF0@Bs&~QYh9MuJ=2^!ob4VEhC6@#Rpo~FS z78tpI5@oz@J^BR7*ceW~!SB;?;8^rG9}g(QfuFwq$xxcP7by8_gOfNK7+EJI+^9<| zq1^mxJeBQiSK&>5`vhRT1hTt1pE8ksMVSf)TxwkicmF;s@^}5feUQ`E3AJbqfQ&#d zqZf9#u+n0;P!WB7w(`H0tFdB&^{9m&tz^l4VNzyhP7wolwsiRb!zz9cpO zWj4Gf;Y8ZM4ui{H%REQkFWRr1tizjz$XWQ8RMJqzS--!PLF3*1eeV02h9Z+KL3zmx zU*U@eT94V|83&V0Z(+NrbHj3|!az`TVl|K9!_>#>BDaAH#lrKlerHDznK-PR&_>KgZeb$mX!ldkK-i_F&(G3$4MS+=>;<|(@1l)E))q5bCzg_OL_r8Ieglr># z0Nd}ZE)SqT* zP?7fcXxoS1JyZ~Be_nmjEj1hr=uxs{r2QD6o}FWlC-d0-!$^CreyE|$(>}vb;OCBxN@9?fy z)ZTr@p95s`^{|TQg9%FjwX|ipX(m7okunc@&U`sBTdmnCy{*2WUR>Dwew*fHbnp9e zeLuDL{a$@PruY2~eg9nV`|tFGaftLf-jn!Sc^r887HJ;kfX)k!~a98IDY-j-;Sn!wtx)ji^Ky- zxG3=1;0zVRP7dM--Ir{tj3+OuMk|SzUh$~p_0=kpx}ay^no-`(_LBaN(RxZkJWla4 z;k>vs{e8dE8OI0y%5MeX`0&e#;X<*O$QvUoxUkkxpVKLKY_jq6Vvzq3w`yzC0YoV^ zx#NBs?_LtC-L6Bo;;1v4>n%DOzssnMO_IpzX<2ppmS9M8wfm(S_I0sB!bGoe+H`r5 zCAfvVW4ap$0Ymn{@8p%En^d~GJS{N0CF?c1#q*r)YGcB z-9n7j3%9Dz^Y&Mc6!%BOYM;R=x|5O?rZD>w%%*o4Gv}qSFD@hD@b7HoHf#g5s4Zv3 z!&P&f4k=fz*v+FhkEWhfR@q3XX4lij6&kY~i{F=iii%xtG>YfuEkLgz@QP}rae;wh zD-@v9db%+k!Y@SYY`EMwKuRz)H%W}^$EaUX^?WM`y;%%|!DNfnKJ+?2&U`7<-6@Y^ zT)Fn&JSKKyHMo;j-6`u5Bd_DKvTb_daGQ~7F97uE-HX;U#lQRqd12^l8gV&_%-oi7^cyo$vZ&%k687#2K5Jan_839R{c905T@=G`_#AslV{k$qZab!hS7r&<; z1t_*!Jyc9jvIVMy6}up-%Znb;2(qv9lxJV}8RIL3{zr0L;f!D_7T=B4_nnnl?oJWu1& zpA~Pvh5yJzkp4y9mT~yhxv6C4fqC{;J*(Zqjvwy0x3F^6@})brZQ$nEyBJPQkL4`B zsprw)dwu2h$=^FouXRs^>Z~&}_aUKi ztebO0MTS~mnfwC@|mT}NI9LICs`d%#c{puwL z|1c1Aa<(hyZwlgK$NdAFW?X8`5`?SIt7Iua=p#755foG~tYeqx$t*geG9-~xNn-hg zUTc#q(^HV12!)!tnQ9OP7>hBYgnu*=#{|AOqF2N;PLexmReXftX880WRA)UnT0PK# zuic|Y1a~p5`j8D7GlmxhjEEY{{4%d&x;TgeMsKNj>5}6#4y0+Fo@n86+D%gjh*y<J`&h8$Ma&cWF*I9Qiqkz|=P%23 zKG*LHZB-tT4-}cCsq?{oS=pC(|E%;C^2c%9%SFw;gC@p2>!9`FbN(fcmipQ0CN$cu zns^mSUPwpdb1Zn**Xt|y<_KE6-<*MR?{?o;gEOE@V0AB``X8Z|AJYTBfmK;zzhmee(> zd>x~nQPHlSfTe#Kj;=_%d3NhQM;{9e#L@ALyh4IfNku&MT{t^V^Y3D05ci%ohD>o- zS1)59g<>c$UGld%d$o+WsFn!HrS1PzSHzX&I6>&NozbKx?i{P#?9BZt2p9E3=i+)0 z_g)^AEGtiawdny6R2B$sd#1b3c9Fl=0=|+JX*gs4FXVZjh$VgwuA1A~D}~I$pbZ zdewQ!qVo0wRez#mL>!aUL-6G)Xg`XSv8nMt`9RgrzYmJH@khD2<4M?OJT{@sUZV~l@)jhz@KfNg9n^@3 zA7bwTTJ19l*&iBUE-Y>@xkgKN5N_{S+}I6uh@BQQE690<#u|A zhB3aieW;c6#KXA+8@?W5oSnvbYvSJX2I0q7?0BlEI2hFo%_@Vbq438Kz?Suhx6<$Z zcIvj!lTnYTm>ji&wTiLb3$|xKT-`DgrPjTH&+OG7`3Tt1(JMq`KGx<#twm#^$?S>{ zSeM(717PXiBp+CfBLzpo2<#6&1Tx$B4XwpC_ z&0A^vQ-TCn-p*ZUhZG}6v_GqqL>D3bxT^R%QmvgAEFW5gnaVe%th7C=l+Ks>5$uw@ zeEFKyFtj3bR!2|IF(swW1G_q39WW3Z?q|6}J*yjC@~{NE4)trBNK_sk0b}#Iw1g#C zGpq$=%oXx;#5CYL;i--(HrToP5%|Wb*{;#$MfAt7UxCxXJqiVJ)4{mWctHgfi5);xlc!P?TA&vfO8$aOJ^T+bP5$^Wp3WU zd^KQvvH7gTj-sY%nE}Ndad^u*yAN4DYTC9{4Rs|Ivj;^|u|o@ax@NH6XN?v2>gkNs zuAY4sffp+p3Lk;x)pk4Q{Uag|iTK*coJ~a?vpFky1h4MZHrUS113F(mq+wv^z-JXt z64UQ@?Hopt!*;n{=am1JSs;R#x6~FKP$sdaC>Z5Vi~HP+A^_Kt7fklb2cS$9jaq*~ zjUNSC=YI;c=`w``XzK*DBf$Fq-*|(2_1{LlrJ(8G0Tv%F84YRlb>VjAt`Wmb`ksqR z#u|;Scjih77bjI5B9@Gg!_j*T(Hd~TFDZ>c0J^ELQW6fF6U z-cl3r_kO(ja{TB@mt1AvH#C1Wo}5$wmzCvvvV`DlS8+M}x*0!mA7;q&sGrqb+PeEmy zfiGx_^r6nAE4}#W9V4u@O^V$WifO39)ox`NjgcY zL&e#^UFGb%gAjD$a>@{d>Wg^K)oc`P4G9~#i2CeESnj_|{;c8hxm-TW{(^K28A6~E zHw3L7jV)kmsfat2iCBYOsZQ2TF%hWaw-%EB< zTj=NOwB5(Iu*D_&GIqp*8dth9udF7T3k7gpUN&?1J}n=}fMc(K?e)t23gvCk2hv2Z zgRl;B!q(eC3-<9vwOM(W-}HaKPlWj2A`4>&#ujj3^xloMk5JQC&iWgaa~4YBs%N|# zNBA-|Mgp3Lm<-vEL_%{@qpKtB5z1Lo2}v;w{#vL#j+221MCjngQ#YHRI^U$`h_s(A zK!O<4;>i<;l0o3ebF1Zj*tVKQKhl1#)ky3GZ51RXz_+j+5WAQPyErt`K2AAO-zbmQ zzV6@1*+6Hd6PAL%UambIyqr5_B&XOqDiAUXm)uy&;>5;MH`z#16R2?fz!Cb!;lOVz z7OD=`;c=1LS%+3%bDU1J4{D*e5S7bxxA1+<{bMY>$>5Y<=9wZnZwr{xusIw*^X} z#*p52+TI2VM6@4hM-Qs*2g;LIonr^kk#?o~RX$9S^wYGY9WqDprldmar+W=X#0V0o z>)GVy!X62^7j?M0m0Q5Zu=W#I(Rg2^Pod4B(feq7HL0S)reSSOg^RT(A19# zbw35dQlU4JqxJ)xHuXmYiw@~}t0U5Wrj@dAK(0l8HdA2>F^S_in(HoS{#aU#de3M7 zMDdWQ03Un=OC50+A1sk{F&QEm?Qnvt;a13MXbhsab!j~CqgR~^GUWy~0dPX3eI_#&O~UPbQ!rq7=#1kHUbah&d0(Y(uYRN= z+rdY%{qZ))q87Q2=}?u`fk?J1HpSn0PHteaOU;Dd8@xxWx^T;O6R-An=A91zjwTPp z`BAvUS-_1#^T~1QObuPZ2nwS83B3*Lo8QGwG17iF`Lf^9!jt@k$nyQ7I)c4_o^L7$ z`r}%UEsCZiHLk<0JH+?+m2!bI{%_kfF?bm)X`WIMjKI0ibH`0E!)q*@pQFt!=wsA0etVSS} zSh~t=9lvembhrfUsPuX(68KFv3|^(4Q8oxH4m?t$K5#>O@2cKLr4pwG$oHpK1JN;y zKL8Ms?M4(m5P-VD=zDYix1Y1Cp?JH%ZMTDqf*$)wX5jj}T;{Do<}Ft9?|L&c08m%9 z1NZouLGRKn^mvoHR%zL1Sazc^k|OPYwVVS%ZD!Q(qYEh$ZJmxp!_1NPwB<8nzxtSL zG?KMZnQ3sBZrjm87XV+ovL!nHP25NX3euA$r{Ld8D*nXkg)0CE{FBX)@Ksus@xnrD z8ylxc`)a?6l3alJWtPWacYiJ;U0-iqqIg;9%7$vHPpq8k*3~#|Kd}Pr)VSA(Q!M*FYIPP5Db{Fv=mEb~Bx zQR2L-(oG)7QJK@`ST?94(!NDGQq%4w0-e)l2b#izNc$UBvS3s)R!|vDbPNgn@#iw^yC~<9v7=xMd;ZNzaC6@ z2N62mX?s(z$x>op4&T7LoCCceg@sgy^zQJv1wRT>_Y>z;GTkI<Js9=GVR!XDq#2I;&>>X+#0=gj+x3H2Plxyfp`7Ry$r?OAPdjib^Rmj#sP32uMnKn2{Ire!Lq z4e-i!`qO9GCYZfu|Lnm*d(ewrmQs)yS&V*WYYAgAN-`I)vV z=RikSAa&BYY9X|X7~i{j36b?lK#hCDP1Z}IkT~;F`7K!^R*ysizn*jpnHRYS6Sjv1 zm=*Ocg;+T=*9*UKMK3k_$cb>@rK#KytVfv(DX+p2QL(zWR0HwjE1iRw*ry6e>v%&9 zCPOOzNc$Kgeyx&{?+!+X=1&Wdn-*!0*;kkioEM2&LlkF7EX5T* z%b?XN(ms)*&I66bXY{PBU%-!>Ji{(@|Ep!S^&s2}d@XFHq&Sv}jx(_?is3<9TVA!1 z_9@CH-h}e5?F#!;26O$kk`qfOShAP|3mnOpksQ@JHp+6!3MJ@Zr2YHW;8|2Q+)5ou zmSjn3z4O3Rk@glorecE_j~10F*!R3Ywm&-by1(2Dv*9et6lh`JJ#xoVk#cM5X?=2* zlvR&Kqk%M{W;$Qu#Blsz)>?Y~02#P2kL9#9`#%6PZ!Xz=*!i*qF)$8fTU04}?qaW(I|-qhmkRpy2l2rttDIqxKc0GV+? z@wmw3et+ufPIuZ4%o`tK7vDviqR&YCttyu2*iUJbUD=r%7R>RN;%CGJ$XKrA$$}rN z%bk8pp$$7L3YPGH%Fj6!nG$#rUNVJsjnpWN<@Hh0C z8$c}m;-FrN2P5(}oj;UeSynnIKX_|Li$8$fMYyq|UwIx26D4Nj`v{s6+jL1kFhL~wGU=QGIO9An-7!W{n94)-DJB4P&79jA1B2uL(OotZ;7!%)32c4k7`KT zXnX{gx9Bcoxk|66;Q$aI(bIm(m>*1llDX*jIUsz6l7=l}b0Lnf)0phE>G;UU&Sb{4 z5JJh8kz91riVdrMsuyUOF+5_P402CRjC6)UP2?~LEu=>_pgq=ss4Q^a^E)UMv2le; zt#Dm<$o%-o==Tm(=!sR#@{v7&@4SV~-JBhgVw~2O!d2rFTRmK;CItDIR?i7q4LJ;RaHIthDX}#tyHb;WG1MxR1?zqg-X@tW=v2&4S$(5 zq@Gyq3d|jYWU_wMk_X3=B_|+0jf>ZIBLDjpG1^P@Rh{_&FBn2Zu^sx3>Q1bjV9BrK zlD`|~e2gULfyW~K$Dc5KOtRsG@^h2J22uSf1mnHCun|K5v{~MUs?JFJJXJMibu=|R zDt)8BzWhX0I!m1bo^!~+O&XVCZ7Pc5@3bwqToiA>Yg8_9Q`YsV<-sU)uCUHpmXy!F<$xC4wq9t!Rv=wl(k6ZG- zhSOi9eI*&Q#jyQI`x-rthc8Cj|Eb5QJ$CEyOdhRavBi&Ly*Gud*95^Te zPgAM7L!Gus#tNnR-qLF89wFJyB8t1$~qV+|3!Wqdlz!A zpfVJmWXv86hi1vp<2Uh#jhUxlbN0pm(fNsVeo{S8 z&~635ua~-{k`vKHglQv)Js{X65m!&L)(I_pVIK!fx7jhYS!L*(S2eLNH!xOYLmb9Q<{0l+{^>iR^(J1PDrwj8`wrr$xrvzD9VdG z_VNe6&^%*##waNF-=AJ?dR}8})G2hgUnn(>Y4!v6^hJuk?Ve)&_v77YrAF`e9>j@& z?89E(dr(_|pG@PDPw&$U?Cbr~ITq99m*SxJlREReuwZ>8HNK)ySo5S`FzP+^Nd>P^ zLAh(}fpaf}owXQVIli8cb2Svr;T-*wYx@z9O(e0rpDw64Ikayw@@c3=N7__pGJ_VP zMT+97e!k-;Y~ER-~bPSt?N6TF5TuB^cHx!DNEU z>;)!+DQ!jj_A?(QM^MyY66sm)FFQ`_hf?G8{Jp{39QXdEwZA;lvzB^7OlLVl7ozSR zLj#}Gu_bItf{tkk$+6L4pWd-~wwuWOIZ08&Fx8~BLhyXke%h$knNYKUgNIrLD(H#+&yuR zYA-3&kylV{=2NO&O>a~gQ=!#D63iIy^+*pcl%u)JXlvD~&Mo^!YL`2SdE~U|kpycK zN5`Yy-vz5Dt(CqrR8j%MMqq5Z%=*`%Qe=I`2kXZVwTbvaGH3BRBZX^m(JXH$B)F;B ztZa6@3pxHY%M&_^iX>9I&Xz`}tpgp;NA?EXNB1A>R}!zIcG88@KPYv%Z!58)I^BPM z&IYvZj~z@&^Cjt0(&DwPQnpQx2JXQ4t&H;?ufoQMP44hYPNxaAcR+JVYGzNOr^HFT z3pC8-*>s{`rv_OZR;BgiTO7*zrkv>g7-R0mj|GsjK=^f_;sq_(NEP#2BEvCQ9#(O< zxV-B-Mhn<%G;_A}=E3`sdmU^aOkr@Kgc)GmR4XfGE_}M-3qrrtwIkD)(?jk%^wpP_ zz$k+eI}eN`05?mWji}Kdku$%6a%sI~A)5bXpV38A_)etGCn{m?f)w;CW^;|7h`+hY4f*Tg8N@ZZU|}Gw0y{tp z@`_9#*}NfZlY_U8hJ5YW!NCT3FQP*Y{t;n^UBP0&oDC}WY|$(P9?|#EWfksIC7avS zPc@cEn*e7>d&L?Av0N)TD1z zN}>}d01hdSpn_U==$)ZDZ*6wx%1}*x>0fB5T{@d-WhM)sj-=e42`sP|C!c**|IE<-9G#S+WzEJ|?1lxvbJ14~J=(-x@LX;_DVDrbXcJ4e z3C@w^&8I3`YHZKI4U2w2-iUX-r4TmxssjT{kS_&SXmm_m26RuoyVz;{IfbxLEnbw= zIBPqapWv-@(NB0|_@@GD+93HMk|!*>El4g6lYdY0h(&h3#Rionl!7asQ11ie8iKN;75Lbbv*TL zR-0W(Kb}Wwde6Y8MtS%9!9AX&rl{{M8?Al9X*)@^q^=#2eojq@SPr*(AJnXIMcQ%P zQhcV-(eQLg-xfqxL}?<6K?b7fs%%zHlE&P2~L**fUPC4w}C&cPLCqA43Tg$j#s4ZF0IY zc)NtR()7u}TXbx4e9h$a7kD)!8{2<;&4jVu_?l8~d&VvBL0cVxp20KH`O4vu&JT|q z>y=e^A01Df?WVVAWVP#O9B0LidynaJ0YqYXzUKk%eFIGTO?Ol9VGSN}qFgW3(!69$ zZJPpY%y=L=Wqmw(&(jL7!N#|zadvddlMl0<&N(s-1d2BOu z3+9_!1TlrfmTm4+Ox#-^J{#&lx8WyG-$n15NpglH4GKBSW|L zGbV#9Dmf5Vk@_C;1(B3@i9-e!#4Jg~CJ7y9DdamW=(gsq2sJ}`mAK0^Hq?m!qSB&@ zMQ1X-YWiX!n-qz=P5+)38DIC^HKl`6I)|au7ZrY&Qd2*<)ZEsNG@AwFtWKMO%ZnSF zhOODDyhLO{UXcANkKz6r`SBpqU=|HreOk4CI-!2gDWBedLN}pKW|uyU{AdwdkH61(eHB9y)D^G3fbkHai5n4iN0WE@6L2-5>8~A! z`^DC%*XB>a=<-f_JfkY39}7Da_0H73mzv+XyKT-k;hepyfH1kA`Z_3xx>aB`aZAA{l#BaM@m5_L^ zzv3cGOSF9HW81d4t#3H<>{L=Z?^dl1yUU~EA!xkvS z&bDl3lZM3I-W=t0ZaK^C+&RQeUD3}K6X^6~o0Rumzd>S2-^{KoA$CW*MwfpNcP^k* z^B8cFuqv3God*-A^>z50AmH|Je~|&ftwV5~{g>`T{bX+c>P>c17lcYCzacdupD{&w z@!tH{b{hYhB^*;vwC+yB-uWLu8JVZ93j%{#NIP8;v%qGNU4y1_8mCkUkJsG`u(JdTEk6)LLSw7zgl~MZu^yNpB)meq^sc0b+W-*ia0X2wB+I@tOH_dCTis|E`3lgK6 zoB29hR2lo|{kEcmOwkQ*Xmn?xhwu?imgSmUAI|Z@*O!mlvF!tcceD^p+`R{c-6US_ zD|}b(R#p&|*9b#^Vi+{F$#JK=!AZ!_f~JXCX$gaZ0TyviMc1Q}qhYRGBHgUfBb7E2GUId(G+-7yMi8PFd}mm3?Ey z%*+w_nGfpC>?Rl7q`bzWE#gV`M||aCz^pY#^@zFl17 zlP9r6+~kinMhi*Pkeq8c;GC*?bLTp>k>-0yHEywMAA z+Q(T`vp1eXjTSL8^8?7tkT?4z_L|%Z0L&59OfzDZHHcAL}oBXSafZCK_qOQGykQdB0IieeaC z_N7>==z`2N!!Ud*$J$rl&ZczK86~V*bC|en(MOko`*Li`pPSrDlg|gQp+2AR!&T*e z=-V?k5ajyw$e+qOXQES9L6$>A?8jx?eEPkpw*+D2PF!GICP(TQcbLUz8xSaLy{27<|Ty*06_HO{;ugVzJ1Gt^u=W#z_d zDL?hLdr4~Bk%xr=c%jeX$!fR@>zoP#P+F$N2$OHblso^E+#qr>?agntj z6@+@peiOCZisjxKtfAa)tkp~87p;BknkIEIGlI$t_u_Sb_E~cU1v7P`D2djruO{WR z?QgxcUAieQW8O;wFZvG9F8#lM@c%7;Y1jK5hUby)=I-`LeUv2K}e|^>oj?mkL`RIsk#@NjdR?_luNNaP<+p34tlcyt%dTLN_(P z<=3OT+(nmEU9fK9sxd=cZ%0H&o(1l<*LtP*{T0>mvZXD5+T9aN{kB>~VqQf>wDW_r zqJ>Ymi{AL=_En1qT+WT#oBEV<{Bq~7_>jrml)Cr6Gy1VJ>2RW3QxA_LaZb-YH?RVi zdfPhR>KD7LXLkAJwb9PEPK;dEGoIaG#6oqahMk_e|MUxapR@aK>^-Irai_c&yKLoE z_kQnS-M82I=2_9s?Z-z7w?;18daiMUA7X8+L8OMBoVx$y7-@5Me-E^o{$H^v8>5%K zd*6=h|4O;?Na4E;-V2>?9vSJ}Rm_W^^c9qQi~CkB5(>vG#3e?8AA$d(M#!fUouur)@Exs@@|w#_+@3o@KS~U6Y-& zY~YHWJ(0^Fz0~d8eik8S+`{$lWgRz>aa5{gPDA0du_;+Ux|=2~TDT&yYfv=t5BAxu zm%ZFhmlj>O!lUBL#25F+NIHe>trv=9VMbC?N z5|ztoyM>II6@UHpj|rBaI=gJq{^WF>KkKOPL{(R;*j-me5-TosQ|A>e8p`J}R8$tL zUEMq><1JXQfZSQP^NnLU*LVKB!R>tQ*vr?9^j@o4LxIwWH~y5OMJH2A1x`$z`)>fd zsE&7M)FX+`erlpLTKo3&(#zK_FYJtXC8u-`S#%`>Gqz~j5Z46sn(bx84)G3t2A)|+VR zd+P(8%A6fP`mR&oJd0B{r{Igbjv9yzbPqE;XUD8(`_(&b!+Azk;4FwpCJJKwr5^+= zHeymxo)Lbc_7rFC0npxxU6Y7}JHZruxZE%Q)zyR1-=Nt|KSG(ft_gaTn)vh(H5X)i zc$u@K?(CuU%`@lhSp4BZv{@dse_*{cPtVr=EBWoOyK!&r-(XojuKkxNW9@$@XkYZ7 zoo(&!JgPS0%vboGIXempw$66u?xbDD(viLb4`~~!4e><3tcF$O59=zvTeYSBrQx6HOnv;_dM#DHHJ@-=lBO5n$3!e|geNGq|_pj#?*Yor(z zZsPyv`M+aD_oVeJHcnc)*IGIgJ5F&@MXF^-<@4E7c(`|X7}#@igrOOLmcO+9y)Gg) zON-JXlVJ{#b?2RmoxH(7*O6WVHaORvdH{*LO6_9^I<825Q#iHbWTOoyvB@xOSVue+ z-xRMK)ZDn@eJH)cvV0uYPNj^I#D@S!SPMNAWX<9^WFT+v zm4U1kFh7=o>=P2h?}KW!0A|fVI;{4Jz0lb7AANk4Eq;~Fm#CL4fIZ#Q^DxQaoo)a) z;LbDr|2TL=&{%K@WQ8A0Kaz4jP6^A5&3#GPck#LIlo>~(4vu=G{WYQH4R6aw4Na_q zA3jyYVY=zKyPwN3jN-k3e)=CjelSCQus2_)!Jsee>Hb}=t{e7Jmmg5{5qRBJZ7@%&FZ*LhG7)@43vGGZC zY#*B{I~f{?J-5~Ec?1$$)zt6m$Ke}n9oCc44(l%K{NED_3igRtUC=|A$=8nT+K%{({=!42blxIqJG^) z8khtKLJ(9tZ7D?95cr8&p%^J>A)Jq?@{`f6W`qzghpzbM6wQ z(jA6>zv)-m;6{3uZF?p)ukbZ(letogxolC6)VT~E+m=MfmIz{xL||SkrTFZbJ)J-( zjL#ovakfnbun1NBnlsGCgzNGMQJ~O@bW|(PzXeE6l zPu=^ZPvs}~IhzG`>HBh%^qgMr$-O?J*YPU1HdIo_l11o9ZnqAw`M1?Wup6mikuC=do0N+}_4>v^)&=*tsn~7zfC$&~ z1?-aQUZ;Q^%r~Cin%bL4VxmepbeLDsp=@@t=3fA7vxiEelxhjyTv~LBb3;Ao!lNzi zDyY4zS%VF6yH?yQICgIC9||iGTj%`6?(Olu2(shk=VnA9-__|C0D*Jet#VQcmfvt4 z-QXl{RB|AK2(T8@j%0RmVe_nYohvq;02Tz&O*av$ckIzjM|#jLYNlo{&8&A4x}h>$ zuJf9y%x~uEVIAynPU@xZcUkLDOR#Z^rsnOx3KDGa8V=$+Axbt&E=(SR1{hsr(J5f) zyh7zbtF_%}eHm)$-p63(+qC=sLb5v`npS;zguc2&<`Z*t+PbIuAEYI2TTt^xpn__VBDz;jGs|NxzTlrW#h!UPBb<_im zj`a5pW*=gm0I)4%I5mhk|5kD!;s|C=Vh0)!Ngi~mf*FZbRDd-j4)vEET-2+tIe~=A zg2pSTj@O8tvD2+#>VH_*Ro7(2J%x3c3l-g(DYrX3ixFeD}dsU6G6!q&Kn#MJkF=w`Wb`X!J@xpWm0&%&24un9ox&feeZ3-n2@b zwXn6LX^EAls-SGs^6q^s$pAF#w8jJUa9GnxX~J`gk-$u;N7R`r`)`z!emmC{s~r>$ zZt}FFiVp4p&XL4+E`*sY_yxh%`NhmwP-XQYb&>+NlR|%{m~n0g$-;*Ki-d6h_!*MS z_QCZd!b&t6wwfVs1(ri^(T&J61QJHBN zVi(xr)n6Oe9Ke2Fta%I#*=-iU^RG7Zni?)KNe3ee!P&o4d-%oD^x5hgWAzQ{=}L^Ofp^aMpmB>h{H;_Lo6-fnm8N1tij<@k)=f3^ zCt%_ptN2K(-FHY4^k<52hor_M227#nWlvd5w{jbyS#W{-MFZw6wxtw=n5`A&;H$o_ zp3QWp5Zgm!9-QFXTB((VkF1ktsVmQ@D~g!)B!NxztPoi;oCLNdpO;sFESeDZ3p`klvuQH}&+gp8m;` z_(WRV%@4-73Jq%?lzeyyqdXCNeRH*~FF)+oUc3aW_KuY|Q45im`h_@`!%Zh~h*)RH z*MikW;%5taH_RBx-;VSe+HkHL!eR?}_hfR8lKU{ZGWB`auvNw!(oa&@Eqo!z33_z$ z0q~0z{3S^^n(FR}=|5=ruka=PCp~TC>0zzy*;S}`)4vxGyY#h)%CZmfgzWpvd%PFC zNy1{HvfR!v5=dEFh;vbz7&#b3{n7`G|Lg<0JZjG7K`kdke3Y6e(7Iq{9B%~|JQzVc z3ub^Q4WJ{2Y+GvHsCoaqRM9PTpy2#e>=usVX5Dh{`KjBVlr#-)ot|UQg~py4dNfsX zB4bBTFNPAvAAGOjHY?I&7X0F6(p!0Sxv22WwlJkK$ zQISB(dQL6~pzyB-E=P#H-B7i*HtTJ1Vx6rWGhriww=lP7r7wCSRt`=t|E zv&-{p$jNZrb26#(+N0?v2d1f+VgNd6yA&>lFu;BH29{M#=7clZO}WpcuTq`LbQl#{ zZ|KGjzZ+_NP_VB}w~>*f-3~DvqLLAbU<*VO8VJzjw8W(q6-Y?{K>qao zl#SJL|LfmG)qfjlh$NXzf#i2myn>!-mpL z_EQ7J+1b3LpBA-EG#U;?A76@HB(~u5hI|=SJYseF65|p7CJR-WKotr?$f(^)&XZA{ z#8$lF;SsAre_eVLh**9>ZB}wDsh0~Stc9QWE$qpKJii5-a9`BA!Ea%`+aH^e^bHio zBq**~$&DYZ_db(Lp8})P% zGnd_hd^SLE7TZ44oBmBW>&t&N^K(U@26HWRh$-Akqg`3vZ`(g? z(!*LTXLWWiAJau@`eK^M*>8Tv`{TH@#?Eu{>vh_3=9lvlo$~i+^5#eXO+sQP*Dr2lT&O|p_Q7BXWfh5$HzIq#E#8S9 z1i5J&*XL=D7@uv)WF;<=)}m1Av@H~Hc3#UOqK&@v%FBGK@vhdze4;HDtZg;#;~~4^ z?JGL4XEx(;Ssh?PR9~tLLA{MzHDXOIw#Ua*h$NjYWq(H$RaAMHE16!f953I5^N`RsJpx~a>`Ghf!E zCCxIytzFSPJnkRPM!k2rwhVWSX2|V3)v|X^4nILgF{g6|R+(v}82O#~lCJ$VLmJy? zsIhfX*(UO@_gm&BM~}mp$VlK)E8RJxB%>#jUb~m{Mf6LB*LX<^<=LGhyG6Yx%rgDW zxVJ7J-{m)H^XLOJA;&6AovheZhVZ&TFBn(c!)p7bV8G^vDQ9;K#)qHKXIyQSLfhoX z6WprZ+At&rFlo`$HEyO&J=WA%SlI!7wlmU9c2DLyePdS%enralVtI6_YNU3FPY$}7 z$(_;_P0s5wa@Y%$P;8BP3)j=*fJ9n4c*efXt}7joYv3dr zh$c_Y#;87;`kQ!Q<`%}6lhk*Bor-^tN5wxG!YKtaFLPTTYrNFDA5XT4F-vn@eQxTC z!|>UAKDzCB?lzzdbBv!to_)ESDmf)4$?i5@Y% z>1i_uqdhfr4pTbKrfB%*GW*^x$m8cU#iZ)thuF)-yu=G1j}<-*0uhd$TjOkeA@+OE zfgG7q$_CR*0Jh^P!}po08EcHfGEniA?2)8q{>t#P{q#N6Eb&2iXQ;JxUy{gnEBEHShQu;dEi3kuKxH(YOl5Ce5@K5j(4 zc&VY0_~@9BfjaZ{qp4`}dj;K-efOI;kaScV!jJS1aw&N;(o^}?TNNfs+84k+I@ z9`xRcSG_E{7Ez1XVY~(Zcl&~IK65pP9we7@xU1S<9yq9sdN=Ao zC9%6``q2SKb+xqMJ1~?cQBX04z*plhBt%nj80DDq@rKErGY(JdDewp)XW+M$ok!k~ zZ*ooFcHcLptYVQ?2$(hjf$}|6!mPTPF5>-7%cMT9G#A^}4qkE3ta!LY>1G966rfV$ zf8oW5z+o;!#{{N!-W>Hmdlr4ia5<6hJ+ln?LK~KJQ%FwiBDl4ItlX8hC7rNwvG+Jx z1NRBcZNKo#zgYPBbOWeAt8%;R?ZnVz;PRJVet)Cx40AiXiRU`0a!dMV3g;{g-!RVP z8`E93vEa0CEq4pKwRUJ}`WMQUH0v`v_*zEJ7^6tvp$~T1&n~CUziQ7fFTWZj{Pgdv zq;FuTZLUYj^xY(KbFVY^>bw?-2aB6cK}|>YOj3P$_Os&8Ugh7Zp>c}**`sJZupr8; zqG{tvIh&MkZHjxoKa(%hy0ymTH3S{8iK|rK%T|Q9!+FbDTaGLo>y0c7USnQSAp+FE z%-hNv%1zqQ1)Z|T^~LMz7Yy&GGu6!Td^h+7 zSkpYIx4(mkzG4QAtYoF{J$;xFZ zBca3SG2o%~Xg*AAM5v!POlpwSxZ+G){ZQ7Z*PT;!%he7Yg76|)a&TfZrwaq{h$WjA z5m=-x(3vk&R`P!(zD$>JIIFb=A7aAi|ACUGPjOTK^LHxGd_!3k$NLKIHc_n71(t*S zOv0H9Vig$oUr{l{dEoYwm4D?t`;iepdoJ^aU0GCHkeNv}IZXSIDA?4JnXS4N6MHys zLANt=Nd$FIwg}cjK}7Ze8IRPlUeSPH0WkgEZVg_udc7)_2lVSo3AhXav_-O+U+81# zLsE1CmnUGMYg!hp3(2q1PIi;%lQ3Az{Myg$D`CbHWTnk$D$y|{^E*D7Qft1oVq?=v zR_-Rt2E$JZ^}>}~#$%96OHmQI_pt3)BOciB-iJt%Xg~K`drPXz zu0p|EpSXg8W{=r4Ok0?a?ni}7w3UV6^HbuHBQ1kb%GtpJY|qI0A`N613)Cp zp#16F{u~?`?MLOwl4?WjqNdtVU6xq7HFKKs%NycVI5Y(X^dWde=XP#+RLZht7_g|3 zXoLpDOoZam+J74`F|b3*@u8^!`^1Web$NOiJzUg&3}^;Zh*1W(`XKBjU>4(E@@;BO zYmN3RGYMUkU!56EB4xd$QO=yoFQO(@y0AD=V#O#9Heg&?)( z^()yLSx{7ycEeIf1s?~5UGB#rQF@|%M&QxSa|<`18stoEUEOG(KlbwG_2hmHJ_Zvv0Vx#gv^TGjwNA40yq;4|vu z!gv^c^aXC7J`SJYagoJ8q1lK{MV@qvGy3*G!o~YRT(bGxfZs$G-${wFT}732k0t7C z*o5if5J;MjW98AJBu};aVD*nI{w)Q#Y>mvLN5u$Oa7^6$MmhR149X4dbqgRT9r<@n zFN?fiRM1b=3~4{UN)?JcVW~)ToCP-x45aIBwj7*)*uEpO_^&jCDz5p?XtIb1^$!HE zH^n>*f>*)(_l+!WS7ItMh>j4jf?2~WVd%c9pDrni0mqN=){UqR#R8?xs*HBNj9Jh2 zF`UFgs&J|c;NfVDBtDw`Rg6W*kKoPN$JUkhD-Oj*|Ct!(INAg@`FEjF zs3NlXUAp6gpEH;8m{zwJn19s|V;EWJR-qkp7VJ+)gFzN8WB@FOmiI5cdGY3~+O7+) zN}ZHn1q)DQv18enVq;Ec<((T;bFg2HA5!FUrE91fAiKNH$l}BGJvsbfX4oQ;Tq5%! zPEdY0jXUKA0bp*Gjg;3YR~<7F+$FbI3Fh1tS^N}3>mC|e{H%V<44je0=UTI!bf;76 z8Xz#-%Vt^En4sdw;`7K6LZlN}q_Y`l>%-Sn)LTUe0fyeZUu5wWB*bf1%owP8vUgbx zMNVeYQNqh{xO{b_zj+AH&X_e?kR;l3>7T6#h^Sj4i+`vZ-(cOY7n*?TgO*J6XtJQQe2B7T4eX zW~zRbYvb`5hef@y<=C;Ri+gMga_yk?V3RO82-yb0(yh2S*O6f4{3=lm3=Et&^0&&=^LoRS$AP z#pJl=oDuwz&Xp|8zr=`RC0lVwud$jY-evvu< z+KPE#tZogJ|&oEnUu}Y3FhEI2*qTqtlDa-ct%>v6J%((7;!63rK-HwK49! zW3g)HO+Yfrz6qO2yo&!kp#8Qtt8$b98W1uuei!itI>dU#zS4|Ab>SCZ{XwxF*wt!2 z%7>GAQN86n3iSSVVq|Gg69P;xITFqHZD;;{yVgAIZ`fnPO zgLFAk;u1Rq_eClwI~?!XQ9+=g-m*5KE!QaQP^Fb*!>D~Yw(TrKE)Ml|w+MpV>O_Y^ zr}|_G%gCtmzXBzCkdhZn(5gwjiCGirgv;9zd|ZNM&0c8-?8a zeXi)e=(PTVU4-8S;O6Egp1GD&QEqmH*^+%&$EG^1Z&4`w4gMI(t)olaNrw=0{&u6; zM>K*&*VdZHxNfMh`A`E)(}A&Cg4}d7WlA4W;M}|vy%MMkbE&&idK1mn+g{|xt=dhfxmnGN5`xBh8p^jnE-}dNAWSz%OlV0Km3fStj!OxLa}~ZZO-IcfZimZ z^%SZ4#L8mJ?O1M~^CVW#jUx1j>}&kZgVVO77r(mCh-_O~Ko~)1p2fOQb}{o!WMS@R z9G?BBGKa~B`pHh)Fsq`ZQc%pcVtI$qEi?spM!et2Vsr^uB|nqYMfI8I7mA3UBhC_b zb;jtNdH>6IggnhN%Y1dFzY!X1QyFY8n;bgAKl<5^Z^6;esB*oy zwaeg<*rU;Ar1nmqnQh_SokB1!op&Vjj(~9UfeFFN_ml;u{KHO!H0||?k+;I=ert8Y zf(VWcB6x4wy1W;r_jfW9Va;j#I_m}H%kz1kcm<8U>KPA=dH3b`pE#daU#xg*)ArDCznN>uBo2(##gC5^tBwtevkGXWp_D z6#kc3R*Z7$N`^S|huTJ_gn{o28p#eMDRUMRmOYoOnQNfCY=kHOTyr~UMFvz`j|^qiiyVeOTOOg6y+AiGDJY4osVz zU8w?hQ2;)X&FDo8-@Ym3uCT=5UsLC8;aj!dlHuE_db=ikJ40_j2;aV_w{P&4`G$IR ziJmUiQ(R9!)YE7^wdkpqC+puBl{zteyI5~WDAznaeU2xsJVJ^Q#+u&7)}eQ~3-s4t zBpZ`!3rv&?6Eg?XgunQNTc_1#wiXB|{&IITnWCvLv1?+F<;>p?gvcn(AVPK7TPTys zs2@oy4K%y-c1`$pv1arK;oCF%_KomuqP|@izHQXEG2z=wdOJOQdqrx8Z38#r%lCXdse4k<>g$AjA=}&&gL-zOIR?pIQ=Hy;cLeV+X1--#?f^ta)ZCFifFD{gAR zR`J!;t&^oE@orFJwC;`$emFino_R_=tUkw6e^Q#8x?8?>k;Uay6iqrY@8&`)S@%8i zcOR!2cOr|A=c_&`FHHXi(OERLy&HNX~{;{yu1si_^2#pj33>~D3UPt={1+|w}x07n*ItuoGiFILbIO&TyU-C7^@{v^1@lRpy-WBxw+;bVDBorB)(4xy?`7w_daWD9bK zyqiIbl*h?cZ7Lt7gNk`29Pgt#lt&~ghMOxy0rGd0Cx)~T^~8{!sy?--d}_j0EF}LQ zYhMCiMRon32SE~yPOzxaqC|-bLN!s;#9+xl0`uTSx#ymH zwtMb|l29=i!-kydG?3bIs=LLYK9tkV;?xz!eZ@HjI|c3mhQ6iVE%&uKM9_>>7uODv zRS3<%Qty`|+LnMlg-KwYDbt3+k6)TGnlYnSKDq!Z2c5!!!(k+GYrPeuM4 zSwVymFA#(00YL~zE9{>ljij+cR}s~ao#vR^!reoRMdyPu?hGMM89bU1hXf1jMZaJn zg@M`9fR{0s8IQytGrkBYx?3=xWXA91P$csBai#f_m7tgCO zb+}P?pft=!y6uEpdpvmpq|g}gqgxE1mi;1Ttrno?Fc}o?{3zUgx~78Gz4m>TdkOHPxTIHy{`4_+C@;ep zphID-)W9gwr!Z*tYPnhK;UkFwgEX8Ju(6IodZueES;0bxi2aqTzsh!l3_(f8`v+hm z0C%lBQ}zK6E?9dGEhS!=_PgP=+1R*dJYPFjQhQo4NUUY-6zeRoR3E#{!W&4J)}g#A zXwe)5d&A%78g;kIxClW@GfqsBgn9o6@`A%}pcFdsMSPIT6uH#hAFApE4_jVQeAy5`qYfCN3wgSWEc9B1p9j=L0acHiWRP%obN7N{DvSPk!QEW@gev+myf97tw`Iy_ejk%N_|8f*jKxowJ$ruiP8Ek~dWPrUt zKNj*8j6B={ELwM{Z9kTC^=54hTAF`(YiqH+3AexCT$+VA0p#G?7s^jJmaoH9Yf4H= zMWuv+4rxRhA}y{`T#2q+f>!qG%F6`}uPajnF3G_812Qj##^bI)k&ydEgaCbH;74~H zU>M6^P!;FBR?}QP2_qe(a2u}LAI**%Bifh3+C3bq%`dD8j`;R))=CwO-Tan~StaS0 zF6`FxBr;}p{}q!FAFBHX6lK*u{ZqlrO2GEl z+y`tx#>^fr<95&qw!}@z>GG?ll0G*TiGd*)L$>Ip{IkI&mKge~L38 zrMhy8d0hMmGhQuuPDZTjr#Qahy!DJ>A{=}$Zl6HrU}QO+KC}7DQP|I(8*Kh$QZW7H zV0vrF9)D2K7M=z^%)>4Gtf+Oz^{HvPi*Wn}Q*d*6eI_)n89(xQ;Mp=#^#(A!@F`-5 z?o&>i(Xdp~gnO0T(YA5J-~2<-9_E&2H&kmF6gI5Zsg>5Wsl#!B1ZPhX`K!&DiTZ&c zWe-!H7EEToHDvSqP)dALJ54od35A}@w)K|XI!<{r%+i5xqUgD#r4R4P&RE5JYLhH1 ziRL|_0T@v!_lnC|GQoe_(GsI>1g+m*@}IVTOR&lXFqQSw?M2(rxPW^eZIv>DS_dkp z1^yMA57E!`m(ZG?%OS$wA6J31g~f&~_qs%kdlu?5;jW%$u;#j&|qg$fcgrUcYF@xy<_B%j-vtMOvSFF$5M6C~2Q%qQ9}u;7rgVh2ABV%=jM{dT2zRF&^(*n9D$NB^)KfN|aIF9^ zC?YNK4;%A3`AeQ4a+XnCo5KP~Ad`dMD#56|2G&`7P9;X&#dz!0)4%#Vo8O7gzUK3z zy9SF&Fmn#lx=+hvCm;WeM_*1diu;fxf6K?kcqD`6_r^EmT#D#CNh7V2C$?&9bD;b< zuQ5j5)-;w@Ez$I5gT2PMpYf$frDOXxA^ZUSV%)g|36KF0nH1vnz|sY}i;R-nrCtn9 zBzgAjQWU!aZnGi>m0*+Bk7c&$KCQgbTPcy$G$*y%DV~CGJtik|B?%V6>}l=Aqz7P6 zPhJylnMiL04mj$v7#lJbe4OnUfDo&fuH%4TIh?@SoND9?6=oX^tG)Vk&%Qs6xTj1G zXJkWX^fDsX(uq@oERTw(#EA3}w-BH8#UiWK3ew(WnJVA!^@|Xr~)Gfbf zwlbahJaax0&aI!V84C?}4>K112oLU5<+PzGDJkC?&$Z(q8L0t_K47Ga9rH{M>Sp08 zy^neL30&+Vgp{f<6{PO;V9RpFHeoiWuAmo&;5q2)Vp&a|S$gtK$jiK)XHZ8#B_h&gr~aB$DZ%!bZ)yNq|q)miAB*6nZArpb`h zslmdp9$Zmfd5sw#OUrQ^fMc|zWf1+310L<;U|HNsI`kd^&3Ff7r572?1g#_)UGAvU zesVt4uo-`sCUh*a!9!8@>>e>Hpw&UCfk4pyO$Uku)zF;*@%l3$)Mor7BDMuvVqyG+ z@?NiwAwDxf_+Hf3_e-%$6{&e!@GB_pcLTfw*?7cdN5vVW6Nvu=cnt(f8q1rd*lvvF zv&^lG#TrrZiAY&skJfN+jiR_aZ3-O4wF&8Ab8}$j#ojjf0okAh^w)G{VP7 zy;x|cC{G^?@v^oAvyi&IozB^!DSejkJ8&3Qje+Ps1<#M}3f!7ajzA~>RfZiLMHCLl zekz?HP6aAR*JF!Rtd>L^S5u4wZTMIXS4(b@Jw5jB!Pwg=8HCXYrcrL}U!q_)B?78M zQU4M{2P_fZ3HS%}&;1VEb}i*ej9eF6kInc58o?+sU^NpT|H`}t_lV1A)Gvk~Va6v? zxb8thUXzbw687qKnZ_DGZPtG-#lIwR&k-CF111gwrC*Z+#D)_jORw?BgZN}Dx<;CW zK2Hop_#HBNt(M907_KB)_VeLH`b2(HjQb8gFlS%h$k$X%Fzx9mW7M{S`Fy;=kM8d^ z2=KjatI2RwO`OG#7l1H6fYI*28S7?hoa|V00ie&5}%O@lCVC?NW{+ zW0~=NnG2eYp`vlze1DIQ(()N%AvF~<9J^Sc?k`X!rc#vz39}+1*t-4eCJ!36^1Iig z6MI<=Eo$$IKE+Y=s_90pojT5gGP2nV({^q=u>d9(J)x@k)eAshH+?ps1|h* zQ*_kOr+pNKN1E6*Cg*>&V4YHe3U>*44Joh(^4^6qW_$#*De^9q4_WfTBk$FI!0Z-H z-fRv1Ka+Q?Kpm~CfxDlT1i2gXCOQZlG>3I^l@%vzT2F>uZW2-{pUjLOCx~QH%IQBE z4UITFG(igGQsU$lY)R#v3CA!T24kNKsObw&B8&2o{k06GD@OB6Ccd<+nz!vG9G+au zQ%+ET-$ohXtMRt(ORL~X$!^>+3-DAt89bG(I;9wZthPW05Ho5s;KupHk00G^V5mpI z#09cNj5GG3qshT-2wPf=+IROOUW#jtdajSbB3J6J^+>=Y_1nvM^g*ZR=&r&yoM}*6w6fR0!`|BwtON)<#U;;B;UF_E)U=1W7t_)6+&9tA-q7`MDS+nb%pA2M zsKxUN5XW2w8dhj8KY`j*>CAO#w2$2U=$?hFW_%P&O_Il>`8YuyH}G*RVM#czo{L_4{=;tAZz4|p zLY%iZ`|+du2w`)3$QDd69!N7896hHp}6fhH5C6^KHhR7-ny;88#t4Z)+2uynWF9mv^>J#LXcScAc% zFDpN~uQDq{WiDuG)Q7=-7~zx3e?pB8UA4_$Rru4%Y+5e zn4QYNaw1DG1mf!wlx{p4-$;UHj8!6cAq5jvx93!||B&T={yLGR>bn~6@_Q$X&hQt# zUjtpQN>qC#ngkLSfj6G%&(5QV2nhRGSivkWdkR$&GL5v()ul#NVIS%=*m-ZAXPQTTZw8=PC7;oR^*c-IbN(JXWx zS-F;{4uqQ@4|ktxl&<65AhU)p9M=3vYT!-xX!uU@Wu(#I5OKfUPrZ}Cg(&7_!bu?~D%J-AN$|V?2w542t3K3t% z0PKu3>NfWFCj2i@6z~Xud$Q1*lMzS4kpher!UrL>jfPqJja_6kT%_MfdZXb2z5zMd zaV1bhGT(>y0^$vpPR(Tw=`ZZ`BU%IwR>ybQVgW~{ZRjt7I@-ZWXEqM4*hhxjC`v}) z@xTML<~az>z^zf?Orzm>#^BH(GKkTzA{miW45kbU(iqDHz8wC;T6GGBifzO_Qiuze z(KBcp8X>8-D)1+GLzmBAi@fg@$hVL+})xZvX z(j;98S5M175+OLXq7rzjTMD-S*Vd^bq5}|d#9J>GeNI^PKveGQIbqRfL^*iO=5dq9 zbh|Xu^_k7^SokOjF$}CPmjDMGRmf;0`lVCeUh%h{8UDL|ArNth+lId8>lgAJ>45&( zM3S-P$(T(YbpP&nXT4xGg;)Vc!oco+KaR`*vXiX%4{%idTGNnPEClcf7%6tLdeBpz zVeS=ATTEgpw?ZD3Pz@AMJHJ=o9f%d2M%_{l-uE&vE^dWQmF07Z+-`{{3@|cmm_>)j z=P$Xu7!6?@TJU3K)HsokqXeSFp)+zYN?AaGaF&*RfO7>z<>T-ooEWDA&6Ey0(^&Zy6*`!7kJ8FvFdl zxbeHwezp1QAw6yOuJETrYqocy7>?Pz=r|pG}v-&4nSiZ{e(qGnS}j&;AFM!QxB@(B+mp~u>?up7vj>I zC5UUr?~)>Lg=OrB5grx?ovtleK9*-NdB_;lAtz!_K#CcEkRQ3INX^0{#Exx{{N_BJ zB{{KRdYHfvUmNLO6AD7k6DiDs&4(}nr$E0POya;yj7qBDsB%dVc*S~_p^pMG*hTEY zZdL8GO5D_Bj~V|Hu|YIVwJIPgcD`hRkwWB%$u-Ssf-IIcC}&j-3|bz!>H1Uz$NLP? zjvR|2+F@kOLbZCx2)_=ZoAFENkc}j4k>UEog+zx?F!qredvgN>qZ-xz?*!vzcC#-M z?)91o#$R-GBQS(xU`8HP6vG=l_UytzV3gp&9RHAAN!iI(uup6LShLp^)Ezhr7pM^%*r2m?6uI-^reaL!yFT zi;z3m*2?yE9V9t|JufGdxj$7qA79BN*6vud;#?L^1P=brAZ(q5LBQVPFV06sAKZ60 zl{Z*M7fI%HtTo~7*uqh4QF*AN3ODH;?DtV~|5g#t4(=o+^Ob}{T zVGcxql>s0>p%XBx5bSBKc-uV?xqT8$=gs|E+$n>P@8R*kj&7|&AwMVdj&4a9Ymo>w z{^%Jex~pB-J2{ZM*L&g*;W5lbF~4toAu#X5d9FgzBpY4MAieToZ%EF144~mEYJ0KK zQfjxljhH3d+r|qUwaSdB4vk@@)NU}XJr~^IZjwV@g#+e#qTzACWdg{@0UqyoYiW$d zKYO2?a0^Q+PRP~MvBC-NX-G~IL&L4V2tg+->1NLckUj4O9}PL2BU#-u1Tk9Tfz=Z_ z4gYXmU0#z?O>+lUO&8L;)duQ6s;1kpK-DvAMM)P)sir1TO~0V-Q(T5*%#wm=WoJ~$IsR&1SYPee>X1r2(d zIM~VtX)#DH!cW@5a~X(c;9&T|8RDAY5hFS#EC{#)n>v`8{Z0)H0t>X!+4S zRqqFbj3Y`0cp*kPhKCY^4tD7C_@08oDR~HKv}0>(wiQ@2-AT2lJGa|Ed<2#3+>^pz zHSZ5L?U7?z?nV*hYkFm?5 z8RsQT!VQr}1lpa9Cc9&7yHUFnj+NKc6lZ37aN9Z~xSq$Q7rbNC{S%H3C!=MAp(eY> zt`9e*6FRGMUl!N!j(?)*Cu5(N;V7ryXA45`9E{pu0g#VY{OInF0wk+{I0OfH8TfcF z9bnHOx-1INDih*+C2@Xjs;}TdjS%wtQp^kPoW4-i18+~zR>gE*kk~? zQ=H~x6!9?=Vl%d#!o^MrH~qK-lUyyUZsxQVb^~;eGHzEppM4y-74VJP$1$MyaUegs zx1*v^Vg%QQ+_@Tu5-tNaQItFWTh6E&YQk7>79&cvs! z!U7x*Ny((U04fyQ5Xtw<2yPv3-f)O((Yci2Z|gZX=r{=yWA5gO0T$}v!cvX<&&M%$GS(Qq#X4F{#b)OWMLd3 zu78vj!EtE-&hB<5JS+E*-7lX-Hq#>$^3o>+x&|XMgKnMWF);&?LSiSi#wy$gCq5+I z+h;_}n%E5(Ne{1q+EpKl?U8{bQx@z(UtYeG(zRtdxcaZWogfXJHg>&rzlA$!vayed zM>y5rAmgj=sI3+>XZnf|Q0x=mX8z`i;TpZGbzWRlSgcs6+a=lsmtcXWk&Ez3z^xoO6KSzog zzkwea`}!ZrC|bCR-<+qrMZG}_pCU>9w6Nto*ePvDYGKkCTKM?gg|u!4WS8-^udg?(3L!;gY2qELC&o!~D@i7=~%?=*%X0WDJxS?>Y(NL#d zU)W!go?&9@2fF{t1}^RJs1L(8ndc6+?eid!!z>a4lmoGFu?8m#$YF}WOyLs2))?gK3PudXd zS^pndBXBeI)Q~UOH;J8eoDg+)kYMrIeEd`%=kW18dAyd79r9St$5we<$j6vG*7ETw zJnm-Lz6nmK8m86%4v%m~I0U;@%HGMc^W^b2e4Ha-BzR;A+aZ4Tp#+b1GBy)LvJZF8 zl(|2Z(rfs5tdu5=z`(N@nF{Y1dSiwx>A`h46+802lpQK%700mK5`mL{0-^Gge1Q4E z{p53{tF!#^iTZjljTwKR8CD=ea%`#?bqwWr?^ey;FYtW><`@|g|Ejq>x9%d64OsfC zufz_cwXC{G%8Dp@tf}^y7>h?I$!!R^KW7001(MhNDX^6OnV5mh%XxxsLOJX!MI?$0dMTAR(rb|!AI{_< zGd=S%2q|X#V1A^^`*u@8abk`}8#bog zXJcfD^?0^mzP}h89eJmTF$MHj-dcq|#_zMw*xUrYXDB=<@dUGKIcsb}C7Gzc~kae-3ay@(yfQ zvZanhQ+`1d`q-5XpR%sp2uO_2ARol!3$%_*ffy-vn#0kpMk}F$a7L0-hGjvx z%F(fKmh!phX*F*92n#&7 zlu{T3?U#le&T-QHoELQV(S~6U*lhS4vH3BY?yG_y-At)s2^sT;k2N=EqMOY)!@lko ze8T~>WZ@6+C^DcTp?w%r#XrH6v-&aRO?$(XzZK{M^%gzXE~{@ za7a^3K|Hpr+K2h_~M6@}$fIXqm94BTm2jbCJPCj5rX&s!z_LdUOWM<(>G zvFLH}0_AXqp=M-4t{I6kpx=FuM(V|dmtkReZ58_0{Wm^U zy+awC)w4#0CW;F_EpH?eM8@8#M!3LWtioV~U~mjxbj|!wu>FLw>(ppnjb41jv_wzh1%dD{yum;Q3wyKr{lmqQ%QZLiy}dXXD0 z1*--vtl6(x*q|5W#*uqi8RPXlK4=y%;AWR&Qo0z2>9`8;)2hNx=P?!x7Db9 zY-dkT!8JLvxQJWf6Jn_5(ByJ+ZqpkRa2FtBGUT8lEC^X4K7gnLEH#!%15p?})BXZF z6!$#1hoXoV9&>-7=QQxDS!m0q|An?Z0;7|JCGTYppe=tU+VVguqYpmnr5-rB=)Q(; zX8dtJK95JyiELfA1c_3nI+q{_jZ}DBvN?0wm;*&Ud zUKEMbfoz-bKl<5g9&VxW+95w}pbJO??Ogl|ZaJ zQ3V~$wv=Ii6)!BY7>?W0;Qo%_uu_7j8L zh&~k?r7qU3-C!)bO4N$aa$kvt;eZc(_L)_FbQ|@IW4`hboa!IQ#xPmA0BY3kLbbg4 zw(fIiYM$W(yY!6O4WiWtX3$biZNCCvS%nz0KS`|~zc&i-X9{>ai8amn9{@7f2l2jM zGoD2&na6Y|5=9dw>44Epx`|HDK}a&=xrDN>JWk?c3LXcP&+MLr|J9q(Jl6g2J=D>^ z*OYvoB`9~%(Rdj7%y<+x54v~b5sTnePv^@h58J=7tYb5YsdY;bjS2FR>qOioR=ryz4#8dhakV%xjbip#otfPOCbl;F{8M+DsVNaR#kNBSXuI@&m0T9pDO6ne&ToL6| z_SX9&izt}(he|)K1ym0tkz}L$=%?-P4A{v~B{)#@D~g5EBI*%Kr8mnrz44;qOD#B{ zhFXU%?JN=!LX+qSEQKhS9tD&tj&O#0!T1>?(V?FMK_Cnq^?Gv{HXGlcPhLTm}Aji4KE91)7iL8)mtxalB*TgL@rU%buz!1^#0 zl@XiSQvn@A^~9>Z`X<81)d(o|5sUp3#keASCcg9Ir~J6Y59@YGb039=2PM_+DXD95 z5)BSTqA|aLFvz}2eYT}MAe#13_65wkKJ<$p-7}cg33m$=LsfD%37l_M*n(vA#(X+-EGP^{!T}|5aeHc0s@-J3>V1p43k`T0xvY_tpwSdSn3M_SL;TdjGCxuxx!(PQvrf?pwi#CZ4`8O zFX2ZgJf;UfB>o=(7c*`&F@-w6nnY0=IuSUDqX7QxT4*_c=>)UrNJ^=_0n*|vB!se= ztGqRDB{S4*A3A*b#(;Eyq+;QFNVxANa^GK(53y~mPIDiXBJfwFANnFj%5WhH5X%IH zP|E#~N_k4UW%o$U+!In;1gT+w;bsX^Yp@dA-A^935Y<8Q7+}Y3d!1ObL)M3b_!S?2FOOUKc#k~ZPaJG{{39Q4#UrOM zW>p?-#w%FUHT>d)H+hm>BF(5K!e=r`Ie>8VunG?Ln>;ACT77`gR#P@*c})r5-=bR} ziiMV_Q%Wco5n>>7K@h8NQF-(>q-oaydT5OJAWirNA?xFAi?6-@HHC+>{W;|8 zF5_OF_L3d6zcYT_oZT$m4$mS}{$)C@dEqFcZRlWdFpyAnqLzV-#EqzB01;Ha)_D>` zJb;350`ocHEO3*^$a6s4jAxPo4i*q(MQ+pW&59U~b@Y`Cm|`!u_$yHUKW?Xbecga4 z%Jf|QRnmj^vIp-(J~KWJTZ`RVDIx*U_K!5ij|s*{(c=9=l6Q-7ieF@W*p8ye{HM)d zN9_sQF2P|mskWhmc!8yi`eyn1EE)7gent1e0g$E3AZRvPNR8?|zKl&_aQ1BY1~?EM zXMsZ5$&3WLd(c?=1Teo%00%S^VeH6|Dsm4>hp8Zkv;;6ais1OYUfEq#VCnQ=f z%Q%tsB0ESLj&;L0x094VP?BauX|qqoSy*gIKxIz@EoHp05$DFBci8k#UnQg|2sO4> zo`T^8`Rg_LcJor+GE)BssdY8M#Q2?8a{p91x`3GciQg!yKHW!>IPp*EQvzr*vu6c!R_we(2 z&Y1!;s62 zDQh#Z1B1MKIlsx&etjMqggeT}EoB1HTf3%KF4-?I0BRNPZ`5MjrxLDz?yhRB#7 ztIv$OVtftnydE>a0}TH>W=RD9CZTy8TszB}z#Y-K1lcy|8uT$vyARs`PD&Ly-4oV6 zt*l);U@KutF(p!*#vZ+nXg;AFYK5PA6o!1KS z--C>%_+<27;GteJI)G@t_ridPs5gy6ioZoZh20+N_fQ1wI!QZ@Z$P_g03d|( zbj1L8oV6P~f(0)b^>>S^J%@PwNb-rpv6RBgVZ_s@2J0b6&wsbGIg-2>l#t{C5Y~*( zqJnu7$$Q<3kh7%7N6lZOdY-Y*!z^|;UUQ^+&uAnSowQ=Gv|LMB7b<4Z_tA8I!#)Gi0fAxsH@(Wvzul+Emm znvBtv0UBlvS?cv84vI!UUd?{o4@Ep?+XFvB!)NcF!GLQN&PiWj=-wFFD7%I~BW&#EN*Rh+rc1l#!( zii;$l8hV*_6FAB7JxS!hmF{L!{SQ7}Ez%TRa1j_3h5h5S7XhDMW#2%QRWDo7BeAR!b>2|Lg`wJR}@|> zH)b~xrb>aETpdbRHS{edOKbQf2}H*F`J!!u9%OCKl4YO`_z8ZoO@l3Vz^il`U_`YbD|wn4wswpgGkU{ zqBsazISz}>Nz5zt`;X0d8o{5h-!ZK)jqgELM-HWfA7~E-UILLzBja%=cC8F3#AQF~ z8>}m_{;m6k`GsG~WVn|t`VYM75p35a-B-@v=dy(u7g4ccE;)^;i`qih9S?k=Et4ab zUaTaXz501(_vn}4Z1_kRff)6h0TrifvfVYz>4azY;0I&B=~(PUmcL2>5Z#*QIjo!0 zyxoXooAFi_n=a{M73Y5>MU8rnV{v~uHQ_j2JQ?=zJBJ+0ffN}3{iTTYCZph268m`F2%NfbzsDLp!PkthWE(SeawfKz;;^)tXjh8yKy6Mn zAk6352~6BD`~{zl%x~1cA!UC~Ox{>Q{%u3$eM!l~@h5MRNR%S;*yrc%i z1yxy!<#>u!+djVo!g()1k|1Q*&N2-Xv8Y??Wt=N5^s1Cv{rV5LPgBnV^W@4)u?p3| zl}XvcDX>|&AP~FH{=CHQRAGk|s8b9?f4=c*#tMgoMfibpl>_iN53Q;HozSL@5Iq^%XTB}KN>#)TEP zi-Jp9FHt#V1LFx!Qtp>g|9~L-2AN=AWR}jKF9(H)mXp)4Fd|E!t_gXM)P{C|eBMM! zIk=(UM9IMOBhf}I8Co|`|5^&D?WJbQfh(h8bC19mz)Fe6t(k?!s({iS6B2(j9k$sr? zG-h5YnSVn^z{1HliMvGZpxZ>9j*Qcp@i)kr6stRbOJ#m06K-JwxE2yShg_n{yvvTd zRFaZfve%fdjG3t=)sia-XhTg7@6A?luRkO&C8ip1KoS~D`me`tA2v#t3Vq5+4W|VI zPC3jJ1ZB>DBN1$VmIy<&v6-Lq%TxTK#ZzL~Dt;}iJ-E^W4{jwko*1KwQ&RT!{>Hqf z^H&?Aic)&r2Y5fw_bzXg3mdk^IUM`YK%R-S7`rpbkg zmi>LOtt9&~6d-r}B*rJ1ZU(Cd?Q^n)Fbo`T!tqC}%6I%x^ccLiG;hDIwbZGA`u+&& z3n6SM9won=8YsyR+4Iy*ZgQ<<#XoQx3oq226SA*Pv+A149}Pz2u1DS_8HhcD`f)vR z2i#-u6UwbtYEa#R$tVvMEt;jR*rNmf1qOgQ#3I_4Ut0xD= z+Pw_Nstg&(fU|{v1~(P}2F0e~HWj&6d6-I1MLH@-(*Op?&h#?4yTGi~6AQ6`O%5n? zN(RS1mqhI8c!`O|@(F|MupIV9ys-Av*uTBP;{i_>{s2{@Lpso?*i(=X+@#n^DTQs! z3fgz_I~fGdqScLyFeyPs0~ZIAp|WBzdfg_tV$BXJZZR{SQI5NxT<%NqS$*Q2J} z<2h(}5BhDy=vwqk1xF8<1&3C{;_U?|Dbha-4?5^%jH{lwKZrX-mV?1tE;g30o$gG0 zHCVV3Re=a~$k+7wV9Pl@P`wc{*^WCN3yEc#v3!*^xR}^#T3ktx5xGITW!2xewOi@X zN>1v@8c~h~8_q@^jpz(##EHNWrw`#qQy^M*39#mYPicb$TXs&Sv8WAb$h!$4_gYed zSr*++$>z>SBV(Tk-(h>t(?9g|#J1s0i1SChflo$^14$;1Zr+&I{8<_nU8lDd?7+1; zNVJ>^+{A&sKYwNg#`2$y8&r#}^7D~|+{W^6t)5on+1Jv)DcDi*y34bXV)KQ`P*oe> zeuX!wsu6EqRTD;=%^Ne#=FYU{PW)_0D@pG#)0>+&W;K7BW%7AT2}n}=Bb2e6a|Xlp zG8@R$BFuQK+_q1WJp?c;ABoqJ!8}K=ni8__Uw(#}GquLW37Kr zATf!rm!n#RQ!ZYUy{MK&qy^hB$_0U>BjNGoz~n=91sxMH-Ev&z4ZT>s3hjVibEad^ z(jL7O^avW$*5Utel5X!DNw!DiOm{{cP4kn<5Vz<)vL+Pc6rTdbOxq56V^^n9%WMEd zD*~?$!nUo09E_XQ+bv^iv&EBQz;k&`?iyq&#YKqHgpkeLNKjH#YOgB|tP0^K<}@R0 zfuCnM6SA$r@G!_i!{o!nBSpVu;01)7a3Xo4uqgknii1P2S(z0-4h@FK=D}Or^_R+D zh3pP%Txw3&y}=%=##!5Sf9$&iH8*Ytafdg1#C@HwV-l||e8o9An)Ls~E7cY*0zg$n z+>%#CY~Hz=4K)Yd7s{EBqhX@AkRag~Ch>z_ey(~B#ob?@ICDs)fGAIdjAd7w3`v`nKxVyw|*L>fJ*bf;7f9VxvHuG8ifgb8*Bf zyL^AI5@XQ?&;qP?KCS?!rL_W^LIq7m0~{J?AAM_fc}@`zIaen_?1L>UZzb+w$Ig|* zpe*1L=2^xc))?Wp1mSWj{|RekZ;iU{QYe_3XVk@Yi!g*|CvUclX`69q&(Tutet^ZQ zYMaUn>D_@w6Hm4R-&ldKLIrDZ(l832N+>mW2x0X?!wNj0M1j?_%Iayede+o7RlE^$ zLi_btXgA#Laxk!S4zBH)kW+~uEPNas4U#Km?;tA9#1rJ@E(HjC;%@CRQHN#kD#zj; z@i5WpT_gCM*0nDs4f}b4b_WF!-3IT|-*ZOzFR&l(Y4`)b11YeHVk_M$7|Gb|)gEhI zz}I<+*BN}hGx0i+ulFThf5O+f3AQ|(uQw%L4ZaReWKO}WRu51qo|;#hBCn|n3n%6W z)LYPQR&o<`MnKTJE&FZWiVj(P0y>AX7z(^X6*d#f;TR~@s*4jM_#=v7W-0X7fuR7T zY?WoVb^U$bqd|K|>DaYhe}?Gs%VRMkf!GyWfoD$QbtYf8Bw7*V>-UM*Q~7#UBJ()B z8l$Swod2c2dG=XWkvt3X;FxpiS`VC8;DvwT&2fMhH37gk{`UvOYbQEg8-S8=4IK=|64Hw_MVc7x1T zVHk=G;Kt)`%f{wyYpwLq5D$`IF%l^n(qsV@>{$h970<4m!8!{z-&k%eKl`K<+Qd~- zYeYaUf6aco`RlGd6OH@6q%JrO_s#v`ZDY~Be06SxDS_av#S6heE$pg&t)dw} zT~$G6+T38Z7@sMh~N*sD19Lo5BmmR0TFd~4KA z1F5X=sx%q@$+2qaXv`jsGz1j9MFGWPIH`d-eZ?&tU-u%ub-O75gSKQGY%b0iT8m-L zC1hS~>9d>*0$W$(Y|_g}M4otZgFJvp6IGd!qdZEDQ)LFB%pfU~>y9<_&1@US(FRGN~w&DrMTeGH=QQa9h&1%$=&t5R@4rW$y9H zJmQtPrgxe0OMn-w>;?NEfB78XRP{^g_u@YJPC>q*$TyVvikR0GPu42^V?Fc!V7DgU)r`rOqw+$|Z&;J1c1aAR~IHd)Ggx$H!FMR=-f+(QY?GRY0+nAAl$U z5%fg~pqJ>I(WT+V_NZfX41xmLL1>dWz60b!_Ghd?oaR!@b_bFXgAy$kLH&)6a0gVaTZJ|gF71)dj zF1@O2`sJZPdv$Qzd!{%PA)IQs=yoFQEC}GF)}C7zKnn#6UcL3EP~S0v3UToJ`LoK1!dZN-Dq0GNRR;4UV2x}AE2cdEZW zE=+Lt^4Y*c!U3?wA_^@?Ox%(9JT-p1P%T&}hQ zT;2c4e8IqKj)CBb*0nPWXp$AO9~#U2jdu&~+Rqu5EJVz5Ia5I^X4xYGjSn$rM8Jc$ zadfdzOm9(f9`7KuN0_JJO>kF&oZe9Y3ot{#K{JGMF?;EBXTc;4+UvPRjOZ1i#=LGT zumjD?6JWDZGa0ElAY-{DcqP$|x{(@q1y zIB&N`d|Fx*2@{Dm2uLw2Cf_G#KM!cFI~Gnx6cR|B0S5!iH#VVoiqb6@MjCbBazIYO zmC*)+K66tj%vux7Ni*us2YT+$K}yx$=onO#_a$3`O`6979GU~{l#EEzh!G}ONd%|- zz?9feMk{GLA8c4^w?UwS_Es(}ErD;A*tF!SrCC5psU#>y@NylzdeniotCliQ0Sz}B zz~CZKI(57uA(9@Xg8)g90|W!VTr&i#wV~@u?QRNF!A>m60(-kFgiorKuw{(F$>pMv z5GA_`Bbi`NduS}~UA`F4R%Com(0-xuS;{eihS1fR47gWymnnciW<@IFdF~@z3tuaQ z1-g2>ISP!Cp}wZzrTr<0p3&sv;E>g@!7b9@U9=q>fq3-uwHl*rrP&YDgLqG&UyEon zJobk`55a7%<=hD8n-h<$f%6ASF1}_(Z=oWtx71|S&U4aktn6kG=h`#`uyJTFu>lap zF>t;^f$a$Al%nqf%|_h>(l<(`Q8t;oIXuEy=ikhBHQMe)sOh)I1Da%c~5+I31}8U?Gco*=4lPWptL z&^X914X?T&H|U%PazH7J6bY0y9n-_9*_l@1!&2x7c6{S_NtKGBTTiu|xv)R~WSw5j z{ym^Z?i!qWXu?(|us9LLwHDS2>Pif@wW2iRbPRAQ0wQoC%T_owKhvEmJ*lm(Qs|I1 zt8lSmI7TVG{OE~2sfhnxH@uBev(gAkIiLcJP^`2HoQML;qD@Idv6!ILoS<_?Ks8Tw zYN&7`E{}QDSX4qD$OdIZ!ATbPX|$YrMm0&8fHMvQI_burfu^b?g=yJ}fzyckJT!9|L^g?BF%**{3?f+&zys#StA0)1)XFq2@{q3py##*}s;At<^* z2&&o*qV*wTUmE@hb?hC%Xo^WNk1*UuG1q?AYAedF0S=mQXQYMf?R{u=0oHdV#V$#+ zC8U{qJP368|8@Q}`~}o)6+HhdG8^9qHs(sIpkTo>avSK4X9qDstOQ^h4GzLLP`}@{ zrRI^78b3jaU}0R20I3?2%sZhV=$wv7&eZHp$ibP_;~V*8uFNEK`*e&gJ}b6&Nqey` zrx??#;gS1>IFH7?>t2(8RL+O zv~YKiQCkkKPz^inYt(PleS;6dNUgL?Ix*Xtosoqp2Ac;DaEG^3yl-Y>)(dPNmIVk` zQH3R%Xn(yXHSo0u1Lg#h0r6myvr&r7GZlzyyNM<$%#6C>fRaG$Jz%2|lR$Lc`GS}t zxkk*HmubyTJ;W&sSb@#<2rPdBevQFis67E~ltitZijDZK7!bcR_lVyO0HyIOpQLf) zf3-;KUKLVzzoK4b@i4pP7YOL#p&@X%l z0dwFK?jCK_&BA9Z@-y^p;WNVMMgteHB`5*D#35ho`1^ghT%=gi>-8T4h*v#oRs05{G^Av$+z1FrR!V&<0D*{kK_`SMn>NU_%VemHij{mapQGAvU&Wtfmf%{IC37X8 zbe1QP1$5SdV0ff4)=3WmYk#3RT0}DOJ!nr&##k!OS~&wS(CMZ2>+qIXy^Mo|Q$)Q)9mJTj z1vJP6JVG++Zq-0m9)^tYN;g}DsznVpQnU}YG6#v1?c##X$borNo#P70A(gHi#~f|N z`I|5R=F~!WVgiM$JhXSHnjq~ZzHO<4KnBtwC)(p7d`f?W&xJ@q7bQFkLt+_hy89ad zzx+63R4s~QzN$E~AAez$a#BNM+iy&_3a4e?ICy3kPTgFX`8>S56oE1m%cF`@{OhB_ zU(E5#Z_s`@Xm5cCKQ|lrh}Wbgm^2DH3%e~lA_85wf<0OVH(%zIu!`oil=34}Ql7gC z1wkrFML++8-a!y+eddPj@%u~P+{7FOZIwqo$0t2`bB*vhn0!uBD1^!7G)ECOj-!hx zY*rA5Ip)WX#Ua(8XUKj{A1Rs0nBQB+r}O;ZF($g{UeoEiCh)A*c(R zzHQ3Re2mtXGFM?Q6A`PC7YkM&kZ z1NakTFoTX+^y|~i#$CW8N-rW9xs&Dw7Y7=PD7lt%ai-ZgK}iVu`=zuEXB0dSuHI58M$AOH&keD5)w znw1%JO5k#oWFJd_SaW-f*~rHzJ&saL6=5AH=83~CWBRBq5LkN|*XB3Ak7*=fFU$TJ z7@g|oTe=&q!b2r$ppuyo4_OH+JmiDAx)c^M=$xICYBnB6#3RotntW3^Oo${?&OtRT zOhyF(ClYDw#FF%oW2OZQHX98bs93W{9NboHXhKXOJZ~lC(MZ-5&|JcK1)w|vgJUq8 zk`qm>aB)^9Ml~hb7XSnWq6Ds!w%pPTqwXZ(7KJ--y0{naxRY6`lgVt2^)&-xeJAZ{ zFRbVJvF26uyTf`UtmD8~-?m$<7XqF~@eH%^jy_o5Ce`_|en?}TAhWm$y%7F`A7N_` z2(QEn&w&w+?H1uzpaMLEAso;5LHHdc_hyccz6dWzmWZD%-uB~rKUK`CUK}xdm0m$= z*{Q=CvqtO=>92N+^dUZ^N0^P@2+}JRU+*v)as=sTMJ^Rb4|z#AdLKpQZlfW9EGw@W znvybj;z4c2`)h{IK(+)!e<%YcS?X%dZtK+o;{5`yMjDvdqXA`Lp5|1CN9-)K@fcQ@ zkVjm>BsKcEqd?(3G{GG~Wa&lhB0tLGkh(`=KfhZJId8W}KZ(f+59yI+Q_RLEkuIvSw6K9ZXEYp(3|fm| z>jT8*zDS#g`LLUgBSfXG3%$0Uifm{r4gevo_~z~l zHg=}1A>?k{SIbdIu%@kvKbQm~jiZmfLf~&34Sz)oiHfKw#_0I3dU|+bL5i{X5hO;R zmaJIFx(IL6douFe+whQ}L@Zh?(T4wyl83UkzLYeU1Crf_ zCOXqP!rjA+@DTV}=Hku1>gIwhpi;hZ9~R%i?_C_q8LIkB4UV=p2g>JrZO_|Ewo?3u zg|rU{BjWJa2l0Tpx4h|vsfQS~7jUW?kxKATUNUf6jXX}qa;N-^4i6mK9sp)FyIy?h zrHq9LgAKd!_r*XW$F#d$9#ADOdGF z0|{7pV>GOiL|=Wz;xAyPqBA7}>U;zlSf~3YK3mWKb=roTM*MAB05<^k>!S<3KKj`} zeRLy^bsZXDpBQM5QD-8PuiIokT?YG!?rO!h!hSmBNZ=!##eK{&yv#yJvAo?0?$C*jT04N0|7z|7!rb~P5_q=lP1Q0a|-!%}F~ z6!$H-K~ZwBTM82s{gO|^kvsZtJ`Lp)Y3Ux%)S-O(7Ra${K$@?^*VG4BxEe@NKme z=<4u|Xa6tpHO!w~ky&E5Vk;rnhGPU=R*J4v>k{WI3))Z0vstq% z{KPp13#tAx5nRR!8S3>ml#$Je=(lMIWn=!Ad$O?;N1`sCWllvk((NGQ%}T10Afr9N zRhBOXG0iJnktjA=~X$+${Gy;o`UTqI*f zn>52{;ChNudvi_OAmHXkm`gC}Bqq=79VQ(pr7>}fFkah)Kfq*D^yOZdOd%$f!=z$& z6zUZsMBnIz&rp1?X*(1Q1FSp}nwWZ)lQ6xh1=@5iNS=T+d<0eDu?0A+2b4t~#4EOf zeiRYR-GuB`P!jj0<(6W-tw@DO>BJr=P9aNl#y=s==3)LO8vPd7Y7TfvB*4OA)`l~o zpM!MRw@PC^G#V!Hi`MCayPc66-6`}?2G}ad$T1qSsMu4WEkab%O*3sIq0058Xd>_ zlz2TP^TbxcyH(+6K0b#EzBLwAh*-tNP)?16PDz~{Nj)XpU0QxoxO;lVQPCO57%cb* zRvH;6hbK--!7Z9*c>6@-p;c+Cuu0Y&+sxHO(QT3u-832*%`4YcpNTbOvr|v;2yM-N zjb{P`nqBUzE_Ke$h+ZT`-o@nx;LsB1{GQrTTh%h_XB*&WTBMm6uq z46G_~iVqlScN7O;4bDv~HiAvjsE6Fi3Y~EGkcyvxDuXKaF~e;myAFuHISexvmyX`n zZH7M!nBi9sH=VMPxEU2gpx-xz+f$tptq^fsx15nP7Bz%2xA&&v2jE-xpMd^!ls1~AkaJy@ z89QbjSpj!Z)B#{H@{k(B!CK~;v15^jGt|ae;Wh*g+NyqG#(siNIJ;QF1yvVd`V<=o zrIOTfEKIm&>_mb2LDflJ2eXp?2_q8{uPQoORW!yb_^5K63PspuV$;@$T$FHtvl*KP z*lM3lSdod?jZlQqdQtWyzz88Sy`LH5qeP~=qS3Qag41TO;5a)Z=*-NIfm3BEG*+bI zzzjL8<7b!(=3-GXB5K_-ya2U~HaX8!q$1R_g7zhTc{S>OM&{?DE_nDBFVb3!TFqDq z@DT0nX)Df#07B~Gj@i2!VaV#z#pFH_dK4F{amDlA{jVhd_2}X zPQ*DRAx^*)Wivs{DhGomjs*Dv9bnYc&{(ryD2+Vx(!bdw;aynXL)K)$+~Dl3;fa6G zP)k*K%t|#=&=c^2umoOwVNz>8$Gb&XX9*$e!G<#FidszeT??!LGgC1Q?x?{`5dLD# zBmSPv0U_okIkn!HCUs&}uJj=8DGS=0TDM%&B)PL%-D_~9S4DnPpmo>6Y9fu_60C== zN>nujRarP)1ba{j%l#MaKsuk^??ZUH%W)on^7%b~#*8fh>E%L% zFg9Hkd{cFr8Cxj5@m57>jo=s{1Qx-G5d=*HX7TDI z$PyjsHZxoDVy}3b(ctYr#^S|V&6JO$7p&P_KGBOUm+&)s3T(;a-*dtfmu5)6V%H7A zntfRB8+;<`Rox_PM}`AF!giz=w%lMIrD?|8jhpMjEF`dqu0Z1LN*&yWX9Gpw;jraAVC)jI|d6?s1NJ=dlf?dkUas` zN0}SW+b2EANb@Nwm_p$OLB#(qRd_E|{B4%=5? zkcf8DAjy!6nzW27D`8TKVGcl|`;p6xj5uLNSwqMbR0<`Q%*Q~&CIQ+QLW8DRSBb?YTn^PXCHw5R&|%IL?CJyGR^BW)HgZU4 z#+c-uiLw&||!+Dom+%MkMuE zVG5oYQhzNFRKTuct}ZA6&()|=_%p}?zv_E9S&_mziz?G0a zH%<1gdHB)fWAE1loH8~=2KO_;aIn!d@_q57maCTSf9H5~WCR(enmADOgN6H68qyqL zQg?%AiOkrAf*e`bitK;7T|O4dVt;J0gAJ#j5g83iR^1Yc97K&ZlMDIhqF3RvjUPr< zND#Z>ZZyq`jKE%+3Bz!1gc&Pm?P>>H)kI2e8VcuP=x4@$DToa#T0B7j!1Kb++g}#Z zcf%=g!^~KRanQ#k*d43RFL}M1?4%G(IB_$LfkC$0=BVZvo_hWgJ;akyq>vQ0 zq%D<;0C52XN{4r1AoMyyw?rdTfwv<0M(s4QxeEyLN&zWck})X39z0$_vC4d_U^^mN zI#+JUnGb%!P0zetgmVXeF%DlvD;M01Ii-5&}YoF-jTq z;}UNx`3h`~(`~`PbsoC?HtJR*JQWJUO=qJNSr=(^&@{-tYRA{2BH$fcfi+aj!rg_- z)NFpI)*s+($QT9%MT^IyupCQ_=Dn)RA{l393*$`~4zr4jKA9pG^@>CjZ%H$C3QpCP?<198qTjl)$;^yhrr$o7H)?s8Ypu=Le4VgP5^D9^ zYI%EEzx`9*Uej-XmbVY}+XM3UH~kjD8{0V-U5-hWH3PPF5Hh=GVrQHg`-d)fmOwcP zZ6Vc5DhuFR6N-h7;xn@ePRr+nZye-#n6Y&;u zW??Mf8Z3CjsOM^_K6r0IRyP$8MR8RlgZ9zjc}B-0$R@pRgbku`5~0~l}2;duI_{(jrjn^6V~UQ~HOpC*rZ6Cj5pIau&! zr3@x~isXCJ|e05`x5cW~ty7t{&?gnYl>x$n(P zCV)~u{vdDeJ@?#m&pr3t?c8&YmCoM5@GywsMF8yx!vW0vH!?-IlMKOu;<3Woh@FE4 zARjSFh=}3@cGFp8(h(@g9h5Bo)w3S52e)q4yBVzhJsZc#OKzyk59`y6qe;ZkLWDQ* zmto=`uQsb{OsO5~-e_Z=(jk`qLL8aPQXqu0r(;cfI%Y_?0r^622lOKmwK@zWDXoZjL6~a2n8c1>yYJw@=-(Soez0*b%#$k^7WuV7c3+ zoZ6^z{$yuju1d|=nR0m>OI?^OC97w02ZaV<=cd&^D)Xc$b|@+AC;L={EuXSIJdFZwC_V6SDCUW0`#>)w^mBx^&q94G`T#sZfCmK~H@ESpWGk2KAn6;7 z0cw)MT>HF!Ms`7=9X>UOYhzsBNT;;{hcT=@aWpy;!7!By^81bc>%LIqLexM!$J<`a z6E2YxGzzq%c!inUhrDGZFE80z7?JUG3Dh9Gf;|yM)jMO9?boO5Yb?96i<}yXMGz+( zCE% zR&+g=ud$AaM){CF*y_YpPccFp(|Bm@LRo)RWa1FPl+( z2mD6UHVDtXrw{vqgAwZ&Fbpv8>SGHm(s$UH?Ih-YcsmynSB;5{8k|)nXJ%*vT~)zH z|FW9O3}s!+!_G^kWS+P(0UI!#%Yv@vlnh{vz$XeYb^;<55M5mP_gX6+N2nnJg#m~w z5{{wHoPb~!mXeeeH8mOK3Rv!SH*J8(A_FIUJdQdQxoYvkQGrP z20b^4AhJe*BLrEYT61}|>vjrNGW;;|5Q8GtQMjYQwLeKYjd)|D^0TyC_Qi=sS|7_1 z7ANo$Fbi`HJM=IVVdMvOoRykhqUyer>mB8%VvI)v<`xXGc&^LcEgnDpzrBBgYNO-2 zT6uYdcbpUXy5G*NAde-oa1b@P3UbkO4=@|$O}F7s^{50bbz50kGwcjl6DxfZ zmF~Q*>XEFc>lhkK8rE&ZXL?FSOFT$EVFQxo(%izM0nTj(_huMg!`1=ld%u6*L41MO zr^W0m_L;b>f~%Pu^II1A^`mOuJnV|YI&9k@ex=|EvX$b zK3;VyjG5`m#ae}-H{BRM@>ufXT`AU4GpvPQp2ZE`NdHV(+`tJ1QumI8j!I)TazeYLX((57PY%M(v^8da;2b93C2Lm1TB_H7)iN5y8Js34KBMa|dD}(#IhD*fH6s`Vc;!e=DKv2Z-7o@Lcf0Xmg zjAWh?i-kBL)J&%8f~v~H=t9(jz{Ofakd46YS;Vdgv>XluJT+}R7lpsHo@YA>z z)L{bc*K#xf9|nbUP#BfYw%N%CD=$u|L=$Bew0)=7U1hP-1o9$(3A4s ze&vjV<-Ps>TpB`s%egbZAiepMaIxC!(JPfm#(a_HPh;+B5uYBXsh?NunDbT^+;ZbBh@P_vp6^oE(O)PO8!o|2dkp-U))$o^72oUmy&izPnC16@x08~CFXeWE+VTfB_REHnPStdDa1yhRi zfY$IlD&=Uy@{qEJAvcvb$+OHU&zaU2;QW0>S;DzFFw;QksP%lrdK>8rBu*91 zX+UJsDKQ`$r z?NsMvq%*Get)KrWD+}8@HcE=}+Iuqn7#4;Du$lcdtsCcuFd4X~9l++xO`sog{X$-p zql8g@Jl>-r-`kkLB^Yk)u>Rozy__?c^qu}1F{sn$&ibNdsF@SuXaqM3#X45TwhXGp zvgrnNA7CF~myQY*RUZUGGL@HkW%jg!76%fRB0qG-bbT+12-QT(Re9B z#f^dU`ctfBv9)Vs-9fD(1}q7y7*BW}ST^%o!3`IBfLr|DHJfmy*6ppo1pNnvBwB8L z5ru~Sfq%^{qSWvb@=$|5=-Xa3z@V4(>QYC20q#vGhIc?3ViHo~A-?~5osXH$^w_9Gmm)FC^Ja)H zPf6%zPjYFLSfXUtlj$vU3X`&{*PQ~C21dJXEyi*%3#*}~T&Y1#0URWd9bRIV=WC5U zU?lX!E`_{H3AfKoEKc*?0yG9JpmIWe*GX4pCz(PF=rr8RJcj%18OByU5q);cmbwsd7|JET!P1iJx&hA_e|2Mu+j${>swOc2H;IZ57I zUuyMlVPdC$)`Sr5c^|g(Rv6`bX^l^VePM>}%WT>FC~&#|LA{lwtKGBlBLZ!#8jnqQ zr2IIo@j~SCeE|pNM3H91u$=t{<@h{grK@1dF=8(yRcwX;!_YXTmeWO;s3+qUooL`2 z(NHC=kmX%SDQ&yTREQB@P9fIg<0DE`-?|N8MM_|o^9IBp!c}5BghK{TWJ4!u^M*=e z5TeAMk%Mhg8RsP#*5&&lN)R%E9Zbyc%9eLF&-YnszOfMuz4}9|N384X7i4d}& zrgF{t7A+#?hR-Eg&5;;`?#I0MXO%gE72Dh}<{FB07{l*TK&M2+mm^RAp}URFtYL5Z z3xJoopG{i;@bVJ^-Ub|qn^|OF6&q%xdQXdD!pCAaIpJdlt}BBKYrwJ#DPsjt&Zt|- zq}ReQDj>08@Seo`5@=XBD#QGU;|--0@L;DN*B3@yF3L9MoEX#^)SxXtR zeS6Q}vx1O?%B5HYjSxOxh*DbX*~j+4M*SW(iIYI8F+OjS+_F|$uf{%lsYn}@tyO*{ z??=9BZiEj2t|`@QZlC)Mm*}KBw&g^vF$k;P2u#G+BcZ4075oo|wc(M7-p~P;%%GBO z!6@PJH1*(CX$kraA>DIe`-e$QZ++n1K$e3=3#_xV_{|j&cMu{w>rg@uH7d*em!-J3 z>Wx3v`Cp2TSm%2gw;{op^1_m>LwI6WQ*Icz4|$<>ThgA7uOeYB~H0DxTEsH;HaP7{xnrtc7ya zOMNu_m9zy}1uGzLnXE==SmX~RHi5(l3W+dV?}e?+Fyi*~@nX@(U&7yyjDlT`66ve2 zQv<~x5E08$$NoYY6R2jb!~L<#6 zvl8?NM>C@0_#C1ed4^64KOeD2Ana4mwLfBIg^}`wR3Td9U7~SeApHdbKNW)scOpSJ zUD^gJM(EZuw-Ma&cu7Ugb>0J_9t-y8VZ>x%re8OGy#H7Vcnep^K^@!3#p`QQ>@j%? z)tLj{GQAYRn2?USj8ZfS?mxKSLOnR|5QC>DRj%2&1U$#xAbj0gUv-@%VM3R}=*OcC zibTkf4*8iP5L+lkhU#$Qi%wau_IQ88L*2`_fsqhUkIim?vyJ1c5^ z&E@rxAYGP?T$qDm=zFnycM$;qQ!1w*oxpjgH}O1;Yiz|7GTLtepW-2UN(Dn|SqQTFq!R9_@Vo@=hlm944Xj&H(o|3? zOLVIphr!uK&kIJZdmwBNYhOUzJvHVqovFbu1n~#?yRjp;3Vx4omdT7SABXcM2_0dN zfuvh2T?d5gvF;)AHZH73<2ap|-frI?GwAWe@drvdwu9!Z*KjuexBbpEYl@v;l3ai;$@C%T$fCrtwUv5WJ z!7&mT;(5H_#G;gNvCSIr)jn+WfVt?15es1)dMw5%(UiHXg%;Hr)KVUh+syP$?|3{L zsde>FG@%f=g7&Ld8k7~K6xA}{V{PUF4Vv;VZ*%$o^q$_Z^MyhwNQ(S=pp9B@8`d|y zhL}t&LX=D`cd)(IA#6pOip*SFMXj!|)!yzN8b%E7hTma2vfAgaI%wUeU zCZ&yBmU}H+w)%CMYC?lsX`uEx2g2Z0J#a59yR?Q={Aw$9QZ4F?Sd04B336m9JWy(s z$Ah#BwE{*1g2d4|i8nI*sii{ZHXbOTi@DwR))qMD7>Q`CWO_ciNSza*S?0rnIWQWY z9;mP1L^@Hb5b|wOK}tt=W}PC-NboI#R)2222)d7=gnIc>6RHo@VL1ntY*>ShDa+t; z95M2!FY+Uy?X_1+Z%pQEEz!_UJOd4Wt86kwrI?Gio}^(ZaH zet>nCNR4>noFlbjy2cw)t+79+KQ_(VDQC?D@~T4jU`$++F2yi1J0&M6CL$aJND?NJ zVp<|8)_Q&JmsvrGRqw@yzlj;&i##CR+4*H^fu@!tqI)VsANuoKrFQy)efhoEor+3<#4(Q^Ar`0T8>19Lo&@NE3w3Z@t3Zh{)!y>!X*9Hb)r!{zLQB| zI|sJbR~6+~h89<9r>zZ#{#^72FkZX)34(e%Ltj66;-2-}wf;z}g>FX(9BeqGZ?D1w z8wi7u8fg%De_x5a@+I9vDxq*Z-<0I`WMB68@G&VVxv*#=6uPX`d^v$&ECXpkV`A&k znf+%_(Ho&&2VVjW?NF;pn!IjRP4*RAa|!SO!{fjJbfA&Fo3$f!T!rLo4Zljq$tFUE zui~Nig=z94SV46$c!6f&1(?}6pdEFZ|_ql?oK!aZ`h6D$u;4(0ENnA_O@_kiymkY@RleG3KAb;W)w*R&1`z2jkrX z0A;@TEpmG$h0Zf&Aymns-4@x#g4ykc5i^mc2B#tk}K_N z_%s8(f(4MQxRfawUd+f$j_WEc83u9(KmPzy}cg=aSraDK|*c#Y~J# zxLY0tu-3Q_Qqc@=8Fv}hao9yB8*R0B;ZRm^frWT{&Zc6`eiROfL?2U~!{dY;H>^bp zWQVAL1B*f*O;g_fZj(y&RffmKp&##<6H#v(@i|d*tb4ncl*xsYGC<)Iiz!p;g%FS& zv7S$Bl40fS-&Lhyb$=|MJ^W!NzN!$-z9 zB*Dbdhpc|}*5Bfg)cw6IBIKmx8UDT%zxCGkHTb+vKA-33H2LJ^mXsy)F=40`i;M}q zwUTgW0M7e;9)6qFi|#2>bRKhu$*0ZFL-1MJ<2FKBr%}8&QoTLXejpj#qk_SdBR6R3 zhL_hAYzaBh1{%^%-*_XHJc8oEM{WcgU;nU;ajrzaP^ZdP>IohLsr7+3qA5undBS2S z{>hwdVtBD624%3n235Y~xtF52-nt4`Chkw=^D?%KairwH)V({G`8`ZL)~`u#Q(Z| zBlcuFeu^Yds$LTg2&6}VbHbWE=ulM6|3kSS8vsEb_z`{j>J4{w<5{i ziWcati{HX0hl1X^nbcK9iFT`CTGn_(dkqo7h4La2DG0)9TK6$Z#_y2YA(d8DxHG z(p#Uz{=vNl6OG==Gj8{59Ng)x@1T;dS$gX+WcXRg^$G_FG6uiJ&y?2||CHKqvilQQ z%jm6#uk#p|?l!x{r{{9rFxq9nxG*eQO*ch$YgVWje#rU1k>CZ#I z?tZ7khs7>BU2C}7t7umppYL^iBb|d~P*n;B?><$*@1Tl-L|M_Us4DQOy2b-e8z6uA zpLkXL9aN3}9#j?jRJ{r5&EOT!p?05FCEr2SLtaI@;?+=}s>;4p*_gO?pQ^I&plZMG zK@}*bt+Uqn2*zUuuLA!QRTbYsRh?JSu6PBbdPUU%eW|L3*4lku(Yeab6|dIt2_9Ug zq+RxrYF@MgE*~c;1ty2I56S!NWwPqVfr;KK=drk+f+co>XB80~vPY~^m+?nEg>nwH z-%J+dajM>W5P$QLr}w*?is`J>?{7r^rG5`&{_*$?<<6pyenSJRl}0>ZHPyk( z^D|Jhijb%!_ImJD;oc8eQQ3Oy;i%BPQ_%CIAc_7Wfat9!LsNHMrnmlre=hX6`Ng!h#~pt>+h~KKD9)aq4rY z;|u=He~7=-;#kL~*p?x+HyC0EKL^kAVABN`ja$8I%EaF9dDgkn(BIl1eKX*0s&N)R z@boQ+Cl~{b*gBXCo{g;UhRmUsAnnrCm^tqgO$J=LRSSgNI%a zixOkjWz_k2dY$$eIa1d-fb!~^vB1YTB`>$@p~OWQ2()?AAsjnGGChSvn>Qf^1j^i> z<7eX9KB$gJK?x6hdgAG*Xawfdq&)*<1w^)>53)6wLw7{iU(=EOCk3QE30%wYJMl;# zTsNn{dJ)#1j*EdZl7zJa+4V%Wq7SlDQ*gbIy_Jsaz!VTYCA-HG*N1&@F#>CPBQvFD zTRP6ADPY_&=j1N_{Eez{`orMDvM|upUWi7T@@{*B;1=hRpb&IP7 zwN&M8^Vxu+E4TbwJPiVf1j^!nFF2UXafCys$(3ffb!%zMs6duqP;a2Zh}J>Jg`8t*W0#x|1gUAP;S2QOGx zjRf0jj!5v2_u>VK>d8ymGY1*EiIb&O5{~Z`T9O9AvAkvsc)0nMJG`yXYuLM@X{noh zyd;hEdIke;8`URc?gUg~8_Jqciougmzi&pgI^M=mBptBD%ZJS7LFe92wQa^F_HxzbiL-%7 zy}O{*+aSQ>U2u8g0^&y;C$qdY0eHNzh0Jz__mN;PiA#`c`r(@yW6OK*1OF$S$$?&; zAR$&aVrBo7>Y%1qHGe`8spf{vYMQ)ihy|N`yv$LUtb#H(ABcQ==^x<#O~u#6h?|B1 zw-t|q28wCWjyo{9 zsSy{KXTz?*zM)K9XG5m(WK_mPP<0xXfRz{#*QY%U+kungtEd>-BYf%)MUZ&X=VZhh zRTM3Mn6s?bNPk2kC_%p~;&{!8oi>#Uj;+Rb<`k2siFsr!TJ{vsq)}m5XQff0HPldU zS>0m5d9~CY=HZ47^!UzjS#AXpJ}UsNB*PE4{wg}k164F7k415V^)7^jiaHDPeo^8H zet?{pGs&6Ii=2;vk>r@_F%VvghhW4}1(!ll9i}y({pEH@wYN~dOIOF|ayfYNy}+-H zUYXbq{D!??@9A^-Xzea_o_m@MPHJC!dUs;L`xNRY6hDtgmi8n(Yxdu8ZGWhvoYKUe z$d{24E&rcL#^c$0=&*G&Vb{)-Sc<+^ipsx6Nz!+@i)i!tL3 zq8zN35bOpoU|_%gL_x{iEj?sn{WS138gF3Jb*BOdqIhvQ?;HGt-`=3^R3gc+FGf(_ z-zk-WV-T=_)*4erVIsY-r~)eH79PiOFf6_yeUVst*G%3=Z=^tx&4X$$IkbC8szc9m%@6G}Nx7vcmlClXkpJ54BH*yC|w02fN9p#YpuXCWGz zjdX264s>E$ZnV5X(Rz&3aTn_-zf<+@L8&@)=Xc0KxFej-;`Mo~V-TPe-@XBFJW6!u z&wy%zrw{wALGbV9wZsS^tkw$v1M|pUePa%+`5NYf;kxq*Yh)w;Ngh9e~LHgZyT8l$@-6L>XJcTOU5-^Ngk7 zJi6`%JTp8?cRmIdI>?=t+jXL8pAGl_&KasBYJZG73j92qy&3C(i^h&xoT{L|bmym% zwrEl$w5aA_*hfVWj89fIxPy-Mist}37AROm?q&njg?(l4mr}z@xLkDj>GGa3*#^{5 z0q8Pa3`TT^O`-7QQ=Jy`T^CI9aURaCg!Otx^Pp0S$N(V*%F=78nupm+PQhimGXvFn zon_#)vnQ#(+BypKc)6aOb5)ivV?HvapfC)har^4zxIS08{Kem&_P0^H*V|=w1Z6c2p)c;O5^-IJzGHmOdbvw41TTkcwsinW1lCo(7-^@sSwzPqSQXX_=H&dz6t- z^Xq-tU5tFb@0h<;1fD9Uy)=jlAIHQb1Z||!ASU_{ zlamk&dqYfC5aHvdCmVa0KqzJfFrLB#rVCK)^Exxu(XBPC1BcyKh`R3V3(=D?<5uvj z-#Ik-yF`8uOa2bZ@8grd^X2!+$=_M>dtCDO1|BFmXC!~GmERX6f3L*vq^5(CGZ13U zdL61PLyvjNRMfQAun?uFyu5h>tm2e22HsgPzA#frTT)ZVd>)axzd)fM6kmR#ADkK+ zIK#f{52&*BE3`zH>WsLAnU)jUqcQs!Djqr><4+WC%J2};u)69-Y#j!*ZbK=fyhY8E zbdR_(r!2eb64`XhhHUVMR1NE)fBEIUrjEj8P9qT5uTZZgR+KeP^{E{ngU%I|0-xdMu4*AB_Q0wVFZ4>&?c78f-BX&UBK_)Oxi~+as7xdh_ktblPr1b|&BECu!rC_{-Z(+Txsw>0KsM-jW$h zu>jdkzMX|4JEUz5GFqSYX?qj8yEkpGrqlKmvNLIWKS>+E+&ciWo3uTNB0HpQEou8i z(N;Ugqf4DEVP7$*^&6orPW@I}v@s_)yJ}iWxApr->9%35{L;MxwJO|R(w+N8te4XQ z?#KzkZjoILGf0SGFD&qJa7=Q)_&wu+`~FqVLO>TtHQs33rv(#xf@C8uVZK!;C3c@W zt&hZiPaR?6XuM(djVC991ZB9TqmhbrV1A-RQr^)Txq)J=oV7V-b`HFF=R&iak_~8N%<4fNnqk?rr6iOHx9_T8L4_~RLOpdk}5MXTNS9S7U0_z@L)sP%GX|; zcnx*7vSL+Y*vetAvNhO)=LYc>Ad)*c^g=`%yVAriGx1LpkAz;YE!I&p;+U>GHMaT4 z+VMv7rGbj93e;_A53HDZc%ln%X6TKYz18yF()}&e1&iSMKL3J6So9C9-aD~Q!PTx| zDjbp&U+_cvS3gfbS3mnKn45bizc8!BnP9YB9o*z4wxBwps0%M_<;;zTV>T>E;CB#@ zK@jeThqK!NhBIRR5s?=2Or(1&7hfPR(l3VdZ?!!o5=`YdMSquGR2FSMJZ&~lKjx`^ zhDVh=*LlJ}=ZWQn^1J@=|FfP!=pwFBWLYydh-gF~do7N{AEb(eW3~;373ZfBZ{cKv zSb$pNP3XF)U5oHVN237t>b2LK_6^;7a|l1Ngy3kXo$5^pdUFL*PeaJt&YUt#0sxTp zQZ1a(#AdOQSbGJc39u-FyGOiSI31H*oQcBy7tZ8`*AYNPLTxoi>dpKVen)u~K~DA> z`F-_A#G*UIT`!;HtT9asEuu=HROroTk-)fwwLr|>nt@6(=7BG41R@TQ9<~p+LZ=$` zFE_~h+KaJ))|)S4S-$w6h@aSaYa4Ju2!8#7=@#GEsBjs4f_*eWa1Nt4PxVV3D5dUD z_0%#I9^MV{Fef|$4b-@(xC|GL@JWl)m5;E<$Eiw16&%PH!1Y;^6vKMYz5>_w+qA|} zKnhF7oML@rTTb-|z4Fa*Ufln|>g?+P z(FzFh3&F5|o*>}-1P8ZO`Pl8NMnhPVGLl#3mZLqr-Zy{W_|}saU8Wrx&PqEUgi4@i z4n)el9R9R6B8o}SaY2%B2f@jc1L3FOden0(6CZ=T*W&l7IIw2o&333owC1A#uRCL|wjPuiZnnnVh2vcx$Zk9ii05R}ej~vVb!}e3u zRGH5Cs!;80DKK3X7>oi7QK0rRhqJ)bG7AX(!&VJ@g)K7dNPx3II50T01hata%t28z zw5|4dVM4v2-Bx=9B8uR)Ja1TPVBdr+4(uZwetAm+Jg-pKxsdQ+XId2YesCm)_Dod=N_Eq{a}g}Wvc@$Q42 zN09;LR}B2%yzJiK*8}5WDK3+qnwq1 zhD$gMeB=#7B^>x=GVqI>LtU?3QQuM1JdV0p$68nu~Cw0&q~e3*;RkT!<0hjQ{+YIw1>xFN(B^@IN7KY8lVhqRT`iJ8URO! zw-BX$V~H~W0HOe9BgMa!kK-8GijK&^ao}pZNWxHbN$H7<+EmaPy9lKPn_6|6~9QKz{(B_w${oq^!{zzs4|2j{K0n z_R9-k%sPKW1I79-JYW7L420;IZ8$mOmhWR zcte~oNk*(~58x6q9)oVl2`Cg!-X{w5_c(JMVtP?lH6&7vobT{U)QEdMma9F)vBgv$=s@H#?viy+({@xwy26zYq)V(!oADITc=nv@Mluxz~NjK zmb|KnL}k54egE(BndYA@_9?vST#oC6iy^33zI_8hEp!fNlc}K0IKsJ5{^(kXi#0#$ zo%3UWz}M_arVaN!a0fX(60e>J|D-2n-8kN0%pLe*FC|Q9L(M>kUtNaZVC18PSU-Kv zBf4a?Chzb`g}$pE&L=)TrjtEPM>+iR7RPY8Ho=nyFY5KA)V*VxXFFp^5&Ra@a9bGkny=z{ zTZ}u;d?x}BxH=I=stB!qWH`7?9HKojDzr2l$j^1o1sub(5s%hbgyK>AW_hz-QTK6n z)K-Dp@UXa|X%ysh&Lrn&ED?t@Z&(%l7kVv%*9y*LCepLYd!p$WKqUmdTZ)1aYh(!P z>U`%Ksp=%Hk?|;z5w*Rrvle~kUPx1!f)Fo-aJhubJ>CvE*P;yXMT*VxgK9%OH81Q8 z56Lw+%IXB)-nEBIB~`pjLhuZGVg-J~D{d&?S)d?lKn{XbjZ@Xq1PIu1%*wl`AWoLC zjU&F_vaVQL(4@4jPLyaijGr*1G_XgYUC*gNCgaJAWcPVRHaWVdd;A;J}$% zOq_t*+xfdtq5S1xEeX+1A@;Feh7x#>3;4;-qdwk;b_h!3lRe~T`L*VD`1U@{3qLSr&sPHH7E%0XmzE9(s%YVRH;Cv?3`vc=JAHQiozKkFY zR5S#CaKq~Sm&iFHAphNxDKh-8mH2kLnaLbptWY|@g+Zg^3x*L5qp9%GglXT&3DU{x zBBr0ni}r^-c#H;TF*64+lQE_EVn#4Y4}hYDk}wECi>!i>lLt7nytH<@l0}Rjtf(AT z=j=xm<>j^Ka7^Wzb30XA_Q0;B6h)2r9)_i&z6Ien-#L<)pkMvyT|=Csk%G0@NjR>- z5^ZU1o>M}U2%}V3vlmC1C>-}K+*QB~0)a=t325q~QYcC4T-aL-W~}p3C`H?^aoCYn z=IV($NLK0U(&g(xCHyilD!A70XTfqdt@h|1T16D<%qcCF=7Mc>tYqId3uR$9QtF&V zQs}m6CbghqHKFX=ri$PW>Z}hCnE#v$eBiN}z>|`|EGEEHeBc8zf$1Cx9SY1WCcszv zz-iwW>cKJWvXz*CdJEGEEj`oJ}rz>|`|EGEG3`@m)Kj$DHc&|+0HON-LqQwaOBOiF3s4`LhN+T^x0<#$Z zIm3P6$1;Hv$X1wHjQ^bDec;AS;DyLmz%0gpPPq?!ekSle$X38C#(&NjANc4@;3i}% zU>4&)XMzu$l>s~v&kD(8mf=6=EFbb!TxO>W#>A%2NgdqF}Ql>h8 zWid{Wx z!D63_3L~yz+Lubf7PJ?XDxiaU5lj-tt&Ut|9y`D?n})3jImxrn$dvcxT?0%W|B$CO z{2oc%RKgDncQe=mvCVi7j?E3tU$G!pyHvh!m=yxkVlKWx*kph;B04{x#ZydHD zn6Y6sajgwY!#b|#jm|pW-|-o)Y3(JOS}x$m<|5)pAyd~QH>B&ZWsYxn&slmS*;39`!}QeKDZ};;Pk2R$U$(rHR!IBTTqBU#2^|aSEA{!2?SR5&Uu81&m*_UXhY$uEJ((NeaJ(0 z5orn+7qF%T(iEawyxhyYs+hxn09u1T1giZNw>9>iYwf z@~XB%ToqQ9Zsc)|7kTGfSw`)F(+a$|hefE-sRw^8*mXSF2^SUD9FRidFh`vL{>NK> zLGm$B6RjYY&l2!};99x^#^oZXpM)WX|WAKtKC}KzOH}! z=ludN1YRv&YHhH-Y+u{I-R&1>4+qwjehF8QE12*}zd%Pg&{4VqPK8&cAeNV|>J72F zH$--%=)&G0*>FAD2j?J&G z;HXr(`aRhqWIOvY15*cc_z&vyo+QxI0>qi&5Q6zLLwzwpJZPDQR4h9f|9DuB1UQf~ z&jZU!BAx2N9OKo@91kcr2{gt7`iTd`91kcz33N!3yi=uZSkwlk9%pq4rO z2cY%%qkx70NM<^Df zUb>uZ?0*k{{Nld^edTZk9Ve02HZ}WkQCcC>pTFWvp8-*$nscpa zF3ge6_OQw{EVJs3UcdX#!LK_%@nC1;jhuY)a0#~f=0PKor z&G7^8bMA5FVuggu6kpm_Rc0qRy88(3b(t~`Pa2S2L@i(<~jV5#ah=B{{9L;xU@UFs2exP z5$lEYi&oPbtJY}AcTLr{wJd7gnA`PR81vLq$ag!Q9^{11H$8jLTJk2%-jnwj5#Q9O zkqwH*hYk{Z&zs1H(3^;!fm*Sv&QILS!Zfh#LW;8YoRFP!fZpQSdzL~N*0^oROx^jT z*gySZk0B>A3Q=0fz0Ix~fd7hYN=P5MzvGW|H>^#??-rU5X z4ZMn9l(gR*?cMLTU9e~jVztJ)_tO@%$GR`m7PRFq)1E-Gc4$S`_kORuqxYLw%U+B@ zeI5=EV1@|+v9He4TZVxU8P}2ce>j#S@dr3;VIYM~c}!BuA6$qOt?|#edPGRP5pX!O zO>1ZZgJDI-F%Pi|>Mh3ulMLtCfQ!a+a`cumB$;+a8Io&@^cI~z@p%A`4|1dSd1ZRb zSV`Mb1BcB>Q`?wwAeayzm2-N$pkP8goKqGV_F5#cQXnQ+vtdXY{||}8Ma%#x!5107 zirQnl^_Dw;FH$a6a$4h8(B6h;`xfh%rMKLRTs&e1>BuM-3qp9@PJ@C~4D2yrIXOD` zXJUfy)cJn_u-?L-YHxI(z$>#xdtAQWayhcZR&gG3BC0;UWg1dpYpm8V2?~=+n{M zhlN~d@;lgq_=B^Aie{$9&+ZRSz>ZUnkve~C}EFEMZ;7_nrSb^S8Ev#b>$7?+l%%Xi&Z)yGRGp|jMG zMHlsM=KKS=S+?GdTIVZ;0=yAxE$n;?)6TzA`aT@TUK*Wf{}1oMCy6}`!!XstEbyBM z>}e8*z!jsAW->?*`!dv1b0~seV*2qk+?zO&i!Dw!U}*u(Juw6~`!EWZfJ$;ICt52p z{6n6jeAs85mpB8+qn`Ol?So@@C*Jia6ctA6*x-f8#Js4@w^3_?ztr3q^8v2*0VwVX z{!*j)VpI;(`@%#mlH`?llqv8Uk(iAXlhVv%iV5+dL(J@=ohm6 zLIaR828DDKn)`kabebEGV%MFQxR*fXPkELwG!U-To){X^m*#{54a>FqDzeT#AG4MK z-Y2|N7J*6Qk0~&TeQz-1i~CJn1z_R9aZnfu{!&d8i@>=ZoFWrjkV+;dP=nTZ32G*d zW30R(?iBnm=XUT|D>3-1bg*&{EVg-Aq8Qm)w0#Uuw|QtGU30hxt|p2+f}=e{#Mwql z(8rc}SM#ryu8vx-Q6()El{7Y`lKlJlSGn7VAreN}d5I}(3fct9eV#2uzR!x$OLNKs zE}zNnpf1=y?Xsd@c@?>r5~C+gk19^qXbFBPF48Syf}@;XdX`4*8xh#3;}7syCJ)TR zO&21rAngub zcL3_)rq=LJo`8T+Jo(Dko&Xg-Tbk%(p#7Z0G3Xq#93FC|%clX}hbVm$0nG+#3l_PT zBQ@1H(>@J7f@kxYt>WRoI{&Mn&6MYXM77VrHix^ftW^7k`0cCkZOVd)SJ6OTR4MK7 zqHj#L1~;6(&0XSkGM)VmWeW2TPJ=IMjgJFF8Qz_oWY_yUVOK8`J1kaE)Ki({6b?cY zpOB6uSAHthE3+zu*F;ys(M?%a6Ak9UYwgy5L#ACFP(NgUg>}j-xY}R*p1TQe{I^sX z+URz?)Y;Njn_b$rXyY4;-|O16bWz%U(f8HQldwDtr`zKj;-BX7eA8Ox>1V@wmXDa6 z>mUvKGh{B=O*H_Ep_+qD>$D*BbQqhxSRc1EzP#Wqg1kt=>vqnQvCRcq{U`Xqf)Kla ziLuT7wT7`&UBJx#b?!rDM(B+he~iS37CL{VAlfsFQDN<^Fas))m||U^C1Q^q>^z9< zXgNIiikw~vU5R%PS#YGj91u~&vv(XK2(5-a88Y=m764Dn&dGP4l5{*4`3chTVgj|O zS)mOXoWJKY(6qx}`ZM_;*xeI=&IeM=Q?B#2poc+Jq4O~d#g@W`_A!r^caeoNyOJ&# zQa`3z_N8EcN1L}uij69C{wu{g^X0Jep9&e4Y}e*G$9_#Ju#n^1jL|Tu6aPofPmml9 zsga<~qwh4I&*QC;xm|b$s2b5vig(xKJN)t*5CM4NuV{*BBMw$rE-$)&-kWLt)TA!y;sWqI- zjvEH>%2H8#?ie6TseS4#)%Xt6TGLzcM{!yCI(&RUYSLS-HS_~cHqYG*rlxR>Efa5w z%3PET7Sv!xZ?qYz=5gQ1ln&g9HSmRz->c7w0I^s3<#C4gH0cCHFlgDH zcXnCjXjX|joL7j`J_|<~e)k+9+Fq@y4C|fF@BvEp-Ug%@@{;E}cIrm;BroA1| zX??gVwoZ#}&Z)XOwmDl<$BBrH?M$X9VUziY9v>C3x?^iKy6}*w>~LE~trXj`kJj)v zd^j}%+chI*;&n}|2g$3LJRivsoMX+K3c-M1=?UcpAziy~iF-MIW3!v<+=_d0*%#2D zPlutqRFhNvD>wpEiVpx0YzyYm!=v*T0slgq$Gfa(ya+FO9;TLa{(%f0*ucHeC%DT* zKc0^50|Uy#w~qmxWnyK%hx3?}U#}jAaith=Wvl4z2hWB3B%TRr4!_iDg$gLK$ZZI*$D_Ioa+ehHLHD|lzHyeG#6IZXH= z+}3#3cmY}kLzU-9XBp+zdk<)orOMKg;Gv`;WRp{g_(1&&(8~i{K(Q`SD~cBE6Lh?UTrPeeD9q%kaR`JC zVSd?{u4|DB*$d=Uk2US{_Hf>j3<&0AX5b2KNY|Lf>%Kk;yHzr{T^M{8@|cLQ>BqEd zceK}i8NgF1*DXgnu;e=*2^Q?44rEF^50?Gv7~?BsD6!?265EZ?M2RvmiPIXQtz(S| zpFxG#1z=_yk2Um#xRd22<0~S%C4_*eeiX5`q(p3Va*66a3UT#@yo8RHb80}6Bpn@4qf70$)>QE-Qj{4i~Ewq zQTRA3tzl!`m=^BFFlt!{;7Dl8j2O-)%VXP+OjX~K5F9Ji zY*G4|Sw3oy3hjP1Sr}OUwX|ae91Y zIhTc;E?V9~4xWXg^OvaEA{rmH2S)60%of{ZwzztamX8D(0O$`GlSRRBca!8*U`19D zylE4$FRRg7_@zeO!|YanvS>5yNf>B3cqfCE2aHL!$RJZwMQV^$U_znNQ^Jf8=4$ij zZ*6G>v1BtPoI;xevpUEoow%WkD|2B$Wyup6`|4oJU7*9X+RXBYWNBUdBYzp(@;l@h z>Otq|r19eXCa^*z!rcgc*>b$FYl}8-JvAyO05EtPI&nFOYZ)WVK<7Nm%y!HUd#K5w zLc3#$%f)L;o8NytQjpnYj~!1A-7-1AWqERP@aBdaP*AX{sbLs4oM6ZITFZ|?10s|S>-CnWDU7H90SGJMpmTxuz-iP`*#4vMpYjY> zb5Nvi#xc%;Djt))TmLw^|WH<)SCo?2x4_0a|Qi?_1%0asj3Wp6o|ex&4;p>bt$d{t;O)dst)`*YxaUom};6k z0%b9SoD488$*>>$@((B-vD%~7+DIIw)9U&boq(f@6By3E$`q;Bn@=Ipu?`$2V!*#a z2x}DPrP=!;cJ~Us*$^sV5^2~AURz6s0&f0Hu-1r=DsunM9_D2f3Or`@M%D|x?jE>D_c?@Z+VO_2M7o>s5wua{{fc9T{ z^Gc$&XW-%qP5_Q03@#(!Y(#2AOp`;Aq&L4KKM~qdygyQJ0M)+W<~kp46J`swtc&B8 zO>bV$jCf>EtSxy7r~22#ok`>KfQ;DZgX%8AQ0GuGf@WxuZ{a96dV2F$$d{*eLyNFL z<53$to#19!WChRn@R*fiWnTwRH{S>$NIDovzIWT^Zv_Jk44)q#kK|%R<-wq)JPNRI_90^7TzFfF zwFk{|o3dSdgqNc?m#X@tSgajWnl0y?^J5}lLvcOMK@4^5o{Bk6`Vud?<#~C8EQ5!` zec{4~Oo2G+Epm)m08l78S$6;$^9SrcFciY73qdafb;>cl_xe0(2SO~6$vSxY&>A>f zn$|_~?7NupvxCxDMu#j>W6M)9N^2-hlQ9rDA-Z3Yc3X!e{am__@{ja*RexW*97*jm zI;k?M1q>Z;0t`cTPth=4Gm-#xK0t9AKz`R5J5nTZ!1h%nxHprc->E+Cm8zC%jmj|4 zQy(*Bi0aJ`GuKxizm*9nU410d>Ne6eNMoy1j-e^t$-z$&i#g3bC1t>E_AW$=zuki| zyrD%z*SL?Oa7G7n+T3Ml?giS|nLN8q>&%_@qdNhWz~fNA>VsuM#mZm;ML*Uy-GEbr z6ZB^O>^jKLJT)zIg5E4Y;}l?uBn9|JOngbAkwZfA9SjHL!W-zAbYBEXdF(3P?IPmg z6!D<7hJ#Qen+%^*Bu@4kk5tz1MNQ8r> z>GY^UzitZ%iM{0rhhOSU+l0giaj=1#C0S33m+y49LVmXs6Yfh+JD^#eQ+~lS?=;^; z-V%^5TdSMtWX!pj)!7qagLMaWY3%~v&cdFU2agkjvz$K?LXoUB&X7ffn1JBSbwFX* zx+;+8Jg7iK88@Du0+A>8RtM)^=idrO$mIah(QUiy->Z+mKj~~g(#x6_XJh0HiVmD$> zt78NY3uCd)_Q&W5w3^ zrL1Bxt&O%u^-EME*DSw94VAPI9;SU}g7W~@ObBPOAfG%=6oGnjw+@Ax|6B~qErb(f zvzXER<6$cI7E*+GNXvK1FRkG@A%e!yXqX?$<4Gj`Abq)O`F{X()eLp`M`S{7u%PTj z%|Yb5PV6-tTJz8-I^+4S;h;sZM@mV&_+7*GVO6DfxdfG0=sdz&W!o3pQri$!&Nf@x zP=)gtvS6u%i)ff)%axVYX?Erm@&=;o0TOoq|ERB0^9RR|iU)!*#PAGI3hc>M-AW)@Y zI)uemviubP_(~4W|KpeD`mj*WLRtMM$>)|X7C=Ix)NdXlt0MbonLy%6P__l!v=)$#FRWCrgd;1kWq6GMwZgLz3doeDo|pD z%c3Q?Ixy{Dl}QWawDG@?Ebz`3D_SY>US(PuJG2HyQI4Pq5`E!w{7`&NN)(AW#OH+s zL{TWvj2v=u8$Kku1E6f)%PD1xeb?f(LsX#ZTvQ5UZvj-;?6u7>1_uQRrOFro=}(MYruAkJX^>zJWZ?-OTS=c(Ifa zcm{pW<$s%;l3%Mm3rRs|UnJq`ueQ=NUU3SMfVUALoD9~&m@G0Zf5Py*fYI*egafW_ zJ%-qnGofba8Rop>AS2dW9F~i+MQA)uv&6&LEP#m0*|w z6#cnyxl9Yy|MC1d;8`6-7psjwifS=%76iqNWSQWaS7L7_~G?FMWp!8i@`}qJoJ-eS{9@KfxMNSR>ZUM~dA}USI zgXL#_zvA@us){q3qEtL7SrY8tMcwimQfr{Wmcnoj8zI9@Mie{#k|eIo_>jqVl&W6S z8aDIb7X9V0wA+PWf|gS`=5su7S4$(La(>5g!*jGpHLRDKZv-K}A*xNyhijXeutPl;68MGM^rcNrGTHmbtjgRJk-=hH z25a?CpzX0OgS7hh9)rwx#y&vGIZ| zeN#skDy}{i!Ety15V21?sd*tFqC7^X3u8uv%hf}xXAi}zuu;wb7M#dC2YK7`a8ao! z$CIw+4&)i3XSK!<#Zg6Ri{o6`v*KJL*)T=D6%{q}S69TaC+yMu0Y3fH;Kpr`42Hk; zOMT{-;#}6uUtRn8c`vBEn*3&dc@~6EDbez#EZR`|hKujXWzS9w2@%mvYxs~XpsgaC z^9pb#gYaDjtX8|%sP=UO;yH!wYxf_tEVgWr`#VqusY}+_6e$|GJGH9m61CbB1~-2# zwW_1>#tjfap=H1}p+(K!Zy*(CX`DYxH-cA#F^3-rns5U;Fc(*kOWWVuzkTgqcHT9E zRt#DhTPEkA`Lr@EAQ~8^8s)extf_3~Z*kU~PQKV%zPBqj(HVxAi$30~aT(2;UF+FyAGSoa2)IeUfd7E)KsATp$*goYpA4#%9&uNV`0~;M55!|#y zq!#{5zeHgQE}Yq()O-TqWapj$9OSkv^vdjgabGv8`BcflZPNY7*)Bn{(}otExz~d% zy#L(I@$LD4p5ras$H_L3E*CFBg*AKo%XV?&D+AbPbo;vf+us{t;<+m4(so=NXAN2r zTX7^gmvRl<>yT(b$}zC|`a$s=uz$t;UMs6qjwcnqcx><*5`Lt^KXRO{%;J0C_NdoX ztF|8F!7?$wHtmaWJ1h3B);8I$W!PI^?C&{zzv}7JHkcx>^e_Z0TsAv5uySrju_~fo z#N~iCk8UQ-xU3rGhy-CIkHVR)RzDLEw1BO@LO%AW-ruCBp#?yK8(QUx87s`L$^_rv z$wa}i@CWAe?mun1@-41E^7f0en&pvbio#eod_z(CqFw|S`<#5|5#Wl1-avdxs0nY; z2kYA*F^FOPi)ctRE(=(v1%MLo^Dh8|NBhH^R+6CtM8Yajio?tMlow4q?cy;dFb{Y$_sBdw6EW*zc99&j1Bh-0DtvMn^x1<`Sah;t?UN{!V(k}F zEm->!Gz(r(r&#+9tN$LX{Q?D@O#r4h2H4==gx{6c&>_w?qV_j^RY>(V38N8&7&6)8 zKF*S>AwcfA_?r7sKiRQ&ZNS#3RY&`E>bbJ=h6fyg~R38J^Zzn5;;AMXS8u821? zU3c#0`Ivvc?CHalKYUzdJN+S%x*RT6|w0?@i)>xI5LS83Z_cwetR zI&}y4oxoN9ANn}SFU$fAA>bT|mWay@9CfNC;cGL_N;mw+>ykm$M@H;3^PLjF;&o>2 z@vvMda88h4TWgQN^Z6lT%5x5=`YGBV46HyF?Tin0_$85HJw91W{|7epZFy?`+|B!+ zUi(d~kH=xHLT3tN^IFaXsh&j-ZVYQDN8-F+LZYEdO9)P#!17WGc{S;%gv^=cJ)Eue~VJzRIwk_je z$Yi;y%drTCi|DKOsI-3?h=f)d*n(mgo)1It#aL*-_y4Qf-EB?bq5=BG#eu4du=Tpp zv%K`paMPtl19dzx4=vZVJC=s64dL9i3o&_p1(^*ueQm&NgE4o}n;^#JL>IP}NelvR zO5uv(Gi^S7NhoYj{})g#1of~P+L*WX+@<=)r3ig{0!l~YBTsB06wpZ27(22TT92#M z-vbLcpdsgNt$sCr&4pg=Y0k!e=^E60}P!kGSm zWPf9v4O?op$F>Kw`HbQ*+RhoYYP~&OqOlr*&&5FK=c>{Zv#M9>aOSkEYdHyojXZeL z(&drKhW4hFhtnxq*W5v@Zhv&(647uEA;4sMW1IbaBV@Z{B1| zKA7Df*8>{X+c1R!R~}IWYWr00gEVv^(%wQ^G&EAHDo4^#0lOVZ=9I{xLtz(gw13#& z2y__@%c~RO?V@X+jp%iBz}uLw*`282M6TV9&`Y($(T+p2s;265dD>br^N2Ba-a(jG zbnDqPdRyHI=!=%}tbSSU)#w(Akdjn|y8cWM&{B=;N<5Knm;jKL1_JZFMa!?jNcTh* zv$`U@LxQvnYmaU2r_C!xYBcn@c6WO?cO7>px;->|RaeBm63NfcEcYnC7?gX#f= z$c7uBpyd#Loq{iEHQHG-+2hy#z4&zyfo~x&U*)z8;nzTXmA3V?8MZ-@*J2Msil9AC z^a7RasfJCDFN)PKyPx7)7Ln*Y)4rg`S_WC0d9267QK&Mb_qE10Rs7H_+Xz%IlaS;| zX1zE4n>9O@%KN=a)1`7D(xPP614*fjBgvd{6{S*`WdxoTW{Fg~yrgUygA-$SC~RC> z&ga+O`0CYYd6k#Z=-Rzx>{YMnS>}F;MP|g0Ng3}_ zFjhISVtv7zY|e-g`irTdMYw_U@3hmOw*-07!R;Nk+J<$yzyHC_Sv8(2`S(q5=sGU=2TzlhVpttwK8=G-InWvxd<>=4`knXLs0+()AA@%?&*f@RU4P+ScY32>gDMt5 z*NegQ?Pwf@u_W;#S%E=~6CtxZ>R)Fwb~x5>oQF|OE-q=?HzZyKX!63l0}zT(53c!f z-1_28k713-O$?{3qQUPcN%jf79(2F!Z8+p|k>^W^4*}Qp%V_z-Jido7f~S3|-1Ga? za{+9JN$~!vmE2epo zy!zZu5ma7>p2Jly91|-?KZxN+5j0dhKxK+0E{75uK@Nf*atT;-AjJ{v*})DRQ+amv zctb^#PW0=CLLqm?i`eyaC;H2;6}9b4w%nL=EG2)*=2vs}C;#_CmiW)%BlZM;iP(4D z<*yin3IHtUmt?v%?2&6wK*XPpb#O=r@kd=8E7s>~-)~rX-Zi%BTO1%L*;k>a>wv(M zjdFwqG zMW>&nByH?SgFN(3KYmCI0ix24bOq+pnE8LWKS|&Jc>d$K2ZDtel>lH*w7p-mFMgYCn?}X z&Pj>uGfIC;Zp7NV|BtmVfsd+4{!bucg25LM6%{mS)PPrDQ3*lG!$f9qBB&^!tg_;I zt*gitRD{4J8J^=HtFErA>v|unyXxw)lLRLT5CWcfAE+Rn&!B)P1XS|>eyjT(Gf4pV z_viB=)33X_y1Kf$y1Ki%J3d#6U2Q~opMowHPR_XQh^x$^bMRyvjP}utLS>zOqI-}r zRA@t18B(&!eLPPvO0X3aUbb0AZBeqjC>%b|I;|$vPS6C|y2M(!+J<^i(0@HEJI;{m zC!>>a%T?07(K-9#B?-1SJG`U&{e&p{m>mncpXe;s{) zpZXkHBc~+kppU0 zB85Ia?!N80NC~R_>VVbE-EQ2KoZbfnrq#R(VC)=ogi!AkYCt?C*d2%X3Txg50QR1r z6@W|+Q_xy*`N%e$^e;x7r|(6X?D0ORj`aOd%m$1~8lB3obh|pp316S9vueKs6{hrk zxhv#(_R(PBkGyweES0-@%sSQF&>pC`1|%Q5I=t@@2P(VQwvs`G+sl{Zy+)jTe1!4N z1!d)ZYP)r1@~-knLb$J_c0YUtW6y0S5F&B!NJc>*dOjRir$WMua}9xh7rQ77sVBDW z%fXY{8<2&{zCmBCF%{O#CeiYs7`Fk-7(g|>EM58lMT6&SxsLldav?oe!f_z8Hp+TC&(_ZJiU?Rc z0@lvj`f>$q4H6(Bl1o6TK2DBK}7<26zo;EFO%@ zRnav03iO(GaqhXq$Te-;d$+-94ed7Uwu4bcPXaO@hni-@YbQ%ZIWJbvDC7A>HkmyI z6xB{cqCHV)6Te|vk{H;Kt{M#s!J2COdSLzE{AH-HuphzwQ7Els|EK3c04|B-+8(r| zNR<6wG;;hT@5tZ5wJ~5bL)hM>yoz6+xt2V zaq`FEy{0y>nR)qMW#&QSa4R}4H*QOD#o(fUA|T|%#{e-gz3*Zw@tZ>JDfx$+m7DRh zmCpR@-29#$m700x^{PzX>#vxHj9=_cM(upJ8W~ww%iiP>cPnvzPuhC>pZrytTE{oQ z=2{GQ%DD~B@n5*66t0@ruW8G8p6_j(IqJqz_x$cp6C0YgUfi%8S_!@;L+0<;1#j|M z>H0f2Fn>o{+U5~6d(hV+geHKW!sZdR=~y0UITAX`SU8Xk{?kMm9co|33|bW}=yK;b zUV2GZn$>{fP5?{Nnr_MwK6`q&sR_ zAghr+p>H&`On|dEvbId@r+?QrwM_b~>4R}!G}TS~p=tVrPgXQepY(FmSrb+R_+$li z@wTRyCw|xT*2GtvwkqQAdzz&EG(l)+T0TL2Zv_jSxUCc0lH#{ce7$Mw1R)5xRs*gP zg}(wK6;Yo}0Q*q(%Yvg31g!$h3Wp(}2kH3#JpMmCp<#K`Pm>y?9e%pF5#E)X8uWYF zdp)1;==^6u&F6nqcJ-=YbcxL0X$Xd5*J4gT#+%baL4Lar&7C-Z9Q7f_mgtZ{Z?>FU z^Cb906{5U_%=qM74j$uhmIb35=k+qlUZ&_(00HOC#rJU2oEW44j(p*y3eIF<%n zL+H24u@rMa8?*ZOu_&&V@*!&i;*0VFh~vyoy^pFKD+ROmPSQ?9JZ_7pFmad(79+*6 zl6N@C2ml9uY?Eon^2VUm96yL946p@%W;em_sQ{Y7)_EA8zY#WQ{NKrdFb6N6Vl@Eu zf>|0HgV!g-$cJIw9caXMvFTB+%EjD4)&by(!UI27YYtT)|BG?o}Wh5 zG#8_)1ge9#oKZc=-p{K*Bd*I6T7hrrt6_ zfm$ zh-0x)^*r#nZDB1dvl0|_`#wbfPx><1KUK!t`5Uh!lQ~>sc|zS{9l}9qw0yu!Tnc*C zo?RgNca|N9ov}G!MI;!N&1`JRm7gB)j!};_6IZa7`UoRdPFI#69*W5hKFoDdSTHZ| z0Zb4tyB4-i&%^dXnKjLwf$)^}{1qfCxeFscu5Fsz1|rBXN5mOqENL(LGjTP zA&2vZ4%qh<6s7{G1tA{v+BI}kp8Px^U}7xGoW$AgM*V;bm2$>Jo=+_RP+u=^9AW%~)8dx)>Ip z*D4&TW``{Jz~Fui&h(B4I19Vyp+adv$|100GWDcd5%mhTNiFZVlgmdX>EnoN+bXKq()! z)dGFADjx!k$I8%Gh5w7me_X)XoOUAwL?j|bvpBl#JRG(5M8RVW|AEI zlzN@@WgJxKRHENPqK8#bzN_FJoz&K#YW(mrBYY6FCAlBwg|7Bjpv_Dapl8|-;H9$zE?x=#V#a@sWK(HKpBf=^^{sZ8*q zm12%+gV{bxfc{9JED0u2P4W1HiapN_9=zfyHW>5SL4J4LCQ~QSk?OBZ`c8*Gb`A7KE%$ z2w2@YX1zuujCd*_PwW%0#+@-MfIG`*l4IDq2X(R<6>{zQtB@Y5YXqdQ3zdRgdNeax z>Gn$K5NR{ER&}lPidHuCJ6rt;??^&EWoT(q!e&W$kqHkcCG3YTYbI8a(YGWe93u%6 zS;qB9aM(H94*0h436;Spe%E@K<_gX zJs6xR!Cnk*!8^Imlt9c)Y{g=#u3Bt`%tG9$11{^ul_HJ?KL%6Qvgl>%{GL(?hcgO3 zw>eJN4^k@}fY`Heg;nNR)C#z99QqrtyL`i@^t1u>_D+oC0m!fzN7ONG$ST7^IuwDU ztdE8S_>}dF(1b=+3m|<44Q2_U*l;{Kys6A;?PNghf~tE1D(#g!c)R;y&A&(;rLGuvjpZVq3F+0Jm^c&jq3fiN97e@?mBK=L}HXLn_>o>i|h@ z`Uyu$j>hl;w93loUg!^0kenKnS$M%EkiJ=_2p2;+$fyn7Ehg4N+#f5`DVR?oCviwm zQ8uISt*qv&ll08d=#EC!sUXd7c5qpv8@+$O2K^`+wuZG_W>Q~lcA2xM8KHkVu#pYc z*>qs;{*uURl*PPA6WY7V7&p@DJ2YvWi+l@afQ_PSaI54z%&AnZm3$c0!+=hW&xsLK zHh<>?LhIRMMKk&I?6IO}2eYf{k&!X>_nSQ3ykBab@#xY<>wNnDX zT5KSqXxhkyeer{VwIuIKIP_}-076GF6U_pY1@l@-{=H1+e9;Kcfn+3cYa3vV$}KS6 zk_d;zIzW76PHrFnsC}jun-)hpHhcLn}1& z*-{)kfo28!Yc-d>?{_~ru4 za~r9_eWSO%5|!;tBUC>mY(0V^cO`P7QN@&e3)4b;LWKH3gnA!BL+Vb^v6!qOi>pl2 z8(5LaX5w(blv$IYZHurSzgS>Ac{++1AWthZ(oXaQ>S}?K1DhgH0|m+xsL@PU0(Cjs zB8g=a0c%tqhV%bP0>x;%AM*VQmd$NRW!bmrh@G-*we-?4>~$w2=dUQ}z;*>awY!2M zQqbot=#_7NRY6Y!JXr{?+Fe1VQqU&$xhcP{pflPPG;ntXVFeiCRKZTX)BaU8`Vinr zHKGo}iUqcS%*4y=^o2c*1&4@|7J-7vU@kpLdUY1|s>7`(VJ$}+p-^yZMNc4?XtqxU z&Jn~w)D^+%37F&RA#MXZ2|Y2;;?P)19*b+I;J_3*pE9d)*M(SY9M*lW&3PK47wX|@ z2s5!9T^xD>8Uh!DI^)1nut^u%7wIjdA&b;oUY%Ln@CMMJ!Hx%QEl1IEG!yHk2d^nN z%)}SEGgm){9-%;MfEzst?6J$g7Nyw%W_kx|%#$E~Evq{w;6o2=3&9@h80<$6>}Sf@ zY%CXa4A}$ir^}5|NX`Z%+c+0ZB8_;OQT4sFG1fGoPgL_&cZG`7*@m)_4)(H%7|fL_ zyBNm9>|~4hFr4jSn9Bb44rU~}V8JlVhhdmebzpl8r+66BIjG%{f`MDHzFNGsr5z22 zdl<4=`ExuBF6n$;Hih(_UbcIf?NG@kR9}QL?W<6dnV8Mhis~;JyqUq9Bxo@>Rf6jo z{5^sx`V5jXR*g2=?~81a$s$LaGmwE1?p)F41|BIylVx@|5Ldqss&s1&-~e|O>`F87 z4a@)H3kEka_@M;1G59)yMCnf1tI)_s<*9Bj(Y7I@?fzW(_XB?krWln6dL1AK<(mmc z+gx%t69Z|xUM=MfVek?O-oc{BN$_a~gA#m>!P5~`HP9t<24p`DWR9?^KE=xsp{Aw^ ztn@iEF$7gs)0jYEcVofU&)rPWXQuU$k`eoPWiVoH7afP48nl8_`+c{dQyY~Zq}HC% z_EDh0ub#wXr&w&7Q0(}ukoASwFKK8|zTP|v_YQyU%{&|%;*Xjr-Kw0InTfk-?OEM9 z*_YX2(LqM!NtrIv#XRv4lcU|wwyr5eHh^Js8gnx|2-yqI3>cBQ0*bC2v^IvK1F%SS zf~-q<25R*sSRt`50Gyd-0hgf!UAE^)tLK zO|!0qeS)lO)bU{5Inqx$9@-=K2%IRXESYHYt-ZZ9DDWbY%wRWttcXB2?^>|!Y^RZD?s8{%r0u-o>nHY00+q-~w9M3i)Tytl_ zY%?)V5;Cys7=S8il2g5UEwONm5m^mLo>w#zlL^Q(zsjW}z|^M%k6H{H9i1}}OyU0J zbyzQX)u?{@1TB`bQYl(cZLlV&)%I&8(;;;1wqiwFY?=9nn>o1_Hxn0A?a^Rg zf@OIot=S!bbpW zRPI7_($LFj`&19FC|i$QffbEoCay=v^vyTI@B7I&mmVfV8!KTKdnWX5@I8t4@!|VT z3O*kD(o>kt+9Cv}c7tyix|0vzXYVD`m+RqsV6X6%LTG*X?nuFRsE2RtUg3K)8Q&Qx z`1*SI()J2p?_~aMeK)zj>JX8%$Fs0vrRS}O5l-1JW|NMMV_fl8p}Pev-YKVEilqc_ zYVK?yJu1j~H8c_?gkm$XEr`(+EBqmDH^h!{#42$Sd(3*QUZX(0wk1OW2i|alyB!(t zj_T3^Z^WoRuQIOzq_`w9epR|We}%+b^Tuje#Pt<8#1-qf29QxHJLQ6ht?ZT@8`~Oa z!$^B)-eg2`BeOu~(xv9$(+vM|k+G;ug(ewQJhCW*JqP_lxI*Fn=K(4T#yZ9?4EMNv zBE1Z6$jS8vMyBBd8>EA8QCdBGEXT?Tj`*B!0 z=BDc*$Fq2)!*DARJPw_qI|w=g&HFCyfxcaJ6u^Xq=tvxdlVUNY!DME%b=4Pce+YQ;?4#kBrd zVK6Qj+;y~sdKi^IAe6%3Z2)6b5`%He9OO|9r3%)FyQ*6O=<=Gm+Vi>zg^SwSJ+CjM zZRqm)F6c$!_1{Eq?uOT|9YkI~2(Vwx>)*cBDX&*av7Pgpl#&TXq(&eW!#QzeEW{v7 z82>ImC^8R-7-kHTHp&w2%647G0NIJgKHUf%iPp_pnUOw8I#S6c^p3^)_I z#;G`kbuwyHh7-xMzdlhC)wH2x;qgjEd9^Y+t<}X$QMGE(RJ*l0h1PM^>tLxg`JQSe zRl5F-l(x3t)@a>{UE~g66shlY0{OH+=;|0t@_Z8*nYyf!>LyKH@Pt>aBoB9w-DE_* z=!R{_eOWFh8x{C%%WJ}4>>@srSAk!<7baDtz@uq7TbDhtQ<^e;G$k)iidA#8*8;Mw zA_LGs5JIdjOV2rgEd2}`PFT7I#4x>B#wA%nOOY05U-XbQDWVeZ&b(0V6&goADKEsl z-l*nwzx^c$itmR+yDv=Ecn^kpF_gs+9p@AWTy1|mhDBjPhuXdlsjddDdAvID@mD%+aYfgI;$OT)9sK9b@ z0I!y9up25^`Mo&B&sAR11i;VQIZAW4uZDO4RPn)Be zJH#^`vaSTJEgR=u9h3eAiIyIoqG#7IMQNlQaF}`B?(?*CpHl|?8jZB>m6W!(cc53s zv(a!Z`*hTc91^!2#nL+>aXV8;;`DJzZ3Y9CZ5m}!{jqn5P zKdF~%lYjv}`wx@Xea{t}qzk})wMJO|Qi@b)jWF1VtU~$xLV2|R`upv_{(*+A)P)T?;tBb79nOK^#r(iFD?J+qxWrgQj9huJoT}f@$wv6;HMrAgJHk=*S zLq&6CUMpIK|2oK><%v?yZ5dsVn=a}~Al=o!AEfS>4uqmZa9zonuvQz1{t4pb^4nIn zAROT3BO53oJcA)AxZK2Q3dKe#=SdtJ-W%a~l17p%9CxF7B5y0Co=P}8!GI?fSNR4* zIO4t88J7d>R}06}t2!2rfjE!>X8MF9b#gG6l#&lvEEh=WmC$>)D(*ywcW3=6Dd;nQ zho+Dh9NbKsq_1k=^wtm#g|f8CV&rY`I&xOYLK;Qlw(K~Uz2zmRsMK{#=|EqdAo}V_ z5W4sJYH@Q4Z&LNuXsP$^EUAeeXHu3m#F9Ek^Pqy_#C{mdw#-;4gc}f7I0l`bk`+Le zVKD`z-I2p0xnW5zz=*6uUsCDnGV4AbZJ z*R^$QhT=V1xxZ;*mE8#uNW!^OZTuJFHpXLslIgi51=OZRGcxVZL{4NpbB6B4qQ<0s zv}ff#jOm~YH%x3rO2edffj`SsVRx+(7Kl!V?3+9_>`o?FWgMgNTBWB^ zeKkB)?3qWTO2t`wEdRH=FMq!d%ID0gDmzz||OZTWfb*ny8~v$E6A)2J7|rNH{fyG7O2o&X?$LW;!*rn?=MGaBa0H}^pCJ9qH%tkexQM4V<*`WR8?&wj zH>H!%`wi38l-+sZTCZhETqA?vC=x2d;IvINr)#-%I5?3Ru;>KRVeGAWjKzyS{=sP> zK%Bve$+%tYZ~|%I)WPX}Nd!i%kD)~t;(4UxAu8bjk>)D_;(9)BW{ULBpr{gI6Bjj= z&S*}1S6G9oa{F12u;r(Q6t<*x%GaeOcGoF+{eqUZj#T9+5ij9cs;XQSnBS;W<^D#b zRN$l)dhv;gZH+lbzp#9WAbnd>{sM_KocU0@Cde(^68`52lYZS;#@%X{%(>rOp1ABEk zVU?yUuHQq`ErJ)SR{NP9dc;M_1wz`Uqo$juiO$udoSFiO^^~R7Od?kZh=@lAOdE$( zFpcU-n1&``^Hkvf^dgcrnT=V%l+m9&MuGwsJD_=4oB8Q~_% zH5U6y8qv~u;6_o$Lfg~Ij%;gw!^T9*`a00~ZMQs}998kz73RW>f?yoE)8N6`7HE4d zggHmytL6U=H15m|bk#coLU2)z5jou>RN1ZD-$-8#`m$atUN|JDs?At*1q6b1;}sEj zT5>>R09XEES&g-!mKHg37$A{kK!I3EGA28l3HdrI*T1~vn>|zzp&Y9PpwiN7;2*~i zYH2mSaF)FX-~!x?bgum_RGsJ7sOs@FtlR~tJ7FM+X?U+#N*$?cZa%o`TJJsdfQ_>! zReiYtrf6l^p)G^>fRF_KoIt$;NN4yK?5_IY0#o{N#Tys?QN|8{t zSPXHxR}vvk#u6>k&_L335KPS6QHZo^8=l|QL0)5i+kvz;#>>VsO_9HtiOfU61ov2P zuEBn*)~I zpMtwO2se8=PNy7!6794)@)al5*33fGKt_FA%VWDZ2`v((5>8^m+f2Y*6nB0SxQKBL zh;wEVxbAce4`%ZklxIbzmG_EV3L-92WwFVau)Z?uv_Jw3;J*=oZ4lVyaATP@gw(kf z(S`7~oH5BcfWj|(EXqSe%{t0Vl(PI{e)EhX#J$=gR}vR9J|FQO>a%$I2v?vR)#YG{ znYf)G`v3%E<37j)K4CcgmEQAj*Z95X<$TQ~kjV2j1F&>YD#4{GEb6ZSbfq|d-Tn)H#@9s`WBuRxY0>ZFJ0owyZAe*GO8gr_1q2Vg9Ba8pjiK=~WW6r$*$ zSr96o?n#uhv}v*?zPmp3mYX5W3??#o@~K6WuDLasSn;49JQ4e0m3uO#)HuImp}9#8 zjxt`>FD;bbfV1o5&V9r+Cr<9{2ff~aykhEf6L$r-$Oj4b+Up8OZi>a@LOnsKCkQ3h z&wwOZdJl;+hNwDgJ~PUmD_Fh#i&TOljE&i|KB9OTisiR zkqpq>;c)BH{yIzBsMpp3-G1nu?ljnk1Z{Lc!%Ky0P&MxKW@d8De+2vtT`OI4M%k6l z+PHK0ybB)riEqUHeH@HfVWYAFf0KAd7<)8w`ehSB<}9k$F3H_nC*3=j@KHf2u;z~j zN;OKvSW~R#p>EuojpBs=>p@8T0MTepQFQ($tT^Gy%(hte@7Ex%^9DK`rBV_LT(r18 z96klN%GN>+&d&%!+@s|B32-JReg^8=B+fW|U5iK3XPhIlCMa3Fj~_*x9yF)*Kt)8! zq)_H;N=5!dvfSyqGgAklQ)LD7q2JmZ`?Ro;9!nn$q~&m$f!D- zFNCO!7ECYMZ!0SW=(R+3?BTjq1QwH8I zh3yRk?-a<68Q9W8C_fVtq;BGQLDZKKIZOC+t9%7gXT)bqqMDO*uqQvlOHP>!pU)Jv zkT_Dht+N%VIx$sAbJ~ZU^iAvn%A~60xg@4wEX7iqET$9$3img{YaurFCf10J@`7|5 zUNYoVtwIFFsai9;@nl(!E*fe??$A;Mxs*v%+RBWfzEi1{k}Ne(soE_}QB`{e1Q4t0 zK>n&dD4nMBseaDxtF|C0?W7oQ->Zx9w)$Vv3I)V>IJ_AVZjp<+W#5A;>pneXf39|R zg;U&%sOBZW+UA%|h%aHm<3=BNjL5dvoA?9`1I@&L5k;wD^^8cZ82Z{jJiXOSG&0#b z-nYwfw}7Da%*0A2VjT&DDLHetI;J}?Bpwc-uPQ)yHR(L2D=~XW6r;~R{~54G<)=9g z{o1-5R6YKyJ;`-ss)-?cVp{{9Yi~MVZOMQh0T-1$TKgISeWG!*Ih`xnAjV=zEQ5J{u>9 zj516u*5nlL!65wCKa-S)qc_+a%*2!A03CV1)$8E7Yz2@YCno!d#^M4?xD})B2{4mM zA$)pY6wV>5`1C&O&x|HqA*q<*>IM77Ojk{KrVP2hCfo{GqjEkTU`{gg7;R5MKGfBn zAij=d9Qb+g#*7(fYF$d}=8%e4h&BQ&3RZl$KZmv{{cH&&=7g@UYk#wrG zYn{t@-L8zb*8o^I#|TPUt@mwV2iyJ!zRkp01pTW7$1-@E2epV$mEQMX`8`8GClT~A zFKHkJWuo`}IlqGf`aD4ky`(L~a-#Qr5k!sf$+vLYcoXE4%R>oOT|#GJ*|wDoF^P5e(-{ z0!8~9)%$mInm_R;3i)LqM|1f{Qa;Z6F5-8IP`;d$5Al-H*dPP=P1A6O(|)`6q0FY= zxMLbtFNLh>f?vbPWv^`{i(Xt3z3(Rof3o*|9n+7-_ippuRgjISoaXBme41$_Bk5IB6k)(M{y3Ky^P;C2xuiiukw;Im~^rGt$QH- zR_(J>W9d0;4|QV``w{9$@4E>*<909ayD!tbc;Bxu{rh@W<}XCG0YP1vcM1BQBt62U zW-n<2la_klrEG|&@l6}78VCCwIr?*QX5w=K9P9!ljwae{?|TZ1{W;-Q^+aafh;LlM$E+WDNi$j1H@xqG zMAhhh&tv*?-gh}sKj?j*PWV50-(jZD_r6Cn{d(^^!SvsG->>rf9Phh|@TT|u5z_~G z-*+;-zxTa{={>#ghnb%4ec#RREibyP$Y*^%^}fGki@o7~>lUDcnBC~cCQRmf%KP5R z^n3B0G|i}P!vLtIs|(i?Z}4)QNeoxH-?|(+M%feH*u;hWKEwOIoZr8}cT$g66IfXl z*~??X)sLpCXpHmsK`K&@2``hCaEujZ;t3{;XVn0V&1&}&$K0{}Bhy)BC*H1C&S6@J z^9*CTKgqL!sW#>1fVCf&!;H!{3J>oN^FWPI={DJ30kKY@cT>edp5t{b-#6!(DT<`>Bc513H7Y^y_Vk( zc;8>}d$ITZ4ZkbgZ;h3n7WPy(HnD|J7kc08nLgV49!vonhHn~-Q=3b=@YX@txVV$^ ztqhkn50N#!0c9p~vF&PSNN@myJFxz2CQfAVI|O+JRMlY^0IBNTCGhS@HY(?)-Ympu zd$}MO#^65@-20V)b!ZkbAa=77u?=0#$x?XVEw?Fc}N3k_taldt&(K*;& zDhM7YuE!7*6Iq?M{)+vByMBvwJo?NJ(q}rEtzIs0zDdU!UTyv$?Js5h#A1hOoNiNH zgUdAVnys5d)5vJM4}f*e7O^H>yzg1W`#o%XGqEpRo9qn;YS70C`ko}c$0D1(q??&* zsU)ps&7by?o@TBGCFv99`jZ5|AXK#rrHP|wpM8@Xn|O|Be~)i+5%Ul^=6pm?u#v}{ zM>z@6-d(~waW>}-O#OVOD&&?~ibb}>1s|&`Cm?tHR==T&xv_qTlBKB2$|4V_GNE2@ zI?PNAW|{hYn0NSMrCwdn)sxjiLit=D9%H(i={(03W%eYYFIT2gYPsi1$<+Cp$j^T# zDel&Z)!im8-6RcUSc#C~&TT*8e2Zdstd576wa6T-6ESPkYtX2MtX$Y5AT-#xV)K87 zG+kC58{>WN`xTbG%KQF?>2ZAHdSPaL!b{r1q`yhhwM>e6Nqwld7P#M95a_>XPm>HY znPHL(kT{x2=ir-6$;BH5eL!||M!KjwMCHqf@RCtI&=vi}_PS)jB95N_r`H1!)@xiaT@yyzPXJhPQODA` z%Dx@3W}<|_ITHLWgV#&&QU))V;4B6&lHdXc$08_Fw6}Bq+P|ep5IKk5By;{YDj?4J zcj(1x;X#3!$l#qI%3&~u>$(69#=tLRl@WOjpk`t}0?4tH$cvI!jDQ@;Hkk0UF-yc& zE<98I#`M^YnP#GoWWpPWw@8-0-2^6@jW;u#1I#$Pd^n(t%7|+mX|6Hao`j6PPM*}i zrDMBKLtzq{(zm%SCiDOM$Ps6I0|$Yj6x(<2uk`A(a0Ck(vkB$v-px!`-Mgn=F>K$x zAD2v>ckg~eiobgk7naZ1)W1gwX5uvlFO*qzi&BQh5Fu^fB|U!Usxa2uv`$OCV7+rWn!pwu*{ zLE2EcVR~CJ>E9FT);vi~Puhxcm+7-PFZ`Xi1K@7UpfP3De6|bPlc1+Kwb3dV3$ML# z2kkN!syCr>0OgZHVKCNbA-KibT+&yWHK!c{_&7a$I^?voD|PVHIkefv0qd3i` zS6O^7e2X>eY+gJfJYEGgpuikONglR1i{)nG17>~)-)u{m1DJZNJAaJoQO@4GnK+K^ z`HYvVfCJ6nz3*ZCz75|#4*V}_aKoLd7LJjA38?kDxU-|wUz3|l!Ne$jIiY-NFrDd2 z4W6nuKiiMuf0j(0tHJR?ieC*9m#==Z+vil$T82%(MGz2C`ny&6B3?W0NUrD|oHDeV zjSSVR>P|)fN+@4N`!HQqw6xQTu9i%lSM*vT#a~h4G85~N&tCEm%KDcKK7}A9Og2^F z;YKTnbCNrBJmw^S7t07^Tt|;H{XyWosV@ainXDq9+Mf6aP&nEcChW4?Stv4r@p_vG z<0sp_SSz(G<*J4a*kJR>+$G5F+(wJNq80Epl1-$Pj&&o@>QbHF9Y;=ftkCSur;gpYi)I-uKV^Ug&+Nvs=t|zI6>xL|@W1EK+ucv0&|=bTtFf z7qn(ok4*4-lV}#++bkKhIhuhJ^9Pv5oh!`wuTYsZ{nQiB(pvweBDJT&>eLG1Ko*^Lxt^tk;vI@KXeRE%^lv0=DF89gmj$UW|lJTJk}G+fz&a0u;WMY+dYDQ8pkQ zw{ALNak0s3U@_vo21a{#xDQyGq_mxRzyl~IrDd~$oh|$0<4M&%kNtwxepAPz+LNWP zbW-hq2;82k{Rg1%RXe?dYWtLkjMDAvim|F3csd#;K0mbGF!A(l?dp63ak;%3;V3b=YbVgQ4BLFWT+2XTx$}wcLC%#s>hik5D4CL^^mQn96Wl$I z;e1f5vQSYWUgbh*1Ok6gW?B>;O1LRic|738R8B+rG~H-{6aK=>!AuMnVE8)ViVVCg zs(c-c$Wa2O{Tnc$AQZFjr{hsfNOJCW-#zk?EQiym-NTM(AMS{b7mQfm>2ycb#~|4e zJ$R9lcd$nL$6`Bv6479#Q}2sL#=AsBd#ROhys82Y>6LIZQ7z@ldU#}@0OMG3VliTa zg_v?5EKxGek;%N$Cw_hUH-Kt!l(mncvi7my>X>d5XJy1x&(mh^N zk~k+Ch3`(sYv&_#@r-(jz9|e%&o@`YEBr5V2dsDW+rD^cd8}!@jE9in1r=`H*QneH zMB&zKqw01+oM^yz{2N*bg>BOwf`jF-__z3iPQtl>9p#Gyv70mF-!rCgd-;OEl;OkT zJNVW3RhK|l?1U9=HzHTIwY4FmwJN-RM7Z^^nZtsydAafKxsu6<1d-g9jmVKxX~-Of zc)VMW#Rk+Z&M)&ttc7FW6JWt;;t5cMCv1nu2MU56MkEsnWl?#`IDQHu%W$c~f~~vg z+cjiZyog}omDz#9T}I?%#EvwUlnfhgS`B7f!_bVu<)erHGOH*UZqA86BblLH__ioB zJ2d?V2||;wgI}7a7ywHaW(?MJ#mBQS6d##^gkZFKHi$(!URxe5mAgU^eL5>A&X7hD z0Ibu+abjo{O2wVsm*r)a;N{v3JXS1E6MrM`-L|DXJaC43Pzdd;A4={4WYXv2*RU)+ z1?`H*cgBK`A&a{0!@~#eYgFAz0`Xi}2H!@?41}992Ez&)=k%3USu81dVrm*vc4c?hrNBvSqj{Nj9I=l6UOfF??LO2QG zUG%~vhxdf#Kgb#XFDn65rGvf=THn~W`LLPct?4AO(LT8LNDzn?(KHTf0CrH?A(^_> z#siZ*9&()07B1KF2+)MKK~`Hk0L>O(D(cGcy3c*eOdG|n)5-tYPLCO>6hPU)6t*!~8~zKubgqqrxyy){tv=8RdPL8$h7fyNypLj494oITU;fFunsZkrJ&V( z!*9!sXPO5!@TldV8-fFxTS87_x9sPHg4^E@qQ{_t*9ENCke98#LRwv7{mnjOA5hh@ zFHnc9DR>UP)!+2Nn8VqPinFrKd-CCpcoc6Qr1HAVK{5QeqZ5#%J7B1-;g@=V_^v@U>9X=osE1Mc< zF3l|!nP{AKtXaok9mo2R^;`7XHtQ4c`bzJqchxk2ke?3qqN>{IZvS#Sv2de6+{stD!)W?t=7P?DJn4DB}(k^F+fhdGXU+Y zC9w-$sh?5R7jnRwP@hgP>uw_MXuS|wxNFvUX*ZispDV1mTs*B-b_{?zb`&iKQo5T0 z>X6s0yA7a&*0Lab6e7wLx6HZRWzE90{v z-H{TE1^b$HixCy#ZKB&T_y^FoIRWa2ko9%Qx&}8?MN2Ys#!R^;vrlQ!@tH>KW3t^^ zHaeF5Evk@a)~!YUKrA~Lh|S5&4i&yO>N?&ExZ9qDvSug;{rDX?;gx%P}6|3ZK zHZ?b@a?QH0hzAc;lYs@nqW_Y0Mq~x)jMfv*tlLPC=#W!Gu?vQk72Qqi$cQ`y2(#`- zp<*oFy_VVwZSMHEv&6Tn#xOLS?-|kP8uJT{m#HWMOZ(Cu2>( zMN=XmB9dHHn{39;PdDp&0M_b_PB6C*AqJ z24yD(!;RqCsZ8bjqJJaHA+9-r0XqY+;qx#b=z13B19&nV8)6Mkycz55+4503U)0M&y3L>8>D)AZFc4z@aPT1YF;?ng*Gvl&Z5 zU2@D}*~6w^qzRr*z%Xyw_)y9)BDbLsrH9OD?_R>o_|xDb`8ONTNjg9{=jYf9Zf>PW zKGr!GAg9tHCDu1dC~$8u_^Jkct*ovC644=-Bk(`jw;hgGLqi;^qL<{<+y`pRdX80r z!sn$YFX#d;2Ca7k(L30gYaRpyMl7u04-OQCRexLu_?pLAk;3QMNXCL!5rf-OuzB_i z%(<~fV#`Qt$l&mfvKhtU9iwMnSJN!e533?L4g{i6;>Udye8HCQWMJGVg|SqcdsrU( zTWk4Ldmbs+;ANe5WpXyWO(8jKfM9w#>+%|gT87uWC3%FnX*l2?ma4Ffkpy+uemmFy;h7Ud|o{NLjGf#_Wih!*gZ4Eh+j5~vf zoUz-X_GYxtCh53}gJ*$H!ol#$oSL(kqe#hk#1`ExQacixOS10r|7ZOQuRdRgS>Jff zZaC}vC1|}~e;JC#8@XV9S@cnv07k3WduUue8?<7K!VMJDu*C8rr8^YudvGvz29$Zm z!S&OTxvc1KMYn#-2&|2$#2zkCISK0-IG0E5ohZjPRG}iPUwFfsDNRdjXGivuwG0XR?TCw-Rf3ru`pe6H%#um?#VX zthC2z0)mWBF(dD*p=<}ERip%FM^1^A4LMb-W-kCHgu%G_OU&cz`DM!V%HA%51RCmh z9SfBqXKOR-dl4n~6+oDvUL#=LnlmU%X)Q;4WM?{{q~J*x3{ZG17k}(s_$w7W>1fh0 z)L0N!P`q%MifAZ*?e`q8Q4ZLo6fg>b{Vc%hFTh!F%~~UJvViR$w6-Lu+58M%C=3RR z-arN^IupRbXu2xe8Zy+LOnmcDWJ`Aa6#nc}AHxp`mJIKSw0Co91$df$9RAjUkyvy@ zNGjLQq53hEVbEH)X1|c-SA)AQ$qN7zjKYqfF>}5!k3f}8fut}_k zZeks_8=Vo$uv8=AZ{I^oVxduM!pql$f66M)MjM&) zcStKe9LpFLZm18pZo+E-$W0?JvwkRLs8H0OvEXze5p6kwZHeKh57iV5$dbIzW!tZx z0C3=Ci=PQ7D24Qq%_aRmmysO`bUn^UmJ%>)5-<24NX4=FwukgdQ}mSbHp6gLq-t4hEE1gJtze zESripTIo$d|xWzXRh0DUN2mv&=esH+8 zS-7=Q1A<$)#%{QuQ+FVjDA|L_DSl~A-HtrcvA4M#;E>i42i`}#a3I~|KrCa4j{&h6 zZvFRz$jsj*)qhMRMpZw{Y5DqRDAbO`WDDh}{u0Ep`h6%iA~A0Z4_dJF>+#@4LTMhn z?eJiY@L-t+>_lQ#Bd74;x2Quszce3ik$jMtR~(6%jTm&-LX2D}n#0hWND3Cl)EGBW zGQe?qh&z(4m8=lQAD|2C`K6Jc0NB*7$wkkOxI72(!sSO9aOG_8yQX6FM3>P=qLMD7 zAKuQ&fYAfUh@`H$LKwY30GzH_04RsiD;!2Q2%{%zz)l!FocKAakAl?H^GoxhKk|9j zIW|Ue@}WemO=Z@*w9c1_;p}^udeB<4;$~XqJK&5OvSw!5#o%WB0&v%U2T}Du0k{1! zL&G7~b|XX6824X>zJQ9g|H)8Lf7Bw5Ry0g0JnjL|xteK2e)*w<~evORS+>wp1P;|`LAXX7#b93V7 zqEu%NbYGs@1^dJLAg;?)6QcX_s4cNtSDpv>-1vCF^Xs58+|xxPGkzgrWL2+l-K=BP zp4V5-yr*=~wi0V|VEzggpEUU?84Rx_WQXRsChyANaT&t`^_#&e>@}nX;KJRwDWmZ9 zncd59+aC#Oi3ek&unsXQw+h9D3RlhQ5obv0q?U#8Ly(VC=;pFmxhxpu2higRLR?kH zM9g}Lt_DB)7w9=V9i>+2$Cjb#{R5Ev} zy27i?!I4tkF~ET~$HFc#l~!#tDsKliu0CTC{%K9~@j~;hBKtz~11N}I_+(_j!cC&t z14wL-fgZ6b1$~K$f)p`mTQI6H1&T6oW9ywO?Oi}5Xe$s%V)Ki8X7gg1fxtbR*j29% z7Tu`{zXLP|qm_zqII&_mSM@Di4ToKC2rU2*#;!Lc1z{s{wPbPYiknEKam@HjAWk(o zCMyAp*I1*Wu$f+)kDHNM{dJwU)iIQc3G1!^g1VxaYD%_PDz$<$aNP&V< zy_s9qw<01w5w#^C9WSjgv_f_mkV{Ut>Rdm^(?Y+5T>L7VfacqXu@wy;0J zBq9C~NYmf1@w)-v_6mm9FjR{Wmb^-Sg}>H>PU(&E;-Hl8=_!=@fm+oldIJ93|hen^EUixl(QY1TB-1=UZD3S@Rs_ zF<0+#`u)DZ+eM9FE1E7NFOGLxRF@%97l9fq17p?D;j!$L(BVO=WFVaROn^#gm4l+D zkiv@GSG&2f#X@=-(?gcs0S2S$Dy7r0>O{*Vj>Gq9weQz#ZX=pIT{KB`@{?dxlmBs@pO=gUi>ld4XBqJs$SSLt_VGv$Min-iAc6PL6SV6S!!1+JXH)Y0g;h%1raY^{6{F!ru zF%ve4nY$iXL%gb(djoa+lJ3=Vf5>Voi;e12ck6K|wy>c*hNpM1tE+O|hDgaZ2}4R9 zztpnn?;&Om%CAcaQ% zKqlJS`!EnY=WBi!hlghlz#ABVt@~aY;4U_R5mC>7Ps%H3&d33FjG(VVU`z7gsalfP zJ3bRpwFB^{hFy)a8)8+3PM`Ei(VnV6KSe<;=K_2s_zslKJql_9R z^c-f;ew=S}*k|pzr;=ZH1qcaRHY9{K3B)jw;LYr70mZw#GwY@TAP}4RH9TXnbI;7G zU&7O?Bsx4Dhjn6st>GPAjPP?v)YCpRjy)YSJ3r~QufqC~hWV<@dVRMv764P-1QcAx zHXXFB%-Ui1L062^tfFy@jdQ2{eN8`+O^^3|%gB8?u&_aW8&2c~8rRQ_m8i6|R596s z{fm#w$eX&`rEnYU-W)8_job`aUHQ6ukS?mqDkLoYL%vDt3stalC}v8D;MLui3dU5g`Uj?Ym{xJLq7$X~db=iTDV4 zGU*U*Ii0Hvj-Mx@kyR&&~@ne^WPeF^UUVFH1}7Mpn%$^{-(k@DqF_ z%C`SWhQ~$@ud735h&Pus@WKh#jFmnr;Vqn{16rMyTf;)|5`a<1kZQHJvCaajM7$~4 zwRxZj+5%>vC)*J0cT21te%V&%E!wG43o1#}MF38AIPG8e7D_6km}!miX8<@F<3prb zC4=zH;u2953ua5AFs|-XB*NLC2gre&J)D`uUDt?=^TB)x80d%svIh>~l!ZVcJj@Gx zFg9WMMqzkaAW-;bM8yokhpC!*aBtf2g zJKpTW>oPD`RN4;CH%0$aypLe{R5!f2tGQ(1aHt`1>$R^3g1Uo%)4r3T6BxP$A=lr! zBzhofiX!1~9U8Ev)AgVB_EUHxo_wO$v-qT7|9f*Nc5#7O+uxzEOqou>=)Y!zL1nQk z)@Z8Aitbn4=S?yWeX2NQt%ZXjuKUNwWV1FOC_=G|;DmO+s^F6Vgj9{|H!OfbbgUU( z*0p3IzJOaXzXeYO)SirN_FRB!UX-8@Pbxu%yihc|4_vy&1`BNh4kh6E01V*<^I+lE zj2po?6LC~&FsVS8c!*%Kh$e)a);EM2NvOjB6^IUpbJ8Zpl`?K$VnYt7#3ri7J~$RP z1awfqc)}lWA;PT#v!jy^glslr5#TiL%D)LRCz!R9kxZ9BjC|k4LI?a3n6f$;8y*N2 zC7uNiJRrhmf-v+kYp()mAa;GOyaW_xyip%IE$!@Rs7IPvdo5ENKg|fn=48QyXfD5u zZ(5|kW!BC^O6;s%f*D2{ibww-_HtAA4KOLwtX)V9Mm_E(XxxwyN`FcBqVmJqUWR9f zS$hxDr@S1D^#*x@U=~;m(nT`Mtn+i#3~+X;{j28@4(ed~8)bSN=;h@%YaassmN>R} zaX~@|7jMT*$hxp{RubIfgj?(ks@C%P!_&K>HZ!5*Lf|8m@4rcDxDm5en2fUu&00pZ z9OH>$Y?Vb(HIkwXj8J|4YXWw3q}+qca6m=3#*utn8cU$GiqIKt*|NX&=k z#$XL~i*7MKN#$pNzVMv9NoY#hPvLsDW#VPOM^Tih>0&7>{tlZ}5CTn~+I&(L-_@25 z#bf5KKrNgyamr1KLzS^esbBc8|D@1~epSRfxW?9!N8ssDVrb-ryr9*|sE!8wPO485 zbIjUZUb4V5`6-Zx;l@v49*{N3MW&qqu=9Y=={&Go z3UDrcWl7IZAseGVa_qAt*UY>trxGLtc6-PP*Z>t;%U^=4e7xb?lrW@W@RrYbbLbgPiE_(77q8XE8NXDAAU{ zmgMZ`65uNsO=VFbH5l#P9Rf2JBYZO8`2`iK!1DbqwB142Byfw1c>W z5OW2BS1fK#&VMOWCnMEZ(f~QjGrN{_A5t1E>7EOMdX0(pJ=Co28xd=vZdHATbw%7-m4ncHXL3us%B%jwbzNtR@!iLJ8jsVr2iR4ZwK1Y^w-fK;57g=YyUwej+fx`42C4Q zfFu2*6ye!Wx}Q4Dh};EUtL_#r zLeO0LGsbcA#eLJdo@D zI%45qu+9%O7w2vUMKC6cVNB>tJ9Qt;5sCB<@S3t&F@IwXXN~HWmw+hqj*Gdpvtph^ zqv%>r0>xw<>~6pe6bm8;b9^+Vs%Ox`p&vOsKQWXN&08@ z*Pt{9DZIQBZvhJ+hb!zj$G#fq+8W8kmDsR?NeUi1cTd8`wU+s@9WJ7q)Z&h$VS&TE4NtgBoFU$>qmj?zy{XRcRM61d4zC# z9cW4JRQHjN;h;lz1-2m?Jsanm8UyTtXZWf9JE8aA4fH8~=r;(x9=FP&cri5!-Fd5 zzbTl%frq~4@8sW^+0PcNSl0UE%0SlpGY<)1m8|jG0_*FenRXig7*)SP&84*pw5($m z%Khd=s4plDTJM)(pp9L*IDU*2{GFnfi+$X6rb`%lgY;oKC*+zHv-Os%k2%XpYy3{K z5KE01-WRIT>s2H2Pg#{@kB?3LOZ;Ad1aQZ9-!{2n$L z2z>-ul4+7dGC?@@TB}p&GO8|vkw9YT5SAH#5_yBs#WG!s1s95F_eII^XPHp=wh`Ii zql29XbGBUjCfR3#X9L%i0?&>h6(1o3NEBMfuDG=I$4^&`Z2fVYXc*CYc&sU8Z78!g zJDk(|^&ZoVs%8{cW^Is_EfUF%>YvGV5E~Fa)2pDkYPC^W>M@2j30iN5toOJOer0LZ zn?~h#WKJFGihmTBYx4S(_5XzDMMC}81+yRz%_W6z%saT{Y;1K08owKX!-;dt(m!uo zjp(_j1hDru05kV50s}q{gg;4}{Xqab^I4mW%B!XBo8S^PB4}+yu5u^Wyq8LNf59)I z0Y4Jw0GwI=IBj+>xGV;;aI_u!^vFIK+bCp5J{`xyxQPnd9O83Utao0papQxdg#1!D$X^qVt7GHy+E)il52(&M%bcjJWW52o#U!F2khMdpR#aqa zeDGk0t%agdj0G2aMFu$NU|BL=2&iC@0*IXE1ArhxN52%XhUAo43uOQ+K?{T%XRDU( zzpgBHeS^cxh;;O>Kn6yFB9fz62%?-`P2Gdja_Xd&pNlOh*OP~RUBX@Mvq~6vKcRGWuF zlST#h43N-`lEjwtXoyYStoy}Y67wla@i@`Fy(nS!3sJ(&EN$_gNNt&&%!WB25NvqX zBVljZa79wd746v&my!=<$q}RmxnG`*FD=A+1Sqg?fKH)1Ns>P-cYa_e$$p6M0-8Pg z!-{{@B{@OsM;-|@tygd_73PB@YcGTt=)<~EIq}Hnt8;_axljT;sVdEkKAq$-g%wdb z;JGa$v&+n49INEuR{I=K1q$tH%b-TE4A_jr5HoXYw@B=3|aF}RSEb&UvK1i7^dmCcA;kI|*JNuf3tOu-i>llir)ob+>4OhN6-j0vyo zBSU);VuP4o#cs~8eOo|r4Ez`e^aI3%VrLHx7OplTITD+V^UIU+bA!2Fy!MAwhpOV-Fsq&A6w-)<+MDFdHWoaOFYNE+*G3Q{#XX3a z(a^KCw-6@W40=HtZ!7@YhStVZth&r=ro@iR$FuAiL(T0Ug$BF?>nmfxvXa6L#-huS zT7pq9ePuk14az{{m)H(@t>s)?EY+tr{Wok3*gk^*6^b68PcAR|4L)l7At}hDgYddlK*6Z+_RQ~Ov@?6jDCNQUOS#0LeT2za7)xf`t z<4&en?0WHoI$vL_QXI0TtL+-A|4c@N+;}rm z+ho&!ReGFj;9v^esaXmldJ1`n&|X_=jw4alp%lwM`o1BT9;50S zR3qGqi`y3yt+-0iMYpeDszIVu^3N`&66^cUksSeW*wj_499&}s4cYV$KL+KM-7!IH z!C2yW-N8{1q8Z^<>SGs?qQfT`=q;Qa8C7=!hwyT$o9#1SHcFK*n=4O~kxey)QS~&! z_813`*smT9_opE9G1jHw0FBICiU!1^Q4XqHdb#Apk3ggl=kj=ohZGInknWSDV)~JO zjT|tpae`d0pFBtX!xk%WYq`|Jp<7(%(^=*+3!UzA+}@^OfzEs&f}R z1^VQyhP5M#S3DG{!sha%4VJDdo)VZ7Uql)(We@~!dI*weILqnxE}A&d*bjiAe*3_8 z9opX9PnYCBJwf?TUk4lE2eWn?2vNEtb_*Yv2o}YZhPaZmo7m{gP;4Y1-=#;4R(`X} zaQ2US#;na5q6fQSfHrFnmQTF@avVPOnR>H!AYw&B;-bs6(M8#rHF3m*jFLC(u7CrN zw6ZQ8YS!-n4ZNliHX)d%hZi~wS;yybhMZ5upzp~jaI*U1iczf0z<;S_+GE%>i`TA#x&2 zjbK(IN-%&Or=VI+)SQwe0pbm6ksU%8Op;avK+L{6OWBm|p~5X8W8{{ys%282RA3MIe1wC>=g{-^1xc_Zvu$loqhQE-O-}LL*lal{&Op zmi_}u%nGG%!`PmMQP`;Z0yQrku-&Nqh%AU6pI26-j!Z{52Be6MFGIaJq?d-+?E||-_5dP7o&q9ja0c#czXYqi>H ztF|t!rLJ!>7!n`^P!z=-7tm@M;({9lDCGbBp8MX+9Uy4?`}6r|-rRf7J?lMpKX-w^ z-NQbOd#8Y?yTYYwsy*P&+11B5)tYJEzHT&SGy2|q+L@Ps{0M8ND{9R7Hpc-rrPAKxOsliF`tV_Ncl{h?QDPx2RUPx>6 zWsVn!3dULj5W_O;u1P!`YMVPKl0 zB5clrHEat;Ps73xyme{^svBfk`l`vcJV5Y)1DED4fIU{_YAOwc7mQN8n^ zg1(Q$CUGJpM zd;ZAri)U}=d+TXYN%`V3=$b7tu##tt@w3X=2Fqp zY3YeZV_S7LN7^pF#oBt#f61@rzZ*WE3#8r=SMM+@qkNX(s&lNFBSY^>5M0UE;Jo%I za{>R#22d2GhZ^Yntu(F*l~{tG)1ONr;!iDiy}%!@tLrZmaI~DTP?J;EkTC+#Y>_LYDcDUI~bGQZ| zfL2gq(UX-W5SH6UYGqr@fqhlLX!<#7u@I#;&<7n74P*ML=7L*TPc*v#r?gb(@i=B= zF3(uQ#Tl_|KkeATTm}eHk;9+-;#n$=SFPyWxwKjw{|(gQG;uv`xT}stcmru4E*pQv zu`iZoTZ!H>PJfO4z29oss(z2e0DnH~ajIPwm+vGM3)@HTa6$UMb3mztqjQfo+6}7l zv{hfob$2*Y5P%azoMo5`Hj&ZTSqFgxOfwc^?}CK_NXk`7^Cby9cqgi)jvkyq9)7Up z>$dDp?0+cy3vy4Q)F=Y)YQ}Uxr{sZQ8zMgX=c2OuEhpEUXD+Y>AO~WWbCyQ)NS6Rm znNwgc_zm;%m<;z}>{T4|q3Yjq_>GXPy;Pm#1)yN;cZ|bkE;y7ma95GHh05f}lhOP> zHZzpr&^j?jeqlZeE5UPA$HUWLvt*q8NC~TPc*lz7bu?Kvj?yjp#`@=RmSWyP{>t1wW5s6VV-!e zX_+1c46)BN8c#r3wU(Kwh(m#c{?A>YO5Ny(XK)p9l5i#5f;AD?P~4`)JrH!}3_7rr z&@A6;BCKb)?~YKzRYvn;_)K{Nw075H4DV<4omntZL?SFrOVKuwMl#ByZC4{PnjXU8 zH5Nx@XdyyYtkQ?rl$tl0^BpvmJPakx1*bxjsnJCalCV6074oC2^CI2HR2xQXTci!4 z0`WvMFZ-*SX?1R+G#7N83`xPsSe^CkiTE$&g%+evq@~($o?NppX$_#Y(rMc{xhb!( z1yyN1j=MrG9pBDfRva~xIi+%1w%b{B*3SbKtX*P|QeOL(WmKEdkqs|MyL_;PZtNnD zW~`sV0Zl<7PP!DdRw#nKBcpahJ@Byl!K~h$b7uCdc`lJ@+U^AmD{@on9sY35u(N(H zav@|9r@0`AdOb*-cS$MfG8~3;m1H#fQ67pi8pQ!nSt`!wMpV-P(l>rhP1DFFf{Bdy zS|$upUU-V@ZDgn_%_QJ@9*+FzlrVA7P2XrT8O8~6;fU`mZ`c3;ez%j2lUTu{T}G}~0GuSb~_`5axRBLNZvE3Kr{FXUHUr-ei^D3g9Jt9f)@dp5{_mYV>JS5D$>Z; zrjd($i2O|=->rJicX5Sn37n7&;kUWqc(|S92AnqJYQq1pp6<;@)AKXTK~>}_o>huH z!3p!iFF=(Wq6RT=INg*@SU>t9Z;d7t9gQ~|1{XH1nX!NM82h7!e`Cl!qSSG)NK%92 zQ@@|bihf!S7`8YaI*u%MFjml@vzS;V3v1`(@$6 zpR;C$wm(Kv&J8R)MpD)o&Agn5)!p2}aiG~~v^b-P1$_%m6c_`C8OEZT8oP0S(G$za zxx@X*eFcpQ)PoI(!i5b|DLUz;!WGcWMT*53q0b@(yU7C!LuGk~7>%WZW~6W71A->I ze;6@>6dInT)X?O1T@BL`Uk`a=oPrGwgwo=?KK)Kj%5QL0ux3UGhv>Sd?+R9Fzqcp2 z3c@Y?8z>4R)DpG8_#Cs)u`!sKS}Zu* zov30XqL?BVMT;!o3Tx;q!Ls@J3t-Ea24iFWiK(YjU%=2Lg@*aFHmWdSgVX9MM4>6t8mL3?DmFY#N+$IBN~{mIA}Yv<)BuYuC7hAr$p z>OxlRn*46C=wrSRfoI9gqlAI8y@Fdi>!Y6Bc!-RNmc_FcW$9CB|r z;!!7Gq1&DqgRyaiiTjYZ}`8ynL*kgBp7b04Ty~-kjq_Afws9IRnIrWYl9cb0OD^K1QA4z)W9S3T}agVs}&kmGSVKMg%tz zvn)Kkh2M!us8H(J4u#`PgrC>rv5RxB*lHMD@3EhDzTx zn$E>!tcr|6SN_||xFWyNzpuP9u(o#I7t% zbfOUM(HhOaltO5%yd(K6qyl3vO!&Yr8_-HTcvQ&k7kZZ?i2;p>%lZF8G1Z91$`nPV zzLGc`fKo5x9Y{k$&HsWU0^;O@5RAkucMWFA$Cqzj-5>EEUN>!#eqxFzr36(Bqs7^} z{KOSr>Z3@7P3I@BLkhFSrum{>7)=9L_|Yn7Na3Z%oYz2Z@_OV!{<(>u=T)m2%z zrv8%=ku8TA&%ZPlXL^mwl}mp0_2&1i7&g&p3GAMrUa0#$bQ#?iC~4$FMIppyYEO>9 zX3Pp`90kWimq9e7uy2jkw5FyN@-0eSPORWF$@vLdUw$IywZ5;guz?7sILg?bo4DJv z&UcX-wg>x@Hlzr{%}xB%%i`@=QIW$GPeqRrfT6e+A~kH6Lq#CwPNYIbVr7k|s;Wv7 zMQpD;n0h_3MMV`zv0|EvCb7EG!BEi+Y!s+ZJpNztL%hOjx&%?tddQKTb5>$I^s(gQ z>o%|GzY-S9OcC^cLIa-kp&+s$2x%^yd|<^9#)_0My(*RRv82KvXNbViRZ8KPkQ}tD zi*l1YFvCV47f4(OqY^9p2lBi=u4yoSAhe*+dJQc+f&?__K;m79MMN@7%Dem=1Cihj zHfeekAS|lF>GB23uO* zfyfaS?`KYDWl<5`nee$4iy!Gm`Dekf)M);MD>ZoeFnKW8O#BTjCRZUTaV82Rm+~tQ zib^hEF?g87KB`AGnx9}w*>Ha~!m+_Y9pU@u`Ys2v8${P{T1^f$NY0?ZT6c z3nY&BQqN;KG+nD{dG)X$+ggQW!J-&s+BMgr#OWTuQBn;Z5}bM1OU+AHV>E67OQ@fFd5RM8A z7)3AFUR!9!`6;`xA$u&QK5uga5kTpwgoq)8P3L;Z1%F<~A1>8baNTdRT*G9zlf@PS zIL}31D0Y2G3pVWF%deP<4ZPyzxJZF(3}g8OZY+2N1cYNxP+Deu5ZR~3gVDXM&dS`4_=H$TA_ClKjHMVpGZ?*PknF9 zzLjcu*oN!Fg>vM_>g;p2;Mp3s-`2Dq0BO)V){e)kjWOyQhvJMT9(!k`By4VCzuJsX zBBNNnD`BOux%?2`lna;LoK>60YjP^4kQ`i3o(x)9G=R4(Mn=j@ZZeuK!x&Q|4JXF% z#Q7ztQbnnh)k%UdgtdyH?V40|K?UdoNp8d(&?Y3JtRMFa1rxS!)UvvbE6;sKMsrFc zTW&U*Chm$8%bkT%ab>ho8c++^&5GYd0d{6h7!7)A@a+m{>#V&k_m*shG=@y%|3=45 zVU(Eh3jm47*Mrf~=mcPxM)P`zkC~7`G5_KQZT5bnxuhBr8@`edC_33_=3s?ICP#Dj zi)`7iE+=*dUgga(A`=W(Xw(v=gR1~gs4E#pyTF}?&a5_6m7&8-GAq(#F4=`lb9ZDC zORgDzg{842G%AyWu-|vF3efDO35; zoKvHDcq`gd2e?=R2!|oCGldTpcO&|%Fa#nYSeKHp%%CWpDT9vu!tRJOep<(x3|rr7apTLLD)S7z8WVn*vKlbu4NX)ea3!Xq!|#j{TXUNS5D z<-8aR$(LB(F6|AXefTMWVNR&X={W;MvOC3aX^-0yT!&g?vZBiq+;@_T2^C)@hmI zTF44tOEIVsh{@@+iTIQ>c88X|Kz6cJ;CR-!q{7yQI8 zMb6@ua{oyAz~hakC&(1j;ocvKwCK^%mBf05oyHAHdpyZ1BMz3@_{@q)->@C3q%+vQ0IbRNQ@0$szF0+3)d zg)z1f-ymdB#pw=?#zbp?7ktO;}N={lX$vOfgq|zy^QdBnm$BI8cm;JV^LW; z*q>(EhhVL1qw=TO!hvhq)2N2Zfg3SC#4wcu(T$=E_w)d=k6kyUaz%IsDp2$sS2Rsj-zmC{S!)Jy217pmm1*m5M2X&M&* zgATZyR<)ja9420?G$1ut_UiS}Q&y^yU%8c(kb2N4c8I@?1@$OqdE@oV(+p{<7taZh ze77ySnireua|6X^zek%&jgIwh8v4gZsnWmgQ$~Jx8jXy6FTjzxUBpBXNJwT(N=&xm zus1xnXn4rkW8h5L5s%cldQ#oCQk5d+FX>Dn22S9QNcth2J-R2IeT%aOq8F(}x{~O# z;s)4sI2F^U_YUC;vxHRo{45(g3WpGN01SL65YG^DsNd;dDh>oZ)gAQw$$5liBh&PdvPv`yEYyFnBo`RmwjDJA7&J4b3Y`E$2TnDGYyE|WJpA#a^(DO8m9O=|A>APah4 z3i}N*$VE`{-%D9<4*Cd6VfE#^Aj6W+LRN|c49jT1(x_$3E8UDKYp1ZA$H~Tzon!kw z`d!M=I(#F0a!Qg>D1PVl)*rhbtS;bXrOyXhk)sUgz$kdTcv>+95ALF}{e5xUHac3jX3 z1fvgfiH~6!3h`eaN=CE$mSvY2O-G@}Hd}9%`c_V#AI;tenUU_js}GQ<0{bxgY2QNh z8(Cfcg$Llz=;GHwG@jl16M%wc&1&d&JVT9rn14p$0Ir-faDfWMHci=q#(W%V?gCtR;WC@s=E{ zub!2UQyW*VHCs0kHBjMB34&_{%l@GlUyi;YsIDvF?rGk>U^i!|G3QO74Mu;*GK`gC zw%&L;B+M<=dj&ww;+U;BBNZzP*r0Tmc5Xy&IQkD74!ZjysS<%PHp=QRW0_*QQxvpc zU;(2Ur{1zK_{fXbABUe0e{DpF&}{t<)zSs$2g`1!#o^6ml#~=)A3VTlngSz$kS&@X z7CVgQKBOvE1D*GkM65D>B{awyCB_}xIlB|0MR((&YrlTj=*HKpuV$3%@sp#c&j`@uT?XBmuJ5t1D7E+B9yIvE6!W^1`Hhh8sbu#9r%S`K*((B%A)tp^y5Hvl|E-Zh!z zJp?GTm5IsKnDxLHp@AqV!9iBLYqP+M^IT{pdN^}loCVL~LCyMEyp0%kS1S=?4K~8{ z(z~Sovt4Q}P^(nIyU-f7n35`5S7K2vIUX%RG^zv@+`N2Kdr|e7X6uzyi>A`LGd*?U zu+?8hopqi%>rPUtyiuvL4x6B& ze+t2?*O>FYh>3~GiKu%gE@67X*xB8?nqAuHz=UgeZ_0wD#$+Ss;$~|B2}8q7+udO# z+PxF$Y7C|$LtR|e#v-yjCTq5i5|-d*jONc_k|f1!9V3b8(ceW9y;4rcmap23=F8n_ zeo@D^+#G+$wt;Xu{LH1F=qcy`qgfr_PQ+M!clvZW{jqH3$LPB z3J0E75vztppTPoYi{2@_#XhrS8IC%H|v26{mRz zv1N!TS0`UJV3@?f2tNatm?&LOWh$t8B3Zqp413 zb|uSu%o=l^lLp1a55;y89jIn2 z+QnJyt|8qftCPBMJt*cPJ@xJy$E$E0$qymLU6KA5PU^s2&=xARswb}?yI3WL^e+NF zccejED}sp*+{q-%Nzzodtb(Me;$+s4}Qyyk~3xbDbW7K&Ui;k zCI12Sr7`{Y;?I_P&*B;~glM*&3*m}PFsZ^Wy`0|0;Yqkc*BH#!i&3OAdmz=7+>hwD zUD!^lD$LfmsjFC38t@PSbcdfGG8bq9c+3#Z6;puQX?8~Qw>(yp_MZVb_H2Lh4HW74 z_Ix<=uIi3&C-Lu9DGjviZP%ES4~sEdnV3{D@Z2W;P-d|Ur5F>FahqE-9FF3ijXd2+Tmmw7U3F2vRSHfeQ*(x!UviZXF@nBXKzk#h|-Gnt#tfOndoSceK&}7qO4VuVO)15hY@POga+iU<7ueWy+O!$kMhEjMiI_c)qt10g7|Ho zaaqv>Cm2@g+s5n@F|7$j@1KF+W(&T1%t-kG{b~;4LQ(v;L{_?0#qk^+%{w6eN2G*G zdyLsT;1fng%FFtxrJ$OFf{{*t{4rz)k=^_evQLj@myIr6bjvN~=0#bkzos-4jdD>r z7`yr8c&F5a@SM-0C>}%0DKkq~%sdGFW_kQI$-|BKdzrT*=Kyna8*9LY7%}m?QnmaW zCCNuK!#tpR;RBVGnx)HbzA-6*rW9-@_8lJf6Vuq25&O;MasOEI2+9U2>}4MP6;?Ej z`B0P+%-_NEGBFDqsA#BHgvZXoMk)MVuBbE6zV={ha}-O6HrvpF7t=Zpn#C=RCLhxAD*;Hk+@)kO50mRa_#%aF2)fVpGv-)f34G(}f^P znjffux4tU1hQZh`MkbcU@*Jr%mqejtE@J$$icSxs#X5-d4oFo<4H^enU z3cUFBkiD4giemOUMK?grJ*eJ&>J=jwH*nP-Xg@CXL|yZ!tU);kqe`5>ImZo&!9hYU z7SB<|(#qm*Exr?Dh_NRB z2v_0U2er%drOqOL@%d7xgJ1RhdYNCf{PLp?1$G&Jy5^7va$%bTttmM;F3GUTlr%%= zx3B9<$(#$QlyuPmg*Rm|JKM$0s8%s}5y|x)e#Oe1(Jc3DJzK{R8933H@PtDR?It!W z;9Lh7dGGb7Y?86lCy&8{)d5^tnBmm2IxqSPyHwOozl|2TAI@g%2Obcm2TPX!5N;sY z*tG+!n3bOb!s9ERbt=Zi4pYqH1sGp`+#)nsz8~mZ71D?@pYFMrYY1>t*u{QoK4?Io z7IL7D2VUBfQy4;IOI-7+cb+3d;xs+dM+xa};2n5V2*K~PlDXLJJkbMksbSTnx>b7Q zYN{DC<+c(z0K{fXf;&BedBt#-=K2}u-9oXFzo!^Zuwdc6TA<@LTOyi`;vk) z5@Ih#^NFZ}IH5A!kfRFCr!X-7+xzl`TivPPFa^*Oni^CVfCvJ#iNU-=FR zxNc)K^4SUQjls*Ww5Gh-${B}+@gJrG*#(jE-{lxh%P~2IX6!Ge_*o*&W#q z*UFlp6Bjg60-$ylR1{`jQf!faBe_t==l1oHfS>Pj=&7Oi#5_e;D0j)R;e&c zjcql*N-iQ!P|!-~#B;$0aN=?0 zki8X+rzdZ{ir$14WiZ(GqTZ)|TsHf6b>qZ7~jDju4*@BcY(ZP76@1;6~RH#0_#KMgW7~~*a{KY|q?TliO zjl*-eTT@%;@Jn5`XE08%sxF9Y(Lhz7&TDiMw2eAN)2T+k5)0$BFoKbMSp2&5;T7Bq za>HU$8KaRM_7|&1Y*ZY|nldqam>Wtue65V+^d~t|Q+hU_fW=bW5T6_cXmsIP26i18 z-N6}1c+8o36R9K}Jo6~}8_0!C4>|eHLBck!z~v%`S`JvTi2>(ONnVX0xn2)d;a!L) zRZ|c_X-YQQ^jSqE4&5qAE&zc;kMI<>4j5O1m;Q-zfv4G)ufCVa28ob}C3S1W*_(!zmarXf&6J6KWJQ5GfZa z0`Tq-Hom9u?IDjkau6a1N=u-1CpyVPq0w|Js@yHHDMGOoXoqqKI~S9l*qEX;segmd zAx1Fisldu}E@e61LX5fDRKYOk8cBuM&AILUKt#Ysh)laJvccIG7D{Kn&Cv71d!ik#niocs;R zUfn;y37P{mLrxyhIq3^daKC&f1CmXE-EopKTE$7g`KRIpM+|S12pUFnzQ+mr&;sXq zRWEI}P93){U~hJv8oss(cq zr53!tNxc-nxF$O9x)iHn_86C9xTBZQ-{m?VBAfTo;iAwkl+_u{ho>2vR_1&rRXpp) z=;)Wh80KcKxxvz+XZg_y;3O1cmSnpI2v?xEgNadHpJ#Bmld34FfYEdsP$(ABq|%m` zeMpMK=R>(=oSkAP+vySVaMDbg^i=kbp4`D0?x7--2|PL`(oVl|P#@Zs^a!!*aA_9X z9_-LPB+dYoz|mXY093j8$aNiXq`Vk;@WRG#9zm)!FsBIK4Xuo<j3n>^$z z`D=X4`?2wSy?D{)1oIs8Z1XHU;K!-!wf=DQFFZQHh|%HL%z}+vc5*}Mkep(WQ#;7v zANNil-sEzhz9?Sa6$DqZ5)1ee8QY-0M*P+#h_2G%8KHOhyLh?u;Wc@2_+s!Nk3$>~ zwuJzDS!y*4(=-X$=adjD2Ab$<->z#4M*qm3)^awTyXvMX7*}8#SB7gjvtA6xDhs-u zF(@76^l~D58Ryl_XMXbN{YwH?E3x6=k%W52pwaz5?sh(}y_ZqhaeW zuoqjG_w+9cSJ7pxl8?sp`b8KM2o}xuX#2`is{j_oh|2Z2;>V#cN9Q@Yc^p(C8U|FjiL) z{|J?#1=O{|;EUp)xxeOH(eYJQWLObS0&llfGQSLyWYuOYL_s0zzD2FLV!7^8Y~}R>SA_LYUMFkA6w8 zWA}X6=l}*L9O#XnhHH{Ih>tZQ%l@6TQ%JE4B;z?6{*g8*ZV6}Gl;+yHCOMO7Nf^9$ z@M^5dRqiKfah{!6Q~uL*k7o~@tYn3l#t3`Wx_(5TcI zXqojBko!Ez?d&_2T0-0{**qkT{RA)_GyPOd7d9GAoXZNhdLadnX8pCTn{MFa@ioDWBUiXD}NX=;6bL)UH8L4 zT^ND665WDpm~ojfcJ{q#kB~;wvmRIqSA#%Yg%=_1&y++%aP%C>Dxu!-O;#B~UZg>5Xt`vwi;$~yZeP{_<2<{mL7(eE z_sZ?-8ngyD!~@j1UHmhR+YdCr_`*!IpLk=iUeSJ{L8s8Nb;6wcc(|)XRxN8w=qS*? zo6f=edlVoh0nR3GMm5fV0HvHA%k%AO?Ag25u2cg#Q$~NGf~mBBuC?6?5IRsxL<>Av z*p+6}>KiH;+!y*n(fW68*elDK%krIl_NnTV)dE-PO^dx2g$`0lox5``7d#F^dVupZ zzl=9{flM9J$I7ndUOqk06P03?W7K?DRPpP=Up^4Z1w?lqj?3jiyVmdBJ5=1&U}47N zBh~yLs_-NQF&)lo4%(G&JeG&!65N_d=>T_+c2`}7sUFMfpoyKuFfQO$r=mb8>fXkg zhg}SK?MRKflTlsDIR#G2FyQ+<=%U`*O{EUKbU+3)!@cZ+JL^Ub_jnz;3wvmqAb#pW z_lkRx4*fn1LxX0xmtAmgoTK5sM2B9NN%@~V=w5MOqeEYb<0l&KDIT=mde`2e;l4qK z4r5xOK_B5k_li5BL*M4lfd02SslZ8gx-%-mx!aVV{EZHsL_ewFe%yoZ75BY5bP+l^ z4f;wCTE`vutA_g#9l8Pgup0C+9(1p`pVFZxWm5hX&QR^5@A)e<+;JUx_23NL|MZ}H z#l1v_o(NB@QGUG#t@Aza-x}^!I`rY7N`pSZgYFggdph*9{tW2N>Tp-4zT5ukOY8en z9eU`#8PIVLx>wv^>CpFMty-h}CJ$QYdtM|;q{;yzY~{xB1F zKMz{R-S(P>`(z#Zre9>>UaoH9$#Q3^ugd6LDs||gnNo{-&^qply*TS|hpJUN^cAHU zxWgWFuY8}YL(k0g$c6{4_}pwIT8d*!=Hhdue@&Fz#aKZM7Qic{((AxHRZ@d0@<4-rl{wf3HKA zWa7TxgVy=3s?%^kszbkt%~TEd1s-&-e9zaRn=^gtVIH)OyJ(JvJE222Wb(aET}|AB zzB_d2U?$%Wd(b-WHXZjW9s2dmam%kg=wA7LPlw(Y;YT&89qB>qxF5Pp$r>V(Qt3oq1Ryes!@Km2i+^**}v5M`Pcpo=;J(S9e3`% z8g4^}zBkj>zQ+C0J=^&p9eR1Dtv%yG>$vCtMZxq z$36LZ4R@IiZRTf4Z42&u?wRk?bm-BUxDy_6u!j3i9eO#I8nian--GTI_aAiV0huH0mp1H%?~O$o?#FcKTdvzNV zyhk@sGm*e5$}Yscu&1FQ__M?L6XahK@Of6uhF%RFeE@2WF3+?6`?1IJ|G z9_m5&ihG<6{hv%*>-uard~dARa8J^q2OpAw`|lofuehh^(A|e-Kws-Y>wM?_Uc-Hj z4qcRK=fxg$uefLE&?jZ~CEtF!8@?-^&~Qg|=subK*mE9quef76^bwge=sFKt=euf= zhWlO}I*>VTDfOUx#rcr z^m?o?Yf`)2gVu2uZP#!gq(iUG#C?Vb-7DV#9Xgol&kyjRb=WR=6cJU z>wbvu6Lje7Ge>*B^PqLyRsA&F6*}~=%(=lN54u;r$LP?1$&}hpJZK$v{XrV;b9Cqv zGW*aE*8ULRlXYlQZ=voc%4Sp{n<(6zv4Syd)2Kr#+*7#(&{ouzvq3m5YVh6YfO9!h zOIOw+$|1JglVha@d^uN1afv5tMTZ@QGI(OiBe6;rtH(so|5>hNVnYbqFxY!#Sh>!u zdcZp4FvU;p!}JN-=lEONGH3l=AGsW>>SQy=8ro&Oh_!?sC?+coPe7xwd>`N?knEn7 zh=Sdj6=Uu2Zt2>+U7lSwXKY}gET(F^S1s)Tbq@sL#LzgL-;x_WA^V{jc;3tT9NAW< z8TbRxr06&0gcaglV)q9zO}y}j>HVvjnY_qL2<~AbuC2+dg!~>zO0=$~=-pkgW>Nlb!~8 zh6g%L+m*;zcU-bNoUR#81GJbS_wt(77>%>Rl(=wB(IO$wVBVlqFl9^&d^bcb_`p@B zD2@A)_X0vpogw4q@<-VnwC~!Vh&4OwP_0NRc|Bl@+mesLBa10`p>7pbG_mMia)isy zMoWNNJJDt~b zJWVRx72?sTBe?;dG^hJ~bXqZ&P#u6eV5P@@ zYWSQN^;1_kZQQxI1=lT3n-+9$a_)aN&(fI*{&f%29fq5n!V=EXUFcjydU<~{j5kf8=b@)s|c>zR4> zG6do$h1%&IUgHYzln%~x)TK6|MW~bI7$r6AHxoZ6#eJxq*cCZe*^}z@)hTcwZnLg0 zFU&F;A7%+|7CRI9)!FY%zzNao+&0dzy=}-tLxSz`vMbmV0gzPDYvbF~fF zoMx7t@RqiG)|)jL^*X$;ka8W+E}uI?ZNTSBRGCRO>LGX1D3hDezHmvA_8W?g#4`@Z zpsHZ$GNbugL7vB0oZais7{{Y(qSepMOx}@gXoj)@ym@k*Z&{O#*sg;SQh2(e61n!SB>k{?I~%S ziEB}XBv;xLO{3c`BUFs)W&FuM3P6Gl4rk-~l_N;pHTYICWqfK}5sA)6ikY~H?8WX} z0*QvuYb`Wh7`%M@kqevyB(B z`}MS4ij#Bwj_B^m$~t8kAdK0I0UeBufymE5Nekv^yGIYoL>-8-CD;bz_FT35SoY-L zl$U9TI9$-ft2nN;;f_dAt~GR}NE$X=l-VA?3QYO3lp>XEl#ve9as!I1=27+} z^@iwLIGB@s4>Wle9Kutbi4UoG#DufTBrKQFe5P2_RR)gOtCky_vV`12rReJ|9;hGM zp?I@ds&nt}Pz8lyzmnn*z5WEh*jQ#mYI*@gC^ox2b3xlxyfSK!ds)|Q<2@uU#jIG8 z(af_tipRZ0QZ9R=n5?e)^4Mi$Sp@;3cvlx)#5}4(1p>Ar*}1q^{y1$Kl2C1*2IVqH zMZ3d~9yIGqCrKA83{e7}XUHz#p|z~~8Fc%@fjfCLSPMl(ia}|!QOc#X&1lX7V@R4j zrnK_lfYErW{G`?0FZ`vf4v&=>bM6w0qaNXXR5O#K-=0kuf@xSeqBa2ErJdRReBewx z;@!x(6pr&$p0KP3ak$;gwuGn2{0z<8m$;8ZiQ z7qnzWXVb4-YCr2IUskMvP5^C0fjyQ2lZQ@li_gapQNEBZZ_OZ-oR}Xk%1XmHT&k?6 zY4T+*d47o3R^9AEX2-4z$kTfvNq1#oCXN#Sx6Lk!RuJ1tf=<(tZ93vu-&Z z9ZbrafKGZt*Bj&%)Zf5%^SH>vb9~RSHI&__oWT}Yw{m<7n4EHahh#Xu)hvamh-fOV z?`wzeTMP)-_eq~+H2)k&b*$(!v=7T(0spYK_=kg%Ys71y-%(CcOfNPjfO}QAgLNY= ztRsX={5;wbuDQ)XGWf*P;#REXWj7Hw`=55?dqKfN_)8zS+!x1kp}eX_c$+!QSdI{zYT4qI1PmOF^*F{8Mx{s*OmS zu%b`17pDKJ2t^BW`P^A!9R`)0DUOtDp$jpi-2~5ww-;-E5{xXt3uZ4PAO%v#MGNrS z=f7%JCr1Oq0s_1SaIRkg3Ak<6-T^!1wj?HL98q@e-qV zl2@2>A2H_v$p)d2Qj)h?7>=jVXudC%0a=&_m;tZsA##p(G073`H-A z_dggT{2_sm#$YtRqd_nO4p+g<#pMpwnIM52;E@`HEWt{dQF1**g?zWN#gjfmkKU|ovvW_0?x7xe1V`F`ISh8t3{7aq@Oya2-F}UU$ z7ow`6+;8F<(9BaMeE3?@ooRV&Q=M4{poe4-eNHvjqYz4|wp2Yb$+yh4;Nux~tDt|< z8?@21AAo784ckrz8OH5%P+xcmP*L#ho`2&$FRm7OL z9hg?j>p*40{5Ovhdc=3_!i}s6UZBoL82^G!TWIqM+jh- zpa$(~4AX*C_DJr4eM~eb00&y68a1x_QNHNCd{br6fsu>X>55$0*Rppon!dw9A4*x# zf^slHrM!1Bwqg#f8bV@@;vA1#Mz;El+t0#~DJg-k5;&2^MwzYx4n;Hykyz zNe#cv^k+(lUcdzPB8ajpPqcho09r{_f>}&vAl2kT99J|G>-qVte7*u%CLfp2kNEjV z`CP>Ucgg20;zqxQ4rMkHC|cE-n2FiU>WjBa+4O%crRO3^I>&RQEbmfN1h*p@7cv8U z`~dtZZ}kf)f^bz>x&iOMWo>1%m9-q~=5ZX%LAm95^PB;Z!GPhLT@QXmsyNJ!!viz1Q3{ENR=zxCrWk;nEalk*C7^`NPre6$49hS}BF-R| zF~m~Xu{7d%P1r8TO7;;UA3{Zaj}~tx4&~}yal3a#{WF}4}S%ZbbdVUU+Pm`Z}%jZ;nZj-We`MFU(Pv_^S@_8*k-;>WMKVOy4 zar|5&pSApq%jcc^d`dpg=I6umc@IDDmCrBv8I#Ywp`PSy`8;Dt`2R)QOAL{nhmSPsFD$^e+8|@VvBB4FSH$Ng*QT(8owS6I)?;sigtu z1{9E{z_-0{sTa|8nC;ADdUW_nlEsrI%*NeHxN^ZyhU_b0R&~;#5Xd{Xp?{UTl;?!#kE8)Zdqvnqg zQ77|e=P1=7%l%>rTUDs7a`L7zyQf_EnjA(v47i-Qj5~h-4dA}+7W7j`I**Vx1i=rN z&2hk7-PF!X!_QEf&OcaA#h$7Ar5jELZ{5CXO~J$n&vUv@+C{Phxy~|{RRY5j;*p5x zg#b4aji&D4k)4(O{HPi)F`$%-r*^Q41hN^yY0=}R=})2{s*)%-#mf=m=brYFc8-@a zhS)r@t|#db>i~ye$wx3%R(m+S3mS}FUD85*$3^Kjo_nJpF~g}uL_f@=+I;Hvrv-UQ zGjhXI{T=&DyW9!#rXJN;;(gdPiTWp&#Pj{ z&qbEp;tm{vCDmD{pkY+j7R?`F$s$o!*2Yv8j%2`|nFpc5FGP zed1z1)4&z|kP2!VQla@#*_sh`2jkC(Q;j(n0NRRU-pq^KSzR+bwycqwkp0bwy2J42 z(-C#2c5FkO$!{mBy05Tq6RXGIxy^j4ln+k30-5N0EBG7~>SB8wuUHcze1 z*k(YCi-G+oA|l%L=jR}b%T2j=`&kX5$+mTLo!^F${SE6-M5H9ntdUe?;q_5T`oaAf z_q}G#|9SVV>kzmO_pPr**roARLHo^M>;k`&e?IP`J8T%?=pVUU8I0YuHfXoXXH+H( z7AI|7?FvU_=wwE-2Vv$G>F!fkiJ(Ba&XK4CkqWT%ghHdD*(dY4y2hvRLmvEDh7UZi zjOUU^2S%eP7Z&HdjzovQx(@R4wy3ssuoI1kY!@SgdsYI`^nu4M&G%?pM+I+5EU?LE&NFRX|k$$utI=U1P zNe1-)5!$-CH*JafChM2#1;H(-R_VdPYJkYRA5BFciMRo}`Xf?t9@Ai!+N zFr#T7D94JORwQW_ralwp1!~1tiiO64dLYDH8v)a3TZ0v!SSX+^!+>;_E|ry5%zlKg zlnK8E>+!6YZ$q+1N`vy^6OO3%2vobfI)!SZXm}30}364sA%O-zM8iVM*-(p$tf>@wBQ`*Yp|3k3tr$4frSTj zR`yv-5m~XSjm`;zK!W5L%~zn9Ydo@0q1r_Vrvy6j`aBee9lS;Boe>H~RlObi7%oiD za>m6yO$7bC2p;iHVq=S(OX+A!zc!lhk~UJ_-?@^WFg89-Iv;CxW=gr4d^G5C{ANt$ z{ybQaJD0Qk=a*yQyq<(}jvI=du@Mf_kLLu@VPG~6Eieo5KfCrt3}!6*L9y3>BgBIq z2*0`-*%+o%Qpi3)76OlCc76Fkf6dq+iyw;L;n?W?Wg9;qKSqHB->A}@fi*`N&w~i! zK?PZ(=H_?-VV7nPMCcUxG(V4WZhhmU!-gVYWwq&6>|sw1hAMOz%vbZu)oLPbl5$77qzbK4gn|N|vNf{=KF}-n58xBIn^6H(tC|=m`x2S1P2E5X{ zUtQtgN_Li<8zS5`z^OX-1bsW8#r$0nB)`U>*$DvFb%} zg?7}P8k{n`$a#dn;1q&=;a*F3)D=4Nw)o+UIF?hu5w_2?vx}S-l!GxytC{l|l2ffK z8OK6mh6Rhs)|>+e>X~b(bWz<*Hi&^{=}R@`u-3Y2OvCoai)D4wkzPJ@RB8FZn!_`! z)SQcm$;vcorD=<)J1Wz{j7EmD_srLAJacMcWnITPooJO^h0d+~GsL-*e+D_f^BMk#9l5&Vs%OfdRF!$EIRKVeKpo>3*dc$RZVQ1up6@P#u32&T6S$%|<&H)nfFbXSN_SlTE)=y9s zvB=pa?mW1?FgqgkrkNEj9}sUP6Yc-*YxQj*73h75*JwTp7;#qgWB}6bBJ!Uc{u2cO zy-Pcur4ZudJQzrFR-n2ipL~sNY1%dj3zty&ICnBubhzazJY_L!7abanR{@`=N277L z#&2gm3FE)yPm%mT*}J!XqRodRpIfx|AQytRspXKms`)r~`=+d)v=rfR@RCLAH-8bk zr)RPF8McQ|Y}Q&gK48Pv?HG~N9mgHJ_6_B7O2J)&$?`WK{2v6^f7R3FsO0-M&~w)g zw|d&T5Vd_#sQ<^+qZ+pN%);voWjJS%0qf6tk?Sp?{%fuN?OkJQ{C0a}ozLMO` z5ikw6jLKz}@6E2`8n*8k1smxv09bQ56eo3?zA)}y)bNe39KPCq-5k2XjBK5D%ZbIy zi@&fqS>nHXtNqjA-t2xzN3j3OQ2#HajiOap+ML;n!-(*Y0}K-(?99M12r_T=w1YHY zA|b)jjkSXvCZ_`=rj|IqYU}#DQwfZwQ;+|%HMiRspU3KO-0uuTsFOhbA6261XInN0 zNcbOuVe$a<=%K6V63|kxbg5bvTRjd*+h@X*K9<%mOLX$`T9XMnrEQ@LLnY21fv^(8 zV^qv_K57Z{p9Dfv{zV)olYRr;>c z+!yGbN|Xqeeq=N=kRG2<%5^46(mO`;$4Ihb6S|!XkRlV~RY*biHiK>!k;f4}`BZfB z2l0?eds5j%|7E4a3al4_lmGl!`y8`R-rg0@mmBvi3anW2@v`qi?QmnylT6 z_B9}FFrM~|Ea)Dl1GN>m(|{_BdpfAQQ5xI#zv9PE${%5!~F~ zbC?ec)vw~TDh9X`jj=)ywbvSPeu?!ap9L_CNZbt%tl;Si38ZMjYBQJI-C&C9T$Bwk z6>JszZ&O~u@gI(utXO$07mIrFD#5h5?yUHQ^7T#K7;j%Hc5RM{hkh}3%FT+!>(B6I z8I@bWWgjE7C4P;R{=RN7;?MizHSVwd@GCn$Q~j#_nOGz}GP+R-Z7>Ct^=O4WvbU4my)3fsAv*2tQ<{wzvy*PmDYSN8+%g|b7@3Fva)4n;2#M-jAN z4o2@(1I;n@K^1^4+=RgX_u^Pnx+TgPsSu{p9LR)XW4ePj-Z{RzfIcFGrKzdxJp#d) zdxVCM^s*{YKL}R`M!S1^SA{f_&78 zZ$I1n;w+{-B;XZ!=$IM{>XGdc#>{$^iG4YBCIq1QtZy-xnlRFi*}zpdH2axyHB2mI4(k9r6N^tw&Us@*$3&BV%l=`UE(0949EoFLQ2QQLv{Y*s~;Dx_$a{ z$sVM!_tE0X(&zeQm16(_jOTG20{wqsWa;Y2j^pbJtVDnCot1^%eBBW(=Y%3AR|ALI=#Y+O@)jb(3e{bBvKK(%4Cej8c( zO=QP5WA;IiQz&+$5053_xlqJy0L=NhI0(G8aZSzZT_^D*P8-n5^usC}U^Jfr>Voz# zfAQ-GC>o5;mbrB45@XKCs46*Fa=*ej4+PARS|3HNn_$Mi>Jz!}QxZF4mHk%3XFE`9 zWXAwwb{61bcW_Up;bTeMI>?B;2~|egA5X5sUk-f`avZCj#cOykgPn*KGrKw7R96)E zg{NP;^5=1_Wm>SO(|##j)%#e#FwwKH+VP(Og}Xf=^=Fo0Abh9GxZ(2W1&Xa zAx860gs|oIN;}!GPRQNT-)Pdi9Kzk9M^rCHgZ4*Ln{)YSUx-*Klo1LdEV>ty=TmR3)uokRiVKvQ9{;L z$po_Mw;f%bV?6(DWXCZ^(@oG(@uvE1$G}dPT0M)b%^$)^(tJh7bNKdHase*iax{ut zf~+v=YRa>qrsXvwyDr>GpmlkX_T`Mltu)`?m~%F`!eroe>e{`4lCGipP_YB6Y(Ko~ zfP#?)a-AV7WK?bsV~f9OP4!{0Ng1(rE@BVUSznLI8Hf1j!Qu60P$yX4pS=ny3zmsL z#xpJ;-GhUn&A8BVDOT2QCb!5xPUJy;o$*=$d>u zAJ=y+!7==SSy_UiYcG`;6|&(R-i|C<6N*inPnK{w>}hfn*?P9od>m+W24a5JT8M@f zF9PE|1#ja2Xhsrm@3w+^`2n}rj%SJ>L|zJEA0P*WDSkYPVMMbJwqo~Pg^D7$i*Wm= zFkNZHvJyr6z4Ed?u(2Q-ml!^Kft0zUw>uwA77_F9l_7gg2nJS#Sv7>`j!JpGsmiRs zkq6%!QAN;(wl6@B3$S2A$CZNC7c@qHko+8&VQZR4ne!B{n2gI+2m^FckCFT`KhCUy z{pfHbvST0Y1!JkXVd;JlLo$Ztb5iFIvC!=(l$crwclF_3sYVZt<4*(*aHLP z6N~#2|9;!vmTz(LJM1(%Cmsq)?-!-H8hl8xTRSoNIV>bamYZxeuVw0#JVVqkyXNxr z)J+^S$IksOvUOj}2)&nli2InHRd7@x0{FWC4>po@M84k;>~0TXsj2kC0jtz!%)VO{ z>6bi#Hl}7iKc~=1T+n{cUL3|sihZ*`Etlj% zXw8*DCVi`gaF0Gx8LgZ@u=V@2&PP`^56T2iaLezZtqB zc7AR@>+;1c1Z@U}E`F`cx46BlPqF|aX+4T2vL=n!ZILvQsYE&@+puEyiZz__$YJQh zV#Be*t7wK{WhMDwd`fQ|v5DSJbS3SNl=C=pmNEApfU$MtQni%wQz#OOmK!PAK6*K2 z`zVq{wj7+X;tI8IVXq0>Z|y8r_t4QRfN@)G;<=OeLWuEif($>I4Fkqo{?&MQsC4M#(ptq-ax~KY)QN>((xw!K96*(cmIzcZtRB%s3*LpPdG8i?d$Ujul+)3NCwbbWrorG1u7?ZZr_fZ1FAg$6@W0nO6Iz* zTCPHIk|Y(PGAJUX&P|OS-49!dYLul-L8Xo zGFNUxSyKkPUY015n0r1VR+rK5Z^Q^_~8gPa09L3;yR zo9kPps%gMQ?kZAZ#(FW_bO_>`4`Ny_A=6qL#-Zl0-?H1+BOM#GauB2+>Q;(J_scen z@|5>z_PXvp9L78sbAZtLbG5$dS~#F&2WC31L~bjnN0nmihtTIt8J^L}{YLd{%cP%c zJYN0cN--A2y3x4`b}X;x!%;T`*S!xQa9@Z&zJliMZnD45qBHFM+3& z>HT)sSXM)syOG(Pksu~{7o`##=ZMu73n6kb2^V(;gv*|$B^u4;k}g*Sgg_i|C}zX` zS_nLTPXtk2D_F3ypu|ByEddF&Ko_*}W@lFMJ;_%(KIUo#fIcKPe} z+@7BH4Y|G*#tSQu(4I8fx9;UzVHpcoU@6a4T24R8$yFE3q7e118U*@f)q7LB7}xOCvp-jMJ@zr7kfZ71a^ThP7b6&Aal=T{0$_$(cN&x7h72*C}CiTE^+G zT6U+k`E3h34R%t|&jUnjK&sI?c!1T@i9MLe;#D{@IsH@VIoYEGtmp#;|BtqBfsd-V z{?9^yfRP(CYP9@x)%-LlYNDu#LCsj8MF?y{xGq=mjn%eV zZEJm0T3@@th6DluR0Ln(6MUeo@qxAif{_3BduHz4yGvC3`>UUiWOnX6&YU@O&Y3f3 z&NN`eaM?y97!t8xUSKp20Z6lkA95Q^<^MSD`eV;=rqi0X&1ilYALizsCWZi5)XeTx zBx~FpS~B&=NgGXJz0I->Qx-_GZiDrw!&o<^6kTvXeU6iRJa+ZU@B7rYkAH`hb z#du{{NFvrmR_hIHg-gHn&rChc)CWx6!_*K|NZ!I!2lE`J>`RfFft1U9lH^3K*E9Qa z7I>Mdil;krVnSByKbS)F?yOd-ZVL91{P`|F zlrj}(>UgH8JgFju{7F%zejdP|_p@AIrvAg!*POlQnPOC#)-0lRGgCBOsA_NXC)IcL z^9BCoMos-}<4C5168|+?vH2%b7Zmsb`qt=1(>M zD1TP*!~INMz?2a8!%W@8yyuu|V(LhA*)^l}8f0`$ZJouiYb~=1TdAq3tp924#jHWC!&KwW$@Xs3Ku)RJ{-t&H6HJsMO|GGnJ!9QsYD6zgU&OdVEuP&W|5&BQelK`IV8k|uY!u1lICG9NP3MUetwe9h=XQ*N3 zge<5nWWXQlpoR_cXHy}e3z`6?N@(!f0{^+u&^uM)%GxIOX8GJD#8&q~== zba|ghxk5?v38<7f7^O8fJKmkN?b-IOg6Mm}{?9fn#efDwtrhY}R--KL)9vMZ>8`(v z_kJv{lY-hVhbl{#$uR}I2n}b?kvMyTMmGi%Reyl%5G7hjRY`a91&|YWsNx9K5kYLs zQap?UX^i8%ohX3w-t5AZt5YSf4PC9A`WoAe#`!23wrk)wDE^2L-jgW2>#hT-!fC&n zlaJFW0#E}0G8*z|}`P-=-RB3O= z+R5|Q^inq5)K-gEH3`#YXsGo8*odXIX=n|@M3*Hmej9WT`Jr=18(T=wB&eY@Hv8L$ zh%-GXrWIBR6YyC&Qx*e|Q@^HBG* zbszKm(O&bjr9b$-HB3r$3F9K+O~dX`d;+>wPw$5Pf&Z@G?gjo^MD*4l8o{|+5Oh)r z#vAP@@W|^zVa;wFyw2=WED0!BI*jInlfW+N0ok}!vL&#d+0-w+20buGxvus#V z?KLKkqy>*OgX+zy?-lB9VNA?x&BeAN%`7( zG*rJK6u%8)P7Wor#^&Z%rc;*_ia(D$af`@jK3*2CGfn5b;!yle`G9CIJ3%d>_$K)Y zI6uZu_y&U23@bI^>obPejzaN&yX`#3?{ll7_&dU$Q4|KDJ zOY?*I(>X7Q;BcH)_zI|!d7=1`Zpr@0P2ZiGNtzJ`3E=7%$Ii5os+Im3N|e)}0x z%54^i#RJ-uL>xv=Z=;PH$j&Ej-gopfCK_ zJu?K;NXNyvP+!s=$701cZAFD~XJ^Q$+zG}KSZcK}7yr$)4u{EO)znX{{#zpb*VN{k zO>3vY(z0s$8(sM&ZA&5d%2rhvf7Dg$mYF4M0eAn;aa#$zwo&@~LGwKhbB*~%tk)B+ z0XZ&K8mD?J9CFH-y&ip7um@31ga;mui(U%h!FGEWZj)gF{vMwbH=(LTFnbukBC$p( zth@tq{u!t;o*G(Eh1*>NLeX6(7)?JyAB(>}9QqkNwL=ZNj;AF-9PjcEPOO)vmQ1|_ z(j_me4!7bqpvYNugW(1pNPMino-JQNS4QKNuv=P;7~FYw@GE={m#sJE%!JW0!Czem zy5CCGxB3$jOobNbaa{IjY&Jfuw0CQD>yt2?b)p^PQnCZSj7p_veBsu7KrJ@@3kq{8 z!A$bGLYE88Ni1OqAiDHQYsy!s?jbaQ>`IIJ5jPW2R0d@)O%2o?9IU~$!NgRzqvkz2dIsEY5eXvs zPclyDT$pbW7w?xS2sfVLd7i!tZc8`M#V8f+KEY^wN)_)V#i_`H)bjI$hDm*}u~pHl z@Fo<)jRsU`QWapbMEkq(Lsfw3Mf7R6!Y{oFV^xK0sqnm40o#SN3deaBj#L%;NQHZt z%@OF>UT;^y?;KPwqi6w*iraCOz1Fh-Ed$ylrvc~omD&P@)J92=ovt^#hkB2ydi|u{ zQC_b+D)s7(>Y-kps)y@*z{jWfp`gW*O4Zx1hkB>0di|x|Q(nFP{(7%tn~^!bKB^u# z9QvE#)x!Z$s=q(=Q15xDzo3hKq~6(HJshZ|>iwpNdbg{3xl(VSSC2+d4=*S7Q13!j zZ(phRDt;)u;9xdYZwH7VbA11+>J5~7fAH$z6g^cBPrB?;PlDAt=NeM)GOr#y08;gC z=%L<|407w7OC!F~e7skWyv-ZmPkN|#y{d=1-Ke(}Kh*f(P?M^6NDuX@RK5MAUaMCR zd$m+O+G#WKvahO#yU6Hoj#m$UZK-;URhU`t72N2>`0}ORXs;f;(^B;&_fYTms@?%o z??A5}9AQ)SPV1rGrK;Y6Qtxg20A6zQTHsc!>)|-7S4O?Bz*mk#Q3*~b9^}bQkZ^Hs zGrY+3Eo5&ZG03&;x1kTgr6;wY)zSlz*fTim1hh=f%ILW?PYP2nZfOfDww#Rs;Ht%x zTu2iHMZWrST}Df1iC`a&J=lP|j=Xt&xoTMK&bV}$N1lILM&q8Vpb~9H)3Z1?aDiKb zv=v=e6e)kCP$}*Pz@-eJ<}f-ovrP~I2F^~cs?!R=@4Zw&hLqlCT@X@lWA z;Fi5ii%+BRY1B77Vn}0fBD+(}JfmV0PpKZ!F#Htw z=B>mmw?K>Nj&DUbtvUF~a9#Ximc24{L8$Dpk1;j%H<>lBL}CxDV-%fG^lNA&JU6v! zUT&qJjt;*WQ8*`{87LsQr~%(@I@=aVd^Rypd?1k0IyV}n&;tD8ZbMC+`Q(xag2FcJ zk1!ULFWJha-Sh+sgzTmc{8@%@n0V2`4&mY(ep>csufZ%d7>-?<)pd>K%qWU~AfV%3 z+{+kN#5ub(-bDmLuWzQxX2!D5D0xxzrBUVCeQ^nN$hzbXd}yU4msn^32QcBBUz{)$ zL}7bt$&20jo5g}{G|fW=%kH4%nt_|=PUmkmX_ix;7wPado{@F}B6=ouilJ86Qs^Xe~dC1JCC76`VcI2^m11Qx>m zeGsSJO{3dI+BSrV$cvww8XYV%TT#}E4KL^5|2J%Jir6sh;w7XDQA#3m@T!G5WXCzZ z^Lt0^jl9(1TvZgmLdO4m{h`T){H{z-{x3%Joov~eQ5v5lWzkoY^p$y!;Zq8U%{9Y-bUql#^DuCM6qdF^#IU`x| zhyBg;PL+~1g_+AqV7j{Fe@8K15awSot-XcHWsA7Tj5%wO=H<)Syl1)4qF-U1J!8p#NRaxKdb^|MqkwHuxlkoLQ)-c~B_GA6D73Qx{j3-7P%mDXZq$ zuzd+Hk~|>zQHQx8d6hxfihYAK1>j77lc8WFq5)(w$ zG_^W~nFRTpAcfbbUBra#g~SQCQUjS(#71no-_ERX&mihfPac4_6ifM#lie+#8)XoJay>rK`e?B>V9?r=4fdA$PYuqvL2L3+kuJpwEA zL@7-XdIK6t?#Hbe%F0w1fi%!(rJY2VsyAh_L~rsg4iv7r1JFslg{XH%BWSLehNm8( zmjv?iNbzc2v~!wOiF!j|7G{>*hXYooz*H`)QAf{;uRyhMncVy}W;4W?E(@fLh!z%q zmV6y~8TR8JCSP@|jywrRhqEUJV0a%;)E^q>A8pLTB&7suax7Pgwu7`B3%J9GiwRB# zAxeEs#~%@$7P3yCK4A!2Kpdc|<7T^r(bNGZ>W;hQ3|F!eLb-S{ zF0Z#tLq4JG1)l^E8Shq$Ul77n@RGq+S$w*yhgg;rBYGx}I9M|uHC0*X<_457D%Z;P zsO3`pkR~a-Qti}TCT$Q<7e*s~1R7CuO0tB2BgZ%G)w9}h$zCFHRIavHAkh5?7$Ht< z*fAL=I(GZ4mGC^yYS=Lq4$F9+Dm3dky1F#%_*JD*^^RKpeof{3oS(Soi)r>-6W8hU zEWCRK6E4mes}V*FhbW1QUEr!G0plbS?6i(ne`?Qz@`S`VGe&&c9O1Gi!W#&SnYTAo|pftwR#LR@@` zT2kshY_^hBY`Fv!YJjVC-Ti7NY3ioQY`oev;Em2Ks(l3STELXnPI?PQ(}iF^Zhb41 zXy$O7xtwmR+@Z2vKU_`h(I}`n0jhqB1ZZ`IUhR`8SAv5$(FOF|ZMz`JW8)Mh>%m z+8{U=a)7waxNQ4WO|w9h(NqtzlyPvZPzs5zb3%!SQ7=;Vq?}C5t`gFfNw#9Q$2r$n zX1}VN9!e}hInfLcN0~$ey4@$Yz|Jku<+`p2CGPe&wF8_fl(?U@%74$6jOGuKrSa#k z-`m=qT;BA`LQ5I2Bv3keH82@UJmvQNXXM4ur_(SWbwY`k@PTIN=6R{6Ly0$8+^HVl z*;v40XrkLHzg_J*Yy1V@Qw66XtXsi&E<6-dpbk$JgGk5?B|b$_du+ipv^&mgY*VU~ z<;>rLzQTz9iDKinw&&Cx7fNK+0X|9{tGr3|FD6Xt4K5)$qi|9g&f6GD^k-q{NuWAa zc227KP-2k!Y7*A!4s_)eyU1VcU{$Pw#mr^?Vx_5K=mpq5oJCQrV!6NAAYUL|`5td6ChAMt{yd}Hv_ zyAX^k8?}8In73;`#EGDzvVC0+Qa~h_owzytGIY^W-+lGHj)%}wJl+*(l}9$#V$K8p zo5`q!xQPBByJJwIpJI$SrYU(oVz0K^KLsD38VJq$fPsU|!$0K~pDfID;tR3P<*w?& z;*KTTzf3ZOQM+Y7qrO8;#4uOju3Yi|N?l}3=w5O9F0?asbjUdyEEOA$wD2AvV@EtI9v_w{NhQ`|c6rjjv+F3i;L@<6WTj=l#TQa>%dG!0 z6DNubP{I%JW(0Adw2X<>gq=OKV5;3aeT5r^9m^M%3mM-;==$(v<-xa;#(xTHN?(rNa8&FsIf_Hx`MsI5n?xexDG!HSB^^W=iT z`>f$jGG_{85moLO2%}u`iRJuO=x@qYFvKP(E3X;1wZY?NRTy!X=Hvm`I6ozS1J)Ss zzZ{LafFazBQMm<&Nw}846&64KdOZbJ*)xKJ$%naU2eX4uNM}y`WR#&%kSMA@%(6!W zama{$=&TN|-qhKm_@#KYp|uv6_Am(dd1?h_7GDa`lGlKid23$1eMlT*2Pn5gNy^wy znJG*F-$ru-cqsj+5P6H1=OidqaPbTV3@lhi<@RvdTgIGQFnMuiCNDt^kdQF2in*}1 z;?Od+a~#tVLUO=T_$$`Nc*`6Ma}v05#%F;x3U9;;4S2(zz5fmmn8a^YB+ zUCi}zwzpnPJRr$i;bCW}S+Ww|=zA{RasbKul2|$M`1yL}l+TmF8O?ke&YgP&0^*Fz z!o-2cy_WqcLXB$xa7p3VYy^oM5xfwsAQZGP5X;7m2|jS!L)UE}cx#juEgG@xqO{?diyeC*Ki|RHFn6p#nhuo0*Q}Q3s4O}|RAi~=U8&Fm_cW7=W z>2V$D5hO=AunG!7?H~3H1=fMDS2-g=k5_K|E@GSqBnUA&=WUL!0;TOikfg)oiMSVC zIt=0$pOU2(>K>kloXUP%%-GODc*9~yiYh^fG)iEND&W%z@^u_pP=2U=D@-mJf~+PG z1=(?)ObF;fdp2S~4QhcY(!e(8P9T-@A#$71?sk-{lv&W%>>dF+>HZRiTINLN#_vOU zHzsx2S_D?$3VVo|G{Dx9cvArJ!ioYY1&yqh6iAly^dzijK&4j<2nArZq=Q8w!662S z1OagT;O(oyvz(izp_%w9)C+?fsJBCm=J!ZIJpuF$7>YQLjaT4c;yom-&49-KC>=@7 zI4jgh0w6Tv$2SlqF$wJnd55P30Z4o^Gl{1#esQ8evylF3ArnR5$}mR)JD#=ZscN*w zpsk9Z6!D5tkR%LtJTkaV0|r$S#9u@-NyO~1Q)zaS!C;Re=%TF(H;as>H*vC;;$0Oo z8NEu=h(|4If4K#k_}L98OQOlN*6 z5pbn^1AiEfFY#&e3%3_}B(KZOEn>M2`GWg>`T7euDz!$a7t||>AmBjWqYL-nWWp=g$*bKJfQ;pI-e*O?WHH+CFWV4ZPGo7LWRCW@@Y|F50p44uM=rS?6A z_X6ICy%dtocM6u*3?fh%%7qa`69=_cV2$eeHFMDN$RGrV#WeC5vVC)j(eylU;L@b# zqL@1hJ`5Kt0fF4LiW257=pAsbEUt;pvw}l#T@q>=IM}is5{F91>hV$OD-7~18-$y3 zSWBS0iEycEBLUHu-vq_Qi9NPd&deV&k+(v$~wQNk^y>~xOJ&#?l_61%af zfrodJgJA<09;ofzGkYAEwf19-!(6)=L&?)anWBb*{gDhCL*nkoH}Y>B;lKG1of=_* zZ-mp`5w67Hc6_!w!bSL{NBBfxgFri?HjSTtOa*HHhX{-cqP%zK>-01hz-hc zkle9KPYiq!Ikpb__w`wURkL<*13VpGilR-r3W^&V7duo$Q(c~1&u8rHbyaXtyKy^u z3=5H;X|;b?90_d2k_)-PRl$=Ee=gD=5!HF@k7`f+0lY}c@mko>Iq?Dc7{J5PYjgL8ID?r45@RKe3Pgt=!bD?PW{OjTC>Cp+>NXGF66QPU(qAaijOf?N2nBbr=0*OEzqKPuAYRLA8 z^LM&s@(3eOCTRneSe&@%muggi>~}H+*AjnM(ze7?W-~{y87df|Xy+tr*7A*PUQSV} z?ClvX^AlMo*C$1rs_7U*yiS%Pw5?R&bz? zd@Se5H5we*X%Ht^trJGa8jD;sl%qvZX;rBrWF3SVToW8AVm~LK>Z2e&VNNhD=l0D6 z=1hVayGgc|d>i)`p=nWK=C5agN`V$%rr}FGEWg5q6O85w{5_7<8I|(qx*jAqckGHP zA;5Fk3-lLE=~x1-U)|-t2y&N^{&GiKLtZrx#zlWDqGUfPQF7mZul>z?vIlO*1o6m+ z=RFY1rj09okJ7+rIdEyR=(%sfb04RDTlC?DXyrcz?bjb2YT;jP{5%LoBA6)HV1|hz zP6LY^<&b5YjQ98;ayX2fh$Es74jNZZ@N8b1kZ1yHld7^Skq2opq17@=4cFre`F?wJ zi1QLK=!i3h^TxRfwTvf>T&KbZBQ~CIZJ&U+m-TqL7Z4;F#5>~1nFfwLLM@k~ycH`o zjjHve#%j|ZY)DDd8HZEcLyTsFVgzQExoA|o<=_a}icw6f1xkS+W5gU6nXzF7@xuu~ zXTNLEIFEFk$=k6z@m7qy$eF+a0}X$b*y?d(8@89pPziT&Lm3Pn?zs_msXsd z*Yb5u&c`)M=2MN%FsXRFb9N&h@2o}-UZ=e*7$I8z@;`csHk6}>hlL2CSA<#`QGsUJ zV3OWHFa}1PC&^htEz<=<@G@RnuP~#IzqZR>2C_!56>6D@Vy5%!BACrP|IBe zAlf$6Do5bIb4B*2cResR{9t=Ho(+($K@5P#-~XR8`p4*9cIHmWZ!`O!lIs6))&Bq- z?#S_3^9%AV9fmXDB6`@|+DCf?V3&1w=!L8#?xLQ>Ytn0=Op z4*VAJQE8$Dg8=E(WEar5fQX{7Gc=(G|EiXyg#&0Fk9KC|&A^hPGqJa%`dK#4h~#uy zS#>hN3k!H!T4Qnw&_b9TX-R=qejuXx3AA!GjGPh+cwDIEFcdOl{q5R85Eqmge2uGo zkh0CPjJul1&dk_AQy!^@a?ErLFK`Jn=Kxb z6OPz%8D%^RaFi~})N1WjPB`t?ziqXKGn=pSH(xDGjEXcjG#CmnttO_1TUI`Fll60S zf*xE%^L%Bq)xI%1V;t|nCP8Ec2`dnNv5cLF&KE?hep86X#wyhEYYrgR-*hI6o zI4GZ6&GJ*-4Y#f^j-`NQT>HH7Q&1t_Tbozd0KlWWa*WxBf=`5D)?-F!)<*1^W|EQO z9fWtXO=o&Be2ve5i7baAX)JU&XLzw0+pn|oG~^)98C$HV;X<#3d@XRl;+K^snRGuM_0!Zd?oT)t%seohDzqd|#p1 zc2*uZO$tOmZD0hTCVFsn^%h&T+FwOK=vQ0J84R@qX5x);XL^>x&!1!pi66k2eHvSd z?#4mg>3tbXhAXr}X^V_LisfoF|CW6tS*nvDA|cyxJ&^5Cke6_MPulbb2PTZe?8V!K%5`>A{+R-+kRLh`wD8t5p znf`z>0FNUHn4)n>w!uJ~lcX4MnTfk$A}))}&R$c$8($a5KFx=(^8mbuuj6zdpd1M3 z3ISf}VZ;~YVu2ahjF;kNKO?bHGJt#)dr)ST>bD?KP4T4^kaue!w+~V(1V}qmW;`wX zMIVq0-Q6V_T-j1Y7iK>oENlkmp5>zRR1eY& z4w`~=aRxejfOOwXNc(0&O2;M*Y2Os2vS|mV1feD|DpzMf1r??f9s=S(@a+p(RS^cu z_a0(b9+P86vCQ(!ZpGb?41-IVOu{ZLh7&Z4op4=+Cwv;?6MKvY3@o*tl z-j@P!hCDfwK#DvWXJT7Id4eM=B~Lp175wt#=a@Fi6U>bWlTo-YB=)^MBndGgvZMSo zquELEUD+J(=RTxGagt}2p9lY{+C9ruo|Y%v1%+^Bo`rtiQ=y<+2&ZiA6q()(S<}mCybUr)ioXCuvnskzPepqhjlcGa z7Q00^(intU!kS1)uxz9846i7Jf@<~2o{IJ{8u#~#R=Y)S=&5L5qj57uQFO)laG*{2 z>BUk`G5XGI3bU+a2g-z6?t`9_JPV&gEe|qTD#^!~JWi5NF?oa}|Hb4%lI&nISCY>% z8Ia_QOm3y!s^xHSuw<7ck79D8BqL0|BFTRmfeg+2o zFS!E?kp?QKdctUdjCw>Vr&+6d_87hOpn~^Ba6__ISK9TU!mRvM!Rl?8mwd(y-Qzgv z@qX|e_-#_Fktf*yfZrYjU{?5nvwWv^U)VZdHJTY-8_%Xd3bsorS7qRK#D2YEF3ZVi z^cD+g=nwsl1+d&Jxx4!wfE}C(>;VAQ_3}eAfQ5jJ-Is2LN(svmVDbsfT;wB83d9$f zDQrnr7qaUDjbImMOiiXbG2xR81pi6~K}!;PgH(r8K_uF@Z|SuPCZ2 z`4trTb+YuGA-`@Qpd!C2D8DKozk;s(%Jx^N@a=~_0ZOnthI&3Nx+~k5eGc?rvh8W1 zS?@r3z+uN|7fwZVcr|u9rlc;$&yt1v3BJY*xv$G)+=l8>qK1yUX{^|A;_XXS}%TNYgs zr1x_ZeZZ4H2PubIrh=a&-vr`AEi;&0E6FA%mrHUUlZzyI2a^jW`Fke+EXfC${GB8p zX7VOU?qIS}k_TdjlGjRdFq2nF@-QZABzY#2L=`$81m~#>(cKVG_1cPp z6Ay^W7bvBqg3)6Ih$*$526d|nlvPsUZ3HuA&*?otSgG@C2y;p-D}W&10Zf{d77EB3 zh4;z%U-BbfziwH~am>eeo?v16r-h;$A#}fxxs)Zn|7;R#u_(;+>XO+HLnbaUL+-pz!B}>i z*x`-lb^N8hqhxa}wBV{kwL#qVqEQLvY z!G~%pgJx9W5P^ol&R`ffnjTGwlR#@Zrhqj7=ZlOl^m3R{Zwu&;bI1Z#y(l zH;<_lk#Y;$ph&qAA3`m6w2Yf0GKedu!Hgm;S!ptoiaL z!stWb^8)l<&CgoG`R(&lm)ZPP{^q|~l&8#^ThNIQ#ouJs%$1H(Vtl)doo3BK!L{mF zuQgK>M>humL{BU!#ElD_XCbh=S$-mRaeC&kz{J|@*)&@y!^NgK7vvz@&_?QlSY6DR z^{z5$TJ{=h&T95(#4ImE#P!s2pGc0_AAGV5m9U=+b0ZqT_VNBb%T$&rL5o7zh_Vpl zOzP$DHdI*_bX!7aEJQcsJqi`Og|HE2q4RnwRN)q?R)z3r>YgoCyM?e3WlM*OeCB;F*fC80Lz3q) z`4>rE%;epYyqwATNWv{2mSxTYBp~)Mj37+LRRC`qm{5O*V9c-y^fGB-9*^>JK48X9 z!7Q9XD3rWA$g71X-_$->Y8>Bl4eW$Bp|0vjYN*`|`uO_29{Yf7emuQ~(mGIMRnIk` zcFanzq0|o4SkQBgKDFoiAW}L9O8=(k(tT_HSF@Q_<7pqD&EQNaDqH}Ev)Mv{C7*~G zY!g^|u*|jq!`~nTuX@MF34KD)M6f7NzrS;gc)Nrsv1Ey?ql+zz-xEf+HR zi6k#!@?A+@!Q?tgu3+*xNv>wHU6L;``IIELF!`_~|IOsRlH4B%N!~8WpE7xaBrj%i zCX(}ikpD|5XbJIlApu9iR-ta7!5;>ZIWDiZ@ZzX*4nn@f#UUm(36WnW;A9X?0eAY~ z57WT>_&tDxnYg-+1NTVzTpm{#%~@Pbo~w&;kPJK2GQ~}EUf~LvvRTszfpaten9ko= zH|)$3FC*t?6A*bJ2hj@dVlG@hs#_jMXA$S>?L0}!3zz>***tE;cO9xIXXEw~_c#>WVgjX5~$k zV^A=$U4R$^An?uNb0hmBJC=J4uis6g2M)AjoD+|*a|f{XX)wv88vb#9Vp9`QCJnlDxIwxIx?$SCHH2fK#qNpeU}e~?n%-^&8TvOD7SE$)uCqdZ~4VWHkcg;8uFThV)` zFx;srcL1Z5$xH3^z&fGVUa^GZg#)jfcxN8gr(iYMj3oQDn)ib}fMaQDUjvJ;GQ{ zo|Sk3KP@0l;ks-&gkv`@XTPknLGYXcW{Y!7`sBd_?T}Hi>4yO7p(iHRv9la+G*Yp% zBFJp|KEe)&pi=uWLGa7|red%Jm{GF~^VcphShgbu%f)afCkBgLbjpE}`h%>>m%c`2#m zdH(Zif-nrLrzUu_~Bq ze63?nKu1_tVOy;>q48j!tp{p(i@mjzv$LN2;$JyXfh8l3Z0Yo{l!%0L?-_8t z!~Uow(FIiN3EN^c{|VkJbVDu1JAqiovFu*%D<2&8c%o=h@&tWYH$KrnwctQO>y6nL zqkiHb6+;)bg(~z8?j{wCid|3u;uw|}Ka3SR z&kpjh5TnGI?mC&%NNV_pqK4O*Q3LDUBZ?Y!ff~jRBQ@ZOSfa0p>z6CeyT9?GfGiTZo`Z z;@hVj*xAup6i<`s@gFG(f2Xdy>QbIWBU|xwk7)G2D6RhWjIbc2fM<`A+A=Ior ziG7glZdPP>B{OPpZNNu%ZP%0j$9jTuLvB4qpJ0Iv60>pW?mE z&44b8R5cnz#(N{xAg!raxC{pbg{!w50fq=U56#!1{#$J)ygyK?9(26luiOoxeUsSoeuB*Ci}I{;6q;q=9P!TBxz* z9%)O+>S{Trjbtg3!ZhQ3v?%j1!yujr!r3BL4k$_PrBx#ooFb9lInj-0cCUzT-`{Ay z23$mnjBS?O1G0++cPa6~Ro?%6Cu{=`3Mt7}a!`)- zB@Las4A>xmejnLZU^PPaWEYQ^o86z`f?XGh@h*`wSRIvw1wtB1Gm)3XaV#}mY%nxX8a^TY<41Gg)Z7%2LlIz(@ayJc)&a3smffeQeI|0OnvOJT|Lk~_ z0&690il7DWbV*#Z&6A-}`Pk-_ICd7cc?yWfrSFb+zPjpJgfUa}OQ?NB9UmnZ;5FnU%_92)x1Q_=Sqp=qkJ`lk<1eM z>;cE~`N6~Si&6|I8-_dCejGRNfn(+fj*mPc6URS7P9~0H$9*S`*Fp{U;kZAHXoBPC zLD2s#96tbmE5Y$S!Xtb*ehtv1aC`z3S>U+izTeKsF7CMR+E*2xTQNnPh4C&e_mOqb z1D^Bw!Nc?UQmh9&|8x&LGe_{eh!{+x<;RheiRUASekY#su#+Fp_rXU>@Vp7+|KGy% zaC9PgW(d1)5&d8VSc(~|lq_i)ui+Q)D=dEMjJ?VK%nfF+F-ebs<;ZbFSUZXTBO0uA+Rfs`?YgG~k z&{eGNgQu0~@Kj&H_MtS>Y&d~ey0GOq6uVAHwZoxB!%UidQv9-@4B;#>{*X(pqShQQ zeS=rym=7E0{gR(R%@Z9oSwK)1rGuKyyw3EzE$}LdKbM~OCi8AdN81YKy_{Z-9x`zX z!PKTNc`x(cPA@l)dBf7%o5s9L((^81UUqt3HS;b{&l}FXe(8Bd%sVwbFCTfD^5m>d zloPtq>q(O9E$KRMU+q-~IRY|g>8HwKG|;P2u%1JxGs>7d<0 zxlJ4^#nt7@v>HRD#&pz>3D=6vo(l>l56piof6xd!zdx^!jMcs%roNdq3Qm&<@>>9T zQHkviG;8cqWKjMVIcNRC78><~zxl~wwLhPoig4GkX*bh+7gZD_dT{T^GHt7RtDR)$fy!SprGMeBF#m{IAYeu~5nX-+cW? zX#KnAD_7?0kv-YW`4xDn z$fR+R!hj$KuDy`e4{Fbx@rlnpLePe#*=RDc%gvSj#nsH}1zkyjP}W%30Cs_BG}=c7 zY8~%Gs8dfqh01c{Xo_5ja@@ePd^k1~yoB5GKGKwbTh1JdvVTiZ6GEjc{NI)wP=b|V z4nOxW7FD-}VgI%eu^d;)Xex*fzX4i6tBg@dV)tg`iv4Ld=!6FEskk$(jzWAI02D5$ zCK)D8?#)F7Q1_Gf#-RCYy(~x;r+aJ{t!t~3!iuYaKO!)Tj+dr=A1SSP1OgRrfHwuy z?!qL1m$f4brhrDv5*`};6AuZBp6;Emz=^@Z;nCS%ecBrDLe<1MsjS+r+dpr?TmMZkc*QIV8sx24u@fB8g9B@s^vEa+W z^NM!HlhKD&_%@hE9NN3&;A$f(C~HpoxfE2|uyYLz>dKbR;}xOe29!@8j=ixN>z!EU zLMqmiv4B*U^MU8u+zC};Ei2GqsD}(o>!GX#iHg(Eb8`}}qJV&tDzHnuNvcp!7M3^# z{NJC=)7^YLhL2wsC_T-QA6u6NQ@16_w3ZTJ=rLt&zPTRu?8! z&K9sZpjU7E5o_op?wS|Wae=qGc&0=T8Jr|p_SfFpnv985he;o1_n=`bZlLYD;8w7E zF-(@66ey13TU$I!n!|ZwBHj4454+)^(qiKA;95)74682l)Z}w`2bG1{3N59Z_^9uOMoP< zM94?j`JbX93-*YoohRnQF$A=KqL`9!4178gs;9szJbg4aKS$}Xb$6#3k&cn3m1UO= z1EAZ4uEi=EGEFH;Um@C>4tAScs^^!CB% z0_OiVV8A^y{)Y3UGu}-*PZ|q?p{_g8$9P?9SkGMdUC&~wOrz|x2h(VpW%N_{C3(k= zU1wLvlh=i}uK++s#7sK@I>i zkWl49I+9Y

WNbaup}Mc>&968tCutV{R4uKjub&F=OKTFgjLPFgiB9AZIi-*?IAw zb7~PFQvP~2Z;3>DHzuvJETNYD0{pOQI@8SDH*!|>a>s0H%Qii81cAO?^o^KQF$v=J zos@YS4EH&2vc5@(?%Qe@H^%DAdzpEC)AQPx zw|{!xBg{KIJ#PW?j!MsKWZv=Vd6Sq|o}PCB@(>G7YdKoDH-Mg8USuM092F7~?qGIl zr%PvvUzMh?im+Xhc$+MpHXCsg0P!gYk1cPrn@Fbc1@94Vg_%@>QD_wLZgF&(DJyS! z85YhSbb?@_4nxv%2RcC$x=Q>OSs6#i;FY?NXbHa*h{T?>3#_d&Rw(Q-SZNoEs&FsH zT!j~jZd8{^+>p7{Wt<5WVQ10=am>KGVR9rj=T%uCFqS8t^uU2ONrkX)9?_}vh(xRR zwJiG>`2OLUzQj`GX z$e5Gz1KD{1`}XZyKavct{0!~)JVeh(X}`;@n$=oJL-W@9@0(OjKEtEjo`hb5c?(5% z!v^-i9uhjWY^gu36FJT3)t&*Y$S0oR^3kvnlbqr5VKiPPl%baI6ki|Gy4C(Z;uqju z!EvSJ=xx--unXX~@x1B5N4ZCcnk87o`0|S^XBe(5Ao|nk_#k1ROe7#fSP{;soG5^4 z#fBXOW(s*oNR*r3F@wzrmV(*So$ zEi50nc=0Bd3-7?Jx+7BXUR#*>MXD~mYUiU`Z0H$@OH;XEZy3LB4ts)u+!L(BT+r9- zYjNAq>pa?4P1uXnTtwR@nchM#07=MnC;sNOO#Gs>(flJ9R<)clphr`MXgw~=hF9;0 zuVpUof1*^J|ER^i90lU!BR&c7Pv(((`11b1JRkP}wv#vL#>Xdmr@D3-!*w!9(wlQl zUczt-2+O(1{boAX?@tjwz#Vo6 zp#NU+gV+}IefcXSVXrY|XTn%&s|G2Ank40Mu4?}TbD`Q}%PC5O&wt~7sh~7_v*!68 zH2XR0g>U$T{#~zYp?^1aTt4*;st$I~O0Sp6maVg=;bS8O_MvpQ1~7}g;UCAND>g;( ze}(MtM63!%+zm4vakM~1e9qlzd*;t%{``C9-*YuVGHUq+e58&=9umI+ku5wEp~Sjr z^jA0v{K`EfPh8{8q$eM0buA?yuJ;O1K8*8y%Sp^m`!-y@`Q(Fg(|~*shXo-M+D#Ho ztR{R+^Z+n3=7^9GP5o6ZXrQUzt8}^!EtX&-f&YTfW$*+%fZL;#P;{pR#qF=|At?R| z8c>4b$)2VhySI$_mZ{cG44}Kcnd-C9hdb5HGSy(+E_ESDY5ND+LY-u_jtSR4;6~WJ zk{y)J&?3OPm0yVL?8UNz#Y7)fZcj*dAW`sF`Md@{yDq27wh<}M9^*Q~+>1?HIUomza123>fmb1{U5^lIEqy-xpofd5Rkyd_Ef^7?CQWXTSvU8aL$;P$-EDmWU ziK)wl;h`266nHlwM!0a_5ZwJXCVA}-ze2HaZjQ~EiehTQ^(5X^XX9up2Zy+2JYdPv z@^UXk@m`GY_Y`MDCVYoQRqDhePF z!Pxv3uncV?YZ>G@m|moAE~ZH_zP5{E8Y60v-ODYhSy^%)NxkR6K2`&oxVCPa$)!XOC3- zU9)#7degI)Y)5}_Dm*^zBM1QF)Ng!wxy)Ofp0|As@|L9Mz0bUr>3M6A_Z@rDNBn!y z&(av&(=VnG3(p}^432WK@lJTUkPL3Z-$V)eCh^TD5sHukO~6gI%`|x%{U^{0HPfNs zrR^&px-yqM%qX;ZaP2Ezt<5ALlOk-BghA!RE7^W(k;6Z-#N?P&O4}MQKdr9yIr7i{Fplf|SY%rvVzb z%U1vsQ?a0X+Fv5={(EUb|{%#~M@rBv7igh>gdMsWR$j6ZRe_8qHTo=a_xZ zuy891#`%wsYjTt>Fg|g9ss&dvmW!|?^Q2+nVy^%d$HRQzauS!Pee11-ECjD`UQo5~ zK!9ov5iP`>_zi0c&vkW2=4b;0`uUxfz$QF_D$5os^|47Zv4pIe<#^Rrp9AoD?axH! zyXOGU`ArNw1o*{sdKG=J84$<;+m#?a^|1Dnz_?FFx|;=owTBf{se<}~5A2Qd*jFfA z?Gt#x+U-cj9)dlf{ln~%Phe^K21|pwtEFE5W*y+xbwmOF@Wg{tdjQlJXl8RTFtpCS zIMp&RG%R>5u09&iP|rF4qLM}M&W>P$O)8b_LYHJXdDG-3fsIfWpBYV8%e3l10{Cc} z_N+A+O7a*~iIYlwqT%yZ$Rkzy^4>xoS2@UC?ZI4!?9^JH$jd_Mto}L78DYucSm-(C zXZ6X2a7m#UQM06(2iSvY5kwZX*D~H5N zFZ*tuR`1ZF2>YeIkVDT16{(f)(XCMmV8od)a07yr%>zivvDYsxY*5? zt!WjrE_buI4QN1XM)PsV_vWwybI6$xhX7~<7>L?8VIK_KgEZs6ktRGXzcUnMj&!ja z4GQwT-S2YA5%!h7`+ZtIqq4MHFqbI zu-i-8_{3VRfyYM2rS79H6=_isKLMSP(UgjNHG|pW=LL)_j|e>kbuD0|EOB3!P`yak z!H9jS>Wg!OHz}v_)xHWy3~3yn@t|8%+qCg55YS*#?f8Pnr_K)cLO3qfjwmE-Ms*>8 z`x{fy-Vr!~Z6$J0&nlnK+syT6hZYmq&AusWspjE!|exMbbI}J5Ny+@Gd zZLgVStEQBIZ(K@n)JKI4s4Un4;N~@;zV=YyP71G{G7$4&m`-J0AX$PsNEKt3Kzn%8 zi!*Y~ZibvPZj1t)c!3}gO(cqOC?fdeh(`l*1@NA@>=BFVx*+0y$iUB)fy+BnM)Ml% zaV_<(gbOx7mb=A-sciZ6Klj10KjGj65RS{y(04%)N7*brnVqtqmgdnkVOb1R;vt-s zJi>RT2wp)wk=T6t4Vcc)0$qo2WtE1y+sz@X&2GGh`~`3NIcLiEVFSXn=Ny3_k=O#x zOO^4|(37efKe={==?vRHw0NOhAV!xksg=A~(jD5mtfKa0sdXy>!(FVC@OocW;FD0a zqYutSve`-Z61zS6&Y97TZT(+3y#eKFJG(}h(H*^~4i7~)o!PPE;BCwLZ$G`eJ1=YM zF~YvX<%u}DhkFD5J*zysydJhE3{uF?>|UKbnNtm>hU37hyu@kqAZg2+h4zkAQ)$`T zlV?FQNIXTX$`VjCc|0<$SbpzB2$fI@PI5VB`O~VqN}x2fJ80sLZVCZq@pH9 z3#ha616>7)xgOahU&r>m%3dkxr-GKafNhsQNPvvy&!k6r$tY1nNMV|cWgmlsOa%XZ zP<8w)%5+xt%Gn?NCVqoLdKBdis*P#rK|>I>5y?zHT@uYkSRV|oTJtXqnoln#`lE$p zU*PC6`R{n+uttvPhw#r?AM+d;mxPh z%*9(U99XGgU*x-H+0pJmT_GM6#uI!M!Dmn}T(-iPvjGJb@t3@el6)9Vm`>9cfV1dx z>2QV7%=dQjMEfz!Me(df+xf+Dw&S-|F0ahs!Xygm$8GRwGaCpvT%V5=rIoY%U@H#7%YK9qd~OPm~$Db zE&35!O&-+^H5XACME0~9OMpIL#UVmC@*;fJj&3f8Ky0O?X zcQRulFxmL=Lc44ij%{wE{%OMPeTri|=ztc%+k+-LO>RTcgAl+Zs-jpPRly$%T-&hstxD0TF1}0T8*xuYtVfEg z>`tW-=x&GI9@#;LkZgLIprh*=wC1fF*n9Xp`2`pvdWD4o%bxwB1T--qVk!NJ+C+uqc? z3x!?amzc+j0)0h}F>e+dnY9BXFth#)39jGr5yU9l-HLYcE}$9}9$%)*NI+;UjMv2k zxr!lF@U^k7)5!0N;uoR8ZUix}3buK0abXsJWBuCwD)B^Nw4>C=r!=VKbXt&y=Ho-ZZw4f z3H^tQSvz?KeyR7&V(=yb?wrcPY;(wp$?z&18JygET-Sjn=(H6lEGnp3N!!ns8i!S6 zofrCP=={)mp|R(h(T}mex*B7>2xpRto-GU~`$q1j;`}2-jk&PwDwoA?O5V#fx0l=nAxD`dM>^{z{!I9{S+G>;Yv0`Q)>{Vu-r8-DZ zYG?^s6&&WZPUzYL2?Ga+86b*CC7gAq>n2D#9NTcOHeL}@4XC<;tBN%ET-x;SFNJvc z$?G$4Qa4WkE|z}0G5_3y zI%A+}F3tlHDuRY^4hnQ|L1$d&Y5ZchDcAgM75_@uZN)OjIzg;=E>kaaGTM}w~)?Xz;HsXpgU+nSLP(| z#Lvs-{~-IsG_D`mC(_o>oq(c#KP?Zo3Cl`Gxn^7~aG6jn7mh3!B?mOC@(~5J3cYCb zo8o79OGa-%tAc+-U#7iG*yV0_j%r*!IfDz0-j-?}7^hT-@vl-#w8ageiJt4NL19f3 zSR{E$@=zp`sveUTq_S}6o||yICeT8K@C=zNF^;gAM32qLk{Hj2!8O0fIO-}(+M?47 zD-=lM)k~si;W@7bB+&pX+bF4{is^?8DZ@ z#t;4WL8*4At4ZV7G2mJ)RtwiUxMjOBkEAFji<6O%d6~ictT5Qep9L<|ER$GhaF_9% zg)SL#jx>X3C3+l`9?CecD}o>+r6^v-=9;z|bI-?j)tNa2%D0GTT8%KzGIRhLuDL7>4J&vKj z+Xbj)Vqu;;hO2#blRXdN1sFKg5M&y7eEz$QS0_a%KkO8`uGjD71%Ju{*d&i@(cE*N8G0 zA4bJ$Ps=mot^tKF%LdG2hnbD)8lvox3$93bW>i_>7HTJs6aOjtxELQBcJ zv1%{-q5A!-kJqDjs`pCGkEtV+s!3tzzJ(hw*Vw>@?fWGcAYKg+>jy99pB8n9a(xi| z+J03iA2$25Q)`XnRT^=w*9%T@`dya2RT!W!5W1z!ZJK{=hwZd> z^V8a$Bs&asn4^sTRl)gQyZ&Zm;85Ap8tZgvD^Kawt^)QuX@bYwRLZxyh)Sy)LtR?> zuy?sKXYpTAL)IPR#iARmQp=f3d#G6+Q~Gom70g(S3}x}(QG8TqW56|-qAYEoUfE!( zEahw7;-^``ej*^2QfDr$r(WTIQ(VOsvEhibkQPsvNsX)^`e{eCaQWj3fM=!Ltt^NB zXe;H^n4|1@y`&OkPq8Qs_kcs`IhXwro}@>ksMCf&9AE_vcoRrujv3-9Ge%2-ibUcmq{NuX@8 zC*aPx%SEdE)c7`pASx*j*p_bm$3_39sw^|C^oz6^{u?TBM_)l7yH`}V?zJgyOF1!K zTboo{J@!7H4RLRX8WTuqLMbqs(np1`lp!Z`R2 z7DoL51z;~!_mP;n_-bi{K1BJ&iVK(DuXx_N?Jl%l1+H4I49w~%J2xnb4h}Pj+u!a5 z?6;!D@ zSlvA@ij`gGcwQ78rt_Qavg3+4a8yxx4o(+ct2XvKYLZCBLL#mfuu}A=+ClaT=+H$z zEg)xW6kjPa;QE;i7~#AWyj!jSWMDaKIiHcPo1XxWEu|){^y@ zPOB67ogTh57^Xc12TPw?_A5%MQNSp_Joe2y-$C7x867?(t9Fv=FC5D)EZGV)@?0Lz z9-b&K1w2XuJ2?<3+J}FDJ#5y;6#XDKklaj=+#`jG=0;93oydG@ zn-<*Q6v2%QR-#vI>-a}+>pryXk;=^6HQFPzPRqGSkr#dFIBR_EN2{8Rg$>9^VPqtZ zDQ0GaCN5G~2{k~C$g0i9er;91H!SoAs0D#nZ2uBgGb5l(Ylg6=gA4fu;mZ6T~Y+JlGYu9;F#R$eUINHUI~a_ON~ zO`W`gc={9I!1+PPd!OUfMr7!p;v3NH_bJNKHne6a?fL>fsuTkuQu zhwlqXT~HmdC6SLoR5l$vWsPhT-~Yk-#68mgWSR;c(vLGOOvtc(ryXb>NZE?{u_k zwaAU8gG39y4vc4BVI1(w#qo`}`f73FKj0l$jHbw&eTWOYYgA2cvB?)vN5qC=&GG6= z%`0YLt%;zSxY^VI5X``9lZSe%r5ra8(Kz1KkxR8|Igqj|_!v=HZr+r$Wkj4NJt9zj zVtkIbGaVT$xRqqy^Ekldan?t@`77Xs6YFcm9N=r^NVk=1d%{M4QFWoJ3YmuO>vEjx zfD_ss-QL$|{wIc|R*b#D3oVZ2f^70XVh=BjVu1Eb?0p&+RzbuW23UIGjTM~VAAl`C zjNDX3C&46SFPA5Rc~_Vfg1D?6zxQ@5C3>elgoQx;dICZa2-5I;UC7=Xif-I)#^7rL zH&TQI&p&l;zF|2t0(dvrXu1q7g*lM~$=;o;#X%-!XE?8YjAq~9UIZ7m>FDkp@u4-s zZ(Eoh1^kpedc@6B99uyo08L zo6&qW8lZEWfYW#qFk*i+WQQ|lcU2RX`Ey3qt7gp(Gw?#VtkY;N6XIIJ@@05gEXVA> zCc3M)G5c#kh-zOr*X=?zqiUU5^F=uDL711{E=$!Z@zrT0PgY%hEp^yWIPjtLb5*KN zs-HdxU*Yw$bB}(^RGm~meQGaJeeBqyk723usXqEm9;U|e)gJ8!Q{_|b_cNNNg5rht zl6)UosCf$~4AVVch>AEC|cVhnQ64JOjeIs_ zTgW*dM1s;g%$jXxZ_0AsDLD+DaCr8)*lORDWA*=1=!5SAp~^b+0|G&n-Db@?vp0@t zrTvIh!Hr?5@(QaoZUgAL7tqHZy_}ob3#g+*Rbek6k3D)hKC>6RPv4cU_UHk|A`IO(j()W#=`n0~TlWq7O`sJkNe_EjbXR{Px)$>rvA<3(0mg*C zQoL#2#DH9&rJTEZ35$RNfh*SF8eh7CB261Knm)yKMjt(b`oc9^*uuVOK@1Zgh3(H> zLcGwgN*Yc7KxH97P{?pH(3}u5RZ(%selZk%w|CeXoMSZN zNn!y$h-Y%+6Ye0N+-)?^-WN3JOo6h5AB(|NxmGl%{5s-{hLNg28D+`b{E|>~N1zsQ z2IYWk5T40Jh+|cKw^(=@-0G-@xD%{5wj`h`_A;6-005T#?})uRiKvgj?52{orjeEu0*T}cQ&iMNeR0!*e~VkG{HJ9bvo7Xgmszi2z>3V42UbNg}5K8&M4%H;J}^v zussaW_ex%l`ta7;Q<^69`h`|Ck&2u`8lvey`Gr1>+auw?CuRUDb(a>h6p!B~WItNK z$=u~mW16ynNj923L^y398F0~I*yDvAks7w40a4<2nZ1=J&|_Oh(;v`K8a2RklJUqU zp_}9;5mvmYQtl|c+<~Fuxp;+2dRq3+0kS}%y|eC${3bNxsgrWwu7$s=sZs{cpayTC_PTz}x% z5MZIv8!Bp4)K#MfrJ7i(i9ux{fxEB^X+^;|Ek00D`C&-#NnjI`>vEB{Xsu7IwY5Gf zwc6ed2nnwREdo|6YE^txS>ppAl>kcq-|v~Zckd>F+Uo!R=cC!V_s*O-bLPyMGiT16 z0UmUZo{E__eGClI{IxL5T^^D(Y$w6v6ep)$qv^|jng?Z?R+BLq=@c*$r|R7JZt&75 z^eLz6#VEt6dL6{Q3se~M5jHr!^6Ln1O?+Qq%I(iNfE6vtjl|dV8qo}W+S(fLz!m5r zAjfy%?VF(@lEYCILQV}347WgbN9<@Xj1uttHa*Eey&l@j>_mh!#pz!+Pe9BeE(hdh zWvtF$)#WfeP>xUty3ki$c}0PLjz=HY5{1#l6*uwOrwvF`);0zm*EGZ;f853aBWzb)12X&tgnF zYsvaKM%7xZ%c`wcwr>igkt%LK#7w}j0G7c*JRHQ8*2SGG%i9fm6HJ|`$l5GiU{vx{ z)s(f-z*}-1=_`5~08s!tKUfZ+H7iJ-t;Dy&R%87o$);Y4ND2vQ2D-wJ3KGsgig?2D z#KF+4SML}wqO4^W zJW1n{KH$>6%>#oZQM?u(;$P<(jg3Sat7l@(08Y^8{|rc(nSt>Ut+!Y2EXYILshT2l z_0Dr!SMNFpvWKmGO3w_pNbM6Ko){y5r#Yw)*WqodazKz40nRN-T27U`!d8LRy9VUJ z@)u~ohDh+cMnYXINPs+7ouU9idz6GlWW21&ieK4RQ&;aQ$Q!_EOI7GjTTAqJkfuK? zJ&M#13t+}sVKi>V#((;!_)=xH!WkAF1sOQ(WORr~33`uvS!BpKt$rpuIgm+_@&c zveSqk4CN9EFn~qUIzK^<%xK@9&Y0(-7M1|6sV<(!+Y=ka=oo#zAZ#CyCIk5o6SsbZRu&Q{6QxjNI1smPK3A=>QphOtEf znLr>{LISJDDn9-lWK6FFN=_X4(zGi&*I{X!euAk4-yMnh-I>F8xlEk~0O_CetHF0o zOjYvTO-$W|B|(~}0i6T*^>U`h@~iT_=GU|M?ofW^jOYBG@4`$K@!cs*J;HZCVCpHR zj$-PsOdZ73N~Yw#k~K{A=DVjCB1N%DAt&u~9%QwXx1y0t`H@GYoqzD%i%h-5ch55Q z3g5LdwS}p_Ae8}fC2Kf@K;Gd;o(ph3VCpueo+N#8S^opX{cXPc2w&T4oG<2&iDB<(%GLs!<<3<`H^!te@<{-Wd#oqY>E}kVd`Ce z+RyorKl#q*{ORrN#E*w{`il2~a4uTdKGpdM1+o2g9G}j0_CtTSpXTgGe4@@D_;jN4 z6Mj40Dd*D>&XfE(*g2e820PdD+mX&ieA(NH;|Gh`OiekgX%X^xudpIWfAAjfYyLL= z{n&0$`+u>-GL9H1&T9WJA~!N;Hvi^gP}Cmc@F(MAhgpYON)9afnf(~}xQXk}H660& z2ZvJMo*&HQnau}mPnp*EAeK-91&&{(t!nR&ho`$Ayoh4sB*guZl597&;s`gu<^eSr zdc4zX-oD}u?)qH3ovSfeu`wVAXlEs9h9RAkrnis#-f-^o-amo&+S5#iS-WwC(qN#>1Ji0VWt0EF^iT?5Oe&bs+e{9e27!p^aHh<1VNWMB3LrjFXL`@#m3GY@P#(p&_*gxA4bh zXgGvueqPsZs{KWEGD~k{M_qR||LH7rm?GV3bwKMs?qX9_1fyLUY&n;8lQFnmsQChl z7djALM3KZT>~GDg_RqOxt+un@1OpVS4Q;gJLICk0p!Todi&!tJk?HRG&Lmr)(wN#& z9?R|I#usWBuZ|3x7|4T~X6FWMVOyP1JMYv;Vwvn@mvjD{u}fw<|yzeHd0H{9ZHg-J4Kp$ktn8S?`!MwQ2YTTBTTuk z3~LjQ-~;3LfGWb1dmaVon2|V;0`B!!!YYi$)4^WCN+lfLCXvJP2*3$w2LQ=|6a@|O zm$r$gWz5>H@P`rn3o4`Cu)mL5n{?2#ZAEEN>l)e+-~=jd)Q z87*cN=c9_K@x)q@9;$WGz&eU;p7w%(fb}BgZkr!Jv29e7^ot~yIyhasGWEKtl5dQUsSRE6Fp0@nMgVX9RbekJAf zG}Mk7(qjZkPWqiV_5Nx5K4#~0Xi=_l3-x(v#~0GHXH<_0N5caWjX7I4##W6Pn(N#o zjlm|)10dBHduV^z(V-i=%4!eo8x3sm_($l4O3j1fyk(^^D^suTxLEm`x^bFST~x;P8degs zcBHArIMalX?deG{eK`&KVJshR(+{W1?(q=J8tv(m_~DQEkbV$^{TBM@oDZ9YV)RF^ zgGg1L=k_Rw)M(KbB~X=*dTLZ?Ul>Gd4_VG1nZP5~&5);W3XKuUq&?z!2(5|PSGyiU zP(UdpCLy4T^)<5LfSt%wElSBW^oh~Oti>OF|4M5Myn~2ZS1Afj4=!mKZjU|Aw|dUE z10L08S@wme7%Cv{Vf5bofC`z*M9ucU3TEt(Hzuj!Vml z4u}I6OUlSd`AbIAgGf+(L7{-D{kQTYt$_!}GPG?rwmL@i%17K70Hy&A7agoK5#0vZ zR%7?-+Hryl#=y{`qz&<@ybFQUl?o}eB|n3Z51Ue8qoJa?7)SZUExu)6Y%I(i<%9YJ zY~dc%n-$a^A-;(rmw~8S8dqjMkXCNsd4Ypi^$2bx!1?PxtDag%X2)J`HTtO(InW%&f(*H?{NkmzZ3mx&W9wFI-gR9X$~7Hf?dQu8|Kb&(ClMSlA0F0i7v3jyO@mm z3J|G1Fv%Yg3|y;N{e=mzGWVig^>9Agak(xruxS;=qj{<)+GB;GDz}YF2&rN!D1Gi$ZTr*(TZ43tps5V zriWofL~S`;k&z#CU4Ze+7-KCQEZ(g4?NmCG9|ERXaTd5>q~Q2I@*sL=QM1UL+t(t` zIP15ACGY3R8MD0nE6;Xc_=bPE2?tprm75Eb$ggGd5rsUtbDY2resViFOU;L$rAY(%c(m- z^wL=3z=(aj96_=Fz+M|`Ej*3|l0PCIXiLaMJ+%hMwkSRY=|9V$0|~?-PaniUKR}A& z;IWdmr{GvH#E9Y>aqf%QPu~f+5!?Q?{5-x2Kj>y2Whs4u+IAt&z(P^fTXXi)cd7h$ zMjC=epnX$xlA;ebVHkHaoU z;}y6X+dTT+#(;C2dbhBs6$$3UyF&L}eI{SreYY)>5B3DYTUZpz@22Z_tpTzI z-!&*7Hi+z5)Ri#pOL&;46jQ-`E$jv+Ta5gSi<8PZn_Yywm~}g`Dv^Vg8Lbs!H*Br0 zFUQhhDkKpzP8N3M)MZN8#HfXJiZG{KCv-5-qsIXW%s7e*P!si{>9P~jOTH=*33S*S zI7(rFSq%xN+CShQxVInpB&-54+j(?h+)-q4-!NKiy|x+^G+R8k(WDT zsxV5cE*F&PhFW+kCxHf1+|d76AMt1D;q_%`)GtN#l17P63h#PpSr+Ef!U4nswFxdE zqF|e_)8wBT;VqE|2u=b5TM5`0H+x}It|HfH>V+?z>(^l9#J>(0x1G?bs8}5CT+i(W zuur`p4QByd3^1k53}g=Q%<60Ha^J|KLfXnm|(pU{(wOmM)Rgjmt6WZUBy7R-;H z)n6zuq~_L4&E%y-4(~cm<@R30I;Hu_YovQ~rLB+dAlYRpCmwNF5jB3)0+>0K_IT)2 zrD3CTlR4!DUU1Y_)(=%g(yqt@Ca0@ zz*_0=UuQU>U-K~N16;xb!!m~2z2z%x!=$eVaB0+k?!k}2yxp6`aWYHV_4f`vD7`+M z%^HivN~t??_u5r&@7Uf3BZh>8#96N!`*JIH){XzMXCF~Ld)R$@@7b7(#U6Y1b=Wq) zanB-HRw{R>)VbH5jc7)GemjXk*FQ9UvUEt}Yf06)qtLk}=-jo?df^TtJA3n7WOV0( z5kZY++&q z-2u5{>9sF?{ho&=8jb&gMnHII4Oav1n7Yhuth`>m>)cihp4B@Cyk1P~_@ROb^Xri&6gKv*8DL*Rj})V~f?s9{_aHEgUiL^OP#>j9+pVxfW{(zAS7 z!zQG1egPbqbx-moh5cN9pUhecg%vUUq{4h9L^z2`Wkk`HnC!e%&V8zZxu!J{ish@i zc`mu9Wk7drTO`vqDjw1{IJy5ALKl~%={6eiK?SO65C#qy5C=xnd5{IX(1tT4u6pJZ zum_EFKzz<_+}26t<(d_FC(XEIuM8-%2@Tok>!~iS_?_G%kVPPYkGQcinWG-gwSwFW zbR)-@D$~>4NqhkE6S$=X0l8GZ>j`f6Tk?!{2dFj^zHce z4cYGC2lv8ut_gs9*Hk&);j?E3|0-$bm6qt;G4e?2-NXVr?&w{I{T z*VX(-cDz@yV;H!xgZ9LZWf`=x*^$+=a&)h{zs9Wixtjl;qjz`K)JN^N71-%X7rd(G zy$hvszjWL=yUR2$^TVG%BW=F|2!J_r6*SVawB zup@X9(f7NIfZu-Vv5K&+j_OYhR*Q;WKt$`u>8Wt*{f3M>RMjqBAndLy_Q}U$)Gg4c z@{=&a1X>DNZ(!(_`G91~OFy>5M~QGJd&3aI6$&Os;yh?0`~<-P});#y5)-Usg-^C>`u^Y-Z%>ai^2jBv`g= zaS1l@WB*{1&f6owc8Q1lo~M(21l>InEFYgalce8({L$^EFyQSK3ov6egH~&93Jv!Z5f#VBC!%*#w7fQaz+Ub#q?M9=?X1#KF0XszBa|yt`jAGRM6%INOS_#f| z^li>N1*aE`Mzc%phr&%Xtfl%}S|ZI7POY@sDzUnGEzH%;luc2bzoDFQFFFNB^=mE~ zK+O9Y^EObYKzde=VXf5qMe#CFF~>H)i0}ByXj+f7v`yZIt+w!-w_r+`&1orQhkG@? zW>l>)r)-pZ4m6q`lambSqe}bifPG!AAcFY>3{cR?6FV&DX8ye|bFO_|V6U0yOJ>-J z>`|<>vdv7Ku_o_8nIJBVu;wr4zXjm`vJaDSC zS_f~#!sC9dgR`6Th6fNtgZLD9M#C>r(jJ9pDZFCv3X)qk!yX7#0T@4#BlqgOf zp|JItJwuUCIdQ*X(ynoXj0cQMT9QIx`+8)tzBVd95GE)!r~Eq_z(K%MjHXN6oCuj! z5MKe`{(jAQrFLDQvV6nLd%|C~;?UMw82!TW6}jn!NU&Pqvla}yTlf%15aMmPAcBS< zeiLSF{0O}&r@J~C*u3I&TvsE51vuf`jDS%o3qP#2%grgMm7-Q>{HL3dZ;Q>g_5vUk zUxTomcx)b2Zfy$N(O@nRith-_OoYE|!#Ft#Q&M`Ao^Jmq{H}4U75s3>doL))+`Nny z+V(M`IBy4z!<&b~s~<@EFw|%h(>V&$8Z5Zdcj;AEvFs&Ic@9D0V2oM55_>m7cRdmCyH{Qv9pDKW zO4H7@tYPj+fXEXv*g{fZBivAam)`Pr&3-r?12McseCGuuXAFDTejI){01+JCTvG;{ z_5Wd{!;=hImrKFuejpdXyy6vPXbKjI1_RB}GBC4DJ*rGfmjV7Lv%ZHixhR7X?JL9E z#Gp6qhvP9Q^Vc5A^fCjRBi5(Q(OjI6S%DKW2q#+z8J8a3g>6V%qiKJVjr}rHU}gG6 zKC6D|g?>TIJbj*J3(B!i}EC!ZC(JizN6@6g9tHlrNjanURS zP{ZSUjTYg(gxQUsUAC6b3SMu(>w|;YGxuSiZ&dKwN4h;rp5{xVsaTLhcQp$z%`E)J zf{H+L&ZIe7*aw`|*W;MJMw}s=`E0U7#P-+psGiJ$6JKSoevoylnDulaZK|h&^Nwa` zl+$k&9RZ(K6xdguLk`%#)vg15)lF=Z$xa7K6i83%qfL$fg7a(o4ZPxE2gS}f%>@ep z)JV8o{GK?Hbs02~SJ)FB9CiR>2FKWW{ct=VBRLngGRkF4j8&}*r5@VtG8{&{(~}{*&vXWS8@Q!AL4aftvHCYtr}Jw&Q{z~I%60N(zI&OePl)q+rVe6? z=NOVE%hF_@e2BHt$0YermUxJ%8H92-Q*YCyWPtB@jv+aaDV}3UE@6v!jv;v-ap5_JxX`89>OvRb{2~zDhCePu|%w(EBS0~Ts&t=Ie{F$7* zlt1Sr7Xh#KpCn%Z!Q00suj0$f-kfhoWq|Zk`4ShIGNzj ze#!a#$xq(SpWewk@guw}8>7p>7C5i*1_M0(Z}FYZtX3Ca)D@V%i!b(l2%Z?(fzGQ+ zJKImjNXPUTMp{gT((zXJKZ~r4VV3yeZy9Y{=SvC*eSj$cwYFz@I@D_ zgtK@9Vf=6Sy7wDE1^veH&rW1(4o~vu|L6E;!vqC(ninl>IuxM)A^zELKvLqA+s!nE z{C^q$Y>mXvR!L?GS8+X+{4B(Xnz zLy0GAB-9y?)?f^sAHG11BgQ3mma-<{Cn#U75Rj4b4Rsby_!c-T@ks(D)d`0!l|!@6 zvv>;+=Toq0XioWM+=Q+eN14 ziGcL&?}wc8p@~MBiHTT5kB65C)~SyWJg&_PnRa-(X+K^6Iy42|(_=j;UsB;v@OPm8 zK@NYk|Jci>)oUwdP3gM!D?KOuHq#nZ6t!nejoO!NqsI`G;goF0#U6g8j1)x>kgru!=*66 zd1&_%luJ-i7jXZ?UYSfQT+D~W(<^3I1#$9oFsZ39yO{3iOO+ReeJi;wW?@Y*xE8)D zgNo8NU_|YfS?nkHclxk{`2^=$^fd)ID=O{8f)|aAB(RdnFUFoq2`Zxf_)a$DMEo(W z*E5I{U;3GMwn=}I%m`~vtTD%cmcW@-91s-R;@hT$<*$l*<(v$-WM%q_8BL1;IEFAX zi7Nc;K!_ji1*rgN@zx#jj$L)N8N?HLIHs>KO8)Rr_?1F02IX*=%v zQiu|f0(2HoAL+Uno}MGl0Y>9iF++KnQXj3dcE+qU&n*yN@FA@zh0a7k#l3xt!Qrur zQ0=~?uA1qO1B^%_AP=|+&*2zIH54-^Fw1c+l(u3ScO@u;j3ff-2~&QtWVY>xk=MD* z%{Nlzi`vgD5?Fb`oDksrAHK&bux)&lhU0n;!TSyQ==(N_Fr^R(KiR2uA%6O`)QrPO zmCX~1CUV&ruHSj#%zsF0v30kWSKcD zctNOHabVreUL|HP#WgznyaLH$KiSGsEmG5GwCK$;D^95!t!m-68<3o(8U$Wr+~(;(@rb74FsmMSc0Yhk(>1U~cDCspDmrd#bXBSY&%3$~f|liP?jPL2=f zUGdvUBKye&uX7|krCsjk6-ZrErS2jTBXz9?EGxyE!*pHmBW z2#I+`A&hx`UVzU@D!#hdR3s%s4l?L>54i8PV2tT^XSwgDXWqfIQ%JwognH_2iHR zQ~6F{XI8+w*J${JNf~L%b!4*9bf|}o9>BysuEcn6oNs|UB{!-X-Uh+-Yea9k7qU`z zpvfoLQv~Wn7xm;*udC@G~=E$ZBWMnC1Tly zZlxZk$S8E%BF$k~kD)3r3`#0~u9@mP9+iWZjjagG0f#(LW;mb%OQUk5OUvYq*xx|= z$~6uct7KeUQ%rmdF#|(WBTaHS$X(@$zhMN@wON{t~*wl=a|IKJRM7Aa871fiGn-0Vi z)JhOTyIEA^7tA2XJC&LAoB*OXpCi?Qw7}c{tNKlqn0)Ag_}c>$RCJY+R&wVtc6G z^*3uE*T|Ht!W1C@Hz_qt93bh5b37Rg(@z=j;Y0+!CM&T5_7@z(h8(~I`us2K9kcx3 zM$?Pv4)khq{m!Eis!dwr7QyH=?P&*MHv{=vbv|}xnf>HO0G;z5FH()~?r+SEKt2IN z&1_N+@E0oW-*uC^TXym1$x9)b>LewKOVCHSSD15z^bn-+`7kB6q~WL6O%KGTyxtkr zlp?cYge$`Imr=Ex90uO02SlT337)!*D&8*EATIh@9p@iawZOp@FN>Px5Dv zriw=t-%lY9-axv@C7viy7)RM-h@k-YGKPMH&lo=GIEX9_Je^(cHSknCjY)7!E|n&m z6+_Er=ozmoXZjns+sB!{1|HD0fvQU@=_VT&N@>93!Lq zvn=Fg1g4XUzbbnD37?w>mZa|o#`QZ(W{!~#8r}_m(iBY2Y41s22XSPP z?KACYF!7jHYi|g2}~UCIrV2xD0warY9)$aYV_43u6Ws`iuZ9tN0ej` zXH>L_NganuBw1q3sH~j;%3FUF@Xbz@zo_x5OgrhUowr6TVV&rIA~I+L5|RxaoDo^^6)?S!dq(#>mdA+0mlz`^Pz9vyw-86O8Wrm0;g_ald)_YDIEf?>AJD#en*>~Lm$#sUg}~0BG1vk$LHx9T z@AONN3-f=1G|4QvIk$umLX4xYAsasOfxZuU4wo{J*^#P#T?c46(}c?h08R>6-&M8 zzNAHjODgAAQxizl zxpYRbozsehxeN#0#SauiW}26Xs%8L`{U#9TEbCsS3bO4`Hg3sUw*h%Tys#moT+2Q~$?Q9#geU?ZjAiZf0s5Q*VHe((f_# z1t$3PKbbn2sTY{~fM3@#^(j-!m^zSOpJM7(;_?VngZOR{Q>A=&2UBeY^X>O-dPVd`zBdb7l4rp{pMd8WoPwTh{qFkcH(g{0qN zrVe51cT8QteD^RlnWD4@BHR9Ak#>zyV^{7T6^UnLaceu0JDZW&`CME`z)|7)~BSG_gw*(&x_a(avNi zM(sJI0PZfpWhk`>830t&X2Ho+ud$q^Y{Jz);pFjbAIEhRi(t|a#^?T0Al)B%B^6Gd zgj_LOf|y4T-aT>tfGyZ#7{CH33S;xFn^~5!<3-FH5!{Wd!st#7Co51EM&knJFzvZ( zB_n3EN0~8kFtrbC9O11T#W%4{2D|iR9QFTRPKaGqh4KRVdKB;pYWQ*0z;t2X%7gw< zI~FpnAqbR(fP$=z01;Zsn13*A+LTk^AZ$kxSmLML=u4phRY{qEJDs|owHuP-uoMQ zglQf?wH3P%UkJKbD!+Y!E>M8SCHS8R8n0e0u zB~KnbrXs)Cm}?U!-lDV!2~iA0kVH~}-54nhq5x$NcdIE2FEbQMq=C`0g@hr3H&_FR zmZnT&)CDFnVh!}CV$q3CM4iCjH`>ag2zb3#YQ(7Hj&K2yq5)NK{sp+sgs1!%YZxw7 z!wHdjcp*Z7TrVb6SWV{QB}_k&_^RBr6U?;us{`2-ZbvaF;SM~(^8i-Yfx#KGdT#5T zdu{7^a?)S7Raz!(^xD(CF=#okMGvrI={ITCbwmt@4!mYvix-(@5l5UDxg0Mmn}-xc zI#;FN@|L$=_dJHa#l|&yXw+lULs9D;D3Jb6;#w1;VFAj>Lgp@n3$UvoQqpt<;JN@^ zR>RHUX^fi6eR6gIM9&2FC*;a;*v{U}D&^#TKMejGr$~D_d{KTv@(QA!3QSTsh)W6P z0B;TD^2y<-T2(51B9*%JWq^}Yq+&SXLtiBmOVsh%*t?4*3ad(AKtRcX6%8-cRKPPC z9<(pi?>wXK7}I!g)3wKl2mJf{L%Ji+Aqd$9x7LOiX1+>AyK_T(KlO_{RA_!UUfXZu zJNp=Ox#=janvPbrTz(V@tF&dbY?W#m!tS-fT}Il5nR+XV$T(5MV5Ec!$Q}mTe}PTH z_(bgVQ_%{cvY+UnH(SPLg|SZzsNp$p(`1a>S^AstmlXjX(aox;U$L>?_x@h*{mv6+ zUSZ-~iWn1KQ?Dmfps#nhMK<9Z{NUZ|5yCg$B8w*2FE%vzZakL(F$Q!Se_^rA)hLQGAwqz!-K>GVu5MsWC< zTTKYsj_t~$XMUfTt(2fI843^%AuqLGL$-oVq%IInUJcaDL_Pajh_ykEy3bPu>>)6Z zuQr-mID~7A@q8gJ!W})2lj|I<9%n*dX!g!m=hmI7>L=Sh>4qaAcd;{Uk@+vp+uH4 z8dqXtMnu{c)}QK=_eZKn2wF(FtxB-MSqObB=<8zhWIrcgivndTFiks(*dW~eTqcM2 zxdINLMg7)P1_0GIF_6D66VBuOj!3_}7kaVel_S}wpjrDi55&a*+`y{1mD3y|#7c&~ z3_(LB;8N^nOq)hJO^Q|ojHdbOGhbly3>R;u0u^XPdL-sUX&Iqtdeq_rnzl!J;Had# zW%LNPjQoU|tBUTGDz&oBPt zgr&hFAFX}ENkeufBN(LmoQrx$^N{c|$O4HmzUw4^iPT0@j2uN}yOrBhh>aqrvO6G=n7qUgPo%02sAzIt9 ziUsO$sSyfEM&s$O3B;(q992MBkjr3eloRHZ=f(u`OHjoG%<7U#?N3?y)3DzZ*)j!^mYs@VT!d8uwUJdtQ=ZF_0H6Dp=GQnCoOVFZ+=A-w8 zAP~O79;uwQs139bZs6Lc75GZ$Fgvsg74;=5mAZ_fHUlQfcCab|{|P9zI`+m1Iyv2F z3NwjzV-QJ510bQjwGusovb$aQ#l{`(A8+Vn#aRpq|3$; z^-3KQA_NF$g$O|>5iM-%N+c`^5rRD2(dL2SHu+AWD6f#yWQ%*@ju_s>vH_nlwvIG$ z%Vfhxpf;;Q4w&e1vid>ohJ(U9V^tX6(Z6Qj_>S{y`o(wP%6RvBBvgl+s$k|enr>qW zBtf-bN@3c=71el5D!*jLH>1$mPh>i@3x#fxJsp=qXq6h?(!}rU5E7^p)hUz?7CeMP zIvx!0@lmK>rjg+3cTA2akhH zi-%d|S~(gF=;dKa9w8fF;UoH8hfG7HvtQwJGj_J9n65V(=`5H28^&e*j@d>-5JIGW z$Kl2;G<^tlGJ7mv5H7Y`zyf`Rv|tQE2a(_sRWYz^#tq+yIOi|kBMZb~Aa$+Euyly% z1T79Sns!U0^iV}73;O{>1OyluBn#_}poHWT0?mNbP+LpL?-EDFj?i#i;(#giV&@7H zC%+*52Fx)y$p}^TA4XGufk~+kHV-hm$`*POS)l zX3Dw4O#FhXE{;R)D@5G_mWx_nnt?U)xCxIWQ88&OO##dD=p^p2MeSC~6BfGjX^wkU z2b@45#ShWI&|vyVHb-m-s1Jh)YKB4q`b_Fit`(t2{k0d{VXe+kNXDX4G731qQbO?N zV$vVA&eP{V3P`7f3GF)-|+ z|DgYb%9qG?P-bq$O0#CFaDsrHEVcV5(4-DSvlB4)##;FTxSLGE@N@fakd8(JJ)j%w zK~rowflW%~6g;^{|QpmX0iCLi;cNUgeJ1Hmvc0rwExWOLS12vRu9;t z&_Kmg>`p~2Y`!7rF2?v&k4w~g_=kFX3HyaPzd_#id<6_H94yJLxoV+WMj3;k=&FCQ zj8FS|LpG4K_Eq{?`UdT@hhCp2CPxXJGCrtC1zSdgdW#O$I8jCcmot?!9`IC~0+B4O+S4c-{)iP= zx;Fv(jc-{J282;~rgA={B*@m$ecISE9D)`y3#@J3xDtKwB?Saq*u8PW={E?745xFa zyApr|;uhUwz^*5r7{3Rea7WSMS+GTA;F@Kj*t12o`VFjHB)xQ94yz@jEOvWMQ2{Zf z68#W?*i-LoQLmXqCjP6(E_d?mL9m6NKwylJD9x3l5}s&xQJRO_kuqar3RimR-fpK# zi=tu=mcj4P!XZABBp9h8y=z!(Mx!p{vZk_Aesr3Ji=$cO}+= zwu_LwN?bi4B+35rmh3MAFGD}Q0u_uDdCBytz#vqgtO~KeyYjxU$N8vU$g)71!Ch=X z$8h18nzB_(qdrHFG}as5`oX=u33-)39VpGnu$joDd29j*TC5Z?ngE-t$M;svItR`2 zYBrY9TPeHtRG*XoQ?2*C>+fxmgf$1V0nl_{fjCMiCo>^e#|Q!q12#XyH4Agz`|y*rs4;=cY?o!ukL5GYld4%G10;DVYwIJ)LMC?!4u>(hO_Ikl`7cRsVe(Z;e#+zqNuC8mM0ypHL@_l01pYi;)z5JWnUW$$hXomQV(& z-h=pfn)h`OA5ZWekLKgy-s2EH7I=>q9|PXw0zQ8BmfNBq^YI<;@q9kMh)3D*Rh7?{ zId-1xXlvgPeSz(^Ed-;!h-8`$A!95>rcJM zr}_93?=gpuBfZByd>raMF5~0T-eWzfae((|@M~Z1@l1a0;4ZN6avwgXy~jlmROwf} z$A|g&ocH)FAD4QM8~OOS_xK7Q@ADq3_;{Q5_#)A$_a0;X`hVWz>-_pN@3EF&&-5N| z-YlUiQ%))j3#CW8Cn3> zD8c{&Ka|wy&;wwx+Woa>$aazNrL7XpU?nC$xLUe5j@YBi5EFsNxKnbBn~z$%@vcam zxyHg0?gkYNVdZyspBWIxjVqVIFZ4EQGZ7n?z(nmoY$0vXj+pg?yyk_A%h{g89sY!+ zRS`=mOqJG`x^?ZNoEVz5s%^*BtK?jA#GZy3*V<*$VFM@Du?-HlJ2icH5eW1Kh-xeD znXTcO^=>zq4R^``8gP_XOcE13Hb;QLIv|AYKrDm1z||+1!u4`@?S-A9?x1>y`}2B7 z9OXBBv+{?by!ek`>jjG&7&3UNq4ScE18OEVQ|xUZ8*bihrL1du9oCOXqKV!__#~qX zhi;h#nRA?fqM(=ePrkgEow2!PZ$(C&%`9d?=U@KJ4Zh6Sc*zL?+9${mt9U}yJjIv6 zw$-HA_zt<4ir&KE_^^JX zjK*83TE$b_oO}er5dfbT{qyrsb{li)(N(X`Ln<{W{X z5leV3O84o-$P5(?cG}q1uvIyDn^VjjE-im9urw`WTi`iWywxf3=eWk73Dv0|wv>XN;3wQoWWuA-`3VXqp&%({8wDte z&8WF+78b4!`P_nq;XdMJ6!uwP2%C&SIgL|6q~cdvxb@qy4h|CdZx?@o%5V>| zYTd)=6{G3rzMNPn6bkMkDsuW*qTstGuK?ll^NM6xTtQ6RbdV3vVOcOc6VQki^7FaOHct@pVt*Mq4t9 z>pU?d(F?%mL_mh=v^`h%82nJY=4Q8)BX^QhhqAmP3}R9Vlq*nT4^39+!NwniWnP9F z1dBo;u_qK9hPGoAa{9Ev2bJ$K=g*B;2a_>B;b5v7yR1!8i|SqdL@v*tAgy5heO63@YQ6V;xO zW`G>2eu1uDgH6}t*=-~mW4csYu3&oCqxzb(m2?ttnqtEMgFTYd{?NC(uX~od42{Yq zott;_CSv>M0_Qy-BMUAw@hBBE)4p9)HtU!2lt`$_eM6lYu@My4X(#fC@l&qvrE@;U z3r^X5Su{2gJwjC1$np8*R9$!DD-J=`9`7)vqvGHc(C94Z=J={vzCbmm<2uVy{liJP zY1lBauR+9{?YQfglQBF`+TL6N zj(DGL>@?=nrAqZt3;j(yQxYtgg$m5U61V2rKue)ynhnL1&{qURFp6W{8x{jFZ9IvjM zk6JtmkEI3dx1VO3UIpg6Oi`VJ38&P+OxN*_;rm?%3bEe{Byf2Q0t8sg2@4EH?4X0e zq0wrK=&d;qP|aYdpYc_uZ-B)r7IReBPD=icbmEdD&C5zyO>(vSO6M|~9DIr-n#o0i z6G-zmEO?0PG%ituJ9=BMI~^6{x+R=rzV-x!89OnOSis!8r&d0|&lM*FpS`v(PA-;{ z`R&SrK>9?a#@LmiK(u^I)QD~|4JUEn+9!xe84#Ll~44CZ~Gp zFsSq|6W zzs>wjdIeBP{tURMw}V{C%bDUzA~~HY-j$rJW9k*8jKeFxWjsV|$noF|4Hs3~a8VWd z1K@WFFlfUZ^p*=e>oyl>50iI%3(~Q#k_JK<|Bnf=1(X@Tw}jKYGcdz^7i}O6x6zdCBgZY#RRnAV}bJ5fZR2UFy5fwK5^L zDvbW3yy)Q88MwS6Xb^MbZI&th1tAcv=S_S5 zoyhBS60d|@iE5Uo>&8VBau=}E`>#B3RRova59`W#5F+U0;}!E97qv$fJNw}YycQ|n zT6a*yt}Am2Hjxic|DoSE2Y-q^NO3B`wM)}Y3$sYzQ|DAv94&vP?iZX^qSpCT zZFca*95~VxMFanc243bVAsi4At-@7ic+LP41!bV-!f}xwaj|N#)E(F`)*5!?*hJ-# zL38lhu@-)#<=Z00$TbkwH5ZMs;j?9}ac)#~8%^J*h_drfLA^#(Z#={TxCjF?7pO55 zSY@hL7pm*Z^H4eJRaK^>%E740`3>Nj70^iZ)Dcfja{hpK;Wc@uA_&JPxa%CEX)Ldo z1oH5O0hO%0-1Pl;o5e4QebCF$NWm^>M}}PxiN((@lNiz!^2>yV01s}?JZ9Y4xE#z@ z6If|2*o>5EE#`~w&fW=q1R-l7^AI~#G-ZgrsD1f1W$XN-yu!Hq811e-%;Aq~zcn-b z)S3Q_d<<`+oKBj0(t`t&;pvR1(A47m$@ovJw2CniEOf zBE2e1FX)f41{OO-fY@?d2;GgQ9fWdO)ENu4$&FD#q;4fX>1)t{Zyz5t{^6t^`X4b( zH;T>Py2I`NFtDmUEXkit|7T8irY}d7GJpTW(1@U*ZvSJSmDkN9%JD}KSJFlLx_P0x zr<3ab9|T}RFj#0YFdgatb zu81?tGu%^RH5?moBG!tiH4F-~D6mGuXXt&6Vqz#bV*=1@MI~Y9c$}{ZCy(YS8}w#_ zi|8g_pLVTah*Xf`u~cC;NH?Q_jvA^49>&08XlRkM3pEhxFMKW7nbm@>pf>?es@^38 z`41OqER%*7$+Splk9yG5rQaNsUEx?>QICv&MKLHUijpju>aiEbqa;|L?JaH z*%P-!D(>K5F`E7;rt0}JHmu6>Ev7wsbFvj#BNex(9P@lRKx{a14h$qy$U)MVd4Mi) zt=PC3Tn{xEu%)#h)2WYRZdgz>ZMJ+90CW`~p6EcsGy~9eBmD|#k9ndPj?>#B74y|F zPfl?glukqcR2}Bk4I)1b6%5tJ80IuDNGA4bpYGM(1L0!U&Y1_Me~tFIJ_D%Q6FXc9 zP4dm&*{oRNpi@A-dGp0sw6Cmq15_OKTIWaP@KGBTovnJb5=_{aZ~dS>tQAT7^pg%?t~5LR1xw1z2(8k(1_{Lc4(kz+?fq z!3Ut``;`_Jby)=W1VN2EOhdBrN-_**bTESshXx?_LlmJ3)sm|XZo_T5qc!xZ(svbx z_iGGcya;B?s)GRo*#IMJm`jr(sQhRejb~v_@Ij*REL6gCuqQkfQydGhdu*@KnC}7_ zE{*bre2EX6?560E!qqoKrAM7BT(P03Bidz;a`GZTMkAwEww%mv-%LRFK-<}%lRu-J z0oAWnkfiaZwSui|3t$HA5nqPoB}7Wc(Ez~JRO38C;!3yWDZoMDNsW+ z3;ZEd5JxQ%(&u;;$?Gg3)iTU&M|vTIR2C*$K2bR?p@br*coHhI2b8Edm*_6v0*DeM zUL$v@%RBxq_sOHb?*XO;$9=udg2>q%eCh&)i~doVx9 zc*}%v@2=zg%@ySZ*)n(_3hzZ<%osg2!5aXF%Ayv8F@z|nWtTKjOT=yml z8AkyTLp*7?y9;pI3S5ae-Uaw}PmH3G-T(l^@)Z{lnnkq}#G8upG3zVQ7hP@78*tIY zFs!V1`fhp$7r#qD_-tOOuw#(y#pw1J?V<`0U(Qhda=<(O?;UG3W7P5C4rM6w=L<)~;o38@>|ZABUyR;ElLI!F>`M!r-?_vw6HBO8N6K*nDerc29wm0=zohlpm^+v} zZ(oz|EaBUVN0lSUet2sp5?njP5@%OOr{oP7mxz|b(9~+SZOMxaZmSx><9MtZ1R2gFA!n-;LY$4?vJiLj zO#6y5=OcNIfFsmKoKIcIvjuWot@Up#C^LKE@^EVy;w4=_!s%eHiX{qr-tDBZ|1z%} z%12sWsG997Le9QRNCDJvynM(TOneGNpxnZi+gFr0hq-zBN}eHz4tXQ?-yrfkoulwg z?r^2`ln-*<+Z*IkYe#wFLzFOX*}%ssSfNkjXhEnpsskXvyyw2a_xO%Zqu~jHw$>vT z<1iw8!?47@wB%rlr8ycKZTjqe1B3|gvxOmJx(rn5>SP-+GX(g0Y z<68V669HhS#CrU1NXM+QaB6svuOrsfe32~#J4m2$A0?5K9)}0o=-IAkLDFdX#@Zr> zDVcC+?c{`+wPTb9#2kl50+i7n0UNn*mZVZ3o0GhuME1;{RYP6b-(%LLYB`{`J#R<( z7`9{~E*mYRmCEhVYDHu=5gBfq>ba%|7&Fge`S$TH{<-KE;@{t4D$T7H04259L@dT% z(g0UxF1CqS{_WF-=a4tMu`8GL!@Kn7RB^?OB~l5UQ6iFDLF^p3RW_4X;Sy5f3}%>%3Y>93 zBfOkMf@~s@W?T&OIY&FMAWDp{HZ5G~ITV39*Yq{x?{&~YK@I=2gU(d8rb3F<{XiE( zW~g|G3Ir1|7#bXSrL=i%?NJU>?rmF~R;)KGt=(Mu^Aa#&=nRP~(L2^BB*dzWr(0Eq zcV`|RwJr%dR|90U{Lg~4gcV}NNrhQR_eL{@M>{#5|r0vVgL@J|? zn}AYnp~D|nU-b4X+D{dIOops%b91)e2ia9kI>nh&_KA$TB>%K?=3O zSB9xfcMkW=JIbEo*G#f~Wm*9boD8kxW7#h<11p@9KsP0w)$T&u2YHJ2xO0kqKO6pC>2TEA$=9ZXE&Z{q~b3Q`cE<$O;;h8 zyASUaAe*-aJyXgn+r|`3)T&+557^Zi7)&n5@jxM)9us5YmBj@G4&F-N9}8faA;CWB z*04@0t76Dtqtd*Er_288H{35%+pEL<`>S(4t4^isCbC+H}%82An|4vh;`WNF)Br{J<81X$oG zq6-){>a>gN z7CKS@E^p|e57!;223NSLI#%z-?%;ItPdFu4k=+CMtJ<#n$8D=nieswjDI~(Fydw35 zUf+4l5G@+$B1e^yN_vSgksPIcm2o=`EEl zSCz#YKZ+Pt+F;Gbvd(NV^(VlJscD1p@VK%+6)p0$f+jgO;B^HPhU%_u$Vj6k^1@%` zLI4$auyiS4eK+xH9Y9ttakC)-{~bx(sTOMEL-2^3ZrXpI%#PpzBJ6yF7DPD!det7( z!XFt$rZpgHrSu?bA1Al>$%uhtoV#UEQ-n!PN!^$|bt*2O*k7|GMQj zVdEV~?cU{dHD?tu^$klNcqugL>A<~&60V&>F>7~B`MJFViqFsNx9KfBWZ{X@LOHl2 zQdBL8IC?&gfLRYflQPKk^$h%E2pC*}kkNRh+mBhtcJhh_p{$HU-~FF`(Y}VFdeS(v zS0GT1&Oj-~=j1=Jc`xP~qH**dKw->vg~KyFAS6}=5JAFT!wKPsfFR%$MhIE|70gx6 zD8b|{UlRqvMLi(MGd-MWA;+KuTpMgT4IuF!oAPO_ViARw(bSJDk#IQQjff9BHV3hw zkW_d;vgkMyb~B2#nsavGr=DV{*l7A1`CzYK+;Ss;YG*W~iJZ=+!0?r4kS4T(O>Q|9 zNA7Vb{#Im7b9+ElpfXaMU@KEOL4022hbs_z+ zYhW6#@k2C&mZRWB<(j*J>2eeoIo1=V3cbESk91E@1*fDc1L_V1E+kw2j?!@Yqqb-? z%|>+^D>bV}ts%IIN4u}+fak@o+vA@+S{QVu$@&UYQ zq*u_63rTUxV;@J6L(v~HhUwD|c2{KQ1X*S@o&Xfu%i*pjZ2^~I2MFU2-!#;~-GIt@ z#^}oI+h9tk>lE<8x`w<7yF7}4JAZ>RF!{BDlN4uO1IWTA(={4d?QZ!yQ{j z(-u527YwO2;No7;IMJyKOtr~T_mCbr*lA*OHHTvVEQ%wM2=s#NzW&4r%8ghPgEIcw ze=3}!?w8WwHxu=ETfGKvG>!1Y8tte(Rq-zr>8T2`6>$#1C0KZexRt;MK!&WGw*CUA zUD`+M+v)11p_CM8Ep$wdGBT5R6tgWype<-Xc0hm<0rW5c2@|m_ES2D&Vj)!PD(_;C zSpX(?lPe}t6#zaf&=x}sGy(tyu!$kQ#YupX9E5hDTB??rg}>4GBUI_*8g3^MZ(*IV zwTeJfeTEYWw#3Doc_wRWKzVcdXDiOXuu{c8W297ue~hN3kR9?}%4=UX;g@T>^25~X_TQ;O~O$#7o=pOVro7wQI9n-zaj;%h(# zIC508^*+dXK~^WAL7u57?Fmf9nBBOh^rQA+&%o7$Q-qp%HL^W3$!`JDC3c4Ed_2d) zH-u0u4G>m&l#PhDuJu?Y28otomEj}|+MrmOLSI?O!7a}BIO(NwmjFV`a@cWQrvlc1 zBb3mEs(av_uOt$YJElcuEE62s{)SFc;%=RYl=Jn9QRv8#WGYuyxno7Jq8S)S5Q}Gt zMIrW^d#KXtUgdgKB|Ot~m1qAKRZhcd0#&}sD%T;pS`Sqo(7npnRh2J#RlXyF&~4>( zm&ng>T>6{p4oVqb7@6+_P_jDMW4-qwMiOZX7sIG#bH(12CEIT@rx3-~dB`JWgNBB}#00i!1o6$Av$cQABFpYJ9$?CD!f9*3Yl?cTq%Uc?!w zLKLdqHb{4?OP_@i#6W5d0cXlkkn=UBJ++ln?{w!@a;Bw@Zl!YfgNEUaveMYIirGQIh5UPI>V8{|V z1|y7+6qM)_k%(VU71hhvfyzlv28JsJF)4@)e_!80sKj>}07K3x0~!M?LqfKU;7f*E z=D9`USkN*?<>Qz!v7D|pnieqUk0mG7lcst%uMm@Gt`W$U=wKvEYbVoH8f^qbQL@G* zh7{}j&B~&KKaL(hq!=;aV@BnNjW5Iu^Fy3S4E$TkwN#%grG9l)7IlO`%o>j+ZrZfy zAg!V&6I0d3UeZQ%Ec@RjHRAhZ`qQ+}UQ7D|2YkskhdVTp)Tq#GRHKMWV1=w{R9Q6e zahFNyK?IyttUv2oMIT$yXS${jA`49y0SMuf(MK@jcOXzU353W+yAhbk)i=q1jJZYa z3O0f~7$ORy!4Pr=F?mG`N)Y)eS`dOoBd?(SP^mJKTCGN}5HnR@e{1iY(@>lr!Bdzu z+=frn)4W>&s6eg7n!|OeAmf~Xlx}w_@HpB6o>CD3U8954DQf|B&}I>^Pj`UMzVij& zf&GhyFKj1_nl4Lc^vKshruK*>{LvQK_aoMY2$ZG_HC3gZ>D$q2CyYN_JFkh^SG#NH z&#|9@45jOEX2M%gs%Gk*%^YmGu?Q~8<3KV!`C)LEIGX@8ITCt$*jaEA^j<2JWRrbc zF+g|?+Z)-?u5wr4gjTaZ-K^)VVxRif-{zfMd=HOWGlNSG1{|)!vB8?(I2|=a5ZGT- zS#1{G7hN1lG!)H3|HOEw34YNcadAN8SJ=82M-UTVIx@baPc761!1h|9m+#;O**A|_ z3Idz(T$|g3sI}AI3e$@DTM=Fk^dYoLfQj-UC+6uR@aR<|m7;p1k*>?+_mUVbHy6Xd zMNn80K|>*h(Lg(frN+D>rNo>lx?=N2Y)&jW3t7fk(PEeztDHy$0uQ6D2w{yZ5riKi z1(y7jbWi+zE%L*t8;Dda)w!ORT#8OD@1PzKi55l#VJMo#2C#)VN%~7b0VhD`C} zQ6*Hi8BM&reT+Q}SHFS6>WZ22?MBlkypABqJxOF*&ml~x5e=vSp{iPT2nDH$Y9kf6 z(pe}wFb_?D%we%Lc_)GQ8uXWbzAyE|a&v0>@W3j(KsjkaPJsY`hIr_sLXS!NpA!i`6RzFo1&^HQtE%8j76TX`oI2G+ieo zx60VP3D1e@CoNANhn7&@%nCnq&Jl`%uTpY=!$Gd92dilOZIkXAQKJgil0bsU-cQW4 zkfSv&fA87_}ZM4VwTK& zj-yrWKbF=(K(3d533aDQTGY5aC}@y<(4L5PcsUygQNx}JGm{-iRF?}xX$1Y? zUJ1l-%L(K58CBb;iiWxfTO6%qMV&CNVVIDdw(y>)<)mA}5@7%_QU0vabT7t>N8<%} zkP*j`9*S5mQraZsUeriny%~5O_l62HwvSkHqf5l}W zk5uuZfvpkv??DCxqZNz%6dagAfK9BxD%Vt(e;NxRJ#p1WsKT6+q*yNyqP`=O#k3-& zp?TztBpNA_GE`;m?o^#DTvNtB67U z(_;p$14VuZ7=cufglP)0fqV;aAF#XRjdz5IyyHPkHU1Xa?;(>| zw?B+zs*%2p>O~_rz*7PB@Z-D|dTpk{`RX}bAQG25;QuE)hG_^9iLqC8S^z<7W(?GR zP}?_KbGRUOkV)BE3QAvSY<127Fe)-YGJgfz{HC#R1=ok~swI$zqEw@O0Qv$3OwFt% zy$e$PJL!Lz1sJbkHv0b>MAuRMPv@)<@TxWRT31>0+fP$HkL4|5rs&hD(&=s>#y$Cx zAudwQe&U`HU)9~4EQuLAXBq#rK;wt7s0tl}+GTYK(kPt}+wfFn$O}{8wcvGK#A;;M z;SKwa|58=D3#;;=BBZKlP0sQ9s}@wmmF4sci+8-Gk2V)LFjMC&;~%}at_qc^j$yrG z-V*7cP~aKInDr332M&Q5*av4|D}MC2L1H0haf8Suj~UqJiK;?`odh$eI^F7chWRbc z3!tU;CwLr8V6{ngnspTB5R@l>!?r(6q45QPkX7#YFvuP$epWFW zU&F9qc_|x1ps$8?c;n2321y`~DIi%Z<|-IYvVq*eB2OSI<9YhNxnNSz@6qvwop%jMCu`3O0?hE5`cy74O*{SA4 zQ!S{rziKVuoY;cC)pMfALUd2f2-iS%Vy|PLu`hYfPYRk9_d0lIG~I&?BT|)p zgLuku`ZG&Kqxv*Q%F1f6^vlK_6Fu^%*X7@AVa={-I>npDH&s< zRg5thP%cx3)za7C+yQIzsjGLupje;><>=54Pz|*(nvEC(x$Qc5CDQR-oh#MT5K7hz zfMG0qLXTQE!4+psLGnic603Mx5kH20iKuJPlm8EM-vS?1as8h_)S#(%si^o~Y^?ZB zlxkv7vJl`dZUhx;XnoN7!WI=Z58nirC0y6FTCLjuudTMWzuK42Uv+O(NFX7ART1CP zD)=gEP_a}AqU8Vmo|(CO?`9KF=ddR9=P0| zRun!G1-feXDy9wKjzfuPmE5PUbJEailWU~y!`eI6Y&g6ARg`1I0VwA+TH>ONg&;PdD=BD+z3n?_jCE7^*Y4k z6eXjXUjdR5Q-p&qrW+T5`xo}aQa`S64@C5|C}#Cl*7E6$B0_vTV_xa``xQ?UMyr0ejP1~piU{yq?Yf7HP&kDipT z9B-y^k5?G%iCC)Xs3ro>{)N<*+fw@Z(HAu;tz`lk%2kD|4Ss-4DQcmWqtJ?Ph{=YL zr&$FJ2w*>z7^$N8?&=fh+lDa(WVr~hP=3MRfCR(@F{7p{U9!NE9mn3b?!7z$`S&45 zW*JCD8d1H~Nmz_h95+oO}LEOz0?%{D~j_~eav~jVH~a{9^_t)cTwjb zxRJQ=n}Uh77jwEZ^Ht$vp|u1d43l|>>d1ow{)qBC72F2y9c&_X);ezB&nGR(-8_XK zSyFT2xZf~ zvL=EEC4>S|rUhXLK&!O+s3?MYe+D{!B5lZ=51+f?0R%Y6VHlUk`#AEr7~T_vz}Poo z)diDpvGA#KM*YnPNIdEkCg|om*}8@-)iMxyeAod@1xuN?o@!%fMEzQcX28mPfEBOE zmLkw#s3#*yshd^C{+T?Lc1wu;j#YkW&AU`rDbqcQw;>l(P3iRXA?Oer#W{r^;wvT; zwF9M}m6~TOvgL-GXIwn%awoe-)p>drc}WX8)_T0?u+fKD ziOI0NfSum7q-rE5OlkcbAZSaT&?!@tvL8K#DYRi%u2vgVXJZqB&!Dr`V&{*M4s>rH z*3JOXW@3|AX5GrsPX7RZB2O)b=_)q_VY_uC7!dhLu5Z{GTX-Y885*Q72_iZ~;#!3S z{4hAZt=$U~vg+G6QZK@Bui`AQnT)R4=gTlb)S`v!^!5WTaEJAxhf-7_sS(D?1s5y+ zxwIMBSgD!4>=Eh_ILtdq;c2x@k(x6RD#2^sI27tV7)$9ZPB+Thj3EMu$gc$QYM)mE zJb#6RD2h#Cm*E~?AS@lePs37R^m=eY_@yBIC&Schm+FF?QuA-ZInPe>xEEtM=4uAe zY=1Q+tWHMMhh1`h8Jv|w@MA%cYY*~1H$$m#d^p~y15+e8#;*Fgn#8L}Udo8^))p4+ zlUXgjp#DjUh})GLtd_Shz`R{_hSl;Wzb0|(DwG^F$goO%AM9;X&*MIF1X1gOa02H( z+~>`3??@;ceyaWpZ`(;pmdj>@%>{?crD1Hs+9|o#6d0($F4dXu$!k%8@B-UOm33k8 zuu5n-mbx_T&PzgH8B4Yw8y)zX-a{iKh*k% z8zBXmEtrxq_{Id3{z(dR5RkOob%|fmslnEqghAASn35s+b{!FiAbt*nkk*mdpG+fO zxeua)neotx?rRvIOclSq%WviU*3EB+^4n0BJAmKz; z1697uYKnDndlc&KIRBXBOXSHyc*wbo;xacUUnY+z%>a(@e()pfG1JN7;r%!Oh{*{h z=7Sfl#wAdN_C>2inLb}M&v*G#2W!unKLea{Hgl`H1!NVDhf8KA&#!f)H=w!JDTuTs zYJUMv;;HhT6Use6)^M+apt6VUgqp3OA_Qh)_=#<(ZY9n}X$=BP#R7?pcMXWPydY%# z7|wNG?U4l}iGZ;V5j2+c52HF4#`CD8kx^dPiQ&I_)xFFoRHwOguo65_D|N%I&?LQH zA71hRV1a)q4dMboPb2<{pPYhoL+_Dy?50nP9F95;#xI)2@ zjZEb*FkEy!yU)WeItQ#8hx}ahEM_G&io^|7;ypzTM{){*Mw3*oN>}{el*3F-q{Xu> zyC>T8m>9m9cxzUHdoSo}y%6=;f_;w~wxlcu5OmWy<1lEhpAqHC7p#^KG1H~*!LMlL z%diCSD|-Nz^B)^;ZH2*07a{@_Cpjf5O)Q+2B;Nf*Lhv%E1o8L>AZ9k=&)2!XEs(EA z?*}lLG`qL9AJ_odfcarkQ;ZMCoPQ!Sg_<^2bvJ?BqVk1swb*CP`twZQ4;d@?^Yor7 z{dtV5XsA+St{r;g!z0j6z@ewM(QYVKNjRiQRW*-C4>}cr))@0kkw_MRte-C83{;Ew zJvD<=Q={mxzw|LEF)2Cf1UrS?BM6IALUjO&bk&@oT&u^U2&4bht3gs*MNH0rL7aR} zNm(?ho+zgtPtf`Ehkt$lUVI%4VZGn!+v`3JC}9rghnd6eYx7$=dY*x2Mec7gd)5Bkrg+cbhO;q7*rmA;Qm&*Li^j9jzDQ)&aYu+A zYr-^Wc!X2bBT6@*KJ{^H?>E5csDB~qXSf_vu;~-=U|+j+*jC~+5Sk(>CdQ4VhR?*X zTHb?hHD*QvZ~K@T9VkHMiH3Qs3>mtVF@X{7u2x79Vd6Rq^;`ddCAbnpO*~`=rbbe? z|LN;=N?2veG*?+kh6Fu#bJ0*S@C;nmFAqP!r?E0vKB_oX#sEj`W zVff(rVJ<7A4<0hB?N4A{S;On3w4)D1taQ=r!j%Cwo_DY#1ywp3=d^~f(q#@(_y~~ zWP6JMOmbM$+nm7U5WuR9gU*oq4k|F9RwOmu=@dCO-dFWt`6-Q4Z<+ou9`ub z>Ds__DoPui6Ltfit)_>otioRr3Frc%9&fClsl*drhl z{V0@R7{w~e73H2QX9x>YP}~TIT05>p3eVZpeaD(HSB{vosjy&F^_5q4ZVo|Vp!9}w zmv?TclbV@tf_vs{dZ=#280)6r3n(bI^b`EnU599JoX;K~z6~Afc;^#1m>{pUIjYG@ zknuV<*9mYUfmO>35+op6G8fp4fq^lQ%V4U2)wKiTHuJ1=!`Umkzh}3v9aTR~;CFUU zlL=GW(FnH>+y+x~b#6LKQDbwRRF}3koV!BQ70K9!0N87aJ2Phqp+q(QlLH%2jr$6p zsukErc-u!cZh|@Ht-wA-32z1V7T#z@sZ<=+VZ#FJu*|Mx+M{<&yiY!U-E$fF)#XQ) zU$fap5%-hJuNUf-tWswIe$~5+lGl-oS!91^x@|wd8V+sKm&9Te!%V0!+fH2prTYYR z?n#?RWX3e{Ha4&{v`Y2KSDurW0B)@GB(LU~Kv(C}#DwYN%JYjmKl#|)hyWC<#5Dj; zuM(ygBal0E>vCf}O=H3A6djBrlpw7n)ByAKuF zCpzQ8?hOX*XmTOjj#l+3>A z5bzsIhPpy;2>#8e)$vZ|;1?+PXF~A3n*sz2a({*!=wB&6oZ0^#*uT<&reT}$!|-On zzj6Yw&l<{Gb+YJN`f^+>n@?-=Tr1D8CEwULrHsw95^wqlHeI@&V84zMo?xGjH+q!& zajjg965AOsP?1lb2Q3$x@x#z8$DYlVXNDYoC408Qw_l7AfVx~IqtNm8HPe(n-E{f> zrJb9)mvv_J8|YGa?w3N?N1PPidtA8b8Z{;K9LD`2#rQaek2IUW8;WHZE`M6nXRbkG zC8gRlG_jY%DFU1dPTB(TYdZI&_waG$rI?GBc5a@w0-u6gXE&yg4QID?*QW1*bYSj7 z%1)Ws;%JeLtuXxUx4EqZ?H;tdRJ6xlW{Sh~whZ6loSTLY$i#3PDemJPtA(*6hJWtH z+dlj=9R)o8`4vid{4+tSik8q5!=_ho*3PdtW}(P-#+&5hp9Mez^8r7y{PX|Wd@zOc z!IRM4p1#}ybo0yyoC|Ulmdpp_8O{mYFdxi&CU;!@^Fa!42c8e^M2YR54-Nv5ZJiIK zV=^fSJL>sBW`J)K3}*n|&FCIQ%s5T>=7ad^!J_`vOc3uWtUoc{GpPP@tXr+bU&J`% zgpp=u4=q5A0K*Bw6Cgc7bYB9w$tnB&e#&a0<}Kfu^MISK$uZWqaf+;7GH~@@p*n0j z5qQa~?*l{SG8xr@v_Q;JsDGbUXWW|B zL-XZDFEqM*D{uS0>{cuwtjxij*mj7$YD+Rgul-o^EC}u8IPS91PMxbF9s0!yi=Pqc zDALk*Zsrz>S{~>$op$9jNHXYr5lzhwr%y#0rs>?XR&CLxPs0O!nXSG64p|1H&R8{8 zP%_GRVZsnG0AZH5N&5 z$A<5bUaf8XcADQZ_n=Yp>NfStnrCCOO7mCu^{`Q3LmC!jFb16HW6kagk{H0*fkeSE z=S9X8E)pm1SeOlP4hjd0!7o1SwVJEnaGOD^%upUp}` zKoVr2r)oRx=ohScyf28m=h)~!8W%@B3qSA8ALCgbouLx&8=dhkJoeNXD8?Ed{-L5^IVRwj^K*^v!=C|0D3)R@y6s zZ`VC;Tup^sjF+kAidixGa22oS=(MbO~I!IgYl5%R4u{ z0_7$$%=;%GA+R43XcYDXoYbDrI=dj3t(T=zBb08}HCj{+pOXaEm29c_R~crbz`wBK zdPCL~x3Z^!b%k=pDu>h0@V3twu7&RN))l`%32zKll8WHEqA0ko;KFLh%-=XqlrL)H zDIf$X;D;GOpA>x9eX{I~Q2BR=ZmdlqI;PJOmHuRGL3%^S8|Ub98Y&(q|CS4eq^Oiz zCy$dgWG5VI1de@Z!VVyzMl`GD1*(5|8vaaS>fH2kn+(VwpUWK(I@66%J%YD=24o); z@CGD}65fFHVyN`84$1Xs(!G*19*mC{h8AK7)^BVJ)>h(QfZg%VHM=d{m480EQx zs?N=eR^dvo^KpylC8sPagUXkgz`AKM8#l8A%tvdU>@*yD)d4suf-gNY` z^nvJtb@L7UsjC>n@&zk?B%1Z$#t&o%Q>TW~-!f$L`aW3tzEG6<;dqPqDhro#z#@7` zDfPE8yLHv=V?v)cM)}&P&DX{rx()8Gq|foUu}P*UX~SlWJpVP@&M32s z1|Q`Mof{Ulf%<1I!j4OED02mXsVVCzRNf)>c10{X8T(-f`@@z|>bs%zi(Vg-4(To# zA07a1QN$#suETvW>?TiJ-@%8;+l9WXr0=6oq*Z+*Orm|!i_53j3yfVH6DQ{pxcawn ziQWEDQR1^34^?^XoFhx)TM8S>8C>?A=OHC>CaS2kacY`ByN}=liQ__T;cMNG`m4L8kP?wk#zP_{Q$85XJyuK~q=dxr5?Wl^UdmWFb%JPTJn;kF_@+D; zwLo(fo-TwFD$r`)>fVq0fg$IEUYuv|PSqS;=)4^7!6M^H5kc6wVVb1FBNQhnya{1a zhS7TnCwJa-K8QGfqaO8jRFKptE(a8%ha0~UO>(D`>E1qnQy=~s%W$iYn*arN?pIQF8SlV6Ncukt${QSj(XX%^q@ayo`R=7(7_7r#h zkDn2~26u^fRCAZ~JyYC=yX5&m+;zZ3w<-S0^x~wk;;&~1<}Xqv%U_v@^U^l)*W1Eh zA8aRo<&E!n3>d-M;D@m`{Ptq^%z=!>f#W+GFnz)yoo4zZ?F;)Wnh9*#`0WT|=J|~i z&&+#@2nNhNwTGb0yv2Ci$EqmDka||da+L69*1hpYTNR%BILE9IGjF@)IiG#^0Wd+d z1V0SLqfq(Ee^UNohMp@$^nOe{&qUWYUXGEjExm@ZJ{vuhJrE}r(!bI8R_!`%EBdW& zn2EPufZ>#5k;?EFc)P6d;NeJQUkmYZ7(6nWpyE=RS61RxfU$1oCDJhYxdkU@R!{r> zP~H)7<5Ihj8}!(ipNh~ZtEB)#uSygYtRDj>W*btnS#$SAbv=;SvJg|vZUy}cFu=W? z8>Tf^OhGoW4b$!!sXia*nT+4pg_6tkSpDtE`fpu2C!+j_iy%ol@F`l0v*T(uBx zk3x46%6r9rkS*5v$ywOZ;_mO}bK5h_DS^I2YITp~dOTje1e@Z4+#W$d(d*n%x);F3 zk%xqBJY+0&|AM*@Odel>6bS*b{0aH%*eV6fghP~0w1p$2@*!S^)JZ!?RMc(`)QC7|MqQ*Chw(r z>n`zVS%@2ZK8E-9@Hzink0pVfy4wa{+m&xvEk_|Vv{r4z;oy+nzG)QRRtwi3-tN8w z5FPE;)y=K&DlqvQi%i|A!2J@h1?vtXoXV9JZDMxwNDGshMiTK}ST3xB@|CfEUwH1$gk=ZEGQp9qm7^yKS`+_)pmDrS=G%q26@a z>z&U`+X6v<2LivUbKJD$tdf3Bs-W&t{YA<2=DKw#x~ijnTwQvFf!ao>o6qiq#J54p zmjNKu5xy^mv_FRb&p?ZG zBRot`5vPzEjcT!~ayg&2#hbFweAx;AifJN~QJOCZIu=(g&&zLN8DS z*$>(1KrW)(P#W<_tY>EfwgcA^#v`#2Z~NE|??IqE+hGezc(%hcc(X0G!`F)U$c>M_ z7&`;F%v8r;+Ns(;@s}i0>5DR^{Lo|iPv4k+n3*3KQ`x={<2IIR;5J%LRt!BX`l=e) zx{%Om9(NZthFf{z4lhox(qnW4+J(+SbSUCFk(0s~ZiLH6oaeL;kU;v2c!IyWG<_`b z=P)rIGaHI|w2YOCb4*vVtz^l*>R`fCI#PN!6!Au@8bz}CYuC$gsgP;yJW@X-Ff)BR z3wsfwuUIW@QeH)frl+gc4vM8B#nH+YRtxq1r1OWJ&{bn8ugk@O#^S!l%*D2hSM#-4 zt8)R%<(b=OUyjTdpKvP>f<4cVeDaM0LKlL<)N)&k*A}x9vsRAp*I4O(NmD{gAL1a) z6P`c#ZXn?axiU9>{@^sr(=)WUlq>?%vq^NWh-u9uAIUOV(!ci#UQAwQ+ z5-N!VX72M7W-SOR-GPr1dE$SJB)s0Z`+GMJri={i&pD1tPi!1rn*Id!_12BmvO5YH zKW2{_OPsfu2AAo*^zq3!DYd?N znuH<)-Xi>OQ^#WJ7IjxiTr&-#17DGO$%mjpCO9=&iD#jnh@hy)Z=;%@&#aao_*C#w zc-x29s{JZ>6iRr!rnI-HVDDf{jstoMD*p%82UCFt0xkKG<*)yZ_+@a|imje$8Gh2Q z?wfG36=!B9kJZNUNB7x_PU`Lbc(&ET5nkLgz8Y^$B!|45N;Pcn${m!La)m zJd|-JIEDi|Kq&A6LSrZ}^JKc6_$8shWC`?w8@UVx-W)0!>V*PZbN5lGA*eUrGsv1- z#Zn9mz6@U^Alo0TJLFYLN#D3&9cB9nTJoI0Dx6q%^cO&;bNyKi(Dxae`TBV&V0iuX zAL1E~wu8+4Z<(-_Q}`gf?c)@F5e2+MJl{qM&r9k`)d3Ijyo(|jGe$e-#w>q=-sB@g zcd0*!`ip)_X=2S4_&TzASB$Q|?t25*wNW?o3MjSR_DBABo*K{!8l4|T;(W8>e=MG- zk3Aj(0$>?$1^Sik@w#mR;IqefH8%6tu*YvkTVK^4{|PDVvjnUbzde2z-uBVZ0ek$H zDB)@7f$j0teVX#y~h`25HTwC6|R4DnGc`G_1|Pfb{_FIkffQl_Un8khxP>-_pLz?R4l zV@LTz+?lgb_Tjig%G_G2NrsmcD<^?Ues?naO&--V)yPs(58P~nVwgp7wogljyev>LK|>R$J=W^eSt|3;|v+i#!vI*tM-V`<<;GMCFj<{DfBwjHe|Uq zcP2nMOKj)!_Kyy-+dmjnlPbCrzwk9Y=WXcb*+X8n=FTU28EoAUr_JA#Rl1yW9fCWo zzS~}3a}p7<5_3>4(!P3djng&QZG z*Wo^ZjO08X_J)2Ft&%`3t0jRFIv~q-o=@+G0^l9wySW0sB2CvHpp55LJ{Tpu+7qR= zT#OPh-{c7#%Ltj~`540k^PAxcOwSZr;VP0>G()@vZ`cJm2mq!#bE`~eB`Csr^gh24 z^~eaB<1qH=d7u%Yv;&G51#7Uoq9j9E1-Tq-B~An|0l?$65wTX7vL4@Hu6&zgV+{Q? z3TVpDrRzg3JTF3~nVWuvUxlC5?>=V{Y8G)5wsO&xr{W}GhhS8Lm@I5+B9%DCMWeM; z(BkoU9>P(hFHSyBxU2;CMQb28vSCVu>MtgO^^N#jXeAP47;}heKcL`Yx;uW@-?%T! z7gvSTyO@#B+##88!gz_I5vV_T2k>5a((3<<-WG3!zas!=v)jy*|^X%taW10?@YU_IiTr~`T z?l~&}+`j%1>wdCI4~n8cL;XT&mSYZ$_dyr%78+>7*$w6E+i)7TQe|(R$98ZMCZolH zX}(9wr4Yh%qMTJi$4?a>;XpZfgSn!iX~BQj6$7#3j{A5FI)CNWoi8G+!z75}b|RJ7_r6-#_G*xTdB%HYczMAlOI0~m63~<8Y}Uw7<~kJlPwsdB1^7UI_+hN?fIp>g{)T=JLu~6-7zR+p z2a>ZwR$n^T$QlaHoJ}G(FiAev*)u-BQTTgKyUd^M*4#gm>#^SD>0FT*iQL#E0<#Y@ zl}sOP#U=XO=x8oSxy?2I3y!mXDqP5g@xy=D`q#HH%M2uFK_C3<+>9ZlwfpE zGf7iU0A|u6thoSkegt^*4NXHJ@mGa-(Xi`=c!<=q8%o)9Uxi6ui0SqHx%@~CtXLphWPsWT6MM>D~t$DP9Z%6I+_-u78~T;-RV4^YBe zdQ6k513HJe-rer}YuG@*^nQ z!%HkF(+v-wAm7PqM49^?;1CjZ`s6R<57`6;GmAMh6gZ$NR4CT0W)s+e_B+-a9-zZ= zamQmO_Tyq?O(_JZN7YV*Y`yfJeG-o>CzXIvl$tol1}B^GbEeT!8t&V^zKY` zEnDu#qQ1JA7z{BN4H@p;Qod4gg@)lVg#hS8H3i_i_|{r>Jd`;A+!_F|Yybd~rbjT? zivaEe0Cn3Npxgr}!k7AbqdXYMr5T7A_$JZ+W(W|#Ah?8LeE2upPNO80iz z!+FQ=Pe3V$(Kvn!f&14Szby4+{B{8(_WiK{`THL~Lp>S0S;wf#PX{XZKXwfRQtzwh zR|u{rRD4j7|Ci*a-_N;#{(Ag>E~@(Yp9cs@zvluZ@Y7HEZ#)xNTfcjIV1$w@Fc<{$ zS^!M{l(Z7BC^>`?<8lUJ<<)`8EA#L^mYbgVa;k4V6k45C*P`lHk%G=8~qUeoex4T#oj{=MR+;1X4>|KgG~O`-@5@)>Hcp>gQaU6L%Dfo^*Ortb-`Zt>B!nnKvteOX08p$} zzS8b0I7G+-zoD2q@C$mgh15UV)JJG2or@!ZR2IN805}Q&(x(zv#LQ|(5SoP3RD4Ej z@uol{vj$_R7(jrzuO4W|lt$MU06U(*I5YGCR-KF4ok3t~oDH1OghL+p!^wqkdJcru zM?)A5gc?FP8S*j^gisKIS2@bc7x&k^8V^mAXLm-UB&`crKGJe*P6L?y!*Vxj`6$_1 z4b+3f@_nK}-R8$%hGn`(hX5iq1`)aXGYIVbei7L{2N6*VhK83A2kNRmIDk)se6|Ee zo1ha`d`4?mDOLmQihgn61x$WoV9>JT*hCyU^5HNg7l*M14jeM%^*~>4?6>*dOf`-A z;eAk_*KghDi!|y}RFjyMvZ&wEZ?$_&wS1V~(QmaMm}(l+Bl=+aU;WlS#MIT8GSJK8 z_h0v0?IV;^Y?g;SM9nqXgtl2nF>> z|Brr=y2?NZDF_|V-Cni#i3v>*zi8$PM7e>WNwO9df+YF4-_}1xFa0E$0MxzKH?sB9 zw}}paF>o{vyY!he3g7BaOI~5>Y8syE$6-jn)lM|kbd$sTG`UB=b+>?|zHYk|=+@U< z94az;>;TkFFWCy^8IIJi*c{St>&>RxbT#B{m==Os^q79?HrPI_gJb+1B21gFe^$Z5 zLdTkLS+*Wdm#cjVxpq+gl6>onlYyIOKW!9SW5=$~c0<2upie+U+p@k6tj``USCyv( zD)+yt_>Zp7@~&^sCjAaf^TX`-`25u$W*$NJ{R=f_8_w^j@FyFFpP}Je@Do<~vdI0G zCgKG`2i%cHYcI!1;e|}G@=2<)EX~#*r-*o2pmLCi{>pUwG0kxww;z25(bViv`bzee zg6So++DUwMchRw(z6Nix>2M-X;dlwH-i0mTdBR#y!rOFUT85}j|JFMEsG6ypM+~X9 z9VGD55|1ckcTe6sLvuoxoD{FAz-1&fbje)50zf5P#**jR1b?Tj#G!POpa&Fer0@`2 zf##s}ABeAPBtOobb?KPZ!kt$?29%7O%!#1##J+@yLlT^IsqA{s_N(e(VZX_k-P9xUlnLw;O8s z$cN-+Xwk!PKfKkfa;w^(dP5Fws4b;dK`#fvUTimD$QSmDW zu>4(f*3HL2tB^6~!kmgofRz9CtdoHiB4zjykx&`i8H7}eH9AxVnF20@$S7R^cYKG= z14U&ZNBq?CGdo4dseFByi#Y2LtywaUM7CSw{VQaFa8?ck@`MLr zIw9m;0r^)S0*5E4WDeG}$vQlYjxSbdh3f=7#~ zs;NsY;PvMkqA-9h00<3HUoTqW-vz~HdfKq7U^YQqj>mqY<}6HwUFwHHkI(5K-};OR zJ2eFvk&t4lrqrg6OeX-(oPKh4%0C} zDU`km?b%&}ZYF_*2^D8U=i#K^DQ2@$NOd+yBRJfS!mN#^MNKp%d=1)mS50y87=TUx z66L&^<6PACicKw52G|t2Qv`U~$@#0V!BKOk1VaeCMAz6|JO36SFni`hhta~)xmjZU zscHe+^C46=HQiCg`W8qnoVVty9vJ$&hhehg_ji=_iZQ>jhYHwENbeuNwfV;H9f0U({JsHz1CQTFzRtLZ<&58R zn3?)i4~*YNfAw)W)qi5D_d9-H`l<)VZ;F+eg6bSU=ruilgV%WDH{Bb*OHj-sTC8-s zAUx3c6$6T4*=(a$Vl@J+Wc(~PgYiQfdi-_@wt*obcX&d$A1Zid_d=k9hYxNH)dUpz zdrgfWu!H=8l@38gF*|(Y=Z?iZ@5jpqUUI;Y$YoB%uN@R`lGlDe8Yulo*FPe_F#C>2 zLtlCQ({{YFZ>s~9gQmNGI{x2Z|3v@O^rKUkX7gzQ68QJ0f>U>3{kWbEX;l7xpz{Au z^t<3cO}`RNznK9NY$N?b6^ee1fy)1n=%@211ouZ1`RR8pY(eECGVuXfM^b+aaDU&IdrOtQ_;)Yyiqu=`{x{{Qr=zc8(Cye;_-v{$?NZDq=nfT<1rt zwa*5iKjXyLj9)p!PEN#veRim|jcuoH?I1T-{p4YcOw*aRI@mS7d|B%>SSmmmwJz8JIud!VMf!iMXHOlnh0%czNjii??e(lh-dd$whr!`lW6Rxt{`yr?Ij_Y7=!! zXyvO`%jtMvrzV8m&+!&1qO6u`JgH6oicS{yOFXPi4jUY;Txqo&Dn;k9^X~3%b8?j~-l5Ux(I)yTeh!W((_4CgLtdt=hpQRqlSQ$ty`;!}C)rN9|@M zcp?sQKuA(LF?<+a$12;bc|70e@|Ub~GYo%3desuQg7wX9;CJF_Z8COT$Q^^nlaDCb zBeJAu59A(`4hq(EF2_>mR=72+SoxyWavq*A<+^L*iFCP^Pn2^A5qY6WN0bboM&p!V64_!2-a2P-03i^Ma0ftVvD-v+9@t^`SJo-9m{=T3 zT@*^+K}vC$JeGN>>0Bi+;q*OtNi|;iYSW~szUbn=@XSt*sUe@MZgmBg=6|1;(v9{2+^0wl^M?<~JFWs8j8ujdwLhop14+t^`JmrfdV8idN!h zV{wkaLHH{L-5A!@dRZ(QIcz(z(&5>qdNsL-V)dH4CK`Uqs{)Ee?}pPZv6JEI z(XL9c|G@z_8_&Pf&Bl>Rx1l^ta_T9Zxb?4#XO<3ENo~Xlf~+?zZ$wIYQ8_u0BrgGo zA5p=-nyxgzeg03gObyelFHU27uAmj$cfglkX}c>D{<{YV6Gfy#rrumIyzWhPmaB^j z1?#r}6OrPPw4$wmZ2zE$U_S)d_@ZoJ93ab-N~dmDQ7Pw1KcXk21>PG}9COAYKg_Mv zn{k};z3Epdh+xtY=`8>#gJ!3$ERI%*``2pu6st%xC8T$HN0gc(?5ga7RZy>vIY_KW z6uXLO=jZdO0s&mYQ61g~faovc`1{4$O7J`isiS-_8Flne)MR=DDk&kTe93A#8wJzf z#v{8D(bZNVt1hy|sA0{u55{qt6J8f8h(%_;I_7O$pND5FCZ`%@aIx~l$0JfBB zw)6Z;UVE$>SRj6%ANlq}5RbeM=p<1&!j`d=Z$|`O30OoqTOwv-!f#l}IAEvX$HnoU z-ui>>d+bz^+^~%~kb1pwX8H%jh1`^3l4^)&iMp-COL9$RS{J#ozV(V?y^LJ9}Ot#ERmT@#>OqeC=tvD+Xg1(fzj^8 z`qDCQkU#Zc;ACu1nx~v{PR8~@>mwTGj2Uy`Y@%3>&f@z-Q{c+b;F$xUn}Qs5Sa zUo8g-xsDee40sW}R;Veht4-cZGc;EDy4CVGsMlJxG+8(b#l~BY4;vCmjeWWF%h82) z`~_9&zfme;J$~en)c7Uwo=>e7j+V1FzBC+fOT>HLx8jTOpuDYoSv2_sH5sSL=?gyu zK)do^R?9`GA59J$Y7d@TT1Q(sF+%8y`EKE7EEI1G*_G?9mXlD>b~>ZUqQZq=@&#PO zI4GfJv@l5~dr1>q>z>nLqT&EwOPNO@o@ z4EAe}IR@ZUNjr{ne_pNMXKP`;91pPq&9i)6zeo8>X9eum89uuV$4(o*XOJNaaf?MD zYVLUyKnFk~JK7ER%NQ$c98nbAw;9M3Qy!NTKKBrAQwYaWSM_X-_ajj3iieOQ{z3y5 z5Z#kNG&1TlruU18Zo57goI?Z6mple3&@_ugD?e+za^VUa+bJ5Fd5I_}W*0Bm6>8YTS(F+;CiJqzzi{La6$8Y%A6jGtICZ&rbx0AQ?!(?H66nq z%Es55uP-e-%C^QY&-@tf@rAzt(99Y*zjxUDr0uEMf%xWXjD|N~_lguCvNSUc+~TvO zAo*BIUxq!K zIL$=OTIaofE7L$^?3CX?1X|35Yd})PwH6^bgYd2fJQb&Fj;rZjde#Yg+3+VCd)>cN zKw`<#Ql(r-a{_5LgnB=KmmdUjeM0UP012uVQnT{BZK-S`S5$~tX1ExK&1io6&aaP@ z`zU#)Fm+kTy%U&3o?@r4IOKd2t?X<%or~=FlCb-8;#s+*DWX@S?l1TtIqFzGJd(@u zu*P=zE%KDw%&ZMdSj79n%;g_StdW1jvV09#=F-N| z$acnsmYT7-rpA>|Uec)GzH-AKarIKEjhI1L(ddwkEAqI6bcU72dy1^Y3wUN&BB0EP z^HanbGY-@W-7)?)uEI)kOZkU-DiRm*7&JixE$l9kdI*rJ(hjLT@JdswdGw%fHJpnS zO^3VBvsh|YcD1<H&4NxlJFvz@h112>$lDD+w#SKR%Z?ak+ucRhL(@bUC# zHoox~>Q5>??|evB`;q6J&0w?v((}pSe}MWRJJvm7^%#Y4Ts{&gzRe~30}29^lk%Wo zxGKHcxw?o>b{!Nb){XdFP-Bc&qu&AMT z^qAw%?i`fxjz4$djW*KEY0sje+IClGimwFl?UlE@`{};`9(m+#BZqB!HuLaFk&OE!1JCVlET)TZ#?il*n`$Ix3eis{PHY z7EoU27b{yt&$STUe9k{ldR_z+PjHw|5UU-!d)+ti0)lhAow^o+vrsK)c;S6l&0gXO zci%+`Z#n#YR&dHcOSCDET($MHCC;dz{LI>J`I)nhJG^%CJaI|Ud{VZS-bF~>uUu5I z()G5JT*Xa#p7kaxGAUGWGDq2?}CL5NVG0FhJ zGs=vI=2W%9lFJ4ksC6zYrr&3H);W#t5My2*mHeqhd$nhZ63eVxcZQG(g9%h<8i1Bf zbT+R-`Pi3g^gyAYxJR`sEDLh_T1S#BjF><~G!s^SBFzLbAq%2ic^f8Vk+u>agCjH| zvhY9C<6z(|3-&1r!1(euKMql+k=7zmnOk}vN(v*B4pu_l7r>*nSzkgl6)WwL2u0%b zeFc&Pt>_QvZ9$+Dfu|6dw=`S=(|`-v3U>w|*;T?bR?D6!V<(fOxaktCMQ)KGYydXT z5<6Kkv~|Aj*QKb+#upU|tvu4sEp28A45qJ7yueh!REs0D)XSbUsGfMnrw0X*(>Wj# zvig>5$1%jXIMYhpjD~!eriu9ioGRm(6Z#u~9(7&~k|=;zSr)Hzh&3v`l^3NPWO}f~ zCplw|$YEwJe(U}biH&d4zo2*ZWT#4aZaPCTtL1tqa2aUpjp+Prqqr)HKCJ+n4#D$Q zDO8(UT1_->9k|9>s)k}N86Y{P#G3bbHOZ6tn%mb@CKFM%Dm+B*_bTV9DKW!VVijCP zcKrHM8)*yWxE3*=E@DOWLkoszQa`AG8At)ax{IzU(Fh21x2xh*YgS8-AQTs+K)gT{ z#cx7R%8M=hDm^CCCQFLh=cmw;X(m9~W6+EY+$?q80cAUUT~rbusPQG-U2I5{PPKH1 zc&2K0FN9wUB3UhY?e+qTXU@yAmpB$u-&Q>KvDbuILJD<^S_}{(h4wPH0g(FyYRPV2 z=Er!p-TObtPuB$Lz8Knn0`4Kg1k*JkJa{eag9Fn1c#_L;-X{yMnDeFxGpvK|G2TAV z5~U;&q9IG7FNMd$S!v@vv*#%-AiLQ98-pr*lLxmqpkW%+;h|mFG;OeG)l;Qv)SG0+ z)>j7Yj`tYW6V+z-|L7}&rlN?q+r1}>@XDaH@JyxDHdh82y&4kaxi3E)cc1BfZzUs1 zRaT!N;{G)$a|D0}`_@1WE_8{&`A5|qMpL>Y;q>vu0(TLq2^sM;4}&G5$y-Xvz3EEn zhJ+*FUK_ko>I2g;0u#L5S>jg);sHenD$L`51TxH^T$OR-pzH!q)*>kl3|~kqo6DM*~D%Z;CTRs7GtWNeoZN zi7umQGXp)5UL9=(isD0y_`Vdw4L_& z8Bp3x%oPkw{0*8$G#OLjb*K#(!{XKP++e$8^!WGhRTrn0`1N&e z~9mX z%|3QuUSqL9gsI;*&KM^a4oL)+I%E#CzXwQ4Gv@mLglMOL2hF}SjyR6SPZ@#`?6Hzw zYwk@zTSXfi_h9MP>3~ROpsL`cKL!NB)I;gWZGrG8AW)*$Ezs7xBe#rV5 zxxf)NDLTA-S@)^3`^&{}7j9(isZCw%-=x?Ob3Rt`6W9x$SW)X-sMI;OO-iZm7x73Z zE^S^4UG9%D)D)wTaa4-N%TFirltZZo*SV4;}2? zDgnG~1VE!sTdlJOYPg(@wW1=?UsOn=y^JOjn>)w!VRR{-#|5f69=0}su~1{nl=_#@ z5imo@J@5ld$tS+)BNv12c1R|9rzG3Eke$2Q_^A3K&I-o}ol;o?~< zC1uL2%}fG_9khQG9G`oE5A0Wd? zX@8Gaw=!5dvx>Nd(#F($2=z>)tC#sWkNMW`NW*3tm0pIf(Qtiy8?bmn2KbRQ-O-Ws z?)a-h;Zc2Y0GWOc`pJ~baA?AbroJ0WccGfHZ(F z%QHESE)Y*We7Y?F=6V3=T}{_^2aK5-V}*qZICaZ_T>@5MyNBzOSuY}_Z!56>RgcWRWkbw|^ep;Kay z*QT0`EsnD^7#R}{7xvHYG3P2{6QUH1$nrLt3-uNZasN_~X*Y&*GOBext%Zo5Arp02 zoWoIs)+YXdb|u2Ubtz6*vN<4o60i)mrbEGG6N}~+_tpv;ewt~(Ao@V6Xqp)Z81``9 zs>K~1fOtgz5P`p-zDs#q=48kh>>?uUgGxl_o+Xk#6M2tPc1d~?>Bt!YCn*`VY_=##s>L)yx845qU2a1otJ%J=ZEw0F{S=-c$akM&8>Q{a7n{zFI-~Zn zQ|As(KZjSf$@=n8E#`?@XKFd(%3o|cIkIpmiq;Muy-)fDl!#)p`S9|UI5%3Eeh0s+ ztvi>%{uo}10KspjKfsf5T}9<2d~M~T#{Jb)Nv#S3TyQuZB6eH7I1w*SN!C~3<_~Wo#x8?s!y`r&r01eZZkbh} zlENJ;*;2JNWfy(||GkY(_+B_D#wjhS)6*OWxWrqBBLe&Rf5T`h?B(p@f=h`na*bW^oqvwryOg+r(+Rcu{32 z<0W?tiO#g0VWqC8H`%wn09166j(OC*1NNdAbdSWtgaAwSD$^(`0CZ9vT5t+M0DT*n zBP3Jd_a>y*an=c{ zf57)0aegoV{g+PwpT_;3=7+JsdHO&L>WAHv(l20KINhogX6{emo{FSb9Hr;2sH469 z0olmSX2$t;XrItu%}n>G6gWkR@X_GaD$!Yu*3*lL5=A1zTcLG;n>adj^0Lox#s%kP zy5LQI4rRq1d<>EGL{!l5xInC6Za%7ZVO^ED6GS`!;RQet9+Dl1_ClwfTm%5dyB7pg zCSb4;E}qyS?144+c{EPP>`vC)4*eDPwH=HmBuBJh`Y*K8(S8kX^O0+&OjpX6;i#tO z0Kt>7Nu3)GZzE(b?4Bw)Upy-kagP)!@`Pg|(bXR)`xNaL=| zz+3S2UMS%?xCcp9u?leOPf>B^Srn0`k2Fnt&CvN}nmI0CGh|@1f&27Hsu?9z|0Pu= zUaNd1)XL8mIm34EzCao}qfbMZ`WpIPzJ_=zmJM-3{^=j8hSWCmvDt>~^H)G??5-EK zV&SU5NM4S$gZ#~T*C(@qP@eTk0a(HxANjS`CtMqYli`9e>ytQI^XoyqCJnAnvdaru z5eL>Mw`?7NUS6mbabRt7=QdOxaCz~S?~@UGNN;B%uI^&ll?|q8{2d2iAD16mz2Sns zm{xDyqrJ(#qxDtHpS~oG5PRcP(2BsfA4X4psGL?z$P0W}ERu@3-2DR^qvFDO039vR z)FQEa50XUO#cqK5s8utc`v@M^CW|VgO!{#)UYx?90U25UoQ}=WEvFoTqX5)*PZ3bz z3$2{pIe$~-!4d8(@^JOkl`KkWgA+f5-Sz{DxnJd6 z#UhXYCR4-VKMW1Pd3oF5JWT~B?8}gh>=u;3cyrreT;svGl`w?nMB&|StA3(aoz56( z_=9b$S%8|PXNKDZJ0@SVwpV8d&Tsbs9r!Q#k)55h`|&tmUkl77Qd12;Dv$q?134b9 z;hgCBe8wsb4lD;R#B58>mDSM}HcryY`siA+3w=a`KO!%~SXHyL+8EuL4~>s#GK%)^ zBkJb)dNAQh967~2py?BJW#mfHN27NmoI5qBzC6%yiKtX0erh@c({K;CA${EM| zSyUXtfGW2kqJ~Uj@9Kr#ko75s3R_I@U0%i2P(*nRAhdY<{8{= z@OLvaFm!1+1ajgrV8zNQBrHIE^Nvj4#{AU6D{C40vdgT*egFoFzy=k~M-Sx;G;Cbc zpoca9Jcf|D;9WE?gd~`e=?H$hM|=w`Y(fa?{Xo1O=KwZAh(A>jfrxtu0Ttmlv1tY% zHWKzw;wa|?hXALBse+H&#(Lb$Wzc7s5N;9(ocf|L$ie09*zILb+B`rkbNEF?CFnpO zzlSfHnjA{s43KJeHu*2lf?!~(zM5lmI~(*OJMRpi z`2QB*)N&*b#*wGcU+jQ#ZJ&)%%22y)_j+&6x{>HkEIAQNP^Q3`Psf*?Iwy?n?pYF{ zX{T;q@fO@#j1+Zllh;6aF%WJ%D9sNg!JsyRIlFA9P?TThQc}s|U`8y=uwhUkra~Xy ztWC|Dfv^jN7{weUnPPwf3k1(^PA)EArj_Z*pulhd6;4Jh!$w}Z3#{qP1MgJ$_H3{& zEtBLK*e#7Y??=0Ke#TGVLTL?w=3a2&7{Dfx73?%rMuE$VHROf~RDTuK6)ZJK61EE{ zb4#09>+{*z<{fXe{+NP>s{ly7lafSIWrYH))gG+A^{O-ioUFCMwR6TR?{7P|$@;zI z$n2aB4yR{pp0k)449a3~^uT>}0ZwQj?g8^Q)*up84hhk2{5c%h?x&^wS$wN0%ZO*O zxwwhlRqzRr0osKg?N~J2Tv5=_Oo5z2fgH(3(qEvYvIbH&uLu7`tLD>E!1+~KZZ%Vi z?9|OYWUa2bAr?WW3(|u>=2BCa<q}%$W<^25!x+fUIBOjsaY5iCIk*P|8cq6Y)e{keKM7UR1!S@w_ouf_@ob?z+ z(RbNl`8J?Phv-ZlsYD8*R!3ZIbF=L$m`cgeBUz}So3F3s6i? zLVQs{?Jz@_zfDji6P<(9uw){q1X{xIJXq>7;t925JFnyFdZX;bQi$_31!=?)&C*DE zL#*JzB9$BaC)F4O;l3;cMvRe#Wq^fVunGXCxgUZlMPwyD{hS1Y1{0LXJW4tsHjrx~ zG7k_~q8MWi&Fx8;k%Y$tf+xK@TXW9^v zlFkXo_vOj^a;tWi=Wh)XuSxQ7ZWZ>Hirq^5Zj+%WCp9V%vdwfw08ixo!5z65~E@=(K@(&dczNoP37uFSkrTB$3%km(Q(*%FrkgG4PL>nI?5Ht^h zUnU#X9Gseooa*U2>?xBSdOa0&CUUM-is|W#8~xZdqmC9;W2PvG>$Za8EdmB8#+=Wo zji_z!*Px+0ppCQvV29HGA}pnbnhutau2 z^3qwwQ!v4uRTaC>yxS7B-x_1TIYi!l1)HHa^uB598F(AT2|{&tpBEa<6C^t#Am6!;Q6rk7^3KgbX(Ms!?*g#{)8@-M*JV4?c z27ts+?1*M;!)Ya1PHjVb@t79-J6X0KrCB&7Lo3I2Rz; zvR9s*b!c3N;apsSyKw_aROo}52>ak--xxNWrGr(9N?RA9vRr2rp;Uu;-tz31hp%>a zQhp)^hTP>5*nsqJXV9y29lbgRwZ-soW#cPqlHUMutVe1}i(-c@y>bXvyWuMb*LCm7 z@QDSyPDxm-ylonid=~`b2XKCX^2HpIO;c>=W%Q3xL5J2l9d_cw`q9ypxIClrFPg8M zY9|MEH8oVLXkv|6&1ALCIb0`05@szPD|STaQJ350iDb%!45qOYSR)4H*QGx?w$+ z=phQ{aPa=%sIxp8f4k?i_QBR%9uA5*E2F8R6YazPWyOzVYnAcvQ#-*rH~~Lu2j5YQ zA5pxV#~Vhe!(;*|j;|?W6${$CnL?IwgbcRP1C}uDe<-o24w8jUkm<;T9Bt z*Jcn*_%c|+xFzd0LX{^EvoSl-YbE}UI+@e)2jT+q2?62De2Zb|i+M=SxPrYf1#t!6 zj~cQ|{(t&brAir~>I~GdoldEJF2B#&LIcpc>2IJgQn4dc1{*R9@gtgyKfF-rU>CMU z5zk^}9$=aH=V2?(Pf978a|9#+dA*_s&bP7j?i@#hPpg^OazAyH@a(1?2s zD%G;wO;Qd|jwcwW>r|)co6-0p#A4v(h4Qix12QRI8rqV%fvtlt!h!;jia{>}g_(JV zHOgTv1prRlp(vvGoL7Ox;D~z_N=K6bG#X<|VDUEKJjiPK4B(?l3}L$@q>YzY*t&vG z5amT44#4|}%b%HIF58t8$p!+=f;>*jGSPa=g94{yH$nBYcBFbIpW4oH8+;rqgx*6}gUHXv6r`wGUlWv+?14+&Wp!O`$4ABSU=i>#KZgk1PR#C@Ff;}eP@+o_hW zOim8l135Pb$B=YCu?!HI;jp(YGx)`}$cT8)lRFh;CV*9ie6b-fMBML7D@qzLK73Ie zt3vAL56B}NKUkSKDVHpq6fX%uCa`1oFj)oPVoo#pL^x>$ig)u`FcE}U;hUf!Wg!Mj zyKEqq{+YBx%3<;pPzgLS+U6Jk7ScEF7IFDCb2}Di>3S59{UfHdRdY8?01Tv>i$r^8&b14T&ZD4M%HR>3!(aN{?zh$EDmI5Ohy zy@8dWvv~~}+00I?wB~*)?C}2BFqp3+Fp{}K&pW_kkgV?P$v9jS^ zJ2eRm4N>8R3g+o^5KYsre z-@z3HMLR5%IRk%KZnUz;YB@*Bp!O+9@r#;hu-7yg(eKdUE;g>^6#0%N_qLPbaRQi~ zC_(Y|k<#2ZQ5>NQyMjAu8&v^)aPCkMPhhhF3Pwht)+yRG8gD~O!|^Uw1r7bGen$?N z+k(JnVwEeWL8l{m1m3r*}sQFUn5ce=JdUk*BDUahC;Fh3Kf#SSl{zJr@U(bTCJ#>v>I8;dnTTpl6W$caF%G3@d~9ldl;4TD8l3XYgO_ zgY5WWOqW2!dt^x=j)U6NWiT4J*=IZZmny@7lb!DdlnGb`>Jhe+C8dCfMDUEzZ%~PP z!|4fVK*#P(2-g4+DZ?E;|BgQ4T&h-+QRg)~xqm5rHO4Pc;WI4MoG+PBAQ{8mNdU=R zGN^w^jRkwIaaUeW6N>scwP4qAmald z<0+|8kj&ArKQMnBjt9-7cW$#&SHqO+x&D2-_j!CWVmmbi^JFafC)SyS^6p*4qVnUW zc}Nhyf93eOtE~B-qvLjOm;3F{&N=94!2jD*IBr zs0`}r$*ZN+q7#@kUPBc^SuO8kvg@kZMM0h=kaZHLnlJbtK}ak1UeN}w!gje_`+53 z#XCjgT}7ak-Mgg5X^*cN6N#^G8?rnyr>7Z3>pQxq+VL%en@)|y-x<>}_6HkRMTWc> znFBQ*DqyBO5NmJX98-Qst7Qw?pIEhjW#a*S$5HbS12f@d>c#NE0Lb=T>mQ+0n4ISX zfKmLJ%bebMf5n+r;)ei3E@W{U6k6&slknW_04>X<6;!w$K>091WZY10AG z~CvIxj zhXU;0HnmE@OgRZD>Gfk|cN!52x!*wz`qmbqIu|hQg}N`-`TbDyaN5aSfsBiI;{Pbf z%z}7)<@nQpz8y*TndF>E-m3KN#94OglJzRU;z6ZvCx+hyW{vx{^22y&qt016+CZSRQU3be#6=*Dsx7{@)YZkU8DcN&gOCg!5uuKeV8EkLSo>R}@zE6p^;aT;d+W{{ z(GZWZP~Vz?q;f;+HnUO9BFsU(H~UrjtkrU_kzpXgEEp0w)`bmktcFG&g=v?~ZBbOP5mxW533D5@64L=HO9kEe z)w=814jzSKnSFu8cIR^gKV6Qw`@BFr=m?Mo@u2)r;W<3>=-FSr<~%!%FFikBh@2QO zy_n6-A6!RQwf4Eq?VfkGiC- zjBN{my$k^KYkw7#1U)YG&)k;!ub?$7Z}x{Na%pk>2;p5Uq%h4UDLsvsrf&imVXVv{ zD9Zy8=^5rxtm-i}kMD|CdLB<-ja$GYp0ih@7 z(ZvPz`zXTfiI*IhdjPg|B|bO^yPpc zt}fcIb;{bs3dMFdL>U)>AT}{zw{pa9Pu^KIr-SJDY);-GFtQeguAQ1u>^?{&s2`(M z52|6KK@Vbz6+oAWI?6{TfKLaFzlmi4IlCZz6RUyFkLA$Wi(%1fxd9N_p!*~W>UJ7; zRs5q;m#JfDTz)mR=b9Sb)sUNMjlk;bwEQlRi>wc0&+-j-K z7BqB{#WP}KNZT@wSp^q?$@$X-LdnQ9FKV*m&whgiZ1UvN!t_3PhGC4A&QeU8z5soZ zah=|Mw1VtSK%mUV*MwqVU}p~ZZ(yet_2M#{bp)d$Igo{v15(^0XUuT1#Fr-bDE7>p zUSWGZD6||osEA`k)TIe9z0CldZb*T-4?bGNtP~YD<0Zil2Y3V5TMj*eiZU(D&qW=p`N`V zJrrjWEJqL;(2$7`5o_dp+&$C{0fv&6l~^X=DaZxf#E@|3;H4)akK(=N853e$#C4*T z_ylj#)6go{z`*M#s3wkzHyP3%>~tSq`5#n{I32_(^8mhYm;FCy-2+4e=7PlgI$t96 z7ap9)M1+%PfU4KQO@%GV)T!&ERpY1VEaSA5{|uy&L!KY%20R+-FwD#ic(4yL1TMCt ztQ;tdOx#eRLM9P~I)h=P(4d$NYD%wWwq&e!uzMwf7gmH2OWc>x2!kREsrKe;VSRAB zg9Zb}I;1=Tui!wIXk{Xq7RrJ%KQ?sD1&7we9D#oBfqo{&e*KKmMW=BTo6?M#NoCcO z;8{BrDR$e?fR~r}b0{O7I@^wqE`-1NmjI_Qj3qC?#wIv*xEKMXMYY&kMDy=};twbm zBte9^rOg1q6i{pNSs?b7c7MRlL6Fty8F=9iMFu4TTB`unIBy4tr|UD&M)memjt*1c zE9At&6&kia3^SLIp6x?9iqdew%!_U&LWu9O5_Ec(uOfk1%8qcaL}G|DzoUZ2^YOSE zhPN5ZU;zz@sfj%G5=Kj-%I@BV&Y(~>Mk+*HzVLdbN6$wOD^X7Uf>x_*oHf0ONV&9l zY^o*<8Ts2ugx>HF1$m0Q*CvjXPI5j)6t37ZzTpx7JXtb1ER_BR^bv^6_V+{8{Pe^& zmhwtji9e#FnwpH)cHY?d2J4PM-F!m}wd9Q}bx5&Fv37wb7uCcg@_k)=^C0UMPVa_# z2q==|f>EAXI|1;8kA%k$dqd&L^&NuXqfF~d(Gd3WHS?vOaFDbFW*F#$I6m{0meU?*Jf<67BPQ z(U^>PGhS!m3djo-$nuqaA;J_=x#Yfsei*XAeW=ucxN&(d6C@ExGXW`wE;`nqO=?gd znEpYT{9oeU1wP8+>H|(7;DX4rDB5_di;Zm}UJ^@d)}Ur#qtC)dW5tTrOBA*E)(b)| zc!S_(36JY4wrHufEp4q@Ypb@t_IZM00we*ih_=OQ1+^+`L=hDNB7Fbofs}ytl|{ zK{(S)p4I1EFF)gbz1!ty#c@}Y;MraiFH1Nr1aecL-yxoV@t%d2_{hATA~b*|ZY7xZ zp(V!n zWpO8mr$(%v$drGHHVG|Z{y)fv7+SHhcVmzJ3C()EaNfhGE5v#R?YjVU=VK%}~V2R%YEU8J-bFe5q?(kVd#(@FVU1ueZ zj?}*WV8rr>6pROBloW`d{0X0h8?<1mhAR56|t?1R)@gCcr{Y8(Vv+x)3PkLLk2Y=BR$kG2B{vsPh z{Ga?qPm+2{2y-m$g}>-kHncl`5p}xfFM0#eX|0g!y4eeVQI9mYCx1~TxJrM~ON8dS z_!ay`UI)KEe-ZL)<+}j?38-xv)y_XU=kts43P9fu`CZ_)w2KQQHxGBL}0dYx;V`IQ!%d6;I#VVTTujapg8v_kVT z^03Kr&E+G3j@@W4At#`hx(!Vue+daoF%96d2zzr9U1yXfUO z-&Kk~z3;>hP3Ues6{C!^W?lkm2Vb!ruL+DJ(?meku!^CY?SXFG2irE4A#a@ybSYHF-Mbs=f>3W?o$; zQMYuRtIVrkE`HdhH|zYv%$IL#3JDK5{G+vxIs^Jp`hbCuBr~4!$&MIc(k+1G>K=x| zWqS}9-Q`YLXp(-arzS8B1jxp`pXMR9EX6~ipwmE<7+r>1`{4apAjuRB&ePoLZXkh~ zx%X7M2N8KVRdr^O7orkf4;=HarWemT!U7z3iT>LDT7nrDWnil6wL z1nJIF6@35GQx#YboSzb;C)YK2MjFidr9ddxAnm+zxJP)lZM2o9p^POX{fuHe5CytN zqAqU+8|fc;2uPOPeFWumZ7%8ZPQ8eQRw{o3UQRqYLs$k3(yX(Xge0dILZPYlAA~}4 zJA-)RSmywjnQL2a@)wR)&%-Z3t0bWZ)w7y5!XIl^H;~ntJfsX%8}Xw-NJejHFqYa! zlOU#m#G`h(D6^0l@%On$3j$SxsnDp@kH5n9rd_R#HGx;zs|>Z{Xps}BTtt>vUVZbCy z23fHU*t~g`#b)blU&ZRo;e7?oK#!7$)Czq5n(_;0=ZD?rbLgK#9sY5(XXg8&y(ilL zmxaTfoTwYghp6hZHySr048A6TXfGWg?zONc%eiPGPQ=E zsHXzN2z%Rxlf-gm_b)`7UdI)i(&E?f6Q1H^Uni365aURx8aO%BHrgU!j6Tt}BPc~c zDik^2m(=4@N=8z5f_@xFEOqTF6Y-O&t5Hb*2yF}z5n1azA{POnH(y*M(4#s{uMv*| zksxq_K*bLJ0d-Zs;Me3pc`_ov;Hn`gjgvftr69{mZ+b!7Pxg$}h;LPj z6#dHL$@IOc`;=GLOCUs^T)#JU=XiCgd|2(~y{X2qA=)bHhJ~n=Cc~bMs_GbnuODbd zz}r~lulTOx`tb|&Q{o@msW#B)?Ovm<;PGe#Bbi5l+#%>j8!4tkF^&j-dH=^Q?b~NS z%HG(w9AlC3{~zqzjQAcE%!8Y9P*)P)Q)_wgJ?q((!=C0JZSl^AOU&JF<2{-2=?I^G z!9AumMg>u3Y_-2cbdO{k^&))45;#5Z5hzhpi}ot9Wrz1%sWbz|UBY`{s|NVa$( z2h@ZTItjtz_EEASm!XDUsUTq|;B@2>fIaQs4t+$Y%@8TSUBwb&+YLfMS)qL)py)t3 z0DzekWgFnyUvscW7JJ1^k=n>OJy6VsthL61rLN$ro_Tn56qFI?*)}Z|j6i0P5L3@R zy#xJ=Fi7Zpd~<_?*w%!eqN5ob)UE=BP7nB0dr{Zn6$#+~DkfORc-5$=NCI(%_->rY)GJ zVfN8%mLk*JrWKJp^uLs$M|Lzoq=!Ct^VIkYS>ZAUyC(2m)BqOvBV@d>Snj&M5kCh~ z;~JG*xWC$dJZpc8`=C0$&)SZ2R>Yr3d_*KMt2C0hrX1D--j2 z8s+d$NGpUhsSv{M^UE7jyc4MGAdCw#E#di0s&72Id~rIxJ;DXvqZ13}kqQ6|r1`*i zkKjkoG#3s5PI0!1!@nC-SHv>F&5KWj0Qfi=FU}ef_erUK_?`iVTFEO-^Y#+y4M*BD zUysU|^ythW2`gL`Ds+R=c^#ZbF9LUXUuLsX|F3 z>6F}^BiD$z{uD|J8gD^nZxj@ZK1*oKrwC@^x|qij$$)0>}d5i?h`b>akUiyjPEl+n7tSfo)7y3sVeduNuFCA z#q}iZ7twFuK2K6Gas@ z@s61hWHT+Z_x%DrPU0#Jp`Hbld&j~)03}`y{Kure3_#Q>!kty6TVh3}e!R0>Dxi9p z=gJHjQ)VA8sAmB+?vqRt)D=FA1$L6%>7C@5QZ*7{;hlrhb`ctS=xd0;S}Pee(-U9D zqF-8h;%DzuKgNfz6mJy!K-NPOkL+TanTa#89zG#!UJ@s%(c~;`7ptH_(s?fEL}o$$ zNt-74eLXwNM|(CPR84l6-gJX`g*Z80HmF+!XBxNQ!cxo- zkz7)R%BP4=P2*e~XJ+D1Xdtfc>@g@?V#EJU(kV@AauIvRzaF7`HMWcq(g$6+#3D{g9Z#;`6V8bmXRUtp zV(x(;(|#Y-)DFB1vr4sR*8$X}^~zklx$NBt3fObqV-9z>s}Zd^lqDwyeA4k58d+!I zF2?Hj8d>&`q(-D^6K3`mrwRPc?g?x>JM`3d%Cbm=9mZpc3Ov=JbetAWIzxoaV|V1t zplr{2!+{u#Xup&IWP+Fs+9>FKJ$oWh7Tn3^&WG7+5V~lUE-7quaQm*H7{08Z?%eLrCHa`$T!LRkF^X7j408Jy%iRg45u@0XW|To+hHc7nwoLQr(X|~ z0E6-+=S%bCv1gq%h*(ILVMew3mRt-N?C1uRdnOrtCuaaEnluATu0UxdxYB4FEA^gG z-jtDpCsd6b-rORB1wW06-O$Xj(PTAT(o^NkvMvhb^=zTinS%CBY}(4Xah%Kr4fo+B zBQH!Ab$G_d$-0Y9!8JR*U3v^ZNZ53>D;u!mVM}&lkh$jiap6P>t_2Diu&zxF+WVE6 z`g{#UR?*3c7r|tw&o>IyQP1QWn1;%wgv0^+x?Gmb<){7msgIw0{Ir0dc+r!s)h+oozRIPrUjAei9lzuu z{NkzEa2X<}F)ZGA@rfTf0MvZY33b=P1cQ!3LV#CC2%(y2@?{T0oSKRhFjZ!lVahwplH(TLyvEye@!bkI-=my%Bxg82i;ckU#s zg^t(QO$Kkj@0r1wv(bo$*e{|E?UaCxa1bpw{w0ivW?!lVghmW7!_XWkXfr! z$3Do8Ec19?c!{}#O&ui#Cej#nD_5o|mEln!4m_m;P+X|Fw#Fn#q&p&G@Q$l{8X`tI zDiX)Bz>$^)>def=$%y;2aHz1SYA6t0eas%J^NdDZj@TJFCy|+=eAELZ@-7@-+;&1J zi3I;)wB5yT6Y&i(3CNtHALN>iU%eUe5sJ#sNED5lkT|BSCtO&$0;1^rfEe6e8Q&z( z@KGdWO4dP9L<`HE^D=>WeC{IU?hiv&SnSlRw*4M1KFa5U@%A}dlz0c{$C=3f0|9lR zs7{E?=UgKoT7$J`gP^^Uh0aXXT&dUGf()pER}s-wg{90q_L-oE^UQ zOTmh$^#XQzg_5em!F~W*@$|rLsGL2_NKdC9D3rBBUV}8^Gl7?u4i*=Bro~+-o1fH0 zC~@Pb!U{>f!=(?XBtEe_-DlqmQlg39&}|ms1JN+BBjZd}K$RW@mBYfxyetvnz{z`*t>*e-tw60E~q3_8AGx)~z*;?&JtQQl*isLJ1eY^c1q%tV)%}uYzeMWbK-BScx z7PVr_{JrP#jl=f!?3ucK)%<-p3((9L?Hll;nRIR=XmCsOH!D`hp7ilsLACLV9y9oH z({a`Fw!!`Ik3Lqn&Y{5*w%!$OUGbWUq!Y2_zKkV*bCJ*A_^z3#sf#4fkz{{|6$}LK zrA_;_^Hbo|=3!&dT)o=YegyF7J{z~F zmsZ5Gq#>E&(M{I<%K!6tn6VG?#@l@t%{LX>{Nrk8?>!3~-cLpU}vhoLeMj;Iw@xxJtNFqV85NDi&N01?aT+vc|idA(`ywsQA(lVKI zEdbJktUc9vM%aii1A?N!#&vAwAWP?niLbT9qSdF>zAWGa7X<|XAjL1vSor_xTD z3ccU6??A`oVlopZMcfA!-I+t1gC}L4TN#Ot8b;u(K9&{Xj3Z2Ot{{KS+h7nJq-X+}ZKi<*OF!$p4pbQNCW^gWvJ_Eg ztv`9S@>dz}&J^uXt_l1#qef0dr8F`EHJAkz1`abaZAbp=nY?QiB*e6SuD@;P zx2m6W&2q0^zmE2!$p>WHVm(~42469>v$|=hVjqSB!bswnlAf>-T2LF`JoCKJmW~1+ zb6Ru(IBa#r-YJYG@BQ;n_rc|}_hXw1tpz15C^4D25C1mKjwWYMUH;a*P0uu(gXM0T z*)u-SS;&>A)0jI8vm~^bUwe_SVdTd^9sH|H!T=hDj}3YYb7Z~+?3*MSA8lQ5336e(xR6a1Da+$rYKS|B^C&+s%gRNVSOIL+O@S*b#im7bT5D(AQSe`QLwES zBF%ey_#iYRt)i_2+Cn3y5nf@R3J`o)B@VK#t;cnAZ5=TYjl$$JCcGpTsMnsGuS7jX zAYH&gT#fZ+XwJt4;G5zd8n{G zu<6oha$%by$rj$(Zya#r^%(GbOV)v0Uhb_6Eq;w6&ow7fbxeuT z#%q&o40cjMVq|G@!cJ>gDO*|ukdW0KioFmB#dciMa6xGCK?4TrTJPbq8T0rScfEYx zu>dTHEq$9Fnm{Bm&>C5qIus3f4ZGNc0BJe{uMvL{^vVzK2Ex|H&h>-LWKoA%*eU{t zOL_Ymb6>oftX8kK_Ev>a)LEplO zF{SoBD2((Jo()8B{Vad`O)Mf{Jv1-p&gLy|gbY*V`yj$;^0L8)=qkGMxbP5S{iJGw z*G?%aQLyS!wwZWbSVsFSP;0#@VE|^Zs}YV-B}}2km!VyA&|1;1ZOT#g>uqE|q9V-1 z(C(tba{Q5L3372{Shpjz_!d^G`ndwXR>1F|8m?~XHbRRRptO2k1F}&kP3Y`96qpGx zradk;p=1|%aqSRe^toR&HvZB%3?_F0VZ_=Hu|DW}_1ypR z-g|i%;$hYlY!0<_kB%hv4{cc$o;PM_7#$|-VR|Cb^{jjarq0-xp{Gd7|

reQ);D27IpPY&RV zmF6J%KW=4`o+y(79oJ>EJ55NOcw9<8PDhrE<2HmAUj@R9Ti-yF`2G(gHV~}Br}ai` zt4rweH$Ok7OU;hq=u9NBuT@lLbu54L*`wE)v96-7moNBl*K6nX5_jXzZn%?7E&y#D zdTe|z!@E*c(;|gYYem$0Qr`N34Sf4Fv`d~&rF*OVX>rK6pMCx>7aebhF$tE_;WafB z+kQCS9orr@#=jR0Zk>KZ*m@hGk0`1$tB{EEene!{CPrJULy4RAD_H*4n_G68h5s_K z$alU!WckwG&8zWY-|&_HF8KcC%f}^)ju7^Ttnhx=Om=Pu${Bw(=j<$a=ANqQ2Mbzc zq1zs10^4S!z`zt9hm5g`I7mY9qZxPt1C7IsLx_;yq@(3n&_KZ0O{Lol8rJk;F37Ti zQk*5P#yaqHEB_qczFR2#7*YNBAP5sTrIOx3Q> zkHM8?A{@og2IGn7_n`Ft z87=z|`uOv(@8favqDNt{cN7}&A92xNw)6uoSF=*#c&8CJ@sp=gMkBN(k{CL!J3OlJ zxJYa{u9--8jQDo}X57luXB5lw=;$X!mngq8l-TUBwKRfO3%8k5o;S<>*$znD2zkM{ z?Md(zIUZ`uJ}6r{F4=JM0IvLjsP!!E-5s%|0}xOt#u2n^)TrGA4{>;*<1&i!;%{Y4pS@yir_R^F;BuLG?wFdGcJJ5f;QsvaZhCosVqp9al~JqyrS!q3)ZJz z!kj`bY#44wp<%3MFt(A4qz(#b-fT=Bsl~-x#edgStga1y(S(>75Exo~Ju-@mG92)U zUb(ooZv;B3w6Yy$=Z6Er$&$_E5=E7PM$;9d z>T8UeSF9D`vQ_xy$JNGy?)XZ$-0?uXIr=t1TOHVBJh7>4BcF5c+&Tbhmsf5vk#YNW zK6^nnb6Km2uav7~Pw~MGtb(aQ1ts{fkPiNGv+#ZM%Jsq9--Z>M!o%68nw?*aDttaV zrE7e0SjQPjq~}16rLq;VzI}{4wgADFH;`euG8x@a5Gs5oRJKXF5Sp{p_c}Bj-+#De z1y;Tq>t!S!T^CADTxY$|`Qf0Q-PUKZclMdHbsY#YVvHAD{?^Tt$?1ZwFRoQe^NVX& z;q#i*NU;MpL0P7z12DAM9EguUCiUQRWvt`i=#{HTa-{S9Q4^BK+=b2-M0PHvo!y6z zTVA!HnF?ZChZy5mV0?_ZzsFb6F*cX33T)qZE`RH~E&pDA>5MIFw!9pv8Vh@t3o#pj zN-s@>PX>WAwyYYprf?HXS>usUtVt(BFZL869qaTLB8kIFBEhvr8~xEzsRj;F?uxJ; zjANe1kg;G{r1R|ojI6m6&6^2DTqO7(qpcpb##v)ZBd`gG$_)Oy>6qRdJgnW&`4AZw zXBI-hHrLe_u2oAjLsP!Sv(y

;7S{mDu=dn#{gu>jT&dZKX6zv9=bE;t%cc> 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 literal 0 HcmV?d00001 From da4aae9bd2c71849be356d2f195d863814355604 Mon Sep 17 00:00:00 2001 From: Peter Farber Date: Tue, 7 Jan 2025 13:18:07 -0500 Subject: [PATCH 003/364] changes for sam --- c_src/hb_beamr.c | 85 +++++++++++++++++++++++++----------------- src/dev_emscripten.erl | 11 +++++- 2 files changed, 60 insertions(+), 36 deletions(-) diff --git a/c_src/hb_beamr.c b/c_src/hb_beamr.c index 983206742..816ff4ea6 100644 --- a/c_src/hb_beamr.c +++ b/c_src/hb_beamr.c @@ -7,32 +7,49 @@ #include #include +// Structure to represent the response for an import operation typedef struct { - ErlDrvMutex* response_ready; - ErlDrvCond* cond; - int ready; - char* error_message; - ei_term* result_terms; - int result_length; + ErlDrvMutex* response_ready; // Mutex to synchronize response readiness + ErlDrvCond* cond; // Condition variable to signal readiness + int ready; // Flag indicating if the response is ready + char* error_message; // Error message (if any) + ei_term* result_terms; // List of result terms from the import + int result_length; // Length of the result_terms } ImportResponse; +// Structure to represent a WASM process instance typedef struct { - wasm_engine_t* engine; - wasm_instance_t* instance; - wasm_module_t* module; - wasm_store_t* store; - ErlDrvPort port; - ErlDrvTermData port_term; - ErlDrvMutex* is_running; - char* current_function; - ei_term* current_args; - int current_args_length; - ImportResponse* current_import; - ErlDrvTermData pid; - int is_initialized; - time_t start_time; + wasm_engine_t* engine; // WASM engine instance + wasm_instance_t* instance; // WASM instance + wasm_module_t* module; // WASM module + wasm_store_t* store; // WASM store + ErlDrvPort port; // Erlang port associated with this process + ErlDrvTermData port_term; // Erlang term representation of the port + ErlDrvMutex* is_running; // Mutex to track if the process is running + char* current_function; // Current function being executed + ei_term* current_args; // Arguments for the current function + int current_args_length; // Length of the current arguments + ImportResponse* current_import; // Import response structure + ErlDrvTermData pid; // PID of the Erlang process + int is_initialized; // Flag to check if the process is initialized + time_t start_time; // Start time of the process } Proc; +// Structure to represent an import hook +typedef struct { + char* module_name; // Name of the module + char* field_name; // Name of the field (function) + char* signature; // Function signature + Proc* proc; // The associated process + wasm_func_t* stub_func; // WASM function pointer for the import +} ImportHook; + +// Structure to represent the request for loading a WASM binary +typedef struct { + void* binary; // Binary data for the WASM module + long size; // Size of the binary + Proc* proc; // The associated process +} LoadWasmReq; // Structure for a common WASM module instance typedef struct WASMModuleInstanceCommon { @@ -70,20 +87,7 @@ struct wasm_func_t { WASMFunctionInstanceCommon *func_comm_rt; // Function instance data }; -typedef struct { - char* module_name; - char* field_name; - char* signature; - Proc* proc; - wasm_func_t* stub_func; -} ImportHook; - -typedef struct { - void* binary; - long size; - Proc* proc; -} LoadWasmReq; - +// Declare the atoms used in Erlang driver communication static ErlDrvTermData atom_ok; static ErlDrvTermData atom_error; static ErlDrvTermData atom_import; @@ -400,6 +404,19 @@ static int handle_wasm_function_call(wasm_exec_env_t exec_env, int function_inde return 0; } + +// Returns the string name corresponding to the wasm type +const char* get_wasm_type_name(wasm_valkind_t kind) { + switch (kind) { + case WASM_I32: return "i32"; + case WASM_I64: return "i64"; + case WASM_F32: return "f32"; + case WASM_F64: return "f64"; + default: return "unknown"; + } +} + + // Main function to invoke an exported function from the WASM instance static int invoke_exported_function(Proc* proc, const char *field_name, const wasm_val_vec_t* input_args, wasm_val_vec_t* output_results) { DRV_DEBUG("================================================="); diff --git a/src/dev_emscripten.erl b/src/dev_emscripten.erl index f970b2821..ca685101e 100644 --- a/src/dev_emscripten.erl +++ b/src/dev_emscripten.erl @@ -19,7 +19,14 @@ %%% %%% Where '_vjj' represents the type spec of the function. -module(dev_emscripten). --export([info/1, init/3]). +-export([info/1, init/3, router/4]). + + +-include("src/include/hb.hrl"). +-include_lib("eunit/include/eunit.hrl"). + +-hb_debug(print). + info(_) -> #{ @@ -53,4 +60,4 @@ router(<<"invoke_v", _/binary>>, Msg1, Msg2, Opts) -> hb_beamr:call(WASM, <<"_emscripten_stack_restore">>, [SP]), hb_beamr:call(WASM, <<"setThrew">>, [1, 0]), {error, Error} - end. \ No newline at end of file + end. From de60f70da2769536f292ef27e9042ea77ee01474 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Tue, 7 Jan 2025 22:42:54 +0100 Subject: [PATCH 004/364] wip: AOT BEAMR + indirect function calls --- c_src/hb_beamr.c | 197 +++++++++++----------- src/dev_emscripten.erl | 31 +++- src/dev_json_iface.erl | 5 + src/dev_wasm.erl | 8 +- src/hb_beamr.erl | 44 +++-- test/{core.aot => test-aos-2-pure-xs.aot} | Bin 6 files changed, 169 insertions(+), 116 deletions(-) rename test/{core.aot => test-aos-2-pure-xs.aot} (100%) diff --git a/c_src/hb_beamr.c b/c_src/hb_beamr.c index 816ff4ea6..b353ed4f9 100644 --- a/c_src/hb_beamr.c +++ b/c_src/hb_beamr.c @@ -27,6 +27,9 @@ typedef struct { ErlDrvTermData port_term; // Erlang term representation of the port ErlDrvMutex* is_running; // Mutex to track if the process is running char* current_function; // Current function being executed + long current_function_ix; // Index of the current function + int indirect_func_table_ix; // Index of the indirect function table + wasm_table_t* indirect_func_table; // Indirect function table ei_term* current_args; // Arguments for the current function int current_args_length; // Length of the current arguments ImportResponse* current_import; // Import response structure @@ -49,8 +52,11 @@ typedef struct { void* binary; // Binary data for the WASM module long size; // Size of the binary Proc* proc; // The associated process + char* mode; // Mode of the WASM module } LoadWasmReq; +// NO_PROD: Import these from headers instead + // Structure for a common WASM module instance typedef struct WASMModuleInstanceCommon { uint32_t module_type; // Type of the module @@ -94,7 +100,7 @@ static ErlDrvTermData atom_import; static ErlDrvTermData atom_execution_result; #ifndef HB_DEBUG -#define HB_DEBUG 0 +#define HB_DEBUG 1 #endif #define DRV_DEBUG(format, ...) beamr_print(HB_DEBUG, __FILE__, __LINE__, format, ##__VA_ARGS__) @@ -386,8 +392,6 @@ static void prepare_function_arguments(const wasm_val_vec_t *input_args, wasm_va DRV_DEBUG("Prepared %zu arguments for function call", prepared_args->size); } - - // Calls the specified WASM function using an indirect call static int handle_wasm_function_call(wasm_exec_env_t exec_env, int function_index, uint64_t argc, uint64_t* argv) { DRV_DEBUG("Calling WASM function with indirect call..."); @@ -418,116 +422,85 @@ const char* get_wasm_type_name(wasm_valkind_t kind) { // Main function to invoke an exported function from the WASM instance -static int invoke_exported_function(Proc* proc, const char *field_name, const wasm_val_vec_t* input_args, wasm_val_vec_t* output_results) { +static int async_indirect_call(Proc* proc) { DRV_DEBUG("================================================="); - DRV_DEBUG("Starting function invocation for field: %s", field_name); + DRV_DEBUG("Starting function invocation"); DRV_DEBUG("================================================="); int result = 0; - // Check if the field name is "invoke"; if not, exit early - if (strncmp(field_name, "invoke", 6) != 0) { - DRV_DEBUG("Field name '%s' is not an invoke operation", field_name); - return; - } - - // Retrieve exported functions from the WASM instance and module - wasm_extern_vec_t exported_externs; - wasm_instance_exports(proc->instance, &exported_externs); - - wasm_exporttype_vec_t export_types; - wasm_module_exports(proc->module, &export_types); + // Extract the function index from the input arguments + DRV_DEBUG("Function index retrieved from input_args: %d", proc->current_function_ix); - DRV_DEBUG("Retrieved %zu exported externs from the instance.", exported_externs.size); - DRV_DEBUG("Retrieved %zu export types from the module.", export_types.size); + // Get the function reference from the table and cast it to a function + wasm_ref_t* function_ref = wasm_table_get(proc->indirect_func_table, proc->current_function_ix); + const wasm_func_t* func = wasm_ref_as_func(function_ref); + DRV_DEBUG("Function pointer: %p", func); - // Iterate over the exported types and search for the indirect function table - for (int i = 0; i < export_types.size; i++) { - const wasm_exporttype_t* export = export_types.data[i]; - const wasm_name_t* export_name = wasm_exporttype_name(export); - - // Check if the export is the indirect function table - if (is_indirect_function_table(export_name->data)) { - DRV_DEBUG("-------------------------------------------------"); - DRV_DEBUG("Found indirect function table: %.*s", export_name->size, export_name->data); - DRV_DEBUG("-------------------------------------------------"); - - // Retrieve the function table and its limits - const wasm_externtype_t* export_type = wasm_exporttype_type(export); - const wasm_tabletype_t* table_type = wasm_externtype_as_tabletype_const(export_type); - const wasm_limits_t* table_limits = wasm_tabletype_limits(table_type); - DRV_DEBUG("Table limits: max=%d", table_limits->max); + // Retrieve the function type and log its parameters and results + const wasm_functype_t* function_type = wasm_func_type(func); + if (!function_type) { + DRV_DEBUG("Failed to retrieve function type for function at index %d", proc->current_function_ix); + return -1; + } - // Retrieve the indirect function table - const wasm_table_t* indirect_function_table = wasm_extern_as_table(exported_externs.data[i]); - - // Extract the function index from the input arguments - int function_index = input_args->data[0].of.i32; - DRV_DEBUG("Function index retrieved from input_args: %d", function_index); - - // Get the function reference from the table and cast it to a function - wasm_ref_t* function_ref = wasm_table_get(indirect_function_table, function_index); - const wasm_func_t* func = wasm_ref_as_func(function_ref); - DRV_DEBUG("Function pointer: %p", func); - - // Retrieve the function type and log its parameters and results - const wasm_functype_t* function_type = wasm_func_type(func); - if (!function_type) { - DRV_DEBUG("Failed to retrieve function type for function at index %d", function_index); - continue; - } + // Log the function's parameter types + const wasm_valtype_vec_t* param_types = wasm_functype_params(function_type); + DRV_DEBUG("Function at index %d has %zu parameters", proc->current_function_ix, param_types->size); + for (size_t j = 0; j < param_types->size; ++j) { + const wasm_valtype_t* param_type = param_types->data[j]; + wasm_valkind_t param_kind = wasm_valtype_kind(param_type); + DRV_DEBUG("Param %zu: %s", j, get_wasm_type_name(param_kind)); + } - // Log the function's parameter types - const wasm_valtype_vec_t* param_types = wasm_functype_params(function_type); - DRV_DEBUG("Function at index %d has %zu parameters", function_index, param_types->size); - for (size_t j = 0; j < param_types->size; ++j) { - const wasm_valtype_t* param_type = param_types->data[j]; - wasm_valkind_t param_kind = wasm_valtype_kind(param_type); - DRV_DEBUG("Param %zu: %s", j, get_wasm_type_name(param_kind)); - } + wasm_val_vec_t args, results; + wasm_val_vec_new_uninitialized(&args, param_types->size); + args.num_elems = param_types->num_elems; + // CONV: ei_term* -> wasm_val_vec_t + for(int i = 0; i < param_types->size; i++) { + args.data[i].kind = wasm_valtype_kind(param_types->data[i]); + } + int res = erl_terms_to_wasm_vals(&args, proc->current_args); - // Log the function's result types - const wasm_valtype_vec_t* result_types = wasm_functype_results(function_type); - DRV_DEBUG("Function at index %d has %zu results", function_index, result_types->size); - for (size_t k = 0; k < result_types->size; ++k) { - const wasm_valtype_t* result_type = result_types->data[k]; - wasm_valkind_t result_kind = wasm_valtype_kind(result_type); - DRV_DEBUG("Result %zu: %s", k, get_wasm_type_name(result_kind)); - } + for(int i = 0; i < args.size; i++) { + DRV_DEBUG("Arg %d: %d", i, args.data[i].of.i64); + DRV_DEBUG("Source term: %d", proc->current_args[i].value.i_val); + } - // Prepare the arguments for the function call - wasm_val_vec_t prepared_args; - prepare_function_arguments(input_args, &prepared_args); + // Log the function's result types + const wasm_valtype_vec_t* result_types = wasm_functype_results(function_type); + DRV_DEBUG("Function at index %d has %zu results", proc->current_function_ix, result_types->size); + for (size_t k = 0; k < result_types->size; ++k) { + const wasm_valtype_t* result_type = result_types->data[k]; + wasm_valkind_t result_kind = wasm_valtype_kind(result_type); + DRV_DEBUG("Result %zu: %s", k, get_wasm_type_name(result_kind)); + } - // Get the execution environment for the function - wasm_exec_env_t exec_env = wasm_runtime_get_exec_env_singleton(func->inst_comm_rt); - if (!exec_env) { - DRV_DEBUG("Failed to get execution environment"); - } + // Prepare the arguments for the function call + wasm_val_vec_t prepared_args; + prepare_function_arguments(&args, &prepared_args); + // Get the execution environment for the function + wasm_exec_env_t exec_env = wasm_runtime_get_exec_env_singleton(func->inst_comm_rt); + if (!exec_env) { + DRV_DEBUG("Failed to get execution environment"); + } - uint64_t argc = prepared_args.size; - uint64_t* argv = malloc(sizeof(uint64_t) * argc); - - // Convert prepared arguments to an array of 64-bit integers - for (uint64_t i = 0; i < argc; ++i) { - argv[i] = prepared_args.data[i].of.i64; - } + uint64_t argc = args.size; + uint64_t* argv = malloc(sizeof(uint64_t) * argc); + + // Convert prepared arguments to an array of 64-bit integers + for (uint64_t i = 0; i < argc; ++i) { + argv[i] = args.data[i].of.i64; + } - result = handle_wasm_function_call(exec_env, function_index, argc, argv); - + result = handle_wasm_function_call(exec_env, proc->current_function_ix, argc, argv); - // Free allocated memory - free(argv); - free(prepared_args.data); - DRV_DEBUG("Function call completed successfully"); - } - } + // Free allocated memory + free(argv); + DRV_DEBUG("Function call completed successfully"); - DRV_DEBUG("================================================="); - DRV_DEBUG("Invoke function completed successfully for field: %s", field_name); - DRV_DEBUG("=================================================\n"); return result; } @@ -636,7 +609,14 @@ static void async_init(void* raw) { wasm_runtime_set_log_level(WASM_LOG_LEVEL_ERROR); #endif - wasm_runtime_set_default_running_mode(Mode_Interp); // TODO: Remove this line when using AOT + DRV_DEBUG("Mode: %s", mod_bin->mode); + + if(strcmp(mod_bin->mode, "wasm") == 0) { + DRV_DEBUG("Using WASM mode."); + wasm_runtime_set_default_running_mode(Mode_Interp); + } else { + DRV_DEBUG("Using AOT mode."); + } proc->engine = wasm_engine_new(); DRV_DEBUG("Created engine"); @@ -753,6 +733,17 @@ static void async_init(void* raw) { const wasm_externtype_t* type = wasm_exporttype_type(export); char* kind_str = (char*) wasm_externtype_to_kind_string(type); + // Check if the export is the indirect function table + if (is_indirect_function_table(name->data)) { + DRV_DEBUG("Found indirect function table: %s. Index: %d", name->data, i); + proc->indirect_func_table_ix = i; + const wasm_tabletype_t* table_type = wasm_externtype_as_tabletype_const(type); + const wasm_limits_t* table_limits = wasm_tabletype_limits(table_type); + // Retrieve the indirect function table + proc->indirect_func_table = wasm_extern_as_table(exports.data[i]); + } + + char* type_str = driver_alloc(256); get_function_sig(type, type_str); DRV_DEBUG("Export: %s [%s] -> %s", name->data, kind_str, type_str); @@ -989,15 +980,20 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) proc->pid = driver_caller(proc->port); //DRV_DEBUG("Caller PID: %d", proc->pid); int size, type; + char* mode; ei_get_type(buff, &index, &type, &size); //DRV_DEBUG("WASM binary size: %d bytes. Type: %c", size, type); void* wasm_binary = driver_alloc(size); long size_l = (long)size; ei_decode_binary(buff, &index, wasm_binary, &size_l); + ei_get_type(buff, &index, &type, &size); + mode = driver_alloc(size); + ei_decode_atom(buff, &index, mode); LoadWasmReq* mod_bin = driver_alloc(sizeof(LoadWasmReq)); mod_bin->proc = proc; mod_bin->binary = wasm_binary; mod_bin->size = size; + mod_bin->mode = mode; //DRV_DEBUG("Calling for async thread to init"); driver_async(proc->port, NULL, async_init, mod_bin, NULL); } else if (strcmp(command, "call") == 0) { @@ -1015,6 +1011,15 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) proc->current_args = decode_list(buff, &index); driver_async(proc->port, NULL, async_call, proc, NULL); + } else if (strcmp(command, "indirect_call") == 0) { + if (!proc->is_initialized) { + send_error(proc, "Cannot run WASM indirect function as module not initialized."); + return; + } + DRV_DEBUG("Decoding indirect call"); + ei_decode_long(buff, &index, &proc->current_function_ix); + proc->current_args = decode_list(buff, &index); + driver_async(proc->port, NULL, async_indirect_call, proc, NULL); } else if (strcmp(command, "import_response") == 0) { // Handle import response // TODO: We should probably start a mutex on the current_import object here. diff --git a/src/dev_emscripten.erl b/src/dev_emscripten.erl index ca685101e..850f50d38 100644 --- a/src/dev_emscripten.erl +++ b/src/dev_emscripten.erl @@ -27,7 +27,6 @@ -hb_debug(print). - info(_) -> #{ handler => fun router/4 @@ -47,17 +46,43 @@ init(M1, _M2, Opts) -> ), {ok, MsgWithLib}. -router(<<"invoke_v", _/binary>>, Msg1, Msg2, Opts) -> +router(<<"invoke_", _/binary>>, Msg1, Msg2, Opts) -> + ?event(debug, invoke_emscripten), State = hb_converge:get(<<"State">>, Msg1, #{ hashpath => ignore }), WASM = dev_wasm:instance(State, Msg2, Opts), [Index|Args] = hb_converge:get(args, Msg2, #{ hashpath => ignore }), + ?event(debug, invoke_emscripten_stack_get_current), {ok, SP, _} = hb_beamr:call(WASM, <<"emscripten_stack_get_current">>, []), + ?event(debug, invoke_emscripten_stack_get_current_done), ImportResolver = hb_private:get(<<"WASM/Import-Resolver">>, State, Opts), try - hb_beamr:call(WASM, <<"_indirect:", Index/binary>>, Args, ImportResolver, State, Opts) + ?event(debug, trying_indirect_call), + Res = hb_beamr:call(WASM, Index, Args, ImportResolver, State, Opts), + ?event(debug, try_succeeded), + Res catch _:Error -> + ?event(debug, calling_emscripten_stack_restore), hb_beamr:call(WASM, <<"_emscripten_stack_restore">>, [SP]), + ?event(debug, calling_set_threw), hb_beamr:call(WASM, <<"setThrew">>, [1, 0]), + ?event(debug, calling_set_threw_done), {error, Error} end. + +%%% Tests + +%% @doc Ensure that an AOS Emscripten-style WASM AOT module can be invoked +%% with a function reference. +emscripten_aot_test() -> + Msg = dev_json_iface:generate_stack("test/test-aos-2-pure-xs.aot", <<"AOT">>), + Proc = hb_converge:get(<<"Process">>, Msg, #{ hashpath => ignore }), + ProcID = hb_converge:get(id, Proc, #{}), + {ok, Msg3} = + hb_converge:resolve( + Msg, + dev_json_iface:generate_aos_msg(ProcID, <<"return 1+1">>), + #{} + ), + Data = hb_converge:get(<<"Results/Data">>, Msg3, #{}), + ?assertEqual(<<"2">>, Data). \ No newline at end of file diff --git a/src/dev_json_iface.erl b/src/dev_json_iface.erl index 85eb7f196..188481b59 100644 --- a/src/dev_json_iface.erl +++ b/src/dev_json_iface.erl @@ -36,6 +36,8 @@ -module(dev_json_iface). -export([init/3, compute/3]). +%%% Test helper exports: +-export([generate_stack/1, generate_stack/2, generate_aos_msg/2]). -include_lib("eunit/include/eunit.hrl"). -include("include/hb.hrl"). @@ -204,6 +206,8 @@ test_init() -> application:ensure_all_started(hb). generate_stack(File) -> + generate_stack(File, <<"WASM">>). +generate_stack(File, Mode) -> test_init(), Wallet = hb:wallet(), Msg0 = dev_wasm:cache_wasm_image(File), @@ -225,6 +229,7 @@ generate_stack(File) -> hb_message:sign(#{ <<"Type">> => <<"Process">>, <<"Image">> => Image, + <<"Mode">> => Mode, <<"Scheduler">> => hb:address(), <<"Authority">> => hb:address() }, Wallet) diff --git a/src/dev_wasm.erl b/src/dev_wasm.erl index 33e8458ad..349350e83 100644 --- a/src/dev_wasm.erl +++ b/src/dev_wasm.erl @@ -82,8 +82,14 @@ init(M1, M2, Opts) -> ?event(wasm_image_binary_directly_provided), Image end, + Mode = + case hb_converge:get(<>, M1, Opts) of + not_found -> wasm; + <<"WASM">> -> wasm; + <<"AOT">> -> aot + end, % Start the WASM executor. - {ok, Instance, _Imports, _Exports} = hb_beamr:start(ImageBin), + {ok, Instance, _Imports, _Exports} = hb_beamr:start(ImageBin, Mode), % Set the WASM Instance, handler, and standard library invokation function. ?event({setting_wasm_instance, Instance, {prefix, Prefix}}), {ok, diff --git a/src/hb_beamr.erl b/src/hb_beamr.erl index 5178f1daf..9d35ab189 100644 --- a/src/hb_beamr.erl +++ b/src/hb_beamr.erl @@ -51,7 +51,7 @@ %%% are welcome. -module(hb_beamr). %%% Control API: --export([start/1, call/3, call/4, call/5, call/6, stop/1, wasm_send/2]). +-export([start/1, start/2, call/3, call/4, call/5, call/6, stop/1, wasm_send/2]). %%% Utility API: -export([serialize/1, deserialize/2, stub/3]). @@ -67,14 +67,18 @@ load_driver() -> end. %% @doc Start a WASM executor context. Yields a port to the LID, and the -%% imports and exports of the WASM module. +%% imports and exports of the WASM module. Optionally, specify a mode +%% (wasm or aot) to indicate the type of WASM module being loaded. start(WasmBinary) when is_binary(WasmBinary) -> + start(WasmBinary, wasm). +start(WasmBinary, Mode) when is_binary(WasmBinary) -> + ?event(debug, {loading_module, {bytes, byte_size(WasmBinary)}, Mode}), Self = self(), WASM = spawn( fun() -> ok = load_driver(), Port = open_port({spawn, "hb_beamr"}, []), - Port ! {self(), {command, term_to_binary({init, WasmBinary})}}, + Port ! {self(), {command, term_to_binary({init, WasmBinary, Mode})}}, ?event({waiting_for_init_from, Port}), worker(Port, Self) end @@ -129,19 +133,19 @@ stop(WASM) when is_pid(WASM) -> ok. %% @doc Call a function in the WASM executor (see moduledoc for more details). -call(PID, FunctionName, Args) -> - {ok, Res, _} = call(PID, FunctionName, Args, fun stub/3), +call(PID, FuncRef, Args) -> + {ok, Res, _} = call(PID, FuncRef, Args, fun stub/3), {ok, Res}. -call(PID, FunctionName, Args, ImportFun) -> - call(PID, FunctionName, Args, ImportFun, #{}). -call(PID, FunctionName, Args, ImportFun, StateMsg) -> - call(PID, FunctionName, Args, ImportFun, StateMsg, #{}). -call(PID, FunctionName, Args, ImportFun, StateMsg, Opts) - when is_binary(FunctionName) -> - call(PID, binary_to_list(FunctionName), Args, ImportFun, StateMsg, Opts); -call(WASM, FunctionName, Args, ImportFun, StateMsg, Opts) +call(PID, FuncRef, Args, ImportFun) -> + call(PID, FuncRef, Args, ImportFun, #{}). +call(PID, FuncRef, Args, ImportFun, StateMsg) -> + call(PID, FuncRef, Args, ImportFun, StateMsg, #{}). +call(PID, FuncRef, Args, ImportFun, StateMsg, Opts) + when is_binary(FuncRef) -> + call(PID, binary_to_list(FuncRef), Args, ImportFun, StateMsg, Opts); +call(WASM, FuncRef, Args, ImportFun, StateMsg, Opts) when is_pid(WASM) - andalso is_list(FunctionName) + andalso (is_list(FuncRef) or is_integer(FuncRef)) andalso is_list(Args) andalso is_function(ImportFun) andalso is_map(Opts) -> @@ -150,13 +154,21 @@ call(WASM, FunctionName, Args, ImportFun, StateMsg, Opts) ?event( {call_started, WASM, - FunctionName, + FuncRef, Args, ImportFun, StateMsg, Opts}), wasm_send(WASM, - {command, term_to_binary({call, FunctionName, Args})}), + {command, + term_to_binary( + case is_integer(FuncRef) of + true -> {indirect_call, FuncRef, Args}; + false -> {call, FuncRef, Args} + end + ) + } + ), ?event({waiting_for_call_result, self(), WASM}), monitor_call(WASM, ImportFun, StateMsg, Opts); false -> diff --git a/test/core.aot b/test/test-aos-2-pure-xs.aot similarity index 100% rename from test/core.aot rename to test/test-aos-2-pure-xs.aot From 24c88f5b19c039dc023f5def9b02051eaa681340 Mon Sep 17 00:00:00 2001 From: Peter Farber Date: Tue, 7 Jan 2025 17:38:21 -0500 Subject: [PATCH 005/364] updated makefile | added a seperate size var for mode in c --- Makefile | 10 ++++++++-- c_src/hb_beamr.c | 6 +++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index f8c9a6cda..fe79a0e59 100644 --- a/Makefile +++ b/Makefile @@ -58,15 +58,21 @@ $(WAMR_DIR)/lib/libvmlib.a: $(WAMR_DIR) -B $(WAMR_DIR)/lib \ -DWAMR_BUILD_TARGET=$(WAMR_BUILD_TARGET) \ -DWAMR_BUILD_PLATFORM=$(WAMR_BUILD_PLATFORM) \ - -DWAMR_BUILD_LIBC_WASI=0 \ -DWAMR_BUILD_MEMORY64=1 \ -DWAMR_DISABLE_HW_BOUND_CHECK=1 \ -DWAMR_BUILD_EXCE_HANDLING=1 \ -DWAMR_BUILD_SHARED_MEMORY=0 \ -DWAMR_BUILD_AOT=1 \ + -DWAMR_BUILD_LIBC_WASI=0 \ -DWAMR_BUILD_FAST_INTERP=0 \ -DWAMR_BUILD_INTERP=1 \ - -DWAMR_BUILD_JIT=0 + -DWAMR_BUILD_JIT=0 \ + -DWAMR_BUILD_FAST_JIT=0 \ + -DWAMR_BUILD_DEBUG_AOT=1 \ + -DWAMR_BUILD_TAIL_CALL=1 \ + -DWAMR_BUILD_AOT_STACK_FRAME=1 \ + -DWAMR_BUILD_MEMORY_PROFILING=1 \ + -DWAMR_BUILD_DUMP_CALL_STACK=1 make -C $(WAMR_DIR)/lib -j8 # $(GITHOOKS_DIR)/_/setup: diff --git a/c_src/hb_beamr.c b/c_src/hb_beamr.c index b353ed4f9..9182e506d 100644 --- a/c_src/hb_beamr.c +++ b/c_src/hb_beamr.c @@ -979,15 +979,15 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) // Start async initialization proc->pid = driver_caller(proc->port); //DRV_DEBUG("Caller PID: %d", proc->pid); - int size, type; + int size, type, mode_size; char* mode; ei_get_type(buff, &index, &type, &size); //DRV_DEBUG("WASM binary size: %d bytes. Type: %c", size, type); void* wasm_binary = driver_alloc(size); long size_l = (long)size; ei_decode_binary(buff, &index, wasm_binary, &size_l); - ei_get_type(buff, &index, &type, &size); - mode = driver_alloc(size); + ei_get_type(buff, &index, &type, &mode_size); + mode = driver_alloc(mode_size); ei_decode_atom(buff, &index, mode); LoadWasmReq* mod_bin = driver_alloc(sizeof(LoadWasmReq)); mod_bin->proc = proc; From 8e29a37a8cd4a4dd4d7e734d2da4078f4452d93f Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 8 Jan 2025 15:15:18 +0100 Subject: [PATCH 006/364] fix: AOS stack in `dev_emscripten` should contain the Emscripten device --- src/dev_emscripten.erl | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/dev_emscripten.erl b/src/dev_emscripten.erl index 850f50d38..093193ee1 100644 --- a/src/dev_emscripten.erl +++ b/src/dev_emscripten.erl @@ -72,6 +72,36 @@ router(<<"invoke_", _/binary>>, Msg1, Msg2, Opts) -> %%% Tests +generate_stack(File) -> + Wallet = hb:wallet(), + Msg0 = dev_wasm:cache_wasm_image(File), + Image = hb_converge:get(<<"Image">>, Msg0, #{}), + Msg1 = Msg0#{ + device => <<"Stack/1.0">>, + <<"Device-Stack">> => + [ + <<"WASI/1.0">>, + <<"JSON-Iface/1.0">>, + <<"Emscripten/1.0">>, + <<"WASM-64/1.0">>, + <<"Multipass/1.0">> + ], + <<"Input-Prefix">> => <<"Process">>, + <<"Output-Prefix">> => <<"WASM">>, + <<"Passes">> => 2, + <<"Stack-Keys">> => [<<"Init">>, <<"Compute">>], + <<"Process">> => + hb_message:sign(#{ + <<"Type">> => <<"Process">>, + <<"Image">> => Image, + <<"Mode">> => <<"AOT">>, + <<"Scheduler">> => hb:address(), + <<"Authority">> => hb:address() + }, Wallet) + }, + {ok, Msg2} = hb_converge:resolve(Msg1, <<"Init">>, #{}), + Msg2. + %% @doc Ensure that an AOS Emscripten-style WASM AOT module can be invoked %% with a function reference. emscripten_aot_test() -> From 419448e3a0455c6b7afe8810d21d58233b01fac9 Mon Sep 17 00:00:00 2001 From: Peter Farber Date: Fri, 10 Jan 2025 13:49:51 -0500 Subject: [PATCH 007/364] aot implementation | still need to fix stack save/restore --- .gitignore | 3 +- c_src/hb_beamr.c | 924 +----------------------------------- c_src/hb_driver.c | 39 ++ c_src/hb_helpers.c | 205 ++++++++ c_src/hb_logging.c | 36 ++ c_src/hb_wasm.c | 577 ++++++++++++++++++++++ c_src/include/hb_core.h | 102 ++++ c_src/include/hb_driver.h | 47 ++ c_src/include/hb_helpers.h | 133 ++++++ c_src/include/hb_logging.h | 41 ++ c_src/include/hb_wasm.h | 66 +++ rebar.config | 8 +- src/dev_emscripten.erl | 28 +- src/dev_wasi.erl | 4 +- test/test-aos-2-pure-xs.aot | Bin 1491088 -> 1490984 bytes 15 files changed, 1298 insertions(+), 915 deletions(-) create mode 100644 c_src/hb_driver.c create mode 100644 c_src/hb_helpers.c create mode 100644 c_src/hb_logging.c create mode 100644 c_src/hb_wasm.c create mode 100644 c_src/include/hb_core.h create mode 100644 c_src/include/hb_driver.h create mode 100644 c_src/include/hb_helpers.h create mode 100644 c_src/include/hb_logging.h create mode 100644 c_src/include/hb_wasm.h diff --git a/.gitignore b/.gitignore index ff540b3bf..e96e8a799 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ node_modules *.bin !.vscode/* +.vscode/c_cpp_properties.json c_src/*.o c_src/*.d @@ -33,6 +34,6 @@ priv/* .DS_STORE TEST-data* test-cache/* -TEST-cache-** +TEST-cache**/** .githooks/_/.setup diff --git a/c_src/hb_beamr.c b/c_src/hb_beamr.c index 9182e506d..78c25d60a 100644 --- a/c_src/hb_beamr.c +++ b/c_src/hb_beamr.c @@ -1,890 +1,13 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -// Structure to represent the response for an import operation -typedef struct { - ErlDrvMutex* response_ready; // Mutex to synchronize response readiness - ErlDrvCond* cond; // Condition variable to signal readiness - int ready; // Flag indicating if the response is ready - char* error_message; // Error message (if any) - ei_term* result_terms; // List of result terms from the import - int result_length; // Length of the result_terms -} ImportResponse; - -// Structure to represent a WASM process instance -typedef struct { - wasm_engine_t* engine; // WASM engine instance - wasm_instance_t* instance; // WASM instance - wasm_module_t* module; // WASM module - wasm_store_t* store; // WASM store - ErlDrvPort port; // Erlang port associated with this process - ErlDrvTermData port_term; // Erlang term representation of the port - ErlDrvMutex* is_running; // Mutex to track if the process is running - char* current_function; // Current function being executed - long current_function_ix; // Index of the current function - int indirect_func_table_ix; // Index of the indirect function table - wasm_table_t* indirect_func_table; // Indirect function table - ei_term* current_args; // Arguments for the current function - int current_args_length; // Length of the current arguments - ImportResponse* current_import; // Import response structure - ErlDrvTermData pid; // PID of the Erlang process - int is_initialized; // Flag to check if the process is initialized - time_t start_time; // Start time of the process -} Proc; - -// Structure to represent an import hook -typedef struct { - char* module_name; // Name of the module - char* field_name; // Name of the field (function) - char* signature; // Function signature - Proc* proc; // The associated process - wasm_func_t* stub_func; // WASM function pointer for the import -} ImportHook; - -// Structure to represent the request for loading a WASM binary -typedef struct { - void* binary; // Binary data for the WASM module - long size; // Size of the binary - Proc* proc; // The associated process - char* mode; // Mode of the WASM module -} LoadWasmReq; - -// NO_PROD: Import these from headers instead - -// Structure for a common WASM module instance -typedef struct WASMModuleInstanceCommon { - uint32_t module_type; // Type of the module - uint8_t module_inst_data[1]; // Module instance data -} WASMModuleInstanceCommon; - -// Structure to store host information about the WASM instance -struct wasm_host_info { - void *info; // Pointer to host info - void (*finalizer)(void *); // Finalizer function for the host info -}; - -// Structure representing a WASM function (extended with host-specific details) -struct wasm_func_t { - wasm_store_t *store; // WASM store - wasm_name_t *module_name; // Module name for the function - wasm_name_t *name; // Function name - uint16_t kind; // Function kind (e.g., export) - struct wasm_host_info host_info; // Host-specific information - wasm_functype_t *type; // Function type (parameters and results) - uint16_t param_count; // Number of parameters - uint16_t result_count; // Number of results - bool with_env; // Whether the function has an environment - union { - wasm_func_callback_t cb; // Callback function - struct callback_ext { - void *env; // Environment for the callback - wasm_func_callback_with_env_t cb; // Callback function with environment - void (*finalizer)(void *); // Finalizer for the callback - } cb_env; - } u; - uint16_t func_idx_rt; // Function index in the runtime - WASMModuleInstanceCommon *inst_comm_rt; // Module instance data - WASMFunctionInstanceCommon *func_comm_rt; // Function instance data -}; +#include "include/hb_helpers.h" +#include "include/hb_logging.h" +#include "include/hb_driver.h" +#include "include/hb_wasm.h" // Declare the atoms used in Erlang driver communication -static ErlDrvTermData atom_ok; -static ErlDrvTermData atom_error; -static ErlDrvTermData atom_import; -static ErlDrvTermData atom_execution_result; - -#ifndef HB_DEBUG -#define HB_DEBUG 1 -#endif - -#define DRV_DEBUG(format, ...) beamr_print(HB_DEBUG, __FILE__, __LINE__, format, ##__VA_ARGS__) -#define DRV_PRINT(format, ...) beamr_print(1, __FILE__, __LINE__, format, ##__VA_ARGS__) - -void beamr_print(int print, const char* file, int line, const char* format, ...) { - va_list args; - va_start(args, format); - if(print) { - pthread_t thread_id = pthread_self(); - printf("[DBG#%p @ %s:%d] ", thread_id, file, line); - vprintf(format, args); - printf("\r\n"); - } - va_end(args); -} - -const char* wasm_externtype_to_kind_string(const wasm_externtype_t* type) { - switch (wasm_externtype_kind(type)) { - case WASM_EXTERN_FUNC: return "func"; - case WASM_EXTERN_GLOBAL: return "global"; - case WASM_EXTERN_TABLE: return "table"; - case WASM_EXTERN_MEMORY: return "memory"; - default: return "unknown"; - } -} - -// Helper function to convert wasm_valtype_t to char -char wasm_valtype_kind_to_char(const wasm_valtype_t* valtype) { - switch (wasm_valtype_kind(valtype)) { - case WASM_I32: return 'i'; - case WASM_I64: return 'I'; - case WASM_F32: return 'f'; - case WASM_F64: return 'F'; - case WASM_EXTERNREF: return 'e'; - case WASM_V128: return 'v'; - case WASM_FUNCREF: return 'f'; - default: return 'u'; - } -} - -int wasm_val_to_erl_term(ErlDrvTermData* term, const wasm_val_t* val) { - DRV_DEBUG("Adding wasm val to erl term"); - DRV_DEBUG("Val of: %d", val->of.i32); - switch (val->kind) { - case WASM_I32: - term[0] = ERL_DRV_INT; - term[1] = val->of.i32; - return 2; - case WASM_I64: - term[0] = ERL_DRV_INT64; - term[1] = (ErlDrvTermData) &val->of.i64; - return 2; - case WASM_F32: - term[0] = ERL_DRV_FLOAT; - term[1] = (ErlDrvTermData) &val->of.f32; - return 2; - case WASM_F64: - term[0] = ERL_DRV_FLOAT; - term[1] = (ErlDrvTermData) &val->of.f64; - return 2; - default: - DRV_DEBUG("Unsupported result type: %d", val->kind); - return 0; - } -} - -int erl_term_to_wasm_val(wasm_val_t* val, ei_term* term) { - DRV_DEBUG("Converting erl term to wasm val. Term: %d. Size: %d", term->value.i_val, term->size); - switch (val->kind) { - case WASM_I32: - val->of.i32 = (int) term->value.i_val; - break; - case WASM_I64: - val->of.i64 = (long) term->value.i_val; - break; - case WASM_F32: - val->of.f32 = (float) term->value.d_val; - break; - case WASM_F64: - val->of.f64 = term->value.d_val; - break; - default: - DRV_DEBUG("Unsupported parameter type: %d", val->kind); - return -1; - } - return 0; -} - -int erl_terms_to_wasm_vals(wasm_val_vec_t* vals, ei_term* terms) { - DRV_DEBUG("Converting erl terms to wasm vals"); - DRV_DEBUG("Vals: %d", vals->size); - for(int i = 0; i < vals->size; i++) { - DRV_DEBUG("Converting term %d: %p", i, &vals->data[i]); - int res = erl_term_to_wasm_val(&vals->data[i], &terms[i]); - if(res == -1) { - DRV_DEBUG("Failed to convert term to wasm val"); - return -1; - } - } - return 0; -} - -ei_term* decode_list(char* buff, int* index) { - int arity, type; - - if(ei_get_type(buff, index, &type, &arity) == -1) { - DRV_DEBUG("Failed to get type"); - return NULL; - } - DRV_DEBUG("Decoded header. Arity: %d", arity); - - ei_term* res = driver_alloc(sizeof(ei_term) * arity); - - if(type == ERL_LIST_EXT) { - //DRV_DEBUG("Decoding list"); - ei_decode_list_header(buff, index, &arity); - //DRV_DEBUG("Decoded list header. Arity: %d", arity); - for(int i = 0; i < arity; i++) { - ei_decode_ei_term(buff, index, &res[i]); - DRV_DEBUG("Decoded term (assuming int) %d: %d", i, res[i].value.i_val); - } - } - else if(type == ERL_STRING_EXT) { - //DRV_DEBUG("Decoding list encoded as string"); - unsigned char* str = driver_alloc(arity * sizeof(char) + 1); - ei_decode_string(buff, index, str); - for(int i = 0; i < arity; i++) { - res[i].ei_type = ERL_INTEGER_EXT; - res[i].value.i_val = (long) str[i]; - DRV_DEBUG("Decoded term %d: %d", i, res[i].value.i_val); - } - driver_free(str); - } - else { - DRV_DEBUG("Unknown type: %d", type); - return NULL; - } - - return res; -} - -int get_function_sig(const wasm_externtype_t* type, char* type_str) { - if (wasm_externtype_kind(type) == WASM_EXTERN_FUNC) { - const wasm_functype_t* functype = wasm_externtype_as_functype_const(type); - const wasm_valtype_vec_t* params = wasm_functype_params(functype); - const wasm_valtype_vec_t* results = wasm_functype_results(functype); - - if(!params || !results) { - DRV_DEBUG("Export function params/results are NULL"); - return 0; - } - - type_str[0] = '('; - size_t offset = 1; - - for (size_t i = 0; i < params->size; i++) { - type_str[offset++] = wasm_valtype_kind_to_char(params->data[i]); - } - type_str[offset++] = ')'; - - for (size_t i = 0; i < results->size; i++) { - type_str[offset++] = wasm_valtype_kind_to_char(results->data[i]); - } - type_str[offset] = '\0'; - - return 1; - } - return 0; -} - -void drv_lock(ErlDrvMutex* mutex) { - DRV_DEBUG("Locking: %s", erl_drv_mutex_name(mutex)); - erl_drv_mutex_lock(mutex); - DRV_DEBUG("Locked: %s", erl_drv_mutex_name(mutex)); -} - -void drv_unlock(ErlDrvMutex* mutex) { - DRV_DEBUG("Unlocking: %s", erl_drv_mutex_name(mutex)); - erl_drv_mutex_unlock(mutex); - DRV_DEBUG("Unlocked: %s", erl_drv_mutex_name(mutex)); -} - -void drv_signal(ErlDrvMutex* mut, ErlDrvCond* cond, int* ready) { - DRV_DEBUG("Signaling: %s. Pre-signal ready state: %d", erl_drv_cond_name(cond), *ready); - drv_lock(mut); - *ready = 1; - erl_drv_cond_signal(cond); - drv_unlock(mut); - DRV_DEBUG("Signaled: %s. Post-signal ready state: %d", erl_drv_cond_name(cond), *ready); -} - -void drv_wait(ErlDrvMutex* mut, ErlDrvCond* cond, int* ready) { - DRV_DEBUG("Started to wait: %s. Ready: %d", erl_drv_cond_name(cond), *ready); - DRV_DEBUG("Mutex: %s", erl_drv_mutex_name(mut)); - drv_lock(mut); - while (!*ready) { - DRV_DEBUG("Waiting: %s", erl_drv_cond_name(cond)); - erl_drv_cond_wait(cond, mut); - DRV_DEBUG("Woke up: Ready: %d", *ready); - } - drv_unlock(mut); - DRV_DEBUG("Finish waiting: %s", erl_drv_cond_name(cond)); -} - -wasm_func_t* get_exported_function(Proc* proc, const char* target_name) { - wasm_extern_vec_t exports; - wasm_instance_exports(proc->instance, &exports); - wasm_exporttype_vec_t export_types; - wasm_module_exports(proc->module, &export_types); - wasm_func_t* func = NULL; - - for (size_t i = 0; i < exports.size; ++i) { - wasm_extern_t* ext = exports.data[i]; - if (wasm_extern_kind(ext) == WASM_EXTERN_FUNC) { - const wasm_name_t* exp_name = wasm_exporttype_name(export_types.data[i]); - if (exp_name && exp_name->size == strlen(target_name) + 1 && - strncmp(exp_name->data, target_name, exp_name->size - 1) == 0) { - func = wasm_extern_as_func(ext); - break; - } - } - } - - return func; -} - -wasm_memory_t* get_memory(Proc* proc) { - wasm_extern_vec_t exports; - wasm_instance_exports(proc->instance, &exports); - for (size_t i = 0; i < exports.size; i++) { - if (wasm_extern_kind(exports.data[i]) == WASM_EXTERN_MEMORY) { - return wasm_extern_as_memory(exports.data[i]); - } - } - return NULL; -} - -long get_memory_size(Proc* proc) { - wasm_memory_t* memory = get_memory(proc); - return wasm_memory_size(memory) * 65536; -} - -void send_error(Proc* proc, const char* message_fmt, ...) { - va_list args; - va_start(args, message_fmt); - char* message = driver_alloc(256); - vsnprintf(message, 256, message_fmt, args); - DRV_DEBUG("Sending error message: %s", message); - ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * 7); - int msg_index = 0; - msg[msg_index++] = ERL_DRV_ATOM; - msg[msg_index++] = atom_error; - msg[msg_index++] = ERL_DRV_STRING; - msg[msg_index++] = (ErlDrvTermData)message; - msg[msg_index++] = strlen(message); - msg[msg_index++] = ERL_DRV_TUPLE; - msg[msg_index++] = 2; - - int msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); - DRV_DEBUG("Sent error message. Res: %d", msg_res); - va_end(args); -} - - -// Checks if the given export name corresponds to the indirect function table -static bool is_indirect_function_table(const char *export_name) { - return strcmp(export_name, "__indirect_function_table") == 0; -} - -// Prepares the function arguments by removing the first argument (function index) -static void prepare_function_arguments(const wasm_val_vec_t *input_args, wasm_val_vec_t *prepared_args) { - // If there are no arguments or only one argument (function index), no preparation is needed - if (input_args->size <= 1) { - DRV_DEBUG("Not enough arguments to create new wasm_val_vec_t"); - return; - } - - // Allocate memory for the prepared arguments - wasm_val_t* prepared_data = malloc(sizeof(wasm_val_t) * (input_args->size - 1)); - - // Copy the arguments starting from the second element (skip function index) - for (size_t i = 1; i < input_args->size; ++i) { - prepared_data[i - 1] = input_args->data[i]; - } - - // Create a new wasm_val_vec_t with the prepared arguments - wasm_val_vec_new(prepared_args, input_args->size - 1, prepared_data); - DRV_DEBUG("Prepared %zu arguments for function call", prepared_args->size); -} - -// Calls the specified WASM function using an indirect call -static int handle_wasm_function_call(wasm_exec_env_t exec_env, int function_index, uint64_t argc, uint64_t* argv) { - DRV_DEBUG("Calling WASM function with indirect call..."); - - // Attempt to call the function and check for any exceptions - if (!wasm_runtime_call_indirect(exec_env, function_index, argc, argv)) { - if (wasm_runtime_get_exception(exec_env)) { - DRV_DEBUG("%s", wasm_runtime_get_exception(exec_env)); - } - DRV_DEBUG("WASM function call failed"); - return -1; - } - - return 0; -} - - -// Returns the string name corresponding to the wasm type -const char* get_wasm_type_name(wasm_valkind_t kind) { - switch (kind) { - case WASM_I32: return "i32"; - case WASM_I64: return "i64"; - case WASM_F32: return "f32"; - case WASM_F64: return "f64"; - default: return "unknown"; - } -} - - -// Main function to invoke an exported function from the WASM instance -static int async_indirect_call(Proc* proc) { - DRV_DEBUG("================================================="); - DRV_DEBUG("Starting function invocation"); - DRV_DEBUG("================================================="); - - int result = 0; - - // Extract the function index from the input arguments - DRV_DEBUG("Function index retrieved from input_args: %d", proc->current_function_ix); - - // Get the function reference from the table and cast it to a function - wasm_ref_t* function_ref = wasm_table_get(proc->indirect_func_table, proc->current_function_ix); - const wasm_func_t* func = wasm_ref_as_func(function_ref); - DRV_DEBUG("Function pointer: %p", func); - - // Retrieve the function type and log its parameters and results - const wasm_functype_t* function_type = wasm_func_type(func); - if (!function_type) { - DRV_DEBUG("Failed to retrieve function type for function at index %d", proc->current_function_ix); - return -1; - } - - // Log the function's parameter types - const wasm_valtype_vec_t* param_types = wasm_functype_params(function_type); - DRV_DEBUG("Function at index %d has %zu parameters", proc->current_function_ix, param_types->size); - for (size_t j = 0; j < param_types->size; ++j) { - const wasm_valtype_t* param_type = param_types->data[j]; - wasm_valkind_t param_kind = wasm_valtype_kind(param_type); - DRV_DEBUG("Param %zu: %s", j, get_wasm_type_name(param_kind)); - } - - wasm_val_vec_t args, results; - wasm_val_vec_new_uninitialized(&args, param_types->size); - args.num_elems = param_types->num_elems; - // CONV: ei_term* -> wasm_val_vec_t - for(int i = 0; i < param_types->size; i++) { - args.data[i].kind = wasm_valtype_kind(param_types->data[i]); - } - int res = erl_terms_to_wasm_vals(&args, proc->current_args); - - for(int i = 0; i < args.size; i++) { - DRV_DEBUG("Arg %d: %d", i, args.data[i].of.i64); - DRV_DEBUG("Source term: %d", proc->current_args[i].value.i_val); - } - - // Log the function's result types - const wasm_valtype_vec_t* result_types = wasm_functype_results(function_type); - DRV_DEBUG("Function at index %d has %zu results", proc->current_function_ix, result_types->size); - for (size_t k = 0; k < result_types->size; ++k) { - const wasm_valtype_t* result_type = result_types->data[k]; - wasm_valkind_t result_kind = wasm_valtype_kind(result_type); - DRV_DEBUG("Result %zu: %s", k, get_wasm_type_name(result_kind)); - } - - // Prepare the arguments for the function call - wasm_val_vec_t prepared_args; - prepare_function_arguments(&args, &prepared_args); - - // Get the execution environment for the function - wasm_exec_env_t exec_env = wasm_runtime_get_exec_env_singleton(func->inst_comm_rt); - if (!exec_env) { - DRV_DEBUG("Failed to get execution environment"); - } - - uint64_t argc = args.size; - uint64_t* argv = malloc(sizeof(uint64_t) * argc); - - // Convert prepared arguments to an array of 64-bit integers - for (uint64_t i = 0; i < argc; ++i) { - argv[i] = args.data[i].of.i64; - } - - result = handle_wasm_function_call(exec_env, proc->current_function_ix, argc, argv); - - - // Free allocated memory - free(argv); - DRV_DEBUG("Function call completed successfully"); - - return result; -} - - -wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_val_vec_t* results) { - DRV_DEBUG("generic_import_handler called"); - ImportHook* import_hook = (ImportHook*)env; - Proc* proc = import_hook->proc; - - // invoke_exported_function(proc, import_hook->field_name, args, results); // TODO: Add this line when using AOT - - DRV_DEBUG("Proc: %p. Args size: %d", proc, args->size); - DRV_DEBUG("Import name: %s.%s [%s]", import_hook->module_name, import_hook->field_name, import_hook->signature); - - // Initialize the message object - ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * ((2+(2*3)) + ((args->size + 1) * 2) + ((results->size + 1) * 2) + 2)); - int msg_index = 0; - msg[msg_index++] = ERL_DRV_ATOM; - msg[msg_index++] = atom_import; - msg[msg_index++] = ERL_DRV_STRING; - msg[msg_index++] = (ErlDrvTermData) import_hook->module_name; - msg[msg_index++] = strlen(import_hook->module_name); - msg[msg_index++] = ERL_DRV_STRING; - msg[msg_index++] = (ErlDrvTermData) import_hook->field_name; - msg[msg_index++] = strlen(import_hook->field_name); - - // Encode args - for (size_t i = 0; i < args->size; i++) { - msg_index += wasm_val_to_erl_term(&msg[msg_index], &args->data[i]); - } - msg[msg_index++] = ERL_DRV_NIL; - msg[msg_index++] = ERL_DRV_LIST; - msg[msg_index++] = args->size + 1; - - // Encode function signature - msg[msg_index++] = ERL_DRV_STRING; - msg[msg_index++] = (ErlDrvTermData) import_hook->signature; - msg[msg_index++] = strlen(import_hook->signature) - 1; - - // Prepare the message to send to the Erlang side - msg[msg_index++] = ERL_DRV_TUPLE; - msg[msg_index++] = 5; - - // Initialize the result vector and set the required result types - proc->current_import = driver_alloc(sizeof(ImportResponse)); - - // Create and initialize a is_running and condition variable for the response - proc->current_import->response_ready = erl_drv_mutex_create("response_mutex"); - proc->current_import->cond = erl_drv_cond_create("response_cond"); - proc->current_import->ready = 0; - - DRV_DEBUG("Sending %d terms...", msg_index); - // Send the message to the caller process - int msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); - // Wait for the response (we set this directly after the message was sent - // so we have the lock, before Erlang sends us data back) - drv_wait(proc->current_import->response_ready, proc->current_import->cond, &proc->current_import->ready); - - DRV_DEBUG("Response ready"); - - // Handle error in the response - if (proc->current_import->error_message) { - DRV_DEBUG("Import execution failed. Error message: %s", proc->current_import->error_message); - wasm_name_t message; - wasm_name_new_from_string_nt(&message, proc->current_import->error_message); - wasm_trap_t* trap = wasm_trap_new(proc->store, &message); - driver_free(proc->current_import); - proc->current_import = NULL; - return trap; - } - - // Convert the response back to WASM values - const wasm_valtype_vec_t* result_types = wasm_functype_results(wasm_func_type(import_hook->stub_func)); - for(int i = 0; i < proc->current_import->result_length; i++) { - results->data[i].kind = wasm_valtype_kind(result_types->data[i]); - } - int res = erl_terms_to_wasm_vals(results, proc->current_import->result_terms); - if(res == -1) { - DRV_DEBUG("Failed to convert terms to wasm vals"); - return NULL; - } - - results->num_elems = result_types->num_elems; - - // Clean up - DRV_DEBUG("Cleaning up import response"); - erl_drv_cond_destroy(proc->current_import->cond); - erl_drv_mutex_destroy(proc->current_import->response_ready); - driver_free(proc->current_import); - - proc->current_import = NULL; - return NULL; -} - -// Async initialization function -static void async_init(void* raw) { - DRV_DEBUG("Initializing WASM module"); - LoadWasmReq* mod_bin = (LoadWasmReq*)raw; - Proc* proc = mod_bin->proc; - drv_lock(proc->is_running); - // Initialize WASM engine, store, etc. - -#if HB_DEBUG==1 - wasm_runtime_set_log_level(WASM_LOG_LEVEL_VERBOSE); -#else - wasm_runtime_set_log_level(WASM_LOG_LEVEL_ERROR); -#endif - - DRV_DEBUG("Mode: %s", mod_bin->mode); - - if(strcmp(mod_bin->mode, "wasm") == 0) { - DRV_DEBUG("Using WASM mode."); - wasm_runtime_set_default_running_mode(Mode_Interp); - } else { - DRV_DEBUG("Using AOT mode."); - } - - proc->engine = wasm_engine_new(); - DRV_DEBUG("Created engine"); - proc->store = wasm_store_new(proc->engine); - DRV_DEBUG("Created store"); - - // Load WASM module - wasm_byte_vec_t binary; - wasm_byte_vec_new(&binary, mod_bin->size, (const wasm_byte_t*)mod_bin->binary); - - proc->module = wasm_module_new(proc->store, &binary); - DRV_DEBUG("Module created: %p", proc->module); - if (!proc->module) { - DRV_DEBUG("Failed to create module"); - send_error(proc, "Failed to create module."); - wasm_byte_vec_delete(&binary); - wasm_store_delete(proc->store); - wasm_engine_delete(proc->engine); - drv_unlock(proc->is_running); - return; - } - //wasm_byte_vec_delete(&binary); - DRV_DEBUG("Created module"); - - // Get imports - wasm_importtype_vec_t imports; - wasm_module_imports(proc->module, &imports); - DRV_DEBUG("Imports size: %d", imports.size); - wasm_extern_t *stubs[imports.size]; - - // Get exports - wasm_exporttype_vec_t exports; - wasm_module_exports(proc->module, &exports); - - // Create Erlang lists for imports - //DRV_DEBUG("Exports size: %d", exports.size); - ErlDrvTermData* init_msg = driver_alloc(sizeof(ErlDrvTermData) * (2 + (13 * imports.size) + (11 * exports.size))); - //DRV_DEBUG("Allocated init message"); - int msg_i = 0; - init_msg[msg_i++] = ERL_DRV_ATOM; - init_msg[msg_i++] = atom_execution_result; - - // Process imports - for (int i = 0; i < imports.size; ++i) { - //DRV_DEBUG("Processing import %d", i); - const wasm_importtype_t* import = imports.data[i]; - const wasm_name_t* module_name = wasm_importtype_module(import); - const wasm_name_t* name = wasm_importtype_name(import); - const wasm_externtype_t* type = wasm_importtype_type(import); - - //DRV_DEBUG("Import: %s.%s", module_name->data, name->data); - - char* type_str = driver_alloc(256); - // TODO: What happpens here? - if(!get_function_sig(type, type_str)) { - // TODO: Handle other types of imports? - continue; - } - - init_msg[msg_i++] = ERL_DRV_ATOM; - init_msg[msg_i++] = driver_mk_atom((char*)wasm_externtype_to_kind_string(type)); - init_msg[msg_i++] = ERL_DRV_STRING; - init_msg[msg_i++] = (ErlDrvTermData)module_name->data; - init_msg[msg_i++] = module_name->size - 1; - init_msg[msg_i++] = ERL_DRV_STRING; - init_msg[msg_i++] = (ErlDrvTermData)name->data; - init_msg[msg_i++] = name->size - 1; - init_msg[msg_i++] = ERL_DRV_STRING; - init_msg[msg_i++] = (ErlDrvTermData)type_str; - init_msg[msg_i++] = strlen(type_str); - init_msg[msg_i++] = ERL_DRV_TUPLE; - init_msg[msg_i++] = 4; - - DRV_DEBUG("Creating callback for %s.%s [%s]", module_name->data, name->data, type_str); - ImportHook* hook = driver_alloc(sizeof(ImportHook)); - hook->module_name = module_name->data; - hook->field_name = name->data; - hook->proc = proc; - hook->signature = type_str; - - hook->stub_func = - wasm_func_new_with_env( - proc->store, - wasm_externtype_as_functype_const(type), - generic_import_handler, - hook, - NULL - ); - stubs[i] = wasm_func_as_extern(hook->stub_func); - } - - init_msg[msg_i++] = ERL_DRV_NIL; - init_msg[msg_i++] = ERL_DRV_LIST; - init_msg[msg_i++] = imports.size + 1; - - // Create proc! - wasm_extern_vec_t externs; - wasm_extern_vec_new(&externs, imports.size, stubs); - wasm_trap_t* trap = NULL; - proc->instance = wasm_instance_new_with_args(proc->store, proc->module, &externs, &trap, 0x10000, 0x10000); - if (!proc->instance) { - DRV_DEBUG("Failed to create WASM instance"); - send_error(proc, "Failed to create WASM instance (although module was created)."); - drv_unlock(proc->is_running); - return; - } - - // Refresh the exports now that we have an instance - wasm_module_exports(proc->module, &exports); - for (size_t i = 0; i < exports.size; i++) { - //DRV_DEBUG("Processing export %d", i); - const wasm_exporttype_t* export = exports.data[i]; - const wasm_name_t* name = wasm_exporttype_name(export); - const wasm_externtype_t* type = wasm_exporttype_type(export); - char* kind_str = (char*) wasm_externtype_to_kind_string(type); - - // Check if the export is the indirect function table - if (is_indirect_function_table(name->data)) { - DRV_DEBUG("Found indirect function table: %s. Index: %d", name->data, i); - proc->indirect_func_table_ix = i; - const wasm_tabletype_t* table_type = wasm_externtype_as_tabletype_const(type); - const wasm_limits_t* table_limits = wasm_tabletype_limits(table_type); - // Retrieve the indirect function table - proc->indirect_func_table = wasm_extern_as_table(exports.data[i]); - } - - - char* type_str = driver_alloc(256); - get_function_sig(type, type_str); - DRV_DEBUG("Export: %s [%s] -> %s", name->data, kind_str, type_str); - - init_msg[msg_i++] = ERL_DRV_ATOM; - init_msg[msg_i++] = driver_mk_atom(kind_str); - init_msg[msg_i++] = ERL_DRV_STRING; - init_msg[msg_i++] = (ErlDrvTermData)name->data; - init_msg[msg_i++] = name->size - 1; - init_msg[msg_i++] = ERL_DRV_STRING; - init_msg[msg_i++] = (ErlDrvTermData)type_str; - init_msg[msg_i++] = strlen(type_str); - init_msg[msg_i++] = ERL_DRV_TUPLE; - init_msg[msg_i++] = 3; - } - - init_msg[msg_i++] = ERL_DRV_NIL; - init_msg[msg_i++] = ERL_DRV_LIST; - init_msg[msg_i++] = (exports.size) + 1; - init_msg[msg_i++] = ERL_DRV_TUPLE; - init_msg[msg_i++] = 3; - - DRV_DEBUG("Sending init message to Erlang. Elements: %d", msg_i); - - int send_res = erl_drv_output_term(proc->port_term, init_msg, msg_i); - DRV_DEBUG("Send result: %d", send_res); - - proc->current_import = NULL; - proc->is_initialized = 1; - drv_unlock(proc->is_running); -} - -static void async_call(void* raw) { - Proc* proc = (Proc*)raw; - DRV_DEBUG("Calling function: %s", proc->current_function); - drv_lock(proc->is_running); - char* function_name = proc->current_function; - - // Find the function in the exports - wasm_func_t* func = get_exported_function(proc, function_name); - if (!func) { - send_error(proc, "Function not found: %s", function_name); - drv_unlock(proc->is_running); - return; - } - DRV_DEBUG("Func: %p", func); - - const wasm_functype_t* func_type = wasm_func_type(func); - const wasm_valtype_vec_t* param_types = wasm_functype_params(func_type); - const wasm_valtype_vec_t* result_types = wasm_functype_results(func_type); - - wasm_val_vec_t args, results; - wasm_val_vec_new_uninitialized(&args, param_types->size); - args.num_elems = param_types->num_elems; - // CONV: ei_term* -> wasm_val_vec_t - for(int i = 0; i < param_types->size; i++) { - args.data[i].kind = wasm_valtype_kind(param_types->data[i]); - } - int res = erl_terms_to_wasm_vals(&args, proc->current_args); - - for(int i = 0; i < args.size; i++) { - DRV_DEBUG("Arg %d: %d", i, args.data[i].of.i64); - DRV_DEBUG("Source term: %d", proc->current_args[i].value.i_val); - } - - if(res == -1) { - send_error(proc, "Failed to convert terms to wasm vals"); - drv_unlock(proc->is_running); - return; - } - - wasm_val_vec_new_uninitialized(&results, result_types->size); - results.num_elems = result_types->num_elems; - for (size_t i = 0; i < result_types->size; i++) { - results.data[i].kind = wasm_valtype_kind(result_types->data[i]); - } - - // Call the function - DRV_DEBUG("Calling function: %s", function_name); - wasm_trap_t* trap = wasm_func_call(func, &args, &results); - - if (trap) { - wasm_message_t trap_msg; - wasm_trap_message(trap, &trap_msg); - // wasm_frame_t* origin = wasm_trap_origin(trap); - // int32_t func_index = wasm_frame_func_index(origin); - // int32_t func_offset = wasm_frame_func_offset(origin); - // char* func_name; - - // DRV_DEBUG("WASM Exception: [func_index: %d, func_offset: %d] %.*s", func_index, func_offset, trap_msg.size, trap_msg.data); - send_error(proc, "%.*s", trap_msg.size, trap_msg.data); - drv_unlock(proc->is_running); - return; - } - - // Send the results back to Erlang - DRV_DEBUG("Results size: %d", results.size); - ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * (7 + (results.size * 2))); - DRV_DEBUG("Allocated msg"); - int msg_index = 0; - msg[msg_index++] = ERL_DRV_ATOM; - msg[msg_index++] = atom_execution_result; - for (size_t i = 0; i < results.size; i++) { - DRV_DEBUG("Processing result %d", i); - DRV_DEBUG("Result type: %d", results.data[i].kind); - switch(results.data[i].kind) { - case WASM_I32: - DRV_DEBUG("Value: %d", results.data[i].of.i32); - break; - case WASM_I64: - DRV_DEBUG("Value: %ld", results.data[i].of.i64); - break; - case WASM_F32: - DRV_DEBUG("Value: %f", results.data[i].of.f32); - break; - case WASM_F64: - DRV_DEBUG("Value: %f", results.data[i].of.f64); - break; - default: - DRV_DEBUG("Unknown result type.", results.data[i].kind); - break; - } - - int res_size = wasm_val_to_erl_term(&msg[msg_index], &results.data[i]); - msg_index += res_size; - } - msg[msg_index++] = ERL_DRV_NIL; - msg[msg_index++] = ERL_DRV_LIST; - msg[msg_index++] = results.size + 1; - msg[msg_index++] = ERL_DRV_TUPLE; - msg[msg_index++] = 2; - DRV_DEBUG("Sending %d terms", msg_index); - int response_msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); - driver_free(msg); - DRV_DEBUG("Msg: %d", response_msg_res); - - wasm_val_vec_delete(&results); - proc->current_import = NULL; - - drv_unlock(proc->is_running); -} +ErlDrvTermData atom_ok; +ErlDrvTermData atom_error; +ErlDrvTermData atom_import; +ErlDrvTermData atom_execution_result; static ErlDrvData wasm_driver_start(ErlDrvPort port, char *buff) { ErlDrvSysInfo info; @@ -995,7 +118,7 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) mod_bin->size = size; mod_bin->mode = mode; //DRV_DEBUG("Calling for async thread to init"); - driver_async(proc->port, NULL, async_init, mod_bin, NULL); + driver_async(proc->port, NULL, wasm_initialize_runtime, mod_bin, NULL); } else if (strcmp(command, "call") == 0) { if (!proc->is_initialized) { send_error(proc, "Cannot run WASM function as module not initialized."); @@ -1004,23 +127,26 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) // Extract the function name and the args from the Erlang term and generate the wasm_val_vec_t char* function_name = driver_alloc(MAXATOMLEN); ei_decode_string(buff, &index, function_name); - //DRV_DEBUG("Function name: %s", function_name); + DRV_DEBUG("Function name: %s", function_name); proc->current_function = function_name; - //DRV_DEBUG("Decoding args. Buff: %p. Index: %d", buff, index); + DRV_DEBUG("Decoding args. Buff: %p. Index: %d", buff, index); proc->current_args = decode_list(buff, &index); - driver_async(proc->port, NULL, async_call, proc, NULL); - } else if (strcmp(command, "indirect_call") == 0) { - if (!proc->is_initialized) { - send_error(proc, "Cannot run WASM indirect function as module not initialized."); - return; - } - DRV_DEBUG("Decoding indirect call"); - ei_decode_long(buff, &index, &proc->current_function_ix); - proc->current_args = decode_list(buff, &index); - driver_async(proc->port, NULL, async_indirect_call, proc, NULL); - } else if (strcmp(command, "import_response") == 0) { + driver_async(proc->port, NULL, wasm_execute_function, proc, NULL); + } + // else if (strcmp(command, "indirect_call") == 0) { + // if (!proc->is_initialized) { + // send_error(proc, "Cannot run WASM indirect function as module not initialized."); + // return; + // } + // DRV_DEBUG("Decoding indirect call"); + // ei_decode_long(buff, &index, &proc->current_function_ix); + // proc->current_args = decode_list(buff, &index); + // DRV_DEBUG("Calling indirect call invoker"); + // driver_async(proc->port, NULL, async_indirect_call, proc, NULL); + // } + else if (strcmp(command, "import_response") == 0) { // Handle import response // TODO: We should probably start a mutex on the current_import object here. // At the moment current_import->response_ready must not be locked so that signalling can happen. diff --git a/c_src/hb_driver.c b/c_src/hb_driver.c new file mode 100644 index 000000000..3a930c307 --- /dev/null +++ b/c_src/hb_driver.c @@ -0,0 +1,39 @@ +#include "include/hb_driver.h" +#include "include/hb_logging.h" +#include "include/hb_helpers.h" + + +void drv_lock(ErlDrvMutex* mutex) { + DRV_DEBUG("Locking: %s", erl_drv_mutex_name(mutex)); + erl_drv_mutex_lock(mutex); + DRV_DEBUG("Locked: %s", erl_drv_mutex_name(mutex)); +} + + +void drv_unlock(ErlDrvMutex* mutex) { + DRV_DEBUG("Unlocking: %s", erl_drv_mutex_name(mutex)); + erl_drv_mutex_unlock(mutex); + DRV_DEBUG("Unlocked: %s", erl_drv_mutex_name(mutex)); +} + +void drv_signal(ErlDrvMutex* mut, ErlDrvCond* cond, int* ready) { + DRV_DEBUG("Signaling: %s. Pre-signal ready state: %d", erl_drv_cond_name(cond), *ready); + drv_lock(mut); + *ready = 1; + erl_drv_cond_signal(cond); + drv_unlock(mut); + DRV_DEBUG("Signaled: %s. Post-signal ready state: %d", erl_drv_cond_name(cond), *ready); +} + +void drv_wait(ErlDrvMutex* mut, ErlDrvCond* cond, int* ready) { + DRV_DEBUG("Started to wait: %s. Ready: %d", erl_drv_cond_name(cond), *ready); + DRV_DEBUG("Mutex: %s", erl_drv_mutex_name(mut)); + drv_lock(mut); + while (!*ready) { + DRV_DEBUG("Waiting: %s", erl_drv_cond_name(cond)); + erl_drv_cond_wait(cond, mut); + DRV_DEBUG("Woke up: Ready: %d", *ready); + } + drv_unlock(mut); + DRV_DEBUG("Finish waiting: %s", erl_drv_cond_name(cond)); +} diff --git a/c_src/hb_helpers.c b/c_src/hb_helpers.c new file mode 100644 index 000000000..6c32a0c64 --- /dev/null +++ b/c_src/hb_helpers.c @@ -0,0 +1,205 @@ +#include "include/hb_helpers.h" +#include "include/hb_logging.h" + +// Returns the string name corresponding to the wasm type +const char* get_wasm_type_name(wasm_valkind_t kind) { + switch (kind) { + case WASM_I32: return "i32"; + case WASM_I64: return "i64"; + case WASM_F32: return "f32"; + case WASM_F64: return "f64"; + default: return "unknown"; + } +} + +const char* wasm_externtype_to_kind_string(const wasm_externtype_t* type) { + switch (wasm_externtype_kind(type)) { + case WASM_EXTERN_FUNC: return "func"; + case WASM_EXTERN_GLOBAL: return "global"; + case WASM_EXTERN_TABLE: return "table"; + case WASM_EXTERN_MEMORY: return "memory"; + default: return "unknown"; + } +} + +// Helper function to convert wasm_valtype_t to char +char wasm_valtype_kind_to_char(const wasm_valtype_t* valtype) { + switch (wasm_valtype_kind(valtype)) { + case WASM_I32: return 'i'; + case WASM_I64: return 'I'; + case WASM_F32: return 'f'; + case WASM_F64: return 'F'; + case WASM_EXTERNREF: return 'e'; + case WASM_V128: return 'v'; + case WASM_FUNCREF: return 'f'; + default: return 'u'; + } +} + +int wasm_val_to_erl_term(ErlDrvTermData* term, const wasm_val_t* val) { + DRV_DEBUG("Adding wasm val to erl term"); + DRV_DEBUG("Val of: %d", val->of.i32); + switch (val->kind) { + case WASM_I32: + term[0] = ERL_DRV_INT; + term[1] = val->of.i32; + return 2; + case WASM_I64: + term[0] = ERL_DRV_INT64; + term[1] = (ErlDrvTermData) &val->of.i64; + return 2; + case WASM_F32: + term[0] = ERL_DRV_FLOAT; + term[1] = (ErlDrvTermData) &val->of.f32; + return 2; + case WASM_F64: + term[0] = ERL_DRV_FLOAT; + term[1] = (ErlDrvTermData) &val->of.f64; + return 2; + default: + DRV_DEBUG("Unsupported result type: %d", val->kind); + return 0; + } +} + +int erl_term_to_wasm_val(wasm_val_t* val, ei_term* term) { + DRV_DEBUG("Converting erl term to wasm val. Term: %d. Size: %d", term->value.i_val, term->size); + switch (val->kind) { + case WASM_I32: + val->of.i32 = (int) term->value.i_val; + break; + case WASM_I64: + val->of.i64 = (long) term->value.i_val; + break; + case WASM_F32: + val->of.f32 = (float) term->value.d_val; + break; + case WASM_F64: + val->of.f64 = term->value.d_val; + break; + default: + DRV_DEBUG("Unsupported parameter type: %d", val->kind); + return -1; + } + return 0; +} + +int erl_terms_to_wasm_vals(wasm_val_vec_t* vals, ei_term* terms) { + DRV_DEBUG("Converting erl terms to wasm vals"); + DRV_DEBUG("Vals: %d", vals->size); + for(int i = 0; i < vals->size; i++) { + DRV_DEBUG("Converting term %d: %p", i, &vals->data[i]); + int res = erl_term_to_wasm_val(&vals->data[i], &terms[i]); + if(res == -1) { + DRV_DEBUG("Failed to convert term to wasm val"); + return -1; + } + } + return 0; +} + +ei_term* decode_list(char* buff, int* index) { + int arity, type; + + if(ei_get_type(buff, index, &type, &arity) == -1) { + DRV_DEBUG("Failed to get type"); + return NULL; + } + DRV_DEBUG("Decoded header. Arity: %d", arity); + + ei_term* res = driver_alloc(sizeof(ei_term) * arity); + + if(type == ERL_LIST_EXT) { + //DRV_DEBUG("Decoding list"); + ei_decode_list_header(buff, index, &arity); + //DRV_DEBUG("Decoded list header. Arity: %d", arity); + for(int i = 0; i < arity; i++) { + ei_decode_ei_term(buff, index, &res[i]); + DRV_DEBUG("Decoded term (assuming int) %d: %d", i, res[i].value.i_val); + } + } + else if(type == ERL_STRING_EXT) { + //DRV_DEBUG("Decoding list encoded as string"); + unsigned char* str = driver_alloc(arity * sizeof(char) + 1); + ei_decode_string(buff, index, str); + for(int i = 0; i < arity; i++) { + res[i].ei_type = ERL_INTEGER_EXT; + res[i].value.i_val = (long) str[i]; + DRV_DEBUG("Decoded term %d: %d", i, res[i].value.i_val); + } + driver_free(str); + } + else { + DRV_DEBUG("Unknown type: %d", type); + return NULL; + } + + return res; +} + +int get_function_sig(const wasm_externtype_t* type, char* type_str) { + if (wasm_externtype_kind(type) == WASM_EXTERN_FUNC) { + const wasm_functype_t* functype = wasm_externtype_as_functype_const(type); + const wasm_valtype_vec_t* params = wasm_functype_params(functype); + const wasm_valtype_vec_t* results = wasm_functype_results(functype); + + if(!params || !results) { + DRV_DEBUG("Export function params/results are NULL"); + return 0; + } + + type_str[0] = '('; + size_t offset = 1; + + for (size_t i = 0; i < params->size; i++) { + type_str[offset++] = wasm_valtype_kind_to_char(params->data[i]); + } + type_str[offset++] = ')'; + + for (size_t i = 0; i < results->size; i++) { + type_str[offset++] = wasm_valtype_kind_to_char(results->data[i]); + } + type_str[offset] = '\0'; + + return 1; + } + return 0; +} + +wasm_func_t* get_exported_function(Proc* proc, const char* target_name) { + wasm_extern_vec_t exports; + wasm_instance_exports(proc->instance, &exports); + wasm_exporttype_vec_t export_types; + wasm_module_exports(proc->module, &export_types); + wasm_func_t* func = NULL; + + for (size_t i = 0; i < exports.size; ++i) { + wasm_extern_t* ext = exports.data[i]; + if (wasm_extern_kind(ext) == WASM_EXTERN_FUNC) { + const wasm_name_t* exp_name = wasm_exporttype_name(export_types.data[i]); + if (exp_name && exp_name->size == strlen(target_name) + 1 && + strncmp(exp_name->data, target_name, exp_name->size - 1) == 0) { + func = wasm_extern_as_func(ext); + break; + } + } + } + + return func; +} + +wasm_memory_t* get_memory(Proc* proc) { + wasm_extern_vec_t exports; + wasm_instance_exports(proc->instance, &exports); + for (size_t i = 0; i < exports.size; i++) { + if (wasm_extern_kind(exports.data[i]) == WASM_EXTERN_MEMORY) { + return wasm_extern_as_memory(exports.data[i]); + } + } + return NULL; +} + +long get_memory_size(Proc* proc) { + wasm_memory_t* memory = get_memory(proc); + return wasm_memory_size(memory) * 65536; +} diff --git a/c_src/hb_logging.c b/c_src/hb_logging.c new file mode 100644 index 000000000..7e91fd477 --- /dev/null +++ b/c_src/hb_logging.c @@ -0,0 +1,36 @@ +#include "include/hb_logging.h" + +extern ErlDrvTermData atom_error; + +void beamr_print(int print, const char* file, int line, const char* format, ...) { + va_list args; + va_start(args, format); + if(print) { + pthread_t thread_id = pthread_self(); + printf("[DBG#%p @ %s:%d] ", thread_id, file, line); + vprintf(format, args); + printf("\r\n"); + } + va_end(args); +} + +void send_error(Proc* proc, const char* message_fmt, ...) { + va_list args; + va_start(args, message_fmt); + char* message = driver_alloc(256); + vsnprintf(message, 256, message_fmt, args); + DRV_DEBUG("Sending error message: %s", message); + ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * 7); + int msg_index = 0; + msg[msg_index++] = ERL_DRV_ATOM; + msg[msg_index++] = atom_error; + msg[msg_index++] = ERL_DRV_STRING; + msg[msg_index++] = (ErlDrvTermData)message; + msg[msg_index++] = strlen(message); + msg[msg_index++] = ERL_DRV_TUPLE; + msg[msg_index++] = 2; + + int msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); + DRV_DEBUG("Sent error message. Res: %d", msg_res); + va_end(args); +} \ No newline at end of file diff --git a/c_src/hb_wasm.c b/c_src/hb_wasm.c new file mode 100644 index 000000000..fdd7ee411 --- /dev/null +++ b/c_src/hb_wasm.c @@ -0,0 +1,577 @@ +#include "include/hb_wasm.h" +#include "include/hb_logging.h" +#include "include/hb_helpers.h" +#include "include/hb_driver.h" + +extern ErlDrvTermData atom_ok; +extern ErlDrvTermData atom_import; +extern ErlDrvTermData atom_execution_result; + +wasm_trap_t* wasm_handle_import(void* env, const wasm_val_vec_t* args, wasm_val_vec_t* results) { + DRV_DEBUG("generic_import_handler called"); + ImportHook* import_hook = (ImportHook*)env; + Proc* proc = import_hook->proc; + + // Check if the field name is "invoke"; if not, exit early + if (strncmp(import_hook->field_name, "invoke", 6) == 0) { + wasm_execute_indirect_function(proc, import_hook->field_name, args, results); + return NULL; + } + + DRV_DEBUG("Proc: %p. Args size: %d", proc, args->size); + DRV_DEBUG("Import name: %s.%s [%s]", import_hook->module_name, import_hook->field_name, import_hook->signature); + + // Initialize the message object + ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * ((2+(2*3)) + ((args->size + 1) * 2) + ((results->size + 1) * 2) + 2)); + int msg_index = 0; + msg[msg_index++] = ERL_DRV_ATOM; + msg[msg_index++] = atom_import; + msg[msg_index++] = ERL_DRV_STRING; + msg[msg_index++] = (ErlDrvTermData) import_hook->module_name; + msg[msg_index++] = strlen(import_hook->module_name); + msg[msg_index++] = ERL_DRV_STRING; + msg[msg_index++] = (ErlDrvTermData) import_hook->field_name; + msg[msg_index++] = strlen(import_hook->field_name); + + // Encode args + for (size_t i = 0; i < args->size; i++) { + msg_index += wasm_val_to_erl_term(&msg[msg_index], &args->data[i]); + } + msg[msg_index++] = ERL_DRV_NIL; + msg[msg_index++] = ERL_DRV_LIST; + msg[msg_index++] = args->size + 1; + + // Encode function signature + msg[msg_index++] = ERL_DRV_STRING; + msg[msg_index++] = (ErlDrvTermData) import_hook->signature; + msg[msg_index++] = strlen(import_hook->signature) - 1; + + // Prepare the message to send to the Erlang side + msg[msg_index++] = ERL_DRV_TUPLE; + msg[msg_index++] = 5; + + // Initialize the result vector and set the required result types + proc->current_import = driver_alloc(sizeof(ImportResponse)); + + // Create and initialize a is_running and condition variable for the response + proc->current_import->response_ready = erl_drv_mutex_create("response_mutex"); + proc->current_import->cond = erl_drv_cond_create("response_cond"); + proc->current_import->ready = 0; + + DRV_DEBUG("Sending %d terms...", msg_index); + // Send the message to the caller process + int msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); + // Wait for the response (we set this directly after the message was sent + // so we have the lock, before Erlang sends us data back) + drv_wait(proc->current_import->response_ready, proc->current_import->cond, &proc->current_import->ready); + + DRV_DEBUG("Response ready"); + + // Handle error in the response + if (proc->current_import->error_message) { + DRV_DEBUG("Import execution failed. Error message: %s", proc->current_import->error_message); + wasm_name_t message; + wasm_name_new_from_string_nt(&message, proc->current_import->error_message); + wasm_trap_t* trap = wasm_trap_new(proc->store, &message); + driver_free(proc->current_import); + proc->current_import = NULL; + return trap; + } + + // Convert the response back to WASM values + const wasm_valtype_vec_t* result_types = wasm_functype_results(wasm_func_type(import_hook->stub_func)); + for(int i = 0; i < proc->current_import->result_length; i++) { + results->data[i].kind = wasm_valtype_kind(result_types->data[i]); + } + int res = erl_terms_to_wasm_vals(results, proc->current_import->result_terms); + if(res == -1) { + DRV_DEBUG("Failed to convert terms to wasm vals"); + return NULL; + } + + results->num_elems = result_types->num_elems; + + // Clean up + DRV_DEBUG("Cleaning up import response"); + erl_drv_cond_destroy(proc->current_import->cond); + erl_drv_mutex_destroy(proc->current_import->response_ready); + driver_free(proc->current_import); + + proc->current_import = NULL; + return NULL; +} + +void wasm_initialize_runtime(void* raw) { + DRV_DEBUG("Initializing WASM module"); + LoadWasmReq* mod_bin = (LoadWasmReq*)raw; + Proc* proc = mod_bin->proc; + drv_lock(proc->is_running); + // Initialize WASM engine, store, etc. + +#if HB_DEBUG==1 + wasm_runtime_set_log_level(WASM_LOG_LEVEL_VERBOSE); +#else + wasm_runtime_set_log_level(WASM_LOG_LEVEL_ERROR); +#endif + + DRV_DEBUG("Mode: %s", mod_bin->mode); + + // if(strcmp(mod_bin->mode, "wasm") == 0) { + // DRV_DEBUG("Using WASM mode."); + // wasm_runtime_set_default_running_mode(Mode_Interp); + // } else { + // DRV_DEBUG("Using AOT mode."); + // } + + proc->engine = wasm_engine_new(); + DRV_DEBUG("Created engine"); + proc->store = wasm_store_new(proc->engine); + DRV_DEBUG("Created store"); + + + // Load WASM module + wasm_byte_vec_t binary; + wasm_byte_vec_new(&binary, mod_bin->size, (const wasm_byte_t*)mod_bin->binary); + + proc->module = wasm_module_new(proc->store, &binary); + DRV_DEBUG("Module created: %p", proc->module); + if (!proc->module) { + DRV_DEBUG("Failed to create module"); + send_error(proc, "Failed to create module."); + wasm_byte_vec_delete(&binary); + wasm_store_delete(proc->store); + wasm_engine_delete(proc->engine); + drv_unlock(proc->is_running); + return; + } + //wasm_byte_vec_delete(&binary); + DRV_DEBUG("Created module"); + + // Get imports + wasm_importtype_vec_t imports; + wasm_module_imports(proc->module, &imports); + DRV_DEBUG("Imports size: %d", imports.size); + wasm_extern_t *stubs[imports.size]; + + // Get exports + wasm_exporttype_vec_t exports; + wasm_module_exports(proc->module, &exports); + + // Create Erlang lists for imports + ErlDrvTermData* init_msg = driver_alloc(sizeof(ErlDrvTermData) * (2 + (13 * imports.size) + (11 * exports.size))); + int msg_i = 0; + init_msg[msg_i++] = ERL_DRV_ATOM; + init_msg[msg_i++] = atom_execution_result; + + // Process imports + for (int i = 0; i < imports.size; ++i) { + //DRV_DEBUG("Processing import %d", i); + const wasm_importtype_t* import = imports.data[i]; + const wasm_name_t* module_name = wasm_importtype_module(import); + const wasm_name_t* name = wasm_importtype_name(import); + const wasm_externtype_t* type = wasm_importtype_type(import); + + //DRV_DEBUG("Import: %s.%s", module_name->data, name->data); + + char* type_str = driver_alloc(256); + // TODO: What happpens here? + if(!get_function_sig(type, type_str)) { + // TODO: Handle other types of imports? + continue; + } + + init_msg[msg_i++] = ERL_DRV_ATOM; + init_msg[msg_i++] = driver_mk_atom((char*)wasm_externtype_to_kind_string(type)); + init_msg[msg_i++] = ERL_DRV_STRING; + init_msg[msg_i++] = (ErlDrvTermData)module_name->data; + init_msg[msg_i++] = module_name->size - 1; + init_msg[msg_i++] = ERL_DRV_STRING; + init_msg[msg_i++] = (ErlDrvTermData)name->data; + init_msg[msg_i++] = name->size - 1; + init_msg[msg_i++] = ERL_DRV_STRING; + init_msg[msg_i++] = (ErlDrvTermData)type_str; + init_msg[msg_i++] = strlen(type_str); + init_msg[msg_i++] = ERL_DRV_TUPLE; + init_msg[msg_i++] = 4; + + DRV_DEBUG("Creating callback for %s.%s [%s]", module_name->data, name->data, type_str); + ImportHook* hook = driver_alloc(sizeof(ImportHook)); + hook->module_name = module_name->data; + hook->field_name = name->data; + hook->proc = proc; + hook->signature = type_str; + + hook->stub_func = + wasm_func_new_with_env( + proc->store, + wasm_externtype_as_functype_const(type), + wasm_handle_import, + hook, + NULL + ); + stubs[i] = wasm_func_as_extern(hook->stub_func); + } + + init_msg[msg_i++] = ERL_DRV_NIL; + init_msg[msg_i++] = ERL_DRV_LIST; + init_msg[msg_i++] = imports.size + 1; + + // Create proc! + wasm_extern_vec_t externs; + wasm_extern_vec_new(&externs, imports.size, stubs); + wasm_trap_t* trap = NULL; + proc->instance = wasm_instance_new_with_args(proc->store, proc->module, &externs, &trap, 0x10000, 0x10000); + if (!proc->instance) { + DRV_DEBUG("Failed to create WASM instance"); + send_error(proc, "Failed to create WASM instance (although module was created)."); + drv_unlock(proc->is_running); + return; + } + + wasm_extern_vec_t exported_externs; + wasm_instance_exports(proc->instance, &exported_externs); + + // Refresh the exports now that we have an instance + wasm_module_exports(proc->module, &exports); + for (size_t i = 0; i < exports.size; i++) { + //DRV_DEBUG("Processing export %d", i); + const wasm_exporttype_t* export = exports.data[i]; + const wasm_name_t* name = wasm_exporttype_name(export); + const wasm_externtype_t* type = wasm_exporttype_type(export); + char* kind_str = (char*) wasm_externtype_to_kind_string(type); + + // Check if the export is the indirect function table + if (strcmp(name->data, "__indirect_function_table") == 0) { + DRV_DEBUG("Found indirect function table: %s. Index: %d", name->data, i); + proc->indirect_func_table_ix = i; + const wasm_tabletype_t* table_type = wasm_externtype_as_tabletype_const(type); + const wasm_limits_t* table_limits = wasm_tabletype_limits(table_type); + // Retrieve the indirect function table + proc->indirect_func_table = wasm_extern_as_table(exported_externs.data[i]); + + } + + char* type_str = driver_alloc(256); + get_function_sig(type, type_str); + DRV_DEBUG("Export: %s [%s] -> %s", name->data, kind_str, type_str); + + init_msg[msg_i++] = ERL_DRV_ATOM; + init_msg[msg_i++] = driver_mk_atom(kind_str); + init_msg[msg_i++] = ERL_DRV_STRING; + init_msg[msg_i++] = (ErlDrvTermData)name->data; + init_msg[msg_i++] = name->size - 1; + init_msg[msg_i++] = ERL_DRV_STRING; + init_msg[msg_i++] = (ErlDrvTermData)type_str; + init_msg[msg_i++] = strlen(type_str); + init_msg[msg_i++] = ERL_DRV_TUPLE; + init_msg[msg_i++] = 3; + } + + init_msg[msg_i++] = ERL_DRV_NIL; + init_msg[msg_i++] = ERL_DRV_LIST; + init_msg[msg_i++] = (exports.size) + 1; + init_msg[msg_i++] = ERL_DRV_TUPLE; + init_msg[msg_i++] = 3; + + DRV_DEBUG("Sending init message to Erlang. Elements: %d", msg_i); + + int send_res = erl_drv_output_term(proc->port_term, init_msg, msg_i); + DRV_DEBUG("Send result: %d", send_res); + + proc->current_import = NULL; + proc->is_initialized = 1; + drv_unlock(proc->is_running); +} + +void wasm_execute_function(void* raw) { + Proc* proc = (Proc*)raw; + DRV_DEBUG("Calling function: %s", proc->current_function); + drv_lock(proc->is_running); + char* function_name = proc->current_function; + + // Find the function in the exports + wasm_func_t* func = get_exported_function(proc, function_name); + if (!func) { + send_error(proc, "Function not found: %s", function_name); + drv_unlock(proc->is_running); + return; + } + DRV_DEBUG("Func: %p", func); + + const wasm_functype_t* func_type = wasm_func_type(func); + const wasm_valtype_vec_t* param_types = wasm_functype_params(func_type); + const wasm_valtype_vec_t* result_types = wasm_functype_results(func_type); + + wasm_val_vec_t args, results; + wasm_val_vec_new_uninitialized(&args, param_types->size); + args.num_elems = param_types->num_elems; + // CONV: ei_term* -> wasm_val_vec_t + for(int i = 0; i < param_types->size; i++) { + args.data[i].kind = wasm_valtype_kind(param_types->data[i]); + } + int res = erl_terms_to_wasm_vals(&args, proc->current_args); + + for(int i = 0; i < args.size; i++) { + DRV_DEBUG("Arg %d: %d", i, args.data[i].of.i64); + DRV_DEBUG("Source term: %d", proc->current_args[i].value.i_val); + } + + if(res == -1) { + send_error(proc, "Failed to convert terms to wasm vals"); + drv_unlock(proc->is_running); + return; + } + + wasm_val_vec_new_uninitialized(&results, result_types->size); + results.num_elems = result_types->num_elems; + for (size_t i = 0; i < result_types->size; i++) { + results.data[i].kind = wasm_valtype_kind(result_types->data[i]); + } + + proc->exec_env = wasm_runtime_get_exec_env_singleton(func->inst_comm_rt); + + // Call the function + DRV_DEBUG("Calling function: %s", function_name); + wasm_trap_t* trap = wasm_func_call(func, &args, &results); + + + if (trap) { + wasm_message_t trap_msg; + wasm_trap_message(trap, &trap_msg); + // wasm_frame_t* origin = wasm_trap_origin(trap); + // int32_t func_index = wasm_frame_func_index(origin); + // int32_t func_offset = wasm_frame_func_offset(origin); + // char* func_name; + + // DRV_DEBUG("WASM Exception: [func_index: %d, func_offset: %d] %.*s", func_index, func_offset, trap_msg.size, trap_msg.data); + send_error(proc, "%.*s", trap_msg.size, trap_msg.data); + drv_unlock(proc->is_running); + return; + } + + // Send the results back to Erlang + DRV_DEBUG("Results size: %d", results.size); + ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * (7 + (results.size * 2))); + DRV_DEBUG("Allocated msg"); + int msg_index = 0; + msg[msg_index++] = ERL_DRV_ATOM; + msg[msg_index++] = atom_execution_result; + for (size_t i = 0; i < results.size; i++) { + DRV_DEBUG("Processing result %d", i); + DRV_DEBUG("Result type: %d", results.data[i].kind); + switch(results.data[i].kind) { + case WASM_I32: + DRV_DEBUG("Value: %d", results.data[i].of.i32); + break; + case WASM_I64: + DRV_DEBUG("Value: %ld", results.data[i].of.i64); + break; + case WASM_F32: + DRV_DEBUG("Value: %f", results.data[i].of.f32); + break; + case WASM_F64: + DRV_DEBUG("Value: %f", results.data[i].of.f64); + break; + default: + DRV_DEBUG("Unknown result type.", results.data[i].kind); + break; + } + + int res_size = wasm_val_to_erl_term(&msg[msg_index], &results.data[i]); + msg_index += res_size; + } + msg[msg_index++] = ERL_DRV_NIL; + msg[msg_index++] = ERL_DRV_LIST; + msg[msg_index++] = results.size + 1; + msg[msg_index++] = ERL_DRV_TUPLE; + msg[msg_index++] = 2; + DRV_DEBUG("Sending %d terms", msg_index); + int response_msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); + driver_free(msg); + DRV_DEBUG("Msg: %d", response_msg_res); + + wasm_val_vec_delete(&results); + proc->current_import = NULL; + + DRV_DEBUG("Unlocking is_running mutex: %p", proc->is_running); + drv_unlock(proc->is_running); +} + +int wasm_execute_indirect_function(Proc* proc, const char *field_name, const wasm_val_vec_t* input_args, wasm_val_vec_t* output_results) { + + + DRV_DEBUG("================================================="); + DRV_DEBUG("Starting function invocation"); + DRV_DEBUG("================================================="); + + wasm_table_t* indirect_function_table = proc->indirect_func_table; + + + int result = 0; + DRV_DEBUG("Function name: %s", field_name); + +// Extract the function index from the input arguments + int function_index = input_args->data[0].of.i32; + DRV_DEBUG("Function index retrieved from input_args: %d", function_index); + + // Get the function reference from the table and cast it to a function + wasm_ref_t* function_ref = wasm_table_get(indirect_function_table, function_index); + const wasm_func_t* func = wasm_ref_as_func(function_ref); + DRV_DEBUG("Function pointer: %p", func); + + // Retrieve the function type and log its parameters and results + const wasm_functype_t* function_type = wasm_func_type(func); + if (!function_type) { + DRV_DEBUG("Failed to retrieve function type for function at index %d", function_index); + } + + // Log the function's parameter types + const wasm_valtype_vec_t* param_types = wasm_functype_params(function_type); + DRV_DEBUG("Function at index %d has %zu parameters", function_index, param_types->size); + for (size_t j = 0; j < param_types->size; ++j) { + const wasm_valtype_t* param_type = param_types->data[j]; + wasm_valkind_t param_kind = wasm_valtype_kind(param_type); + DRV_DEBUG("Param %zu: %s", j, get_wasm_type_name(param_kind)); + } + + + // Log the function's result types + const wasm_valtype_vec_t* result_types = wasm_functype_results(function_type); + DRV_DEBUG("Function at index %d has %zu results", function_index, result_types->size); + for (size_t k = 0; k < result_types->size; ++k) { + const wasm_valtype_t* result_type = result_types->data[k]; + wasm_valkind_t result_kind = wasm_valtype_kind(result_type); + DRV_DEBUG("Result %zu: %s", k, get_wasm_type_name(result_kind)); + } + + // Prepare the arguments for the function call + wasm_val_vec_t prepared_args; + // If there are no arguments or only one argument (function index), no preparation is needed + if (input_args->size <= 1) { + DRV_DEBUG("Not enough arguments to create new wasm_val_vec_t"); + return; + } + + // Allocate memory for the prepared arguments + wasm_val_t* prepared_data = malloc(sizeof(wasm_val_t) * (input_args->size - 1)); + + // Copy the arguments starting from the second element (skip function index) + for (size_t i = 1; i < input_args->size; ++i) { + prepared_data[i - 1] = input_args->data[i]; + } + + // Create a new wasm_val_vec_t with the prepared arguments + wasm_val_vec_new(&prepared_args, input_args->size - 1, prepared_data); + DRV_DEBUG("Prepared %zu arguments for function call", prepared_args.size); + + uint64_t argc = prepared_args.size; + uint64_t* argv = malloc(sizeof(uint64_t) * argc); + + // Convert prepared arguments to an array of 64-bit integers + for (uint64_t i = 0; i < argc; ++i) { + argv[i] = prepared_args.data[i].of.i64; + } + + + /* ---------------- STACK SAVE -----------------*/ + + // const char* stack_save_name = "emscripten_stack_get_current"; + // wasm_val_t *stack_save_params = NULL; + // wasm_val_t stack_save_results[1]; + // if (call_exported_function_runtime(proc, stack_save_name, stack_save_params, stack_save_results) != 0) { + // DRV_DEBUG("Failed to call stack save function"); + // } + + /* ---------------- STACK SAVE -----------------*/ + + // Attempt to call the function and check for any exceptions + if (!wasm_runtime_call_indirect(proc->exec_env, function_index, argc, argv)) { + if (wasm_runtime_get_exception(proc->exec_env)) { + DRV_DEBUG("%s", wasm_runtime_get_exception(proc->exec_env)); + } + DRV_DEBUG("WASM function call failed"); + result = -1; + } + + if(result != 0) { + + + + } + + + // Free allocated memory + free(argv); + free(prepared_args.data); + DRV_DEBUG("Function call completed successfully"); + return result; +} + +int wasm_execute_exported_function(Proc* proc, const *function_name, wasm_val_t* params, wasm_val_t * results) { + DRV_DEBUG("=== Calling Runtime Export Function ==="); + DRV_DEBUG("= Function name: %s", function_name); + + + // Get exported wasm_func_t pointer by function name + wasm_func_t* func = get_exported_function(proc, function_name); + if(!func) { + DRV_DEBUG("= Failed to get exported function"); + return -1; + } + + // Get the function type + const wasm_functype_t* function_type = wasm_func_type(func); + if (!function_type) { + DRV_DEBUG("= Failed to get function type"); + return -1; + } + + // Get the function's parameter types and set the argument types for args + const wasm_valtype_vec_t* param_types = wasm_functype_params(function_type); + if(!param_types) { + DRV_DEBUG("= Failed to get function parameters"); + return -1; + } + + DRV_DEBUG("= Function has %zu parameters", param_types->size); + for (size_t j = 0; j < param_types->size; ++j) { + const wasm_valtype_t* param_type = param_types->data[j]; + wasm_valkind_t param_kind = wasm_valtype_kind(param_type); + params[j].kind = param_kind; + DRV_DEBUG("= Param %zu: %s, %i", j, get_wasm_type_name(param_kind), params[j].of.i64); + } + + + // Get the function's result types and set the result types for results + const wasm_valtype_vec_t* result_types = wasm_functype_results(function_type); + if (!result_types) { + DRV_DEBUG("= Failed to get function results"); + return -1; + } + DRV_DEBUG("= Function has %zu results", result_types->size); + + for (size_t k = 0; k < result_types->size; ++k) { + const wasm_valtype_t* result_type = result_types->data[k]; + wasm_valkind_t result_kind = wasm_valtype_kind(result_type); + results[k].kind = result_kind; + results[k].of.i64 = 0; // Initialize result value + DRV_DEBUG("= Result %zu: %s, %i", k, get_wasm_type_name(result_kind), results[k].of.i64); + } + + + // Call the exported function + if (wasm_runtime_call_wasm_a(proc->exec_env, func->func_comm_rt, result_types->size, results, param_types->size, params)) { + DRV_DEBUG("= Function call successful"); + } else { + const char* exception = wasm_runtime_get_exception(proc->exec_env); + DRV_DEBUG("= Function call failed: %s", exception); + return -1; + } + + // Retrieve the stack pointer result (as i64) + int64_t stack_pointer = results[0].of.i64; // Assuming the result is i64 + DRV_DEBUG("Stack pointer: %lld", stack_pointer); + + return 0; +} + diff --git a/c_src/include/hb_core.h b/c_src/include/hb_core.h new file mode 100644 index 000000000..a63e9ec7d --- /dev/null +++ b/c_src/include/hb_core.h @@ -0,0 +1,102 @@ +#ifndef HB_CORE_H +#define HB_CORE_H + +#include +#include +#include +#include +#include +#include +#include +#include + +// Structure to represent the response for an import operation +typedef struct { + ErlDrvMutex* response_ready; // Mutex to synchronize response readiness + ErlDrvCond* cond; // Condition variable to signal readiness + int ready; // Flag indicating if the response is ready + char* error_message; // Error message (if any) + ei_term* result_terms; // List of result terms from the import + int result_length; // Length of the result_terms +} ImportResponse; + +// Structure to represent a WASM process instance +typedef struct { + wasm_engine_t* engine; // WASM engine instance + wasm_instance_t* instance; // WASM instance + wasm_module_t* module; // WASM module + wasm_store_t* store; // WASM store + ErlDrvPort port; // Erlang port associated with this process + ErlDrvTermData port_term; // Erlang term representation of the port + ErlDrvMutex* is_running; // Mutex to track if the process is running + char* current_function; // Current function being executed + long current_function_ix; // Index of the current function + int indirect_func_table_ix; // Index of the indirect function table + wasm_table_t* indirect_func_table; // Indirect function table + wasm_exec_env_t exec_env; // Execution environment for the WASM instance + ei_term* current_args; // Arguments for the current function + int current_args_length; // Length of the current arguments + ImportResponse* current_import; // Import response structure + ErlDrvTermData pid; // PID of the Erlang process + int is_initialized; // Flag to check if the process is initialized + time_t start_time; // Start time of the process +} Proc; + +// Structure to represent an import hook +typedef struct { + char* module_name; // Name of the module + char* field_name; // Name of the field (function) + char* signature; // Function signature + Proc* proc; // The associated process + wasm_func_t* stub_func; // WASM function pointer for the import +} ImportHook; + +// Structure to represent the request for loading a WASM binary +typedef struct { + void* binary; // Binary data for the WASM module + long size; // Size of the binary + Proc* proc; // The associated process + char* mode; // Mode of the WASM module +} LoadWasmReq; + +// NO_PROD: Import these from headers instead + +// Structure for a common WASM module instance +typedef struct WASMModuleInstanceCommon { + uint32_t module_type; // Type of the module + uint8_t module_inst_data[1]; // Module instance data +} WASMModuleInstanceCommon; + +// Structure to store host information about the WASM instance +struct wasm_host_info { + void *info; // Pointer to host info + void (*finalizer)(void *); // Finalizer function for the host info +}; + +// Structure representing a WASM function (extended with host-specific details) +struct wasm_func_t { + wasm_store_t *store; // WASM store + wasm_name_t *module_name; // Module name for the function + wasm_name_t *name; // Function name + uint16_t kind; // Function kind (e.g., export) + struct wasm_host_info host_info; // Host-specific information + wasm_functype_t *type; // Function type (parameters and results) + uint16_t param_count; // Number of parameters + uint16_t result_count; // Number of results + bool with_env; // Whether the function has an environment + union { + wasm_func_callback_t cb; // Callback function + struct callback_ext { + void *env; // Environment for the callback + wasm_func_callback_with_env_t cb; // Callback function with environment + void (*finalizer)(void *); // Finalizer for the callback + } cb_env; + } u; + uint16_t func_idx_rt; // Function index in the runtime + WASMModuleInstanceCommon *inst_comm_rt; // Module instance data + WASMFunctionInstanceCommon *func_comm_rt; // Function instance data +}; + + + +#endif // HB_CORE_H \ No newline at end of file diff --git a/c_src/include/hb_driver.h b/c_src/include/hb_driver.h new file mode 100644 index 000000000..5d782f160 --- /dev/null +++ b/c_src/include/hb_driver.h @@ -0,0 +1,47 @@ +#ifndef HB_DRIVER_H +#define HB_DRIVER_H + +#include "hb_core.h" + +/* + * Function: drv_lock + * -------------------- + * Locks the specified mutex to ensure exclusive access to shared resources. + * + * mutex: The mutex to be locked. + */ +void drv_lock(ErlDrvMutex* mutex); + +/* + * Function: drv_unlock + * -------------------- + * Unlocks the specified mutex, allowing other threads to access the shared resource. + * + * mutex: The mutex to be unlocked. + */ +void drv_unlock(ErlDrvMutex* mutex); + +/* + * Function: drv_signal + * -------------------- + * Signals the condition variable, notifying one or more threads waiting for the condition. + * + * mut: The mutex used to synchronize access to shared resources. + * cond: The condition variable to signal. + * ready: A flag indicating the state of the condition, typically set to 1 to signal that the condition is met. + */ +void drv_signal(ErlDrvMutex* mut, ErlDrvCond* cond, int* ready); + +/* + * Function: drv_wait + * -------------------- + * Causes the current thread to wait for a signal on the condition variable, holding the provided mutex. + * The thread will be blocked until the condition variable is signaled. + * + * mut: The mutex used to synchronize access to shared resources. + * cond: The condition variable to wait on. + * ready: A flag indicating the state of the condition. The thread will wait until this is set to 1. + */ +void drv_wait(ErlDrvMutex* mut, ErlDrvCond* cond, int* ready); + +#endif diff --git a/c_src/include/hb_helpers.h b/c_src/include/hb_helpers.h new file mode 100644 index 000000000..2d2aa35ed --- /dev/null +++ b/c_src/include/hb_helpers.h @@ -0,0 +1,133 @@ +#ifndef HB_HELPERS_H +#define HB_HELPERS_H + +#include "hb_core.h" + +/* + * Function: get_wasm_type_name + * -------------------- + * Returns the string name corresponding to the given WASM value type. + * + * kind: The WASM value type kind (e.g., WASM_I32, WASM_I64, WASM_F32, WASM_F64). + * + * returns: A string representing the value type (e.g., "i32", "i64", etc.). + */ +const char* get_wasm_type_name(wasm_valkind_t kind); + +/* + * Function: wasm_externtype_to_kind_string + * -------------------- + * Converts a WASM external type to its corresponding kind string. + * + * type: A pointer to the WASM external type to convert. + * + * returns: A string representing the kind of the external type (e.g., "func", "global", "table", "memory"). + */ +const char* wasm_externtype_to_kind_string(const wasm_externtype_t* type); + +/* + * Function: wasm_valtype_kind_to_char + * -------------------- + * Converts a WASM value type to its corresponding character representation. + * + * valtype: The WASM value type to convert. + * + * returns: A character representing the value type (e.g., 'i' for i32, 'f' for f32). + */ +char wasm_valtype_kind_to_char(const wasm_valtype_t* valtype); + +/* + * Function: wasm_val_to_erl_term + * -------------------- + * Converts a WASM value to an Erlang term. + * + * term: The Erlang term data to be filled with the converted value. + * val: The WASM value to convert. + * + * returns: 2 on success (size of the term), 0 if conversion fails. + */ +int wasm_val_to_erl_term(ErlDrvTermData* term, const wasm_val_t* val); + +/* + * Function: erl_term_to_wasm_val + * -------------------- + * Converts an Erlang term to a WASM value. + * + * val: The WASM value to be populated. + * term: The Erlang term to convert. + * + * returns: 0 on success, -1 if conversion fails. + */ +int erl_term_to_wasm_val(wasm_val_t* val, ei_term* term); + +/* + * Function: erl_terms_to_wasm_vals + * -------------------- + * Converts a list of Erlang terms to a vector of WASM values. + * + * vals: The WASM values vector to be filled. + * terms: The list of Erlang terms to convert. + * + * returns: 0 on success, -1 on failure. + */ +int erl_terms_to_wasm_vals(wasm_val_vec_t* vals, ei_term* terms); + +/* + * Function: decode_list + * -------------------- + * Decodes a list of Erlang terms from a provided binary buffer. + * + * buff: The binary buffer containing the Erlang encoded terms. + * index: The index in the buffer to start decoding from. + * + * returns: A pointer to the decoded list of Erlang terms, or NULL if an error occurs. + */ +ei_term* decode_list(char* buff, int* index); + +/* + * Function: get_function_sig + * -------------------- + * Retrieves the function signature as a string from a WASM external type. + * + * type: The WASM external type representing a function. + * type_str: The string that will hold the function signature. + * + * returns: 1 on success, 0 if the external type is not a function or there is an error. + */ +int get_function_sig(const wasm_externtype_t* type, char* type_str); + +/* + * Function: get_exported_function + * -------------------- + * Retrieves an exported function from the WASM instance by its name. + * + * proc: The process structure containing the WASM instance. + * target_name: The name of the exported function to retrieve. + * + * returns: A pointer to the exported WASM function, or NULL if the function is not found. + */ +wasm_func_t* get_exported_function(Proc* proc, const char* target_name); + +/* + * Function: get_memory + * -------------------- + * Retrieves the WASM memory associated with the given process. + * + * proc: The process structure containing the WASM instance. + * + * returns: A pointer to the WASM memory object, or NULL if not found. + */ +wasm_memory_t* get_memory(Proc* proc); + +/* + * Function: get_memory_size + * -------------------- + * Retrieves the size of the WASM memory in bytes. + * + * proc: The process structure containing the WASM instance. + * + * returns: The size of the WASM memory in bytes. + */ +long get_memory_size(Proc* proc); + +#endif // HB_HELPERS_H diff --git a/c_src/include/hb_logging.h b/c_src/include/hb_logging.h new file mode 100644 index 000000000..5087e193a --- /dev/null +++ b/c_src/include/hb_logging.h @@ -0,0 +1,41 @@ +#ifndef HB_LOGGING_H +#define HB_LOGGING_H + +#include "hb_core.h" + +// Enable debug logging by default if not defined +#ifndef HB_DEBUG +#define HB_DEBUG 1 +#endif + + +#define DRV_DEBUG(format, ...) beamr_print(HB_DEBUG, __FILE__, __LINE__, format, ##__VA_ARGS__) +#define DRV_PRINT(format, ...) beamr_print(1, __FILE__, __LINE__, format, ##__VA_ARGS__) + +/* + * Function: beamr_print + * -------------------- + * This function prints a formatted message to the standard output, prefixed with the thread + * ID, file name, and line number where the log was generated. + * + * print: A flag that controls whether the message is printed (1 to print, 0 to skip). + * file: The source file name where the log was generated. + * line: The line number where the log was generated. + * format: The format string for the message. + * ...: The variables to be printed in the format. + */ +void beamr_print(int print, const char* file, int line, const char* format, ...); + +/* + * Function: send_error + * -------------------- + * This function sends an error message to the Erlang process, formatted according to the provided + * message format and arguments. The message is also logged using the DRV_DEBUG macro. + * + * proc: The process to send the error message to. + * message_fmt: The format string for the error message. + * ...: The variables to be printed in the error message. + */ +void send_error(Proc* proc, const char* message_fmt, ...); + +#endif // HB_LOGGING_H diff --git a/c_src/include/hb_wasm.h b/c_src/include/hb_wasm.h new file mode 100644 index 000000000..575acc0fb --- /dev/null +++ b/c_src/include/hb_wasm.h @@ -0,0 +1,66 @@ +#ifndef HB_WASM_H +#define HB_WASM_H + +#include "hb_core.h" + +/* + * Function: wasm_handle_import + * -------------------- + * Handles the import for processing WASM imports. + * + * env: The environment (import hook) associated with the import. + * args: The arguments for the import function. + * results: The results of the import will be stored here. + * + * returns: A WASM trap in case of an error, or NULL on success. + */ +wasm_trap_t* wasm_handle_import(void* env, const wasm_val_vec_t* args, wasm_val_vec_t* results); + +/* + * Function: wasm_initialize_runtime + * -------------------- + * Initializes the WASM module asynchronously. + * + * raw: A pointer to the raw data for the initialization. + */ +void wasm_initialize_runtime(void* raw); + +/* + * Function: wasm_execute_function_async + * -------------------- + * Asynchronously executes a WASM function. + * + * raw: A pointer to the process structure containing the function call details. + */ +void wasm_execute_function(void* raw); + +/* + * Function: wasm_execute_indirect_function + * -------------------- + * Executes an indirect WASM function asynchronously. + * + * proc: The current process structure. + * function_name: The name of the indirect function to call. + * input_args: The input arguments for the function call. + * output_results: The results of the function call will be stored here. + * + * returns: 0 on success or -1 on failure. + */ +int wasm_execute_indirect_function(Proc* proc, const char *function_name, const wasm_val_vec_t* input_args, wasm_val_vec_t* output_results); + +/* + * Function: wasm_execute_exported_function + * -------------------- + * Invokes a specific exported WASM function from the runtime environment. + * + * proc: The current process structure. + * function_name: The name of the function to call. + * params: The parameters to pass to the function. + * results: The results of the function call will be stored here. + * + * returns: A 64-bit status code indicating success (0) or failure (-1). + */ +int wasm_execute_exported_function(Proc* proc, const *function_name, wasm_val_t* params, wasm_val_t * results); + + +#endif \ No newline at end of file diff --git a/rebar.config b/rebar.config index 9661c9447..1567f4842 100644 --- a/rebar.config +++ b/rebar.config @@ -26,7 +26,13 @@ ]}. {port_specs, [ - {"./priv/hb_beamr.so", ["./c_src/hb_beamr.c"]} + {"./priv/hb_beamr.so", [ + "./c_src/hb_beamr.c", + "./c_src/hb_wasm.c", + "./c_src/hb_driver.c", + "./c_src/hb_helpers.c", + "./c_src/hb_logging.c" + ]} ]}. {deps, [ diff --git a/src/dev_emscripten.erl b/src/dev_emscripten.erl index 093193ee1..c310eb537 100644 --- a/src/dev_emscripten.erl +++ b/src/dev_emscripten.erl @@ -19,7 +19,7 @@ %%% %%% Where '_vjj' represents the type spec of the function. -module(dev_emscripten). --export([info/1, init/3, router/4]). +-export([info/1, init/3, router/4, invoke_vjj/3]). -include("src/include/hb.hrl"). @@ -29,7 +29,8 @@ info(_) -> #{ - handler => fun router/4 + default_handler => fun router/4, + excludes => [keys, id, unsigned, hashpath] }. %% @doc On-boot, initialize the virtual file system with: @@ -39,21 +40,25 @@ init(M1, _M2, Opts) -> hb_converge:set( M1, #{ - <<"WASM/stdlib/_emscripten_system">> => + <<"WASM/stdlib/env">> => #{ device => <<"Emscripten/1.0">>} }, Opts ), {ok, MsgWithLib}. +invoke_vjj(Msg1, Msg2, Opts) -> + ?event(debug, invoke_emscripten_vjj), + router(<<"invoke_vjj">>, Msg1, Msg2, Opts). + router(<<"invoke_", _/binary>>, Msg1, Msg2, Opts) -> ?event(debug, invoke_emscripten), State = hb_converge:get(<<"State">>, Msg1, #{ hashpath => ignore }), WASM = dev_wasm:instance(State, Msg2, Opts), [Index|Args] = hb_converge:get(args, Msg2, #{ hashpath => ignore }), - ?event(debug, invoke_emscripten_stack_get_current), - {ok, SP, _} = hb_beamr:call(WASM, <<"emscripten_stack_get_current">>, []), - ?event(debug, invoke_emscripten_stack_get_current_done), + %?event(debug, invoke_emscripten_stack_get_current), + % {ok, SP, _} = hb_beamr:call(WASM, <<"emscripten_stack_get_current">>, []), + % ?event(debug, invoke_emscripten_stack_get_current_done), ImportResolver = hb_private:get(<<"WASM/Import-Resolver">>, State, Opts), try ?event(debug, trying_indirect_call), @@ -63,15 +68,14 @@ router(<<"invoke_", _/binary>>, Msg1, Msg2, Opts) -> catch _:Error -> ?event(debug, calling_emscripten_stack_restore), - hb_beamr:call(WASM, <<"_emscripten_stack_restore">>, [SP]), - ?event(debug, calling_set_threw), - hb_beamr:call(WASM, <<"setThrew">>, [1, 0]), - ?event(debug, calling_set_threw_done), + % hb_beamr:call(WASM, <<"_emscripten_stack_restore">>, [SP]), + % ?event(debug, calling_set_threw), + % hb_beamr:call(WASM, <<"setThrew">>, [1, 0]), + % ?event(debug, calling_set_threw_done), {error, Error} end. %%% Tests - generate_stack(File) -> Wallet = hb:wallet(), Msg0 = dev_wasm:cache_wasm_image(File), @@ -105,7 +109,7 @@ generate_stack(File) -> %% @doc Ensure that an AOS Emscripten-style WASM AOT module can be invoked %% with a function reference. emscripten_aot_test() -> - Msg = dev_json_iface:generate_stack("test/test-aos-2-pure-xs.aot", <<"AOT">>), + Msg = generate_stack("test/process.aot"), Proc = hb_converge:get(<<"Process">>, Msg, #{ hashpath => ignore }), ProcID = hb_converge:get(id, Proc, #{}), {ok, Msg3} = diff --git a/src/dev_wasi.erl b/src/dev_wasi.erl index 86f96dbc8..a5bfac19f 100644 --- a/src/dev_wasi.erl +++ b/src/dev_wasi.erl @@ -288,8 +288,8 @@ wasi_stack_is_serializable_test() -> basic_aos_exec_test() -> - Init = generate_wasi_stack("test/aos-2-pure-xs.wasm", <<"handle">>, []), - Msg = gen_test_aos_msg("return 1+1"), + Init = generate_wasi_stack("test/test-aos-2-pure-xs.aot", <<"handle">>, []), + Msg = gen_test_aos_msg("return 1 + 1"), Env = gen_test_env(), Instance = hb_private:get(<<"WASM/Instance">>, Init, #{}), {ok, Ptr1} = hb_beamr_io:malloc(Instance, byte_size(Msg)), diff --git a/test/test-aos-2-pure-xs.aot b/test/test-aos-2-pure-xs.aot index a270a1a73406ac0d1d70b19e8a04c591bb2114ec..4a76a770f14c482d1f144719a06bd6555795ba71 100644 GIT binary patch delta 223986 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�U+OYBL_0Q!Pwz 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 delta 224423 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 G@biBG5}L&T From bd223a3818c5985fe8f72ce533c56c8935329450 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Tue, 14 Jan 2025 21:28:44 -0500 Subject: [PATCH 008/364] fix: `dev_meta` control flow. Add `force_message` option to `hb_converge`. --- src/dev_meta.erl | 46 ++++++++++++++++++++++++++++++++------------- src/hb_converge.erl | 22 +++++++++++++++++----- src/hb_http.erl | 9 ++++++++- 3 files changed, 58 insertions(+), 19 deletions(-) diff --git a/src/dev_meta.erl b/src/dev_meta.erl index 3cda8e2df..ef3482690 100644 --- a/src/dev_meta.erl +++ b/src/dev_meta.erl @@ -30,18 +30,18 @@ is_meta_request(_) -> false. handle_meta([Request|_], NodeMsg) -> case hb_converge:get(<<"method">>, Request, NodeMsg) of <<"GET">> -> - {ok, hb_private:reset(Request, NodeMsg)}; + embed_status({ok, hb_private:reset(Request)}); <<"POST">> -> - ReqSigners = hb_message:signers(Request, NodeMsg), + ReqSigners = hb_message:signers(Request), Owner = hb_opts:get(owner, no_owner_set, NodeMsg), case lists:member(Owner, ReqSigners) of false -> - {error, {unauthorized, Request}}; + embed_status({error, <<"Unauthorized">>}); true -> - hb_http_server:setops(NodeMsg), - {ok, <<"OK">>} + hb_http_server:set_opts(NodeMsg), + embed_status({ok, <<"OK">>}) end; - _ -> {error, {unsupported_method, Request}} + _ -> embed_status({error, <<"Unsupported Method">>}) end. %% @doc Handle a Converge request, which is a list of messages. We apply @@ -50,14 +50,26 @@ handle_meta([Request|_], NodeMsg) -> %% After execution, we run the node's `postprocessor` message on the result of %% the request before returning the result it grants back to the user. handle_converge(Request, NodeMsg) -> + % Apply the pre-processor to the request. case resolve_processor(preprocessor, Request, NodeMsg) of {ok, PreProcMsg} -> - case hb_converge:resolve(PreProcMsg, NodeMsg) of - {ok, ConvergedMsg} -> - resolve_processor(postprocessor, ConvergedMsg, NodeMsg); - {error, Error} -> {error, Error} - end; - {error, Error} -> {error, Error} + % Resolve the request message. + {ok, Res} = + embed_status( + hb_converge:resolve( + PreProcMsg, + NodeMsg#{ force_message => true } + ) + ), + % Apply the post-processor to the result. + embed_status( + resolve_processor( + postprocessor, + Res, + NodeMsg + ) + ); + Res -> embed_status(Res) end. %% @doc execute a message from the node message upon the user's request. @@ -65,5 +77,13 @@ resolve_processor(Processor, Request, NodeMsg) -> case hb_opts:get(Processor, undefined, NodeMsg) of undefined -> {ok, Request}; ProcessorMsg -> - hb_converge:resolve(ProcessorMsg, Request, NodeMsg) + hb_converge:resolve( + ProcessorMsg, + Request, + NodeMsg#{ force_message => true } + ) end. + +%% @doc Wrap the result of a device call in a status. +embed_status({Status, Res}) -> + {ok, Res#{ <<"Status-Code">> => hb_http:status_code(Status) }}. \ No newline at end of file diff --git a/src/hb_converge.erl b/src/hb_converge.erl index 4a3871424..70a61bb01 100644 --- a/src/hb_converge.erl +++ b/src/hb_converge.erl @@ -344,7 +344,7 @@ resolve_stage(6, Func, Msg1, Msg2, ExecName, Opts) -> % Execution. % First, determine the arguments to pass to the function. % While calculating the arguments we unset the add_key option. - UserOpts1 = maps:remove(add_key, Opts), + UserOpts1 = maps:without([add_key, force_message], Opts), % Unless the user has explicitly requested recursive spawning, we % unset the spawn_worker option so that we do not spawn a new worker % for every resulting execution. @@ -361,7 +361,11 @@ resolve_stage(6, Func, Msg1, Msg2, ExecName, Opts) -> % Try to execute the function. Res = try - MsgRes = apply(Func, truncate_args(Func, Args)), + MsgRes = + maybe_force_message( + apply(Func, truncate_args(Func, Args)), + Opts + ), ?event( converge_result, { @@ -420,8 +424,8 @@ resolve_stage(7, Msg1, Msg2, {ok, Msg3}, ExecName, Opts) when is_map(Msg3) -> Msg3#{ hashpath => hb_path:hashpath(Msg1, Msg2, Opts) } ) }; - ignore -> - {ok, maps:without([hashpath] ++ ?REGEN_KEYS, Msg3)} + reset -> {ok, maps:without([hashpath] ++ ?REGEN_KEYS, Msg3)}; + ignore -> {ok, Msg3} end, ExecName, Opts @@ -504,7 +508,7 @@ error_invalid_message(Msg1, Msg2, Opts) -> { error, #{ - <<"Status">> => <<"Forbidden">>, + <<"Status-Code">> => 400, <<"body">> => <<"Request contains non-verifiable message.">> } }. @@ -561,6 +565,14 @@ error_execution(ExecGroup, Msg2, Whence, {Class, Exception, Stacktrace}, Opts) - _ -> Error end. +%% @doc Force the result of a device call into a message if the result is not +%% requested by the `Opts`. +maybe_force_message({Status, Res}, Opts) -> + case hb_opts:get(force_message, false, Opts) and not is_map(Res) of + true -> {Status, #{ <<"body">> => Res }}; + false -> {Status, Res} + end. + %% @doc Shortcut for resolving a key in a message without its status if it is %% `ok'. This makes it easier to write complex logic on top of messages while %% maintaining a functional style. diff --git a/src/hb_http.erl b/src/hb_http.erl index 62486b174..268061e69 100644 --- a/src/hb_http.erl +++ b/src/hb_http.erl @@ -7,7 +7,7 @@ -export([start/0]). -export([get/2, get/3, post/3, post/4, request/4, request/5]). -export([reply/2, reply/3]). --export([message_to_status/1, req_to_tabm_singleton/2]). +-export([message_to_status/1, status_code/1, req_to_tabm_singleton/2]). -include("include/hb.hrl"). -include_lib("eunit/include/eunit.hrl"). @@ -231,6 +231,13 @@ message_to_status(Item) -> _ -> 200 end. +%% @doc Convert an HTTP status code to an atom. +status_code(ok) -> 200; +status_code(error) -> 400; +status_code(created) -> 201; +status_code(unavailable) -> 503; +status_code(Status) -> Status. + %% @doc Convert a cowboy request to a normalized message. req_to_tabm_singleton(Req, Opts) -> case cowboy_req:header(<<"content-type">>, Req) of From 633cfa7cf330921d09b4e3259f9d4de4105e7077 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 15 Jan 2025 01:35:54 -0500 Subject: [PATCH 009/364] feat: support execution of `hb_singleton` messages in `hb_converge` --- src/hb_converge.erl | 80 +++++++++++--------------------- src/hb_converge_test_vectors.erl | 15 ++---- src/hb_path.erl | 21 ++++----- 3 files changed, 40 insertions(+), 76 deletions(-) diff --git a/src/hb_converge.erl b/src/hb_converge.erl index 70a61bb01..948875284 100644 --- a/src/hb_converge.erl +++ b/src/hb_converge.erl @@ -101,31 +101,6 @@ -export([deep_set/4, is_exported/4, message_to_fun/3]). -include("include/hb.hrl"). -%% @doc Takes a singleton message and parse Msg1 and Msg2 from it, then invoke -%% `resolve'. -resolve(Msg, Opts) -> - Path = - hb_path:term_to_path_parts( - hb_converge:get( - path, - Msg, - #{ hashpath => ignore } - ), - Opts - ), - case Path of - [ Msg1ID | _Rest ] when ?IS_ID(Msg1ID) -> - ?event({normalizing_single_message_message_path, Msg}), - {ok, Msg1} = hb_cache:read(<<"Messages/", Msg1ID/binary>>, Opts), - resolve( - Msg1, - hb_path:tl(Msg, Opts), - Opts - ); - SingletonPath -> - resolve(Msg, #{ path => SingletonPath }, Opts) - end. - %% @doc Get the value of a message's key by running its associated device %% function. Optionally, takes options that control the runtime environment. %% This function returns the raw result of the device function call: @@ -142,7 +117,17 @@ resolve(Msg, Opts) -> %% 9: Notify waiters. %% 10: Fork worker. %% 11: Recurse, fork, or terminate. -resolve(Msg1, Msg2, Opts) -> resolve_stage(1, Msg1, Msg2, Opts). + +resolve(SingletonMsg, Opts) when is_map(SingletonMsg) -> + resolve(hb_singleton:from(SingletonMsg), Opts); +resolve(Full = [Msg1, Msg2 | MsgList], Opts) when is_list(Msg1) -> + resolve( + Msg1, + hb_path:priv_store_original(Msg2, Full, MsgList), + Opts + ). +resolve(Msg1, Msg2, Opts) -> + resolve_stage(1, Msg1, Msg2, Opts). resolve_stage(1, Msg1, Msg2, Opts) when is_list(Msg1) -> % Normalize lists to numbered maps (base=1) if necessary. ?event(converge_core, {stage, 1, list_normalize}, Opts), @@ -158,31 +143,19 @@ resolve_stage(1, Msg1, Path, Opts) when not is_map(Path) -> resolve_stage(1, Msg1, #{ path => Path }, Opts); resolve_stage(1, Msg1, Msg2, Opts) -> ?event(converge_core, {stage, 1, normalize_path}, Opts), - % Path normalization: Ensure that the path is requesting a single key. - % Stash remaining path elements in `priv/Converge/Remaining-Path'. - % Stash the original path in `priv/Converge/Original-Path', if it - % is not already there from a previous resolution. - InitialPriv = hb_private:from_message(Msg1), - OriginalPath = - case InitialPriv of - #{ <<"Converge">> := #{ <<"Original-Path">> := XPath } } -> - XPath; - _ -> hb_path:from_message(request, Msg2) - end, - Head = hb_path:hd(Msg2, Opts), - FullPath = hb_path:from_message(request, Msg2), - case FullPath of + case hb_path:priv_remaining(Msg2, Opts) of undefined -> - throw({error, {invalid_path, FullPath, Msg2}}); - _ -> ok - end, - Msg2UpdatedPriv = - hb_path:priv_store_original( - Msg2, - OriginalPath, - hb_path:tl(FullPath, Opts) - ), - resolve_stage(2, Msg1, Msg2UpdatedPriv#{ path => Head }, Opts); + % We are executing our first run with no message list to recurse + % on set. Parse the path, set the remaining path, and recurse. + [Path|Remaining] = hb_path:from_message(request, Msg2), + resolve_stage( + 2, + Msg1, + hb_path:priv_store_remaining(Msg2#{ path => Path }, Remaining), + Opts + ); + _ -> resolve_stage(2, Msg1, Msg2, Opts) + end; resolve_stage(2, Msg1, Msg2, Opts) -> ?event(converge_core, {stage, 2, cache_lookup}, Opts), % Lookup request in the cache. If we find a result, return it. @@ -477,7 +450,7 @@ resolve_stage(11, Msg1, Msg2, {Status, Msg3}, ExecName, Opts) -> % Recurse, or terminate. RemainingPath = hb_path:priv_remaining(Msg2, Opts), case RemainingPath of - undefined -> + [] -> % Terminate: We have reached the end of the path. {Status, Msg3}; _ when Status == ok -> @@ -488,7 +461,10 @@ resolve_stage(11, Msg1, Msg2, {Status, Msg3}, ExecName, Opts) -> {remaining_path, RemainingPath} } ), - resolve(Msg3, Msg2#{ path => RemainingPath }, Opts); + case RemainingPath of + [LastMsg] -> resolve(Msg3, LastMsg, Opts); + _ -> resolve([Msg3|RemainingPath], Opts) + end; _ -> error_invalid_intermediate_status( Msg1, Msg2, Msg3, RemainingPath, Opts) diff --git a/src/hb_converge_test_vectors.erl b/src/hb_converge_test_vectors.erl index 6f70eb880..c0bf37011 100644 --- a/src/hb_converge_test_vectors.erl +++ b/src/hb_converge_test_vectors.erl @@ -9,9 +9,8 @@ %% @doc Easy hook to make a test executable via the command line: %% `rebar3 eunit --test hb_converge_test_vectors:run_test` %% Comment/uncomment out as necessary. -% run_test() -> -% run_single(only_store, deep_set_new_messages), -% run_single(only_if_cached, deep_set_new_messages). +run_test() -> + run_single(normal, recursive_get). %% @doc Run a single test with a given set of opts. run_single(OptsName, TestName) -> @@ -577,12 +576,4 @@ list_transform_test(Opts) -> ?assertEqual(<<"B">>, hb_converge:get(2, Msg, Opts)), ?assertEqual(<<"C">>, hb_converge:get(3, Msg, Opts)), ?assertEqual(<<"D">>, hb_converge:get(4, Msg, Opts)), - ?assertEqual(<<"E">>, hb_converge:get(5, Msg, Opts)). - -singleton_resolve_test() -> - Msg1 = #{ - % Should be parsed out and used alone as Msg2: - path => <<"Key1">>, - <<"Key1">> => <<"Value1">> - }, - ?assertEqual({ok, <<"Value1">>}, hb_converge:resolve(Msg1, #{})). + ?assertEqual(<<"E">>, hb_converge:get(5, Msg, Opts)). \ No newline at end of file diff --git a/src/hb_path.erl b/src/hb_path.erl index 297449730..42ebaf0d5 100644 --- a/src/hb_path.erl +++ b/src/hb_path.erl @@ -30,8 +30,7 @@ -module(hb_path). -export([hashpath/2, hashpath/3, hashpath/4, hashpath_alg/1]). -export([hd/2, tl/2, push_request/2, queue_request/2, pop_request/2]). --export([priv_remaining/2, priv_original/2, priv_store_original/2]). --export([priv_store_original/3, priv_store_remaining/2]). +-export([priv_remaining/2, priv_store_remaining/2, priv_store_original/3]). -export([verify_hashpath/2]). -export([term_to_path_parts/1, term_to_path_parts/2, from_message/2]). -export([matches/2, to_binary/1, regex_matches/2, normalize/1]). @@ -71,22 +70,20 @@ tl(Path, Opts) when is_list(Path) -> %% @doc Return the `Remaining-Path' of a message, from its hidden `Converge' %% key. Does not use the `get` or set `hb_private` functions, such that it %% can be safely used inside the main Converge resolve function. -priv_remaining(Msg, Opts) -> +priv_remaining(Msg, _Opts) -> Priv = hb_private:from_message(Msg), Converge = maps:get(<<"Converge">>, Priv, #{}), - maps:get(<<"Remaining-Path">>, Converge, undefined). + maps:get(<<"Remaining">>, Converge, undefined). %% @doc Return the `Original-Path' of a message, from its hidden `Converge' %% key. -priv_original(Msg, Opts) -> +priv_original(Msg, _Opts) -> Priv = hb_private:from_message(Msg), Converge = maps:get(<<"Converge">>, Priv, #{}), - maps:get(<<"Original-Path">>, Converge, undefined). + maps:get(<<"Original">>, Converge, undefined). %% @doc Store the `Original-Path' (and optionally `Remaining-Path') of a message -%% in its hidden `Converge' key. -priv_store_original(Msg, OriginalPath) -> - priv_store_original(Msg, OriginalPath, undefined). +%% in its hidden `Converge' key priv_store_original(Msg, OriginalPath, RemainingPath) -> Priv = hb_private:from_message(Msg), Converge = maps:get(<<"Converge">>, Priv, #{}), @@ -95,8 +92,8 @@ priv_store_original(Msg, OriginalPath, RemainingPath) -> Priv#{ <<"Converge">> => Converge#{ - <<"Original-Path">> => OriginalPath, - <<"Remaining-Path">> => RemainingPath + <<"Original">> => OriginalPath, + <<"Remaining">> => RemainingPath } } }. @@ -110,7 +107,7 @@ priv_store_remaining(Msg, RemainingPath) -> Priv#{ <<"Converge">> => Converge#{ - <<"Remaining-Path">> => RemainingPath + <<"Remaining">> => RemainingPath } } }. From 4812fb3878098e6c7e71768ca471b240616c5606 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 15 Jan 2025 11:28:22 -0500 Subject: [PATCH 010/364] fix: Converge over singleton lists --- src/dev_meta.erl | 8 ++++++-- src/dev_wasm.erl | 2 +- src/hb_converge.erl | 2 +- src/hb_http.erl | 27 +++++++++++++++++++++------ src/hb_singleton.erl | 17 ++++++++++------- 5 files changed, 39 insertions(+), 17 deletions(-) diff --git a/src/dev_meta.erl b/src/dev_meta.erl index ef3482690..ca545b0f8 100644 --- a/src/dev_meta.erl +++ b/src/dev_meta.erl @@ -10,9 +10,12 @@ %% with a `Meta` key are routed to the `handle_meta/2` function, while all %% other messages are routed to the `handle_converge/2` function. handle(NodeMsg, RawRequest) -> - ?event(debug, {request, RawRequest}), + ?event(debug, #{ request => RawRequest }), NormRequest = hb_singleton:from(RawRequest), - ?event(debug, {norm_request, NormRequest}), + lists:foreach( + fun(Msg) -> ?event(debug, {processing_message, Msg}) end, + NormRequest + ), case is_meta_request(NormRequest) of true -> handle_meta(NormRequest, NodeMsg); false -> handle_converge(NormRequest, NodeMsg) @@ -61,6 +64,7 @@ handle_converge(Request, NodeMsg) -> NodeMsg#{ force_message => true } ) ), + ?event(debug, {res, Res}), % Apply the post-processor to the result. embed_status( resolve_processor( diff --git a/src/dev_wasm.erl b/src/dev_wasm.erl index 33e8458ad..0e6051812 100644 --- a/src/dev_wasm.erl +++ b/src/dev_wasm.erl @@ -207,7 +207,7 @@ normalize(RawM1, M2, Opts) -> Opts ), case Memory of - not_found -> throw({error, no_wasm_instance_or_}); + not_found -> throw({error, no_wasm_instance_or_snapshot}); State -> {ok, M1} = init(RawM1, State, Opts), Res = hb_beamr:deserialize(instance(M1, M2, Opts), State), diff --git a/src/hb_converge.erl b/src/hb_converge.erl index 948875284..96f9f7405 100644 --- a/src/hb_converge.erl +++ b/src/hb_converge.erl @@ -120,7 +120,7 @@ resolve(SingletonMsg, Opts) when is_map(SingletonMsg) -> resolve(hb_singleton:from(SingletonMsg), Opts); -resolve(Full = [Msg1, Msg2 | MsgList], Opts) when is_list(Msg1) -> +resolve(Full = [Msg1, Msg2 | MsgList], Opts) -> resolve( Msg1, hb_path:priv_store_original(Msg2, Full, MsgList), diff --git a/src/hb_http.erl b/src/hb_http.erl index 268061e69..5de158185 100644 --- a/src/hb_http.erl +++ b/src/hb_http.erl @@ -36,7 +36,12 @@ get(Node, Path, Opts) -> %% resulting message in deserialized form. post(Node, Message, Opts) -> post(Node, - hb_converge:get(<<"Path">>, Message, <<"/">>, #{}), + hb_converge:get( + <<"Path">>, + Message, + <<"/">>, + #{ topic => converge_internal } + ), Message, Opts ). @@ -241,7 +246,7 @@ status_code(Status) -> Status. %% @doc Convert a cowboy request to a normalized message. req_to_tabm_singleton(Req, Opts) -> case cowboy_req:header(<<"content-type">>, Req) of - {ok, <<"application/x-ans-104">>} -> + <<"application/x-ans-104">> -> {ok, Body} = read_body(Req), hb_message:convert(ar_bundles:deserialize(Body), tabm, tx, Opts); _ -> @@ -252,7 +257,7 @@ http_sig_to_tabm_singleton(Req = #{ headers := RawHeaders }, _Opts) -> {ok, Body} = read_body(Req), Headers = RawHeaders#{ - <<"relative-reference">> => + <<"path">> => iolist_to_binary( cowboy_req:uri( Req, @@ -283,12 +288,22 @@ read_body(Req0, Acc) -> %%% Tests simple_converge_resolve_test() -> + URL = hb_http_server:start_test_node(), + {ok, Res} = + post( + URL, + #{ path => <<"/Key1">>, <<"Key1">> => <<"Value1">> }, + #{} + ), + ?assertEqual(<<"Value1">>, hb_converge:get(<<"Key1">>, Res, #{})). + +nested_converge_resolve_test() -> URL = hb_http_server:start_test_node(), {ok, Res} = post( URL, #{ - path => <<"Key1">>, + path => <<"/Key1">>, <<"Key1">> => #{<<"Key2">> => #{ @@ -303,8 +318,8 @@ simple_converge_resolve_test() -> wasm_compute_request(ImageFile, Func, Params) -> {ok, Bin} = file:read_file(ImageFile), #{ - path => <<"Init/Compute/Results">>, - device => <<"WASM-64/1.0">>, + path => <<"/Init/Compute/Results">>, + <<"Device">> => <<"WASM-64/1.0">>, <<"WASM-Function">> => Func, <<"WASM-Params">> => Params, <<"Image">> => Bin diff --git a/src/hb_singleton.erl b/src/hb_singleton.erl index e31687b41..8a778443c 100644 --- a/src/hb_singleton.erl +++ b/src/hb_singleton.erl @@ -42,16 +42,16 @@ from(RawMsg) -> {ok, Path, Query} = parse_rel_ref( - maps:get(<<"relative-reference">>, RawMsg, <<"/">>) + maps:get(<<"path">>, RawMsg, <<"/">>) ), - MsgWithoutRef = maps:merge( - maps:remove(<<"relative-reference">>, RawMsg), + MsgWithoutBasePath = maps:merge( + maps:remove(<<"path">>, RawMsg), Query ), % 2. Decode, split, and sanitize path segments. Each yields one step message. Msgs = lists:flatten(lists:map(fun path_messages/1, Path)), % 3. Type keys and values - Typed = apply_types(MsgWithoutRef), + Typed = apply_types(MsgWithoutBasePath), % 4. Group keys by N-scope and global scope ScopedModifications = group_scoped(Typed, Msgs), % 5. Generate the list of messages (plus-notation, device, typed keys). @@ -169,11 +169,15 @@ parse_scope(KeyBin) -> build_messages(Msgs, ScopedModifications) -> do_build(1, Msgs, ScopedModifications). -do_build(I, [], _ScopedKeys) -> []; +do_build(_, [], _ScopedKeys) -> []; do_build(I, [Msg|Rest], ScopedKeys) when not is_map(Msg) -> [Msg | do_build(I+1, Rest, ScopedKeys)]; do_build(I, [Msg | Rest], ScopedKeys) -> - StepMsg = maps:merge(Msg, lists:nth(I, ScopedKeys)), + StepMsg = hb_message:convert( + maps:merge(Msg, lists:nth(I, ScopedKeys)), + converge, + #{ topic => converge_internal } + ), [StepMsg | do_build(I+1, Rest, ScopedKeys)]. %% @doc Parse a path part into a message or an ID. @@ -396,7 +400,6 @@ inlined_keys_test() -> ?assertEqual(not_found, maps:get(<<"K1">>, Msg1, not_found)), ?assertEqual(not_found, maps:get(<<"K2">>, Msg2, not_found)). - multiple_inlined_keys_test() -> Path = <<"/a/b+K1=V1&K2=V2">>, Req = #{ From 46c732e21389649be83997c6fa67a49eee0d3b36 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 15 Jan 2025 14:21:24 -0500 Subject: [PATCH 011/364] feat: add wasm-from-body as a fallback for the location of the WASM binary --- src/dev_wasm.erl | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/dev_wasm.erl b/src/dev_wasm.erl index 0e6051812..80d9c48a8 100644 --- a/src/dev_wasm.erl +++ b/src/dev_wasm.erl @@ -60,17 +60,21 @@ init(M1, M2, Opts) -> ImageBin = case hb_converge:get(<>, M1, Opts) of not_found -> - throw( - { - wasm_init_error, - << - "No viable image found in ", - InPrefix/binary, - "/Image." - >>, - {msg1, M1} - } - ); + case hb_converge:get(<<"body">>, M1, Opts) of + not_found -> + throw( + { + wasm_init_error, + << + "No viable image found in ", + InPrefix/binary, + "/Image." + >>, + {msg1, M1} + } + ); + Bin when is_binary(Bin) -> Bin + end; ImageID when ?IS_ID(ImageID) -> ?event({getting_wasm_image, ImageID}), {ok, ImageMsg} = hb_cache:read(ImageID, Opts), From 0cce94eb2be902b277c9f356dd82a7c8b8b27500 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 15 Jan 2025 14:22:48 -0500 Subject: [PATCH 012/364] fix: `hb_http` tests passing with `dev_meta` and `hb_singleton` --- src/dev_meta.erl | 5 +---- src/hb_converge.erl | 12 ++++++------ src/hb_http.erl | 10 +++++----- src/hb_path.erl | 13 ------------- src/hb_singleton.erl | 12 +++++++++--- 5 files changed, 21 insertions(+), 31 deletions(-) diff --git a/src/dev_meta.erl b/src/dev_meta.erl index ca545b0f8..f9bf076d4 100644 --- a/src/dev_meta.erl +++ b/src/dev_meta.erl @@ -12,10 +12,7 @@ handle(NodeMsg, RawRequest) -> ?event(debug, #{ request => RawRequest }), NormRequest = hb_singleton:from(RawRequest), - lists:foreach( - fun(Msg) -> ?event(debug, {processing_message, Msg}) end, - NormRequest - ), + ?event(debug, {processing_messages, NormRequest}), case is_meta_request(NormRequest) of true -> handle_meta(NormRequest, NodeMsg); false -> handle_converge(NormRequest, NodeMsg) diff --git a/src/hb_converge.erl b/src/hb_converge.erl index 96f9f7405..0f7dd7254 100644 --- a/src/hb_converge.erl +++ b/src/hb_converge.erl @@ -123,7 +123,7 @@ resolve(SingletonMsg, Opts) when is_map(SingletonMsg) -> resolve(Full = [Msg1, Msg2 | MsgList], Opts) -> resolve( Msg1, - hb_path:priv_store_original(Msg2, Full, MsgList), + hb_path:priv_store_remaining(Msg2, MsgList), Opts ). resolve(Msg1, Msg2, Opts) -> @@ -143,6 +143,7 @@ resolve_stage(1, Msg1, Path, Opts) when not is_map(Path) -> resolve_stage(1, Msg1, #{ path => Path }, Opts); resolve_stage(1, Msg1, Msg2, Opts) -> ?event(converge_core, {stage, 1, normalize_path}, Opts), + ?event(debug, {path_normalizing, {msg1, Msg1}, {msg2, Msg2}}), case hb_path:priv_remaining(Msg2, Opts) of undefined -> % We are executing our first run with no message list to recurse @@ -448,15 +449,14 @@ resolve_stage(10, Msg1, Msg2, OtherRes, ExecName, Opts) -> resolve_stage(11, Msg1, Msg2, {Status, Msg3}, ExecName, Opts) -> ?event(converge_core, {stage, 11, ExecName, recursing_or_returning}, Opts), % Recurse, or terminate. - RemainingPath = hb_path:priv_remaining(Msg2, Opts), - case RemainingPath of + case hb_path:priv_remaining(Msg2, Opts) of [] -> % Terminate: We have reached the end of the path. {Status, Msg3}; - _ when Status == ok -> + RemainingPath when Status == ok -> % There are more elements in the path, so we recurse. ?event( - converge_core, + debug, {resolution_recursing, {remaining_path, RemainingPath} } @@ -465,7 +465,7 @@ resolve_stage(11, Msg1, Msg2, {Status, Msg3}, ExecName, Opts) -> [LastMsg] -> resolve(Msg3, LastMsg, Opts); _ -> resolve([Msg3|RemainingPath], Opts) end; - _ -> + RemainingPath -> error_invalid_intermediate_status( Msg1, Msg2, Msg3, RemainingPath, Opts) end. diff --git a/src/hb_http.erl b/src/hb_http.erl index 5de158185..964e34d77 100644 --- a/src/hb_http.erl +++ b/src/hb_http.erl @@ -40,7 +40,7 @@ post(Node, Message, Opts) -> <<"Path">>, Message, <<"/">>, - #{ topic => converge_internal } + Opts#{ topic => converge_internal } ), Message, Opts @@ -295,7 +295,7 @@ simple_converge_resolve_test() -> #{ path => <<"/Key1">>, <<"Key1">> => <<"Value1">> }, #{} ), - ?assertEqual(<<"Value1">>, hb_converge:get(<<"Key1">>, Res, #{})). + ?assertEqual(<<"Value1">>, hb_converge:get(<<"body">>, Res, #{})). nested_converge_resolve_test() -> URL = hb_http_server:start_test_node(), @@ -303,7 +303,7 @@ nested_converge_resolve_test() -> post( URL, #{ - path => <<"/Key1">>, + path => <<"/Key1/Key2/Key3">>, <<"Key1">> => #{<<"Key2">> => #{ @@ -313,7 +313,7 @@ nested_converge_resolve_test() -> }, #{} ), - ?assertEqual(<<"Value2">>, hb_converge:get(<<"Key2/Key3">>, Res, #{})). + ?assertEqual(<<"Value2">>, hb_converge:get(<<"body">>, Res, #{})). wasm_compute_request(ImageFile, Func, Params) -> {ok, Bin} = file:read_file(ImageFile), @@ -322,7 +322,7 @@ wasm_compute_request(ImageFile, Func, Params) -> <<"Device">> => <<"WASM-64/1.0">>, <<"WASM-Function">> => Func, <<"WASM-Params">> => Params, - <<"Image">> => Bin + <<"body">> => Bin }. run_wasm_unsigned_test() -> diff --git a/src/hb_path.erl b/src/hb_path.erl index 42ebaf0d5..8d5d46cb5 100644 --- a/src/hb_path.erl +++ b/src/hb_path.erl @@ -75,13 +75,6 @@ priv_remaining(Msg, _Opts) -> Converge = maps:get(<<"Converge">>, Priv, #{}), maps:get(<<"Remaining">>, Converge, undefined). -%% @doc Return the `Original-Path' of a message, from its hidden `Converge' -%% key. -priv_original(Msg, _Opts) -> - Priv = hb_private:from_message(Msg), - Converge = maps:get(<<"Converge">>, Priv, #{}), - maps:get(<<"Original">>, Converge, undefined). - %% @doc Store the `Original-Path' (and optionally `Remaining-Path') of a message %% in its hidden `Converge' key priv_store_original(Msg, OriginalPath, RemainingPath) -> @@ -112,12 +105,6 @@ priv_store_remaining(Msg, RemainingPath) -> } }. -%% @doc Return the internal ID of a binary as it will be written to our -%% stores. -data_id(Bin, _Opts) when is_binary(Bin) -> - % Default hashpath for a binary message is its SHA2-256 hash. - hb_util:human_id(hb_crypto:sha256(Bin)). - %%% @doc Add an ID of a Msg2 to the HashPath of another message. hashpath(Bin, _Opts) when is_binary(Bin) -> % Default hashpath for a binary message is its SHA2-256 hash. diff --git a/src/hb_singleton.erl b/src/hb_singleton.erl index 8a778443c..ff6ce6342 100644 --- a/src/hb_singleton.erl +++ b/src/hb_singleton.erl @@ -41,7 +41,7 @@ %% messages. from(RawMsg) -> {ok, Path, Query} = - parse_rel_ref( + parse_full_path( maps:get(<<"path">>, RawMsg, <<"/">>) ), MsgWithoutBasePath = maps:merge( @@ -49,7 +49,8 @@ from(RawMsg) -> Query ), % 2. Decode, split, and sanitize path segments. Each yields one step message. - Msgs = lists:flatten(lists:map(fun path_messages/1, Path)), + RawMsgs = lists:flatten(lists:map(fun path_messages/1, Path)), + Msgs = normalize_base(RawMsgs), % 3. Type keys and values Typed = apply_types(MsgWithoutBasePath), % 4. Group keys by N-scope and global scope @@ -58,7 +59,7 @@ from(RawMsg) -> build_messages(Msgs, ScopedModifications). %% @doc Parse the relative reference into path, query, and fragment. -parse_rel_ref(RelativeRef) -> +parse_full_path(RelativeRef) -> {Path, QMap} = case binary:split(RelativeRef, <<"?">>) of [P, QStr] -> {P, cowboy_req:parse_qs(#{ qs => QStr })}; @@ -76,6 +77,11 @@ parse_rel_ref(RelativeRef) -> path_messages(RawBin) when is_binary(RawBin) -> lists:map(fun parse_part/1, path_parts([$/], decode_string(RawBin))). +%% @doc Normalize the base path. +normalize_base([]) -> []; +normalize_base([First|Rest]) when ?IS_ID(First) -> [First|Rest]; +normalize_base(Rest) -> [#{}|Rest]. + %% @doc Split the path into segments, filtering out empty segments and %% segments that are too long. path_parts(Sep, PathBin) when is_binary(PathBin) -> From 1b8ed9cadcbe413f38894e2dd0c868749aed9fbc Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 15 Jan 2025 14:23:49 -0500 Subject: [PATCH 013/364] fix: (ish...) ensure that lists of messages are printed reasonably --- src/hb_codec_converge.erl | 4 ++++ src/hb_message.erl | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/hb_codec_converge.erl b/src/hb_codec_converge.erl index d76373f95..22dcc636b 100644 --- a/src/hb_codec_converge.erl +++ b/src/hb_codec_converge.erl @@ -21,6 +21,10 @@ from(Msg) when is_map(Msg) -> {Key, Value}; {ok, Map} when is_map(Map) -> {Key, from(Map)}; + {ok, Msgs = [Msg1|_]} when is_map(Msg1) -> + % We have a list of maps. Convert to a numbered map and + % recurse. + {Key, from(hb_converge:ensure_message(Msgs))}; {ok, []} -> BinKey = hb_converge:key_to_binary(Key), {<<"Converge-Type:", BinKey/binary>>, <<"Empty-List">>}; diff --git a/src/hb_message.erl b/src/hb_message.erl index 2bb5ef627..f5b9dfc03 100644 --- a/src/hb_message.erl +++ b/src/hb_message.erl @@ -124,6 +124,8 @@ format(Bin, Indent) when is_binary(Bin) -> hb_util:format_binary(Bin), Indent ); +format(List, Indent) when is_list(List) -> + format(hb_converge:ensure_message(List), Indent); format(Map, Indent) when is_map(Map) -> % Define helper functions for formatting elements of the map. ValOrUndef = From 51a15a4cc43773bf9d692c5d4c690cbcc9f6ce25 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 15 Jan 2025 15:04:46 -0500 Subject: [PATCH 014/364] feat: first version of HTTP -> HTTP codec -> singleton -> msgs -> converge -> http codec -> http --- src/hb_converge.erl | 2 +- src/hb_http.erl | 104 +++++++++++++++++++++++++++++++------------ src/hb_singleton.erl | 5 +-- 3 files changed, 78 insertions(+), 33 deletions(-) diff --git a/src/hb_converge.erl b/src/hb_converge.erl index 0f7dd7254..50b0852be 100644 --- a/src/hb_converge.erl +++ b/src/hb_converge.erl @@ -120,7 +120,7 @@ resolve(SingletonMsg, Opts) when is_map(SingletonMsg) -> resolve(hb_singleton:from(SingletonMsg), Opts); -resolve(Full = [Msg1, Msg2 | MsgList], Opts) -> +resolve([Msg1, Msg2 | MsgList], Opts) -> resolve( Msg1, hb_path:priv_store_remaining(Msg2, MsgList), diff --git a/src/hb_http.erl b/src/hb_http.erl index 964e34d77..f9c377910 100644 --- a/src/hb_http.erl +++ b/src/hb_http.erl @@ -66,26 +66,30 @@ request(Method, Peer, Path, Opts) -> request(Method, Config, Path, Message, Opts) when is_map(Config) -> multirequest(Config, Method, Path, Message, Opts); request(Method, Peer, Path, RawMessage, Opts) -> - Message = hb_converge:ensure_message(RawMessage), - BinPeer = if is_binary(Peer) -> Peer; true -> list_to_binary(Peer) end, - BinPath = hb_path:normalize(hb_path:to_binary(Path)), - ?event(http, {http_outbound, Method, BinPeer, BinPath, Message}), - BinMessage = - case map_size(Message) of - 0 -> <<>>; - _ -> ar_bundles:serialize(hb_message:convert(Message, tx, #{})) - end, Req = - #{ - peer => BinPeer, - path => BinPath, - method => Method, - headers => [{<<"Content-Type">>, <<"application/x-ans-104">>}], - body => BinMessage - }, + prepare_request( + hb_opts:get(format, http, Opts), + Method, + Peer, + Path, + RawMessage, + Opts + ), case ar_http:req(Req, Opts) of {ok, Status, Headers, Body} when Status >= 200, Status < 300 -> - ?event({http_got, BinPeer, BinPath, Status, Headers, Body}), + ?event( + { + http_rcvd, + {req, Req}, + {response, + #{ + status => Status, + headers => Headers, + body => Body + } + } + } + ), { case Status of 201 -> created; @@ -94,16 +98,46 @@ request(Method, Peer, Path, RawMessage, Opts) -> Body }; {ok, Status, _Headers, Body} when Status == 400 -> - ?event({http_got_client_error, BinPeer, BinPath}), + ?event( + {http_got_client_error, + {req, Req}, + {response, #{status => Status, body => Body}} + }), {error, Body}; {ok, Status, _Headers, Body} when Status > 400 -> - ?event({http_got_server_error, BinPeer, BinPath}), + ?event( + {http_got_server_error, + {req, Req}, + {response, #{status => Status, body => Body}} + } + ), {unavailable, Body}; Response -> - ?event({http_error, BinPeer, BinPath, Response}), + ?event( + {http_error, + {req, Req}, + {response, Response} + } + ), Response end. +%% @doc Turn a set of request arguments into a request message, formatted in the +%% preferred format. +prepare_request(Format, Method, Peer, Path, RawMessage, Opts) -> + Message = hb_converge:ensure_message(RawMessage), + BinPeer = if is_binary(Peer) -> Peer; true -> list_to_binary(Peer) end, + BinPath = hb_path:normalize(hb_path:to_binary(Path)), + ReqBase = #{ peer => BinPeer, path => BinPath, method => Method }, + case Format of + http -> maps:merge(ReqBase, hb_message:convert(Message, http, Opts)); + ans104 -> + ReqBase#{ + headers => [{<<"Content-Type">>, <<"application/x-ans-104">>}], + body => ar_bundles:serialize(hb_message:convert(Message, tx, #{})) + } + end. + %% @doc Dispatch the same HTTP request to many nodes. Can be configured to %% await responses from all nodes or just one, and to halt all requests after %% after it has received the required number of responses, or to leave all @@ -205,21 +239,33 @@ reply(Req, Message) -> reply(Req, message_to_status(Message), Message). reply(Req, Status, RawMessage) -> Message = hb_converge:ensure_message(RawMessage), - TX = hb_message:convert(Message, tx, converge, #{}), + Encoded = + hb_message:convert( + Message, + hb_opts:get(format, http, #{}), + converge, + #{ topic => converge_internal } + ), ?event(http, {replying, {status, Status}, {path, maps:get(path, Req, undefined_path)}, - {tx, TX} + {encoded, Encoded} } ), Req2 = cowboy_req:stream_reply( Status, - #{<<"content-type">> => <<"application/x-ans-104">>}, + case Encoded of + #{ headers := Headers } -> maps:from_list(Headers); + _ -> #{<<"content-type">> => <<"application/octet-stream">>} + end, Req ), Req3 = cowboy_req:stream_body( - ar_bundles:serialize(TX), + case Encoded of + #{ body := Body } -> Body; + _ -> ar_bundles:serialize(Encoded) + end, nofin, Req2 ), @@ -292,7 +338,7 @@ simple_converge_resolve_test() -> {ok, Res} = post( URL, - #{ path => <<"/Key1">>, <<"Key1">> => <<"Value1">> }, + #{ path => <<"/key1">>, <<"key1">> => <<"Value1">> }, #{} ), ?assertEqual(<<"Value1">>, hb_converge:get(<<"body">>, Res, #{})). @@ -303,11 +349,11 @@ nested_converge_resolve_test() -> post( URL, #{ - path => <<"/Key1/Key2/Key3">>, - <<"Key1">> => - #{<<"Key2">> => + path => <<"/key1/key2/key3">>, + <<"key1">> => + #{<<"key2">> => #{ - <<"Key3">> => <<"Value2">> + <<"key3">> => <<"Value2">> } } }, diff --git a/src/hb_singleton.erl b/src/hb_singleton.erl index ff6ce6342..a21549308 100644 --- a/src/hb_singleton.erl +++ b/src/hb_singleton.erl @@ -41,9 +41,8 @@ %% messages. from(RawMsg) -> {ok, Path, Query} = - parse_full_path( - maps:get(<<"path">>, RawMsg, <<"/">>) - ), + parse_full_path(P = hb_path:to_binary(hb_path:from_message(request, RawMsg))), + ?event(debug, {got_path, P}), MsgWithoutBasePath = maps:merge( maps:remove(<<"path">>, RawMsg), Query From 0ae849233ec8e33bea2aebe9f4f0ea7067dfe459 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 15 Jan 2025 19:01:52 -0500 Subject: [PATCH 015/364] fix: 9 of 11 singleton tests. Subpath in key and inlined map failing --- src/hb_singleton.erl | 72 +++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/src/hb_singleton.erl b/src/hb_singleton.erl index a21549308..780769b50 100644 --- a/src/hb_singleton.erl +++ b/src/hb_singleton.erl @@ -4,7 +4,7 @@ %%% %%% Syntax overview: %%% ``` -%%% Singleton: Message containing keys and a `relative-reference` field, +%%% Singleton: Message containing keys and a `path` field, %%% which may also contain a query string of key-value pairs. %%% %%% Path: @@ -42,7 +42,6 @@ from(RawMsg) -> {ok, Path, Query} = parse_full_path(P = hb_path:to_binary(hb_path:from_message(request, RawMsg))), - ?event(debug, {got_path, P}), MsgWithoutBasePath = maps:merge( maps:remove(<<"path">>, RawMsg), Query @@ -159,12 +158,12 @@ group_scoped(Map, Msgs) -> N <- lists:seq(1, length(Msgs)) ]. -%% @doc Get the scope of a key. +%% @doc Get the scope of a key. Adds 1 to account for the base message. parse_scope(KeyBin) -> case binary:split(KeyBin, <<".">>, [global]) of [Front, Remainder] -> case catch erlang:binary_to_integer(Front) of - NInt when is_integer(NInt) -> {NInt, Remainder}; + NInt when is_integer(NInt) -> {NInt + 1, Remainder}; _ -> throw({error, invalid_scope, KeyBin}) end; _ -> global @@ -257,7 +256,7 @@ maybe_subpath(Str) when byte_size(Str) >= 2 -> case {binary:first(Str), binary:last(Str)} of {$(, $)} -> Inside = binary:part(Str, 1, byte_size(Str) - 2), - {resolve, from(#{ <<"relative-reference">> => Inside })}; + {resolve, from(#{ <<"path">> => Inside })}; _ -> Str end; maybe_subpath(Other) -> Other. @@ -275,7 +274,7 @@ maybe_typed(Key, Value) -> % /a/b+k|Int=(/x/y/z)` => /a/b+k=(/x/y/z/body+Type=Int|Codec) {typed, OnlyKey, - {resolve, from(#{ <<"relative-reference">> => Subpath })} + {resolve, from(#{ <<"path">> => Subpath })} }; {_T, Bin} when is_binary(Bin) -> {typed, OnlyKey, hb_codec_converge:decode_value(Type, Bin)} @@ -288,11 +287,11 @@ maybe_typed(Key, Value) -> single_message_test() -> Req = #{ - <<"relative-reference">> => <<"/a">>, + <<"path">> => <<"/a">>, <<"test-key">> => <<"test-value">> }, Msgs = from(Req), - ?assertEqual(1, length(Msgs)), + ?assertEqual(2, length(Msgs)), ?assert(is_map(hd(Msgs))), ?assertEqual(<<"test-value">>, maps:get(<<"test-key">>, hd(Msgs))). @@ -300,7 +299,7 @@ basic_hashpath_test() -> Hashpath = hb_util:human_id(crypto:strong_rand_bytes(32)), Path = <<"/", Hashpath/binary, "/someOther">>, Req = #{ - <<"relative-reference">> => Path, + <<"path">> => Path, <<"method">> => <<"GET">> }, Msgs = from(Req), @@ -312,14 +311,14 @@ basic_hashpath_test() -> multiple_messages_test() -> Req = #{ - <<"relative-reference">> => <<"/a/b/c">>, + <<"path">> => <<"/a/b/c">>, <<"test-key">> => <<"test-value">> }, Msgs = from(Req), - ?assertEqual(3, length(Msgs)), - [Base, Msg2, Msg3] = Msgs, + ?assertEqual(4, length(Msgs)), + [_Base, Msg1, Msg2, Msg3] = Msgs, ?assert(lists:all(fun is_map/1, Msgs)), - ?assertEqual(<<"test-value">>, maps:get(<<"test-key">>, Base)), + ?assertEqual(<<"test-value">>, maps:get(<<"test-key">>, Msg1)), ?assertEqual(<<"test-value">>, maps:get(<<"test-key">>, Msg2)), ?assertEqual(<<"test-value">>, maps:get(<<"test-key">>, Msg3)). @@ -327,40 +326,41 @@ multiple_messages_test() -> scoped_key_test() -> Req = #{ - <<"relative-reference">> => <<"/a/b/c">>, + <<"path">> => <<"/a/b/c">>, <<"2.test-key">> => <<"test-value">> }, Msgs = from(Req), - ?assertEqual(3, length(Msgs)), - [Msg1, Msg2, Msg3] = Msgs, + ?assertEqual(4, length(Msgs)), + [_, Msg1, Msg2, Msg3] = Msgs, ?assertEqual(not_found, maps:get(<<"test-key">>, Msg1, not_found)), ?assertEqual(<<"test-value">>, maps:get(<<"test-key">>, Msg2, not_found)), ?assertEqual(not_found, maps:get(<<"test-key">>, Msg3, not_found)). typed_key_test() -> Req = #{ - <<"relative-reference">> => <<"/a/b/c">>, + <<"path">> => <<"/a/b/c">>, <<"2.test-key|Integer">> => <<"123">> }, Msgs = from(Req), - ?assertEqual(3, length(Msgs)), - [Msg1, Msg2, Msg3] = Msgs, + ?assertEqual(4, length(Msgs)), + [_, Msg1, Msg2, Msg3] = Msgs, ?assertEqual(not_found, maps:get(<<"test-key">>, Msg1, not_found)), ?assertEqual(123, maps:get(<<"test-key">>, Msg2, not_found)), ?assertEqual(not_found, maps:get(<<"test-key">>, Msg3, not_found)). subpath_in_key_test() -> Req = #{ - <<"relative-reference">> => <<"/a/b/c">>, + <<"path">> => <<"/a/b/c">>, <<"2.test-key|Resolve">> => <<"/x/y/z">> }, Msgs = from(Req), - ?assertEqual(3, length(Msgs)), - [Msg1, Msg2, Msg3] = Msgs, + ?assertEqual(4, length(Msgs)), + [_, Msg1, Msg2, Msg3] = Msgs, ?assertEqual(not_found, maps:get(<<"test-key">>, Msg1, not_found)), ?assertEqual( {resolve, [ + #{}, #{ path => <<"x">> }, #{ path => <<"y">> }, #{ path => <<"z">> } @@ -374,15 +374,16 @@ subpath_in_key_test() -> subpath_in_path_test() -> Req = #{ - <<"relative-reference">> => <<"/a/(x/y/z)/z">> + <<"path">> => <<"/a/(x/y/z)/z">> }, Msgs = from(Req), - ?assertEqual(3, length(Msgs)), - [Msg1, Msg2, Msg3] = Msgs, + ?assertEqual(4, length(Msgs)), + [_, Msg1, Msg2, Msg3] = Msgs, ?assertEqual(<<"a">>, maps:get(path, Msg1)), ?assertEqual( {resolve, [ + #{}, #{ path => <<"x">> }, #{ path => <<"y">> }, #{ path => <<"z">> } @@ -395,11 +396,11 @@ subpath_in_path_test() -> inlined_keys_test() -> Req = #{ <<"method">> => <<"POST">>, - <<"relative-reference">> => <<"/a/b+K1=V1/c+K2=V2">> + <<"path">> => <<"/a/b+K1=V1/c+K2=V2">> }, Msgs = from(Req), - ?assertEqual(3, length(Msgs)), - [Msg1, Msg2, Msg3] = Msgs, + ?assertEqual(4, length(Msgs)), + [_, Msg1, Msg2, Msg3] = Msgs, ?assertEqual(<<"V1">>, maps:get(<<"K1">>, Msg2)), ?assertEqual(<<"V2">>, maps:get(<<"K2">>, Msg3)), ?assertEqual(not_found, maps:get(<<"K1">>, Msg1, not_found)), @@ -409,11 +410,11 @@ multiple_inlined_keys_test() -> Path = <<"/a/b+K1=V1&K2=V2">>, Req = #{ <<"method">> => <<"POST">>, - <<"relative-reference">> => Path + <<"path">> => Path }, Msgs = from(Req), - ?assertEqual(2, length(Msgs)), - [Msg1, Msg2] = Msgs, + ?assertEqual(3, length(Msgs)), + [_, Msg1, Msg2] = Msgs, ?assertEqual(not_found, maps:get(<<"K1">>, Msg1, not_found)), ?assertEqual(not_found, maps:get(<<"K2">>, Msg1, not_found)), ?assertEqual(<<"V1">>, maps:get(<<"K1">>, Msg2, not_found)), @@ -422,15 +423,16 @@ multiple_inlined_keys_test() -> subpath_in_inlined_test() -> Path = <<"/Part1/Part2+Test=1&B=(/x/y)/Part3">>, Req = #{ - <<"relative-reference">> => Path + <<"path">> => Path }, Msgs = from(Req), - ?assertEqual(3, length(Msgs)), - [First, Second, Third] = Msgs, + ?event(debug, {got_msgs, Msgs}), + ?assertEqual(4, length(Msgs)), + [_, First, Second, Third] = Msgs, ?assertEqual(<<"Part1">>, maps:get(path, First)), ?assertEqual(<<"Part3">>, maps:get(path, Third)), ?assertEqual( - {resolve, [#{ path => <<"x">> }, #{ path => <<"y">> }] }, + {resolve, [#{}, #{ path => <<"x">> }, #{ path => <<"y">> }] }, maps:get(<<"B">>, Second) ). From d3357e35b7183a77de6e5325fc2ada32c74236b3 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 15 Jan 2025 22:31:17 -0500 Subject: [PATCH 016/364] Revert "fix: remove debug printouts" This reverts commit 78d487469b7a76c8facde407573c1effdab8c2ff. --- c_src/hb_beamr.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/c_src/hb_beamr.c b/c_src/hb_beamr.c index addebfb62..11ecef4a0 100644 --- a/c_src/hb_beamr.c +++ b/c_src/hb_beamr.c @@ -53,7 +53,7 @@ static ErlDrvTermData atom_import; static ErlDrvTermData atom_execution_result; #ifndef HB_DEBUG -#define HB_DEBUG 0 +#define HB_DEBUG 1 #endif #define DRV_DEBUG(format, ...) beamr_print(HB_DEBUG, __FILE__, __LINE__, format, ##__VA_ARGS__) @@ -166,6 +166,7 @@ ei_term* decode_list(char* buff, int* index) { } DRV_DEBUG("Decoded header. Arity: %d", arity); + DRV_PRINT("alloc1 - alloc %d (%d * %d)", sizeof(ei_term) * arity, sizeof(ei_term), arity); ei_term* res = driver_alloc(sizeof(ei_term) * arity); if(type == ERL_LIST_EXT) { @@ -179,6 +180,7 @@ ei_term* decode_list(char* buff, int* index) { } else if(type == ERL_STRING_EXT) { //DRV_DEBUG("Decoding list encoded as string"); + DRV_PRINT("alloc2 %d", arity * sizeof(char) + 1); unsigned char* str = driver_alloc(arity * sizeof(char) + 1); ei_decode_string(buff, index, str); for(int i = 0; i < arity; i++) { @@ -186,6 +188,7 @@ ei_term* decode_list(char* buff, int* index) { res[i].value.i_val = (long) str[i]; DRV_DEBUG("Decoded term %d: %d", i, res[i].value.i_val); } + DRV_PRINT("alloc2 - free"); driver_free(str); } else { @@ -193,6 +196,7 @@ ei_term* decode_list(char* buff, int* index) { return NULL; } + DRV_PRINT("res %x", *res); return res; } @@ -300,9 +304,11 @@ long get_memory_size(Proc* proc) { void send_error(Proc* proc, const char* message_fmt, ...) { va_list args; va_start(args, message_fmt); + DRV_PRINT("alloc3 %d", 256); char* message = driver_alloc(256); vsnprintf(message, 256, message_fmt, args); DRV_DEBUG("Sending error message: %s", message); + DRV_PRINT("alloc4 %d", sizeof(ErlDrvTermData) * 7); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * 7); int msg_index = 0; msg[msg_index++] = ERL_DRV_ATOM; @@ -315,7 +321,9 @@ void send_error(Proc* proc, const char* message_fmt, ...) { int msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); DRV_DEBUG("Sent error message. Res: %d", msg_res); + DRV_PRINT("alloc3 - free"); driver_free(message); + DRV_PRINT("alloc4 - free"); driver_free(msg); va_end(args); } @@ -328,6 +336,7 @@ wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_ DRV_DEBUG("Import name: %s.%s [%s]", import_hook->module_name, import_hook->field_name, import_hook->signature); // Initialize the message object + DRV_PRINT("alloc5 %d", sizeof(ErlDrvTermData) * ((2+(2*3)) + ((args->size + 1) * 2) + ((results->size + 1) * 2) + 2)); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * ((2+(2*3)) + ((args->size + 1) * 2) + ((results->size + 1) * 2) + 2)); int msg_index = 0; msg[msg_index++] = ERL_DRV_ATOM; @@ -357,6 +366,7 @@ wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_ msg[msg_index++] = 5; // Initialize the result vector and set the required result types + DRV_PRINT("alloc6 %d", sizeof(ImportResponse)); proc->current_import = driver_alloc(sizeof(ImportResponse)); // Create and initialize a is_running and condition variable for the response @@ -367,6 +377,7 @@ wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_ DRV_DEBUG("Sending %d terms...", msg_index); // Send the message to the caller process int msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); + DRV_PRINT("alloc5 - free"); driver_free(msg); // Wait for the response (we set this directly after the message was sent // so we have the lock, before Erlang sends us data back) @@ -380,6 +391,7 @@ wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_ wasm_name_t message; wasm_name_new_from_string_nt(&message, proc->current_import->error_message); wasm_trap_t* trap = wasm_trap_new(proc->store, &message); + DRV_PRINT("alloc6 - free"); // TODO: check where the error_message is allocated driver_free(proc->current_import->error_message); driver_free(proc->current_import); @@ -405,8 +417,10 @@ wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_ erl_drv_cond_destroy(proc->current_import->cond); erl_drv_mutex_destroy(proc->current_import->response_ready); if (proc->current_import->result_terms) { + DRV_PRINT("alloc1 - free2"); driver_free(proc->current_import->result_terms); } + DRV_PRINT("alloc6 - free"); driver_free(proc->current_import); proc->current_import = NULL; @@ -464,6 +478,7 @@ static void async_init(void* raw) { // Create Erlang lists for imports //DRV_DEBUG("Exports size: %d", exports.size); + DRV_PRINT("alloc7 %d", sizeof(ErlDrvTermData) * (2 + (13 * imports.size) + (11 * exports.size))); ErlDrvTermData* init_msg = driver_alloc(sizeof(ErlDrvTermData) * (2 + (13 * imports.size) + (11 * exports.size))); //DRV_DEBUG("Allocated init message"); int msg_i = 0; @@ -480,6 +495,7 @@ static void async_init(void* raw) { //DRV_DEBUG("Import: %s.%s", module_name->data, name->data); + DRV_PRINT("alloc8 %d", 256); char* type_str = driver_alloc(256); // TODO: What happpens here? if(!get_function_sig(type, type_str)) { @@ -502,6 +518,7 @@ static void async_init(void* raw) { init_msg[msg_i++] = 4; DRV_DEBUG("Creating callback for %s.%s [%s]", module_name->data, name->data, type_str); + DRV_PRINT("alloc9 %d", sizeof(ImportHook)); ImportHook* hook = driver_alloc(sizeof(ImportHook)); hook->module_name = module_name->data; hook->field_name = name->data; @@ -544,6 +561,7 @@ static void async_init(void* raw) { const wasm_externtype_t* type = wasm_exporttype_type(export); char* kind_str = (char*) wasm_externtype_to_kind_string(type); + DRV_PRINT("alloc10 %d", 256); char* type_str = driver_alloc(256); get_function_sig(type, type_str); DRV_DEBUG("Export: %s [%s] -> %s", name->data, kind_str, type_str); @@ -643,6 +661,7 @@ static void async_call(void* raw) { // Send the results back to Erlang DRV_DEBUG("Results size: %d", results.size); + DRV_PRINT("alloc11 %d", sizeof(ErlDrvTermData) * (7 + (results.size * 2))); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * (7 + (results.size * 2))); DRV_DEBUG("Allocated msg"); int msg_index = 0; @@ -679,11 +698,15 @@ static void async_call(void* raw) { msg[msg_index++] = 2; DRV_DEBUG("Sending %d terms", msg_index); int response_msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); + DRV_PRINT("alloc11 - free"); driver_free(msg); DRV_DEBUG("Msg: %d", response_msg_res); + DRV_PRINT("alloc1 - free1"); + DRV_PRINT("free current_args: %p", proc->current_args); driver_free(proc->current_args); + DRV_PRINT("alloc15 - free %s", proc->current_function); driver_free(proc->current_function); wasm_val_vec_delete(&results); @@ -713,6 +736,7 @@ static ErlDrvData wasm_driver_start(ErlDrvPort port, char *buff) { DRV_DEBUG("info.dirty_scheduler_support: %d", info.dirty_scheduler_support); DRV_DEBUG("info.erts_version: %s", info.erts_version); DRV_DEBUG("info.otp_release: %s", info.otp_release); + DRV_PRINT("alloc12 %d", sizeof(Proc)); Proc* proc = driver_alloc(sizeof(Proc)); proc->port = port; DRV_DEBUG("Port: %p", proc->port); @@ -789,9 +813,11 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) int size, type; ei_get_type(buff, &index, &type, &size); //DRV_DEBUG("WASM binary size: %d bytes. Type: %c", size, type); + DRV_PRINT("alloc13 %d", size); void* wasm_binary = driver_alloc(size); long size_l = (long)size; ei_decode_binary(buff, &index, wasm_binary, &size_l); + DRV_PRINT("alloc14 %d", sizeof(LoadWasmReq)); LoadWasmReq* mod_bin = driver_alloc(sizeof(LoadWasmReq)); mod_bin->proc = proc; mod_bin->binary = wasm_binary; @@ -806,6 +832,7 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) // Extract the function name and the args from the Erlang term and generate the wasm_val_vec_t char* function_name = driver_alloc(MAXATOMLEN); ei_decode_string(buff, &index, function_name); + DRV_PRINT("alloc15 %d %s", MAXATOMLEN, function_name); //DRV_DEBUG("Function name: %s", function_name); proc->current_function = function_name; @@ -813,6 +840,7 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) proc->current_args = decode_list(buff, &index); driver_async(proc->port, NULL, async_call, proc, NULL); + // driver_free(proc->current_args); } else if (strcmp(command, "import_response") == 0) { // Handle import response // TODO: We should probably start a mutex on the current_import object here. @@ -857,10 +885,12 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) memcpy(memory_data + ptr, wasm_binary, size_bytes); DRV_DEBUG("Write complete"); + DRV_PRINT("alloc16 %d", sizeof(ErlDrvTermData) * 2); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * 2); msg[0] = ERL_DRV_ATOM; msg[1] = atom_ok; erl_drv_output_term(proc->port_term, msg, 2); + DRV_PRINT("alloc16 - free"); driver_free(msg); } else if (strcmp(command, "read") == 0) { @@ -881,11 +911,13 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) byte_t* memory_data = wasm_memory_data(get_memory(proc)); DRV_DEBUG("Memory location to read from: %p", memory_data + ptr); + DRV_PRINT("alloc17 %d", size_l); char* out_binary = driver_alloc(size_l); memcpy(out_binary, memory_data + ptr, size_l); DRV_DEBUG("Read complete. Binary: %p", out_binary); + DRV_PRINT("alloc18 %d", sizeof(ErlDrvTermData) * 7); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * 7); int msg_index = 0; msg[msg_index++] = ERL_DRV_ATOM; @@ -898,7 +930,9 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) int msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); DRV_DEBUG("Read response sent: %d", msg_res); + DRV_PRINT("alloc17 - free"); driver_free(out_binary); + DRV_PRINT("alloc18 - free"); driver_free(msg); } else if (strcmp(command, "size") == 0) { @@ -906,6 +940,7 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) long size = get_memory_size(proc); DRV_DEBUG("Size: %ld", size); + DRV_PRINT("alloc19 %d", sizeof(ErlDrvTermData) * 6); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * 6); int msg_index = 0; msg[msg_index++] = ERL_DRV_ATOM; From cf43fb08444eb0243488469385744f2b2d03ec4a Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 15 Jan 2025 22:44:20 -0500 Subject: [PATCH 017/364] revert broken free changes --- c_src/hb_beamr.c | 58 ++---------------------------------------------- 1 file changed, 2 insertions(+), 56 deletions(-) diff --git a/c_src/hb_beamr.c b/c_src/hb_beamr.c index 11ecef4a0..ca1b94a9a 100644 --- a/c_src/hb_beamr.c +++ b/c_src/hb_beamr.c @@ -53,7 +53,7 @@ static ErlDrvTermData atom_import; static ErlDrvTermData atom_execution_result; #ifndef HB_DEBUG -#define HB_DEBUG 1 +#define HB_DEBUG 0 #endif #define DRV_DEBUG(format, ...) beamr_print(HB_DEBUG, __FILE__, __LINE__, format, ##__VA_ARGS__) @@ -166,7 +166,6 @@ ei_term* decode_list(char* buff, int* index) { } DRV_DEBUG("Decoded header. Arity: %d", arity); - DRV_PRINT("alloc1 - alloc %d (%d * %d)", sizeof(ei_term) * arity, sizeof(ei_term), arity); ei_term* res = driver_alloc(sizeof(ei_term) * arity); if(type == ERL_LIST_EXT) { @@ -180,7 +179,6 @@ ei_term* decode_list(char* buff, int* index) { } else if(type == ERL_STRING_EXT) { //DRV_DEBUG("Decoding list encoded as string"); - DRV_PRINT("alloc2 %d", arity * sizeof(char) + 1); unsigned char* str = driver_alloc(arity * sizeof(char) + 1); ei_decode_string(buff, index, str); for(int i = 0; i < arity; i++) { @@ -188,7 +186,6 @@ ei_term* decode_list(char* buff, int* index) { res[i].value.i_val = (long) str[i]; DRV_DEBUG("Decoded term %d: %d", i, res[i].value.i_val); } - DRV_PRINT("alloc2 - free"); driver_free(str); } else { @@ -196,7 +193,6 @@ ei_term* decode_list(char* buff, int* index) { return NULL; } - DRV_PRINT("res %x", *res); return res; } @@ -304,11 +300,9 @@ long get_memory_size(Proc* proc) { void send_error(Proc* proc, const char* message_fmt, ...) { va_list args; va_start(args, message_fmt); - DRV_PRINT("alloc3 %d", 256); char* message = driver_alloc(256); vsnprintf(message, 256, message_fmt, args); DRV_DEBUG("Sending error message: %s", message); - DRV_PRINT("alloc4 %d", sizeof(ErlDrvTermData) * 7); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * 7); int msg_index = 0; msg[msg_index++] = ERL_DRV_ATOM; @@ -321,10 +315,6 @@ void send_error(Proc* proc, const char* message_fmt, ...) { int msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); DRV_DEBUG("Sent error message. Res: %d", msg_res); - DRV_PRINT("alloc3 - free"); - driver_free(message); - DRV_PRINT("alloc4 - free"); - driver_free(msg); va_end(args); } @@ -336,7 +326,6 @@ wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_ DRV_DEBUG("Import name: %s.%s [%s]", import_hook->module_name, import_hook->field_name, import_hook->signature); // Initialize the message object - DRV_PRINT("alloc5 %d", sizeof(ErlDrvTermData) * ((2+(2*3)) + ((args->size + 1) * 2) + ((results->size + 1) * 2) + 2)); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * ((2+(2*3)) + ((args->size + 1) * 2) + ((results->size + 1) * 2) + 2)); int msg_index = 0; msg[msg_index++] = ERL_DRV_ATOM; @@ -366,7 +355,6 @@ wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_ msg[msg_index++] = 5; // Initialize the result vector and set the required result types - DRV_PRINT("alloc6 %d", sizeof(ImportResponse)); proc->current_import = driver_alloc(sizeof(ImportResponse)); // Create and initialize a is_running and condition variable for the response @@ -377,8 +365,6 @@ wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_ DRV_DEBUG("Sending %d terms...", msg_index); // Send the message to the caller process int msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); - DRV_PRINT("alloc5 - free"); - driver_free(msg); // Wait for the response (we set this directly after the message was sent // so we have the lock, before Erlang sends us data back) drv_wait(proc->current_import->response_ready, proc->current_import->cond, &proc->current_import->ready); @@ -391,9 +377,6 @@ wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_ wasm_name_t message; wasm_name_new_from_string_nt(&message, proc->current_import->error_message); wasm_trap_t* trap = wasm_trap_new(proc->store, &message); - DRV_PRINT("alloc6 - free"); - // TODO: check where the error_message is allocated - driver_free(proc->current_import->error_message); driver_free(proc->current_import); proc->current_import = NULL; return trap; @@ -416,11 +399,6 @@ wasm_trap_t* generic_import_handler(void* env, const wasm_val_vec_t* args, wasm_ DRV_DEBUG("Cleaning up import response"); erl_drv_cond_destroy(proc->current_import->cond); erl_drv_mutex_destroy(proc->current_import->response_ready); - if (proc->current_import->result_terms) { - DRV_PRINT("alloc1 - free2"); - driver_free(proc->current_import->result_terms); - } - DRV_PRINT("alloc6 - free"); driver_free(proc->current_import); proc->current_import = NULL; @@ -478,7 +456,6 @@ static void async_init(void* raw) { // Create Erlang lists for imports //DRV_DEBUG("Exports size: %d", exports.size); - DRV_PRINT("alloc7 %d", sizeof(ErlDrvTermData) * (2 + (13 * imports.size) + (11 * exports.size))); ErlDrvTermData* init_msg = driver_alloc(sizeof(ErlDrvTermData) * (2 + (13 * imports.size) + (11 * exports.size))); //DRV_DEBUG("Allocated init message"); int msg_i = 0; @@ -495,7 +472,6 @@ static void async_init(void* raw) { //DRV_DEBUG("Import: %s.%s", module_name->data, name->data); - DRV_PRINT("alloc8 %d", 256); char* type_str = driver_alloc(256); // TODO: What happpens here? if(!get_function_sig(type, type_str)) { @@ -518,7 +494,6 @@ static void async_init(void* raw) { init_msg[msg_i++] = 4; DRV_DEBUG("Creating callback for %s.%s [%s]", module_name->data, name->data, type_str); - DRV_PRINT("alloc9 %d", sizeof(ImportHook)); ImportHook* hook = driver_alloc(sizeof(ImportHook)); hook->module_name = module_name->data; hook->field_name = name->data; @@ -561,7 +536,6 @@ static void async_init(void* raw) { const wasm_externtype_t* type = wasm_exporttype_type(export); char* kind_str = (char*) wasm_externtype_to_kind_string(type); - DRV_PRINT("alloc10 %d", 256); char* type_str = driver_alloc(256); get_function_sig(type, type_str); DRV_DEBUG("Export: %s [%s] -> %s", name->data, kind_str, type_str); @@ -588,8 +562,6 @@ static void async_init(void* raw) { int send_res = erl_drv_output_term(proc->port_term, init_msg, msg_i); DRV_DEBUG("Send result: %d", send_res); - // TODO: init_msg is not freed up, but probably should live as long as the driver - // What happens during stop? proc->current_import = NULL; proc->is_initialized = 1; @@ -661,7 +633,6 @@ static void async_call(void* raw) { // Send the results back to Erlang DRV_DEBUG("Results size: %d", results.size); - DRV_PRINT("alloc11 %d", sizeof(ErlDrvTermData) * (7 + (results.size * 2))); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * (7 + (results.size * 2))); DRV_DEBUG("Allocated msg"); int msg_index = 0; @@ -698,17 +669,9 @@ static void async_call(void* raw) { msg[msg_index++] = 2; DRV_DEBUG("Sending %d terms", msg_index); int response_msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); - DRV_PRINT("alloc11 - free"); driver_free(msg); - DRV_DEBUG("Msg: %d", response_msg_res); - DRV_PRINT("alloc1 - free1"); - DRV_PRINT("free current_args: %p", proc->current_args); - driver_free(proc->current_args); - DRV_PRINT("alloc15 - free %s", proc->current_function); - driver_free(proc->current_function); - wasm_val_vec_delete(&results); proc->current_import = NULL; @@ -736,7 +699,6 @@ static ErlDrvData wasm_driver_start(ErlDrvPort port, char *buff) { DRV_DEBUG("info.dirty_scheduler_support: %d", info.dirty_scheduler_support); DRV_DEBUG("info.erts_version: %s", info.erts_version); DRV_DEBUG("info.otp_release: %s", info.otp_release); - DRV_PRINT("alloc12 %d", sizeof(Proc)); Proc* proc = driver_alloc(sizeof(Proc)); proc->port = port; DRV_DEBUG("Port: %p", proc->port); @@ -752,7 +714,6 @@ static void wasm_driver_stop(ErlDrvData raw) { Proc* proc = (Proc*)raw; DRV_DEBUG("Stopping WASM driver"); - // TODO: We should probably lock a mutex here and in the import_response function. if(proc->current_import) { DRV_DEBUG("Shutting down during import response..."); proc->current_import->error_message = "WASM driver unloaded during import response"; @@ -813,11 +774,9 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) int size, type; ei_get_type(buff, &index, &type, &size); //DRV_DEBUG("WASM binary size: %d bytes. Type: %c", size, type); - DRV_PRINT("alloc13 %d", size); void* wasm_binary = driver_alloc(size); long size_l = (long)size; ei_decode_binary(buff, &index, wasm_binary, &size_l); - DRV_PRINT("alloc14 %d", sizeof(LoadWasmReq)); LoadWasmReq* mod_bin = driver_alloc(sizeof(LoadWasmReq)); mod_bin->proc = proc; mod_bin->binary = wasm_binary; @@ -832,7 +791,6 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) // Extract the function name and the args from the Erlang term and generate the wasm_val_vec_t char* function_name = driver_alloc(MAXATOMLEN); ei_decode_string(buff, &index, function_name); - DRV_PRINT("alloc15 %d %s", MAXATOMLEN, function_name); //DRV_DEBUG("Function name: %s", function_name); proc->current_function = function_name; @@ -840,7 +798,6 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) proc->current_args = decode_list(buff, &index); driver_async(proc->port, NULL, async_call, proc, NULL); - // driver_free(proc->current_args); } else if (strcmp(command, "import_response") == 0) { // Handle import response // TODO: We should probably start a mutex on the current_import object here. @@ -885,13 +842,10 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) memcpy(memory_data + ptr, wasm_binary, size_bytes); DRV_DEBUG("Write complete"); - DRV_PRINT("alloc16 %d", sizeof(ErlDrvTermData) * 2); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * 2); msg[0] = ERL_DRV_ATOM; msg[1] = atom_ok; erl_drv_output_term(proc->port_term, msg, 2); - DRV_PRINT("alloc16 - free"); - driver_free(msg); } else if (strcmp(command, "read") == 0) { DRV_DEBUG("Read received"); @@ -907,17 +861,14 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) send_error(proc, "Read request out of bounds"); return; } - DRV_DEBUG("Read received. Ptr: %ld. Size: %ld", ptr, size_l); byte_t* memory_data = wasm_memory_data(get_memory(proc)); DRV_DEBUG("Memory location to read from: %p", memory_data + ptr); - DRV_PRINT("alloc17 %d", size_l); char* out_binary = driver_alloc(size_l); memcpy(out_binary, memory_data + ptr, size_l); DRV_DEBUG("Read complete. Binary: %p", out_binary); - DRV_PRINT("alloc18 %d", sizeof(ErlDrvTermData) * 7); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * 7); int msg_index = 0; msg[msg_index++] = ERL_DRV_ATOM; @@ -930,17 +881,12 @@ static void wasm_driver_output(ErlDrvData raw, char *buff, ErlDrvSizeT bufflen) int msg_res = erl_drv_output_term(proc->port_term, msg, msg_index); DRV_DEBUG("Read response sent: %d", msg_res); - DRV_PRINT("alloc17 - free"); - driver_free(out_binary); - DRV_PRINT("alloc18 - free"); - driver_free(msg); } else if (strcmp(command, "size") == 0) { DRV_DEBUG("Size received"); long size = get_memory_size(proc); DRV_DEBUG("Size: %ld", size); - DRV_PRINT("alloc19 %d", sizeof(ErlDrvTermData) * 6); ErlDrvTermData* msg = driver_alloc(sizeof(ErlDrvTermData) * 6); int msg_index = 0; msg[msg_index++] = ERL_DRV_ATOM; @@ -989,4 +935,4 @@ DRIVER_INIT(wasm_driver) { atom_import = driver_mk_atom("import"); atom_execution_result = driver_mk_atom("execution_result"); return &wasm_driver_entry; -} +} \ No newline at end of file From dd145a527145ed7dea29b95af215e852ce8a6714 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Wed, 15 Jan 2025 23:12:34 -0500 Subject: [PATCH 018/364] example: async thread lock-up issue Locks up in IO async thread with: ``` reset && ERL_FLAGS="+A 1" HB_PRINT=debug,dev_wasm,converge_result rebar3 eunit --module dev_wasm ``` Does not lock up in async IO writing: ``` reset && ERL_FLAGS="+A 4" HB_PRINT=debug,dev_wasm,converge_result rebar3 eunit --module dev_wasm ``` --- src/dev_test.erl | 2 ++ src/dev_wasm.erl | 6 +++++- src/hb_converge.erl | 1 - 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/dev_test.erl b/src/dev_test.erl index afbdcb48a..56bd97677 100644 --- a/src/dev_test.erl +++ b/src/dev_test.erl @@ -64,8 +64,10 @@ restore(Msg, _Msg2, Opts) -> %% @doc Example implementation of an `imported` function for a WASM %% executor. mul(Msg1, Msg2) -> + ?event(mul_called), State = hb_converge:get(<<"State">>, Msg1, #{ hashpath => ignore }), [Arg1, Arg2] = hb_converge:get(args, Msg2, #{ hashpath => ignore }), + ?event({mul_called, {state, State}, {args, [Arg1, Arg2]}}), {ok, #{ state => State, results => [Arg1 * Arg2] }}. %% @doc Do nothing when asked to snapshot. diff --git a/src/dev_wasm.erl b/src/dev_wasm.erl index 80d9c48a8..5384722d9 100644 --- a/src/dev_wasm.erl +++ b/src/dev_wasm.erl @@ -111,6 +111,7 @@ default_import_resolver(Msg1, Msg2, Opts) -> func_sig := Signature } = Msg2, Prefix = dev_stack:prefix(Msg1, Msg2, Opts), + ?event({import_func_called, {prefix, Prefix}, {module, Module}, {func, Func}, {args, Args}, {func_sig, Signature}}), {ok, Msg3} = hb_converge:resolve( hb_private:set( @@ -127,7 +128,10 @@ default_import_resolver(Msg1, Msg2, Opts) -> }, Opts ), + ?event(import_done), NextState = hb_converge:get(state, Msg3, Opts), + ?event({done_calculating_response_for, {msg1, Msg1}, {msg2, Msg2}, {next_state, NextState}}), + ?event({next_state, NextState}), Response = hb_converge:get(results, Msg3, Opts), {ok, Response, NextState}. @@ -291,7 +295,7 @@ import(Msg1, Msg2, Opts) -> #{ StatePath => Msg1 }, Opts#{ hashpath => ignore } ), - %?event({state_added_msg1, AdjustedMsg1}), + ?event({state_added_msg1, AdjustedMsg1, AdjustedMsg2}), % 3. Resolve the adjusted path against the added state. case hb_converge:resolve(AdjustedMsg1, AdjustedMsg2, Opts) of {ok, Res} -> diff --git a/src/hb_converge.erl b/src/hb_converge.erl index 50b0852be..1bc940c43 100644 --- a/src/hb_converge.erl +++ b/src/hb_converge.erl @@ -143,7 +143,6 @@ resolve_stage(1, Msg1, Path, Opts) when not is_map(Path) -> resolve_stage(1, Msg1, #{ path => Path }, Opts); resolve_stage(1, Msg1, Msg2, Opts) -> ?event(converge_core, {stage, 1, normalize_path}, Opts), - ?event(debug, {path_normalizing, {msg1, Msg1}, {msg2, Msg2}}), case hb_path:priv_remaining(Msg2, Opts) of undefined -> % We are executing our first run with no message list to recurse From 619e19aad3546dac3b04933016c366dc9f14b9e7 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Thu, 16 Jan 2025 02:43:44 -0500 Subject: [PATCH 019/364] wip: normalize all atoms and upper-case binary keys to lower-case. --- src/ar_bundles.erl | 41 +++---- src/dev_json_iface.erl | 8 +- src/dev_message.erl | 89 ++++++++------- src/dev_process.erl | 10 +- src/dev_scheduler_cache.erl | 2 +- src/dev_scheduler_interface.erl | 2 +- src/dev_scheduler_server.erl | 10 +- src/dev_stack.erl | 2 +- src/dev_wasi.erl | 2 +- src/hb_cache.erl | 2 +- src/hb_codec_converge.erl | 48 ++++---- src/hb_codec_http.erl | 71 ++++++------ src/hb_codec_tx.erl | 59 ++++++---- src/hb_converge.erl | 144 +++++++++--------------- src/hb_converge_test_vectors.erl | 185 ++++++++++++++++--------------- src/hb_http.erl | 4 +- src/hb_message.erl | 141 ++++++++++++----------- src/hb_path.erl | 23 ++-- src/hb_private.erl | 2 +- src/hb_test.erl | 2 +- src/hb_util.erl | 11 +- src/include/hb.hrl | 4 +- 22 files changed, 412 insertions(+), 450 deletions(-) diff --git a/src/ar_bundles.erl b/src/ar_bundles.erl index dd1406880..262f9c1ef 100644 --- a/src/ar_bundles.erl +++ b/src/ar_bundles.erl @@ -15,12 +15,12 @@ %%% @doc Module for creating, signing, and verifying Arweave data items and bundles. -define(BUNDLE_TAGS, [ - {<<"Bundle-Format">>, <<"Binary">>}, - {<<"Bundle-Version">>, <<"2.0.0">>} + {<<"bundle-format">>, <<"binary">>}, + {<<"bundle-version">>, <<"2.0.0">>} ]). -define(LIST_TAGS, [ - {<<"Map-Format">>, <<"List">>} + {<<"map-format">>, <<"list">>} ]). % How many bytes of a binary to print with `print/1'. @@ -87,7 +87,7 @@ format(Item, Indent) -> format_line("INCORRECT ITEM: ~p", [Item], Indent). format_data(Item, Indent) when is_binary(Item#tx.data) -> - case lists:keyfind(<<"Bundle-Format">>, 1, Item#tx.tags) of + case lists:keyfind(<<"bundle-format">>, 1, Item#tx.tags) of {_, _} -> format_data(deserialize(serialize(Item)), Indent); false -> @@ -248,11 +248,11 @@ verify_item(DataItem) -> ValidID andalso ValidSignature andalso ValidTags. type(Item) when is_record(Item, tx) -> - lists:keyfind(<<"Bundle-Map">>, 1, Item#tx.tags), - case lists:keyfind(<<"Bundle-Map">>, 1, Item#tx.tags) of - {<<"Bundle-Map">>, _} -> - case lists:keyfind(<<"Map-Format">>, 1, Item#tx.tags) of - {<<"Map-Format">>, <<"List">>} -> list; + lists:keyfind(<<"bundle-map">>, 1, Item#tx.tags), + case lists:keyfind(<<"bundle-map">>, 1, Item#tx.tags) of + {<<"bundle-map">>, _} -> + case lists:keyfind(<<"map-format">>, 1, Item#tx.tags) of + {<<"map-format">>, <<"list">>} -> list; _ -> map end; _ -> @@ -525,11 +525,11 @@ add_list_tags(Tags) -> add_manifest_tags(Tags, ManifestID) -> lists:filter( fun - ({<<"Bundle-Map">>, _}) -> false; + ({<<"bundle-map">>, _}) -> false; (_) -> true end, Tags - ) ++ [{<<"Bundle-Map">>, hb_util:encode(ManifestID)}]. + ) ++ [{<<"bundle-map">>, hb_util:encode(ManifestID)}]. finalize_bundle_data(Processed) -> Length = <<(length(Processed)):256/integer>>, @@ -562,8 +562,8 @@ new_manifest(Index) -> TX = normalize(#tx{ format = ans104, tags = [ - {<<"Data-Protocol">>, <<"Bundle-Map">>}, - {<<"Variant">>, <<"0.0.1">>} + {<<"data-protocol">>, <<"bundle-map">>}, + {<<"variant">>, <<"0.0.1">>} ], data = jiffy:encode(Index) }), @@ -691,18 +691,18 @@ deserialize(Bin, json) -> end. maybe_unbundle(Item) -> - Format = lists:keyfind(<<"Bundle-Format">>, 1, Item#tx.tags), - Version = lists:keyfind(<<"Bundle-Version">>, 1, Item#tx.tags), + Format = lists:keyfind(<<"bundle-format">>, 1, Item#tx.tags), + Version = lists:keyfind(<<"bundle-version">>, 1, Item#tx.tags), case {Format, Version} of - {{<<"Bundle-Format">>, <<"Binary">>}, {<<"Bundle-Version">>, <<"2.0.0">>}} -> + {{<<"bundle-format">>, <<"Binary">>}, {<<"bundle-version">>, <<"2.0.0">>}} -> maybe_map_to_list(maybe_unbundle_map(Item)); _ -> Item end. maybe_map_to_list(Item) -> - case lists:keyfind(<<"Map-Format">>, 1, Item#tx.tags) of - {<<"Map-Format">>, <<"List">>} -> + case lists:keyfind(<<"map-format">>, 1, Item#tx.tags) of + {<<"map-format">>, <<"List">>} -> unbundle_list(Item); _ -> Item @@ -720,8 +720,8 @@ unbundle_list(Item) -> }. maybe_unbundle_map(Bundle) -> - case lists:keyfind(<<"Bundle-Map">>, 1, Bundle#tx.tags) of - {<<"Bundle-Map">>, MapTXID} -> + case lists:keyfind(<<"bundle-map">>, 1, Bundle#tx.tags) of + {<<"bundle-map">>, MapTXID} -> case unbundle(Bundle) of detached -> Bundle#tx { data = detached }; Items -> @@ -793,6 +793,7 @@ item_to_json_struct( } ) -> % Set "From" if From-Process is Tag or set with "Owner" address + ?event(debug, {invoked_item_to_json_struct, {tags, Tags}, {owner, Owner}, {data, Data}}), From = case lists:filter(fun({Name, _}) -> Name =:= <<"From-Process">> end, Tags) of [{_, FromProcess}] -> FromProcess; diff --git a/src/dev_json_iface.erl b/src/dev_json_iface.erl index 85eb7f196..8d416fa9e 100644 --- a/src/dev_json_iface.erl +++ b/src/dev_json_iface.erl @@ -104,7 +104,7 @@ results(M1, _M2, Opts) -> Instance = hb_private:get(<<"priv/WASM/Instance">>, M1, Opts), Type = hb_converge:get(<<"Results/WASM/Type">>, M1, Opts), Proc = hb_converge:get(<<"Process">>, M1, Opts), - case hb_converge:to_key(Type) of + case hb_converge:normalize_key(Type) of error -> {error, hb_converge:set( @@ -139,7 +139,7 @@ results(M1, _M2, Opts) -> Messages ) ]), - <<"Results/Data">> => Data + <<"Results/data">> => Data }, Opts ), @@ -187,7 +187,7 @@ preprocess_results(Msg, Proc, Opts) -> maps:from_list( lists:map( fun({Key, Value}) -> - {hb_converge:to_key(Key), Value} + {hb_converge:normalize_key(Key), Value} end, maps:to_list(FilteredMsg) ) @@ -256,7 +256,7 @@ basic_aos_call_test() -> generate_aos_msg(ProcID, <<"return 1+1">>), #{} ), - Data = hb_converge:get(<<"Results/Data">>, Msg3, #{}), + Data = hb_converge:get(<<"Results/data">>, Msg3, #{}), ?assertEqual(<<"2">>, Data). aos_stack_benchmark_test_() -> diff --git a/src/dev_message.erl b/src/dev_message.erl index 5170055e8..e750d3db3 100644 --- a/src/dev_message.erl +++ b/src/dev_message.erl @@ -9,14 +9,15 @@ %% The list of keys that are exported by this device. -define(DEVICE_KEYS, [ - path, - id, - unsigned_id, - signed_id, - signers, - keys, get, - set, - remove + <<"path">>, + <<"id">>, + <<"unsigned_id">>, + <<"signed_id">>, + <<"signers">>, + <<"keys">>, + <<"get">>, + <<"set">>, + <<"remove">> ]). %% @doc Return the info for the identity device. @@ -30,7 +31,7 @@ info() -> %% that. Otherwise, return the signed ID. id(M) -> ID = - case get(signature, M) of + case get(<<"signature">>, M) of {error, not_found} -> raw_id(M, unsigned); {ok, ?DEFAULT_SIG} -> raw_id(M, unsigned); _ -> raw_id(M, signed) @@ -82,11 +83,11 @@ set(Message1, NewValuesMsg, Opts) -> ), % Find keys in the message that are already set (case-insensitive), and % note them for removal. - NormalizedKeysToSet = lists:map(fun hb_converge:to_key/1, KeysToSet), + NormalizedKeysToSet = lists:map(fun hb_converge:normalize_key/1, KeysToSet), ConflictingKeys = lists:filter( fun(Key) -> - lists:member(hb_converge:to_key(Key), NormalizedKeysToSet) + lists:member(hb_converge:normalize_key(Key), NormalizedKeysToSet) end, maps:keys(Message1) ), @@ -120,15 +121,15 @@ set(Message1, NewValuesMsg, Opts) -> }. %% @doc Remove a key or keys from a message. -remove(Message1, #{ item := Key }) -> - remove(Message1, #{ items => [hb_converge:to_key(Key)] }); -remove(Message1, #{ items := Keys }) -> - NormalizedKeysToRemove = lists:map(fun hb_converge:to_key/1, Keys), +remove(Message1, #{ <<"item">> := Key }) -> + remove(Message1, #{ <<"items">> => [hb_converge:normalize_key(Key)] }); +remove(Message1, #{ <<"items">> := Keys }) -> + NormalizedKeysToRemove = lists:map(fun hb_converge:normalize_key/1, Keys), { ok, maps:filtermap( fun(KeyN, Val) -> - NormalizedKeyN = hb_converge:to_key(KeyN), + NormalizedKeyN = hb_converge:normalize_key(KeyN), case lists:member(NormalizedKeyN, NormalizedKeysToRemove) of true -> false; false -> {true, Val} @@ -140,7 +141,7 @@ remove(Message1, #{ items := Keys }) -> %% @doc Get the public keys of a message. keys(Msg) when not is_map(Msg) -> - case hb_converge:ensure_message(Msg) of + case hb_converge:normalize_keys(Msg) of NormMsg when is_map(NormMsg) -> keys(NormMsg); _ -> throw(badarg) end; @@ -156,7 +157,7 @@ keys(Msg) -> %% @doc Return the value associated with the key as it exists in the message's %% underlying Erlang map. First check the public keys, then check case- %% insensitively if the key is a binary. -get(Key, Msg) -> get(Key, Msg, #{ path => get }). +get(Key, Msg) -> get(Key, Msg, #{ <<"path">> => get }). get(Key, Msg, _Msg2) -> ?event({getting_key, {key, Key}, {msg, Msg}}), {ok, PublicKeys} = keys(Msg), @@ -175,10 +176,10 @@ case_insensitive_get(Key, Msg) -> case_insensitive_get(Key, Msg, Keys) when byte_size(Key) > 43 -> do_case_insensitive_get(Key, Msg, Keys); case_insensitive_get(Key, Msg, Keys) -> - do_case_insensitive_get(hb_converge:to_key(Key), Msg, Keys). + do_case_insensitive_get(hb_converge:normalize_key(Key), Msg, Keys). do_case_insensitive_get(_Key, _Msg, []) -> {error, not_found}; do_case_insensitive_get(Key, Msg, [CurrKey | Keys]) -> - case hb_converge:to_key(CurrKey) of + case hb_converge:normalize_key(CurrKey) of Key -> {ok, maps:get(CurrKey, Msg)}; _ -> do_case_insensitive_get(Key, Msg, Keys) end. @@ -200,63 +201,67 @@ is_private_mod_test() -> %%% Device functionality tests: keys_from_device_test() -> - ?assertEqual({ok, [a]}, hb_converge:resolve(#{a => 1}, keys, #{})). + ?assertEqual({ok, [<<"a">>]}, hb_converge:resolve(#{ <<"a">> => 1 }, keys, #{})). case_insensitive_get_test() -> - ?assertEqual({ok, 1}, case_insensitive_get(a, #{a => 1})), - ?assertEqual({ok, 1}, case_insensitive_get(a, #{ <<"A">> => 1 })), - ?assertEqual({ok, 1}, case_insensitive_get(a, #{ <<"a">> => 1 })), - ?assertEqual({ok, 1}, case_insensitive_get(<<"A">>, #{a => 1})), - ?assertEqual({ok, 1}, case_insensitive_get(<<"a">>, #{a => 1})), + ?assertEqual({ok, 1}, case_insensitive_get(<<"a">>, #{ <<"a">> => 1 })), + ?assertEqual({ok, 1}, case_insensitive_get(<<"a">>, #{ <<"A">> => 1 })), + ?assertEqual({ok, 1}, case_insensitive_get(<<"a">>, #{ <<"a">> => 1 })), + ?assertEqual({ok, 1}, case_insensitive_get(<<"A">>, #{ <<"a">> => 1 })), + ?assertEqual({ok, 1}, case_insensitive_get(<<"a">>, #{ <<"a">> => 1 })), ?assertEqual({ok, 1}, case_insensitive_get(<<"A">>, #{ <<"a">> => 1 })), ?assertEqual({ok, 1}, case_insensitive_get(<<"a">>, #{ <<"A">> => 1 })). private_keys_are_filtered_test() -> ?assertEqual( - {ok, [a]}, - hb_converge:resolve(#{a => 1, private => 2}, keys, #{}) + {ok, [<<"a">>]}, + hb_converge:resolve(#{ <<"a">> => 1, <<"private">> => 2 }, keys, #{}) ), ?assertEqual( - {ok, [a]}, - hb_converge:resolve(#{a => 1, "priv_foo" => 4}, keys, #{}) + {ok, [<<"a">>]}, + hb_converge:resolve(#{ <<"a">> => 1, <<"priv_foo">> => 4 }, keys, #{}) ). cannot_get_private_keys_test() -> ?assertEqual( {error, not_found}, - hb_converge:resolve(#{ a => 1, private_key => 2 }, private_key, #{}) + hb_converge:resolve(#{ <<"a">> => 1, <<"private_key">> => 2 }, <<"private_key">>, #{}) ). key_from_device_test() -> - ?assertEqual({ok, 1}, hb_converge:resolve(#{a => 1}, a, #{})). + ?assertEqual({ok, 1}, hb_converge:resolve(#{ <<"a">> => 1 }, <<"a">>, #{})). remove_test() -> Msg = #{ <<"Key1">> => <<"Value1">>, <<"Key2">> => <<"Value2">> }, - ?assertMatch({ok, #{ <<"Key2">> := <<"Value2">> }}, - hb_converge:resolve(Msg, #{ path => remove, item => <<"Key1">> }, #{})), + ?assertMatch({ok, #{ <<"key2">> := <<"Value2">> }}, + hb_converge:resolve( + Msg, + #{ <<"path">> => remove, <<"item">> => <<"Key1">> }, + #{ hashpath => ignore } + ) + ), ?assertMatch({ok, #{}}, hb_converge:resolve( Msg, - #{ path => remove, items => [<<"Key1">>, <<"Key2">>] }, - #{} + #{ <<"path">> => remove, <<"items">> => [<<"Key1">>, <<"Key2">>] }, + #{ hashpath => ignore } ) ). set_conflicting_keys_test() -> Msg1 = #{ <<"Dangerous">> => <<"Value1">> }, - Msg2 = #{ path => set, dangerous => <<"Value2">> }, - ?assertMatch({ok, #{ dangerous := <<"Value2">> }}, + Msg2 = #{ <<"path">> => set, <<"dangerous">> => <<"Value2">> }, + ?assertMatch({ok, #{ <<"dangerous">> := <<"Value2">> }}, hb_converge:resolve(Msg1, Msg2, #{})). unset_with_set_test() -> Msg1 = #{ <<"Dangerous">> => <<"Value1">> }, - Msg2 = #{ path => set, dangerous => unset }, + Msg2 = #{ <<"path">> => set, <<"dangerous">> => unset }, ?assertMatch({ok, Msg3} when map_size(Msg3) == 0, hb_converge:resolve(Msg1, Msg2, #{ hashpath => ignore })). set_ignore_undefined_test() -> Msg1 = #{ <<"Test-Key">> => <<"Value1">> }, - Msg2 = #{ path => set, <<"Test-Key">> => undefined }, + Msg2 = #{ <<"path">> => set, <<"Test-Key">> => undefined }, ?assertEqual({ok, #{ <<"Test-Key">> => <<"Value1">> }}, - set(Msg1, Msg2, #{ hashpath => ignore })). - + set(Msg1, Msg2, #{ hashpath => ignore })). \ No newline at end of file diff --git a/src/dev_process.erl b/src/dev_process.erl index f364185e1..1f6fdecf9 100644 --- a/src/dev_process.erl +++ b/src/dev_process.erl @@ -615,12 +615,12 @@ aos_compute_test_() -> {ok, Msg3} = hb_converge:resolve(Msg1, Msg2, #{}), {ok, Res} = hb_converge:resolve(Msg3, <<"Results">>, #{}), ?event({computed_message, {msg3, Res}}), - {ok, Data} = hb_converge:resolve(Res, <<"Data">>, #{}), + {ok, Data} = hb_converge:resolve(Res, <<"data">>, #{}), ?event({computed_data, Data}), ?assertEqual(<<"2">>, Data), Msg4 = #{ path => <<"Compute">>, <<"Slot">> => 1 }, {ok, Msg5} = hb_converge:resolve(Msg1, Msg4, #{}), - ?assertEqual(<<"4">>, hb_converge:get(<<"Results/Data">>, Msg5, #{})), + ?assertEqual(<<"4">>, hb_converge:get(<<"Results/data">>, Msg5, #{})), {ok, Msg5} end}. @@ -652,7 +652,7 @@ do_test_restore() -> Opts ), ?event({result_b, ResultB}), - ?assertEqual(<<"1337">>, hb_converge:get(<<"Results/Data">>, ResultB, #{})). + ?assertEqual(<<"1337">>, hb_converge:get(<<"Results/data">>, ResultB, #{})). now_results_test() -> {timeout, 30, fun() -> @@ -660,7 +660,7 @@ now_results_test() -> Msg1 = test_aos_process(), schedule_aos_call(Msg1, <<"return 1+1">>), schedule_aos_call(Msg1, <<"return 2+2">>), - ?assertEqual({ok, <<"4">>}, hb_converge:resolve(Msg1, <<"Now/Data">>, #{})) + ?assertEqual({ok, <<"4">>}, hb_converge:resolve(Msg1, <<"Now/data">>, #{})) end}. full_push_test_() -> @@ -681,7 +681,7 @@ full_push_test_() -> {ok, _} = hb_converge:resolve(Msg1, Msg3, #{}), ?assertEqual( {ok, <<"Done.">>}, - hb_converge:resolve(Msg1, <<"Now/Data">>, #{}) + hb_converge:resolve(Msg1, <<"Now/data">>, #{}) ) end}. diff --git a/src/dev_scheduler_cache.erl b/src/dev_scheduler_cache.erl index 1ea796a31..e55f38d0c 100644 --- a/src/dev_scheduler_cache.erl +++ b/src/dev_scheduler_cache.erl @@ -28,7 +28,7 @@ write(Assignment, Opts) -> [ <<"assignments">>, hb_util:human_id(ProcID), - hb_converge:key_to_binary(Slot) + hb_converge:normalize_key(Slot) ] ) ), diff --git a/src/dev_scheduler_interface.erl b/src/dev_scheduler_interface.erl index 5637cc03d..64578fd9d 100644 --- a/src/dev_scheduler_interface.erl +++ b/src/dev_scheduler_interface.erl @@ -25,7 +25,7 @@ info(M) -> #{ <<"Unit">> => <<"Scheduler">>, <<"Address">> => hb_util:id(ar_wallet:to_address(Wallet)), - <<"Data">> => + <<"data">> => jiffy:encode( lists:map( fun hb_util:id/1, diff --git a/src/dev_scheduler_server.erl b/src/dev_scheduler_server.erl index 4c49db885..4bcdd7bf7 100644 --- a/src/dev_scheduler_server.erl +++ b/src/dev_scheduler_server.erl @@ -175,18 +175,18 @@ next_hashchain(HashChain, Message) -> new_proc_test() -> Wallet = ar_wallet:new(), SignedItem = hb_message:sign( - #{ <<"Data">> => <<"test">>, <<"Random-Key">> => rand:uniform(10000) }, + #{ <<"data">> => <<"test">>, <<"Random-Key">> => rand:uniform(10000) }, Wallet ), SignedItem2 = hb_message:sign( - #{ <<"Data">> => <<"test2">> }, + #{ <<"data">> => <<"test2">> }, Wallet ), SignedItem3 = hb_message:sign( #{ - <<"Data">> => <<"test2">>, + <<"data">> => <<"test2">>, <<"Deep-Key">> => - #{ <<"Data">> => <<"test3">> } + #{ <<"data">> => <<"test3">> } }, Wallet ), @@ -203,7 +203,7 @@ benchmark_test() -> BenchTime = 1, Wallet = ar_wallet:new(), SignedItem = hb_message:sign( - #{ <<"Data">> => <<"test">>, <<"Random-Key">> => rand:uniform(10000) }, + #{ <<"data">> => <<"test">>, <<"Random-Key">> => rand:uniform(10000) }, Wallet ), dev_scheduler_registry:find(ID = hb_converge:get(id, SignedItem), true), diff --git a/src/dev_stack.erl b/src/dev_stack.erl index 548ae4c58..9f1f1e723 100644 --- a/src/dev_stack.erl +++ b/src/dev_stack.erl @@ -354,7 +354,7 @@ resolve_map(Message1, Message2, Opts) -> _ -> false end end, - maps:without(?CONVERGE_KEYS, hb_converge:ensure_message(DevKeys)) + maps:without(?CONVERGE_KEYS, hb_converge:normalize_keys(DevKeys)) ) }, Res. diff --git a/src/dev_wasi.erl b/src/dev_wasi.erl index 86f96dbc8..7e56b2ca9 100644 --- a/src/dev_wasi.erl +++ b/src/dev_wasi.erl @@ -158,7 +158,7 @@ fd_write(S, Instance, [FDnum, Ptr, Vecs, RetPtr], BytesWritten, Opts) -> {ok, Data} = hb_beamr_io:read(Instance, VecPtr, Len), Before = binary:part( - OrigData = hb_converge:get(<<"Data">>, FD, Opts), + OrigData = hb_converge:get(<<"data">>, FD, Opts), 0, StartOffset ), diff --git a/src/hb_cache.erl b/src/hb_cache.erl index 256a493e0..c5a96db5d 100644 --- a/src/hb_cache.erl +++ b/src/hb_cache.erl @@ -283,7 +283,7 @@ link(Existing, New, Opts) -> test_unsigned(Data) -> #{ <<"Base-Test-Key">> => <<"Base-Test-Value">>, - <<"Data">> => Data + <<"data">> => Data }. %% Helper function to create signed #tx items. diff --git a/src/hb_codec_converge.erl b/src/hb_codec_converge.erl index 22dcc636b..8ae436e28 100644 --- a/src/hb_codec_converge.erl +++ b/src/hb_codec_converge.erl @@ -15,8 +15,8 @@ from(Msg) when is_map(Msg) -> fun(Key) -> case maps:find(Key, Msg) of {ok, <<>>} -> - BinKey = hb_converge:key_to_binary(Key), - {<<"Converge-Type:", BinKey/binary>>, <<"Empty-Binary">>}; + BinKey = hb_converge:normalize_key(Key), + {<<"converge-type: ", BinKey/binary>>, <<"empty-binary">>}; {ok, Value} when is_binary(Value) -> {Key, Value}; {ok, Map} when is_map(Map) -> @@ -24,17 +24,17 @@ from(Msg) when is_map(Msg) -> {ok, Msgs = [Msg1|_]} when is_map(Msg1) -> % We have a list of maps. Convert to a numbered map and % recurse. - {Key, from(hb_converge:ensure_message(Msgs))}; + {Key, from(hb_converge:normalize_keys(Msgs))}; {ok, []} -> - BinKey = hb_converge:key_to_binary(Key), - {<<"Converge-Type:", BinKey/binary>>, <<"Empty-List">>}; + BinKey = hb_converge:normalize_key(Key), + {<<"converge-type: ", BinKey/binary>>, <<"empty-list">>}; {ok, Value} when is_atom(Value) or is_integer(Value) or is_list(Value) -> - ItemKey = hb_converge:key_to_binary(Key), + ItemKey = hb_converge:normalize_key(Key), {Type, BinaryValue} = encode_value(Value), [ - {<<"Converge-Type:", ItemKey/binary>>, Type}, + {<<"converge-type: ", ItemKey/binary>>, Type}, {ItemKey, BinaryValue} ]; {ok, _} -> [] @@ -63,9 +63,9 @@ to(TABM0) -> TABM1 = maps:from_list( lists:map( - fun({<<"Converge-Type:", Key/binary>>, <<"Empty-Binary">>}) -> + fun({<<"converge-type: ", Key/binary>>, <<"empty-binary">>}) -> {Key, <<>>}; - ({<<"Converge-Type:", Key/binary>>, <<"Empty-List">>}) -> + ({<<"converge-type: ", Key/binary>>, <<"empty-list">>}) -> {Key, []}; ({Key, Value}) -> {Key, Value} @@ -78,12 +78,12 @@ to(TABM0) -> % 3. Recursively decode any maps that we encounter; % 4. Return the remaining keys and values as a map. hb_message:filter_default_keys(maps:filtermap( - fun(<<"Converge-Type:", _/binary>>, _) -> + fun(<<"converge-type: ", _/binary>>, _) -> % Remove any keys from output that have a "Converge-Type:" prefix. false; (RawKey, BinaryValue) when is_binary(BinaryValue) -> - Key = hb_converge:key_to_binary(RawKey), - case maps:find(<<"Converge-Type:", Key/binary>>, TABM1) of + Key = hb_converge:normalize_key(RawKey), + case maps:find(<<"converge-type: ", Key/binary>>, TABM1) of error -> {true, BinaryValue}; {ok, Type} -> {true, decode_value(Type, BinaryValue)} @@ -102,29 +102,29 @@ to(TABM0) -> %% serialization as a separate tag. encode_value(Value) when is_integer(Value) -> [Encoded, _] = hb_http_structured_fields:item({item, Value, []}), - {<<"Integer">>, Encoded}; + {<<"integer">>, Encoded}; encode_value(Value) when is_float(Value) -> ?no_prod("Must use structured field representation for floats!"), - {<<"Float">>, float_to_binary(Value)}; + {<<"float">>, float_to_binary(Value)}; encode_value(Value) when is_atom(Value) -> [EncodedIOList, _] = hb_http_structured_fields:item( {item, {string, atom_to_binary(Value, latin1)}, []}), Encoded = list_to_binary(EncodedIOList), - {<<"Atom">>, Encoded}; + {<<"atom">>, Encoded}; encode_value(Values) when is_list(Values) -> EncodedValues = lists:map( fun(Bin) when is_binary(Bin) -> {item, {string, Bin}, []}; (Item) -> {RawType, Encoded} = encode_value(Item), - Type = hb_converge:key_to_binary(RawType), + Type = hb_converge:normalize_key(RawType), { item, { string, << - "(Converge-Type: ", Type/binary, ") ", + "(converge-type: ", Type/binary, ") ", Encoded/binary >> }, @@ -134,9 +134,9 @@ encode_value(Values) when is_list(Values) -> Values ), EncodedList = hb_http_structured_fields:list(EncodedValues), - {<<"List">>, iolist_to_binary(EncodedList)}; + {<<"list">>, iolist_to_binary(EncodedList)}; encode_value(Value) when is_binary(Value) -> - {<<"Binary">>, Value}; + {<<"binary">>, Value}; encode_value(Value) -> Value. @@ -159,10 +159,10 @@ decode_value(float, Value) -> decode_value(atom, Value) -> {item, {string, AtomString}, _} = hb_http_structured_fields:parse_item(Value), - binary_to_existing_atom(AtomString, latin1); + binary_to_existing_atom(AtomString); decode_value(list, Value) -> lists:map( - fun({item, {string, <<"(Converge-Type: ", Rest/binary>>}, _}) -> + fun({item, {string, <<"(converge-type: ", Rest/binary>>}, _}) -> [Type, Item] = binary:split(Rest, <<") ">>), decode_value(Type, Item); ({item, {string, Binary}, _}) -> Binary @@ -186,12 +186,12 @@ decode_value(OtherType, Value) -> list_encoding_test() -> % Test that we can encode and decode a list of integers. - {<<"List">>, Encoded} = encode_value(List1 = [1, 2, 3]), + {<<"list">>, Encoded} = encode_value(List1 = [1, 2, 3]), Decoded = decode_value(list, Encoded), ?assertEqual(List1, Decoded), % Test that we can encode and decode a list of binaries. - {<<"List">>, Encoded2} = encode_value(List2 = [<<"1">>, <<"2">>, <<"3">>]), + {<<"list">>, Encoded2} = encode_value(List2 = [<<"1">>, <<"2">>, <<"3">>]), ?assertEqual(List2, decode_value(list, Encoded2)), % Test that we can encode and decode a mixed list. - {<<"List">>, Encoded3} = encode_value(List3 = [1, <<"2">>, 3]), + {<<"list">>, Encoded3} = encode_value(List3 = [1, <<"2">>, 3]), ?assertEqual(List3, decode_value(list, Encoded3)). \ No newline at end of file diff --git a/src/hb_codec_http.erl b/src/hb_codec_http.erl index 5a4c41c3f..00c402d39 100644 --- a/src/hb_codec_http.erl +++ b/src/hb_codec_http.erl @@ -51,28 +51,24 @@ %% @doc Convert an HTTP Message into a TABM. %% HTTP Structured Field is encoded into it's equivalent TABM encoding. from(Bin) when is_binary(Bin) -> Bin; -from(#{ headers := Headers, body := Body }) when is_map(Headers) -> +from(#{ <<"headers">> := Headers, <<"body">> := Body }) when is_map(Headers) -> from(#{ headers => maps:to_list(Headers), body => Body }); -from(#{ headers := Headers, body := Body }) -> +from(#{ <<"headers">> := Headers, <<"body">> := Body }) -> % First, parse all headers and add as key-value pairs to the TABM Map = from_headers(#{}, Headers), % Next, we need to potentially parse the body and add to the TABM % potentially as additional key-binary value pairs, or as sub-TABMs - {_, ContentType} = find_header(Headers, <<"Content-Type">>), - maps:remove(<<"Content-Type">>, from_body(Map, ContentType, Body)). + {_, ContentType} = find_header(Headers, <<"content-type">>), + maps:remove(<<"content-type">>, from_body(Map, ContentType, Body)). from_headers(Map, Headers) -> from_headers(Map, Headers, Headers). from_headers(Map, [], _) -> Map; from_headers(Map, [{Name, Value} | Rest], Headers) -> NewMap = case Name of % Handled as part of "Signature" so simply skip it - <<"Signature-Input">> -> Map; <<"signature-input">> -> Map; - <<"Signature">> -> - {_, SigInput} = find_header(Headers, <<"Signature-Input">>), - from_signature(Map, Value, SigInput); <<"signature">> -> - {_, SigInput} = find_header(Headers, <<"Signature-Input">>), + {_, SigInput} = find_header(Headers, <<"signature-input">>), from_signature(Map, Value, SigInput); % Decode the header as normal N -> maps:put(N, Value, Map) @@ -107,18 +103,15 @@ from_signature(Map, RawSig, RawSigInput) -> SfSigs ), % Finally place the Signatures as a top-level Map on the parent Map - maps:put(<<"Signatures">>, Signatures, Map). + maps:put(<<"signatures">>, Signatures, Map). find_header(Headers, Name) -> find_header(Headers, Name, []). find_header(Headers, Name, Opts) when is_list(Headers) -> - Matcher = case lists:member(strict, Opts) of - true -> fun ({N, _Value}) -> N =:= Name end; - _ -> - fun ({N, _Value}) -> - hb_util:to_lower(N) =:= hb_util:to_lower(Name) - end - end, + Matcher = + fun ({N, _Value}) -> + hb_converge:normalize_key(N) =:= hb_converge:normalize_key(Name) + end, case lists:filter(Matcher, Headers) of [] -> {undefined, undefined}; Found -> case lists:member(global, Opts) of @@ -136,7 +129,7 @@ from_body(TABM, ContentType, Body) -> case lists:keyfind(<<"boundary">>, 1, Params) of % The body is not a multipart, so just set as is to the Body key on the TABM false -> - maps:put(<<"Body">>, Body, TABM); + maps:put(<<"body">>, Body, TABM); % We need to manually parse the multipart body into key/values on the TABM {_, {_Type, Boundary}} -> % Find the sub-part of the body within the boundary @@ -201,10 +194,10 @@ append_body_part(TABM, Part) -> RawDisposition when is_binary(RawDisposition) -> {item, {_, _Disposition}, Params} = hb_http_structured_fields:parse_item(RawDisposition), PartName = case lists:keyfind(<<"name">>, 1, Params) of - false -> <<"Body">>; + false -> <<"body">>; {_, {_type, PN}} -> PN end, - SubTABM = from(#{ headers => RestHeaders, body => RawBody }), + SubTABM = from(#{ <<"headers">> => RestHeaders, <<"body">> => RawBody }), {ok, maps:put(PartName, SubTABM, TABM)} end. @@ -216,7 +209,7 @@ to(TABM) when is_map(TABM) -> % MinimizedMsg = hb_message:minimize(PublicMsg), Http = maps:fold( fun(RawKey, Value, Http) -> - Key = hb_converge:key_to_binary(RawKey), + Key = hb_converge:normalize_key(RawKey), case hb_util:to_lower(Key) of <<"body">> -> body_to_http(Http, Value); <<"signature">> -> signatures_to_http(Http, [Value]); @@ -224,12 +217,12 @@ to(TABM) when is_map(TABM) -> _ -> field_to_http(Http, {Key, Value}, #{}) end end, - #{ headers => [], body => #{} }, + #{ <<"headers">> => [], <<"body">> => #{} }, TABM ), - Body = maps:get(body, Http), + Body = maps:get(<<"body">>, Http), NewHttp = case maps:size(Body) of - 0 -> maps:put(body, <<>>, Http); + 0 -> maps:put(<<"body">>, <<>>, Http); _ -> {ok, RawBoundary} = dev_message:id(TABM), Boundary = hb_util:encode(RawBoundary), @@ -243,20 +236,20 @@ to(TABM) when is_map(TABM) -> ), BodyBin = iolist_to_binary(lists:join(?CRLF, lists:reverse(BodyList))), #{ - headers => [ + <<"headers">> => [ { - <<"Content-Type">>, + <<"content-type">>, <<"multipart/form-data; boundary=", "\"" , Boundary/binary, "\"">> } - | maps:get(headers, Http) + | maps:get(<<"headers">>, Http) ], % End the body with a final terminating Boundary - body => <> + <<"body">> => <> } end, NewHttp. -encode_http_msg (_Http = #{ headers := SubHeaders, body := SubBody }) -> +encode_http_msg (_Http = #{ <<"headers">> := SubHeaders, <<"body">> := SubBody }) -> % Serialize the headers, to be included in the part of the multipart response HeaderList = lists:foldl( fun ({HeaderName, HeaderValue}, Acc) -> @@ -282,7 +275,7 @@ signatures_to_http(Http, Signatures) when is_list(Signatures) -> fun ({SigName, SignatureMap = #{ <<"inputs">> := Inputs, <<"signature">> := Signature }}, {SfSigInputs, SfSigs}) -> NextSigInput = hb_http_signature:sf_signature_params(Inputs, SignatureMap), NextSig = hb_http_signature:sf_signature(Signature), - NextName = hb_converge:key_to_binary(SigName), + NextName = hb_converge:normalize_key(SigName), { [{NextName, NextSigInput} | SfSigInputs], [{NextName, NextSig} | SfSigs] @@ -294,17 +287,17 @@ signatures_to_http(Http, Signatures) when is_list(Signatures) -> ), % Signature and Signature-Input are always encoded as Structured Field dictionaries, and then % each transmitted either as a header, or as a part in the multi-part body - WithSig = field_to_http(Http, {<<"Signature">>, hb_http_structured_fields:dictionary(SfSigs)}, #{}), - WithSigAndInput = field_to_http(WithSig, {<<"Signature-Input">>, hb_http_structured_fields:dictionary(SfSigInputs)}, #{}), + WithSig = field_to_http(Http, {<<"signature">>, hb_http_structured_fields:dictionary(SfSigs)}, #{}), + WithSigAndInput = field_to_http(WithSig, {<<"signature-input">>, hb_http_structured_fields:dictionary(SfSigInputs)}, #{}), WithSigAndInput. body_to_http(Http, Body) when is_map(Body) -> - Disposition = <<"Content-Disposition: inline">>, + Disposition = <<"content-disposition: inline">>, SubHttp = to(Body), EncodedBody = encode_http_msg(SubHttp), field_to_http(Http, {<<"body">>, EncodedBody}, #{ disposition => Disposition, where => body }); body_to_http(Http, Body) when is_binary(Body) -> - Disposition = <<"Content-Disposition: inline">>, + Disposition = <<"content-disposition: inline">>, field_to_http(Http, {<<"body">>, Body}, #{ disposition => Disposition, where => body }). field_to_http(Http, {Name, Value}, Opts) when is_map(Value) -> @@ -312,7 +305,7 @@ field_to_http(Http, {Name, Value}, Opts) when is_map(Value) -> EncodedHttpMap = encode_http_msg(SubHttp), field_to_http(Http, {Name, EncodedHttpMap}, maps:put(where, body, Opts)); field_to_http(Http, {Name, Value}, Opts) when is_binary(Value) -> - NormalizedName = hb_converge:key_to_binary(Name), + NormalizedName = hb_converge:normalize_key(Name), % The default location where the value is encoded within the HTTP % message depends on its size. % @@ -324,7 +317,7 @@ field_to_http(Http, {Name, Value}, Opts) when is_binary(Value) -> end, case maps:get(where, Opts, DefaultWhere) of headers -> - Headers = maps:get(headers, Http), + Headers = maps:get(<<"headers">>, Http), NewHeaders = lists:append(Headers, [{NormalizedName, Value}]), maps:put(headers, NewHeaders, Http); % Append the value as a part of the multipart body @@ -334,9 +327,9 @@ field_to_http(Http, {Name, Value}, Opts) when is_binary(Value) -> % We allow the caller to provide a Content-Disposition in Opts, but default % to appending as a field on the form-data body -> - Body = maps:get(body, Http), - Disposition = maps:get(disposition, Opts, <<"Content-Disposition: form-data;name=", NormalizedName/binary>>), + Body = maps:get(<<"body">>, Http), + Disposition = maps:get(disposition, Opts, <<"content-disposition: form-data;name=", NormalizedName/binary>>), BodyPart = <>, NewBody = maps:put(NormalizedName, BodyPart, Body), - maps:put(body, NewBody, Http) + maps:put(<<"body">>, NewBody, Http) end. diff --git a/src/hb_codec_tx.erl b/src/hb_codec_tx.erl index 153c9991b..e77140413 100644 --- a/src/hb_codec_tx.erl +++ b/src/hb_codec_tx.erl @@ -9,22 +9,30 @@ -define(MAX_TAG_VAL, 128). %% The list of TX fields that users can set directly. -define(TX_KEYS, - [id, unsigned_id, last_tx, owner, target, signature]). + [ + <<"id">>, + <<"unsigned_id">>, + <<"last_tx">>, + <<"owner">>, + <<"target">>, + <<"signature">> + ] +). -define(FILTERED_TAGS, [ - <<"Bundle-Format">>, - <<"Bundle-Map">>, - <<"Bundle-Version">> + <<"bundle-format">>, + <<"bundle-map">>, + <<"bundle-version">> ] ). %% @doc Convert a #tx record into a message map recursively. from(Binary) when is_binary(Binary) -> Binary; from(TX) when is_record(TX, tx) -> - case lists:keyfind(<<"Converge-Type">>, 1, TX#tx.tags) of + case lists:keyfind(<<"converge-type">>, 1, TX#tx.tags) of false -> do_from(TX); - {<<"Converge-Type">>, <<"Binary">>} -> + {<<"converge-type">>, <<"binary">>} -> TX#tx.data end. do_from(RawTX) -> @@ -34,13 +42,16 @@ do_from(RawTX) -> % the list of key-value pairs into a map, removing irrelevant fields. TXKeysMap = maps:with(?TX_KEYS, - maps:from_list( - lists:zip( - record_info(fields, tx), - tl(tuple_to_list(TX)) + hb_converge:normalize_keys( + maps:from_list( + lists:zip( + record_info(fields, tx), + tl(tuple_to_list(TX)) + ) ) ) ), + ?event(debug, {tx_keys_map, {explicit, TXKeysMap}}), % Generate a TABM from the tags. MapWithoutData = maps:merge(TXKeysMap, maps:from_list(TX#tx.tags)), DataMap = @@ -58,7 +69,7 @@ do_from(RawTX) -> Data when Data == ?DEFAULT_DATA -> MapWithoutData; Data when is_binary(Data) -> - MapWithoutData#{ data => Data }; + MapWithoutData#{ <<"data">> => Data }; Data -> ?event({unexpected_data_type, {explicit, Data}}), ?event({was_processing, {explicit, TX}}), @@ -66,7 +77,9 @@ do_from(RawTX) -> end, % Merge the data map with the rest of the TX map and remove any keys that % are not part of the message. - maps:without(?FILTERED_TAGS, maps:merge(DataMap, MapWithoutData)). + NormalizedDataMap = + hb_converge:normalize_keys(maps:merge(DataMap, MapWithoutData)), + maps:without(?FILTERED_TAGS, NormalizedDataMap). %% @doc Internal helper to translate a message to its #tx record representation, %% which can then be used by ar_bundles to serialize the message. We call the @@ -78,21 +91,22 @@ to(Binary) when is_binary(Binary) -> % we turn it into a TX record with a special tag, tx_to_message will % identify this tag and extract just the binary. #tx{ - tags= [{<<"Converge-Type">>, <<"Binary">>}], + tags= [{<<"converge-type">>, <<"binary">>}], data = Binary }; to(TX) when is_record(TX, tx) -> TX; -to(TABM) when is_map(TABM) -> +to(RawTABM) when is_map(RawTABM) -> % The path is a special case so we normalized it first. It may have been % modified by `hb_converge` in order to set it to the current key that is % being executed. We should check whether the path is in the % `priv/Converge/Original-Path` field, and if so, use that instead of the % stated path. This normalizes the path, such that the signed message will % continue to validate correctly. + TABM = hb_converge:normalize_keys(RawTABM), M = - case {maps:find(path, TABM), hb_private:from_message(TABM)} of - {{ok, _}, #{ <<"Converge">> := #{ <<"Original-Path">> := Path } }} -> - maps:put(path, Path, TABM); + case {maps:find(<<"path">>, TABM), hb_private:from_message(TABM)} of + {{ok, _}, #{ <<"converge">> := #{ <<"original-path">> := Path } }} -> + maps:put(<<"path">>, Path, TABM); _ -> TABM end, % Translate the keys into a binary map. If a key has a value that is a map, @@ -107,13 +121,14 @@ to(TABM) when is_map(TABM) -> end, M ), - NormalizedMsgKeyMap = hb_message:normalize_keys(MsgKeyMap), + NormalizedMsgKeyMap = hb_converge:normalize_keys(MsgKeyMap), + ?event(debug, {normalized_msg_key_map, {explicit, NormalizedMsgKeyMap}}), % Iterate through the default fields, replacing them with the values from % the message map if they are present. {RemainingMap, BaseTXList} = lists:foldl( fun({Field, Default}, {RemMap, Acc}) -> - NormKey = hb_converge:key_to_binary(Field), + NormKey = hb_converge:normalize_key(Field), case maps:find(NormKey, NormalizedMsgKeyMap) of error -> {RemMap, [Default | Acc]}; {ok, Value} when is_binary(Default) andalso ?IS_ID(Value) -> @@ -155,7 +170,7 @@ to(TABM) when is_map(TABM) -> % Recursively turn the remaining data items into tx records. DataItems = maps:from_list(lists:map( fun({Key, Value}) -> - {Key, to(Value)} + {hb_converge:normalize_key(Key), to(Value)} end, RawDataItems )), @@ -169,9 +184,9 @@ to(TABM) when is_map(TABM) -> {Data, _} when is_map(Data) -> TX#tx { data = maps:merge(Data, DataItems) }; {Data, _} when is_record(Data, tx) -> - TX#tx { data = DataItems#{ data => Data } }; + TX#tx { data = DataItems#{ <<"data">> => Data } }; {Data, _} when is_binary(Data) -> - TX#tx { data = DataItems#{ data => to(Data) } } + TX#tx { data = DataItems#{ <<"data">> => to(Data) } } end, % ar_bundles:reset_ids(ar_bundles:normalize(TXWithData)); Res = try ar_bundles:reset_ids(ar_bundles:normalize(TXWithData)) diff --git a/src/hb_converge.erl b/src/hb_converge.erl index 1bc940c43..9cb3bba72 100644 --- a/src/hb_converge.erl +++ b/src/hb_converge.erl @@ -93,7 +93,7 @@ -module(hb_converge). %%% Main Converge API: -export([resolve/2, resolve/3, load_device/2, message_to_device/2]). --export([to_key/1, to_key/2, key_to_binary/1, key_to_binary/2, ensure_message/1]). +-export([normalize_key/1, normalize_key/2, normalize_keys/1]). %%% Shortcuts and tools: -export([info/2, keys/1, keys/2, keys/3, truncate_args/2]). -export([get/2, get/3, get/4, set/2, set/3, set/4, remove/2, remove/3]). @@ -132,7 +132,7 @@ resolve_stage(1, Msg1, Msg2, Opts) when is_list(Msg1) -> % Normalize lists to numbered maps (base=1) if necessary. ?event(converge_core, {stage, 1, list_normalize}, Opts), resolve_stage(1, - ensure_message(Msg1), + normalize_keys(Msg1), Msg2, Opts ); @@ -140,9 +140,13 @@ resolve_stage(1, Msg1, Path, Opts) when not is_map(Path) -> ?event(converge_core, {stage, 1, normalize_raw_path_to_message}, Opts), % If we have been given a Path rather than a full Msg2, construct the % message around it and recurse. - resolve_stage(1, Msg1, #{ path => Path }, Opts); -resolve_stage(1, Msg1, Msg2, Opts) -> - ?event(converge_core, {stage, 1, normalize_path}, Opts), + resolve_stage(1, Msg1, #{ <<"path">> => normalize_key(Path) }, Opts); +resolve_stage(1, RawMsg1, RawMsg2, Opts) -> + % Normalize the path to a private key containing the list of remaining + % keys to resolve. + ?event(converge_core, {stage, 1, normalize}, Opts), + Msg1 = normalize_keys(RawMsg1), + Msg2 = normalize_keys(RawMsg2), case hb_path:priv_remaining(Msg2, Opts) of undefined -> % We are executing our first run with no message list to recurse @@ -394,10 +398,10 @@ resolve_stage(7, Msg1, Msg2, {ok, Msg3}, ExecName, Opts) when is_map(Msg3) -> ?event({setting_hashpath_msg3, {msg1, Msg1}, {msg2, Msg2}, {opts, Opts}}), {ok, maps:without(?REGEN_KEYS, - Msg3#{ hashpath => hb_path:hashpath(Msg1, Msg2, Opts) } + Msg3#{ <<"hashpath">> => hb_path:hashpath(Msg1, Msg2, Opts) } ) }; - reset -> {ok, maps:without([hashpath] ++ ?REGEN_KEYS, Msg3)}; + reset -> {ok, maps:without([<<"hashpath">>] ++ ?REGEN_KEYS, Msg3)}; ignore -> {ok, Msg3} end, ExecName, @@ -455,7 +459,7 @@ resolve_stage(11, Msg1, Msg2, {Status, Msg3}, ExecName, Opts) -> RemainingPath when Status == ok -> % There are more elements in the path, so we recurse. ?event( - debug, + converge_core, {resolution_recursing, {remaining_path, RemainingPath} } @@ -670,7 +674,7 @@ device_set(Msg, Key, Value, Opts) -> Res = hb_util:ok( resolve( Msg, - #{ path => set, Key => Value }, + #{ <<"path">> => set, Key => Value }, internal_opts(Opts) ), internal_opts(Opts) @@ -687,7 +691,7 @@ remove(Msg, Key, Opts) -> hb_util:ok( resolve( Msg, - #{ path => remove, item => Key }, + #{ <<"path">> => remove, <<"item">> => Key }, internal_opts(Opts) ), Opts @@ -836,17 +840,8 @@ info_handler_to_fun(HandlerMap, Msg, Key, Opts) -> %% the key using its literal value. If that fails, we cast the key to an atom %% and try again. find_exported_function(Msg, Dev, Key, MaxArity, Opts) when is_map(Dev) -> - case maps:get(Key, Dev, not_found) of - not_found -> - case to_key(Key) of - undefined -> not_found; - Key -> - % The key is unchanged, so we return not_found. - not_found; - KeyAtom -> - % The key was cast to an atom, so we try again. - find_exported_function(Msg, Dev, KeyAtom, MaxArity, Opts) - end; + case maps:get(normalize_key(Key), normalize_keys(Dev), not_found) of + not_found -> not_found; Fun when is_function(Fun) -> case erlang:fun_info(Fun, arity) of {arity, Arity} when Arity =< MaxArity -> @@ -860,35 +855,18 @@ find_exported_function(Msg, Dev, Key, MaxArity, Opts) when is_map(Dev) -> find_exported_function(_Msg, _Mod, _Key, Arity, _Opts) when Arity < 0 -> not_found; find_exported_function(Msg, Mod, Key, Arity, Opts) when not is_atom(Key) -> - case to_key(Key, Opts) of - ConvertedKey when is_atom(ConvertedKey) -> - find_exported_function(Msg, Mod, ConvertedKey, Arity, Opts); - undefined -> not_found; - BinaryKey when is_binary(BinaryKey) -> - not_found + try binary_to_existing_atom(normalize_key(Key), latin1) of + KeyAtom -> find_exported_function(Msg, Mod, KeyAtom, Arity, Opts) + catch _:_ -> not_found end; find_exported_function(Msg, Mod, Key, Arity, Opts) -> - %?event({finding, {mod, Mod}, {key, Key}, {arity, Arity}}), case erlang:function_exported(Mod, Key, Arity) of true -> case is_exported(Msg, Mod, Key, Opts) of - true -> - %?event({found, {ok, fun Mod:Key/Arity}}), - {ok, fun Mod:Key/Arity}; - false -> - %?event({result, not_found}), - not_found + true -> {ok, fun Mod:Key/Arity}; + false -> not_found end; false -> - %?event( - % { - % find_exported_function_result, - % {mod, Mod}, - % {key, Key}, - % {arity, Arity}, - % {result, false} - % } - % ), find_exported_function(Msg, Mod, Key, Arity - 1, Opts) end. @@ -906,61 +884,44 @@ is_exported(Msg, Dev, Key, Opts) -> is_exported(info(Dev, Msg, Opts), Key). is_exported(_, info) -> true; is_exported(Info = #{ excludes := Excludes }, Key) -> - case lists:member(to_key(Key), lists:map(fun to_key/1, Excludes)) of + case lists:member(normalize_key(Key), lists:map(fun normalize_key/1, Excludes)) of true -> false; false -> is_exported(maps:remove(excludes, Info), Key) end; is_exported(#{ exports := Exports }, Key) -> - lists:member(to_key(Key), lists:map(fun to_key/1, Exports)); + lists:member(normalize_key(Key), lists:map(fun normalize_key/1, Exports)); is_exported(_Info, _Key) -> true. -%% @doc Convert a key to an atom if it already exists in the Erlang atom table, -%% or to a binary otherwise. -to_key(Key) -> to_key(Key, #{ error_strategy => throw }). -to_key(Key, _Opts) when byte_size(Key) == 43 -> Key; -to_key(Key, Opts) -> - % If the `atom_keys' option is set, we try to convert the key to an atom. - % If this fails, we fall back to using the binary representation. - AtomKeys = hb_opts:get(atom_keys, true, Opts), - if AtomKeys -> - try to_atom_unsafe(Key) - catch _Type:_:_Trace -> key_to_binary(Key, Opts) - end; - true -> key_to_binary(Key, Opts) - end. - -%% @doc Convert a key to its binary representation. -key_to_binary(Key) -> key_to_binary(Key, #{}). -key_to_binary(Key, _Opts) when is_binary(Key) -> Key; -key_to_binary(Key, _Opts) when is_atom(Key) -> atom_to_binary(Key); -key_to_binary(Key, _Opts) when is_integer(Key) -> integer_to_binary(Key); -key_to_binary(Key = [ASCII | _], _Opts) when is_integer(ASCII) -> list_to_binary(Key); -key_to_binary(Key, _Opts) when is_list(Key) -> - iolist_to_binary(lists:join(<<"/">>, lists:map(fun key_to_binary/1, Key))). - -%% @doc Helper function for key_to_atom that does not check for errors. -to_atom_unsafe(Key) when is_integer(Key) -> - integer_to_binary(Key); -to_atom_unsafe(Key) when is_binary(Key) -> - binary_to_existing_atom(hb_util:to_lower(Key), utf8); -to_atom_unsafe(Key) when is_list(Key) -> - FlattenedKey = lists:flatten(Key), - list_to_existing_atom(FlattenedKey); -to_atom_unsafe(Key) when is_atom(Key) -> Key. +%% @doc Convert a key to a binary in normalized form. +normalize_key(Key) -> normalize_key(Key, #{}). +normalize_key(Key, _Opts) when ?IS_ID(Key) -> Key; +normalize_key(Key, _Opts) when is_binary(Key) -> hb_util:to_lower(Key); +normalize_key(Key, _Opts) when is_atom(Key) -> atom_to_binary(Key); +normalize_key(Key, _Opts) when is_integer(Key) -> integer_to_binary(Key); +normalize_key(Key = [ASCII | _], _Opts) when is_integer(ASCII) -> list_to_binary(Key); +normalize_key(Key, _Opts) when is_list(Key) -> + iolist_to_binary(lists:join(<<"/">>, lists:map(fun normalize_key/1, Key))). %% @doc Ensure that a message is processable by the Converge resolver: No lists. -ensure_message(Msg1) when is_list(Msg1) -> +normalize_keys(Msg1) when is_list(Msg1) -> maps:from_list( lists:zip( - [ - key_to_binary(Key) - || - Key <- lists:seq(1, length(Msg1)) - ], + lists:seq(1, length(Msg1)), Msg1 ) ); -ensure_message(Msg) -> Msg. +normalize_keys(Map) when is_map(Map) -> + maps:from_list( + lists:map( + fun({Key, Value}) when is_map(Value) -> + {hb_converge:normalize_key(Key), normalize_keys(Value)}; + ({Key, Value}) -> + {hb_converge:normalize_key(Key), Value} + end, + maps:to_list(Map) + ) + ); +normalize_keys(Other) -> Other. %% @doc Load a device module from its name or a message ID. %% Returns {ok, Executable} where Executable is the device module. On error, @@ -984,15 +945,10 @@ load_device(ID, Opts) when is_binary(ID) and byte_size(ID) == 43 -> case Trusted of true -> RelBin = erlang:system_info(otp_release), - case lists:keyfind(<<"Content-Type">>, 1, Msg#tx.tags) of + case maps:get(<<"content-type">>, Msg, undefined) of <<"BEAM/", RelBin/bitstring>> -> - {_, ModNameBin} = - lists:keyfind( - <<"Module-Name">>, - 1, - Msg#tx.tags - ), - ModName = list_to_atom(binary_to_list(ModNameBin)), + ModNameBin = maps:get(<<"module-name">>, Msg, undefined), + ModName = binary_to_atom(ModNameBin), case erlang:load_module(ModName, Msg#tx.data) of {module, _} -> {ok, ModName}; {error, Reason} -> {error, Reason} @@ -1004,7 +960,7 @@ load_device(ID, Opts) when is_binary(ID) and byte_size(ID) == 43 -> {error, remote_devices_disabled} end; load_device(ID, Opts) -> - case maps:get(ID, hb_opts:get(preloaded_devices), unsupported) of + case maps:get(ID, hb_opts:get(preloaded_devices, #{}, Opts), unsupported) of unsupported -> {error, module_not_admissable}; Mod -> load_device(Mod, Opts) end. diff --git a/src/hb_converge_test_vectors.erl b/src/hb_converge_test_vectors.erl index c0bf37011..0b34a48fd 100644 --- a/src/hb_converge_test_vectors.erl +++ b/src/hb_converge_test_vectors.erl @@ -161,7 +161,7 @@ resolve_key_twice_test(Opts) -> resolve_from_multiple_keys_test(Opts) -> ?assertEqual( - {ok, [a]}, + {ok, [<<"a">>]}, hb_converge:resolve(#{ a => <<"1">>, "priv_a" => <<"2">> }, keys, Opts) ). @@ -171,14 +171,14 @@ resolve_path_element_test(Opts) -> hb_converge:resolve(#{ path => [test_path] }, path, Opts) ), ?assertEqual( - {ok, [a]}, - hb_converge:resolve(#{ <<"Path">> => [a] }, <<"Path">>, Opts) + {ok, [<<"a">>]}, + hb_converge:resolve(#{ <<"Path">> => [<<"a">>] }, <<"Path">>, Opts) ). key_to_binary_test(Opts) -> - ?assertEqual(<<"a">>, hb_converge:key_to_binary(a, Opts)), - ?assertEqual(<<"a">>, hb_converge:key_to_binary(<<"a">>, Opts)), - ?assertEqual(<<"a">>, hb_converge:key_to_binary("a", Opts)). + ?assertEqual(<<"a">>, hb_converge:normalize_key(a, Opts)), + ?assertEqual(<<"a">>, hb_converge:normalize_key(<<"a">>, Opts)), + ?assertEqual(<<"a">>, hb_converge:normalize_key("a", Opts)). resolve_binary_key_test(Opts) -> ?assertEqual( @@ -202,15 +202,15 @@ generate_device_with_keys_using_args() -> key_using_only_state => fun(State) -> {ok, - <<(maps:get(state_key, State))/binary>> + <<(maps:get(<<"state_key">>, State))/binary>> } end, key_using_state_and_msg => fun(State, Msg) -> {ok, << - (maps:get(state_key, State))/binary, - (maps:get(msg_key, Msg))/binary + (maps:get(<<"state_key">>, State))/binary, + (maps:get(<<"msg_key">>, Msg))/binary >> } end, @@ -218,9 +218,9 @@ generate_device_with_keys_using_args() -> fun(State, Msg, Opts) -> {ok, << - (maps:get(state_key, State))/binary, - (maps:get(msg_key, Msg))/binary, - (maps:get(opts_key, Opts))/binary + (maps:get(<<"state_key">>, State))/binary, + (maps:get(<<"msg_key">>, Msg))/binary, + (maps:get(<<"opts_key">>, Opts))/binary >> } end @@ -238,7 +238,7 @@ gen_default_device() -> end } end, - state_key => + <<"state_key">> => fun(_) -> {ok, <<"STATE">>} end @@ -274,8 +274,8 @@ key_from_id_device_with_args_test(Opts) -> hb_converge:resolve( Msg, #{ - path => key_using_only_state, - msg_key => <<"2">> % Param message, which is ignored + <<"path">> => <<"key_using_only_state">>, + <<"msg_key">> => <<"2">> % Param message, which is ignored }, Opts ) @@ -285,8 +285,8 @@ key_from_id_device_with_args_test(Opts) -> hb_converge:resolve( Msg, #{ - path => key_using_state_and_msg, - msg_key => <<"3">> % Param message, with value to add + <<"path">> => <<"key_using_state_and_msg">>, + <<"msg_key">> => <<"3">> % Param message, with value to add }, Opts ) @@ -296,12 +296,12 @@ key_from_id_device_with_args_test(Opts) -> hb_converge:resolve( Msg, #{ - path => key_using_all, - msg_key => <<"3">> % Param message + <<"path">> => <<"key_using_all">>, + <<"msg_key">> => <<"3">> % Param message }, Opts#{ - opts_key => <<"37">>, - cache_control => [<<"no-cache">>, <<"no-store">>] + <<"opts_key">> => <<"37">>, + <<"cache_control">> => [<<"no-cache">>, <<"no-store">>] } ) ). @@ -314,7 +314,7 @@ device_with_handler_function_test(Opts) -> }, ?assertEqual( {ok, <<"HANDLER VALUE">>}, - hb_converge:resolve(Msg, test_key, Opts) + hb_converge:resolve(Msg, <<"test_key">>, Opts) ). device_with_default_handler_function_test(Opts) -> @@ -324,17 +324,17 @@ device_with_default_handler_function_test(Opts) -> }, ?assertEqual( {ok, <<"STATE">>}, - hb_converge:resolve(Msg, state_key, Opts) + hb_converge:resolve(Msg, <<"state_key">>, Opts) ), ?assertEqual( {ok, <<"DEFAULT">>}, - hb_converge:resolve(Msg, any_random_key, Opts) + hb_converge:resolve(Msg, <<"any_random_key">>, Opts) ). basic_get_test(Opts) -> Msg = #{ key1 => <<"value1">>, key2 => <<"value2">> }, - ?assertEqual(<<"value1">>, hb_converge:get(key1, Msg, Opts)), - ?assertEqual(<<"value2">>, hb_converge:get(key2, Msg, Opts)), + ?assertEqual(<<"value1">>, hb_converge:get(<<"key1">>, Msg, Opts)), + ?assertEqual(<<"value2">>, hb_converge:get(<<"key2">>, Msg, Opts)), ?assertEqual(<<"value2">>, hb_converge:get(<<"key2">>, Msg, Opts)), ?assertEqual(<<"value2">>, hb_converge:get([<<"key2">>], Msg, Opts)). @@ -344,20 +344,20 @@ recursive_get_test(Opts) -> {ok, <<"value1">>}, hb_converge:resolve(Msg, #{ path => key1 }, Opts) ), - ?assertEqual(<<"value1">>, hb_converge:get(key1, Msg, Opts)), + ?assertEqual(<<"value1">>, hb_converge:get(<<"key1">>, Msg, Opts)), ?assertEqual( {ok, <<"value3">>}, - hb_converge:resolve(Msg, #{ path => [key2, key3] }, Opts) + hb_converge:resolve(Msg, #{ path => [<<"key2">>, <<"key3">>] }, Opts) ), - ?assertEqual(<<"value3">>, hb_converge:get([key2, key3], Msg, Opts)), + ?assertEqual(<<"value3">>, hb_converge:get([<<"key2">>, <<"key3">>], Msg, Opts)), ?assertEqual(<<"value3">>, hb_converge:get(<<"key2/key3">>, Msg, Opts)). basic_set_test(Opts) -> Msg = #{ key1 => <<"value1">>, key2 => <<"value2">> }, UpdatedMsg = hb_converge:set(Msg, #{ key1 => <<"new_value1">> }, Opts), ?event({set_key_complete, {key, key1}, {value, <<"new_value1">>}}), - ?assertEqual(<<"new_value1">>, hb_converge:get(key1, UpdatedMsg, Opts)), - ?assertEqual(<<"value2">>, hb_converge:get(key2, UpdatedMsg, Opts)). + ?assertEqual(<<"new_value1">>, hb_converge:get(<<"key1">>, UpdatedMsg, Opts)), + ?assertEqual(<<"value2">>, hb_converge:get(<<"key2">>, UpdatedMsg, Opts)). get_with_device_test(Opts) -> Msg = @@ -365,8 +365,8 @@ get_with_device_test(Opts) -> device => generate_device_with_keys_using_args(), state_key => <<"STATE">> }, - ?assertEqual(<<"STATE">>, hb_converge:get(state_key, Msg, Opts)), - ?assertEqual(<<"STATE">>, hb_converge:get(key_using_only_state, Msg, Opts)). + ?assertEqual(<<"STATE">>, hb_converge:get(<<"state_key">>, Msg, Opts)), + ?assertEqual(<<"STATE">>, hb_converge:get(<<"key_using_only_state">>, Msg, Opts)). get_as_with_device_test(Opts) -> Msg = @@ -386,56 +386,56 @@ get_as_with_device_test(Opts) -> set_with_device_test(Opts) -> Msg = #{ - device => + <<"device">> => #{ - set => + <<"set">> => fun(State, _Msg) -> - Acc = maps:get(set_count, State, <<"">>), + Acc = maps:get(<<"set_count">>, State, <<"">>), {ok, State#{ - set_count => << Acc/binary, "." >> + <<"set_count">> => << Acc/binary, "." >> } } end }, - state_key => <<"STATE">> + <<"state_key">> => <<"STATE">> }, - ?assertEqual(<<"STATE">>, hb_converge:get(state_key, Msg, Opts)), - SetOnce = hb_converge:set(Msg, #{ state_key => <<"SET_ONCE">> }, Opts), - ?assertEqual(<<".">>, hb_converge:get(set_count, SetOnce, Opts)), - SetTwice = hb_converge:set(SetOnce, #{ state_key => <<"SET_TWICE">> }, Opts), - ?assertEqual(<<"..">>, hb_converge:get(set_count, SetTwice, Opts)), - ?assertEqual(<<"STATE">>, hb_converge:get(state_key, SetTwice, Opts)). + ?assertEqual(<<"STATE">>, hb_converge:get(<<"state_key">>, Msg, Opts)), + SetOnce = hb_converge:set(Msg, #{ <<"state_key">> => <<"SET_ONCE">> }, Opts), + ?assertEqual(<<".">>, hb_converge:get(<<"set_count">>, SetOnce, Opts)), + SetTwice = hb_converge:set(SetOnce, #{ <<"state_key">> => <<"SET_TWICE">> }, Opts), + ?assertEqual(<<"..">>, hb_converge:get(<<"set_count">>, SetTwice, Opts)), + ?assertEqual(<<"STATE">>, hb_converge:get(<<"state_key">>, SetTwice, Opts)). deep_set_test(Opts) -> % First validate second layer changes are handled correctly. - Msg0 = #{ a => #{ b => <<"RESULT">> } }, - ?assertMatch(#{ a := #{ b := <<"RESULT2">> } }, - hb_converge:set(Msg0, [a, b], <<"RESULT2">>, Opts)), + Msg0 = #{ <<"a">> => #{ <<"b">> => <<"RESULT">> } }, + ?assertMatch(#{ <<"a">> := #{ <<"b">> := <<"RESULT2">> } }, + hb_converge:set(Msg0, [<<"a">>, <<"b">>], <<"RESULT2">>, Opts)), % Now validate deeper layer changes are handled correctly. - Msg = #{ a => #{ b => #{ c => 1 } } }, - ?assertMatch(#{ a := #{ b := #{ c := 2 } } }, - hb_converge:set(Msg, [a, b, c], 2, Opts)). + Msg = #{ <<"a">> => #{ <<"b">> => #{ <<"c">> => 1 } } }, + ?assertMatch(#{ <<"a">> := #{ <<"b">> := #{ <<"c">> := 2 } } }, + hb_converge:set(Msg, [<<"a">>, <<"b">>, <<"c">>], 2, Opts)). deep_set_new_messages_test() -> Opts = maps:get(opts, hd(test_opts())), % Test that new messages are created when the path does not exist. - Msg0 = #{ a => #{ b => #{ c => <<"1">> } } }, + Msg0 = #{ <<"a">> => #{ <<"b">> => #{ <<"c">> => <<"1">> } } }, Msg1 = hb_converge:set(Msg0, <<"d/e">>, <<"3">>, Opts), Msg2 = hb_converge:set(Msg1, <<"d/f">>, <<"4">>, Opts), ?assert( hb_message:match( Msg2, #{ - a => + <<"a">> => #{ - b => - #{ c => <<"1">> } + <<"b">> => + #{ <<"c">> => <<"1">> } }, - d => + <<"d">> => #{ - e => <<"3">>, - f => <<"4">> } + <<"e">> => <<"3">>, + <<"f">> => <<"4">> } } ) ), @@ -452,9 +452,14 @@ deep_set_new_messages_test() -> hb_message:match( Msg3, #{ - a => #{ b => #{ c => <<"1">> } }, - d => #{ e => <<"3">>, f => <<"4">> }, - z => #{ a => <<"0">>, b => <<"1">>, y => #{ x => <<"2">> } } + <<"a">> => #{ <<"b">> => #{ <<"c">> => <<"1">> } }, + <<"d">> => #{ <<"e">> => <<"3">>, <<"f">> => <<"4">> }, + <<"z">> => + #{ + <<"a">> => <<"0">>, + <<"b">> => <<"1">>, + <<"y">> => #{ <<"x">> => <<"2">> } + } } ) ). @@ -467,36 +472,36 @@ deep_set_with_device_test(Opts) -> % and adds a modified flag. {Key, Val} = hd(maps:to_list(maps:without([path, priv], Msg2))), - {ok, Msg1#{ Key => Val, modified => true }} + {ok, Msg1#{ Key => Val, <<"modified">> => true }} end }, % A message with an interspersed custom device: A and C have it, % B does not. A and C will have the modified flag set to true. Msg = #{ - device => Device, - a => + <<"device">> => Device, + <<"a">> => #{ - b => + <<"b">> => #{ - device => Device, - c => <<"1">>, - modified => false + <<"device">> => Device, + <<"c">> => <<"1">>, + <<"modified">> => false }, - modified => false + <<"modified">> => false }, - modified => false + <<"modified">> => false }, - Outer = hb_converge:deep_set(Msg, [a, b, c], <<"2">>, Opts), - A = hb_converge:get(a, Outer, Opts), - B = hb_converge:get(b, A, Opts), - C = hb_converge:get(c, B, Opts), + Outer = hb_converge:deep_set(Msg, [<<"a">>, <<"b">>, <<"c">>], <<"2">>, Opts), + A = hb_converge:get(<<"a">>, Outer, Opts), + B = hb_converge:get(<<"b">>, A, Opts), + C = hb_converge:get(<<"c">>, B, Opts), ?assertEqual(<<"2">>, C), - ?assertEqual(true, hb_converge:get(modified, Outer)), - ?assertEqual(false, hb_converge:get(modified, A)), - ?assertEqual(true, hb_converge:get(modified, B)). + ?assertEqual(true, hb_converge:get(<<"modified">>, Outer)), + ?assertEqual(false, hb_converge:get(<<"modified">>, A)), + ?assertEqual(true, hb_converge:get(<<"modified">>, B)). device_exports_test(Opts) -> - Msg = #{ device => dev_message }, + Msg = #{ <<"device">> => dev_message }, ?assert(hb_converge:is_exported(Msg, dev_message, info, Opts)), ?assert(hb_converge:is_exported(Msg, dev_message, set, Opts)), ?assert( @@ -511,7 +516,7 @@ device_exports_test(Opts) -> info => fun() -> #{ exports => [set] } end, set => fun(_, _) -> {ok, <<"SET">>} end }, - Msg2 = #{ device => Dev }, + Msg2 = #{ <<"device">> => Dev }, ?assert(hb_converge:is_exported(Msg2, Dev, info, Opts)), ?assert(hb_converge:is_exported(Msg2, Dev, set, Opts)), ?assert(not hb_converge:is_exported(Msg2, Dev, not_exported, Opts)), @@ -527,24 +532,24 @@ device_exports_test(Opts) -> } end }, - Msg3 = #{ device => Dev2, <<"Test1">> => <<"BAD1">>, test3 => <<"GOOD3">> }, - ?assertEqual(<<"Handler-Value">>, hb_converge:get(test1, Msg3, Opts)), - ?assertEqual(<<"Handler-Value">>, hb_converge:get(test2, Msg3, Opts)), - ?assertEqual(<<"GOOD3">>, hb_converge:get(test3, Msg3, Opts)), + Msg3 = #{ <<"device">> => Dev2, <<"Test1">> => <<"BAD1">>, <<"test3">> => <<"GOOD3">> }, + ?assertEqual(<<"Handler-Value">>, hb_converge:get(<<"test1">>, Msg3, Opts)), + ?assertEqual(<<"Handler-Value">>, hb_converge:get(<<"test2">>, Msg3, Opts)), + ?assertEqual(<<"GOOD3">>, hb_converge:get(<<"test3">>, Msg3, Opts)), ?assertEqual(<<"GOOD4">>, hb_converge:get( <<"Test4">>, hb_converge:set(Msg3, <<"Test4">>, <<"GOOD4">>, Opts) ) ), - ?assertEqual(not_found, hb_converge:get(test5, Msg3, Opts)). + ?assertEqual(not_found, hb_converge:get(<<"test5">>, Msg3, Opts)). device_excludes_test(Opts) -> % Create a device that returns an identifiable message for any key, but also % sets excludes to [set], such that the message can be modified using the % default handler. Dev = #{ - info => + <<"info">> => fun() -> #{ excludes => [set], @@ -552,17 +557,17 @@ device_excludes_test(Opts) -> } end }, - Msg = #{ device => Dev, <<"Test-Key">> => <<"Test-Value">> }, - ?assert(hb_converge:is_exported(Msg, Dev, <<"Test-Key2">>, Opts)), + Msg = #{ <<"device">> => Dev, <<"Test-Key">> => <<"Test-Value">> }, + ?assert(hb_converge:is_exported(Msg, Dev, <<"test-key2">>, Opts)), ?assert(not hb_converge:is_exported(Msg, Dev, set, Opts)), - ?assertEqual(<<"Handler-Value">>, hb_converge:get(<<"Test-Key2">>, Msg, Opts)), - ?assertMatch(#{ <<"Test-Key2">> := <<"2">> }, - hb_converge:set(Msg, <<"Test-Key2">>, <<"2">>, Opts)). + ?assertEqual(<<"Handler-Value">>, hb_converge:get(<<"test-key2">>, Msg, Opts)), + ?assertMatch(#{ <<"test-key2">> := <<"2">> }, + hb_converge:set(Msg, <<"test-key2">>, <<"2">>, Opts)). denormalized_device_key_test(Opts) -> Msg = #{ <<"Device">> => dev_test }, ?assertEqual(dev_test, hb_converge:get(device, Msg, Opts)), - ?assertEqual(dev_test, hb_converge:get(<<"Device">>, Msg, Opts)), + ?assertEqual(dev_test, hb_converge:get(<<"device">>, Msg, Opts)), ?assertEqual({module, dev_test}, erlang:fun_info( element(3, hb_converge:message_to_fun(Msg, test_func, Opts)), diff --git a/src/hb_http.erl b/src/hb_http.erl index f9c377910..f395451b1 100644 --- a/src/hb_http.erl +++ b/src/hb_http.erl @@ -125,7 +125,7 @@ request(Method, Peer, Path, RawMessage, Opts) -> %% @doc Turn a set of request arguments into a request message, formatted in the %% preferred format. prepare_request(Format, Method, Peer, Path, RawMessage, Opts) -> - Message = hb_converge:ensure_message(RawMessage), + Message = hb_converge:normalize_keys(RawMessage), BinPeer = if is_binary(Peer) -> Peer; true -> list_to_binary(Peer) end, BinPath = hb_path:normalize(hb_path:to_binary(Path)), ReqBase = #{ peer => BinPeer, path => BinPath, method => Method }, @@ -238,7 +238,7 @@ empty_inbox(Ref) -> reply(Req, Message) -> reply(Req, message_to_status(Message), Message). reply(Req, Status, RawMessage) -> - Message = hb_converge:ensure_message(RawMessage), + Message = hb_converge:normalize_keys(RawMessage), Encoded = hb_message:convert( Message, diff --git a/src/hb_message.erl b/src/hb_message.erl index f5b9dfc03..9394a9790 100644 --- a/src/hb_message.erl +++ b/src/hb_message.erl @@ -53,7 +53,7 @@ %%% retrieving messages. -module(hb_message). -export([convert/3, convert/4, unsigned/1, attestations/1]). --export([sign/2, verify/1, type/1, minimize/1, normalize_keys/1]). +-export([sign/2, verify/1, type/1, minimize/1]). -export([signers/1, serialize/1, serialize/2, deserialize/1, deserialize/2]). -export([match/2, match/3]). %%% Helpers: @@ -83,7 +83,8 @@ convert(Msg, TargetFormat, SourceFormat, Opts) -> _ -> convert_to_target(TABM, TargetFormat, Opts) end. -convert_to_tabm(Msg, SourceFormat, Opts) -> +convert_to_tabm(RawMsg, SourceFormat, Opts) -> + Msg = hb_converge:normalize_keys(RawMsg), SourceCodecMod = get_codec(SourceFormat, Opts), case SourceCodecMod:from(Msg) of TypicalMsg when is_map(TypicalMsg) -> @@ -98,11 +99,11 @@ convert_to_target(Msg, TargetFormat, Opts) -> %% @doc Return the unsigned version of a message in Converge format. unsigned(Bin) when is_binary(Bin) -> Bin; unsigned(Msg) -> - maps:remove([signed_id, signature, owner], Msg). + maps:remove([<<"signed_id">>, <<"signature">>, <<"owner">>], Msg). %% @doc Return a sub-map of the attestation-related keys in a message. attestations(Msg) -> - maps:with([signed_id, signature, owner], Msg). + maps:with([<<"signed_id">>, <<"signature">>, <<"owner">>], Msg). %% @doc Get a codec from the options. get_codec(TargetFormat, Opts) -> @@ -125,7 +126,7 @@ format(Bin, Indent) when is_binary(Bin) -> Indent ); format(List, Indent) when is_list(List) -> - format(hb_converge:ensure_message(List), Indent); + format(lists:map(fun hb_converge:normalize_key/1, List), Indent); format(Map, Indent) when is_map(Map) -> % Define helper functions for formatting elements of the map. ValOrUndef = @@ -215,13 +216,13 @@ format(Map, Indent) when is_map(Map) -> % Format the remaining 'normal' keys and values. Res = lists:map( fun({Key, Val}) -> - NormKey = hb_converge:to_key(Key, #{ error_strategy => ignore }), + NormKey = hb_converge:normalize_key(Key, #{ error_strategy => ignore }), KeyStr = case NormKey of undefined -> io_lib:format("~p [!!! INVALID KEY !!!]", [Key]); _ -> - hb_converge:key_to_binary(Key) + hb_converge:normalize_key(Key) end, hb_util:format_indented( "~s => ~s~n", @@ -260,7 +261,7 @@ format(Item, Indent) -> %% @doc Return the signers of a message. For now, this is just the signer %% of the message itself. In the future, we will support multiple signers. signers(Msg) when is_map(Msg) -> - case {maps:find(owner, Msg), maps:find(signature, Msg)} of + case {maps:find(<<"owner">>, Msg), maps:find(<<"signature">>, Msg)} of {_, error} -> []; {error, _} -> []; {{ok, Owner}, {ok, _}} -> [ar_wallet:to_address(Owner)] @@ -307,11 +308,11 @@ match(Map1, Map2) -> match(Map1, Map2, Mode) -> Keys1 = maps:keys( - NormMap1 = minimize(normalize(hb_converge:ensure_message(Map1))) + NormMap1 = minimize(normalize(hb_converge:normalize_keys(Map1))) ), Keys2 = maps:keys( - NormMap2 = minimize(normalize(hb_converge:ensure_message(Map2))) + NormMap2 = minimize(normalize(hb_converge:normalize_keys(Map2))) ), PrimaryKeysPresent = (Mode == primary) andalso @@ -335,9 +336,11 @@ match(Map1, Map2, Mode) -> case Val1 == Val2 of true -> true; false -> - ?event( + ?event(debug, {value_mismatch, - {key, Val1, Val2} + {key, Key}, + {val1, Val1}, + {val2, Val2} } ), false @@ -348,36 +351,24 @@ match(Map1, Map2, Mode) -> Keys1 ); false -> - ?event({keys_mismatch, {keys1, Keys1}, {keys2, Keys2}}), + ?event(debug, {keys_mismatch, {keys1, Keys1}, {keys2, Keys2}}), false end. matchable_keys(Map) -> - lists:sort(lists:map(fun hb_converge:key_to_binary/1, maps:keys(Map))). - -%% @doc Normalize the keys in a map. Also takes a list of keys and returns a -%% sorted list of normalized keys if the input is a list. -normalize_keys(Keys) when is_list(Keys) -> - lists:sort(lists:map(fun hb_converge:key_to_binary/1, Keys)); -normalize_keys(Map) -> - maps:from_list( - lists:map( - fun({Key, Value}) -> - {hb_converge:key_to_binary(Key), Value} - end, - maps:to_list(Map) - ) - ). + lists:sort(lists:map(fun hb_converge:normalize_key/1, maps:keys(Map))). %% @doc Remove keys from the map that can be regenerated. Optionally takes an %% additional list of keys to include in the minimization. minimize(Msg) -> minimize(Msg, []). minimize(RawVal, _) when not is_map(RawVal) -> RawVal; minimize(Map, ExtraKeys) -> - NormKeys = normalize_keys(?REGEN_KEYS) ++ normalize_keys(ExtraKeys), + NormKeys = + lists:map(fun hb_converge:normalize_key/1, ?REGEN_KEYS) + ++ lists:map(fun hb_converge:normalize_key/1, ExtraKeys), maps:filter( fun(Key, _) -> - (not lists:member(hb_converge:key_to_binary(Key), NormKeys)) + (not lists:member(hb_converge:normalize_key(Key), NormKeys)) andalso (not hb_private:is_private(Key)) end, maps:map(fun(_K, V) -> minimize(V) end, Map) @@ -386,7 +377,7 @@ minimize(Map, ExtraKeys) -> %% @doc Return a map with only the keys that necessary, without those that can %% be regenerated. normalize(Map) -> - NormalizedMap = normalize_keys(Map), + NormalizedMap = hb_converge:normalize_keys(Map), FilteredMap = filter_default_keys(NormalizedMap), maps:with(matchable_keys(FilteredMap), FilteredMap). @@ -396,7 +387,7 @@ filter_default_keys(Map) -> DefaultsMap = default_tx_message(), maps:filter( fun(Key, Value) -> - case maps:find(hb_converge:key_to_binary(Key), DefaultsMap) of + case maps:find(hb_converge:normalize_key(Key), DefaultsMap) of {ok, Value} -> false; _ -> true end @@ -406,11 +397,13 @@ filter_default_keys(Map) -> %% @doc Get the normalized fields and default values of the tx record. default_tx_message() -> - normalize_keys(maps:from_list(default_tx_list())). + maps:from_list(default_tx_list()). -%% @doc Get the ordered list of fields and default values of the tx record. +%% @doc Get the ordered list of fields as Converge keys and default values of +%% the tx record. default_tx_list() -> - lists:zip(record_info(fields, tx), tl(tuple_to_list(#tx{}))). + Keys = lists:map(fun hb_converge:normalize_key/1, record_info(fields, tx)), + lists:zip(Keys, tl(tuple_to_list(#tx{}))). %% @doc Serialize a message to a binary representation, either as JSON or the %% binary format native to the message/bundles spec in use. @@ -436,21 +429,21 @@ deserialize(B, binary) -> default_keys_removed_test() -> TX = #tx { unsigned_id = << 1:256 >>, last_tx = << 2:256 >> }, TXMap = #{ - unsigned_id => TX#tx.unsigned_id, - last_tx => TX#tx.last_tx, + <<"unsigned_id">> => TX#tx.unsigned_id, + <<"last_tx">> => TX#tx.last_tx, <<"owner">> => TX#tx.owner, <<"target">> => TX#tx.target, - data => TX#tx.data + <<"data">> => TX#tx.data }, FilteredMap = filter_default_keys(TXMap), - ?assertEqual(<< 1:256 >>, maps:get(unsigned_id, FilteredMap)), - ?assertEqual(<< 2:256 >>, maps:get(last_tx, FilteredMap, not_found)), + ?assertEqual(<< 1:256 >>, maps:get(<<"unsigned_id">>, FilteredMap)), + ?assertEqual(<< 2:256 >>, maps:get(<<"last_tx">>, FilteredMap, not_found)), ?assertEqual(not_found, maps:get(<<"owner">>, FilteredMap, not_found)), ?assertEqual(not_found, maps:get(<<"target">>, FilteredMap, not_found)). minimization_test() -> Msg = #{ - unsigned_id => << 1:256 >>, + <<"unsigned_id">> => << 1:256 >>, <<"id">> => << 2:256 >> }, MinimizedMsg = minimize(Msg), @@ -459,7 +452,7 @@ minimization_test() -> basic_map_codec_test(Codec) -> - Msg = #{ normal_key => <<"NORMAL_VALUE">> }, + Msg = #{ <<"normal_key">> => <<"NORMAL_VALUE">> }, Encoded = convert(Msg, Codec, converge, #{}), Decoded = convert(Encoded, converge, Codec, #{}), ?assert(hb_message:match(Msg, Decoded)). @@ -467,11 +460,11 @@ basic_map_codec_test(Codec) -> %% @doc Test that we can convert a message into a tx record and back. single_layer_message_to_encoding_test(Codec) -> Msg = #{ - last_tx => << 2:256 >>, - owner => << 3:4096 >>, - target => << 4:256 >>, - data => <<"DATA">>, - <<"Special-Key">> => <<"SPECIAL_VALUE">> + <<"last_tx">> => << 2:256 >>, + <<"owner">> => << 3:4096 >>, + <<"target">> => << 4:256 >>, + <<"data">> => <<"DATA">>, + <<"special-key">> => <<"SPECIAL_VALUE">> }, Encoded = convert(Msg, Codec, converge, #{}), Decoded = convert(Encoded, converge, Codec, #{}), @@ -558,9 +551,9 @@ nested_message_with_large_keys_and_data_test(Codec) -> simple_nested_message_test(Codec) -> Msg = #{ - a => <<"1">>, - nested => #{ <<"b">> => <<"1">> }, - c => <<"3">> + <<"a">> => <<"1">>, + <<"nested">> => #{ <<"b">> => <<"1">> }, + <<"c">> => <<"3">> }, Encoded = convert(Msg, Codec, converge, #{}), Decoded = convert(Encoded, converge, Codec, #{}), @@ -578,7 +571,7 @@ simple_nested_message_test(Codec) -> nested_message_with_large_data_test(Codec) -> Msg = #{ <<"tx_depth">> => <<"outer">>, - data => #{ + <<"data">> => #{ <<"tx_map_item">> => #{ <<"tx_depth">> => <<"inner">>, @@ -595,13 +588,13 @@ nested_message_with_large_data_test(Codec) -> deeply_nested_message_with_data_test(Codec) -> Msg = #{ <<"tx_depth">> => <<"outer">>, - data => #{ + <<"data">> => #{ <<"tx_map_item">> => #{ <<"tx_depth">> => <<"inner">>, - data => #{ + <<"data">> => #{ <<"tx_depth">> => <<"innermost">>, - data => <<"DATA">> + <<"data">> => <<"DATA">> } } } @@ -611,17 +604,17 @@ deeply_nested_message_with_data_test(Codec) -> ?assert(match(Msg, Decoded)). nested_structured_fields_test(Codec) -> - NestedMsg = #{ a => #{ b => 1 } }, + NestedMsg = #{ <<"a">> => #{ <<"b">> => 1 } }, Encoded = convert(NestedMsg, Codec, converge, #{}), Decoded = convert(Encoded, converge, Codec, #{}), ?assert(match(NestedMsg, Decoded)). nested_message_with_large_keys_test(Codec) -> Msg = #{ - a => <<"1">>, - long_data => << 0:((1 + 1024) * 8) >>, - nested => #{ <<"b">> => <<"1">> }, - c => <<"3">> + <<"a">> => <<"1">>, + <<"long_data">> => << 0:((1 + 1024) * 8) >>, + <<"nested">> => #{ <<"b">> => <<"1">> }, + <<"c">> => <<"3">> }, Encoded = convert(Msg, Codec, converge, #{}), Decoded = convert(Encoded, converge, Codec, #{}), @@ -631,18 +624,22 @@ nested_message_with_large_keys_test(Codec) -> signed_tx_encode_decode_verify_test(Codec) -> TX = #tx { data = <<"TEST_DATA">>, - tags = [{<<"TEST_KEY">>, <<"TEST_VALUE">>}] + tags = [{<<"test_key">>, <<"TEST_VALUE">>}] }, + ?event(debug, {tx, TX}), SignedTX = ar_bundles:sign_item(TX, hb:wallet()), + ?event(debug, {signed_tx, SignedTX}), Encoded = convert(SignedTX, Codec, tx, #{}), + ?event(debug, {encoded_tx, Encoded}), ?assert(ar_bundles:verify_item(SignedTX)), Decoded = convert(Encoded, converge, Codec, #{}), + ?event(debug, {decoded_tx, Decoded}), ?assert(verify(Decoded)). signed_message_encode_decode_verify_test(Codec) -> Msg = #{ - data => <<"TEST_DATA">>, - tags => [{<<"TEST_KEY">>, <<"TEST_VALUE">>}] + <<"data">> => <<"TEST_DATA">>, + <<"tags">> => [{<<"test_key">>, <<"TEST_VALUE">>}] }, SignedMsg = hb_message:sign(Msg, hb:wallet()), Encoded = convert(SignedMsg, Codec, converge, #{}), @@ -651,11 +648,11 @@ signed_message_encode_decode_verify_test(Codec) -> tabm_converge_ids_equal_test() -> Msg = #{ - data => <<"TEST_DATA">>, - deep_data => #{ - data => <<"DEEP_DATA">>, - complex_key => 1337, - list => [1,2,3] + <<"data">> => <<"TEST_DATA">>, + <<"deep_data">> => #{ + <<"data">> => <<"DEEP_DATA">>, + <<"complex_key">> => 1337, + <<"list">> => [1,2,3] } }, ?assertEqual( @@ -665,7 +662,7 @@ tabm_converge_ids_equal_test() -> signed_deep_tx_serialize_and_deserialize_test(Codec) -> TX = #tx { - tags = [{<<"TEST_KEY">>, <<"TEST_VALUE">>}], + tags = [{<<"test_key">>, <<"TEST_VALUE">>}], data = #{ <<"NESTED_TX">> => #tx { @@ -688,7 +685,7 @@ signed_deep_tx_serialize_and_deserialize_test(Codec) -> ). unsigned_id_test(Codec) -> - Msg = #{ data => <<"TEST_DATA">> }, + Msg = #{ <<"data">> => <<"TEST_DATA">> }, Encoded = convert(Msg, Codec, converge, #{}), Decoded = convert(Encoded, converge, Codec, #{}), ?assertEqual( @@ -710,7 +707,7 @@ unsigned_id_test(Codec) -> % ). message_with_simple_list_test(Codec) -> - Msg = #{ a => [<<"1">>, <<"2">>, <<"3">>] }, + Msg = #{ <<"a">> => [<<"1">>, <<"2">>, <<"3">>] }, Encoded = convert(Msg, Codec, converge, #{}), Decoded = convert(Encoded, converge, Codec, #{}), ?assert(match(Msg, Decoded)). @@ -733,7 +730,7 @@ empty_string_in_tag_test(Codec) -> %%% Test helpers test_codecs() -> - [converge, tx, flat, http]. + [converge, tx, flat]. generate_test_suite(Suite) -> lists:map( @@ -778,4 +775,4 @@ message_suite_test_() -> ]). simple_test() -> - basic_map_codec_test(http). + simple_nested_message_test(tx). diff --git a/src/hb_path.erl b/src/hb_path.erl index 8d5d46cb5..65492a559 100644 --- a/src/hb_path.erl +++ b/src/hb_path.erl @@ -110,8 +110,8 @@ hashpath(Bin, _Opts) when is_binary(Bin) -> % Default hashpath for a binary message is its SHA2-256 hash. hb_util:human_id(hb_crypto:sha256(Bin)); hashpath(RawMsg1, Opts) -> - Msg1 = hb_converge:ensure_message(RawMsg1), - case dev_message:get(hashpath, Msg1) of + Msg1 = hb_converge:normalize_keys(RawMsg1), + case dev_message:get(<<"hashpath">>, Msg1) of {ok, ignore} -> throw({hashpath_set_to_ignore, {msg1, Msg1}, {opts, Opts}}); {ok, Hashpath} -> Hashpath; @@ -138,7 +138,7 @@ hashpath(Msg1, Msg2ID, Opts) when is_map(Msg1) -> hashpath(Msg1, Msg2, Opts) -> throw({hashpath_not_viable, Msg1, Msg2, Opts}). hashpath(Msg1, Msg2, HashpathAlg, Opts) when is_map(Msg2) -> - {ok, Msg2WithoutMeta} = dev_message:remove(Msg2, #{ items => ?CONVERGE_KEYS }), + {ok, Msg2WithoutMeta} = dev_message:remove(Msg2, #{ <<"items">> => ?CONVERGE_KEYS }), ?event({generating_msg2_hashpath_with_keys, maps:keys(Msg2WithoutMeta)}), case {map_size(Msg2WithoutMeta), hd(Msg2, Opts)} of {0, Key} when Key =/= undefined -> @@ -247,16 +247,13 @@ term_to_path_parts(Binary, Opts) when is_binary(Binary) -> nomatch -> [Binary]; _ -> term_to_path_parts( - lists:filter( - fun(Part) -> byte_size(Part) > 0 end, - binary:split(Binary, <<"/">>, [global]) - ), + binary:split(Binary, <<"/">>, [global, trim_all]), Opts ) end; term_to_path_parts([], _Opts) -> undefined; term_to_path_parts(Path = [ASCII | _], _Opts) when is_integer(ASCII) -> - [list_to_binary(Path)]; + [hb_converge:normalize_key(Path)]; term_to_path_parts(List, Opts) when is_list(List) -> lists:flatten(lists:map( fun(Part) -> @@ -266,7 +263,7 @@ term_to_path_parts(List, Opts) when is_list(List) -> )); term_to_path_parts(Atom, _Opts) when is_atom(Atom) -> [Atom]; term_to_path_parts(Integer, _Opts) when is_integer(Integer) -> - [integer_to_binary(Integer)]. + [hb_converge:normalize_key(Integer)]. %% @doc Convert a path of any form to a binary. to_binary(Path) -> @@ -293,12 +290,12 @@ do_to_binary(Path) when is_list(Path) -> do_to_binary(Path) when is_binary(Path) -> Path; do_to_binary(Other) -> - hb_converge:key_to_binary(Other). + hb_converge:normalize_key(Other). %% @doc Check if two keys match. matches(Key1, Key2) -> - hb_util:to_lower(hb_converge:key_to_binary(Key1)) == - hb_util:to_lower(hb_converge:key_to_binary(Key2)). + hb_util:to_lower(hb_converge:normalize_key(Key1)) == + hb_util:to_lower(hb_converge:normalize_key(Key2)). %% @doc Check if two keys match using regex. regex_matches(Path1, Path2) -> @@ -310,7 +307,7 @@ regex_matches(Path1, Path2) -> %% @doc Normalize a path to a binary, removing the leading slash if present. normalize(Path) -> - case hb_converge:key_to_binary(Path) of + case hb_converge:normalize_key(Path) of BinPath = <<"/", _/binary>> -> BinPath; Binary -> <<"/", Binary/binary>> end. diff --git a/src/hb_private.erl b/src/hb_private.erl index ca5e8c857..6e524986f 100644 --- a/src/hb_private.erl +++ b/src/hb_private.erl @@ -62,7 +62,7 @@ set_priv(Msg, PrivMap) -> %% @doc Check if a key is private. is_private(Key) -> - case hb_converge:key_to_binary(Key) of + case hb_converge:normalize_key(Key) of <<"priv", _/binary>> -> true; _ -> false end. diff --git a/src/hb_test.erl b/src/hb_test.erl index 6b8a5c95e..6753a5c61 100644 --- a/src/hb_test.erl +++ b/src/hb_test.erl @@ -29,7 +29,7 @@ run(Proc, Msg, _Opts) -> % init(), % {Proc, Msg} = generate_test_data(<<"return 42">>), % {ok, Result} = run(Proc, Msg, #{ on_idle => terminate }), -% #tx { data = <<"42">> } = maps:get(<<"/Data">>, Result), +% #tx { data = <<"42">> } = maps:get(<<"/data">>, Result), % ok. % full_push_test_() -> diff --git a/src/hb_util.erl b/src/hb_util.erl index 18f6fc6ef..7814a3922 100644 --- a/src/hb_util.erl +++ b/src/hb_util.erl @@ -158,23 +158,16 @@ message_to_numbered_list(Message, Opts) -> %% @doc Get the first element (the lowest integer key >= 1) of a numbered map. %% Optionally, it takes a specifier of whether to return the key or the value, %% as well as a standard map of HyperBEAM runtime options. -%% -%% If `error_strategy' is `throw', raise an exception if no integer keys are -%% found. If `error_strategy' is `any', return `undefined' if no integer keys -%% are found. By default, the function does not pass a `throw' execution -%% strategy to `hb_converge:to_key/2', such that non-integer keys present in the -%% message will not lead to an exception. hd(Message) -> hd(Message, value). hd(Message, ReturnType) -> hd(Message, ReturnType, #{ error_strategy => throw }). hd(Message, ReturnType, Opts) -> - {ok, Keys} = hb_converge:resolve(Message, keys, #{}), - hd(Message, Keys, 1, ReturnType, Opts). + hd(Message, hb_converge:keys(Message, Opts), 1, ReturnType, Opts). hd(_Map, [], _Index, _ReturnType, #{ error_strategy := throw }) -> throw(no_integer_keys); hd(_Map, [], _Index, _ReturnType, _Opts) -> undefined; hd(Message, [Key|Rest], Index, ReturnType, Opts) -> - case hb_converge:to_key(Key, Opts#{ error_strategy => return }) of + case hb_converge:normalize_key(Key, Opts#{ error_strategy => return }) of undefined -> hd(Message, Rest, Index + 1, ReturnType, Opts); Key -> diff --git a/src/include/hb.hrl b/src/include/hb.hrl index 2043c9753..858cf58c3 100644 --- a/src/include/hb.hrl +++ b/src/include/hb.hrl @@ -6,9 +6,9 @@ %% human-readable ID encoding. -define(IS_ID(X), (is_binary(X) andalso (byte_size(X) == 43 orelse byte_size(X) == 32))). %% @doc List of special keys that are used in the Converge Protocol. --define(CONVERGE_KEYS, [path, hashpath, priv]). +-define(CONVERGE_KEYS, [<<"path">>, <<"hashpath">>, <<"priv">>]). %% @doc Keys that can be regenerated losslessly. --define(REGEN_KEYS, [id, unsigned_id]). +-define(REGEN_KEYS, [<<"id">>, <<"unsigned_id">>]). %% @doc Record used for parsing relevant components of a cursor-browsable %% response. From 9deb191d01757fec3da2313f1f9bcab8d8b00406 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Thu, 16 Jan 2025 03:31:21 -0500 Subject: [PATCH 020/364] fix: bundle format tag value --- src/hb_codec_tx.erl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/hb_codec_tx.erl b/src/hb_codec_tx.erl index e77140413..f6786ecf1 100644 --- a/src/hb_codec_tx.erl +++ b/src/hb_codec_tx.erl @@ -51,7 +51,6 @@ do_from(RawTX) -> ) ) ), - ?event(debug, {tx_keys_map, {explicit, TXKeysMap}}), % Generate a TABM from the tags. MapWithoutData = maps:merge(TXKeysMap, maps:from_list(TX#tx.tags)), DataMap = From 362b0a85f0060e91fa13f2bc8a4614d15417baaf Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Thu, 16 Jan 2025 03:34:06 -0500 Subject: [PATCH 021/364] fixup: stage correct line --- src/ar_bundles.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ar_bundles.erl b/src/ar_bundles.erl index 262f9c1ef..2e840a872 100644 --- a/src/ar_bundles.erl +++ b/src/ar_bundles.erl @@ -694,7 +694,7 @@ maybe_unbundle(Item) -> Format = lists:keyfind(<<"bundle-format">>, 1, Item#tx.tags), Version = lists:keyfind(<<"bundle-version">>, 1, Item#tx.tags), case {Format, Version} of - {{<<"bundle-format">>, <<"Binary">>}, {<<"bundle-version">>, <<"2.0.0">>}} -> + {{<<"bundle-format">>, <<"binary">>}, {<<"bundle-version">>, <<"2.0.0">>}} -> maybe_map_to_list(maybe_unbundle_map(Item)); _ -> Item From c23fd22619a549f7701d799fc7580ec7244fe732 Mon Sep 17 00:00:00 2001 From: Oleg Date: Thu, 16 Jan 2025 17:24:01 +0100 Subject: [PATCH 022/364] fix: fix most of dev_wasm test cases (fix incorrect key values) --- src/dev_wasm.erl | 149 ++++++++++++++++++++++++--------------------- src/hb_private.erl | 6 +- 2 files changed, 84 insertions(+), 71 deletions(-) diff --git a/src/dev_wasm.erl b/src/dev_wasm.erl index 5384722d9..73973127e 100644 --- a/src/dev_wasm.erl +++ b/src/dev_wasm.erl @@ -93,8 +93,8 @@ init(M1, M2, Opts) -> {ok, hb_private:set(M1, #{ - <> => Instance, - <> => + <> => Instance, + <> => fun default_import_resolver/3 }, Opts @@ -116,7 +116,7 @@ default_import_resolver(Msg1, Msg2, Opts) -> hb_converge:resolve( hb_private:set( Msg1, - #{ <> => WASM }, + #{ <> => WASM }, Opts ), #{ @@ -176,15 +176,15 @@ compute(RawM1, M2, Opts) -> instance(M1, M2, Opts), WASMFunction, WASMParams, - hb_private:get(<>, M1, Opts), + hb_private:get(<>, M1, Opts), M1, Opts ), {ok, hb_converge:set(MsgAfterExecution, #{ - <<"Results/", Prefix/binary, "/Type">> => ResType, - <<"Results/", Prefix/binary, "/Output">> => Res + <<"results/", Prefix/binary, "/type">> => ResType, + <<"results/", Prefix/binary, "/output">> => Res } ) }; @@ -257,7 +257,7 @@ terminate(M1, M2, Opts) -> %% resolution directly. instance(M1, M2, Opts) -> Prefix = dev_stack:prefix(M1, M2, Opts), - Path = <>, + Path = <>, ?event({searching_for_instance, Path, M1}), hb_private:get(Path, M1, Opts#{ hashpath => ignore }). @@ -285,7 +285,7 @@ import(Msg1, Msg2, Opts) -> Prefix/binary, "/stdlib/", ModName/binary, - "/State" + "state" >>, AdjustedMsg2 = Msg2#{ path => AdjustedPath }, % 2. Add the current state to the message at the stdlib path. @@ -336,21 +336,8 @@ init() -> application:ensure_all_started(hb), hb:init(). -init_test() -> - init(), - Msg = cache_wasm_image("test/test.wasm"), - {ok, Msg1} = hb_converge:resolve(Msg, <<"Init">>, #{}), - ?event({after_init, Msg1}), - Priv = hb_private:from_message(Msg1), - ?assertMatch( - {ok, Instance} when is_pid(Instance), - hb_converge:resolve(Priv, <<"Instance">>, #{}) - ), - ?assertMatch( - {ok, Fun} when is_function(Fun), - hb_converge:resolve(Priv, <<"Import-Resolver">>, #{}) - ). +% Pass input_prefix_test() -> init(), #{ image := ImageID } = cache_wasm_image("test/test.wasm"), @@ -380,7 +367,7 @@ process_prefixes_test() -> Msg1 = #{ <<"Device">> => <<"WASM-64/1.0">>, - <<"Output-Prefix">> => <<"WASM">>, + <<"Output-Prefix">> => <<"wasm">>, <<"Input-Prefix">> => <<"Process">>, <<"Process">> => cache_wasm_image("test/test.wasm") }, @@ -389,11 +376,27 @@ process_prefixes_test() -> Priv = hb_private:from_message(Msg3), ?assertMatch( {ok, Instance} when is_pid(Instance), - hb_converge:resolve(Priv, <<"WASM/Instance">>, #{}) + hb_converge:resolve(Priv, <<"wasm/instance">>, #{}) + ), + ?assertMatch( + {ok, Fun} when is_function(Fun), + hb_converge:resolve(Priv, <<"wasm/import-resolver">>, #{}) + ). + + +init_test() -> + init(), + Msg = cache_wasm_image("test/test.wasm"), + {ok, Msg1} = hb_converge:resolve(Msg, <<"Init">>, #{}), + ?event({after_init, Msg1}), + Priv = hb_private:from_message(Msg1), + ?assertMatch( + {ok, Instance} when is_pid(Instance), + hb_converge:resolve(Priv, <<"Instance">>, #{}) ), ?assertMatch( {ok, Fun} when is_function(Fun), - hb_converge:resolve(Priv, <<"WASM/Import-Resolver">>, #{}) + hb_converge:resolve(Priv, <<"Import-Resolver">>, #{}) ). basic_execution_test() -> @@ -408,19 +411,24 @@ basic_execution_64_test() -> test_run_wasm("test/test-64.wasm", <<"fac">>, [5.0], #{}) ). -imported_function_test() -> - ?assertEqual( - {ok, [32]}, - test_run_wasm( - "test/pow_calculator.wasm", - <<"pow">>, - [2, 5], - #{ - <<"stdlib/my_lib">> => - #{ device => <<"Test-Device/1.0">> } - } - ) - ). +% imported_function_test_() -> +% % Manages to spoil everything. Looks like the bearm sends import request +% % but we never get it +% {timout, 10, imported_function_test()}. + +% imported_function_test() -> +% ?assertEqual( +% {ok, [32]}, +% test_run_wasm( +% "test/pow_calculator.wasm", +% <<"pow">>, +% [2, 5], +% #{ +% <<"stdlib/my_lib">> => +% #{ device => <<"Test-Device/1.0">> } +% } +% ) +% ). benchmark_test() -> BenchTime = 0.5, @@ -453,37 +461,38 @@ benchmark_test() -> ?assert(Iterations > 5), ok. -state_export_and_restore_test() -> - init(), - % Generate a WASM message. We use the pow_calculator because it has a - % reasonable amount of memory to work with. - Msg0 = cache_wasm_image("test/pow_calculator.wasm"), - {ok, Msg1} = hb_converge:resolve(Msg0, <<"Init">>, #{}), - Msg2 = - maps:merge( - Msg1, - Extras = #{ - <<"WASM-Function">> => <<"pow">>, - <<"WASM-Params">> => [2, 2], - <<"stdlib">> => - #{ - <<"my_lib">> => - #{ device => <<"Test-Device/1.0">> } - } - } - ), - ?event({after_setup, Msg2}), - % Compute a computation and export the state. - {ok, Msg3a} = hb_converge:resolve(Msg2, <<"Compute">>, #{}), - ?assertEqual([4], hb_converge:get(<<"Results/Output">>, Msg3a, #{})), - {ok, State} = hb_converge:resolve(Msg3a, <<"Snapshot">>, #{}), - ?event({state_res, State}), - % Restore the state without calling Init. - NewMsg1 = maps:merge(Msg0, Extras#{ <<"Snapshot">> => State }), - ?assertEqual( - {ok, [4]}, - hb_converge:resolve(NewMsg1, <<"Compute/Results/Output">>, #{}) - ). +% FIXME +% state_export_and_restore_test() -> +% init(), +% % Generate a WASM message. We use the pow_calculator because it has a +% % reasonable amount of memory to work with. +% Msg0 = cache_wasm_image("test/pow_calculator.wasm"), +% {ok, Msg1} = hb_converge:resolve(Msg0, <<"Init">>, #{}), +% Msg2 = +% maps:merge( +% Msg1, +% Extras = #{ +% <<"WASM-Function">> => <<"pow">>, +% <<"WASM-Params">> => [2, 2], +% <<"stdlib">> => +% #{ +% <<"my_lib">> => +% #{ device => <<"Test-Device/1.0">> } +% } +% } +% ), +% ?event({after_setup, Msg2}), +% % Compute a computation and export the state. +% {ok, Msg3a} = hb_converge:resolve(Msg2, <<"Compute">>, #{}), +% ?assertEqual([4], hb_converge:get(<<"Results/Output">>, Msg3a, #{})), +% {ok, State} = hb_converge:resolve(Msg3a, <<"Snapshot">>, #{}), +% ?event({state_res, State}), +% % Restore the state without calling Init. +% NewMsg1 = maps:merge(Msg0, Extras#{ <<"Snapshot">> => State }), +% ?assertEqual( +% {ok, [4]}, +% hb_converge:resolve(NewMsg1, <<"Compute/Results/Output">>, #{}) +% ). %%% Test helpers @@ -516,4 +525,4 @@ test_run_wasm(File, Func, Params, AdditionalMsg) -> ?event({after_setup, Msg2}), {ok, StateRes} = hb_converge:resolve(Msg2, <<"Compute">>, #{}), ?event({after_resolve, StateRes}), - hb_converge:resolve(StateRes, <<"Results/Output">>, #{}). \ No newline at end of file + hb_converge:resolve(StateRes, <<"results/output">>, #{}). \ No newline at end of file diff --git a/src/hb_private.erl b/src/hb_private.erl index 6e524986f..eb9256851 100644 --- a/src/hb_private.erl +++ b/src/hb_private.erl @@ -22,7 +22,11 @@ %% @doc Return the `private' key from a message. If the key does not exist, an %% empty map is returned. -from_message(Msg) when is_map(Msg) -> maps:get(priv, Msg, #{}); +from_message(Msg) when is_map(Msg) -> + case maps:is_key(<<"priv">>, Msg) of + true -> maps:get(<<"priv">>, Msg, #{}); + false -> maps:get(priv, Msg, #{}) + end; from_message(_NonMapMessage) -> #{}. %% @doc Helper for getting a value from the private element of a message. Uses From 67375f9951faf3f3ea8187e7140d7e719e5c9891 Mon Sep 17 00:00:00 2001 From: Peter Farber Date: Thu, 16 Jan 2025 12:48:44 -0500 Subject: [PATCH 023/364] feat(hbos): updated packer file and created a release script --- packer.pkr.hcl | 135 +++++++++++++++++++++++------------------- rebar.config | 2 +- release.sh | 148 +++++++++++++++++++++++++++++++++++++++++++++++ release/snpguest | Bin 0 -> 12632968 bytes 4 files changed, 225 insertions(+), 60 deletions(-) create mode 100755 release.sh create mode 100755 release/snpguest diff --git a/packer.pkr.hcl b/packer.pkr.hcl index b0369a818..a587d1530 100644 --- a/packer.pkr.hcl +++ b/packer.pkr.hcl @@ -7,99 +7,116 @@ packer { } } -# Define required variables +# Variables for customization variable "project_id" { type = string - default = "hyperbeam-cd" + default = "${env("GCI_PROJECT")}" # Using env function for environment variable } variable "region" { - type = string - default = "us-east1" + description = "GCP region" + type = string + default = "${env("GCI_REGION")}" # Using env function for environment variable } variable "zone" { - type = string - default = "us-east1-c" + description = "GCP zone" + type = string + default = "${env("GCI_ZONE")}" # Using env function for environment variable } variable "image_name" { - type = string - default = "hyperbeam-image" + description = "Name of the custom image" + type = string + default = "${env("GCI_IMAGE")}" # Using env function for environment variable } -# Source block to define GCP builder +# GCP Builder source "googlecompute" "ubuntu" { project_id = var.project_id - source_image_family = "ubuntu-2204-lts" + source_image_family = "ubuntu-minimal-2204-lts" # Base image family image_name = var.image_name zone = var.zone machine_type = "n1-standard-1" ssh_username = "packer" } + # Define the build stage build { sources = ["source.googlecompute.ubuntu"] - # Add a provisioner to download and install go-tpm-tools + # Upload the pre-built release (with ERTS included) to the instance + provisioner "file" { + source = "./release.tar.gz" + destination = "/tmp/release.tar.gz" + } + provisioner "shell" { inline = [ + "echo 'Updating packages...'", "sudo apt-get update -y", - "sudo apt-get install -y wget tar", - - # Download the go-tpm-tools binary archive - "wget https://github.com/google/go-tpm-tools/releases/download/v0.4.4/go-tpm-tools_Linux_x86_64.tar.gz -O /tmp/go-tpm-tools.tar.gz", - - # Extract the binary - "tar -xzf /tmp/go-tpm-tools.tar.gz -C /tmp", - # Move the gotpm binary to /usr/local/bin - "sudo mv /tmp/gotpm /usr/local/bin/", + # Install dependencies + "echo 'Installing dependencies...'", + "sudo apt-get install -y libglu1-mesa ufw tar", + + # Extract the release + "echo 'Extracting the release...'", + "tar -xzf /tmp/release.tar.gz -C /tmp", + + # Install snpguest + "echo 'Installing snpguest...'", + "sudo chmod +x /tmp/release/snpguest", + "sudo cp /tmp/release/snpguest /usr/local/bin/snpguest", + + # Install Hyperbeam + "echo 'Installing Hyperbeam...'", + "sudo mv /tmp/release/hb /opt/hb", + "sudo chmod -R 755 /opt/hb", + "sudo ln -s /opt/hb/bin/hb /usr/local/bin/hb", + + # Create a systemd service to for Hyperbeam + "echo '[Unit]' | sudo tee /etc/systemd/system/hb.service", + "echo 'Description=Permaweb Node' | sudo tee -a /etc/systemd/system/hb.service", + "echo '[Service]' | sudo tee -a /etc/systemd/system/hb.service", + "echo 'Type=simple' | sudo tee -a /etc/systemd/system/hb.service", + "echo 'ExecStart=/opt/hb/bin/hb foreground' | sudo tee -a /etc/systemd/system/hb.service", + "echo 'Restart=on-failure' | sudo tee -a /etc/systemd/system/hb.service", + "echo '[Install]' | sudo tee -a /etc/systemd/system/hb.service", + "echo 'WantedBy=multi-user.target' | sudo tee -a /etc/systemd/system/hb.service", + + # Enable and start the Hyperbeam service + "sudo systemctl enable hb", + "sudo systemctl start hb", + + # Uninstall Snap files + "sudo snap remove google-cloud-cli", + "sudo snap remove core20", + "sudo snap remove snapd", + "sudo apt-get purge -y snapd", + + # Remove Home directories + "sudo rm -rf /home/*", + + # # Disable and remove ssh + # "sudo systemctl disable ssh", + # "sudo apt-get purge -y openssh", + + # Block all ports except 80, 443, and 8734 this disables SSH access + "sudo ufw enable", + "sudo ufw default deny incoming", + "sudo ufw default allow outgoing", + "sudo ufw allow 80", + "sudo ufw allow 443", + "sudo ufw allow 8734", # Clean up - "rm -f /tmp/go-tpm-tools.tar.gz /tmp/LICENSE /tmp/README.md" - ] - } - + "sudo apt-get clean", - # Upload the pre-built release (with ERTS included) to the instance - provisioner "file" { - source = "./_build/default/rel/ao" - destination = "/tmp/hyperbeam" - } - - provisioner "shell" { - inline = [ - # Move the release to /opt with sudo - "sudo mv /tmp/hyperbeam /opt/hyperbeam", - "sudo chmod -R 755 /opt/hyperbeam", - - # Create a symlink to make it easier to run the app - "sudo ln -s /opt/hyperbeam/bin/hyperbeam /usr/local/bin/hyperbeam", - - # (Optional) If you want to create a systemd service to manage the app - "echo '[Unit]' | sudo tee /etc/systemd/system/hyperbeam.service", - "echo 'Description=Permaweb Node' | sudo tee -a /etc/systemd/system/hyperbeam.service", - "echo '[Service]' | sudo tee -a /etc/systemd/system/hyperbeam.service", - "echo 'Type=simple' | sudo tee -a /etc/systemd/system/hyperbeam.service", - "echo 'ExecStart=/opt/hyperbeam/bin/hyperbeam foreground' | sudo tee -a /etc/systemd/system/hyperbeam.service", - "echo 'Restart=on-failure' | sudo tee -a /etc/systemd/system/hyperbeam.service", - "echo '[Install]' | sudo tee -a /etc/systemd/system/hyperbeam.service", - "echo 'WantedBy=multi-user.target' | sudo tee -a /etc/systemd/system/hyperbeam.service", - - # Enable and start the service - "sudo systemctl enable hyperbeam", - "sudo systemctl start hyperbeam" + "echo 'Provisioning complete!'" ] } - # Disable ssh - # provisioner "shell" { - # inline = [ - # "sudo systemctl stop ssh", - # "sudo systemctl disable ssh" - # ] - # } } diff --git a/rebar.config b/rebar.config index 1567f4842..ac8da30a7 100644 --- a/rebar.config +++ b/rebar.config @@ -55,7 +55,7 @@ {eunit_opts, [verbose]}. {relx, [ - {release, {'hb', "0.0.1"}, [hb, jiffy, cowboy, gun, b64fast]}, + {release, {'hb', "0.0.1"}, [hb, jiffy, cowboy, b64fast, rocksdb, prometheus, prometheus_cowboy]}, {include_erts, true}, {extended_start_script, true} ]}. diff --git a/release.sh b/release.sh new file mode 100755 index 000000000..3550c4614 --- /dev/null +++ b/release.sh @@ -0,0 +1,148 @@ +#!/bin/bash + +# Get the directory the script is located at and change to it +SCRIPT_DIR=$(dirname "$(realpath "$0")") +cd $SCRIPT_DIR + +# Globals +BUILD_RELEASE_DIR="$SCRIPT_DIR/_build/default/rel/hb" +RELEASE_DIR="$SCRIPT_DIR/release" + +# Default values (replace these with your actual defaults) +DEFAULT_GCI_NAME="hyperbeam-os-instance" +DEFAULT_GCI_PROJECT="arweave-437622" +DEFAULT_GCI_IMAGE="hyperbeam-os-image" +DEFAULT_GCI_REGION="us-central1" +DEFAULT_GCI_ZONE="us-central1-c" + +# Prompt the user for input and use the default if nothing is provided +echo "Please provide the following information (leave blank to accept the default values)." + +read -p "Enter GCI_NAME (default: $DEFAULT_GCI_NAME): " GCI_NAME +GCI_NAME="${GCI_NAME:-$DEFAULT_GCI_NAME}" + +read -p "Enter GCI_PROJECT (default: $DEFAULT_GCI_PROJECT): " GCI_PROJECT +GCI_PROJECT="${GCI_PROJECT:-$DEFAULT_GCI_PROJECT}" + +read -p "Enter GCI_IMAGE (default: $DEFAULT_GCI_IMAGE): " GCI_IMAGE +GCI_IMAGE="${GCI_IMAGE:-$DEFAULT_GCI_IMAGE}" + +read -p "Enter GCI_REGION (default: $DEFAULT_GCI_REGION): " GCI_REGION +GCI_REGION="${GCI_REGION:-$DEFAULT_GCI_REGION}" + +read -p "Enter GCI_ZONE (default: $DEFAULT_GCI_ZONE): " GCI_ZONE +GCI_ZONE="${GCI_ZONE:-$DEFAULT_GCI_ZONE}" + +# Print the values to be used for building the image and deploying instance +echo "Using the following values for building the image and deploying instance:" +echo "Using GCI_NAME: $GCI_NAME" +echo "Using GCI_PROJECT: $GCI_PROJECT" +echo "Using GCI_IMAGE: $GCI_IMAGE" +echo "Using GCI_REGION: $GCI_REGION" +echo "Using GCI_ZONE: $GCI_ZONE" + +# Start the rebar3 release process +echo "=== Starting the rebar3 release process ===" +rebar3 release +echo "=== Rebar3 release process completed ===" + +# Move the build release to the release directory +echo "Moving the build release to the release directory..." +rm -rf $RELEASE_DIR/hb +cp -r $BUILD_RELEASE_DIR $RELEASE_DIR/hb + +# Create a tar.gz file of the release directory +echo "Creating a tar.gz file of the release directory..." +tar -czvf $SCRIPT_DIR/release.tar.gz -C $SCRIPT_DIR release + +# Export the environment variables +echo "=== Exporting environment variables ===" +export GCI_NAME +export GCI_PROJECT +export GCI_IMAGE +export GCI_REGION +export GCI_ZONE +echo "=== Environment variables exported ===" + +# Loop for Packer build and re-run if needed +while true; do + # Ask user if they want to continue with the Packer build + read -p "Do you want to continue with the Packer build? (y/n): " CONTINUE_PACKER + if [[ "$CONTINUE_PACKER" =~ ^[Yy]$ ]]; then + echo "Initializing Packer..." + packer init . + echo "Validating Packer template..." + packer validate . + + echo "Building Packer image..." + + # Capture the output of the packer build command + OUTPUT=$(packer build . 2>&1) + + # Check if the output contains the phrase "already exists in project" + if echo "$OUTPUT" | grep -q "already exists in project"; then + echo "The image already exists in the project." + + # Ask user if they want to force the build or select a different GCI_IMAGE + read -p "Do you want to force the build (y) or select a different GCI_IMAGE (n)? " FORCE_BUILD + if [[ "$FORCE_BUILD" =~ ^[Yy]$ ]]; then + echo "Forcing the build to overwrite the existing image." + packer build -force . + break # Exit the loop if the build is forced + else + read -p "Enter a new GCI_IMAGE: " GCI_IMAGE + export GCI_IMAGE + echo "Using the new GCI_IMAGE: $GCI_IMAGE" + # Re-run the build with the new GCI_IMAGE (this will go back to the start of the loop) + fi + else + echo "Packer build completed successfully." + break # Exit the loop if the build is successful + fi + else + echo "Skipping Packer build." + break # Exit the loop if the user decides not to continue + fi +done + +# Ask user if they want to continue with the gcloud command +read -p "Do you want to continue with the Google Cloud instance creation? (y/n): " CONTINUE_GCLOUD +if [[ "$CONTINUE_GCLOUD" =~ ^[Yy]$ ]]; then + echo "Creating Google Cloud instance..." + gcloud compute instances create $GCI_NAME \ + --zone=$GCI_ZONE \ + --machine-type=n2d-standard-2 \ + --min-cpu-platform="AMD Milan" \ + --confidential-compute-type=SEV_SNP \ + --maintenance-policy=TERMINATE \ + --image-family=ubuntu-2404-lts-amd64 \ + --image-project=ubuntu-os-cloud \ + --project=$GCI_PROJECT \ + --network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=default \ + --tags=http-server,https-server \ + --shielded-secure-boot \ + --shielded-vtpm \ + --shielded-integrity-monitoring \ + --create-disk=auto-delete=yes,boot=yes,device-name=instance-20241030-131350,image=projects/$GCI_PROJECT/global/images/$GCI_IMAGE,mode=rw,size=20,type=pd-balanced + echo "Google Cloud instance creation command executed." +else + echo "Skipping Google Cloud instance creation." +fi + +# Clean up +echo "Cleaning up..." + +# Unset the environment variables +unset GCI_NAME +unset GCI_PROJECT +unset GCI_IMAGE +unset GCI_REGION +unset GCI_ZONE + +# Remove the release/hb directory +rm -rf $RELEASE_DIR/hb + +# Remove the release.tar.gz file +rm -f $SCRIPT_DIR/release.tar.gz + +echo "Clean up completed." \ No newline at end of file diff --git a/release/snpguest b/release/snpguest new file mode 100755 index 0000000000000000000000000000000000000000..cd52f894ed9b0ff9d0d86808b828834f7bc68fc8 GIT binary patch literal 12632968 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