From 81991fcd8dbdc8165c857e1b7d7e1baa9ea5c0d4 Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Mon, 7 Jul 2025 15:12:48 +0200 Subject: [PATCH 01/37] oai moe --- convert_hf_to_gguf.py | 49 +++++++++ gguf-py/gguf/constants.py | 20 ++++ gguf-py/gguf/gguf_writer.py | 5 +- gguf-py/gguf/tensor_mapping.py | 5 + src/llama-arch.cpp | 21 ++++ src/llama-arch.h | 2 + src/llama-graph.cpp | 91 ++++++++++++++++ src/llama-graph.h | 22 ++++ src/llama-hparams.cpp | 10 ++ src/llama-hparams.h | 10 +- src/llama-model.cpp | 193 ++++++++++++++++++++++++++++++++- src/llama-model.h | 15 ++- 12 files changed, 433 insertions(+), 10 deletions(-) diff --git a/convert_hf_to_gguf.py b/convert_hf_to_gguf.py index dd80a4a05d5..50f4d449f87 100755 --- a/convert_hf_to_gguf.py +++ b/convert_hf_to_gguf.py @@ -6535,6 +6535,55 @@ def set_gguf_parameters(self): super().set_gguf_parameters() self.gguf_writer.add_audio_stack_factor(self.global_config["stack_factor"]) +@ModelBase.register("OpenaiForCausalLM") +class OpenaiMOEModel(TextModel): + model_arch = gguf.MODEL_ARCH.OPENAI_MOE + + def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iterable[tuple[str, Tensor]]: + del bid # unused + + if "sinks" in name: + name += ".weight" + + # correct naming for down_proj + if "down_proj" in name: + if name.endswith("_bias"): + name = name.replace("down_proj_bias", "down_proj.bias") + else: + name = name.replace("down_proj", "down_proj.weight") + data_torch = data_torch.transpose(-1, -2) + + # split the gate_up into gate and up + if "gate_up_proj" in name: + if name.endswith("_bias"): + name_up = name.replace("gate_up_proj_bias", "up_proj.bias") + name_gate = name.replace("gate_up_proj_bias", "gate_proj.bias") + dim_half = data_torch.shape[-1] // 2 + gate_proj_bias, up_proj_bias = data_torch.split(dim_half, dim=-1) + return [ + (self.map_tensor_name(name_gate), gate_proj_bias), + (self.map_tensor_name(name_up), up_proj_bias) + ] + else: + name_up = name.replace("gate_up_proj", "up_proj.weight") + name_gate = name.replace("gate_up_proj", "gate_proj.weight") + dim_half = data_torch.shape[-1] // 2 + gate_proj_weight, up_proj_weight = data_torch.transpose(-1, -2).split(dim_half, dim=-2) + return [ + (self.map_tensor_name(name_gate), gate_proj_weight), + (self.map_tensor_name(name_up), up_proj_weight) + ] + + return [(self.map_tensor_name(name), data_torch)] + + def set_vocab(self): + self._set_vocab_gpt2() # FOR TESTING ONLY!!! + + def set_gguf_parameters(self): + super().set_gguf_parameters() + self.gguf_writer.add_sliding_window(self.hparams["sliding_window"]) + self.gguf_writer.add_expert_feed_forward_length(self.hparams["intermediate_size"]) + ###### CONVERSION LOGIC ###### diff --git a/gguf-py/gguf/constants.py b/gguf-py/gguf/constants.py index c12609c6d9f..0b32edff3ef 100644 --- a/gguf-py/gguf/constants.py +++ b/gguf-py/gguf/constants.py @@ -357,6 +357,7 @@ class MODEL_ARCH(IntEnum): DOTS1 = auto() ARCEE = auto() ERNIE4_5 = auto() + OPENAI_MOE = auto() class VISION_PROJECTOR_TYPE(IntEnum): @@ -389,6 +390,7 @@ class MODEL_TENSOR(IntEnum): ATTN_OUT_NORM = auto() ATTN_POST_NORM = auto() ATTN_ROT_EMBD = auto() + ATTN_SINKS = auto() FFN_GATE_INP = auto() FFN_GATE_INP_SHEXP = auto() FFN_NORM = auto() @@ -660,6 +662,7 @@ class MODEL_TENSOR(IntEnum): MODEL_ARCH.DOTS1: "dots1", MODEL_ARCH.ARCEE: "arcee", MODEL_ARCH.ERNIE4_5: "ernie4_5", + MODEL_ARCH.OPENAI_MOE: "openai-moe", } VISION_PROJECTOR_TYPE_NAMES: dict[VISION_PROJECTOR_TYPE, str] = { @@ -690,6 +693,7 @@ class MODEL_TENSOR(IntEnum): MODEL_TENSOR.ATTN_V: "blk.{bid}.attn_v", MODEL_TENSOR.ATTN_OUT: "blk.{bid}.attn_output", MODEL_TENSOR.ATTN_ROT_EMBD: "blk.{bid}.attn_rot_embd", + MODEL_TENSOR.ATTN_SINKS: "blk.{bid}.attn_sinks", MODEL_TENSOR.ATTN_Q_NORM: "blk.{bid}.attn_q_norm", MODEL_TENSOR.ATTN_K_NORM: "blk.{bid}.attn_k_norm", MODEL_TENSOR.ATTN_OUT_NORM: "blk.{bid}.attn_output_norm", @@ -2211,6 +2215,22 @@ class MODEL_TENSOR(IntEnum): MODEL_TENSOR.FFN_DOWN, MODEL_TENSOR.FFN_UP, ], + MODEL_ARCH.OPENAI_MOE: [ + MODEL_TENSOR.TOKEN_EMBD, + MODEL_TENSOR.OUTPUT_NORM, + MODEL_TENSOR.OUTPUT, + MODEL_TENSOR.ATTN_NORM, + MODEL_TENSOR.ATTN_POST_NORM, + MODEL_TENSOR.ATTN_Q, + MODEL_TENSOR.ATTN_K, + MODEL_TENSOR.ATTN_V, + MODEL_TENSOR.ATTN_OUT, + MODEL_TENSOR.ATTN_SINKS, + MODEL_TENSOR.FFN_GATE_INP, + MODEL_TENSOR.FFN_GATE_EXP, + MODEL_TENSOR.FFN_DOWN_EXP, + MODEL_TENSOR.FFN_UP_EXP, + ], # TODO } diff --git a/gguf-py/gguf/gguf_writer.py b/gguf-py/gguf/gguf_writer.py index a7ecf3d3120..00b1e3f5056 100644 --- a/gguf-py/gguf/gguf_writer.py +++ b/gguf-py/gguf/gguf_writer.py @@ -138,8 +138,9 @@ def get_total_parameter_count(self) -> tuple[int, int, int, int]: size = prod(shape) if "_exps." in name: - expert_params += (size // shape[-3]) - expert_sum += shape[-3] + expert_count = shape[-2 if ".bias" in name else -3] + expert_params += (size // expert_count) + expert_sum += expert_count n_expert_tensors += 1 else: shared_params += size diff --git a/gguf-py/gguf/tensor_mapping.py b/gguf-py/gguf/tensor_mapping.py index 51634ef6bdd..05bae39c70d 100644 --- a/gguf-py/gguf/tensor_mapping.py +++ b/gguf-py/gguf/tensor_mapping.py @@ -264,6 +264,10 @@ class TensorNameMap: "transformer.h.{bid}.attn.rotary_emb.inv_freq", # codeshell ), + MODEL_TENSOR.ATTN_SINKS: ( + "model.layers.{bid}.self_attn.sinks", # openai-moe + ), + # Feed-forward norm MODEL_TENSOR.FFN_NORM: ( "gpt_neox.layers.{bid}.post_attention_layernorm", # gptneox @@ -303,6 +307,7 @@ class TensorNameMap: "model.layers.{bid}.block_sparse_moe.router.layer", # granitemoe "model.layers.{bid}.feed_forward.router", # llama4 "encoder.layers.{bid}.mlp.router.layer", # nomic-bert-moe + "model.layers.{bid}.mlp.router", # openai-moe ), MODEL_TENSOR.FFN_GATE_INP_SHEXP: ( diff --git a/src/llama-arch.cpp b/src/llama-arch.cpp index ab240543058..3e6c394d27a 100644 --- a/src/llama-arch.cpp +++ b/src/llama-arch.cpp @@ -78,6 +78,7 @@ static const std::map LLM_ARCH_NAMES = { { LLM_ARCH_DOTS1, "dots1" }, { LLM_ARCH_ARCEE, "arcee" }, { LLM_ARCH_ERNIE4_5, "ernie4_5" }, + { LLM_ARCH_OPENAI_MOE, "openai-moe" }, { LLM_ARCH_UNKNOWN, "(unknown)" }, }; @@ -1694,6 +1695,25 @@ static const std::map> LLM_TENSOR_N { LLM_TENSOR_FFN_UP, "blk.%d.ffn_up" }, }, }, + { + LLM_ARCH_OPENAI_MOE, + { + { LLM_TENSOR_TOKEN_EMBD, "token_embd" }, + { LLM_TENSOR_OUTPUT_NORM, "output_norm" }, + { LLM_TENSOR_OUTPUT, "output" }, + { LLM_TENSOR_ATTN_NORM, "blk.%d.attn_norm" }, + { LLM_TENSOR_ATTN_POST_NORM, "blk.%d.post_attention_norm" }, + { LLM_TENSOR_ATTN_Q, "blk.%d.attn_q" }, + { LLM_TENSOR_ATTN_K, "blk.%d.attn_k" }, + { LLM_TENSOR_ATTN_V, "blk.%d.attn_v" }, + { LLM_TENSOR_ATTN_OUT, "blk.%d.attn_output" }, + { LLM_TENSOR_ATTN_SINKS, "blk.%d.attn_sinks" }, + { LLM_TENSOR_FFN_GATE_INP, "blk.%d.ffn_gate_inp" }, + { LLM_TENSOR_FFN_GATE_EXPS, "blk.%d.ffn_gate_exps" }, + { LLM_TENSOR_FFN_DOWN_EXPS, "blk.%d.ffn_down_exps" }, + { LLM_TENSOR_FFN_UP_EXPS, "blk.%d.ffn_up_exps" }, + }, + }, { LLM_ARCH_UNKNOWN, { @@ -1733,6 +1753,7 @@ static const std::map LLM_TENSOR_INFOS = { {LLM_TENSOR_ATTN_KV_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, {LLM_TENSOR_ATTN_K_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, {LLM_TENSOR_ATTN_V_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, + {LLM_TENSOR_ATTN_SINKS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_CONCAT}}, {LLM_TENSOR_DEC_ATTN_Q, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, {LLM_TENSOR_DEC_ATTN_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, {LLM_TENSOR_DEC_ATTN_V, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, diff --git a/src/llama-arch.h b/src/llama-arch.h index b769831dff5..177e89e9cd0 100644 --- a/src/llama-arch.h +++ b/src/llama-arch.h @@ -82,6 +82,7 @@ enum llm_arch { LLM_ARCH_DOTS1, LLM_ARCH_ARCEE, LLM_ARCH_ERNIE4_5, + LLM_ARCH_OPENAI_MOE, LLM_ARCH_UNKNOWN, }; @@ -249,6 +250,7 @@ enum llm_tensor { LLM_TENSOR_ATTN_OUT_NORM, LLM_TENSOR_ATTN_POST_NORM, LLM_TENSOR_ATTN_ROT_EMBD, + LLM_TENSOR_ATTN_SINKS, LLM_TENSOR_FFN_GATE_INP, LLM_TENSOR_FFN_GATE_INP_SHEXP, LLM_TENSOR_FFN_NORM, diff --git a/src/llama-graph.cpp b/src/llama-graph.cpp index 7f0e8c67f13..ad99f000464 100644 --- a/src/llama-graph.cpp +++ b/src/llama-graph.cpp @@ -618,6 +618,8 @@ ggml_tensor * llm_graph_context::build_ffn( cur = ggml_reglu(ctx0, cur); cb(cur, "ffn_reglu", il); } break; + default: + GGML_ABORT("fatal error"); } if (gate && type_gate == LLM_FFN_PAR) { @@ -664,6 +666,43 @@ ggml_tensor * llm_graph_context::build_moe_ffn( float w_scale, llama_expert_gating_func_type gating_op, int il) const { + return build_moe_ffn( + cur, + gate_inp, /* gate_inp_b */ nullptr, + up_exps, /* up_exps_b */ nullptr, + gate_exps, /* gate_exps_b */ nullptr, + down_exps, /* down_exps_b */ nullptr, + exp_probs_b, + n_expert, + n_expert_used, + type_op, + norm_w, + scale_w, + w_scale, + gating_op, + il + ); +} + +ggml_tensor * llm_graph_context::build_moe_ffn( + ggml_tensor * cur, + ggml_tensor * gate_inp, + ggml_tensor * gate_inp_b, + ggml_tensor * up_exps, + ggml_tensor * up_exps_b, + ggml_tensor * gate_exps, + ggml_tensor * gate_exps_b, + ggml_tensor * down_exps, + ggml_tensor * down_exps_b, + ggml_tensor * exp_probs_b, + int64_t n_expert, + int64_t n_expert_used, + llm_ffn_op_type type_op, + bool norm_w, + bool scale_w, + float w_scale, + llama_expert_gating_func_type gating_op, + int il) const { const int64_t n_embd = cur->ne[0]; const int64_t n_tokens = cur->ne[1]; const bool weight_before_ffn = arch == LLM_ARCH_LLAMA4; // for llama4, we apply the sigmoid-ed weights before the FFN @@ -671,6 +710,11 @@ ggml_tensor * llm_graph_context::build_moe_ffn( ggml_tensor * logits = build_lora_mm(gate_inp, cur); // [n_expert, n_tokens] cb(logits, "ffn_moe_logits", il); + if (gate_inp_b) { + logits = ggml_add(ctx0, logits, gate_inp_b); + cb(logits, "ffn_moe_logits_biased", il); + } + ggml_tensor * probs = nullptr; switch (gating_op) { case LLAMA_EXPERT_GATING_FUNC_TYPE_SOFTMAX: @@ -681,6 +725,10 @@ ggml_tensor * llm_graph_context::build_moe_ffn( { probs = ggml_sigmoid(ctx0, logits); // [n_expert, n_tokens] } break; + case LLAMA_EXPERT_GATING_FUNC_TYPE_SOFTMAX_WEIGHT: + { + probs = logits; // [n_expert, n_tokens] + } break; default: GGML_ABORT("fatal error"); } @@ -709,6 +757,13 @@ ggml_tensor * llm_graph_context::build_moe_ffn( ggml_reshape_3d(ctx0, probs, 1, n_expert, n_tokens), selected_experts); // [1, n_expert_used, n_tokens] cb(weights, "ffn_moe_weights", il); + if (gating_op == LLAMA_EXPERT_GATING_FUNC_TYPE_SOFTMAX_WEIGHT) { + weights = ggml_reshape_2d(ctx0, weights, n_expert_used, n_tokens); + weights = ggml_soft_max(ctx0, weights); // [n_expert_used, n_tokens] + weights = ggml_reshape_3d(ctx0, weights, 1, n_expert_used, n_tokens); + cb(weights, "ffn_moe_weights_softmax", il); + } + if (norm_w) { weights = ggml_reshape_2d(ctx0, weights, n_expert_used, n_tokens); @@ -737,6 +792,13 @@ ggml_tensor * llm_graph_context::build_moe_ffn( ggml_tensor * up = build_lora_mm_id(up_exps, cur, selected_experts); // [n_ff, n_expert_used, n_tokens] cb(up, "ffn_moe_up", il); + if (up_exps_b) { + up_exps_b = ggml_repeat_4d(ctx0, up_exps_b, + up_exps_b->ne[0], up_exps_b->ne[1], selected_experts->ne[1], 1); + up = ggml_add(ctx0, up, ggml_get_rows(ctx0, up_exps_b, selected_experts)); + cb(up, "ffn_moe_up_biased", il); + } + ggml_tensor * experts = nullptr; if (gate_exps) { cur = build_lora_mm_id(gate_exps, cur, selected_experts); // [n_ff, n_expert_used, n_tokens] @@ -745,6 +807,13 @@ ggml_tensor * llm_graph_context::build_moe_ffn( cur = up; } + if (gate_exps_b) { + gate_exps_b = ggml_repeat_4d(ctx0, gate_exps_b, + gate_exps_b->ne[0], gate_exps_b->ne[1], selected_experts->ne[1], 1); + cur = ggml_add(ctx0, cur, ggml_get_rows(ctx0, gate_exps_b, selected_experts)); + cb(cur, "ffn_moe_gate_biased", il); + } + switch (type_op) { case LLM_FFN_SILU: if (gate_exps) { @@ -762,6 +831,21 @@ ggml_tensor * llm_graph_context::build_moe_ffn( cur = ggml_gelu(ctx0, cur); cb(cur, "ffn_moe_gelu", il); } break; + case LLM_FFN_SWIGLU_OAI_MOE: + { + // ref python code: (x_glu = gate ; x_linear = up) + // out_glu = x_glu * torch.sigmoid(alpha * x_glu) + // return out_glu * (x_linear + 1) + constexpr float alpha = 1.702f; + ggml_tensor * tmp = ggml_sigmoid(ctx0, ggml_scale(ctx0, cur, alpha)); + cur = ggml_mul(ctx0, cur, tmp); + cb(cur, "ffn_moe_swiglu", il); + + // add extra bias of 1.0 to the up tensor + ggml_tensor * one = ggml_new_tensor_1d(ctx0, GGML_TYPE_F32, 1); + one = ggml_cos(ctx0, ggml_scale(ctx0, one, 0.0f)); + up = ggml_add(ctx0, up, one); + } break; default: GGML_ABORT("fatal error"); } @@ -769,6 +853,13 @@ ggml_tensor * llm_graph_context::build_moe_ffn( experts = build_lora_mm_id(down_exps, cur, selected_experts); // [n_embd, n_expert_used, n_tokens] cb(experts, "ffn_moe_down", il); + if (down_exps_b) { + down_exps_b = ggml_repeat_4d(ctx0, down_exps_b, + down_exps_b->ne[0], down_exps_b->ne[1], selected_experts->ne[1], 1); + experts = ggml_add(ctx0, experts, ggml_get_rows(ctx0, down_exps_b, selected_experts)); + cb(experts, "ffn_moe_down_biased", il); + } + if (!weight_before_ffn) { experts = ggml_mul(ctx0, experts, weights); cb(cur, "ffn_moe_weighted", il); diff --git a/src/llama-graph.h b/src/llama-graph.h index 7bdf656768a..51c939b0484 100644 --- a/src/llama-graph.h +++ b/src/llama-graph.h @@ -39,6 +39,7 @@ enum llm_ffn_op_type { LLM_FFN_SWIGLU, LLM_FFN_GEGLU, LLM_FFN_REGLU, + LLM_FFN_SWIGLU_OAI_MOE, }; enum llm_ffn_gate_type { @@ -547,6 +548,7 @@ struct llm_graph_context { llm_ffn_gate_type type_gate, int il) const; + // build MoE FFN without bias tensors ggml_tensor * build_moe_ffn( ggml_tensor * cur, ggml_tensor * gate_inp, @@ -563,6 +565,26 @@ struct llm_graph_context { llama_expert_gating_func_type gating_op, int il) const; + ggml_tensor * build_moe_ffn( + ggml_tensor * cur, + ggml_tensor * gate_inp, + ggml_tensor * gate_inp_b, + ggml_tensor * up_exps, + ggml_tensor * up_exps_b, + ggml_tensor * gate_exps, + ggml_tensor * gate_exps_b, + ggml_tensor * down_exps, + ggml_tensor * down_exps_b, + ggml_tensor * exp_probs_b, + int64_t n_expert, + int64_t n_expert_used, + llm_ffn_op_type type_op, + bool norm_w, + bool scale_w, + float w_scale, + llama_expert_gating_func_type gating_op, + int il) const; + // // inputs // diff --git a/src/llama-hparams.cpp b/src/llama-hparams.cpp index 86c814d51b9..c7b0a290d7f 100644 --- a/src/llama-hparams.cpp +++ b/src/llama-hparams.cpp @@ -18,6 +18,16 @@ bool llama_hparams::is_swa_any() const { return false; } +bool llama_hparams::is_swa_all() const { + for (uint32_t il = 0; il < n_layer; ++il) { + if (!swa_layers[il]) { + return false; + } + } + + return true; +} + uint32_t llama_hparams::n_head(uint32_t il) const { if (il < n_layer) { return n_head_arr[il]; diff --git a/src/llama-hparams.h b/src/llama-hparams.h index 476d0a5eade..f4d0e306398 100644 --- a/src/llama-hparams.h +++ b/src/llama-hparams.h @@ -9,9 +9,10 @@ #define LLAMA_MAX_EXPERTS 256 // DeepSeekV3 enum llama_expert_gating_func_type { - LLAMA_EXPERT_GATING_FUNC_TYPE_NONE = 0, - LLAMA_EXPERT_GATING_FUNC_TYPE_SOFTMAX = 1, - LLAMA_EXPERT_GATING_FUNC_TYPE_SIGMOID = 2, + LLAMA_EXPERT_GATING_FUNC_TYPE_NONE = 0, + LLAMA_EXPERT_GATING_FUNC_TYPE_SOFTMAX = 1, + LLAMA_EXPERT_GATING_FUNC_TYPE_SIGMOID = 2, + LLAMA_EXPERT_GATING_FUNC_TYPE_SOFTMAX_WEIGHT = 3, // applied to the router weights instead of the logits }; enum llama_swa_type { @@ -175,6 +176,9 @@ struct llama_hparams { // return true if one of the layers is SWA bool is_swa_any() const; + // return true if all layers are SWA + bool is_swa_all() const; + uint32_t n_head(uint32_t il = 0) const; uint32_t n_head_kv(uint32_t il = 0) const; diff --git a/src/llama-model.cpp b/src/llama-model.cpp index 0573c5bcea0..ff568e2964d 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -251,6 +251,12 @@ static bool weight_buft_supported(const llama_hparams & hparams, ggml_tensor * w ggml_tensor * b = ggml_new_tensor_4d(ctx, GGML_TYPE_F32, n_embd, w->ne[1], 1, 1); op_tensor = ggml_im2col(ctx, w, b, 1, 0, 0, 0, 1, 0, false, GGML_TYPE_F16); } break; + case GGML_OP_CONCAT: + { + ggml_tensor * a = ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 16, 16); + ggml_tensor * b = ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 16, 16); + op_tensor = ggml_concat(ctx, a, b, 0); + } break; default: GGML_ABORT("%s: missing test for op %s for tensor %s", __func__, ggml_op_name(op), w->name); } @@ -1549,6 +1555,17 @@ void llama_model::load_hparams(llama_model_loader & ml) { default: type = LLM_TYPE_UNKNOWN; } } break; + case LLM_ARCH_OPENAI_MOE: + { + ml.get_key(LLM_KV_ATTENTION_LAYERNORM_RMS_EPS, hparams.f_norm_rms_eps); + ml.get_key(LLM_KV_EXPERT_FEED_FORWARD_LENGTH, hparams.n_ff_exp); + ml.get_key(LLM_KV_ATTENTION_SLIDING_WINDOW, hparams.n_swa); + + hparams.swa_type = LLAMA_SWA_TYPE_STANDARD; + hparams.set_swa_pattern(0); // all layers are SWA + + // TODO: switch (hparams.n_layer) + } break; default: throw std::runtime_error("unsupported model architecture"); } @@ -4475,6 +4492,46 @@ bool llama_model::load_tensors(llama_model_loader & ml) { layer.ffn_up = create_tensor(tn(LLM_TENSOR_FFN_UP, "weight", i), {n_embd, n_ff}, 0); } } break; + case LLM_ARCH_OPENAI_MOE: + { + const int64_t n_ff_exp = hparams.n_ff_exp; + + tok_embd = create_tensor(tn(LLM_TENSOR_TOKEN_EMBD, "weight"), {n_embd, n_vocab}, 0); + + // output + output_norm = create_tensor(tn(LLM_TENSOR_OUTPUT_NORM, "weight"), {n_embd}, 0); + output = create_tensor(tn(LLM_TENSOR_OUTPUT, "weight"), {n_embd, n_vocab}, 0); + + for (int i = 0; i < n_layer; ++i) { + auto & layer = layers[i]; + + layer.attn_norm = create_tensor(tn(LLM_TENSOR_ATTN_NORM, "weight", i), {n_embd}, 0); + layer.attn_post_norm = create_tensor(tn(LLM_TENSOR_ATTN_POST_NORM, "weight", i), {n_embd}, 0); + + layer.wq = create_tensor(tn(LLM_TENSOR_ATTN_Q, "weight", i), {n_embd, n_head * n_rot}, 0); + layer.wk = create_tensor(tn(LLM_TENSOR_ATTN_K, "weight", i), {n_embd, n_head_kv * n_rot}, 0); + layer.wv = create_tensor(tn(LLM_TENSOR_ATTN_V, "weight", i), {n_embd, n_head_kv * n_rot}, 0); + layer.wo = create_tensor(tn(LLM_TENSOR_ATTN_OUT, "weight", i), {n_head * n_rot, n_embd}, 0); + + layer.attn_sinks = create_tensor(tn(LLM_TENSOR_ATTN_SINKS, "weight", i), {n_head}, 0); + + layer.ffn_gate_inp = create_tensor(tn(LLM_TENSOR_FFN_GATE_INP, "weight", i), { n_embd, n_expert}, 0); + layer.ffn_gate_exps = create_tensor(tn(LLM_TENSOR_FFN_GATE_EXPS, "weight", i), { n_embd, n_ff_exp, n_expert}, 0); + layer.ffn_down_exps = create_tensor(tn(LLM_TENSOR_FFN_DOWN_EXPS, "weight", i), {n_ff_exp, n_embd, n_expert}, 0); + layer.ffn_up_exps = create_tensor(tn(LLM_TENSOR_FFN_UP_EXPS, "weight", i), { n_embd, n_ff_exp, n_expert}, 0); + + // bias + layer.bq = create_tensor(tn(LLM_TENSOR_ATTN_Q, "bias", i), {n_head * n_rot}, 0); + layer.bk = create_tensor(tn(LLM_TENSOR_ATTN_K, "bias", i), {n_head_kv * n_rot}, 0); + layer.bv = create_tensor(tn(LLM_TENSOR_ATTN_V, "bias", i), {n_head_kv * n_rot}, 0); + layer.bo = create_tensor(tn(LLM_TENSOR_ATTN_OUT, "bias", i), {n_embd}, 0); + + layer.ffn_gate_inp_b = create_tensor(tn(LLM_TENSOR_FFN_GATE_INP, "bias", i), {n_expert}, 0); + layer.ffn_gate_exps_b = create_tensor(tn(LLM_TENSOR_FFN_GATE_EXPS, "bias", i), {n_ff_exp, n_expert}, 0); + layer.ffn_down_exps_b = create_tensor(tn(LLM_TENSOR_FFN_DOWN_EXPS, "bias", i), { n_embd, n_expert}, 0); + layer.ffn_up_exps_b = create_tensor(tn(LLM_TENSOR_FFN_UP_EXPS, "bias", i), {n_ff_exp, n_expert}, 0); + } + } break; default: throw std::runtime_error("unknown architecture"); } @@ -4774,7 +4831,7 @@ void llama_model::print_info() const { LLAMA_LOG_INFO("%s: n_ff_shexp = %d\n", __func__, hparams.n_ff_shexp); } - if (arch == LLM_ARCH_QWEN3MOE) { + if (arch == LLM_ARCH_QWEN3MOE || arch == LLM_ARCH_OPENAI_MOE) { LLAMA_LOG_INFO("%s: n_ff_exp = %d\n", __func__, hparams.n_ff_exp); } @@ -14660,6 +14717,135 @@ struct llm_build_arcee : public llm_graph_context { } }; +struct llm_build_openai_moe_iswa : public llm_graph_context { + llm_build_openai_moe_iswa(const llama_model & model, const llm_graph_params & params, ggml_cgraph * gf) : llm_graph_context(params) { + ggml_tensor * cur; + ggml_tensor * inpL; + + inpL = build_inp_embd(model.tok_embd); + + // inp_pos - contains the positions + ggml_tensor * inp_pos = build_inp_pos(); + + auto * inp_attn = build_attn_inp_kv_unified_iswa(); + + for (int il = 0; il < n_layer; ++il) { + ggml_tensor * inpSA = inpL; + + // norm + cur = build_norm(inpL, + model.layers[il].attn_norm, nullptr, + LLM_NORM_RMS, il); + cb(cur, "attn_norm", il); + + // self-attention + { + // compute Q and K and RoPE them + ggml_tensor * Qcur = build_lora_mm(model.layers[il].wq, cur); + cb(Qcur, "Qcur", il); + if (model.layers[il].bq) { + Qcur = ggml_add(ctx0, Qcur, model.layers[il].bq); + cb(Qcur, "Qcur", il); + } + + ggml_tensor * Kcur = build_lora_mm(model.layers[il].wk, cur); + cb(Kcur, "Kcur", il); + if (model.layers[il].bk) { + Kcur = ggml_add(ctx0, Kcur, model.layers[il].bk); + cb(Kcur, "Kcur", il); + } + + ggml_tensor * Vcur = build_lora_mm(model.layers[il].wv, cur); + cb(Vcur, "Vcur", il); + if (model.layers[il].bv) { + Vcur = ggml_add(ctx0, Vcur, model.layers[il].bv); + cb(Vcur, "Vcur", il); + } + + Qcur = ggml_reshape_3d(ctx0, Qcur, n_rot, n_head, n_tokens); + Kcur = ggml_reshape_3d(ctx0, Kcur, n_rot, n_head_kv, n_tokens); + Vcur = ggml_reshape_3d(ctx0, Vcur, n_rot, n_head_kv, n_tokens); + + Qcur = ggml_rope_ext( + ctx0, Qcur, inp_pos, nullptr, + n_rot, rope_type, n_ctx_orig, freq_base, freq_scale, + ext_factor, attn_factor, beta_fast, beta_slow + ); + + Kcur = ggml_rope_ext( + ctx0, Kcur, inp_pos, nullptr, + n_rot, rope_type, n_ctx_orig, freq_base, freq_scale, + ext_factor, attn_factor, beta_fast, beta_slow + ); + + cb(Qcur, "Qcur", il); + cb(Kcur, "Kcur", il); + cb(Vcur, "Vcur", il); + + cur = build_attn(inp_attn, gf, + model.layers[il].wo, model.layers[il].bo, + Qcur, Kcur, Vcur, nullptr, nullptr, 1.0f/sqrtf(float(n_rot)), il); + cb(cur, "attn_out", il); + } + + if (il == n_layer - 1) { + // skip computing output for unused tokens + ggml_tensor * inp_out_ids = build_inp_out_ids(); + cur = ggml_get_rows(ctx0, cur, inp_out_ids); + inpSA = ggml_get_rows(ctx0, inpSA, inp_out_ids); + } + + ggml_tensor * ffn_inp = ggml_add(ctx0, cur, inpSA); + cb(ffn_inp, "ffn_inp", il); + + cur = ffn_inp; + cur = build_norm(cur, + model.layers[il].attn_post_norm, nullptr, + LLM_NORM_RMS, il); + cb(cur, "attn_post_norm", il); + + // MoE branch + cur = build_moe_ffn(cur, + model.layers[il].ffn_gate_inp, model.layers[il].ffn_gate_inp_b, + model.layers[il].ffn_up_exps, model.layers[il].ffn_up_exps_b, + model.layers[il].ffn_gate_exps, model.layers[il].ffn_gate_exps_b, + model.layers[il].ffn_down_exps, model.layers[il].ffn_down_exps_b, + nullptr, + n_expert, n_expert_used, + LLM_FFN_SWIGLU_OAI_MOE, false, + false, 0.0, + LLAMA_EXPERT_GATING_FUNC_TYPE_SOFTMAX_WEIGHT, + il); + cb(cur, "ffn_moe_out", il); + + cur = ggml_add(ctx0, cur, ffn_inp); + + cur = build_cvec(cur, il); + cb(cur, "l_out", il); + + // input for next layer + inpL = cur; + } + + cur = inpL; + + cur = build_norm(cur, + model.output_norm, NULL, + LLM_NORM_RMS, -1); + + cb(cur, "result_norm", -1); + res->t_embd = cur; + + // lm_head + cur = build_lora_mm(model.output, cur); + + cb(cur, "result_output", -1); + res->t_logits = cur; + + ggml_build_forward_expand(gf, cur); + } +}; + llama_memory_i * llama_model::create_memory(const llama_memory_params & params, llama_cparams & cparams) const { llama_memory_i * res; @@ -15040,6 +15226,10 @@ llm_graph_result_ptr llama_model::build_graph( { llm = std::make_unique(*this, params, gf); } break; + case LLM_ARCH_OPENAI_MOE: + { + llm = std::make_unique(*this, params, gf); + } break; default: GGML_ABORT("fatal error"); } @@ -15193,6 +15383,7 @@ llama_rope_type llama_model_rope_type(const llama_model * model) { case LLM_ARCH_NEO_BERT: case LLM_ARCH_ARCEE: case LLM_ARCH_ERNIE4_5: + case LLM_ARCH_OPENAI_MOE: return LLAMA_ROPE_TYPE_NORM; // the pairs of head values are offset by n_rot/2 diff --git a/src/llama-model.h b/src/llama-model.h index 979fff62045..900bd18ab6c 100644 --- a/src/llama-model.h +++ b/src/llama-model.h @@ -225,10 +225,14 @@ struct llama_layer { struct ggml_tensor * ffn_up_enc = nullptr; // ff MoE - struct ggml_tensor * ffn_gate_inp = nullptr; - struct ggml_tensor * ffn_gate_exps = nullptr; - struct ggml_tensor * ffn_down_exps = nullptr; - struct ggml_tensor * ffn_up_exps = nullptr; + struct ggml_tensor * ffn_gate_inp = nullptr; + struct ggml_tensor * ffn_gate_exps = nullptr; + struct ggml_tensor * ffn_down_exps = nullptr; + struct ggml_tensor * ffn_up_exps = nullptr; + struct ggml_tensor * ffn_gate_inp_b = nullptr; + struct ggml_tensor * ffn_gate_exps_b = nullptr; + struct ggml_tensor * ffn_down_exps_b = nullptr; + struct ggml_tensor * ffn_up_exps_b = nullptr; // ff shared expert (shexp) struct ggml_tensor * ffn_gate_inp_shexp = nullptr; @@ -333,6 +337,9 @@ struct llama_layer { struct ggml_tensor * laurel_r = nullptr; struct ggml_tensor * laurel_post_norm = nullptr; + // openai-moe + struct ggml_tensor * attn_sinks = nullptr; + struct llama_layer_posnet posnet; struct llama_layer_convnext convnext; From 917f9233a27bc15c7c4b1817312ba95264d06d51 Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Mon, 7 Jul 2025 16:53:21 +0200 Subject: [PATCH 02/37] compat with new checkpoint --- convert_hf_to_gguf.py | 6 +++--- src/llama-model.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/convert_hf_to_gguf.py b/convert_hf_to_gguf.py index 50f4d449f87..d41bb2ff348 100755 --- a/convert_hf_to_gguf.py +++ b/convert_hf_to_gguf.py @@ -6535,8 +6535,8 @@ def set_gguf_parameters(self): super().set_gguf_parameters() self.gguf_writer.add_audio_stack_factor(self.global_config["stack_factor"]) -@ModelBase.register("OpenaiForCausalLM") -class OpenaiMOEModel(TextModel): +@ModelBase.register("OpenAIMoeForCausalLM") +class OpenAIMoeModel(TextModel): model_arch = gguf.MODEL_ARCH.OPENAI_MOE def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iterable[tuple[str, Tensor]]: @@ -6577,7 +6577,7 @@ def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iter return [(self.map_tensor_name(name), data_torch)] def set_vocab(self): - self._set_vocab_gpt2() # FOR TESTING ONLY!!! + self._set_vocab_gpt2() def set_gguf_parameters(self): super().set_gguf_parameters() diff --git a/src/llama-model.cpp b/src/llama-model.cpp index ff568e2964d..a83664302d5 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -1562,7 +1562,7 @@ void llama_model::load_hparams(llama_model_loader & ml) { ml.get_key(LLM_KV_ATTENTION_SLIDING_WINDOW, hparams.n_swa); hparams.swa_type = LLAMA_SWA_TYPE_STANDARD; - hparams.set_swa_pattern(0); // all layers are SWA + hparams.set_swa_pattern(2); // TODO: switch (hparams.n_layer) } break; From a4ab8693628361ca38c6734beba761c78d7d1021 Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Mon, 7 Jul 2025 18:16:43 +0200 Subject: [PATCH 03/37] add attn sink impl --- src/llama-model.cpp | 112 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 110 insertions(+), 2 deletions(-) diff --git a/src/llama-model.cpp b/src/llama-model.cpp index a83664302d5..181b6db05ad 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -14782,9 +14782,15 @@ struct llm_build_openai_moe_iswa : public llm_graph_context { cb(Kcur, "Kcur", il); cb(Vcur, "Vcur", il); - cur = build_attn(inp_attn, gf, + // cur = build_attn(inp_attn, gf, + // model.layers[il].wo, model.layers[il].bo, + // Qcur, Kcur, Vcur, nullptr, nullptr, 1.0f/sqrtf(float(n_rot)), il); + + ggml_tensor * sink = model.layers[il].attn_sinks; + cur = build_attn_sink(inp_attn, gf, model.layers[il].wo, model.layers[il].bo, - Qcur, Kcur, Vcur, nullptr, nullptr, 1.0f/sqrtf(float(n_rot)), il); + Qcur, Kcur, Vcur, sink, 1.0f/sqrtf(float(n_rot)), il); + cb(cur, "attn_out", il); } @@ -14844,6 +14850,108 @@ struct llm_build_openai_moe_iswa : public llm_graph_context { ggml_build_forward_expand(gf, cur); } + + // TODO @ngxson : this is a hack + ggml_tensor * build_attn_sink( + llm_graph_input_attn_kv_unified_iswa * inp, + ggml_cgraph * gf, + ggml_tensor * wo, + ggml_tensor * wo_b, + ggml_tensor * q_cur, + ggml_tensor * k_cur, + ggml_tensor * v_cur, + ggml_tensor * sink, // [n_rot] + float kq_scale, + int il) const { + // these nodes are added to the graph together so that they are not reordered + // by doing so, the number of splits in the graph is reduced + ggml_build_forward_expand(gf, q_cur); + + if (k_cur) { + ggml_build_forward_expand(gf, k_cur); + } + + if (v_cur) { + ggml_build_forward_expand(gf, v_cur); + } + + const auto * mctx_iswa = static_cast(mctx); + + const bool is_swa = hparams.is_swa(il); + + const auto * mctx_cur = is_swa ? mctx_iswa->get_swa() : mctx_iswa->get_base(); + + // optionally store to KV cache + if (k_cur) { + const auto & k_idxs = is_swa ? inp->get_k_idxs_swa() : inp->get_k_idxs(); + + ggml_build_forward_expand(gf, mctx_cur->cpy_k(ctx0, k_cur, k_idxs, il)); + } + + if (v_cur) { + const auto & v_idxs = is_swa ? inp->get_v_idxs_swa() : inp->get_v_idxs(); + + ggml_build_forward_expand(gf, mctx_cur->cpy_v(ctx0, v_cur, v_idxs, il)); + } + + const auto & kq_mask = is_swa ? inp->get_kq_mask_swa() : inp->get_kq_mask(); + + ggml_tensor * q = q_cur; + ggml_tensor * k = mctx_cur->get_k(ctx0, il); + ggml_tensor * v = mctx_cur->get_v(ctx0, il); + + // attn implementation + ggml_tensor * cur = nullptr; + { + q = ggml_permute(ctx0, q, 0, 2, 1, 3); + k = ggml_permute(ctx0, k, 0, 2, 1, 3); + v = ggml_permute(ctx0, v, 0, 2, 1, 3); + + ggml_tensor * kq = ggml_mul_mat(ctx0, k, q); + ggml_mul_mat_set_prec(kq, GGML_PREC_F32); + + // !! ATTN SINK !! + ggml_tensor * kq_mask_v = ggml_view_2d(ctx0, kq_mask, + kq_mask->ne[0], n_tokens, + ggml_row_size(kq_mask->type, kq_mask->ne[0]), 0); + kq = ggml_add(ctx0, kq, kq_mask_v); + kq = ggml_scale(ctx0, kq, kq_scale); + cb(kq, "kq_masked", il); + + sink = ggml_reshape_3d(ctx0, sink, 1, 1, n_head); // reshape for broadcasting + sink = ggml_repeat_4d(ctx0, sink, 1, n_tokens, n_head, 1); + kq = ggml_concat(ctx0, sink, kq, 0); // append the sinks + cb(kq, "kq_with_sink", il); + + kq = ggml_soft_max_ext(ctx0, kq, nullptr, 1.0f, hparams.f_max_alibi_bias); + kq = ggml_view_3d(ctx0, kq, kq_mask->ne[0], n_tokens, n_head, + ggml_row_size(kq->type, kq->ne[0]), + ggml_row_size(kq->type, kq->ne[0]*n_tokens), + ggml_element_size(kq)); // ignore the sinks + cb(kq, "kq_sink_ignored", il); + + ggml_tensor * kqv = ggml_mul_mat(ctx0, v, kq); + + cur = ggml_permute(ctx0, kqv, 0, 2, 1, 3); + cur = ggml_cont_2d(ctx0, cur, cur->ne[0]*n_head, n_tokens); + if (!cparams.offload_kqv) { + // all nodes between the KV store and the attention output are run on the CPU + ggml_backend_sched_set_tensor_backend(sched, cur, backend_cpu); + } + } + + cb(cur, "kqv_out", il); + + if (wo) { + cur = build_lora_mm(wo, cur); + } + + if (wo_b) { + cur = ggml_add(ctx0, cur, wo_b); + } + + return cur; + } }; llama_memory_i * llama_model::create_memory(const llama_memory_params & params, llama_cparams & cparams) const { From 3801c3641c4e3cf8b920b1394a7fa8108135e44d Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Tue, 8 Jul 2025 17:55:21 +0200 Subject: [PATCH 04/37] add rope scaling yarn --- convert_hf_to_gguf.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/convert_hf_to_gguf.py b/convert_hf_to_gguf.py index d41bb2ff348..72315d0dd91 100755 --- a/convert_hf_to_gguf.py +++ b/convert_hf_to_gguf.py @@ -6584,6 +6584,13 @@ def set_gguf_parameters(self): self.gguf_writer.add_sliding_window(self.hparams["sliding_window"]) self.gguf_writer.add_expert_feed_forward_length(self.hparams["intermediate_size"]) + rope_scaling = self.hparams.get("rope_scaling") or {} + rope_type = rope_scaling.get("rope_type", rope_scaling.get("type")) + assert rope_type == "yarn", f"OpenAI MoE only supports yarn rope scaling, got {rope_type}" + self.gguf_writer.add_rope_scaling_type(gguf.RopeScalingType.YARN) + self.gguf_writer.add_rope_scaling_factor(rope_scaling["factor"]) + self.gguf_writer.add_rope_scaling_orig_ctx_len(rope_scaling.get("original_max_position_embeddings", 4096)) + ###### CONVERSION LOGIC ###### From 13f39f6b6076739d34e6153bc253618fca9e43be Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Tue, 8 Jul 2025 19:32:06 +0200 Subject: [PATCH 05/37] logits match with latest transformers code --- src/llama-graph.cpp | 19 ++++++++++++------- src/llama-model.cpp | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/llama-graph.cpp b/src/llama-graph.cpp index ad99f000464..b6f6319f0b9 100644 --- a/src/llama-graph.cpp +++ b/src/llama-graph.cpp @@ -833,18 +833,23 @@ ggml_tensor * llm_graph_context::build_moe_ffn( } break; case LLM_FFN_SWIGLU_OAI_MOE: { - // ref python code: (x_glu = gate ; x_linear = up) - // out_glu = x_glu * torch.sigmoid(alpha * x_glu) - // return out_glu * (x_linear + 1) + // ref python code: + // glu = gate * torch.sigmoid(gate * self.alpha) + // next_states = torch.bmm(((up + 1) * glu), self.down_proj) constexpr float alpha = 1.702f; - ggml_tensor * tmp = ggml_sigmoid(ctx0, ggml_scale(ctx0, cur, alpha)); - cur = ggml_mul(ctx0, cur, tmp); - cb(cur, "ffn_moe_swiglu", il); + ggml_tensor * gate = cur; + ggml_tensor * glu = ggml_mul(ctx0, gate, + ggml_sigmoid(ctx0, ggml_scale(ctx0, gate, alpha))); + cb(cur, "ffn_moe_oai_glu", il); // add extra bias of 1.0 to the up tensor + // TODO: replace this with ggml_scale_bias() ggml_tensor * one = ggml_new_tensor_1d(ctx0, GGML_TYPE_F32, 1); one = ggml_cos(ctx0, ggml_scale(ctx0, one, 0.0f)); - up = ggml_add(ctx0, up, one); + ggml_tensor * up_b = ggml_add(ctx0, up, one); + + cur = ggml_mul(ctx0, glu, up_b); + cb(cur, "ffn_moe_oai_swiglu", il); } break; default: GGML_ABORT("fatal error"); diff --git a/src/llama-model.cpp b/src/llama-model.cpp index 181b6db05ad..e090e1cd353 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -15491,7 +15491,6 @@ llama_rope_type llama_model_rope_type(const llama_model * model) { case LLM_ARCH_NEO_BERT: case LLM_ARCH_ARCEE: case LLM_ARCH_ERNIE4_5: - case LLM_ARCH_OPENAI_MOE: return LLAMA_ROPE_TYPE_NORM; // the pairs of head values are offset by n_rot/2 @@ -15527,6 +15526,7 @@ llama_rope_type llama_model_rope_type(const llama_model * model) { case LLM_ARCH_EXAONE: case LLM_ARCH_MINICPM3: case LLM_ARCH_DOTS1: + case LLM_ARCH_OPENAI_MOE: return LLAMA_ROPE_TYPE_NEOX; case LLM_ARCH_QWEN2VL: From b3594b30b62223b77a650be404710d9b2079256d Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Wed, 9 Jul 2025 00:24:12 +0200 Subject: [PATCH 06/37] wip chat template --- src/llama-chat.cpp | 13 +++++++++++++ src/llama-chat.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/llama-chat.cpp b/src/llama-chat.cpp index 5d317f4ee62..da6f9c1c867 100644 --- a/src/llama-chat.cpp +++ b/src/llama-chat.cpp @@ -64,6 +64,7 @@ static const std::map LLM_CHAT_TEMPLATES = { { "bailing", LLM_CHAT_TEMPLATE_BAILING }, { "llama4", LLM_CHAT_TEMPLATE_LLAMA4 }, { "smolvlm", LLM_CHAT_TEMPLATE_SMOLVLM }, + { "openai-moe", LLM_CHAT_TEMPLATE_OPENAI_MOE }, }; llm_chat_template llm_chat_template_from_str(const std::string & name) { @@ -185,6 +186,8 @@ llm_chat_template llm_chat_detect_template(const std::string & tmpl) { return LLM_CHAT_TEMPLATE_LLAMA4; } else if (tmpl_contains("<|endofuserprompt|>")) { return LLM_CHAT_TEMPLATE_DOTS1; + } else if (tmpl_contains("<|start|>") && tmpl_contains("<|return|>")) { + return LLM_CHAT_TEMPLATE_OPENAI_MOE; } return LLM_CHAT_TEMPLATE_UNKNOWN; } @@ -665,6 +668,16 @@ int32_t llm_chat_apply_template( if (add_ass) { ss << "<|response|>"; } + } else if (tmpl == LLM_CHAT_TEMPLATE_OPENAI_MOE) { + // OpenAI MoE (based on Harmony chat template) + for (auto message : chat) { + std::string role(message->role); + ss << "<|start|>" << role << "<|message|>" << message->content; + ss << (role == "assistant" ? "<|return|>" : "<|end|>"); + } + if (add_ass) { + ss << "<|start|>assistant<|message|>"; + } } else { // template not supported return -1; diff --git a/src/llama-chat.h b/src/llama-chat.h index 38800010ae4..e31585c95f8 100644 --- a/src/llama-chat.h +++ b/src/llama-chat.h @@ -44,6 +44,7 @@ enum llm_chat_template { LLM_CHAT_TEMPLATE_LLAMA4, LLM_CHAT_TEMPLATE_SMOLVLM, LLM_CHAT_TEMPLATE_DOTS1, + LLM_CHAT_TEMPLATE_OPENAI_MOE, LLM_CHAT_TEMPLATE_UNKNOWN, }; From 089a7ab4d7d1bac22a59cbe53150bdff58794fa9 Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Wed, 9 Jul 2025 23:51:29 +0200 Subject: [PATCH 07/37] rm trailing space --- src/llama-model.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llama-model.cpp b/src/llama-model.cpp index eb37f14b237..5c6c949ac20 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -15720,7 +15720,7 @@ struct llm_build_openai_moe_iswa : public llm_graph_context { q = ggml_permute(ctx0, q, 0, 2, 1, 3); k = ggml_permute(ctx0, k, 0, 2, 1, 3); v = ggml_permute(ctx0, v, 0, 2, 1, 3); - + ggml_tensor * kq = ggml_mul_mat(ctx0, k, q); ggml_mul_mat_set_prec(kq, GGML_PREC_F32); From 4d01b36b039729d8ef95e89cff320c4cdeba793e Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Wed, 9 Jul 2025 23:53:02 +0200 Subject: [PATCH 08/37] use ggml_scale_bias --- src/llama-graph.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/llama-graph.cpp b/src/llama-graph.cpp index 69c5db39826..113fc4d4085 100644 --- a/src/llama-graph.cpp +++ b/src/llama-graph.cpp @@ -822,10 +822,7 @@ ggml_tensor * llm_graph_context::build_moe_ffn( cb(cur, "ffn_moe_oai_glu", il); // add extra bias of 1.0 to the up tensor - // TODO: replace this with ggml_scale_bias() - ggml_tensor * one = ggml_new_tensor_1d(ctx0, GGML_TYPE_F32, 1); - one = ggml_cos(ctx0, ggml_scale(ctx0, one, 0.0f)); - ggml_tensor * up_b = ggml_add(ctx0, up, one); + ggml_tensor * up_b = ggml_scale_bias(ctx0, up, 1.0f, 1.0f); cur = ggml_mul(ctx0, glu, up_b); cb(cur, "ffn_moe_oai_swiglu", il); From 106b17e5e24acec07bc6f2dc8dd829981e613add Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Thu, 10 Jul 2025 10:54:39 +0200 Subject: [PATCH 09/37] rm redundant is_swa_all --- src/llama-hparams.cpp | 10 ---------- src/llama-hparams.h | 3 --- 2 files changed, 13 deletions(-) diff --git a/src/llama-hparams.cpp b/src/llama-hparams.cpp index c7b0a290d7f..86c814d51b9 100644 --- a/src/llama-hparams.cpp +++ b/src/llama-hparams.cpp @@ -18,16 +18,6 @@ bool llama_hparams::is_swa_any() const { return false; } -bool llama_hparams::is_swa_all() const { - for (uint32_t il = 0; il < n_layer; ++il) { - if (!swa_layers[il]) { - return false; - } - } - - return true; -} - uint32_t llama_hparams::n_head(uint32_t il) const { if (il < n_layer) { return n_head_arr[il]; diff --git a/src/llama-hparams.h b/src/llama-hparams.h index f4d0e306398..1f729573a43 100644 --- a/src/llama-hparams.h +++ b/src/llama-hparams.h @@ -176,9 +176,6 @@ struct llama_hparams { // return true if one of the layers is SWA bool is_swa_any() const; - // return true if all layers are SWA - bool is_swa_all() const; - uint32_t n_head(uint32_t il = 0) const; uint32_t n_head_kv(uint32_t il = 0) const; From e2c1beb3fd7676fbee98fe187300e96f2d9cc173 Mon Sep 17 00:00:00 2001 From: Xuan-Son Nguyen Date: Tue, 15 Jul 2025 15:10:58 +0200 Subject: [PATCH 10/37] convert interleaved gate_up --- convert_hf_to_gguf.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/convert_hf_to_gguf.py b/convert_hf_to_gguf.py index fb2a89c918b..f4b57bab92d 100755 --- a/convert_hf_to_gguf.py +++ b/convert_hf_to_gguf.py @@ -6967,8 +6967,9 @@ def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iter if name.endswith("_bias"): name_up = name.replace("gate_up_proj_bias", "up_proj.bias") name_gate = name.replace("gate_up_proj_bias", "gate_proj.bias") - dim_half = data_torch.shape[-1] // 2 - gate_proj_bias, up_proj_bias = data_torch.split(dim_half, dim=-1) + #dim_half = data_torch.shape[-1] // 2 + #gate_proj_bias, up_proj_bias = data_torch.split(dim_half, dim=-1) + gate_proj_bias, up_proj_bias = data_torch[..., ::2], data_torch[..., 1::2] return [ (self.map_tensor_name(name_gate), gate_proj_bias), (self.map_tensor_name(name_up), up_proj_bias) @@ -6976,8 +6977,10 @@ def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iter else: name_up = name.replace("gate_up_proj", "up_proj.weight") name_gate = name.replace("gate_up_proj", "gate_proj.weight") - dim_half = data_torch.shape[-1] // 2 - gate_proj_weight, up_proj_weight = data_torch.transpose(-1, -2).split(dim_half, dim=-2) + #dim_half = data_torch.shape[-1] // 2 + #gate_proj_weight, up_proj_weight = data_torch.transpose(-1, -2).split(dim_half, dim=-2) + data_torch = data_torch.transpose(-1, -2) + gate_proj_weight, up_proj_weight = data_torch[:, ::2, :], data_torch[:, 1::2, :] return [ (self.map_tensor_name(name_gate), gate_proj_weight), (self.map_tensor_name(name_up), up_proj_weight) From 039a6f16c470cbf3c7b51bad18960ed51f75f70e Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Thu, 31 Jul 2025 11:18:06 +0300 Subject: [PATCH 11/37] graph : fix activation function to match reference (#7) --- src/llama-graph.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/llama-graph.cpp b/src/llama-graph.cpp index f590fe0b1a9..6a59b69025c 100644 --- a/src/llama-graph.cpp +++ b/src/llama-graph.cpp @@ -970,13 +970,13 @@ ggml_tensor * llm_graph_context::build_moe_ffn( // glu = gate * torch.sigmoid(gate * self.alpha) // next_states = torch.bmm(((up + 1) * glu), self.down_proj) constexpr float alpha = 1.702f; - ggml_tensor * gate = cur; + ggml_tensor * gate = ggml_clamp(ctx0, cur, -9999.0f, 7.0f); ggml_tensor * glu = ggml_mul(ctx0, gate, ggml_sigmoid(ctx0, ggml_scale(ctx0, gate, alpha))); cb(cur, "ffn_moe_oai_glu", il); // add extra bias of 1.0 to the up tensor - ggml_tensor * up_b = ggml_scale_bias(ctx0, up, 1.0f, 1.0f); + ggml_tensor * up_b = ggml_scale_bias(ctx0, ggml_clamp(ctx0, up, -7.0f, 7.0f), 1.0f, 1.0f); cur = ggml_mul(ctx0, glu, up_b); cb(cur, "ffn_moe_oai_swiglu", il); From 13f3568c3726d1ed541b0b1d5f7dc7deab5ade0b Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Fri, 1 Aug 2025 15:30:23 +0300 Subject: [PATCH 12/37] vocab : handle o200k_harmony special tokens --- src/llama-vocab.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/llama-vocab.cpp b/src/llama-vocab.cpp index e8bae645088..ddfb64eef4c 100644 --- a/src/llama-vocab.cpp +++ b/src/llama-vocab.cpp @@ -2305,6 +2305,8 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { || t.first == "<|eot_id|>" || t.first == "<|im_end|>" || t.first == "<|end|>" + || t.first == "<|return|>" // o200k_harmony + || t.first == "<|call|>" // o200k_harmony || t.first == "" || t.first == "<|endoftext|>" || t.first == "<|eom_id|>" @@ -2343,6 +2345,36 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { special_eog_ids.insert(special_eom_id); LLAMA_LOG_WARN("%s: special_eom_id is not in special_eog_ids - the tokenizer config may be incorrect\n", __func__); } + + // TODO: workaround for o200k_harmony tokenizer: the "<|end|>" token should not be EOG + // we don't have a good way to detect this, so for now, if we have "<|return|>" and "<|call|>" tokens, + // we remove the "<|end|>" token from the EOG list + { + bool has_return = false; + bool has_call = false; + bool has_end = false; + + llama_token end_id = LLAMA_TOKEN_NULL; + + LLAMA_LOG_INFO("%s: printing all EOG tokens:\n", __func__); + for (auto tid : special_eog_ids) { + LLAMA_LOG_INFO("%s: - %d ('%s')\n", __func__, tid, id_to_token[tid].text.c_str()); + + if (id_to_token[tid].text == "<|return|>") { + has_return = true; + } else if (id_to_token[tid].text == "<|call|>") { + has_call = true; + } else if (id_to_token[tid].text == "<|end|>") { + has_end = true; + end_id = tid; + } + } + + if (has_return && has_call && has_end) { + special_eog_ids.erase(end_id); + LLAMA_LOG_WARN("%s: special_eog_ids contains both '<|return|>' and '<|call|>' tokens, removing '<|end|>' token from EOG list\n", __func__); + } + } } // build special tokens cache From e59b2eb1cbf5c3d49bce940398d12cda9ab9a5c8 Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Fri, 1 Aug 2025 22:13:05 +0300 Subject: [PATCH 13/37] ggml : add attention sinks support (#1) * llama : add attn sinks * ggml : add attn sinks * cuda : add attn sinks * vulkan : add support for sinks in softmax remove unnecessary return * ggml : add fused swiglu_oai op (#11) * ggml : add fused swiglu_oai op * Update ggml/src/ggml-cpu/ops.cpp Co-authored-by: Georgi Gerganov * update CUDA impl * cont : metal impl * add vulkan impl * test-backend-ops : more test cases, clean up * llama : remove unfused impl * remove extra lines --------- Co-authored-by: Georgi Gerganov --------- Co-authored-by: slaren --- ggml/include/ggml.h | 16 ++ ggml/src/ggml-cann/ggml-cann.cpp | 8 + ggml/src/ggml-cpu/ggml-cpu.c | 3 +- ggml/src/ggml-cpu/ops.cpp | 138 ++++++++++- ggml/src/ggml-cpu/ops.h | 8 +- ggml/src/ggml-cpu/vec.h | 6 +- ggml/src/ggml-cuda/common.cuh | 1 + ggml/src/ggml-cuda/fattn-common.cuh | 5 +- ggml/src/ggml-cuda/fattn-mma-f16.cuh | 4 +- ggml/src/ggml-cuda/fattn-tile-f16.cu | 3 +- ggml/src/ggml-cuda/fattn-tile-f32.cu | 3 +- ggml/src/ggml-cuda/fattn-vec-f16.cuh | 42 +++- ggml/src/ggml-cuda/fattn-vec-f32.cuh | 40 +++- ggml/src/ggml-cuda/fattn-wmma-f16.cu | 3 +- ggml/src/ggml-cuda/fattn.cu | 21 +- ggml/src/ggml-cuda/ggml-cuda.cu | 8 + ggml/src/ggml-cuda/softmax.cu | 26 +- ggml/src/ggml-cuda/unary.cu | 75 ++++++ ggml/src/ggml-cuda/unary.cuh | 2 + ggml/src/ggml-metal/ggml-metal-impl.h | 2 + ggml/src/ggml-metal/ggml-metal.m | 33 ++- ggml/src/ggml-metal/ggml-metal.metal | 90 ++++++- ggml/src/ggml-opencl/ggml-opencl.cpp | 2 + ggml/src/ggml-sycl/ggml-sycl.cpp | 4 + ggml/src/ggml-vulkan/ggml-vulkan.cpp | 68 +++++- .../ggml-vulkan/vulkan-shaders/glu_head.comp | 2 + .../ggml-vulkan/vulkan-shaders/soft_max.comp | 12 +- .../vulkan-shaders/swiglu_oai.comp | 14 ++ .../vulkan-shaders/vulkan-shaders-gen.cpp | 2 + ggml/src/ggml.c | 48 +++- src/llama-arch.cpp | 2 +- src/llama-graph.cpp | 56 +++-- src/llama-graph.h | 15 ++ src/llama-model.cpp | 116 +-------- tests/test-backend-ops.cpp | 224 +++++++++++++----- 35 files changed, 846 insertions(+), 256 deletions(-) create mode 100644 ggml/src/ggml-vulkan/vulkan-shaders/swiglu_oai.comp diff --git a/ggml/include/ggml.h b/ggml/include/ggml.h index 8a8775be365..3aff098437d 100644 --- a/ggml/include/ggml.h +++ b/ggml/include/ggml.h @@ -557,6 +557,7 @@ extern "C" { GGML_GLU_OP_REGLU, GGML_GLU_OP_GEGLU, GGML_GLU_OP_SWIGLU, + GGML_GLU_OP_SWIGLU_OAI, GGML_GLU_OP_GEGLU_ERF, GGML_GLU_OP_GEGLU_QUICK, @@ -1198,6 +1199,13 @@ extern "C" { struct ggml_tensor * a, struct ggml_tensor * b); + GGML_API struct ggml_tensor * ggml_swiglu_oai( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + float alpha, + float limit); + // normalize along rows GGML_API struct ggml_tensor * ggml_norm( struct ggml_context * ctx, @@ -1570,6 +1578,10 @@ extern "C" { float scale, float max_bias); + GGML_API void ggml_soft_max_add_sinks( + struct ggml_tensor * a, + struct ggml_tensor * sinks); + GGML_API struct ggml_tensor * ggml_soft_max_ext_back( struct ggml_context * ctx, struct ggml_tensor * a, @@ -2052,6 +2064,10 @@ extern "C" { GGML_API enum ggml_prec ggml_flash_attn_ext_get_prec( const struct ggml_tensor * a); + GGML_API void ggml_flash_attn_ext_add_sinks( + struct ggml_tensor * a, + struct ggml_tensor * sinks); + // TODO: needs to be adapted to ggml_flash_attn_ext GGML_API struct ggml_tensor * ggml_flash_attn_back( struct ggml_context * ctx, diff --git a/ggml/src/ggml-cann/ggml-cann.cpp b/ggml/src/ggml-cann/ggml-cann.cpp index 8eb8b1470bb..551c1f7673a 100755 --- a/ggml/src/ggml-cann/ggml-cann.cpp +++ b/ggml/src/ggml-cann/ggml-cann.cpp @@ -2340,6 +2340,10 @@ static bool ggml_backend_cann_supports_op(ggml_backend_dev_t dev, memcpy(&bias, (float*)op->op_params + 1, sizeof(float)); return bias == 0.0f; // TODO: support bias != 0.0f case GGML_OP_SOFT_MAX: + // TODO: support attention sinks [TAG_ATTN_SINKS] + if (op->src[2]) { + return false; + } // TODO: support broadcast // ref: https://github.com/ggml-org/llama.cpp/pull/14435 return !op->src[1] || (op->src[1]->ne[2] == 1 && op->src[1]->ne[3] == 1); @@ -2354,6 +2358,10 @@ static bool ggml_backend_cann_supports_op(ggml_backend_dev_t dev, if(op->type != GGML_TYPE_F16 && op->type != GGML_TYPE_F32 && op->type != GGML_TYPE_BF16){ return false; } + // TODO: support attention sinks [TAG_ATTN_SINKS] + if (op->src[4]) { + return false; + } if (op->src[1]->ne[0] != op->src[2]->ne[0]) { // different head sizes of K and V are not supported yet return false; diff --git a/ggml/src/ggml-cpu/ggml-cpu.c b/ggml/src/ggml-cpu/ggml-cpu.c index c5271b77572..54fa9ce257a 100644 --- a/ggml/src/ggml-cpu/ggml-cpu.c +++ b/ggml/src/ggml-cpu/ggml-cpu.c @@ -1924,7 +1924,7 @@ static void ggml_compute_forward(struct ggml_compute_params * params, struct ggm } break; case GGML_OP_FLASH_ATTN_EXT: { - ggml_compute_forward_flash_attn_ext(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor->src[3], tensor); + ggml_compute_forward_flash_attn_ext(params, tensor); } break; case GGML_OP_FLASH_ATTN_BACK: { @@ -2172,6 +2172,7 @@ static int ggml_get_n_tasks(struct ggml_tensor * node, int n_threads) { case GGML_GLU_OP_REGLU: case GGML_GLU_OP_GEGLU: case GGML_GLU_OP_SWIGLU: + case GGML_GLU_OP_SWIGLU_OAI: case GGML_GLU_OP_GEGLU_ERF: case GGML_GLU_OP_GEGLU_QUICK: { diff --git a/ggml/src/ggml-cpu/ops.cpp b/ggml/src/ggml-cpu/ops.cpp index 6581d27adde..3c1d40893d1 100644 --- a/ggml/src/ggml-cpu/ops.cpp +++ b/ggml/src/ggml-cpu/ops.cpp @@ -8,6 +8,7 @@ #include "vec.h" #include +#include // ggml_compute_forward_dup @@ -3614,6 +3615,93 @@ static void ggml_compute_forward_swiglu( } } +// ggml_compute_forward_swiglu_oai + +static void ggml_compute_forward_swiglu_oai_f32( + const ggml_compute_params * params, + ggml_tensor * dst) { + + const ggml_tensor * src0 = dst->src[0]; + const ggml_tensor * src1 = dst->src[1]; + char * src0_d = (char *) src0->data; + char * src1_d = (char *) (src1 ? src1->data : src0->data); + const size_t src0_o = src0->nb[1]; + const size_t src1_o = src1 ? src1->nb[1] : src0->nb[1]; + + GGML_ASSERT(ggml_is_contiguous_1(src0)); + GGML_ASSERT(ggml_is_contiguous_1(dst)); + + if (src1) { + GGML_ASSERT(ggml_is_contiguous_1(src1)); + GGML_ASSERT(src0->type == src1->type); + } + + const int ith = params->ith; + const int nth = params->nth; + + const int nc = src1 ? src0->ne[0] : src0->ne[0] / 2; + const int nr = ggml_nrows(src0); + + GGML_ASSERT(dst->ne[0] == nc); + GGML_ASSERT(ggml_nrows(dst) == nr); + + const int32_t swapped = ggml_get_op_params_i32(dst, 1); + const float alpha = ggml_get_op_params_f32(dst, 2); + const float limit = ggml_get_op_params_f32(dst, 3); + + // rows per thread + const int dr = (nr + nth - 1)/nth; + + // row range for this thread + const int ir0 = dr*ith; + const int ir1 = MIN(ir0 + dr, nr); + + for (int i1 = ir0; i1 < ir1; i1++) { + float * src0_p = (float *) (src0_d + i1*src0_o); + float * src1_p = (float *) (src1_d + i1*src1_o); + float * dst_p = (float *) ((char *) dst->data + i1*(dst->nb[1])); + + if (!src1) { + src0_p += swapped ? nc : 0; + src1_p += swapped ? 0 : nc; + } + + for (int k = 0; k < nc; k++) { + const float x = std::min(src0_p[k], limit); + const float y = std::clamp(src1_p[k], -limit, limit); + const float out_glu = x / (1.f + expf(alpha * (-x))); + dst_p[k] = out_glu * (y + 1.f); + } + +#ifndef NDEBUG + for (int k = 0; k < nc; k++) { + const float x = dst_p[k]; + GGML_UNUSED(x); + assert(!isnan(x)); + assert(!isinf(x)); + } +#endif + } +} + +static void ggml_compute_forward_swiglu_oai( + const ggml_compute_params * params, + ggml_tensor * dst) { + + const ggml_tensor * src0 = dst->src[0]; + + switch (src0->type) { + case GGML_TYPE_F32: + { + ggml_compute_forward_swiglu_oai_f32(params, dst); + } break; + default: + { + GGML_ABORT("fatal error"); + } + } +} + // ggml_compute_forward_geglu_erf static void ggml_compute_forward_geglu_erf_f32( @@ -5523,6 +5611,7 @@ static void ggml_compute_forward_soft_max_f32( const ggml_tensor * src0 = dst->src[0]; const ggml_tensor * src1 = dst->src[1]; + const ggml_tensor * src2 = dst->src[2]; assert(ggml_is_contiguous(dst)); assert(ggml_are_same_shape(src0, dst)); @@ -5557,6 +5646,9 @@ static void ggml_compute_forward_soft_max_f32( const bool use_f16 = (src1 && src1->type == GGML_TYPE_F16); + // sinks + const float * sk = src2 ? (float *)((char *) src2->data) : nullptr; + for (int64_t i03 = 0; i03 < ne03; i03++) { for (int64_t i02 = 0; i02 < ne02; i02++) { for (int64_t i01 = ith; i01 < ne01; i01 += nth) { @@ -5599,9 +5691,18 @@ static void ggml_compute_forward_soft_max_f32( float max = -INFINITY; ggml_vec_max_f32(ne00, &max, wp); + // if we have sinks, make a correction as if they were included in the softmax + if (sk) { + max = MAX(max, sk[i02]); + } + ggml_float sum = ggml_vec_soft_max_f32(ne00, dp, wp, max); assert(sum > 0.0); + if (sk) { + sum += (ggml_float) expf(sk[i02] - max); + } + sum = 1.0/sum; ggml_vec_scale_f32(ne00, dp, sum); @@ -7989,12 +8090,14 @@ void ggml_compute_forward_argsort( static void ggml_compute_forward_flash_attn_ext_f16( const ggml_compute_params * params, - const ggml_tensor * q, - const ggml_tensor * k, - const ggml_tensor * v, - const ggml_tensor * mask, ggml_tensor * dst) { + const ggml_tensor * q = dst->src[0]; + const ggml_tensor * k = dst->src[1]; + const ggml_tensor * v = dst->src[2]; + const ggml_tensor * mask = dst->src[3]; + const ggml_tensor * sinks = dst->src[4]; + GGML_TENSOR_LOCALS(int64_t, neq, q, ne) GGML_TENSOR_LOCALS(size_t, nbq, q, nb) GGML_TENSOR_LOCALS(int64_t, nek, k, ne) @@ -8189,6 +8292,23 @@ static void ggml_compute_forward_flash_attn_ext_f16( } } + // sinks + if (sinks) { + const float s = ((float *)((char *) sinks->data))[h]; + + float ms = 1.0f; + float vs = 1.0f; + + if (s > M) { + ms = expf(M - s); + ggml_vec_scale_f32(DV, VKQ32, ms); + } else { + vs = expf(s - M); + } + + S = S*ms + vs; + } + // V /= S const float S_inv = 1.0f/S; ggml_vec_scale_f32(DV, VKQ32, S_inv); @@ -8208,17 +8328,13 @@ static void ggml_compute_forward_flash_attn_ext_f16( void ggml_compute_forward_flash_attn_ext( const ggml_compute_params * params, - const ggml_tensor * q, - const ggml_tensor * k, - const ggml_tensor * v, - const ggml_tensor * mask, ggml_tensor * dst) { switch (dst->op_params[3]) { case GGML_PREC_DEFAULT: case GGML_PREC_F32: { // uses F32 accumulators - ggml_compute_forward_flash_attn_ext_f16(params, q, k, v, mask, dst); + ggml_compute_forward_flash_attn_ext_f16(params, dst); } break; default: { @@ -9080,6 +9196,10 @@ void ggml_compute_forward_glu( { ggml_compute_forward_swiglu(params, dst); } break; + case GGML_GLU_OP_SWIGLU_OAI: + { + ggml_compute_forward_swiglu_oai(params, dst); + } break; case GGML_GLU_OP_GEGLU_ERF: { ggml_compute_forward_geglu_erf(params, dst); diff --git a/ggml/src/ggml-cpu/ops.h b/ggml/src/ggml-cpu/ops.h index 3a32ec20dba..8c8308b465d 100644 --- a/ggml/src/ggml-cpu/ops.h +++ b/ggml/src/ggml-cpu/ops.h @@ -82,13 +82,7 @@ void ggml_compute_forward_arange(const struct ggml_compute_params * params, stru void ggml_compute_forward_timestep_embedding(const struct ggml_compute_params * params, struct ggml_tensor * dst); void ggml_compute_forward_argsort(const struct ggml_compute_params * params, struct ggml_tensor * dst); void ggml_compute_forward_leaky_relu(const struct ggml_compute_params * params, struct ggml_tensor * dst); -void ggml_compute_forward_flash_attn_ext( - const struct ggml_compute_params * params, - const struct ggml_tensor * q, - const struct ggml_tensor * k, - const struct ggml_tensor * v, - const struct ggml_tensor * mask, - struct ggml_tensor * dst); +void ggml_compute_forward_flash_attn_ext(const struct ggml_compute_params * params, struct ggml_tensor * dst); void ggml_compute_forward_flash_attn_back( const struct ggml_compute_params * params, const bool masked, diff --git a/ggml/src/ggml-cpu/vec.h b/ggml/src/ggml-cpu/vec.h index d18783a00a1..6b8d7f2aabf 100644 --- a/ggml/src/ggml-cpu/vec.h +++ b/ggml/src/ggml-cpu/vec.h @@ -992,9 +992,9 @@ void ggml_vec_swiglu_f32(const int n, float * y, const float * x, const float * inline static void ggml_vec_swiglu_f16(const int n, ggml_fp16_t * y, const ggml_fp16_t * x, const ggml_fp16_t * g) { for (int i = 0; i < n; ++i) { - float v = GGML_CPU_FP16_TO_FP32(x[i]); - float w = GGML_CPU_FP16_TO_FP32(g[i]); - y[i] = GGML_CPU_FP32_TO_FP16((v/(1.0f + expf(-v))) * w); + float xi = GGML_CPU_FP16_TO_FP32(x[i]); + float gi = GGML_CPU_FP16_TO_FP32(g[i]); + y[i] = GGML_CPU_FP32_TO_FP16((xi/(1.0f + expf(-xi))) * gi); } } diff --git a/ggml/src/ggml-cuda/common.cuh b/ggml/src/ggml-cuda/common.cuh index 7fb04d51b77..bba7fc2f85b 100644 --- a/ggml/src/ggml-cuda/common.cuh +++ b/ggml/src/ggml-cuda/common.cuh @@ -1,6 +1,7 @@ #pragma once #include "ggml.h" +#include "ggml-impl.h" #include "ggml-cuda.h" #include diff --git a/ggml/src/ggml-cuda/fattn-common.cuh b/ggml/src/ggml-cuda/fattn-common.cuh index b6db446c6fe..e46f0e2081b 100644 --- a/ggml/src/ggml-cuda/fattn-common.cuh +++ b/ggml/src/ggml-cuda/fattn-common.cuh @@ -15,6 +15,7 @@ typedef void (* fattn_kernel_t)( const char * __restrict__ K, const char * __restrict__ V, const char * __restrict__ mask, + const char * __restrict__ sinks, const int * __restrict__ KV_max, float * __restrict__ dst, float2 * __restrict__ dst_meta, @@ -736,7 +737,8 @@ void launch_fattn( GGML_ASSERT(V || is_mla); - const ggml_tensor * mask = dst->src[3]; + const ggml_tensor * mask = dst->src[3]; + const ggml_tensor * sinks = dst->src[4]; ggml_tensor * KQV = dst; @@ -940,6 +942,7 @@ void launch_fattn( K_data, V_data, mask ? ((const char *) mask->data) : nullptr, + sinks ? ((const char *) sinks->data) : nullptr, KV_max.ptr, !stream_k && parallel_blocks > 1 ? dst_tmp.ptr : (float *) KQV->data, dst_tmp_meta.ptr, scale, max_bias, m0, m1, n_head_log2, logit_softcap, diff --git a/ggml/src/ggml-cuda/fattn-mma-f16.cuh b/ggml/src/ggml-cuda/fattn-mma-f16.cuh index a86b95428f6..e7570f9d3b8 100644 --- a/ggml/src/ggml-cuda/fattn-mma-f16.cuh +++ b/ggml/src/ggml-cuda/fattn-mma-f16.cuh @@ -1206,6 +1206,7 @@ static __global__ void flash_attn_ext_f16( const char * __restrict__ K, const char * __restrict__ V, const char * __restrict__ mask, + const char * __restrict__ sinks, const int * __restrict__ KV_max, float * __restrict__ dst, float2 * __restrict__ dst_meta, @@ -1267,6 +1268,7 @@ static __global__ void flash_attn_ext_f16( // kb0 == k start index when in the output tile. int kb0_start = kbc % iter_k; int kb0_stop = min(iter_k, kb0_start + kbc_stop - kbc); + while (kbc < kbc_stop && kb0_stop == iter_k) { const int sequence = kbc / (iter_k*iter_j*(ne02/ncols2)); const int head = (kbc - iter_k*iter_j*(ne02/ncols2)*sequence) / (iter_k*iter_j); @@ -1340,7 +1342,7 @@ static __global__ void flash_attn_ext_f16( (Q_f2, K_h2, V_h2, mask_h2, dstk, dst_meta, scale, slope, logit_softcap, ne01, ne02, stride_Q1, stride_Q2, stride_K, stride_V, stride_mask, jt, kb0_start_kernel, kb0_stop_kernel); #else - GGML_UNUSED(Q); GGML_UNUSED(K); GGML_UNUSED(V); GGML_UNUSED(mask); + GGML_UNUSED(Q); GGML_UNUSED(K); GGML_UNUSED(V); GGML_UNUSED(mask); GGML_UNUSED(sinks); GGML_UNUSED(dst); GGML_UNUSED(dst_meta); GGML_UNUSED(scale); GGML_UNUSED(max_bias); GGML_UNUSED(m0); GGML_UNUSED(m1); GGML_UNUSED(n_head_log2); GGML_UNUSED(logit_softcap); diff --git a/ggml/src/ggml-cuda/fattn-tile-f16.cu b/ggml/src/ggml-cuda/fattn-tile-f16.cu index 9d0b24ae7ec..0fcfaa32ea4 100644 --- a/ggml/src/ggml-cuda/fattn-tile-f16.cu +++ b/ggml/src/ggml-cuda/fattn-tile-f16.cu @@ -13,6 +13,7 @@ static __global__ void flash_attn_tile_ext_f16( const char * __restrict__ K, const char * __restrict__ V, const char * __restrict__ mask, + const char * __restrict__ sinks, const int * __restrict__ KV_max, float * __restrict__ dst, float2 * __restrict__ dst_meta, @@ -272,7 +273,7 @@ static __global__ void flash_attn_tile_ext_f16( } } #else - GGML_UNUSED(Q); GGML_UNUSED(K); GGML_UNUSED(V); GGML_UNUSED(mask); + GGML_UNUSED(Q); GGML_UNUSED(K); GGML_UNUSED(V); GGML_UNUSED(mask); GGML_UNUSED(sinks); GGML_UNUSED(dst); GGML_UNUSED(dst_meta); GGML_UNUSED(scale); GGML_UNUSED(max_bias); GGML_UNUSED(m0); GGML_UNUSED(m1); GGML_UNUSED(n_head_log2); GGML_UNUSED(logit_softcap); diff --git a/ggml/src/ggml-cuda/fattn-tile-f32.cu b/ggml/src/ggml-cuda/fattn-tile-f32.cu index be72f76fb65..23550cbbd97 100644 --- a/ggml/src/ggml-cuda/fattn-tile-f32.cu +++ b/ggml/src/ggml-cuda/fattn-tile-f32.cu @@ -13,6 +13,7 @@ static __global__ void flash_attn_tile_ext_f32( const char * __restrict__ K, const char * __restrict__ V, const char * __restrict__ mask, + const char * __restrict__ sinks, const int * __restrict__ KV_max, float * __restrict__ dst, float2 * __restrict__ dst_meta, @@ -37,7 +38,7 @@ static __global__ void flash_attn_tile_ext_f32( return; #endif // FP16_MMA_AVAILABLE if (use_logit_softcap && !(D == 128 || D == 256)) { - GGML_UNUSED(Q); GGML_UNUSED(K); GGML_UNUSED(V); GGML_UNUSED(mask); + GGML_UNUSED(Q); GGML_UNUSED(K); GGML_UNUSED(V); GGML_UNUSED(mask); GGML_UNUSED(sinks); GGML_UNUSED(dst); GGML_UNUSED(dst_meta); GGML_UNUSED(scale); GGML_UNUSED(max_bias); GGML_UNUSED(m0); GGML_UNUSED(m1); GGML_UNUSED(n_head_log2); GGML_UNUSED(logit_softcap); diff --git a/ggml/src/ggml-cuda/fattn-vec-f16.cuh b/ggml/src/ggml-cuda/fattn-vec-f16.cuh index a2df2f66be0..b05f682cd3b 100644 --- a/ggml/src/ggml-cuda/fattn-vec-f16.cuh +++ b/ggml/src/ggml-cuda/fattn-vec-f16.cuh @@ -16,6 +16,7 @@ static __global__ void flash_attn_vec_ext_f16( const char * __restrict__ K, const char * __restrict__ V, const char * __restrict__ mask, + const char * __restrict__ sinks, const int * __restrict__ KV_max, float * __restrict__ dst, float2 * __restrict__ dst_meta, @@ -61,7 +62,8 @@ static __global__ void flash_attn_vec_ext_f16( K += nb13*sequence + nb12*(head / gqa_ratio); V += nb23*sequence + nb22*(head / gqa_ratio); - const half * maskh = (const half *) (mask + nb33*(sequence % ne33) + nb31*ic0); + const half * maskh = (const half *) (mask + nb33*(sequence % ne33) + nb31*ic0); + const float * sinksf = (const float *) (sinks); const float slopef = get_alibi_slope(max_bias, head, n_head_log2, m0, m1); const half slopeh = __float2half(slopef); @@ -75,11 +77,12 @@ static __global__ void flash_attn_vec_ext_f16( half2 * KQ2 = (half2 *) KQ; half kqmax[ncols]; + half kqsum[ncols]; #pragma unroll for (int j = 0; j < ncols; ++j) { kqmax[j] = -HALF_MAX_HALF; + kqsum[j] = 0.0f; } - half kqsum[ncols] = {0.0f}; __shared__ half kqmax_shared[ncols][WARP_SIZE]; __shared__ half kqsum_shared[ncols][WARP_SIZE]; @@ -283,6 +286,39 @@ static __global__ void flash_attn_vec_ext_f16( __syncthreads(); } + if (sinksf && blockIdx.y == 0) { + const half sink = __float2half(sinksf[head]); + +#pragma unroll + for (int j = 0; j < ncols; ++j) { + if (threadIdx.x == 0) { + kqmax_shared[j][threadIdx.y] = fmaxf(kqmax[j], sink); + } + } + + __syncthreads(); + +#pragma unroll + for (int j = 0; j < ncols; ++j) { + half kqmax_new_j = kqmax_shared[j][threadIdx.x]; + kqmax_new_j = warp_reduce_max(kqmax_new_j); + + const half KQ_max_scale = hexp(kqmax[j] - kqmax_new_j); + kqmax[j] = kqmax_new_j; + + const half val = hexp(sink - kqmax[j]); + kqsum[j] = kqsum[j]*KQ_max_scale; + + if (tid == 0) { + kqsum[j] += val; + } + + VKQ[j] *= __half2half2(KQ_max_scale); + } + + __syncthreads(); + } + #pragma unroll for (int j = 0; j < ncols; ++j) { kqsum[j] = warp_reduce_sum((float)kqsum[j]); @@ -313,7 +349,7 @@ static __global__ void flash_attn_vec_ext_f16( dst_meta[((sequence*ne01 + ic0 + tid)*ne02 + head)*gridDim.y + blockIdx.y] = make_float2(kqmax[tid], kqsum[tid]); } #else - GGML_UNUSED(Q); GGML_UNUSED(K); GGML_UNUSED(V); GGML_UNUSED(mask); + GGML_UNUSED(Q); GGML_UNUSED(K); GGML_UNUSED(V); GGML_UNUSED(mask); GGML_UNUSED(sinks); GGML_UNUSED(dst); GGML_UNUSED(dst_meta); GGML_UNUSED(scale); GGML_UNUSED(max_bias); GGML_UNUSED(m0); GGML_UNUSED(m1); GGML_UNUSED(n_head_log2); GGML_UNUSED(logit_softcap); diff --git a/ggml/src/ggml-cuda/fattn-vec-f32.cuh b/ggml/src/ggml-cuda/fattn-vec-f32.cuh index 9ab0fc133b7..d6d0bfb744b 100644 --- a/ggml/src/ggml-cuda/fattn-vec-f32.cuh +++ b/ggml/src/ggml-cuda/fattn-vec-f32.cuh @@ -16,6 +16,7 @@ static __global__ void flash_attn_vec_ext_f32( const char * __restrict__ K, const char * __restrict__ V, const char * __restrict__ mask, + const char * __restrict__ sinks, const int * __restrict__ KV_max, float * __restrict__ dst, float2 * __restrict__ dst_meta, @@ -72,7 +73,8 @@ static __global__ void flash_attn_vec_ext_f32( K += nb13*sequence + nb12*(head / gqa_ratio); V += nb23*sequence + nb22*(head / gqa_ratio); - const half * maskh = (const half *) (mask + nb33*(sequence % ne33) + nb31*ic0); + const half * maskh = (const half *) (mask + nb33*(sequence % ne33) + nb31*ic0); + const float * sinksf = (const float *) (sinks); const float slope = get_alibi_slope(max_bias, head, n_head_log2, m0, m1); @@ -88,11 +90,12 @@ static __global__ void flash_attn_vec_ext_f32( } float kqmax[ncols]; + float kqsum[ncols]; #pragma unroll for (int j = 0; j < ncols; ++j) { kqmax[j] = -FLT_MAX/2.0f; + kqsum[j] = 0.0f; } - float kqsum[ncols] = {0.0f}; __shared__ float kqmax_shared[ncols][WARP_SIZE]; __shared__ float kqsum_shared[ncols][WARP_SIZE]; @@ -279,6 +282,39 @@ static __global__ void flash_attn_vec_ext_f32( __syncthreads(); } + if (sinksf && blockIdx.y == 0) { + const float sink = sinksf[head]; + +#pragma unroll + for (int j = 0; j < ncols; ++j) { + if (threadIdx.x == 0) { + kqmax_shared[j][threadIdx.y] = fmaxf(kqmax[j], sink); + } + } + + __syncthreads(); + +#pragma unroll + for (int j = 0; j < ncols; ++j) { + float kqmax_new_j = kqmax_shared[j][threadIdx.x]; + kqmax_new_j = warp_reduce_max(kqmax_new_j); + + const float KQ_max_scale = expf(kqmax[j] - kqmax_new_j); + kqmax[j] = kqmax_new_j; + + const float val = expf(sink - kqmax[j]); + kqsum[j] = kqsum[j]*KQ_max_scale; + + if (tid == 0) { + kqsum[j] += val; + } + + VKQ[j] *= KQ_max_scale; + } + + __syncthreads(); + } + #pragma unroll for (int j = 0; j < ncols; ++j) { kqsum[j] = warp_reduce_sum(kqsum[j]); diff --git a/ggml/src/ggml-cuda/fattn-wmma-f16.cu b/ggml/src/ggml-cuda/fattn-wmma-f16.cu index 40554204b62..93d4d810218 100644 --- a/ggml/src/ggml-cuda/fattn-wmma-f16.cu +++ b/ggml/src/ggml-cuda/fattn-wmma-f16.cu @@ -29,6 +29,7 @@ static __global__ void flash_attn_ext_f16( const char * __restrict__ K, const char * __restrict__ V, const char * __restrict__ mask, + const char * __restrict__ sinks, const int * __restrict__ KV_max, float * __restrict__ dst, float2 * __restrict__ dst_meta, @@ -423,7 +424,7 @@ static __global__ void flash_attn_ext_f16( dst_meta[j_dst_unrolled] = dst_meta_val; } #else - GGML_UNUSED(Q); GGML_UNUSED(K); GGML_UNUSED(V); GGML_UNUSED(mask); + GGML_UNUSED(Q); GGML_UNUSED(K); GGML_UNUSED(V); GGML_UNUSED(mask); GGML_UNUSED(sinks); GGML_UNUSED(dst); GGML_UNUSED(dst_meta); GGML_UNUSED(scale); GGML_UNUSED(max_bias); GGML_UNUSED(m0); GGML_UNUSED(m1); GGML_UNUSED(n_head_log2); GGML_UNUSED(logit_softcap); diff --git a/ggml/src/ggml-cuda/fattn.cu b/ggml/src/ggml-cuda/fattn.cu index a51136f6b8a..9d679feeeb4 100644 --- a/ggml/src/ggml-cuda/fattn.cu +++ b/ggml/src/ggml-cuda/fattn.cu @@ -269,17 +269,28 @@ static void ggml_cuda_flash_attn_ext_vec_f32(ggml_backend_cuda_context & ctx, gg } void ggml_cuda_flash_attn_ext(ggml_backend_cuda_context & ctx, ggml_tensor * dst) { - const ggml_tensor * KQV = dst; - const ggml_tensor * Q = dst->src[0]; - const ggml_tensor * K = dst->src[1]; - const ggml_tensor * V = dst->src[2]; - const ggml_tensor * mask = dst->src[3]; + const ggml_tensor * KQV = dst; + const ggml_tensor * Q = dst->src[0]; + const ggml_tensor * K = dst->src[1]; + const ggml_tensor * V = dst->src[2]; + const ggml_tensor * mask = dst->src[3]; + const ggml_tensor * sinks = dst->src[4]; ggml_cuda_set_device(ctx.device); const int cc = ggml_cuda_info().devices[ggml_cuda_get_device()].cc; const int warp_size = ggml_cuda_info().devices[ggml_cuda_get_device()].warp_size; const enum ggml_prec prec = ggml_flash_attn_ext_get_prec(KQV); + // TODO: currently only vec implementation for sinks is supported [TAG_ATTN_SINKS] + if (sinks) { + if (prec == GGML_PREC_DEFAULT && fast_fp16_available(cc)) { + ggml_cuda_flash_attn_ext_vec_f16(ctx, dst); + } else { + ggml_cuda_flash_attn_ext_vec_f32(ctx, dst); + } + return; + } + #if defined(GGML_HIP_ROCWMMA_FATTN) if (GGML_CUDA_CC_IS_AMD(cc) && fp16_mma_available(cc)) { ggml_cuda_flash_attn_ext_wmma_f16(ctx, dst); diff --git a/ggml/src/ggml-cuda/ggml-cuda.cu b/ggml/src/ggml-cuda/ggml-cuda.cu index 51792794673..c0104e3a10e 100644 --- a/ggml/src/ggml-cuda/ggml-cuda.cu +++ b/ggml/src/ggml-cuda/ggml-cuda.cu @@ -2324,6 +2324,9 @@ static bool ggml_cuda_compute_forward(ggml_backend_cuda_context & ctx, struct gg case GGML_GLU_OP_SWIGLU: ggml_cuda_op_swiglu(ctx, dst); break; + case GGML_GLU_OP_SWIGLU_OAI: + ggml_cuda_op_swiglu_oai(ctx, dst); + break; case GGML_GLU_OP_GEGLU_ERF: ggml_cuda_op_geglu_erf(ctx, dst); break; @@ -3218,6 +3221,7 @@ static bool ggml_backend_cuda_device_supports_op(ggml_backend_dev_t dev, const g case GGML_GLU_OP_REGLU: case GGML_GLU_OP_GEGLU: case GGML_GLU_OP_SWIGLU: + case GGML_GLU_OP_SWIGLU_OAI: case GGML_GLU_OP_GEGLU_ERF: case GGML_GLU_OP_GEGLU_QUICK: return ggml_is_contiguous_1(op->src[0]); @@ -3494,6 +3498,10 @@ static bool ggml_backend_cuda_device_supports_op(ggml_backend_dev_t dev, const g const int gqa_ratio = op->src[0]->ne[2] / op->src[1]->ne[2]; return op->src[1]->ne[0] == 576 && op->src[2]->ne[0] == 512 && op->src[3] && gqa_ratio % 16 == 0; } + // TODO: more general-purpose attention sink support [TAG_ATTN_SINKS] + if (op->src[4] && op->src[0]->ne[0] != 64 && op->src[0]->ne[0] != 128) { // currently only sinks for head_size 64 and 128 are supported + return false; + } if (op->src[0]->ne[0] == 192) { return false; } diff --git a/ggml/src/ggml-cuda/softmax.cu b/ggml/src/ggml-cuda/softmax.cu index 14543e978cf..eeacde0bdb1 100644 --- a/ggml/src/ggml-cuda/softmax.cu +++ b/ggml/src/ggml-cuda/softmax.cu @@ -45,7 +45,7 @@ struct soft_max_params { #endif // __clang__ template static __global__ void soft_max_f32( - const float * x, const T * mask, float * dst, const soft_max_params p) { + const float * x, const T * mask, const float * sinks, float * dst, const soft_max_params p) { const int ncols = ncols_template == 0 ? p.ncols : ncols_template; const int tid = threadIdx.x; @@ -77,7 +77,7 @@ static __global__ void soft_max_f32( // shared memory buffer to cache values between iterations: float * vals = use_shared ? buf_iw + WARP_SIZE : dst; - float max_val = -INFINITY; + float max_val = sinks ? sinks[i02] : -INFINITY; #pragma unroll for (int col0 = 0; col0 < ncols; col0 += block_size) { @@ -143,6 +143,10 @@ static __global__ void soft_max_f32( tmp = warp_reduce_sum(tmp); } + if (sinks) { + tmp += expf(sinks[i02] - max_val); + } + const float inv_sum = 1.0f / tmp; #pragma unroll @@ -183,7 +187,7 @@ static __global__ void soft_max_back_f32( } template -static void launch_soft_max_kernels(const float * x, const T * mask, float * dst, +static void launch_soft_max_kernels(const float * x, const T * mask, const float * sinks, float * dst, const soft_max_params & p, cudaStream_t stream, dim3 block_dims, dim3 block_nums, size_t nbytes_shared) { const int id = ggml_cuda_get_device(); @@ -196,7 +200,7 @@ static void launch_soft_max_kernels(const float * x, const T * mask, float * dst if (p.ncols == ncols) { CUDA_SET_SHARED_MEMORY_LIMIT((soft_max_f32), smpbo); soft_max_f32<<>> - (x, mask, dst, p); + (x, mask, sinks, dst, p); return true; } return false; @@ -209,12 +213,12 @@ static void launch_soft_max_kernels(const float * x, const T * mask, float * dst //default case CUDA_SET_SHARED_MEMORY_LIMIT((soft_max_f32), smpbo); - soft_max_f32<<>>(x, mask, dst, p); + soft_max_f32<<>>(x, mask, sinks, dst, p); } template -static void soft_max_f32_cuda(const float * x, const T * mask, float * dst, const soft_max_params & params, cudaStream_t stream) { +static void soft_max_f32_cuda(const float * x, const T * mask, const float * sinks, float * dst, const soft_max_params & params, cudaStream_t stream) { int nth = WARP_SIZE; const int64_t ncols_x = params.ncols; @@ -230,10 +234,10 @@ static void soft_max_f32_cuda(const float * x, const T * mask, float * dst, cons if (nbytes_shared <= smpbo) { - launch_soft_max_kernels<32, 64, 128, 256, 512, 1024, 2048, 4096>(x, mask, dst, params, stream, block_dims, block_nums, nbytes_shared); + launch_soft_max_kernels<32, 64, 128, 256, 512, 1024, 2048, 4096>(x, mask, sinks, dst, params, stream, block_dims, block_nums, nbytes_shared); } else { const size_t nbytes_shared_low = WARP_SIZE*sizeof(float); - soft_max_f32<<>>(x, mask, dst, params); + soft_max_f32<<>>(x, mask, sinks, dst, params); } } @@ -249,9 +253,11 @@ static void soft_max_back_f32_cuda( void ggml_cuda_op_soft_max(ggml_backend_cuda_context & ctx, ggml_tensor * dst) { const ggml_tensor * src0 = dst->src[0]; const ggml_tensor * src1 = dst->src[1]; + const ggml_tensor * src2 = dst->src[2]; const float * src0_d = (const float *) src0->data; const void * src1_d = src1 ? (const void *) src1->data : nullptr; + const void * src2_d = src2 ? (const void *) src2->data : nullptr; float * dst_d = (float *) dst->data; cudaStream_t stream = ctx.stream(); @@ -309,9 +315,9 @@ void ggml_cuda_op_soft_max(ggml_backend_cuda_context & ctx, ggml_tensor * dst) { params.m1 = m1; if (use_f16) { - soft_max_f32_cuda(src0_d, (const half *) src1_d, dst_d, params, stream); + soft_max_f32_cuda(src0_d, (const half *) src1_d, (const float *) src2_d, dst_d, params, stream); } else { - soft_max_f32_cuda(src0_d, (const float *) src1_d, dst_d, params, stream); + soft_max_f32_cuda(src0_d, (const float *) src1_d, (const float *) src2_d, dst_d, params, stream); } } diff --git a/ggml/src/ggml-cuda/unary.cu b/ggml/src/ggml-cuda/unary.cu index 91c830c4dac..5aff8a876af 100644 --- a/ggml/src/ggml-cuda/unary.cu +++ b/ggml/src/ggml-cuda/unary.cu @@ -300,6 +300,81 @@ void ggml_cuda_op_geglu_quick(ggml_backend_cuda_context & ctx, ggml_tensor * dst ggml_cuda_op_unary_gated(ctx, dst); } +// swiglu_oai + +template +static __global__ void swiglu_oai_kernel(const T * x, const T * g, T * dst, const int64_t k, const int64_t n, const int64_t o0, const int64_t o1, float alpha, float limit) { + const int64_t i = int64_t(blockDim.x)*blockIdx.x + threadIdx.x; + + if (i >= k) { + return; + } + + // perform base op and multiply with gate (either offset in same tensor or a separate one) + const int64_t j0 = (i / n) * o0 + (i % n); + const int64_t j1 = o0 == o1 ? j0 : (i / n) * o1 + (i % n); + + float xi = x[j0]; + float gi = g[j1]; + xi = fminf(xi, limit); + gi = fmaxf(fminf(gi, limit), -limit); + + float out_glu = xi / (1.0f + expf(-xi * alpha)); + out_glu = out_glu * (1.0f + gi); + + dst[i] = out_glu; +} + +template +static void swiglu_oai_cuda(const T * x, const T * g, T * dst, const int64_t k, const int64_t n, const int64_t o0, const int64_t o1, const float alpha, const float limit, cudaStream_t stream) { + const int64_t num_blocks = (k + CUDA_GLU_BLOCK_SIZE - 1) / CUDA_GLU_BLOCK_SIZE; + swiglu_oai_kernel<<>>(x, g, dst, k, n, o0, o1, alpha, limit); +} + +void ggml_cuda_op_swiglu_oai(ggml_backend_cuda_context & ctx, ggml_tensor * dst) { + const ggml_tensor * src0 = dst->src[0]; + const ggml_tensor * src1 = dst->src[1]; + void * src0_d = src0->data; + void * src1_d = src1 ? src1->data : src0->data; + const int64_t src0_o = src0->nb[1]; + const int64_t src1_o = src1 ? src1->nb[1] : src0->nb[1]; + void * dst_d = dst->data; + const int64_t nc = src1 ? src0->ne[0] : src0->ne[0] / 2; + cudaStream_t stream = ctx.stream(); + + GGML_ASSERT(ggml_is_contiguous_1(src0)); + GGML_ASSERT(src0->nb[0] == ggml_element_size(src0)); + GGML_ASSERT(ggml_is_contiguous(dst)); + + GGML_ASSERT(src0->type == GGML_TYPE_F32); + GGML_ASSERT( dst->type == GGML_TYPE_F32); + GGML_ASSERT(src0->type == dst->type); + GGML_ASSERT(dst->ne[0] == nc); + GGML_ASSERT(ggml_nrows(dst) == ggml_nrows(src0)); + + if (src1) { + GGML_ASSERT(ggml_is_contiguous_1(src1)); + GGML_ASSERT(src1->nb[0] == ggml_element_size(src1)); + GGML_ASSERT(src1->ne[0] == nc); + GGML_ASSERT(src0->type == src1->type); + } + + //const int32_t swapped = ((const int32_t *) dst->op_params)[1]; + const int32_t swapped = ggml_get_op_params_i32(dst, 1); + const float alpha = ggml_get_op_params_f32(dst, 2); + const float limit = ggml_get_op_params_f32(dst, 3); + + float * src0_p = (float *) src0_d; + float * src1_p = (float *) src1_d; + + if (!src1) { + src0_p += swapped ? nc : 0; + src1_p += swapped ? 0 : nc; + } + + swiglu_oai_cuda(src0_p, src1_p, (float *)dst_d, ggml_nelements(dst), nc, src0_o / sizeof(float), src1_o / sizeof(float), alpha, limit, stream); +} + /* silu_back */ static __device__ __forceinline__ float op_silu_back(float grad, float x) { diff --git a/ggml/src/ggml-cuda/unary.cuh b/ggml/src/ggml-cuda/unary.cuh index cb14d16f8f3..da3caf1d896 100644 --- a/ggml/src/ggml-cuda/unary.cuh +++ b/ggml/src/ggml-cuda/unary.cuh @@ -67,6 +67,8 @@ void ggml_cuda_op_geglu(ggml_backend_cuda_context & ctx, ggml_tensor * dst); void ggml_cuda_op_swiglu(ggml_backend_cuda_context & ctx, ggml_tensor * dst); +void ggml_cuda_op_swiglu_oai(ggml_backend_cuda_context & ctx, ggml_tensor * dst); + void ggml_cuda_op_geglu_erf(ggml_backend_cuda_context & ctx, ggml_tensor * dst); void ggml_cuda_op_geglu_quick(ggml_backend_cuda_context & ctx, ggml_tensor * dst); diff --git a/ggml/src/ggml-metal/ggml-metal-impl.h b/ggml/src/ggml-metal/ggml-metal-impl.h index 8424464d8ca..36e8ad3a39b 100644 --- a/ggml/src/ggml-metal/ggml-metal-impl.h +++ b/ggml/src/ggml-metal/ggml-metal-impl.h @@ -444,6 +444,8 @@ typedef struct{ uint64_t nb1; int32_t i00; int32_t i10; + float alpha; + float limit; } ggml_metal_kargs_glu; typedef struct { diff --git a/ggml/src/ggml-metal/ggml-metal.m b/ggml/src/ggml-metal/ggml-metal.m index 337f7985bad..d930070e0e3 100644 --- a/ggml/src/ggml-metal/ggml-metal.m +++ b/ggml/src/ggml-metal/ggml-metal.m @@ -579,6 +579,7 @@ static void ggml_backend_metal_device_rel(struct ggml_backend_metal_device_conte GGML_METAL_KERNEL_TYPE_REGLU, GGML_METAL_KERNEL_TYPE_GEGLU, GGML_METAL_KERNEL_TYPE_SWIGLU, + GGML_METAL_KERNEL_TYPE_SWIGLU_OAI, GGML_METAL_KERNEL_TYPE_GEGLU_ERF, GGML_METAL_KERNEL_TYPE_GEGLU_QUICK, GGML_METAL_KERNEL_TYPE_SUM_ROWS, @@ -1583,6 +1584,7 @@ @implementation GGMLMetalClass GGML_METAL_ADD_KERNEL(GGML_METAL_KERNEL_TYPE_REGLU, reglu, true); GGML_METAL_ADD_KERNEL(GGML_METAL_KERNEL_TYPE_GEGLU, geglu, true); GGML_METAL_ADD_KERNEL(GGML_METAL_KERNEL_TYPE_SWIGLU, swiglu, true); + GGML_METAL_ADD_KERNEL(GGML_METAL_KERNEL_TYPE_SWIGLU_OAI, swiglu_oai, true); GGML_METAL_ADD_KERNEL(GGML_METAL_KERNEL_TYPE_GEGLU_ERF, geglu_erf, true); GGML_METAL_ADD_KERNEL(GGML_METAL_KERNEL_TYPE_GEGLU_QUICK, geglu_quick, true); GGML_METAL_ADD_KERNEL(GGML_METAL_KERNEL_TYPE_SUM_ROWS, sum_rows, true); @@ -1774,6 +1776,7 @@ static bool ggml_metal_supports_op(const struct ggml_backend_metal_device_contex case GGML_GLU_OP_REGLU: case GGML_GLU_OP_GEGLU: case GGML_GLU_OP_SWIGLU: + case GGML_GLU_OP_SWIGLU_OAI: case GGML_GLU_OP_GEGLU_ERF: case GGML_GLU_OP_GEGLU_QUICK: return ggml_is_contiguous_1(op->src[0]) && op->src[0]->type == GGML_TYPE_F32; @@ -2710,6 +2713,9 @@ static int ggml_metal_encode_node( case GGML_GLU_OP_SWIGLU: pipeline = ctx->kernels[GGML_METAL_KERNEL_TYPE_SWIGLU].pipeline; break; + case GGML_GLU_OP_SWIGLU_OAI: + pipeline = ctx->kernels[GGML_METAL_KERNEL_TYPE_SWIGLU_OAI].pipeline; + break; case GGML_GLU_OP_GEGLU_ERF: pipeline = ctx->kernels[GGML_METAL_KERNEL_TYPE_GEGLU_ERF].pipeline; break; @@ -2720,7 +2726,9 @@ static int ggml_metal_encode_node( GGML_ABORT("fatal error"); } - const int32_t swp = ((const int32_t *) dst->op_params)[1]; + const int32_t swp = ggml_get_op_params_i32(dst, 1); + const float alpha = ggml_get_op_params_f32(dst, 2); + const float limit = ggml_get_op_params_f32(dst, 3); const int32_t i00 = swp ? ne0 : 0; const int32_t i10 = swp ? 0 : ne0; @@ -2734,6 +2742,8 @@ static int ggml_metal_encode_node( /*.nb1 =*/ nb1, /*.i00 =*/ src1 ? 0 : i00, /*.i10 =*/ src1 ? 0 : i10, + /*.alpha=*/ alpha, + /*.limit=*/ limit }; [encoder setComputePipelineState:pipeline]; @@ -2992,8 +3002,13 @@ static int ggml_metal_encode_node( } else { [encoder setBuffer:h_src0 offset:offs_src0 atIndex:1]; } - [encoder setBuffer:id_dst offset:offs_dst atIndex:2]; - [encoder setBytes:&args length:sizeof(args) atIndex:3]; + if (id_src2) { + [encoder setBuffer:id_src2 offset:offs_src2 atIndex:2]; + } else { + [encoder setBuffer:h_src0 offset:offs_src0 atIndex:2]; + } + [encoder setBuffer:id_dst offset:offs_dst atIndex:3]; + [encoder setBytes:&args length:sizeof(args) atIndex:4]; [encoder setThreadgroupMemoryLength:32*sizeof(float) atIndex:0]; @@ -4980,11 +4995,14 @@ static int ggml_metal_encode_node( GGML_ASSERT(ne11 == ne21); GGML_ASSERT(ne12 == ne22); - struct ggml_tensor * src3 = node->src[3]; + struct ggml_tensor * src3 = node->src[3]; // mask + struct ggml_tensor * src4 = node->src[4]; // sinks size_t offs_src3 = 0; + size_t offs_src4 = 0; id id_src3 = src3 ? ggml_metal_get_buffer(src3, &offs_src3) : nil; + id id_src4 = src4 ? ggml_metal_get_buffer(src4, &offs_src4) : nil; GGML_ASSERT(!src3 || src3->type == GGML_TYPE_F16); GGML_ASSERT(!src3 || src3->ne[1] >= GGML_PAD(src0->ne[1], 8) && @@ -5389,7 +5407,12 @@ static int ggml_metal_encode_node( } else { [encoder setBuffer:id_src0 offset:offs_src0 atIndex:4]; } - [encoder setBuffer:id_dst offset:offs_dst atIndex:5]; + if (id_src4) { + [encoder setBuffer:id_src4 offset:offs_src4 atIndex:5]; + } else { + [encoder setBuffer:id_src0 offset:offs_src0 atIndex:5]; + } + [encoder setBuffer:id_dst offset:offs_dst atIndex:6]; if (!use_vec_kernel) { // half8x8 kernel diff --git a/ggml/src/ggml-metal/ggml-metal.metal b/ggml/src/ggml-metal/ggml-metal.metal index 99a453090f6..91ab038f75e 100644 --- a/ggml/src/ggml-metal/ggml-metal.metal +++ b/ggml/src/ggml-metal/ggml-metal.metal @@ -1431,6 +1431,32 @@ kernel void kernel_swiglu( } } +kernel void kernel_swiglu_oai( + device const char * src0, + device const char * src1, + device char * dst, + constant ggml_metal_kargs_glu & args, + uint tgpig[[threadgroup_position_in_grid]], + uint tpitg[[thread_position_in_threadgroup]], + uint ntg[[threads_per_threadgroup]]) { + device const float * src0_row = (device const float *) ((device const char *) src0 + tgpig*args.nb01) + args.i00; + device const float * src1_row = (device const float *) ((device const char *) src1 + tgpig*args.nb11) + args.i10; + device float * dst_row = (device float *) ((device char *) dst + tgpig*args.nb1); + + for (int i0 = tpitg; i0 < args.ne0; i0 += ntg) { + float x0 = src0_row[i0]; + float x1 = src1_row[i0]; + + x0 = min(x0, args.limit); + x1 = max(min(x1, args.limit), -args.limit); + + float out_glu = x0 / (1.0f + exp(-x0 * args.alpha)); + out_glu = out_glu * (1.0f + x1); + + dst_row[i0] = out_glu; + } +} + kernel void kernel_geglu_erf( device const char * src0, device const char * src1, @@ -1534,6 +1560,7 @@ template kernel void kernel_soft_max( device const char * src0, device const char * src1, + device const char * src2, device char * dst, constant ggml_metal_kargs_soft_max & args, threadgroup float * buf [[threadgroup(0)]], @@ -1552,6 +1579,7 @@ kernel void kernel_soft_max( device const float * psrc0 = (device const float *) (src0 + i01*args.nb01 + i02*args.nb02 + i03*args.nb03); device const T * pmask = src1 != src0 ? (device const T * ) (src1 + i11*args.nb11 + i12*args.nb12 + i13*args.nb13) : nullptr; + device const float * psrc2 = src2 != src0 ? (device const float *) (src2) : nullptr; device float * pdst = (device float *) (dst + i01*args.nb1 + i02*args.nb2 + i03*args.nb3); float slope = 1.0f; @@ -1567,7 +1595,7 @@ kernel void kernel_soft_max( } // parallel max - float lmax = -INFINITY; + float lmax = psrc2 ? psrc2[i02] : -INFINITY; for (int i00 = tpitg.x; i00 < args.ne00; i00 += tptg.x) { lmax = MAX(lmax, psrc0[i00]*args.scale + (pmask ? slope*pmask[i00] : 0.0f)); @@ -1623,6 +1651,10 @@ kernel void kernel_soft_max( sum = simd_sum(sum); } + if (psrc2) { + sum += exp(psrc2[i02] - max_val); + } + const float inv_sum = 1.0f/sum; for (int i00 = tpitg.x; i00 < args.ne00; i00 += tptg.x) { @@ -1634,6 +1666,7 @@ template kernel void kernel_soft_max_4( device const char * src0, device const char * src1, + device const char * src2, device char * dst, constant ggml_metal_kargs_soft_max & args, threadgroup float * buf [[threadgroup(0)]], @@ -1652,6 +1685,7 @@ kernel void kernel_soft_max_4( device const float4 * psrc4 = (device const float4 *) (src0 + i01*args.nb01 + i02*args.nb02 + i03*args.nb03); device const T * pmask = src1 != src0 ? (device const T * ) (src1 + i11*args.nb11 + i12*args.nb12 + i13*args.nb13) : nullptr; + device const float * psrc2 = src2 != src0 ? (device const float * ) (src2) : nullptr; device float4 * pdst4 = (device float4 *) (dst + i01*args.nb1 + i02*args.nb2 + i03*args.nb3); float slope = 1.0f; @@ -1666,7 +1700,7 @@ kernel void kernel_soft_max_4( } // parallel max - float4 lmax4 = -INFINITY; + float4 lmax4 = psrc2 ? psrc2[i02] : -INFINITY; for (int i00 = tpitg.x; i00 < args.ne00/4; i00 += tptg.x) { lmax4 = fmax(lmax4, psrc4[i00]*args.scale + (float4)((pmask ? slope*pmask[i00] : 0.0f))); @@ -1725,6 +1759,10 @@ kernel void kernel_soft_max_4( sum = simd_sum(sum); } + if (psrc2) { + sum += exp(psrc2[i02] - max_val); + } + const float inv_sum = 1.0f/sum; for (int i00 = tpitg.x; i00 < args.ne00/4; i00 += tptg.x) { @@ -4092,6 +4130,7 @@ kernel void kernel_flash_attn_ext( device const char * k, device const char * v, device const char * mask, + device const char * sinks, device char * dst, threadgroup half * shmem_f16 [[threadgroup(0)]], uint3 tgpig[[threadgroup_position_in_grid]], @@ -4407,6 +4446,35 @@ kernel void kernel_flash_attn_ext( } } + if (sinks != q && sgitg == 0) { + for (ushort j = 0; j < Q; ++j) { + const float m = M[j]; + const float s = tiisg == 0 ? ((device const float *) sinks)[iq2] : -FLT_MAX/2; + + M[j] = simd_max(max(M[j], s)); + + const float ms = exp(m - M[j]); + const float vs = exp(s - M[j]); + + S[j] = S[j]*ms + simd_sum(vs); + + if (tiisg == j) { + ss[j*TS + 2*C + j] = ms; + } + } + + // O = diag(ms)*O + { + s8x8_t ms; + simdgroup_load(ms, ss + 2*C, TS, 0, false); + + #pragma unroll(DV8) + for (short i = 0; i < DV8; ++i) { + simdgroup_multiply(lo[i], ms, lo[i]); + } + } + } + // these are needed for reducing the results from the simdgroups (reuse the ss buffer) for (short j = tiisg; j < Q; j += NW) { ss[j*TS + 0] = S[j]; @@ -4618,6 +4686,7 @@ kernel void kernel_flash_attn_ext_vec( device const char * k, device const char * v, device const char * mask, + device const char * sinks, device char * dst, threadgroup half * shmem_f16 [[threadgroup(0)]], uint3 tgpig[[threadgroup_position_in_grid]], @@ -4835,6 +4904,23 @@ kernel void kernel_flash_attn_ext_vec( } } + if (sinks != q && sgitg == 0) { + const float m = M; + const float s = tiisg == 0 ? ((device const float *) sinks)[iq2] : -FLT_MAX/2; + + M = simd_max(max(M, s)); + + const float ms = exp(m - M); + const float vs = exp(s - M); + + S = S*ms + simd_sum(vs); + +#pragma unroll(DV4/NL) + for (short ii = 0; ii < DV4; ii += NL) { + lo[ii/NL] *= ms; + } + } + // these are needed for reducing the results from the simdgroups (reuse the ss buffer) if (tiisg == 0) { ss[0] = (s_t) S; diff --git a/ggml/src/ggml-opencl/ggml-opencl.cpp b/ggml/src/ggml-opencl/ggml-opencl.cpp index 984d35a2ecf..e097f8d3267 100644 --- a/ggml/src/ggml-opencl/ggml-opencl.cpp +++ b/ggml/src/ggml-opencl/ggml-opencl.cpp @@ -2483,6 +2483,8 @@ static bool ggml_opencl_supports_op(ggml_backend_dev_t dev, const struct ggml_te case GGML_OP_CLAMP: return op->src[0]->type == GGML_TYPE_F32; case GGML_OP_SOFT_MAX: + // TODO: support attention sinks [TAG_ATTN_SINKS] + return op->src[2] == nullptr; case GGML_OP_NORM: case GGML_OP_RMS_NORM: return true; diff --git a/ggml/src/ggml-sycl/ggml-sycl.cpp b/ggml/src/ggml-sycl/ggml-sycl.cpp index 2acdef98a6a..ed39d878500 100644 --- a/ggml/src/ggml-sycl/ggml-sycl.cpp +++ b/ggml/src/ggml-sycl/ggml-sycl.cpp @@ -4350,6 +4350,10 @@ static bool ggml_backend_sycl_device_supports_op(ggml_backend_dev_t dev, const g if (op->src[0]->ne[3] != 1) { return false; } + // TODO: support attention sinks [TAG_ATTN_SINKS] + if (op->src[2]) { + return false; + } // TODO: support broadcast // ref: https://github.com/ggml-org/llama.cpp/pull/14435 return !op->src[1] || (op->src[1]->ne[2] == 1 && op->src[1]->ne[3] == 1); diff --git a/ggml/src/ggml-vulkan/ggml-vulkan.cpp b/ggml/src/ggml-vulkan/ggml-vulkan.cpp index 75b58c26fc1..17ac2509ac6 100644 --- a/ggml/src/ggml-vulkan/ggml-vulkan.cpp +++ b/ggml/src/ggml-vulkan/ggml-vulkan.cpp @@ -459,6 +459,7 @@ struct vk_device_struct { vk_pipeline pipeline_geglu[2]; vk_pipeline pipeline_reglu[2]; vk_pipeline pipeline_swiglu[2]; + vk_pipeline pipeline_swiglu_oai[2]; vk_pipeline pipeline_geglu_erf[2]; vk_pipeline pipeline_geglu_quick[2]; @@ -681,6 +682,8 @@ struct vk_op_glu_push_constants { uint32_t ne00; uint32_t ne20; uint32_t mode; // 0: default, 1: swapped, 2: split + float alpha; // for swiglu_oai + float limit; }; struct vk_op_unary_push_constants { @@ -811,6 +814,7 @@ struct vk_op_soft_max_push_constants { float m1; uint32_t n_head_log2; uint32_t nrows_x; + uint32_t has_sinks; }; struct vk_op_argsort_push_constants { @@ -2988,6 +2992,7 @@ static void ggml_vk_load_shaders(vk_device& device) { CREATE_GLU(geglu) CREATE_GLU(reglu) CREATE_GLU(swiglu) + CREATE_GLU(swiglu_oai) CREATE_GLU(geglu_erf) CREATE_GLU(geglu_quick) #undef CREATE_GLU @@ -2997,10 +3002,10 @@ static void ggml_vk_load_shaders(vk_device& device) { ggml_vk_create_pipeline(device, device->pipeline_diag_mask_inf_f32, "diag_mask_inf_f32", diag_mask_inf_f32_len, diag_mask_inf_f32_data, "main", 2, sizeof(vk_op_diag_mask_push_constants), {1, 512, 1}, {}, 1, true); - ggml_vk_create_pipeline(device, device->pipeline_soft_max_f32, "soft_max_f32", soft_max_f32_len, soft_max_f32_data, "main", 3, sizeof(vk_op_soft_max_push_constants), {1, 1, 1}, { device->subgroup_size }, 1); - ggml_vk_create_pipeline(device, device->pipeline_soft_max_f32_wg512, "soft_max_f32_wg512", soft_max_f32_len, soft_max_f32_data, "main", 3, sizeof(vk_op_soft_max_push_constants), {1, 1, 1}, { 512 }, 1); - ggml_vk_create_pipeline(device, device->pipeline_soft_max_f32_f16, "soft_max_f32_f16", soft_max_f32_f16_len, soft_max_f32_f16_data, "main", 3, sizeof(vk_op_soft_max_push_constants), {1, 1, 1}, { device->subgroup_size }, 1); - ggml_vk_create_pipeline(device, device->pipeline_soft_max_f32_f16_wg512, "soft_max_f32_f16_wg512", soft_max_f32_f16_len, soft_max_f32_f16_data, "main", 3, sizeof(vk_op_soft_max_push_constants), {1, 1, 1}, { 512 }, 1); + ggml_vk_create_pipeline(device, device->pipeline_soft_max_f32, "soft_max_f32", soft_max_f32_len, soft_max_f32_data, "main", 4, sizeof(vk_op_soft_max_push_constants), {1, 1, 1}, { device->subgroup_size }, 1); + ggml_vk_create_pipeline(device, device->pipeline_soft_max_f32_wg512, "soft_max_f32_wg512", soft_max_f32_len, soft_max_f32_data, "main", 4, sizeof(vk_op_soft_max_push_constants), {1, 1, 1}, { 512 }, 1); + ggml_vk_create_pipeline(device, device->pipeline_soft_max_f32_f16, "soft_max_f32_f16", soft_max_f32_f16_len, soft_max_f32_f16_data, "main", 4, sizeof(vk_op_soft_max_push_constants), {1, 1, 1}, { device->subgroup_size }, 1); + ggml_vk_create_pipeline(device, device->pipeline_soft_max_f32_f16_wg512, "soft_max_f32_f16_wg512", soft_max_f32_f16_len, soft_max_f32_f16_data, "main", 4, sizeof(vk_op_soft_max_push_constants), {1, 1, 1}, { 512 }, 1); ggml_vk_create_pipeline(device, device->pipeline_soft_max_back_f32, "soft_max_back_f32", soft_max_back_f32_len, soft_max_back_f32_data, "main", 3, sizeof(vk_op_push_constants), {1, 1, 1}, { device->subgroup_size }, 1); ggml_vk_create_pipeline(device, device->pipeline_rope_norm_f32, "rope_norm_f32", rope_norm_f32_len, rope_norm_f32_data, "main", 4, sizeof(vk_op_rope_push_constants), {1, 512, 1}, {}, 1); @@ -4536,6 +4541,7 @@ static void ggml_vk_dispatch_pipeline(ggml_backend_vk_context* ctx, vk_context& std::cerr << "}, (" << wg0 << "," << wg1 << "," << wg2 << "))"); GGML_ASSERT(ctx->descriptor_set_idx < ctx->descriptor_sets.size()); GGML_ASSERT(descriptor_buffer_infos.size() <= MAX_PARAMETER_COUNT); + GGML_ASSERT(pipeline->parameter_count == descriptor_buffer_infos.size()); vk::DescriptorSet& descriptor_set = ctx->descriptor_sets[ctx->descriptor_set_idx++]; vk::WriteDescriptorSet write_descriptor_set{ descriptor_set, 0, 0, pipeline->parameter_count, vk::DescriptorType::eStorageBuffer, nullptr, descriptor_buffer_infos.begin() }; @@ -6836,6 +6842,8 @@ static vk_pipeline ggml_vk_op_get_pipeline(ggml_backend_vk_context * ctx, const return ctx->device->pipeline_reglu[dst->type == GGML_TYPE_F16]; case GGML_GLU_OP_SWIGLU: return ctx->device->pipeline_swiglu[dst->type == GGML_TYPE_F16]; + case GGML_GLU_OP_SWIGLU_OAI: + return ctx->device->pipeline_swiglu_oai[dst->type == GGML_TYPE_F16]; case GGML_GLU_OP_GEGLU_ERF: return ctx->device->pipeline_geglu_erf[dst->type == GGML_TYPE_F16]; case GGML_GLU_OP_GEGLU_QUICK: @@ -6851,6 +6859,7 @@ static vk_pipeline ggml_vk_op_get_pipeline(ggml_backend_vk_context * ctx, const return nullptr; case GGML_OP_SOFT_MAX: GGML_ASSERT(!src1 || src1->type == GGML_TYPE_F32 || src1->type == GGML_TYPE_F16); + GGML_ASSERT(!src2 || src2->type == GGML_TYPE_F32); if (src0->type == GGML_TYPE_F32 && (src1 == nullptr || src1->type == GGML_TYPE_F32) && dst->type == GGML_TYPE_F32) { return src0->ne[0] > 1024 ? ctx->device->pipeline_soft_max_f32_wg512 : ctx->device->pipeline_soft_max_f32; @@ -7407,8 +7416,8 @@ static void ggml_vk_op_f32(ggml_backend_vk_context * ctx, vk_context& subctx, co } } - if (op == GGML_OP_SOFT_MAX || op == GGML_OP_GLU) { - // Empty src1 is possible in soft_max, but the shader needs a buffer + if (op == GGML_OP_GLU) { + // Empty src1 is possible in glu, but the shader needs a buffer vk_subbuffer subbuf_y; if (use_src1) { subbuf_y = { d_Y, y_buf_offset, y_sz }; @@ -7418,6 +7427,24 @@ static void ggml_vk_op_f32(ggml_backend_vk_context * ctx, vk_context& subctx, co ggml_vk_sync_buffers(subctx); ggml_vk_dispatch_pipeline(ctx, subctx, pipeline, { vk_subbuffer{ d_X, x_buf_offset, x_sz }, subbuf_y, vk_subbuffer{ d_D, d_buf_offset, d_sz } }, pc, elements); + } else if (op == GGML_OP_SOFT_MAX) { + // Empty src1 and src2 is possible in soft_max, but the shader needs a buffer + vk_subbuffer subbuf_y; + if (use_src1) { + subbuf_y = { d_Y, y_buf_offset, y_sz }; + } else { + subbuf_y = { d_X, 0, x_sz }; + } + + vk_subbuffer subbuf_z; + if (use_src2) { + subbuf_z = { d_Z, z_buf_offset, z_sz }; + } else { + subbuf_z = { d_X, 0, x_sz }; + } + + ggml_vk_sync_buffers(subctx); + ggml_vk_dispatch_pipeline(ctx, subctx, pipeline, { vk_subbuffer{ d_X, x_buf_offset, x_sz }, subbuf_y, subbuf_z, vk_subbuffer{ d_D, d_buf_offset, d_sz } }, pc, elements); } else if (op == GGML_OP_ROPE || op == GGML_OP_ROPE_BACK) { // Empty src2 is possible in rope, but the shader needs a buffer vk_subbuffer subbuf_z; @@ -7964,8 +7991,12 @@ static void ggml_vk_unary(ggml_backend_vk_context * ctx, vk_context& subctx, con } static void ggml_vk_glu(ggml_backend_vk_context * ctx, vk_context& subctx, const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, bool dryrun = false) { + const float * op_params_f = (const float *)dst->op_params; + const bool swapped = (bool)dst->op_params[1]; const bool split = src1 != nullptr; + const float alpha = op_params_f[2]; + const float limit = op_params_f[3]; GGML_ASSERT(ggml_is_contiguous(src0)); @@ -7979,7 +8010,15 @@ static void ggml_vk_glu(ggml_backend_vk_context * ctx, vk_context& subctx, const const uint32_t mode = split ? 2 : (swapped ? 1 : 0); - ggml_vk_op_f32(ctx, subctx, src0, src1, nullptr, dst, GGML_OP_GLU, { (uint32_t)ggml_nelements(dst), (uint32_t)src0->ne[0], (uint32_t)dst->ne[0], mode }, dryrun); + ggml_vk_op_f32(ctx, subctx, src0, src1, nullptr, dst, GGML_OP_GLU, + { + (uint32_t)ggml_nelements(dst), + (uint32_t)src0->ne[0], + (uint32_t)dst->ne[0], + mode, + alpha, + limit + }, dryrun); } static void ggml_vk_diag_mask_inf(ggml_backend_vk_context * ctx, vk_context& subctx, const ggml_tensor * src0, ggml_tensor * dst, bool dryrun = false) { @@ -7987,7 +8026,7 @@ static void ggml_vk_diag_mask_inf(ggml_backend_vk_context * ctx, vk_context& sub ggml_vk_op_f32(ctx, subctx, src0, nullptr, nullptr, dst, GGML_OP_DIAG_MASK_INF, { (uint32_t)src0->ne[0], (uint32_t)src0->ne[1], op_params[0] }, dryrun); } -static void ggml_vk_soft_max(ggml_backend_vk_context * ctx, vk_context& subctx, const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, bool dryrun = false) { +static void ggml_vk_soft_max(ggml_backend_vk_context * ctx, vk_context& subctx, const ggml_tensor * src0, const ggml_tensor * src1, const ggml_tensor * src2, ggml_tensor * dst, bool dryrun = false) { float * op_params = (float *)dst->op_params; float scale = op_params[0]; @@ -8009,7 +8048,7 @@ static void ggml_vk_soft_max(ggml_backend_vk_context * ctx, vk_context& subctx, const float m0 = powf(2.0f, -(max_bias ) / n_head_log2); const float m1 = powf(2.0f, -(max_bias / 2.0f) / n_head_log2); - ggml_vk_op_f32(ctx, subctx, src0, src1, nullptr, dst, GGML_OP_SOFT_MAX, { + ggml_vk_op_f32(ctx, subctx, src0, src1, src2, dst, GGML_OP_SOFT_MAX, { ncols, src1 != nullptr ? nrows_y : (uint32_t)0, (uint32_t)src0->ne[0], (uint32_t)src0->ne[1], (uint32_t)src0->ne[2], @@ -8019,6 +8058,7 @@ static void ggml_vk_soft_max(ggml_backend_vk_context * ctx, vk_context& subctx, m0, m1, n_head_log2, nrows_x, + src2 != nullptr }, dryrun); } @@ -9258,6 +9298,7 @@ static bool ggml_vk_build_graph(ggml_backend_vk_context * ctx, ggml_cgraph * cgr case GGML_GLU_OP_GEGLU: case GGML_GLU_OP_REGLU: case GGML_GLU_OP_SWIGLU: + case GGML_GLU_OP_SWIGLU_OAI: case GGML_GLU_OP_GEGLU_ERF: case GGML_GLU_OP_GEGLU_QUICK: break; @@ -9520,6 +9561,7 @@ static bool ggml_vk_build_graph(ggml_backend_vk_context * ctx, ggml_cgraph * cgr case GGML_GLU_OP_GEGLU: case GGML_GLU_OP_REGLU: case GGML_GLU_OP_SWIGLU: + case GGML_GLU_OP_SWIGLU_OAI: case GGML_GLU_OP_GEGLU_ERF: case GGML_GLU_OP_GEGLU_QUICK: ggml_vk_glu(ctx, compute_ctx, src0, src1, node, dryrun); @@ -9533,7 +9575,7 @@ static bool ggml_vk_build_graph(ggml_backend_vk_context * ctx, ggml_cgraph * cgr break; case GGML_OP_SOFT_MAX: - ggml_vk_soft_max(ctx, compute_ctx, src0, src1, node, dryrun); + ggml_vk_soft_max(ctx, compute_ctx, src0, src1, src2, node, dryrun); break; case GGML_OP_SOFT_MAX_BACK: @@ -9748,6 +9790,7 @@ static bool ggml_vk_compute_forward(ggml_backend_vk_context * ctx, ggml_cgraph * case GGML_GLU_OP_GEGLU: case GGML_GLU_OP_REGLU: case GGML_GLU_OP_SWIGLU: + case GGML_GLU_OP_SWIGLU_OAI: case GGML_GLU_OP_GEGLU_ERF: case GGML_GLU_OP_GEGLU_QUICK: buf = tensor->buffer; @@ -10597,6 +10640,7 @@ static bool ggml_backend_vk_device_supports_op(ggml_backend_dev_t dev, const ggm case GGML_GLU_OP_GEGLU: case GGML_GLU_OP_REGLU: case GGML_GLU_OP_SWIGLU: + case GGML_GLU_OP_SWIGLU_OAI: case GGML_GLU_OP_GEGLU_ERF: case GGML_GLU_OP_GEGLU_QUICK: return ggml_is_contiguous(op->src[0]) && @@ -10679,6 +10723,10 @@ static bool ggml_backend_vk_device_supports_op(ggml_backend_dev_t dev, const ggm if (head_sizes == FA_HEAD_SIZE_UNSUPPORTED) { return false; } + // TODO: support attention sinks [TAG_ATTN_SINKS] + if (op->src[4]) { + return false; + } if (op->src[0]->type != GGML_TYPE_F32) { return false; } diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/glu_head.comp b/ggml/src/ggml-vulkan/vulkan-shaders/glu_head.comp index 004a61fc162..51d70869d95 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/glu_head.comp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/glu_head.comp @@ -14,4 +14,6 @@ layout (push_constant) uniform parameter uint ne00; uint ne20; uint mode; + float alpha; + float limit; } p; diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/soft_max.comp b/ggml/src/ggml-vulkan/vulkan-shaders/soft_max.comp index 5bcd3b1e3dd..5f20a1ee7d5 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/soft_max.comp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/soft_max.comp @@ -20,6 +20,7 @@ layout (push_constant) uniform parameter float m1; uint n_head_log2; uint nrows_x; + uint has_sinks; } p; #include "types.comp" @@ -29,7 +30,8 @@ layout(local_size_x_id = 0, local_size_y = 1, local_size_z = 1) in; layout (binding = 0) readonly buffer X {A_TYPE data_a[];}; layout (binding = 1) readonly buffer Y {B_TYPE data_b[];}; -layout (binding = 2) buffer D {D_TYPE data_d[];}; +layout (binding = 2) readonly buffer Z {float data_c[];}; +layout (binding = 3) buffer D {D_TYPE data_d[];}; shared FLOAT_TYPE vals[BLOCK_SIZE]; @@ -60,13 +62,13 @@ void soft_max(uint num_iters) { const uint h = (rowx / p.ne01) % p.ne02; // head index const float base = h < p.n_head_log2 ? p.m0 : p.m1; - const uint exp = h < p.n_head_log2 ? h + 1 : 2*(h - p.n_head_log2) + 1; + const uint exp = h < p.n_head_log2 ? h + 1 : 2*(h - p.n_head_log2) + 1; slope = pow(base, exp); } // Find max - FLOAT_TYPE max_val = uintBitsToFloat(0xFF800000); + FLOAT_TYPE max_val = p.has_sinks == 0 ? uintBitsToFloat(0xFF800000) : data_c[i02]; // Cache values while we compute the max, so we don't need to read them // again when we're ready to compute exp(x-max). @@ -148,6 +150,10 @@ void soft_max(uint num_iters) { } sum = vals[0]; + if (p.has_sinks != 0) { + sum += FLOAT_TYPE(exp(FLOAT_TYPE(data_c[i02]) - max_val)); + } + FLOAT_TYPE rcpdivisor = 1.0/sum; [[unroll]] for (uint col0 = 0, idx = 0; idx < num_iters; col0 += BLOCK_SIZE, ++idx) { diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/swiglu_oai.comp b/ggml/src/ggml-vulkan/vulkan-shaders/swiglu_oai.comp new file mode 100644 index 00000000000..970750eec08 --- /dev/null +++ b/ggml/src/ggml-vulkan/vulkan-shaders/swiglu_oai.comp @@ -0,0 +1,14 @@ +#version 450 + +#include "glu_head.comp" + +float op(float a, float b) { + float xi = min(a, p.limit); + float gi = max(min(b, p.limit), -p.limit); + + float out_glu = xi / (1.0f + exp(-xi * p.alpha)); + out_glu = out_glu * (1.0f + gi); + return out_glu; +} + +#include "glu_main.comp" diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp b/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp index f9f0c95b8b2..ae77fd22204 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp @@ -602,6 +602,8 @@ void process_shaders() { string_to_spv("reglu_f32" + suffix, "reglu.comp", {{"A_TYPE", "float"}, {"D_TYPE", "float"}, {"RTE16", rte ? "1" : "0"}}); string_to_spv("swiglu_f16" + suffix, "swiglu.comp", {{"A_TYPE", "float16_t"}, {"D_TYPE", "float16_t"}, {"RTE16", rte ? "1" : "0"}}); string_to_spv("swiglu_f32" + suffix, "swiglu.comp", {{"A_TYPE", "float"}, {"D_TYPE", "float"}, {"RTE16", rte ? "1" : "0"}}); + string_to_spv("swiglu_oai_f16" + suffix, "swiglu_oai.comp", {{"A_TYPE", "float16_t"}, {"D_TYPE", "float16_t"}, {"RTE16", rte ? "1" : "0"}}); + string_to_spv("swiglu_oai_f32" + suffix, "swiglu_oai.comp", {{"A_TYPE", "float"}, {"D_TYPE", "float"}, {"RTE16", rte ? "1" : "0"}}); string_to_spv("geglu_erf_f16" + suffix, "geglu_erf.comp", {{"A_TYPE", "float16_t"}, {"D_TYPE", "float16_t"}, {"RTE16", rte ? "1" : "0"}}); string_to_spv("geglu_erf_f32" + suffix, "geglu_erf.comp", {{"A_TYPE", "float"}, {"D_TYPE", "float"}, {"RTE16", rte ? "1" : "0"}}); string_to_spv("geglu_quick_f16" + suffix,"geglu_quick.comp", {{"A_TYPE", "float16_t"}, {"D_TYPE", "float16_t"}, {"RTE16", rte ? "1" : "0"}}); diff --git a/ggml/src/ggml.c b/ggml/src/ggml.c index 124cf3e8b60..aecfaa6a977 100644 --- a/ggml/src/ggml.c +++ b/ggml/src/ggml.c @@ -1140,11 +1140,12 @@ static const char * GGML_GLU_OP_NAME[GGML_GLU_OP_COUNT] = { "REGLU", "GEGLU", "SWIGLU", + "SWIGLU_OAI", "GEGLU_ERF", "GEGLU_QUICK", }; -static_assert(GGML_GLU_OP_COUNT == 5, "GGML_GLU_OP_COUNT != 5"); +static_assert(GGML_GLU_OP_COUNT == 6, "GGML_GLU_OP_COUNT != 6"); static_assert(sizeof(struct ggml_object)%GGML_MEM_ALIGN == 0, "ggml_object size must be a multiple of GGML_MEM_ALIGN"); @@ -2812,6 +2813,19 @@ struct ggml_tensor * ggml_geglu_quick_split( return ggml_glu_impl(ctx, a, b, GGML_GLU_OP_GEGLU_QUICK, false); } +struct ggml_tensor * ggml_swiglu_oai( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + float alpha, + float limit) { + struct ggml_tensor * result = ggml_glu_impl(ctx, a, b, GGML_GLU_OP_SWIGLU_OAI, false); + ggml_set_op_params_f32(result, 2, alpha); + ggml_set_op_params_f32(result, 3, limit); + + return result; +} + // ggml_norm static struct ggml_tensor * ggml_norm_impl( @@ -3779,6 +3793,22 @@ struct ggml_tensor * ggml_soft_max_ext( return ggml_soft_max_impl(ctx, a, mask, scale, max_bias, false); } +void ggml_soft_max_add_sinks( + struct ggml_tensor * a, + struct ggml_tensor * sinks) { + if (!sinks) { + a->src[2] = NULL; + return; + } + + GGML_ASSERT(a->op == GGML_OP_SOFT_MAX); + GGML_ASSERT(a->src[2] == NULL); + GGML_ASSERT(a->src[0]->ne[2] == sinks->ne[0]); + GGML_ASSERT(sinks->type == GGML_TYPE_F32); + + a->src[2] = sinks; +} + // ggml_soft_max_ext_back static struct ggml_tensor * ggml_soft_max_ext_back_impl( @@ -4812,6 +4842,22 @@ enum ggml_prec ggml_flash_attn_ext_get_prec( return (enum ggml_prec) prec_i32; } +void ggml_flash_attn_ext_add_sinks( + struct ggml_tensor * a, + struct ggml_tensor * sinks) { + if (!sinks) { + a->src[4] = NULL; + return; + } + + GGML_ASSERT(a->op == GGML_OP_FLASH_ATTN_EXT); + GGML_ASSERT(a->src[4] == NULL); + GGML_ASSERT(a->src[0]->ne[2] == sinks->ne[0]); + GGML_ASSERT(sinks->type == GGML_TYPE_F32); + + a->src[4] = sinks; +} + // ggml_flash_attn_back struct ggml_tensor * ggml_flash_attn_back( diff --git a/src/llama-arch.cpp b/src/llama-arch.cpp index ea766c906d9..29f015af108 100644 --- a/src/llama-arch.cpp +++ b/src/llama-arch.cpp @@ -2049,7 +2049,7 @@ static const std::map LLM_TENSOR_INFOS = { {LLM_TENSOR_ATTN_KV_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, {LLM_TENSOR_ATTN_K_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, {LLM_TENSOR_ATTN_V_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, - {LLM_TENSOR_ATTN_SINKS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_CONCAT}}, + {LLM_TENSOR_ATTN_SINKS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_SCALE}}, {LLM_TENSOR_DEC_ATTN_Q, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, {LLM_TENSOR_DEC_ATTN_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, {LLM_TENSOR_DEC_ATTN_V, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}}, diff --git a/src/llama-graph.cpp b/src/llama-graph.cpp index 547be198db1..7746e2f333b 100644 --- a/src/llama-graph.cpp +++ b/src/llama-graph.cpp @@ -964,20 +964,11 @@ ggml_tensor * llm_graph_context::build_moe_ffn( } break; case LLM_FFN_SWIGLU_OAI_MOE: { - // ref python code: - // glu = gate * torch.sigmoid(gate * self.alpha) - // next_states = torch.bmm(((up + 1) * glu), self.down_proj) + // TODO: move to hparams? constexpr float alpha = 1.702f; - ggml_tensor * gate = ggml_clamp(ctx0, cur, -9999.0f, 7.0f); - ggml_tensor * glu = ggml_mul(ctx0, gate, - ggml_sigmoid(ctx0, ggml_scale(ctx0, gate, alpha))); - cb(cur, "ffn_moe_oai_glu", il); - - // add extra bias of 1.0 to the up tensor - ggml_tensor * up_b = ggml_scale_bias(ctx0, ggml_clamp(ctx0, up, -7.0f, 7.0f), 1.0f, 1.0f); - - cur = ggml_mul(ctx0, glu, up_b); - cb(cur, "ffn_moe_oai_swiglu", il); + constexpr float limit = 7.0f; + cur = ggml_swiglu_oai(ctx0, cur, up, alpha, limit); + cb(cur, "ffn_moe_swiglu_oai", il); } break; case LLM_FFN_RELU: if (gate_exps) { @@ -1239,6 +1230,7 @@ ggml_tensor * llm_graph_context::build_attn_mha( ggml_tensor * kq_b, ggml_tensor * kq_mask, ggml_tensor * v_mla, + ggml_tensor * sinks, float kq_scale) const { const bool v_trans = v->nb[1] > v->nb[2]; @@ -1275,7 +1267,8 @@ ggml_tensor * llm_graph_context::build_attn_mha( cur = ggml_flash_attn_ext(ctx0, q, k, v, kq_mask, kq_scale, hparams.f_max_alibi_bias, hparams.attn_soft_cap ? hparams.f_attn_logit_softcapping : 0.0f); - ggml_flash_attn_ext_set_prec(cur, GGML_PREC_F32); + ggml_flash_attn_ext_add_sinks(cur, sinks); + ggml_flash_attn_ext_set_prec (cur, GGML_PREC_F32); if (v_mla) { #if 0 @@ -1323,6 +1316,7 @@ ggml_tensor * llm_graph_context::build_attn_mha( } kq = ggml_soft_max_ext(ctx0, kq, kq_mask, kq_scale, hparams.f_max_alibi_bias); + ggml_soft_max_add_sinks(kq, sinks); if (!v_trans) { // note: avoid this branch @@ -1393,7 +1387,7 @@ ggml_tensor * llm_graph_context::build_attn( ggml_tensor * k = k_cur; ggml_tensor * v = v_cur; - ggml_tensor * cur = build_attn_mha(q, k, v, kq_b, kq_mask, v_mla, kq_scale); + ggml_tensor * cur = build_attn_mha(q, k, v, kq_b, kq_mask, v_mla, nullptr, kq_scale); cb(cur, "kqv_out", il); if (wo) { @@ -1481,7 +1475,7 @@ ggml_tensor * llm_graph_context::build_attn( ggml_tensor * k = mctx_cur->get_k(ctx0, il); ggml_tensor * v = mctx_cur->get_v(ctx0, il); - ggml_tensor * cur = build_attn_mha(q, k, v, kq_b, kq_mask, v_mla, kq_scale); + ggml_tensor * cur = build_attn_mha(q, k, v, kq_b, kq_mask, v_mla, nullptr, kq_scale); cb(cur, "kqv_out", il); if (wo) { @@ -1510,6 +1504,32 @@ ggml_tensor * llm_graph_context::build_attn( ggml_tensor * v_mla, float kq_scale, int il) const { + return build_attn_with_sinks( + inp, + wo, + wo_b, + q_cur, + k_cur, + v_cur, + kq_b, + v_mla, + nullptr, + kq_scale, + il); +} + +ggml_tensor * llm_graph_context::build_attn_with_sinks( + llm_graph_input_attn_kv_unified_iswa * inp, + ggml_tensor * wo, + ggml_tensor * wo_b, + ggml_tensor * q_cur, + ggml_tensor * k_cur, + ggml_tensor * v_cur, + ggml_tensor * kq_b, + ggml_tensor * v_mla, + ggml_tensor * sinks, + float kq_scale, + int il) const { // these nodes are added to the graph together so that they are not reordered // by doing so, the number of splits in the graph is reduced ggml_build_forward_expand(gf, q_cur); @@ -1547,7 +1567,7 @@ ggml_tensor * llm_graph_context::build_attn( ggml_tensor * k = mctx_cur->get_k(ctx0, il); ggml_tensor * v = mctx_cur->get_v(ctx0, il); - ggml_tensor * cur = build_attn_mha(q, k, v, kq_b, kq_mask, v_mla, kq_scale); + ggml_tensor * cur = build_attn_mha(q, k, v, kq_b, kq_mask, v_mla, sinks, kq_scale); cb(cur, "kqv_out", il); if (wo) { @@ -1601,7 +1621,7 @@ ggml_tensor * llm_graph_context::build_attn( ggml_tensor * k = k_cur; ggml_tensor * v = v_cur; - ggml_tensor * cur = build_attn_mha(q, k, v, kq_b, kq_mask, v_mla, kq_scale); + ggml_tensor * cur = build_attn_mha(q, k, v, kq_b, kq_mask, v_mla, nullptr, kq_scale); cb(cur, "kqv_out", il); if (wo) { diff --git a/src/llama-graph.h b/src/llama-graph.h index 3eac52af36e..6ff49de3a1c 100644 --- a/src/llama-graph.h +++ b/src/llama-graph.h @@ -685,6 +685,7 @@ struct llm_graph_context { ggml_tensor * v, // [n_embd_head_v, n_head_v, n_tokens] (v_trans == false) ggml_tensor * kq_b, ggml_tensor * kq_mask, + ggml_tensor * sinks, ggml_tensor * v_mla, // [n_embd_head_v_mla, n_embd_head_v, n_head_v] float kq_scale) const; @@ -731,6 +732,20 @@ struct llm_graph_context { float kq_scale, int il) const; + // TODO: temporary to keep the diff small. after the code is public will refactor to simplify this + ggml_tensor * build_attn_with_sinks( + llm_graph_input_attn_kv_unified_iswa * inp, + ggml_tensor * wo, + ggml_tensor * wo_b, + ggml_tensor * q_cur, // [n_embd_head_q, n_head_q, n_tokens] + ggml_tensor * k_cur, // [n_embd_head_k, n_head_k, n_tokens] optional + ggml_tensor * v_cur, // [n_embd_head_v, n_head_v, n_tokens] optional + ggml_tensor * kq_b, + ggml_tensor * v_mla, // [n_embd_head_v_mla, n_embd_head_v, n_head_v] + ggml_tensor * sinks, // [n_head_q] + float kq_scale, + int il) const; + llm_graph_input_attn_cross * build_attn_inp_cross() const; ggml_tensor * build_attn( diff --git a/src/llama-model.cpp b/src/llama-model.cpp index 8c08ea2d051..7d8e5e81b5d 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -258,11 +258,9 @@ static bool weight_buft_supported(const llama_hparams & hparams, ggml_tensor * w ggml_tensor * b = ggml_new_tensor_4d(ctx, GGML_TYPE_F32, n_embd, w->ne[1], 1, 1); op_tensor = ggml_im2col(ctx, w, b, 1, 0, 0, 0, 1, 0, false, GGML_TYPE_F16); } break; - case GGML_OP_CONCAT: + case GGML_OP_SCALE: { - ggml_tensor * a = ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 16, 16); - ggml_tensor * b = ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 16, 16); - op_tensor = ggml_concat(ctx, a, b, 0); + op_tensor = ggml_scale(ctx, w, 1.0f); } break; default: GGML_ABORT("%s: missing test for op %s for tensor %s", __func__, ggml_op_name(op), w->name); @@ -17189,14 +17187,9 @@ struct llm_build_openai_moe_iswa : public llm_graph_context { cb(Kcur, "Kcur", il); cb(Vcur, "Vcur", il); - // cur = build_attn(inp_attn, gf, - // model.layers[il].wo, model.layers[il].bo, - // Qcur, Kcur, Vcur, nullptr, nullptr, 1.0f/sqrtf(float(n_rot)), il); - - ggml_tensor * sink = model.layers[il].attn_sinks; - cur = build_attn_sink(inp_attn, + cur = build_attn_with_sinks(inp_attn, model.layers[il].wo, model.layers[il].bo, - Qcur, Kcur, Vcur, sink, 1.0f/sqrtf(float(n_rot)), il); + Qcur, Kcur, Vcur, nullptr, nullptr, model.layers[il].attn_sinks, 1.0f/sqrtf(float(n_rot)), il); cb(cur, "attn_out", il); } @@ -17257,107 +17250,6 @@ struct llm_build_openai_moe_iswa : public llm_graph_context { ggml_build_forward_expand(gf, cur); } - - // TODO @ngxson : this is a hack - ggml_tensor * build_attn_sink( - llm_graph_input_attn_kv_unified_iswa * inp, - ggml_tensor * wo, - ggml_tensor * wo_b, - ggml_tensor * q_cur, - ggml_tensor * k_cur, - ggml_tensor * v_cur, - ggml_tensor * sink, // [n_rot] - float kq_scale, - int il) const { - // these nodes are added to the graph together so that they are not reordered - // by doing so, the number of splits in the graph is reduced - ggml_build_forward_expand(gf, q_cur); - - if (k_cur) { - ggml_build_forward_expand(gf, k_cur); - } - - if (v_cur) { - ggml_build_forward_expand(gf, v_cur); - } - - const auto * mctx_iswa = static_cast(mctx); - - const bool is_swa = hparams.is_swa(il); - - const auto * mctx_cur = is_swa ? mctx_iswa->get_swa() : mctx_iswa->get_base(); - - // optionally store to KV cache - if (k_cur) { - const auto & k_idxs = is_swa ? inp->get_k_idxs_swa() : inp->get_k_idxs(); - - ggml_build_forward_expand(gf, mctx_cur->cpy_k(ctx0, k_cur, k_idxs, il)); - } - - if (v_cur) { - const auto & v_idxs = is_swa ? inp->get_v_idxs_swa() : inp->get_v_idxs(); - - ggml_build_forward_expand(gf, mctx_cur->cpy_v(ctx0, v_cur, v_idxs, il)); - } - - const auto & kq_mask = is_swa ? inp->get_kq_mask_swa() : inp->get_kq_mask(); - - ggml_tensor * q = q_cur; - ggml_tensor * k = mctx_cur->get_k(ctx0, il); - ggml_tensor * v = mctx_cur->get_v(ctx0, il); - - // attn implementation - ggml_tensor * cur = nullptr; - { - q = ggml_permute(ctx0, q, 0, 2, 1, 3); - k = ggml_permute(ctx0, k, 0, 2, 1, 3); - v = ggml_permute(ctx0, v, 0, 2, 1, 3); - - ggml_tensor * kq = ggml_mul_mat(ctx0, k, q); - ggml_mul_mat_set_prec(kq, GGML_PREC_F32); - - // !! ATTN SINK !! - ggml_tensor * kq_mask_v = ggml_view_2d(ctx0, kq_mask, - kq_mask->ne[0], n_tokens, - ggml_row_size(kq_mask->type, kq_mask->ne[0]), 0); - kq = ggml_add(ctx0, kq, kq_mask_v); - kq = ggml_scale(ctx0, kq, kq_scale); - cb(kq, "kq_masked", il); - - sink = ggml_reshape_3d(ctx0, sink, 1, 1, n_head); // reshape for broadcasting - sink = ggml_repeat_4d(ctx0, sink, 1, n_tokens, n_head, 1); - kq = ggml_concat(ctx0, sink, kq, 0); // append the sinks - cb(kq, "kq_with_sink", il); - - kq = ggml_soft_max_ext(ctx0, kq, nullptr, 1.0f, hparams.f_max_alibi_bias); - kq = ggml_view_3d(ctx0, kq, kq_mask->ne[0], n_tokens, n_head, - ggml_row_size(kq->type, kq->ne[0]), - ggml_row_size(kq->type, kq->ne[0]*n_tokens), - ggml_element_size(kq)); // ignore the sinks - cb(kq, "kq_sink_ignored", il); - - ggml_tensor * kqv = ggml_mul_mat(ctx0, v, kq); - - cur = ggml_permute(ctx0, kqv, 0, 2, 1, 3); - cur = ggml_cont_2d(ctx0, cur, cur->ne[0]*n_head, n_tokens); - if (!cparams.offload_kqv) { - // all nodes between the KV store and the attention output are run on the CPU - ggml_backend_sched_set_tensor_backend(sched, cur, backend_cpu); - } - } - - cb(cur, "kqv_out", il); - - if (wo) { - cur = build_lora_mm(wo, cur); - } - - if (wo_b) { - cur = ggml_add(ctx0, cur, wo_b); - } - - return cur; - } }; struct llm_build_lfm2 : public llm_graph_context { diff --git a/tests/test-backend-ops.cpp b/tests/test-backend-ops.cpp index 479b3fad486..4ab27ebf61d 100644 --- a/tests/test-backend-ops.cpp +++ b/tests/test-backend-ops.cpp @@ -296,6 +296,7 @@ static std::string var_to_str(ggml_scale_mode mode) { #define VARS_TO_STR10(a, b, c, d, e, f, g, h, i, j) VAR_TO_STR(a) + "," + VARS_TO_STR9(b, c, d, e, f, g, h, i, j) #define VARS_TO_STR11(a, b, c, d, e, f, g, h, i, j, k) VAR_TO_STR(a) + "," + VARS_TO_STR10(b, c, d, e, f, g, h, i, j, k) #define VARS_TO_STR12(a, b, c, d, e, f, g, h, i, j, k, l) VAR_TO_STR(a) + "," + VARS_TO_STR11(b, c, d, e, f, g, h, i, j, k, l) +#define VARS_TO_STR13(a, b, c, d, e, f, g, h, i, j, k, l, m) VAR_TO_STR(a) + "," + VARS_TO_STR12(b, c, d, e, f, g, h, i, j, k, l, m) #ifdef GGML_USE_SYCL static bool inline _isinf(float f) { @@ -1886,6 +1887,66 @@ struct test_glu_split : public test_case { } }; +struct test_swiglu_oai : public test_case { + const ggml_type type; + const std::array ne_a; + int v; // view (1 : non-contiguous a) + float alpha; + float limit; + + std::string vars() override { + return VARS_TO_STR5(type, ne_a, v, alpha, limit); + } + + test_swiglu_oai(ggml_type type = GGML_TYPE_F32, + std::array ne_a = {128, 2, 2, 2}, + int v = 0, + float alpha = 1.702f, + float limit = 7.0f) + : type(type), ne_a(ne_a), v(v), alpha(alpha), limit(limit) {} + + ggml_tensor * build_graph(ggml_context * ctx) override { + ggml_tensor * a; + ggml_tensor * b; + if (v & 1) { + auto ne = ne_a; ne[0] *= 3; + a = ggml_new_tensor(ctx, type, 4, ne.data()); + ggml_set_param(a); + ggml_set_name(a, "a"); + + a = ggml_view_4d(ctx, a, ne_a[0], ne_a[1], ne_a[2], ne_a[3], a->nb[1], a->nb[2], a->nb[3], 0); + ggml_set_name(a, "view_of_a"); + + b = ggml_new_tensor(ctx, type, 4, ne.data()); + ggml_set_param(b); + ggml_set_name(b, "b"); + + b = ggml_view_4d(ctx, b, ne_a[0], ne_a[1], ne_a[2], ne_a[3], b->nb[1], b->nb[2], b->nb[3], 0); + ggml_set_name(a, "view_of_b"); + } else { + a = ggml_new_tensor(ctx, type, 4, ne_a.data()); + ggml_set_param(a); + ggml_set_name(a, "a"); + + b = ggml_new_tensor(ctx, type, 4, ne_a.data()); + ggml_set_param(b); + ggml_set_name(b, "b"); + } + + ggml_tensor * out = ggml_swiglu_oai(ctx, a, b, alpha, limit); + ggml_set_name(out, "out"); + + return out; + } + + void initialize_tensors(ggml_context * ctx) override { + for (ggml_tensor * t = ggml_get_first_tensor(ctx); t != NULL; t = ggml_get_next_tensor(ctx, t)) { + // test extended range of values to check for NaNs in GELU + init_tensor_uniform(t, -150.f, 150.f); + } + } +}; + // GGML_OP_GET_ROWS struct test_get_rows : public test_case { const ggml_type type; @@ -3447,13 +3508,14 @@ struct test_soft_max : public test_case { const ggml_type type; const std::array ne; const bool mask; + const bool sinks; const ggml_type m_prec; const std::array nr23; // broadcast only dims 2 and 3 const float scale; const float max_bias; std::string vars() override { - return VARS_TO_STR7(type, ne, mask, m_prec, nr23, scale, max_bias); + return VARS_TO_STR8(type, ne, mask, sinks, m_prec, nr23, scale, max_bias); } // the 1024 test with bias occasionally fails: @@ -3465,11 +3527,12 @@ struct test_soft_max : public test_case { test_soft_max(ggml_type type = GGML_TYPE_F32, std::array ne = {10, 5, 4, 3}, bool mask = false, + bool sinks = false, ggml_type m_prec = GGML_TYPE_F32, std::array nr23 = {1, 1}, float scale = 1.0f, float max_bias = 0.0f) - : type(type), ne(ne), mask(mask), m_prec(m_prec), nr23(nr23), scale(scale), max_bias(max_bias) {} + : type(type), ne(ne), mask(mask), sinks(sinks), m_prec(m_prec), nr23(nr23), scale(scale), max_bias(max_bias) {} ggml_tensor * build_graph(ggml_context * ctx) override { ggml_tensor * a = ggml_new_tensor_4d(ctx, type, ne[0], ne[1], ne[2]*nr23[0], ne[3]*nr23[1]); @@ -3482,7 +3545,14 @@ struct test_soft_max : public test_case { ggml_set_name(mask, "mask"); } + ggml_tensor * sinks = nullptr; + if (this->sinks) { + sinks = ggml_new_tensor_1d(ctx, GGML_TYPE_F32, ne[2]*nr23[0]); + ggml_set_name(sinks, "sinks"); + } + ggml_tensor * out = ggml_soft_max_ext(ctx, a, mask, scale, max_bias); + ggml_soft_max_add_sinks(out, sinks); ggml_set_name(out, "out"); return out; @@ -4433,6 +4503,7 @@ struct test_flash_attn_ext : public test_case { const int64_t nb; // batch size const bool mask; // use mask + const bool sinks; // use sinks const float max_bias; // ALiBi const float logit_softcap; // Gemma 2 @@ -4442,7 +4513,7 @@ struct test_flash_attn_ext : public test_case { std::array permute; std::string vars() override { - return VARS_TO_STR12(hsk, hsv, nh, nr23, kv, nb, mask, max_bias, logit_softcap, prec, type_KV, permute); + return VARS_TO_STR13(hsk, hsv, nh, nr23, kv, nb, mask, sinks, max_bias, logit_softcap, prec, type_KV, permute); } double max_nmse_err() override { @@ -4457,9 +4528,9 @@ struct test_flash_attn_ext : public test_case { } test_flash_attn_ext(int64_t hsk = 128, int64_t hsv = 128, int64_t nh = 32, std::array nr23 = {1, 1}, int64_t kv = 96, int64_t nb = 8, - bool mask = true, float max_bias = 0.0f, float logit_softcap = 0.0f, ggml_prec prec = GGML_PREC_F32, + bool mask = true, bool sinks = false, float max_bias = 0.0f, float logit_softcap = 0.0f, ggml_prec prec = GGML_PREC_F32, ggml_type type_KV = GGML_TYPE_F16, std::array permute = {0, 1, 2, 3}) - : hsk(hsk), hsv(hsv), nh(nh), nr23(nr23), kv(kv), nb(nb), mask(mask), max_bias(max_bias), logit_softcap(logit_softcap), prec(prec), type_KV(type_KV), permute(permute) {} + : hsk(hsk), hsv(hsv), nh(nh), nr23(nr23), kv(kv), nb(nb), mask(mask), sinks(sinks), max_bias(max_bias), logit_softcap(logit_softcap), prec(prec), type_KV(type_KV), permute(permute) {} ggml_tensor * build_graph(ggml_context * ctx) override { const int64_t hsk_padded = GGML_PAD(hsk, ggml_blck_size(type_KV)); @@ -4499,13 +4570,31 @@ struct test_flash_attn_ext : public test_case { ggml_set_name(m, "m"); } + ggml_tensor * s = nullptr; + if (sinks) { + s = ggml_new_tensor_1d(ctx, GGML_TYPE_F32, q->ne[2]); + ggml_set_name(s, "s"); + } + ggml_tensor * out = ggml_flash_attn_ext(ctx, q, k, v, m, 1.0f/sqrtf(hsk), max_bias, logit_softcap); - ggml_flash_attn_ext_set_prec(out, prec); + ggml_flash_attn_ext_add_sinks(out, s); + ggml_flash_attn_ext_set_prec (out, prec); ggml_set_name(out, "out"); return out; } + void initialize_tensors(ggml_context * ctx) override { + for (ggml_tensor * t = ggml_get_first_tensor(ctx); t != NULL; t = ggml_get_next_tensor(ctx, t)) { + if (strcmp(t->name, "s") == 0) { + // make the sink values more noticable in order to trigger a test failure when the implementation is wrong + init_tensor_uniform(t, -10.0f, 10.0f); + } else { + init_tensor_uniform(t); + } + } + } + bool grad_precise() override { return true; } @@ -5089,6 +5178,11 @@ static std::vector> make_test_cases_eval() { for (ggml_type type : {GGML_TYPE_F16, GGML_TYPE_F32}) { for (int v : {0, 1}) { for (int op = 0; op < GGML_GLU_OP_COUNT; op++) { + if (op == GGML_GLU_OP_SWIGLU_OAI) { + // SWIGLU_OAI is handled separately + continue; + } + for (bool swapped : {false, true}) { test_cases.emplace_back(new test_glu((ggml_glu_op) op, type, { 128, 2, 2, 2 }, v, swapped)); test_cases.emplace_back(new test_glu((ggml_glu_op) op, type, { 5, 7, 11, 13 }, v, swapped)); @@ -5100,6 +5194,14 @@ static std::vector> make_test_cases_eval() { } } + for (int v : {0, 1}) { + for (float alpha : {.5f, 1.702f}) { + for (float limit : {2.0f, 7.0f}) { + test_cases.emplace_back(new test_swiglu_oai(GGML_TYPE_F32, { 128, 2, 2, 2 }, v, alpha, limit)); + } + } + } + test_cases.emplace_back(new test_get_rows(GGML_TYPE_F32, 1, 8, 2, 1, false)); for (ggml_type type : all_types) { for (int b : {1, 7}) { @@ -5695,38 +5797,40 @@ static std::vector> make_test_cases_eval() { } #endif for (bool mask : {false, true}) { - for (float max_bias : {0.0f, 8.0f}) { - if (!mask && max_bias > 0.0f) continue; - for (float scale : {1.0f, 0.1f}) { - for (int64_t ne0 : {16, 1024}) { - for (int64_t ne1 : {16, 1024}) { - if (mask) { - for (ggml_type m_prec : {GGML_TYPE_F32, GGML_TYPE_F16}) { - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0, ne1, 1, 1}, mask, m_prec, {1, 1}, scale, max_bias)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0-1, ne1-1, 1, 1}, mask, m_prec, {1, 1}, scale, max_bias)); - - if (ne0 <= 32 && ne1 <= 32) { - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0, ne1, 1, 3}, mask, m_prec, {3, 1}, scale, max_bias)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0-1, ne1-1, 1, 1}, mask, m_prec, {2, 3}, scale, max_bias)); + for (bool sinks : {false, true}) { + for (float max_bias : {0.0f, 8.0f}) { + if (!mask && max_bias > 0.0f) continue; + for (float scale : {1.0f, 0.1f}) { + for (int64_t ne0 : {16, 1024}) { + for (int64_t ne1 : {16, 1024}) { + if (mask) { + for (ggml_type m_prec : {GGML_TYPE_F32, GGML_TYPE_F16}) { + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0, ne1, 1, 1}, mask, sinks, m_prec, {1, 1}, scale, max_bias)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0-1, ne1-1, 1, 1}, mask, sinks, m_prec, {1, 1}, scale, max_bias)); + + if (ne0 <= 32 && ne1 <= 32) { + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0, ne1, 1, 3}, mask, sinks, m_prec, {3, 1}, scale, max_bias)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0-1, ne1-1, 1, 1}, mask, sinks, m_prec, {2, 3}, scale, max_bias)); + } } + } else { + /* The precision of mask here doesn't matter as boolean mask is false */ + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0, ne1, 1, 1}, mask, sinks, GGML_TYPE_F32, {1, 1}, scale, max_bias)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0-1, ne1-1, 1, 1}, mask, sinks, GGML_TYPE_F32, {1, 1}, scale, max_bias)); } - } else { - /* The precision of mask here doesn't matter as boolean mask is false */ - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0, ne1, 1, 1}, mask, GGML_TYPE_F32, {1, 1}, scale, max_bias)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {ne0-1, ne1-1, 1, 1}, mask, GGML_TYPE_F32, {1, 1}, scale, max_bias)); } } } } } } - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {16, 2, 32, 1}, true, GGML_TYPE_F32, {1, 1}, 0.1f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {16, 2, 32, 1}, true, GGML_TYPE_F16, {1, 1}, 0.1f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {16, 2, 32, 1}, false, GGML_TYPE_F32, {1, 1}, 0.1f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {32, 2, 32, 1}, true, GGML_TYPE_F32, {1, 1}, 0.1f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {32, 2, 32, 1}, true, GGML_TYPE_F16, {1, 1}, 0.1f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {32, 2, 32, 1}, true, GGML_TYPE_F32, {1, 1}, 0.1f, 8.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {32, 2, 32, 1}, true, GGML_TYPE_F16, {1, 1}, 0.1f, 8.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {16, 2, 32, 1}, true, true, GGML_TYPE_F32, {1, 1}, 0.1f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {16, 2, 32, 1}, true, false, GGML_TYPE_F16, {1, 1}, 0.1f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {16, 2, 32, 1}, false, true, GGML_TYPE_F32, {1, 1}, 0.1f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {32, 2, 32, 1}, true, true, GGML_TYPE_F32, {1, 1}, 0.1f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {32, 2, 32, 1}, true, false, GGML_TYPE_F16, {1, 1}, 0.1f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {32, 2, 32, 1}, true, true, GGML_TYPE_F32, {1, 1}, 0.1f, 8.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {32, 2, 32, 1}, true, true, GGML_TYPE_F16, {1, 1}, 0.1f, 8.0f)); for (float max_bias : {0.0f, 8.0f}) { for (float scale : {1.0f, 0.1f}) { @@ -5830,27 +5934,29 @@ static std::vector> make_test_cases_eval() { if (hsk == 576 && hsv != 512) continue; // DeepSeek MLA for (bool mask : { true, false } ) { - for (float max_bias : { 0.0f, 8.0f }) { - if (!mask && max_bias > 0.0f) continue; - for (float logit_softcap : {0.0f, 10.0f}) { - if (hsk != 128 && logit_softcap != 0.0f) continue; - for (int nh : { 4, }) { - for (int nr3 : { 1, 3, }) { - if (hsk > 64 && nr3 > 1) continue; // skip broadcast for large head sizes - for (int nr2 : { 1, 4, 16 }) { - if (nr2 == 16 && hsk != 128) continue; - for (int kv : { 512, 1024, }) { - if (nr2 != 1 && kv != 512) continue; - for (int nb : { 1, 3, 32, 35, }) { - for (ggml_prec prec : {GGML_PREC_F32, GGML_PREC_DEFAULT}) { - if (hsk != 128 && prec == GGML_PREC_DEFAULT) continue; - for (ggml_type type_KV : {GGML_TYPE_F16, GGML_TYPE_BF16, GGML_TYPE_Q8_0, GGML_TYPE_Q4_0}) { - test_cases.emplace_back(new test_flash_attn_ext( - hsk, hsv, nh, {nr2, nr3}, kv, nb, mask, max_bias, logit_softcap, prec, type_KV)); - // run fewer test cases permuted - if (mask == true && max_bias == 0.0f && logit_softcap == 0 && kv == 512) { + for (bool sinks : { true, false } ) { + for (float max_bias : { 0.0f, 8.0f }) { + if (!mask && max_bias > 0.0f) continue; + for (float logit_softcap : {0.0f, 10.0f}) { + if (hsk != 128 && logit_softcap != 0.0f) continue; + for (int nh : { 4, }) { + for (int nr3 : { 1, 3, }) { + if (hsk > 64 && nr3 > 1) continue; // skip broadcast for large head sizes + for (int nr2 : { 1, 4, 16 }) { + if (nr2 == 16 && hsk != 128) continue; + for (int kv : { 512, 1024, }) { + if (nr2 != 1 && kv != 512) continue; + for (int nb : { 1, 3, 32, 35, }) { + for (ggml_prec prec : {GGML_PREC_F32, GGML_PREC_DEFAULT}) { + if (hsk != 128 && prec == GGML_PREC_DEFAULT) continue; + for (ggml_type type_KV : {GGML_TYPE_F16, GGML_TYPE_BF16, GGML_TYPE_Q8_0, GGML_TYPE_Q4_0}) { test_cases.emplace_back(new test_flash_attn_ext( - hsk, hsv, nh, {nr2, nr3}, kv, nb, mask, max_bias, logit_softcap, prec, type_KV, {0, 2, 1, 3})); + hsk, hsv, nh, {nr2, nr3}, kv, nb, mask, sinks, max_bias, logit_softcap, prec, type_KV)); + // run fewer test cases permuted + if (mask == true && max_bias == 0.0f && logit_softcap == 0 && kv == 512) { + test_cases.emplace_back(new test_flash_attn_ext( + hsk, hsv, nh, {nr2, nr3}, kv, nb, mask, sinks, max_bias, logit_softcap, prec, type_KV, {0, 2, 1, 3})); + } } } } @@ -5935,14 +6041,14 @@ static std::vector> make_test_cases_perf() { test_cases.emplace_back(new test_cpy(GGML_TYPE_F32, GGML_TYPE_F32, {8192, 512, 2, 1}, {0, 2, 1, 3})); test_cases.emplace_back(new test_cpy(GGML_TYPE_F32, GGML_TYPE_F32, {3072, 512, 2, 1}, {0, 2, 1, 3})); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {4096, 4096, 5, 1}, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {12888, 256, 5, 1}, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {77, 4096, 5, 1}, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {1024, 1024, 10, 1}, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {77, 1024, 10, 1}, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {256, 256, 20, 1}, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {64, 64, 20, 1}, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); - test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {77, 64, 20, 1}, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {4096, 4096, 5, 1}, false, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {12888, 256, 5, 1}, false, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {77, 4096, 5, 1}, false, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {1024, 1024, 10, 1}, false, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {77, 1024, 10, 1}, false, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {256, 256, 20, 1}, false, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {64, 64, 20, 1}, false, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); + test_cases.emplace_back(new test_soft_max(GGML_TYPE_F32, {77, 64, 20, 1}, false, false, GGML_TYPE_F32, {1, 1}, 1.0f, 0.0f)); test_cases.emplace_back(new test_argmax(GGML_TYPE_F32, {32, 10, 1, 1})); test_cases.emplace_back(new test_argmax(GGML_TYPE_F32, {1024, 10, 1, 1})); @@ -5974,7 +6080,7 @@ static std::vector> make_test_cases_perf() { for (int kv : { 4096, 8192, 16384, }) { for (int hs : { 64, 128, }) { for (int nr : { 1, 4, }) { - test_cases.emplace_back(new test_flash_attn_ext(hs, hs, 8, {nr, 1}, kv, 1, true, 0, 0, GGML_PREC_F32, GGML_TYPE_F16)); + test_cases.emplace_back(new test_flash_attn_ext(hs, hs, 8, {nr, 1}, kv, 1, true, false, 0, 0, GGML_PREC_F32, GGML_TYPE_F16)); } } } From 832dc26ccf60c8c7bf5693166a8ffa5dc3ba8e28 Mon Sep 17 00:00:00 2001 From: Xuan-Son Nguyen Date: Fri, 1 Aug 2025 17:47:39 +0200 Subject: [PATCH 14/37] repack mxfp4 upon conversion --- convert_hf_to_gguf.py | 128 ++++++++++++++++++++++++++++++++------ gguf-py/gguf/constants.py | 8 ++- src/llama-arch.cpp | 2 +- src/llama-chat.cpp | 2 +- 4 files changed, 117 insertions(+), 23 deletions(-) diff --git a/convert_hf_to_gguf.py b/convert_hf_to_gguf.py index 9575082366d..c32c09a8f95 100755 --- a/convert_hf_to_gguf.py +++ b/convert_hf_to_gguf.py @@ -7713,9 +7713,112 @@ def set_vocab(self): self.gguf_writer.add_chat_template(chat_template) -@ModelBase.register("OpenAIMoeForCausalLM") -class OpenAIMoeModel(TextModel): - model_arch = gguf.MODEL_ARCH.OPENAI_MOE +@ModelBase.register("GptOssForCausalLM") +class GptOssModel(TextModel): + model_arch = gguf.MODEL_ARCH.GPT_OSS + + def repack_mxfp4(self, new_name: str, blocks: Tensor, scales: Tensor): + assert blocks.dtype == torch.uint8 + assert scales.dtype == torch.uint8 + scales = scales.unsqueeze(-1) + assert len(blocks.shape) == 4 + assert len(scales.shape) == 4 + new_data = torch.cat([scales, blocks], dim=-1) + new_data = new_data.numpy() + new_shape = [scales.shape[0], scales.shape[1], scales.shape[2] * 32] + logger.info(f"Repacked {new_name} with shape {new_shape} and quantization MXFP4") + self.gguf_writer.add_tensor(new_name, new_data, new_shape, gguf.GGMLQuantizationType.MXFP4) + + def convert_moe_packed_tensors( + self, + new_name: str, + blocks, + scales, + *, + dtype: torch.dtype = torch.float16, + rows_per_chunk: int = 32768 * 1024, + ): + import math + + scales = scales.to(torch.int32) - 127 + + assert blocks.shape[:-1] == scales.shape, f"{blocks.shape=} does not match {scales.shape=}" + + FP4_VALUES = [ + +0.0, + +0.5, + +1.0, + +1.5, + +2.0, + +3.0, + +4.0, + +6.0, + -0.0, + -0.5, + -1.0, + -1.5, + -2.0, + -3.0, + -4.0, + -6.0, + ] + blocks = blocks.to(device="cpu") + scales = scales.to(device="cpu") + lut = torch.tensor(FP4_VALUES, dtype=dtype, device=blocks.device) + + *prefix_shape, G, B = blocks.shape + rows_total = math.prod(prefix_shape) * G + + blocks = blocks.reshape(rows_total, B) + scales = scales.reshape(rows_total, 1) + + out = torch.empty(rows_total, B * 2, dtype=dtype, device="cpu") + + for r0 in range(0, rows_total, rows_per_chunk): + r1 = min(r0 + rows_per_chunk, rows_total) + + blk = blocks[r0:r1] + exp = scales[r0:r1] + + # nibble indices -> int64 + idx_lo = (blk & 0x0F).to(torch.long) + idx_hi = (blk >> 4).to(torch.long) + + sub = out[r0:r1] + sub[:, 0::2] = lut[idx_lo] + sub[:, 1::2] = lut[idx_hi] + + torch.ldexp(sub, exp, out=sub) + del idx_lo, idx_hi, blk, exp + + out = out.reshape(*prefix_shape, G, B * 2).view(*prefix_shape, G * B * 2) + out = out.numpy() + logger.info(f"Unpacked {new_name} with shape {out.shape} from MXFP4 to F16") + print(out.dtype, out.device, out.shape) + self.gguf_writer.add_tensor(new_name, out) + + def generate_extra_tensors(self) -> Iterable[tuple[str, Tensor]]: + blocks0: Tensor = torch.zeros(1) + blocks1: Tensor = torch.zeros(1) + # we assume that tensors are loaded in the correct order + for name, data_torch in self.get_tensors(): + if "mlp.experts.down_proj_blocks" in name: + blocks0 = data_torch + elif "mlp.experts.down_proj_scales" in name: + new_name = self.map_tensor_name(name.replace("_scales", ".weight")) + #self.repack_mxfp4(new_name, blocks0, data_torch) + self.convert_moe_packed_tensors(new_name, blocks0, data_torch) + elif "mlp.experts.gate_up_proj_blocks" in name: + blocks0, blocks1 = data_torch[:, ::2, :, :], data_torch[:, 1::2, :, :] + elif "mlp.experts.gate_up_proj_scales" in name: + scales0, scales1 = data_torch[:, ::2, :], data_torch[:, 1::2, :] + new_name_gate = self.map_tensor_name(name.replace("gate_up_proj_scales", "gate_proj.weight")) + new_name_up = self.map_tensor_name(name.replace("gate_up_proj_scales", "up_proj.weight")) + # self.repack_mxfp4(new_name_gate, blocks0, scales0) + # self.repack_mxfp4(new_name_up, blocks1, scales1) + self.convert_moe_packed_tensors(new_name_gate, blocks0, scales0) + self.convert_moe_packed_tensors(new_name_up, blocks1, scales1) + return [] def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iterable[tuple[str, Tensor]]: del bid # unused @@ -7728,32 +7831,20 @@ def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iter if name.endswith("_bias"): name = name.replace("down_proj_bias", "down_proj.bias") else: - name = name.replace("down_proj", "down_proj.weight") - data_torch = data_torch.transpose(-1, -2) + return [] # split the gate_up into gate and up if "gate_up_proj" in name: if name.endswith("_bias"): name_up = name.replace("gate_up_proj_bias", "up_proj.bias") name_gate = name.replace("gate_up_proj_bias", "gate_proj.bias") - #dim_half = data_torch.shape[-1] // 2 - #gate_proj_bias, up_proj_bias = data_torch.split(dim_half, dim=-1) gate_proj_bias, up_proj_bias = data_torch[..., ::2], data_torch[..., 1::2] return [ (self.map_tensor_name(name_gate), gate_proj_bias), (self.map_tensor_name(name_up), up_proj_bias) ] else: - name_up = name.replace("gate_up_proj", "up_proj.weight") - name_gate = name.replace("gate_up_proj", "gate_proj.weight") - #dim_half = data_torch.shape[-1] // 2 - #gate_proj_weight, up_proj_weight = data_torch.transpose(-1, -2).split(dim_half, dim=-2) - data_torch = data_torch.transpose(-1, -2) - gate_proj_weight, up_proj_weight = data_torch[:, ::2, :], data_torch[:, 1::2, :] - return [ - (self.map_tensor_name(name_gate), gate_proj_weight), - (self.map_tensor_name(name_up), up_proj_weight) - ] + return [] return [(self.map_tensor_name(name), data_torch)] @@ -7767,7 +7858,7 @@ def set_gguf_parameters(self): rope_scaling = self.hparams.get("rope_scaling") or {} rope_type = rope_scaling.get("rope_type", rope_scaling.get("type")) - assert rope_type == "yarn", f"OpenAI MoE only supports yarn rope scaling, got {rope_type}" + assert rope_type == "yarn", f"GPT-OSS only supports yarn rope scaling, got {rope_type}" self.gguf_writer.add_rope_scaling_type(gguf.RopeScalingType.YARN) self.gguf_writer.add_rope_scaling_factor(rope_scaling["factor"]) self.gguf_writer.add_rope_scaling_orig_ctx_len(rope_scaling.get("original_max_position_embeddings", 4096)) @@ -7912,6 +8003,7 @@ class LazyTorchTensor(gguf.LazyBase): _dtype_map: dict[torch.dtype, type] = { torch.float16: np.float16, torch.float32: np.float32, + torch.uint8: np.uint8, } # used for safetensors slices diff --git a/gguf-py/gguf/constants.py b/gguf-py/gguf/constants.py index 6179cd9c32f..a5f19767a20 100644 --- a/gguf-py/gguf/constants.py +++ b/gguf-py/gguf/constants.py @@ -377,7 +377,7 @@ class MODEL_ARCH(IntEnum): ERNIE4_5_MOE = auto() HUNYUAN_MOE = auto() SMOLLM3 = auto() - OPENAI_MOE = auto() + GPT_OSS = auto() LFM2 = auto() DREAM = auto() SMALLTHINKER = auto() @@ -700,7 +700,7 @@ class MODEL_TENSOR(IntEnum): MODEL_ARCH.FALCON_H1: "falcon-h1", MODEL_ARCH.HUNYUAN_MOE: "hunyuan-moe", MODEL_ARCH.SMOLLM3: "smollm3", - MODEL_ARCH.OPENAI_MOE: "openai-moe", + MODEL_ARCH.GPT_OSS: "gpt-oss", MODEL_ARCH.LFM2: "lfm2", MODEL_ARCH.DREAM: "dream", MODEL_ARCH.SMALLTHINKER: "smallthinker", @@ -2491,7 +2491,7 @@ class MODEL_TENSOR(IntEnum): MODEL_TENSOR.FFN_DOWN, MODEL_TENSOR.FFN_UP, ], - MODEL_ARCH.OPENAI_MOE: [ + MODEL_ARCH.GPT_OSS: [ MODEL_TENSOR.TOKEN_EMBD, MODEL_TENSOR.OUTPUT_NORM, MODEL_TENSOR.OUTPUT, @@ -2661,6 +2661,7 @@ class GGMLQuantizationType(IntEnum): BF16 = 30 TQ1_0 = 34 TQ2_0 = 35 + MXFP4 = 39 class ExpertGatingFuncType(IntEnum): @@ -2801,6 +2802,7 @@ class VisionProjectorType: GGMLQuantizationType.BF16: (1, 2), GGMLQuantizationType.TQ1_0: (256, 2 + 4 * 13), GGMLQuantizationType.TQ2_0: (256, 2 + 64), + GGMLQuantizationType.MXFP4: (1, 1), # quick hack to write MXFP4 as U8 } diff --git a/src/llama-arch.cpp b/src/llama-arch.cpp index 29f015af108..96c035a9d4c 100644 --- a/src/llama-arch.cpp +++ b/src/llama-arch.cpp @@ -86,7 +86,7 @@ static const std::map LLM_ARCH_NAMES = { { LLM_ARCH_ERNIE4_5_MOE, "ernie4_5-moe" }, { LLM_ARCH_HUNYUAN_MOE, "hunyuan-moe" }, { LLM_ARCH_SMOLLM3, "smollm3" }, - { LLM_ARCH_OPENAI_MOE, "openai-moe" }, + { LLM_ARCH_OPENAI_MOE, "gpt-oss" }, { LLM_ARCH_LFM2, "lfm2" }, { LLM_ARCH_DREAM, "dream" }, { LLM_ARCH_SMALLTHINKER, "smallthinker" }, diff --git a/src/llama-chat.cpp b/src/llama-chat.cpp index 5ab8bd1897a..68621714c1d 100644 --- a/src/llama-chat.cpp +++ b/src/llama-chat.cpp @@ -66,7 +66,7 @@ static const std::map LLM_CHAT_TEMPLATES = { { "llama4", LLM_CHAT_TEMPLATE_LLAMA4 }, { "smolvlm", LLM_CHAT_TEMPLATE_SMOLVLM }, { "hunyuan-moe", LLM_CHAT_TEMPLATE_HUNYUAN_MOE }, - { "openai-moe", LLM_CHAT_TEMPLATE_OPENAI_MOE }, + { "gpt-oss", LLM_CHAT_TEMPLATE_OPENAI_MOE }, { "kimi-k2", LLM_CHAT_TEMPLATE_KIMI_K2 }, }; From c68069d13ca473ff81e4bd2e5a841b73127f8af5 Mon Sep 17 00:00:00 2001 From: Xuan-Son Nguyen Date: Fri, 1 Aug 2025 18:50:15 +0200 Subject: [PATCH 15/37] clean up a bit --- convert_hf_to_gguf.py | 14 ++++++++------ gguf-py/gguf/constants.py | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/convert_hf_to_gguf.py b/convert_hf_to_gguf.py index c32c09a8f95..737f8ec854c 100755 --- a/convert_hf_to_gguf.py +++ b/convert_hf_to_gguf.py @@ -7723,11 +7723,14 @@ def repack_mxfp4(self, new_name: str, blocks: Tensor, scales: Tensor): scales = scales.unsqueeze(-1) assert len(blocks.shape) == 4 assert len(scales.shape) == 4 - new_data = torch.cat([scales, blocks], dim=-1) - new_data = new_data.numpy() - new_shape = [scales.shape[0], scales.shape[1], scales.shape[2] * 32] + scales = scales.numpy() + blocks = blocks.numpy() + new_data = np.concatenate([scales, blocks], axis=-1) + new_shape = [new_data.shape[0], new_data.shape[1], new_data.shape[2] * 32] logger.info(f"Repacked {new_name} with shape {new_shape} and quantization MXFP4") - self.gguf_writer.add_tensor(new_name, new_data, new_shape, gguf.GGMLQuantizationType.MXFP4) + # flatten last dim + new_data = new_data.reshape(new_data.shape[0], new_data.shape[1], new_data.shape[2] * new_data.shape[3]) + self.gguf_writer.add_tensor(new_name, new_data, raw_dtype=gguf.GGMLQuantizationType.MXFP4) def convert_moe_packed_tensors( self, @@ -7794,7 +7797,6 @@ def convert_moe_packed_tensors( out = out.reshape(*prefix_shape, G, B * 2).view(*prefix_shape, G * B * 2) out = out.numpy() logger.info(f"Unpacked {new_name} with shape {out.shape} from MXFP4 to F16") - print(out.dtype, out.device, out.shape) self.gguf_writer.add_tensor(new_name, out) def generate_extra_tensors(self) -> Iterable[tuple[str, Tensor]]: @@ -7806,7 +7808,7 @@ def generate_extra_tensors(self) -> Iterable[tuple[str, Tensor]]: blocks0 = data_torch elif "mlp.experts.down_proj_scales" in name: new_name = self.map_tensor_name(name.replace("_scales", ".weight")) - #self.repack_mxfp4(new_name, blocks0, data_torch) + # self.repack_mxfp4(new_name, blocks0, data_torch) self.convert_moe_packed_tensors(new_name, blocks0, data_torch) elif "mlp.experts.gate_up_proj_blocks" in name: blocks0, blocks1 = data_torch[:, ::2, :, :], data_torch[:, 1::2, :, :] diff --git a/gguf-py/gguf/constants.py b/gguf-py/gguf/constants.py index a5f19767a20..2aa760fc083 100644 --- a/gguf-py/gguf/constants.py +++ b/gguf-py/gguf/constants.py @@ -2802,7 +2802,7 @@ class VisionProjectorType: GGMLQuantizationType.BF16: (1, 2), GGMLQuantizationType.TQ1_0: (256, 2 + 4 * 13), GGMLQuantizationType.TQ2_0: (256, 2 + 64), - GGMLQuantizationType.MXFP4: (1, 1), # quick hack to write MXFP4 as U8 + GGMLQuantizationType.MXFP4: (32, 1 + 16), } From 423b19191a0b08a8438f49ffeba208416b2294e8 Mon Sep 17 00:00:00 2001 From: Xuan-Son Nguyen Date: Fri, 1 Aug 2025 18:57:13 +0200 Subject: [PATCH 16/37] enable thinking --- src/llama-chat.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/llama-chat.cpp b/src/llama-chat.cpp index 68621714c1d..98e7751e31b 100644 --- a/src/llama-chat.cpp +++ b/src/llama-chat.cpp @@ -194,7 +194,7 @@ llm_chat_template llm_chat_detect_template(const std::string & tmpl) { return LLM_CHAT_TEMPLATE_DOTS1; } else if (tmpl_contains("<|startoftext|>") && tmpl_contains("<|extra_4|>")) { return LLM_CHAT_TEMPLATE_HUNYUAN_MOE; - } else if (tmpl_contains("<|start|>") && tmpl_contains("<|return|>")) { + } else if (tmpl_contains("<|start|>") && tmpl_contains("<|channel|>")) { return LLM_CHAT_TEMPLATE_OPENAI_MOE; } else if (tmpl_contains("<|im_assistant|>assistant<|im_middle|>")) { return LLM_CHAT_TEMPLATE_KIMI_K2; @@ -714,7 +714,7 @@ int32_t llm_chat_apply_template( ss << (role == "assistant" ? "<|return|>" : "<|end|>"); } if (add_ass) { - ss << "<|start|>assistant<|message|>"; + ss << "<|start|>assistant"; } } else if (tmpl == LLM_CHAT_TEMPLATE_KIMI_K2) { // moonshotai/Kimi-K2-Instruct From 4dd479b76695e0e08b646eae52bd69caabf5dd18 Mon Sep 17 00:00:00 2001 From: Xuan-Son Nguyen Date: Fri, 1 Aug 2025 23:30:37 +0200 Subject: [PATCH 17/37] add quick hack to render only some special tokens --- src/llama-vocab.cpp | 7 +++++++ tools/server/public/index.html.gz | Bin 1913892 -> 1913946 bytes .../webui/src/components/ChatMessage.tsx | 8 +++++--- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/llama-vocab.cpp b/src/llama-vocab.cpp index ddfb64eef4c..8dde79d66ce 100644 --- a/src/llama-vocab.cpp +++ b/src/llama-vocab.cpp @@ -2330,6 +2330,13 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { } } + // @ngxson : quick hack for gpt-oss + for (const auto & t : token_to_id) { + if (t.first == "<|channel|>" || t.first == "<|message|>") { + id_to_token[t.second].attr = LLAMA_TOKEN_ATTR_NORMAL; + } + } + // sanity checks if (special_eos_id != LLAMA_TOKEN_NULL && special_eog_ids.count(special_eos_id) == 0) { special_eog_ids.insert(special_eos_id); diff --git a/tools/server/public/index.html.gz b/tools/server/public/index.html.gz index 53b71079c1e2a3ffebc5fbc70d6b30ca3de8f13c..66a770a132ce8db2c913ae88e9259efbd367ef41 100644 GIT binary patch delta 1789141 zcmV(yK*|kI?_WV#vspz*T4Oi|+G%Hp-Z%6)RS(DOMjf z8h@))KAp#t3jPI^Njy3mM3vJRe|pn+(61z?mFyfbX)?;9QGb64*|#&vJk63}ki}sz z7+h7(qEVCvS=6ueuB3n}Jx-G_noL+~GpUS{tP=I(3>i>?G}4dLD9i>|%<(Cy41+Nj4JU+;`iUIZ|=QW`dg#%>Tj!$`bn5w zjibtWHXIT1$v8^0s}2({fA+JEq68fWJFdoY+r?dY!F9vo%Iek3*jk>xeNkt)$RA@Px4om>rj$)LKHEmo^- zX7SGUoPI2w2NU%0_V)7kT6H5B5$39kQC;di&okD}_T;;o0x}5RLjY_19Uu(Aj0XK` z-HXjI`n$uR$?+aK?uz#+$#$hz<0g{JF8X++lRgzH{RZ%Nu zZIT5DU~t_ixHyQiwQLD>s5SwiXpBSDjd~-u>zqean9THiv^LT`M`5=f{QEFx4uX)o z)ah<^p2!TSY0D;s=5J74<)jwZZ_Xq-M!q`_^MlCxO&Vp>bW}N)q*49uuHLDgPDiq5 zk$((Wm;fk!Y*c{AC|e4#09o{A0LUL@HGur+qFP@{qrq-G$vW|AEn8T?2&QB1!ioD` z(@;G|<|IIW>#FU}DS%Y96BB>grv8{l>D56r0JtaVI;Q8pv$Z1>HygxMb^PD!^$|wc z8AX?sy=ewKmyAC2CQQ@j+74Xp6nf7I-l$>B_OPNOV5N49f}$(s;{YicKaKkzjw zIvXUtV8D}ewK}b?<-xYja2b#K$$zCJs!x-kvO1+q!Xz4;N;E&(SS8!>Kc>J3W@il+ z76wZvC(&e20Ayi7BXFFxS;DG_l|EdK3@SI6pb88hOa}nTwE?j`zuSX54(njgzlnax zrb4@S-g*x};_a7WhXaDn(h2zY=GlDNaEY#6Sn67^IkxCX-~EhM)_u zXGnSImiv|Is89L;*miIGlZmdJCWzP60jt>E-gxu=;Ekd;G|`YIK-G%&NYX1se_sEllQGu=$I1&>i4d)~cg6k_JeKkoqvMZ`gM_ha6aS0) zo=R6!|LyJV)!ns&MdFEU?TutOPDUh0(M2~MRDkr;xBZkZ$Of6S5IDJ=NIT11lt;3B zbwy_?8nbF@uPrSt)!UT}7X#o2P)<^toTN;yU~OX3k`vNFYJV)1B*j^4r{?lJ4$py| zxK0mOu~e;h+&Nh)tw@cDo|I(~xek+X-%^t}i+@54ZFS9SW39NpQ6%ddN1i}%yBB#U$tAc9?QcsOAntO~F3@Xi5b~T_g*cb0 zu@tNtQKauw^$5s^X#`>Q?g6P*{c5}F zH>)0g@UdJq)Oq!n>Y{W}&WqaPBfow8_{_671%J@2y8@Vbdwi$Psq@T#{Ex?rkI!=W z|5TcrKht#qYKGR(UBI)7s$=Swvg81y$LOrK@~obZ>Z{#k0CVgwH9%|z+gOKNgVz91 zZDcj{tGBl*29)3+3Px3K19VFEpKJhZv_~xhyglRVjA|-apIpWy(<8JM1|T#@5sl8O zZGQ=X0f8$w?h=x}2g>52BMExIZC%<~CRI&kAQe|95y7^^~D2ms;S zV8KCsT}Q|2G~n!U(y-ZqF*7mo;c=*I}>UaekV>f=D_)DZ_FU${?b$L$8Xi4$Q?M=XX_P^$q+lP%cFdRwqz zO~k0P4MYd{K4cD|IiSLToK`s=!L=iov?f=UHuzLHC0O;5CQ(%RW6ZOT0L-3Oux^ve zO?6S9oD8zjrEf_*s#U!T*YK{2t$&K&`ch^4v~rb9aq0ylFkTW+LUL^a4>TE&6~f(% z*)$m6tKgnaGAZD(Aq*;T$VeL5Es*c}FV4}bx2fz>OPb3v16q!bxoMiF4uvhSNdV?9 zq;oG@q^8#KEsklF#j4!ly5O{Zpzx?PyL3WQZaTr_HCh(8GCqwaIFvdF?SEnQ3DUU# zjdG3@I$kW_x0b5SqnP z-?7V$z(-*t&8$$Uz}fMD6>@);a%%pX!7a_8@FRvm_X)Sbk0pc~K%V`8QACen2BsCL zZ3$}zf!}B7>y}Ntz z`pwDK_Wqkqe-jvFuz!S(`#byy2WU+5kxO^dGJ2XbS#D{4=lldlk%559a0>Qdk5g8d zD-WQU34R^pUXIx%skDe=Q4uh}e81Lk(=gO!omf!OQoMa=3RH*+O>P!0A?)<*^#cV} zBnw(%c-~zEjX8G_O#%yjCpWDEIj>Lcd1=B>eP$gSQCKTD(QzbW%46oM!s&fD=;oixO=B8OoJ=-mV8k=4}MtiC)X!MJNW) zEkrC!3}6@M@qdP3qNayQ7bc$IX%9_JD0ow$6TOD2HWj5f&J;Ol%#IP6I-IWH8l*V| zXj3wossSL**vxi|Wh<&U@OH^mEsj^C$v9i;ff-(t&LG}k7#_>yG01Lp>fet}^Lp&v zu5e&UZq1G?WY4ELA6J4UBlW{kNx^u6*@^pR94Cw;|9|n}YKGp)IJlx*rhTIi-*%(r z>4R0K?1Zx5_JMAO+|C(3S-IA!z5j;5oS+%8G3>@sd`wJ^)Q2|H?2|pE=g##Z=G5ls z6hdSjX6e<<03^{J?qU?--xPD0mZlU?f;o0#@hr&04HW1F;l({e0##wKlABv+Qq>~* zfqhY`K!4?A22*%5>P^oCuwD4bQ$-ZjFJ-v5fkJ+_nK!4WI5hv_ebX2phjgZy^(b%E0V7HouNiIh);9jDt31MSo>Pr9!2l?FKmZvcFQFTcT9i z-u)Y-R0(sI3hzgt3xS&c~PR`{sM-2AuFt6_H_uJdr8AM-52?t9-~q?!rSp5fXANGk^W(ciu%wH{cW1 zO1#rj>?XnwXbe!_jVcW3f4xnA;Vi^&&O%&pAuhNOIktze#$?TE;F)Y{8g7RqoPXw? z;!9YuNb7(D0a)xbS9dxpBW@8pjn=DIuUa?C{tIFyfWi!hu1Q1 z2h_H@KnZue;)+uu^uzYq_JSNOMTer2=CP|-!|Z6Wkkz0#+1czTxJXhEO>;cS7!Za+ zJJ`M)v!wYudVG3dO*JH4t@jo^=YK#ugKYJ!9zHJF%YVlqxY(+L2*;fl6+ytn3pUug zE#8t56M^TgtdT}5VpNk5cr$eoKPbPRMOAu&>0)a zo#3QC*~e4<8DisnRVT*SU%{#Is0GCc{Q1H^*GAX`+59Ka5+F7U3LSa0x()A|{2|0o z>AVtdf+}Mbz);!ta0qo~jDJmQZRHV?x1)28g75JeHBFcedVD6hr12kEaLxfXFB#X= z?a_FeeZ=MUFXz@b?l~D91;KsU!DioKqeiu9y|Za#g4k(*Cjb`DQMvhPPTGjs%nl%E z%Ec5DwhE|~RKRf#u-NB3ZDQV4k`eQH8IEOQwR}^cS!v$ENAC=Rk$-iT&U%l2rOqW3 zA?v!6bwEPXgIM6Rs!f1zW+)2_`&sRs^vd+Lf$E&bKAYXAAPeWYw7Of1(Q2HLi%-Z? z3Jp8{Sgz8Xx_zQ&z$g3E`D)v%J*s^zjrtWb-rgPpT|9z(wO-E=`Byu|qWd~eF{yr& zXEJ-?D~`|@Dv#OKZh!PWQs`DBATv#`64!Eyi@T6?r)rE$2WJa7ZS7_4uUL2vkLsv> zkoX+263{W+QDZ0WF~b+W;#(uLHTYVVWJpe+vm_w?^CjU-qFBqI$G4VGVfX)z?0@DnaR+D726W6vk?5GJZhwVTotn&rWbX^WO(`KRcl1XK!h)g70_ADWAbKc|AzN z3nbdI5cK6aLY}09Stc512uFBfZ-e>j6a*tI9!;Y+KYyZdTE5@^3bifFY>osmMNV1K zD#ImW80{B07HqWn>M*;#Z7n}tJN?u5BNSBeRayk~Xqk^ChRuR~_O?G52$j+Be z2MK!7ihoufqoeJog(1P@Kwn7BJPY!hLr{#%<+kEq505eMvEU3#Z961x{Q_le&dM1~tb44H;f_n~l0+7LrrM6bgZujc%7;6KmSaw>Fa!dAbqA`yi#uS% z*W0`#5sRA{(B~>nm0YC=GlHn)r>>e2CIoS<=JS>3Pg*aQ4Fu>ZV^Z{_1Qm#U8m*Y~ z4u7E?NbW=&ANSkC#YNBH1;7tD1`fbe&~8u8_KsIP@Tu-*2{4E$?!28>gN&CQhc4Rz z9X91aJwm;v?iLo%I?wwl86;oUYAy-X22s@X z0O?|tN1(Eu#a05*D?}4@)2Uy@co;P`u-vLL7?M_^(f1g3wxVyq!ctJ`r`|dg$NDgy z#q0!w%6T*xBe?>p=Lp9vRM!PkM}I=*L0=tQUe`QeQVYGbeiO)#ho42*D~>UosEP~s~trtw$Xi8w~4FW68W($GM=Pa}JQc|`yHyGI5lEBv1 z=JEfl9s5UPso8kRre8m2Gm@*h@=TgpVVld%C(Yx(|MD0-7my9))w}jL*qwSa_Z4sb zs~6VS9yQxKIFw+kJzWA`%72i3?JMC48EQlI;XP_OfOkc}^Lk!aP({yP4130;(r^=@ z4_rLu0j{FgYcEPl|5uv{w{flXfliLufqX ziV&q6sG(M0nhj87oubpMiW5;bb|zlcp6atF^9S}56Xx7Yky&=Y1w!wRXZe~ z5Hs*5Z-(7`8k~8m>nTyQrHPdl(|Bsg4n1f#iSn9EFG|WKar&22~_Ru-!S4&@%+v@=&Ev z2@BUNv-SO+il+F4VSlM4RB-|}srsG-w9CH+Zr}B{jor&I`5wI)jXeydqywpG?WFqz>f8>&(eGRzrKY2)$G&;tQR}$eSNK3E%o19`w49ykZ|DjR1~SD6 zh}w2_e#3=nS$~$+iW_*QVS2LI2OW(WLEX6HiD-R4QiKhx;4n@ohsacf(~0g7myU+m z>x1!m@aOwdYP||%nOtrm?f{1$ATF3dyf4l*w%C|_eZ*x&oI<3@U}C_HzaZrLv2+Lo zg!=dh9ZMYR+avv9;`agYV1S?|($OR@hVK*6ed4YDJb#8!I@HmUWDK%I85ZNirel8r z>!UC@%V2td7K9Gk2db6wrpejChsRV77Y&=_tzkL<qKP-tN|7A0{CZYdiv9e6~cVie|+?hM*FyS1nT9u?iv&wILAM? zGV1y~1_oAj-3gKzWsUPlt}cL~Gofi4J){ft1aJishYbQ@#Y8qH=kY0YkAtx(7!Klb z18U~y>MJEoDn}{wO^}Y0fnd#faShyC5S-{VZGQ=^LrMjZh!%G*T>IRfMI&w&gu{z7 z;C&F?C^%>&IE8TARsrb<`BMFcRH(mg9&FUcX)uhjJLH=yoqsig{x|9ps|ehhaB!Od z(7yWA7Z??|RMT-bxEh}~=r2Zpf&qY8RpUKJ;2N26HJDAr#uPt270HDTd~f{F-^xn@ zf`9Q4w-aY-22q9yZ1DJ%AiIDMJ>nr;(jXPN&F2vEDE%prSi$j{%DO5}A&pE-3{K$i zVk90%$e=5QKjD=9&yu>O(K!x)W%ALJ9nR!$`g6Syc6}Hif`>_o`!3)<;gtAEkd$bV^ zE8iOd4=r$Q;}8M5TVgBU8_)ty&cJR#jR?WJ6Z{b=7f+S%a_etIqP&MtioOGmu7A|0 z1tT|fRk_5Y{wcN;7R- z)~7tnbSQ<75o|XVaz3%xm-cSzI-fgRb2#+ ziE0x&0mJiifVI+}LK)wK@c)^Pe1F;7WoKSICaO`5xE%s#eY2)ri>WjkC~fq$<1Xa>@* zf;ipY@kD9}Q~i?8Sz2G?dMHJK+M&6E9?Hdq>KyIv?d_x5vSq#C3YLPJ=6@wK!EMug zf52Ta#Tm?RdQ&jp@5P$-SFCgoSF^5|h^o7yhl&sNt#fURj!2RY6J&TZS~qtvq_;!* zdT?T3vbWd+zxS|wAzKTN4hy$2D9o6e)yQ}Q89kpP!yS`9PryFlRe!fhn^$((>!Q3nl=la_(z^HLHjYqg#v5)~`jeC8|Kse=4w`J}Om^>xVGJhe2TVVbi9cJ(> z6V7)mgKAu*BFC-FPRXkaRPt<3V6cjw80&YX@l&TP!!=*4--Wceto01i?@@^&ynro7 zJOsB2=QmOx|6^3E{Jj=rmHJx!F*L9;KUKKm_O@Epe4T&)+rQIzEtHN?_ag7g5d3&D zhG}mY-rl~|T&QZbBY&zLEYS0%Lja?Qwkyzg4=B=E0&@iLO8^A%`+xEM&ksH9X+9t2%t^3kt|qZSV-% zK3YHS)Ylsg(ZqIgbT%3d5Aj@ZC$DsS1A*4Vdd#lHI}05bSR9QP!1s7qUbnTI7~eo&n};hMwMpWH{rLa;gVbSt2QhBdoqAI00Wd z2NsSffF(2o801NCrun~?waYS!F|3%oEz8|SN_AIorhiT`JYz{Q2D&!&<-AnoCjO&3^;K+OM`FyWbpmV&bwX}Nt&=|G zNoK)R!hhG91X(LbGnfM~ZY(SWmE56pO)W?&OiERo<d-k5iOC`xzaW5KNSlx%-gN`$pv-*jXP)4U%RU<$%b0NaE zIDcDnw{5%X?B3;NQ{@Lspz3;UN(mP%n^~+Xwt5M7m(hSl+eI{>>oRjuwgG+o#8lA-#VHbCCCKO{KX{vG zI1TzSt~q&A8xAgzX4kCnqpjs(xczDx848XLuVFJ%uE6Pt*!AA$P|i>a>C&h!1WSTT z@+h3;S6E`Qr|cL^h^@J+?xfJe`iwovA+9JW0t!myeAulj*AQa!%=$H1%GGd zP*Kkm@8Y&lxB@^fEyLUJw)0GoR`V|KK)a3?^Bz1lng9yjpbN^a!fZdf(s(J=_5g|C zQFF6VKiDmfV?x$Z(qPRj2M!b!Bk(M_E>ugi;P7K06h^TK5oD_V`d9QN!7Jo{eqG3;e?3eX|Ey6C=7|+jR~~%4cT70MS;jA`kVteq~92*FKb;R z9y-0Gf2Gf3n@QsG-fW>ayat=O(8IK5SakIQxG5?G=zd`-9d8^uPI*tb;)f-(<Ua+;S?np4RSR8hcRd}U#@*v%0F+}xWR0eBf9W~;vylo1=3P^bqmH}s?IH<74(hx4*@d#A9 zt36&QO`32|&0Y|KX0caJwuT+j3Y@yr&-v}Ggs6A`3Jkly%nQ{Afw}J9K_Rk;#Z88_ zZ2=q2G_7M!%NbpG;dR(8AT#4;zzx{WxzXGz!;$q^2x_m8;6Hj)&VTEyO;6fIAB9JB z-*^Z%50AibX!3P@RO@o`_1uD6!jPI$L8x0eT z=#ay4VseP-GBCqeV5^)=N83a=_G8M z1Z||+L*$(HELzY&Onx6g@bV3NoiE_D9CvT*4(r4x43vVN+W{8jY*$;6Lo3dmpnTPC#6C5GRpa*S;lDS zpKOHHlYA`;a)0HlE6CdOd$gSgqaOe5B+LFrSHJ_Ff1awz5D;uj=*T&N2!(S937&4HeLQCqV-h@|(lWBQJG|>G(2pX619xhzDhag8j@`e^ zz{eW3IiQ*&RtL+;6|KmWt4_Y-8mRAcvl3(|ST`Rti+{QhQVrsP+#)Kcsha%R+pU%_ zjQ5GCsbT3}CcjZqKon+0PkN8?%zv3%q8dq*xDE-B!|| zZsct_CUUue%-EeCtdGa)S}30|eu=`*qe*ZY?IyT!ZRwJ0whFB@4F8x9<#&xh&Aiy6 z*y`w>BY&{h*hrmqA~=RM2f^flNdcS5D(vD5e1s5yrX&1RSuGPqccGt*)BC=6i~3N7 z1>h4(P2uV)8h8a;5CxVWP9cu7&a=TlTV)3zOh{4j(y16E5)XAkH-PRaDo=tKTb`y| z+;q}XcJ7!_UuAdGo+Q_$rp3L z0E;=B8CXqx)8P3SC}LBgC>d>wj1(Wrks%JQ0KBO%gNr$^u#r@bCz}PMS{1s=@ScgBPaElNOY!p<-ro+4=DmdXMBzaN^f06yte1Fu& zuYV?daE>*-FroJm94$DhXb(<($hS!2{yMU4wDsWagX>0vSC zlvWXL1v)ZvN%ICxN$Orid^gE@B zxh(JvgsQT=s4^$N0<+lC{NXEnvVTj?B{m+O$qyN^{J_fN8B4tjWHxe~nP%EG77-6o3ls1H>qK|mZe3)=95s2nAZ0E1m}kuXVdfz0I!CE+aIm4ojAr6UcEN-Y^EsEq44tvEC#DNmT3Z-aLDmro)Lj?%>v7*0i4cA&_Q!>0rA^sQ#$}x|fmJ8T;I>aL-geiEn zWI~~jmd~k7F2PEGt}&P$Fn@HVk09vq=^P}ZQTU!z@*v#vA6t}q45N%L6f~`v=vQ^d zfp+bue)FE5N>AnPe%d2@+IcZ5AsFNWgCZa-zaYe#>w-Mq#CAJSWx@^W^)j}bmryKg zlc=w$~YX;SFZ}!On2(lWqMY>LY)9u5_C#)F=z7h{4T{! znR$xESaO0W1aWtvw||8W8FOV5xtUDCvnXbC;>y|aavR+If~hqdGdJrVDDK&qxmiDt z%i+1%-q5B2Z?AOyM_tQu0pn6xm=Z{lLR}S{@zX2=^y{mi5)|ry;>DN{iEN&DU~fXC z@~Ep+jw+eO8Hj8V@fu-|Rek|!Z=`e&ZMc;dfX8Iaxi-q#3)&I!7ush-AQlMDpSgT6HDFEHzQ{&jbX^NwjTuQElK zs&Kl^d4DED*Jm&Q`x`0^XdIU2R)Fb;gr%ds*-_AMUfG4Fr>RwWysEv=N<+RcybfX6uzm@4wv_`z*55Nzj0psbULcL} z#)m@pU(EW{E|02hqK*fijpNV1E*}bH zMHjPUVj@Hwl8C8529vn%uiK7s^`Kk8cBqg0K=s?K<-Y2-+5WxNmq-7S#DNUot{!Kg zobM&5HI)q;2N_l#0w_^iS44&Je$4JeSw78S_!ohBOXCVi+nu%6g+QWS+PxCz?%t;) zh=0}Rvs`IYQEj}!3j;3qda3q{)FRuvyiGfDH`cS|?o)X;z3Icr`h9+_@I-{0TyzTO zy&V+F=H8LKy}(UzJ$-rILLvCX^1`7TbC1I`@7F?=Gw$-dFNO4Z4(`0)LpMv&bDsAx za}ynZd)_V{2%PW2&x0d3<<7Bu)0r5ZkbgM8L&gIfw{YA8PS92i_6K$L3aUq9WiTgG z4Z{yTEo7p8l=h9U4w2UK3tlVvV^uZfB*zmx^iCHJu2+_oqdNI)C$aZ!qS6M*8Muw= zd-wfv-v2}}v4K5!GX`ITJTn@A%P+KM z;L~T?9UPPwwMr?}Q&n2?iOz+SS!a9EdTH`KTX~@~t}H))rgJ`f`gBESZLPqWn$EoZ zY`OKsIG$U6viw44Z=s2&&vk+2=6}oQt*5rn;R2^_`H6A_Q_=INyRq`(#j~cVLyMF=fhRq$$ z`s-G@UR~kVk#|X@(SFpI%+T6HX%sc#4afk^AfB=+T5vQ~OY5+O_>aR5jX9cYT_2#j z4r9IT1s{5Nj1!eH#BS5nPUuF~_8*6y)S*gj)Z68}=0fRoSfggDY49Y1Tisf^aLD`Y zAwrEVx}7dGQt$AUzpab|TYt}xxNU%f^b<}ii`Ch}0_+EC-COji^^8PO2o=B#{4QME z)X=3xec{g&)%_q{0HM-cO*^0mu%$1k8I0*{t*(OHzJ-(>{7>Y;>{zYA+;E|(7OP}Q zP;|eTd-GYO=Rv)P&DJ#=_W!$Wnl8cz;=gcFKv}?Grie4J^&T{ux%T3_ga zov^+jw!TdC0Z8j)eYGdqD((Gnyh)?F7q>7{@~|8KW8E3dE-r-yHlo|5g@&D)r$To% zL7xE$+WA^@rmpEQ+<%(dB_k>vSdG!a>MC3(g6A=?+mL-BrV87h?tSOQF^*%{Mny zbfME>TTTngC#8A(4-k%p7<$_KY4ZrX>$f0<;O$2F_X*tCB7dr4oQuE&M`po$ zCD;Tg_UxrjjTky2+XO`*FlY>+Z(aVtERYIB{Otj-wjIFQM$PVg6nlvE$Qv*8(lp%7 z8x}m;?Hn$oP+;mFF9>Mk1C>CDhFDcmX;%Y)NxmSWY+_GtzX6l})o|?z{)hPywg$A4 zqk|`H<(B(v;(xs#dD{bTf8_lddxwE|hK~t~c%)0n)II%ssDIbhi}`!O7!ptW89)Mg z?8QyLN=w3sUWF?1H67z&&S`kAt^w+s?p5SNc~l9eKi~)l&YSwZf%?#%Qgj&|k~;M_ zYNZn`R>WUbPahmPxWa*xOXW+1sZLO3f-p=f!ml_f<9`Qg6K15iCy^%xP;Ly@RQLdA zk9z9TEeJyCb3|JZQ9y^u7yl_r*V1vLkuT4dCQ(Wv8gaP={}M)Uf)L(fsJ8XAyDxjI zkqVd9h9N5@BUdkun_Fg`E@_PTMZ&CFub`V*Pp6aJ#IV3RpUb44K23L3{5G^RobqQ$ zX4lH)4Sx^dPQ9FPI+$0Rvy&!r-Wa~!99wlNz=(1?H#V(h*RZc{dc3kl@Y>Z*Jvcs+ zM0p6Z=LrTlxWWn!w|MV?*0xha8$Rw*x=M07Y^i&dpr_AjA8zt7{G}01~!IZQDaV_{P-W$k(Qa zd8K)+bHGa1RHz;ZD6bda57axy#bYwe8HZhfo?f&fKg6K*m=**E zI;nWTZY>5lw@0Uma@S(ohMH4ey2y75Fj1QCWU~}`M-=K=l4f=%@bX{;h-P*Z&c3^K zdC-@37E~+nz)}GNs0FdCRi$EXQ#BdD1AnULT8C+8qLeB^*4*_tJM5y^@{tuHrQwj& z)1qj#6jpTw_`q3TjStWFy$&fPjE3gnfo0$^9I{+Wj205VuvQ>1$9<&NE^uaHM_uAgLV^U&?!6Ut*(~ ze1rHevA|0HR?HzZzg`tVfS7~TGs8E};5@?9{wy*$*BUUZUJ3A_I z?sOMtn<~;&)(=K*54(Oa5`ChdcYjW4Og8fhL_&n(n1^1WxXNA!@&gplCIL)F7IH-t z2D8k<8;Qozggq4b9gC$-356W+PE-3}vU zQcK-s!l4##9bzJKT4qjH6}GfB2v(qKzua4r635$Vo)f9laT$fu4|)V^O5#T=2~nPO zO2WKQ)oEska#5biJQwtt9DnjmCXOx%Ibay=Ab5S2=wtk^9k(;W)foueOiIh>oc4VSOZ)Wn&& zO3%G%Yk+YIxR>dB?%S9X7!BLiKSO_9P;e@{JdZ5YNYn1XB*GnvZpqD~qjau<;ZgoKce_3?Le&4P(t=DD9o<-$bt%ZqpPxRkUjIHCe$AH;{_O{lT(H4fdztz{?C+$A2 zM5=m+Ucx)~FsSJJI?-ra>=fMp-QXZ(-MU*v4}hq#+=JY6VR=G3v}^3qOPf<4xB|rp zSWH+?Cx6aRpiem+T|oJQu28IskQybOn%y^f?-RN$Dbk7V7#{3ushn^yN)%__S#_|! zp7wCDEcez;qrvY3iy<8b;7p);>2~zaLv|HS?&13cYMsgitefC{aQ6Bm0557oElJv$ z;7heDzE-ft5ITT-gh|pIlSAMklYD#2mxc9%!+*wXIEOIUc1%8{a8b)|yiwlsu?@Qk z)JH>Fj@)_O1eV8fbcvjOn0mwmWUG6>OTJ4G&r_Iy-~nnp)-I+dcPI$wl5#qKK^gUR z$led=ZJlxIi*cB)h%x+?JXt!}!K3de$9tptgaVcNps9)a!fu6sD834%>|WbF&J#6) zWq-o>!3j$-TNs$y-t*_Fkj1(Xh0gwI3MP^gu!wzMZXkffEYaUE+jlY|RH*OHOQEkXSgtgK6>bq5d6~`*(<{sEB-!5`PLVpf-BmREvKxf@>E%_5%kwqY2*L5MbF~ zX0~%|l<6>sk>cVo-*Cu$Q?QRNmUG~<_K?DehlSE07=vb)XZrv-AlLhLHCW5J)N-+0 z_jY@EEqorKm%#TKc0(|4u!Rg}z{OHpqq-2uY4|l^i@UtuIxTV*#Cvr?+J>A5dS0hly9(9n=*6oYw+Q;6ZDtu>ZhOwH{{Exo)3fLa|PoS z($Rz5uzJ9ajnC(*eKdvuDp?;e7Ue(6Max@mA_G=h^<){@&7?t%fz!2udOrehaB^0j zsBbk5D^J-XeAqzaqWU)Bt34|y@67B98#FV!f=1nGeS(&qNqvIaKw#kT$A32}H1pfy z7`IydKu@-o`GIb1t?&b7ww~|<1-72@10C3U#t$^T^_(AQcIySF3hiyZ4|PvHGU;b z060OZ3qr->b5Yt=gLJEo8h?Ec>=#2p&K#_kSy4vF;98UbGC&z&bZCXajRt$kQ5fe zS&_OcYZ`vr$}U|nKA(#sp-f&G(7scLT>C|XHjl%_f9<-b`o~gqDP8Cm-PM1>1QP~g zu&ji2zYsQm{yc=MTv*!cvO*rrJ0T5me-FhlGYv8aqzZJee_HOoq1$n@GME*F=YOpW zf4LE0-LEZT-7yZ6OO2FyHd%QerbwO`!LNE*gJ%ibgoKdP6RC(xDsgnv-7Bb99w=I4Z+7=)5IVvN5FTnEwG{k?#vVZgvXBbW( z96ZO~*QO7G3`dt`YzZc0_1bK7U$YjN&3M8PXQs$v!l3Jr&HBl3vng)C*0MB17pkTD zp|`o8dhaB?_UJ2(*C9T8vC6-#)+>J>-09EDK2OLu%LTK@@m!rr!w%J(aAVm@0aCM} zsQIat1ar=+Mg2Mx@+^NZzqFZLhHIJ0nzM1O=fnrzg8W^~6I}Pkat(3c4Y021<)KLn zB_zPCp}}U+M)bYNO=nr)B`&6J7JblOYn`##84!#{)z<1Wml@oP{QG;Xbm8~6`Ttn#64iK=P*P63LcGKbDn=_fp?HWavCO{m-!GK<&BUu69}( zsm%Cgf=$A_L)c_-%}Z2o?^)1ym~*r!rzL5G3pi2Ko)ft)^H)Kx=Pe(;R$={4zXs%J zn_phI`Ara%Ktq3OuPUbsyf@QX0thkjzM>pZD8C7l3EzO?x4c6oJ`_MXOrj=w1)`wb!>;>X^t5ZKxZIK!B7{0n)J6cC} z3CnaNa#Ly!ss9lc<{k}_74yCBqsq+L86Vx0bz9?Vj`fJ5Ul{DdkK$NMFnde^)tv~Tvn#7&DCL=2jtW{4} zFp7VUeB4wkp)dGjw!XZ@9}%u=-9m)cveVc{>`x0vjMgrL5f8*I)&nMGEXFh!`qHv# z^@H88jlmo};*g-*2`w_XfwXna(anP8oL0*32r4f4AS-$jo5evrJ%?JYja5O`uiSCU zK_pt=GQgs@F|qs!7om%mi=vF^Dij-s?kj&NfvXm8SQZ#oJB>;k;T>A(-eqmo@4O9E zcA#uHsUBB|FfJ9~nHBth>+1wT#ZAQr`d@I$_`U>^fVnk+OTLe8&n@dh1+Ss;Ev90m zs>5jzkG^OHiHT+4>9BgDjl=+Q8<(xhMHwUkk6>VNUn0G_!?+2YiUPA@NS`NWEkb`^ z)BYg+sbZ5tb_8)Uxb+0{CA$0B#`_9GgXJ-)#v25r6~+sXe%u*+J8~Hf7hs7m^5yP% zw25U;JFVyekV++$`ifGqk^WF0Qv0a2ru>dEi|e2NFA@yKGr#rIpI^%51q}C=u1K0f z6lj}57(`7WY)B*VU0k3+n5*;_wxoa4le+6W(-|8Vj9wFP(?8TE>Om=gt}-*35q$nnK>= zxIqGILAl69Tgua!8v}SSo($$-ob9}4X6#TP>#E`B@|NwklZ_KYy>Qytpe}e++Bc{HCE ziJ0|Jp21UIp#)ZRfel+gVr_r^4V|BIVezXj^qc?_AWmHO%bLLh11s=M{Umd>bMnDJ zvQLm7BgJKnzFkxeq7SU5p{9D^*#^N+mFltnGifO0)FGaVfULwYEcAO~lAj|^y2Nx) zYi>qxqhDiehtL}ahgjrFrj;ht(riv<{ zpBkzdt!mS0itaVpVmS@1QY{>9D}P^^Fiq}fx{yCIm(cYtl=R>Gu77{gzdKohYw%i* z91@$xeV^JS;)Vg5*XEgp!kPRM{!&WYuCoL1LYtc8xgZsOw*3^RNJR05D0n z4x8T_*+^|{s6s9eK;nN!0xs_8ObJ`6gvLq{^Y(qcw8^paAc`{^2+iaHSZw7x$fl?u z9BJw;garGoVr>B@1m@c>=pZP_U*M~O^MR${w#UWtJLUyLRjOOOSsH>)c3yt7)H%!~ z>YF8(t#q?YottHs5_qE?a)Hg|oFhTOw->xO87T#?$nME_OpSlh!sE9+>r8VIN$f@;{%o}iq@;^CIX|f-;{CT9a9rjZ)#F-aBm6gQr0b}fa%^c z3IL(xU=^56r$oprG02|>q+8T_z)X36h_@^9D)IH;omY7{bca`Dd;%2oOE2qq3e=gP zJYb%JaWmLic{qQYOhO*SIqVFm+>yL|VN#rsW3-2hgSt14BTBxE$pHg$xmeGf=uo@v zlSr?pobNy6NEAqw$$vzJiUpPCmkMz?IPlRExO2=W4vTsb7h~;g@d4bZn5GmY5kHdn z!q5@@2ejd}1?LrPHv>2w7JE$bHCNI0m-zVza#E z#g&MTcPcO%`>2FE+E1M}>eO1sH1wo!n7<+);>YK4g^$_EpGb5A^e1JlWGYHf^@ui& zr3QpaE|q`E7hUP8FSvHr9~_l@p($lcDoV)}sw2xEJ|VA#Q5yw&SE*NjOU?S5b(>Gt zuD@A-idXJAGO8-;Ia3CzNYuMO=t?(K9OnHgr-AB1THCPtP2#pGTE!xL{1(618Y2o~$hv8S4jWxMxtXTW3P5aN=do9}VN`!>L zmt-1VE|T#aS(A8@gapUVh$FI;QYG_tJC=WY%-VA)-fRb*x)qcbYFF0s|DyU8HYqls zYzzLAEy#&`2EW?s#KOrW_*DPW9UD(5b9`uUdieNIc;Djus84B_4XWvwhq_&ys~h?m zw$0J3o&?v(!=OudyxuQoa!$h+bxm9R=!4fBZgPqh5U^XGd>8PbYG?FynoCS5Z*hMv zMv938Ef=jg+Yo{quZ5IUu6rIlY{Jgnco(D2%^a=loD>(qj<}PD_o64_lgKg6oOz|l zbcZ)fun&|eu&^I2%iP9wQx_g&=w@aeGIPc6 zgO5{$3Ikw$^cQFvL;?C6z#HImRfd0ID`7m;Vp0#`a1?Gp!ScZK*}}+S$2Ks~4SW0P zZ0LuN{$z*XALn1u8*y*AInfRaL;rnHa@XoGvwzXA$LUvwj<#FJ;@94?zI3F4OtmS= z#)d0(r2t*+^ho`xJMzb;IM73HSzf?~i^YB)@y>;9Pg`=D^>2#*YdDpH*BpP8#S42d zEr5uGsXI`XP?iPCKQ8ynqHv>d9>S8`eUW748LlaE%tN-H8`IH4w|X%0XlEIZuFDTq z0OmY}fIi8KV`Z$5{{3<$BczKW41lKJViGK$+#0m$H>Ml~{sL@fO8kZY%iXs&H<2Xm zet&<(;@~*!gP8FhkVotAn9F~N#js$oM#B=UCCf%LzOb^4G1%v~pXbTUs>-Tv*@m5c z&xtpJz^(4;>bhp-^~qo`f#Q^HVcM$DCe&B?I6sx+e`A!QZPy$F5HpA}0ccBgeuoH# zju0LI-0HSIgge26-fewm&bICkJxEV8K@^w3W}E-Utq)9j%TaMLYnFe$D1|QB4Q2fp z8!o>0oi)agMz`$>C^El=HVcy-?CnfE(!Hcbptd*@Y~G;Ko7Ch}C|V$^fp93v>1dX{ z(eykdIsRS1-w5RjpLH5x)CN=FgPYp3!#GjFl%q}L;(~vcB7K?^I;u1Yx=w&$`K1Ij z;B}`Lbiumzg(V@3{H%Yqf-rP0LKw7XBeZBnfVa>l`MX5@s63v~Cekfw(aE@I5^fZ2 z3S+Q=>I`W@Mv5?c)*5LrVt#?&#fJNl!=unn{U`uWw}!}^;Zl2>o<$) zbv^e{zNqb?uMK}nAC0E`W2k@M4_M}dpPawEKjOXLvsQ#iQasoOfLwZDfup$pJX=_` zG2rGwhQd#dzZdE0+k>pXEoRn5W}}_whiXU|B<`}YchtJIPiv@HF?C=XPsXkN!J6!0 ziQRiKzQbq*ZL>I%y%?{e8tnhTNy0tnY~1)VUOf$Ofl7aU8MjUqUgrI{^#yhfpEUx% z4UlhS=ShvekL;3)e9hDB9{2^&KOuK58Njp` z&2`033CVwqE0z3Pytw}Y<^gh0`|LO<6r%@SB+D4wfwKXasmXtA~n%BWyD!KrtLXjMlBlW zOtOb1K~FWWxWU3Mv_4oPIv-QOel8}XW)9f~RDOPFmFJoptv*-(@B>x@#8Y$@?GC%D z317YE=s1=XoF!U&ozMRoF z8|{C$dY@>$O7^)8v|el!s~2_PM_w<_^@S29=|I7zosct|JE= z%dUbj;9~O-yL)yP-@GG)1GnZ_*^}|=d;VjA_bBis6o5>6I=+jSXHhR6@~gOUH$40@ zz6$~~i_hU9sRM4cXu_zJ9ibn)mNahEoP#{&n?;|F&x;^@RY>3ZP@~i9$8OO@+nJ^ zh|?>eaB!SKyYaCsi7dYLRC#mFL7$C}WzLgi=cqIM=H}9@x|hbhqTAv7N^<#)}SYpAh&!nRCLKjd-y2HTsECCwScNj!$X5_H2if%{-I z1t8}dSov^Pz)F1y5;^x1mUd*S@L>TFJj4}rP?LEoJWf2-Q}9%cHv=?Vf)iSA22C~+ zK`9h69ixy62%E=3j~CV?)TMtn+mzT5Xl=_P_@Rk&dJ=G}S&mPn_f}mdy^yRfxNc-R&1TQ*uFQQu>4lNC zGjQi{B>_`jq%Q&1xS+Kp_Pd){?*w%Ql@qeNdJ)C4zAMU=j#0w(G_q$-gjpwT@2*iZgK?u{ zpQxtw>4qO*e!H=b!E1j)Sv0A980c7-K4$@Ff9g+u#1*(qoP>r%4RY_)#;$LJqN zYd`Kc2E0B+ZtS^>f1Eyk{P^LI`$-l25+fVdZS-?b-n-D$GB^J$+5w{v)X3wl#y|h- zpXv8ttAQ-{Zl+`@TPnj*3)N#i$w%m-k69`51uZQsdp-Eeg^+(D@z;3+K+?ad#jiyx znFR-AeztPxA4BdPek9|Ryp=6&YU*75!H7A3 z@UezJ0E1k?C}cql>9zqVH4e7ID}90()V<^%gx7vv4zIzIf?TCIX51TgFBCqC-#~Vv zQ>1BzYGJ%{@<)I6PW~vs)BL>5Jn|_~e2S0!c^OOTPEdN9nY?b7{4`Ai z5(_Dbj(@y86}8<^jOJCq?H4Gni0iOz+_`&K`3$kB+$MkbAQx-#>J}CrB06Af>Ru{^ z1Xi!q;nJ5XFsy`W=&}*_*ev3qG`oa6cJM0}ROO^4=g<2gSDbcCeAjP>bkx!&y;_^f z-;>^FA&1qtkaeLj;=c@qtMS``utNQ|SQR7%VAf-Tc4v`o9; zQpogIM{$3=t+CjLckW!)G^Ud0>&c-yf?sV@Ykcm*7^jDjq@TJyb?3=p;}39Pc9$l~ z6TRC#j&~y_v_5Ii$0uTwu@_FZ;_YCiu_rs}$uDRi;FjdR3#;@vYHvTQ>t2M4)4U8Z zi$(IQw(uFa-Ba^~!R4zOQG>%aot{Q9W4c*)>}G#YER&9`0nfuoh0?CjB)WJ@u@v$F zzi$bEaMq04tcj9v*acj(S{wxI0etc;H=L@T!X**~g-fEvh3mzb{V>!mp_kX@nsbaq ze!MLLgU&_%35aQU>FpmqG&3%^FZ1+u?;bL8J-+c!wz{#E#z3NZsmies)49KP51Dl~ zX4!xHGXJ)F_^zRU>>xdaAAmb)&BEP1ymKd%i|;3&1`DhEeMH~byqHtwYGokh&EkQd$T|^ zI%aRVaib(y#PQT+4sh9DR#t|T;J*2eSSK5WrO`opSNz!yI!qf^phyq~85z4k{E1!8tqm$=y0MRa+ z%ZrQON8BQ5oH>dZPIwdOaCRc7qois`9w=82?X5~?&J|?vT~59NS!*|u^FHUD2N^zr0Jb`NNnS|nI}7q7fcK1@zh5;K9PSrN}T>7 zY5ucAbmR7desz3~AJ34r{#~ODpWnulIlaGq42<|^;2@^bF#l=*Dcgr{pMi|O1ApF# z*S8l~CnohAG(6>@!w~DTdbabn4Hx2ft?grc&#s@j>nHMYb@1fxhj zk6u4|IK?2%KxHIkQ-_TixCO@sQ6yC5MgV$7{>8g3jfRsXs~5<{I16kN+3x^IRW#(=6dgggq*{%yN~v;1Pc&pDRY$H`y5*EiAXcXRa8+E|PPMdK z`1R;yO}>--9{m@6x-8GIav~hS1ok4j3i!;j#V&g!A?)RQ?ksZ%KC;1awAtw6icIAD zoybH=nBdmr96e5sjwTwJW0I}Cm=h%?9DgUki;MoQ!oC=`$a`_GF)c>;X_be>`19q$ zm?M84qOjx8isMm*mtVR^zT0>$COW1PKAwn9r;KitosgS(7`xp1;k~N8U-2o@2g*$Z z8;M9Ap^aeTC-_InC$oiLvBv~ z@^$J?j>z-F?{M^)nQ9=AwoR(_#OONJi7(=JJ}hi(484Q_YIIMZ;&&uny8iw z&7qqQ-0V(FPg|>W>x61q3H)j-l-5^=Dlm$Hc%rQgZ`7N7vzhJ)g5%^bKN+X*cEfk$ zv)12ZyHTT5MY$=~qQu45(bn?xE=<+foA8f9Y6+c%r0@I^9Vht+1FbFoGJl3MlT3_F z!-8}S^)}0!*&WN4&HFATG98l~z>sf1Oi$&jWq+N{Cw2<{SFs)%flNn>aW&;9pxDQ) z?M-xr!$gLQui)jt&FOG9S*%M>OmwL7)KUI%{%LbYqBp2x%BJ>y^_QFaFUK&KvILAtp6>clJ7HkcExP4m-@eMf1VY6-xlV@KY9rC?r z=i=>3ZbjQ1D^X6_kLyh;O`~~MjOG;+xg?XJUy^^nhfnC7U(*?RWeb*Mbp^-c?EKTg zeJ|8Ko`bB2Y{Jtco>55j!N(ELQs+1OthBiLZLk71nYBmLi+Xw#hj~p$O&QrVDLiS@ z#0$lD6E9DTiI4O~Mf5;{u@dylW#w_k<8cya95XU`#@Sk-dus)$wTyb%?D^saEpf#$ zbBTX0;}w}aI7M1{IBN1{oH$Y_oj6RPOdP#_>xZG(*y{VJQ^xtPoicdsm&72A9hR4y z7zr$J6C+QHi2+l9Ma0-8X|CpO*QLeT(J#2!kvih+#L$H}JD}E+W+#0Lg>>L$D87uF zdLw)vQ>P8EujjLN<7zOa)oN@X!jTV!vweT)2Nr&{d>khguiKe4rBj{7dpQlUc@ZxP(^w9&HE3a<`?f1k+I*(oARWEad-X*dsKc3RGO> zSv|}{oNZAYwx?(kMYqDo)-qRFsc+qBzl?vQ zd>r-~p51h>{o*`MChWCeMzwSO%gE0)3gIdKk9*B}`dypsiebVJ-EF?p_)+Y)Zz2#k z-)~np%x}Dj&BMTZ0#~#3@HpRkdgFUY-*sE>=~lk=@cYWGw|A6py=$2-UWPc4m+~WZ zO`{eoGAc~G-_OsPRyc{rWZjc3VcDu|f|D&|9Dg`Z3(|ZG z1*~i$?!UXNZb#?AWoi|kNk`b9(6!qgP08vUUS33Go!~I-<7ntt6^}bHWSSY9#_*Hr zk$4x-hM#U;(2YDDnVtL*hG)VE50C@PH=ACuLNf5m*`Y8#@LkFhpmf!hDlNDTSyZ@ftO~AZ zVeHOT-PA_rH$`|MHOq~_5r>T8F&{!V8f(;-0NxPz2vy-=lpC0Qn>nl)OD5r$uHdewS%%+RTwN&WqPE(hM(i{WBhG1gDzc4*=Lv-aA2#C79>G znyZf9bVD58lqGc880_sam%cXBWiK&5CHB&_5VPgmE6GRTS}?H>@w(D}+jQwp*%?lE z_S`yu2D`jm#FhhOT(5lK%NJWT<~lBsVv;WpA&KYz~RsGlALCae)(Fh9B%$(!U*}Y^f$qH z*tE#}x0OtolS8>$19_PJYVlMXmIho_8T<>wwXQcMNV4dJOvHu91T1ouRv#0V>!n+N zgYXy)RGNra&33D;bG0FHlDrH7Q=w(~E2H$vNKXp6i%2WCV>?&u*lxK)+hI$_r5&~; za2st);&AoEp%)^-=z~)1?+`N!>REgmZC4)}@wm%h^SsWEEy;99<@-}9usY~=D>Dk$ z+_Fh@1<|g>eM%sWy6{0LV|SdODIwfDn1P?Is0^_3N!_-9_Vd|rq&?^L>hnr z!y18$%pBp7~}u1)&5Dd+a&Xp(D1jr#LaeA$OjWGH4`D0;$a$ zAH&7;-Ie9##d{ZU^wctQ)vu$SwGCLSd>r+&v`$?3G#Vn&9(nupYYRG2O4q$Mf4H!Ltd7y}a^OMkN z6$0J-ljmt8HKA5S`^{cLGqE2V?W4E%>Gf()@#h8lgFhRdwfvyrQ**c*gTo9+7dQ7~ za3%#Y{hlgUS1pr2Y8L^{lUHg+0dtd{Y9dK}qm=4~9?c&4I9WXr^f=wfT{QWb0JjpV zijA-fX-iOzmLX=37*_0X&qc=;y|m$v{?ns*A0+n(X>{KKU+Z}EN1J(D1mJxelL>1a zf197|q}|w_0~580WGs@$%Ko03u@YZH9K>U$4{SUIUV3A+MF91vG8{(Shp0GOfHl-% z>lj(F$;p#)=0NNz?{5LhPS06MqKN<}CaOtEG;93ee{rbE0D0ku(Ze=-h*eV@657X1 zM6g?S&NPmrvQvnXE|>DGv9tffRhJ#oJQKR5S~*zI^0AmqQ9cT8XV)R!R~2)z_U_$ zx7$a;xut%$nS?e;*Gb;YcsdK7)u}Tzm8vruK@oE4YHbnuE7q$_cUB)Y0P;39K}n$1 z0FVvci9x0%N_Y@zMcNhWBx3CL+_d75;(rIAMK(T&{GzUhaFW-aHqbuBGwvPBo%`F-Pd2JYkhW|jzpzw$i**cX25IOVZU?%LF&pEvc1A(e?;w-7q6n&0`aO(@rtWUq^s1yw)77ua#eW??6N83N&^N3 zE#0+mi?*Y2yT)L=b3qXQsa>1C#zd}BI3@&Lg~3gmEZ=~Z0U-{6j8lK6jU=eHJh4Pn z8)k#UWCh4Ri&;g4)s1JBWz#$+MYNl0fX~%UZriBm+jgVlMzzP#f4=ndw@l}}dBjb~ zv4&{Pgs?60N}Xc1&qz^XEvN$DmLc z`MF@y)7MNsKE0X4cs!5YkM4F3v@Ltby@mVE?CicH7IJBUe?$Gi!V9dpq|gH!s(HsF zf9?QvT+L$DK?b~JuNm|uQ_p+@uoNy8ihGBQWMKUqVxo(;WZ*Bn?kXG8??B<7Ze*iu z1j>_ao&}X^zUgJR?c`&Srfev))`ogohg)vZWB+n*mE^VW_CIz?n*9Ka^OfpKR4kcM zv37R{@MJkYe+QZXjP)>qcn0pzUCybzMKa?6(RH1k__bYAo>_*~XaqWFoVh(yds}*g zn5Pa8jHEF50fFe{qvq_#6;q5X8}!B~Kp*PMe05-y=P&q*Q6HL8Eu)XbRd}C((@OPh z48fAhm(1LgQiVlXEbx>i+b)C}=a5aPb9R9&-N9kSfBA)}u%`WN5sr?CcX)ZD{_+hM z;Ay9e4KfDu{^EnVmF1Pjee6rGNy9PWOJYofu9wAL=M|#Z5)yIcWwvX|fIeqso>`gX zSDHx>5e$xdzd>=L;mDjhL0y{Eka|o-ULh} z-V+m(D={C~qf+PNXKoiDT4{WMhXv3nQHD%Ue=q$NiQb!7%VKQN5&GM_%ly2W{bKTK z9;+x0_dOh|9>=N&MV>F)aqDsahJ^7{nwmUFK5?fgbFT7OCx~OcLJY%DIKivX#Wc2f zLeIVeH-Wli76cp$iF0v23raI@LwmT217FkYL1XrZa&a_!B-2e@gTd?mJFS(R2&utj zfAND{3W*?h+6WdVH9rQE6u91Wp9m|IL~2+AVtHGBmB1}+6eab%huwMxt`ssA-CW)! z*b8i$>9@$4>x~Wb7lAOEJHt8I*EAK~=muvuOk~AbZv{$6xNbZ{l#z?;5UKfWPP=|i z1?-#?+NhmSKch18k+n>N?GU9m;j`>;e>UWfgB~(+1eGe4m5N0tNTsI6am+{I#gsE0 z^!-d;Ob+_Qn+ucE(098F@x84HR)U+&(%%W_Kne@P(i4oCBOWyG7(dy9{h=__b$Ox>xl2;h=ZAuim5Kf5sk? z)dr7Jy_YgThmV{}E{?6^(-GkJt=99S{-e(de~2uh$f{^9-<1nu_2ZTI!;|NOvsVKi zoe;f8*ua;K4_jA`S;Dh+yaV~Xn)9PPtZ<${v6)6(tF{sAzOEf{|Gk@@{NSIseBe$y z>HM$ES8cbldW12moBfHe297JPe}ufGZXhpN)tv7XVkV!?Qgv8aHd zLir2bLZKdW2Qk0?r^#z{!YswL(IviLE3Tc^h-;;O1>#!ROCDvtDzVZ_JK_jeBvc(m zZO{{0gl-@H3#OrRAJ#y+*K7c-*6r3J4Q0Ot0b3XjxHim1*xi0>*LS^7e@3lQS3Shn zFakLRaNp6MRcJx|O2H_b#AX0^0(P#Qb2l#qHR zyrEH|7lM11(-uYhQ`eRabgQp(#TlTZoZ{?i{#P z8a)gd#2%UnOWLC~U$wop0odA@o2qmWRQx35HJiAneXDHU-*o(ToBO!9YUY0X|8M5j zZ#Z)>X#6QN7fsAyNeklH{O(!R#{EB<)#L>7FGMJrVn)&lnH!g4Ma^z64Q{96C|MS=G96_~l57hwXL+8}0RstEPbp)h!x zI_0P1Mht}e19vaC%&s9fXP+k9zHE-ck(?e#NmH!BV6&)J z5iHr1wvZED1mboJAt#i%R@=d8mEP(h!O=`RIV3XZsU?vlf6OW6V{z1IRi9z9ZH0|nz$ z8YnHPHjt3Dp@AX`r_Hk$^&@mwf=usI4WxVr!O#IW*yB@T#v>6O67!AC^EOK~R9^;z z&guyY9UvR&f2^1A8;2)L`m`MK|z9G1cW-Ge&`X9a{*Ytn{!Qv+fTXMC$hjd7)4{c+%-vj(VcBF zI|f2jfrf~HJSO?7uo*h44#YG3HetkWsPqsVutu#9f9I&mV=sr~XK@9A5B_%(Rdl~8 zQ3ZPE2;uL}Mo14`X+u~z96OuS&hX#>q54ypLQfdo|ss#o5xAD z`$}U_eAk3FEz~c^<*I_v>q~%vU)go<)EJ#U= zt|Hp9iR-o-X2XO#i5J6avn(9&rtP-=`ClSM17rc96=2Gb_Mw0#8~>Mo-f5%pCnr!;-$9Z> z{E`R8vzZXxZy@h3`Ogt_&wQ;5ea${hon@%&!1i*Cp)KAwQ?&#vu8D>!R5a3`uC4>A ze@pw1oripPfL9S+fH_l`y8==rT$$Uh2M-Bh{65B9d>y!&19vw&f$d(Cc)SS+As&@I zaus*yxjQvvdy$@k#shsd*cUTY1dX#gT*N@{$a=UYZk}U%Y*HWIINyY;Tf=${$=QM2 zUeSt}3QE|48nPf0??AL*?DkP;AueCrf10{fm8v>O=z?a|b|bV}#+lZbM8NIslwUQ_ zzie-8h|(_K8&`fRW<<(q(#)IaC4nn)6yVWk-i|*EPoUg=18}U}-5LHeq;T4GWIZAW z*${X(Ws|~MYhVf5BaAGTFTKpvmk`N5vBIeJNfF-#hXsoRw%i7gn(}z>uh}DMf9}UE z+rQTKRm91n2jV4V{(j=kMXYYR{zbtnz5%6Gc!Ml3tWww^SY=)5yF>zg&NPH7RUsTi zvPcS&cnUBQvyZv4W?2g~V#U%FjK?LFkEo)HWsVkw_xbfUz`OiyO{uhFgPg}Ob zfcO_A(d1U9`9oqD^fA>E!7mS>+J_S8B!!BEU5~P1)U>%&tw;U|Tvb$If3X@!ah;Y6 z)DXF@*J3PzgHXBk% z=cHl17el4>-gW9z)+z6iZ+2o#PrYd4XvnSCn>aPWAZCgWx7TPfI%Jev^b=)7R!vck zge-?;E&+mQwHtraCc=M5e>;i> z(zT6F6K12~CMS1y2>kKW~mkpa$49^zW)L6*(+qDKL!h!*CZygDFkirz-?Ly0fKj zQji(Mv<Q#lZbmI0a%l+dlrAXdJ@Y3y6CvflS?Ucq->h0#zNd2l9gsT>B$Kl z_UQ6FlwrxF_2Az8@`BGZ<`=Z>KS;v8LK2QF9R*=fG9>i1^PyKcA3FcZ^8t#RN#_Fu zw7T=*Wl3(Nd!eszNYJeIbe@qfx(UdX)w=YUV8kWk#qTeMf(V!Ko@g zh>YztbKV)&nlcMo>O5u1GuPjSi%@r*xtGPm7#D&l#hpv^ zjZSO*-)ji9_2w{<(-6a6tI`r~Z(}~mDLH`Jwe=>ffcmVlo|=z#VviSW3${k0L0F|3 z4GQx@AI3z3VrU~WFpvgeh?o(9R%Ar0anmsEeHp8m)X0newTR@qn1fId8d2<3y8h!DVTK!mClg9u?6IV!}p zOfm$>AT%F_rg@N}$Jdb}oq?N-WVPf(VpN^h3N?zxG;QwHRH?qc$t7d86Ub9teQsyF zw{Eav{j2kHWXva!lez&UDp4U%O#@LYyDQU8mHjs~@K5-P^yPmBWcCb8u}Wq!{)xCbX<=mD7cWke$Kq!ol-j-j%L+edoStZi@TK@l6KkFDUJGe ziR?N0dN^M>`U>roLyfz+Ua!-FGC61iDL_S931S|Cz?{l3_E7|j%`C&Q3B@VNv0Bq( zp5r;^0j~K|4i-yQprN-yeRjP{c$m%CMV|Y*`$rDp8^i zSX#WRB9>EBesRT{LR-_@8jOT+mAFD^Nl7=PSQd4Df1~>;v*VM<4y#RyPrq05& zjAAU89R+_lQr>9>RZ}Cp+(h!yTX034r&=^>Jz&B~nw~lO1bMw1+*SY{dQNR(BY4Kb z^uQeQaILW$?W7%aib5D64FF2Efb4Dt=qsF5KCf7aqBAMj@lERc`;^8JaU=0LRmXue z4}|b@^AN#0!&E-kcqVpbU6eEu?@2%qH>PCBRc(_yfE0fX8Sn(F)zw+kx;-K~Mn59^ z>geMXr0peSKD7nWp^COEJP;`0X^)%zu|P_qo$lxK{L;$(xw#b_Jz*^1>VtPlOz9wj zX@p~vo5qx1(@klxP0MAN(m0U}e#bAr{A}Dx9vIjv)(DyHrXx5TncnRR;a|P|ef{{2& zH6xgz9tt9yo9YzAjXGWG+ddpled61MSm5TP7HX^GlN*5>0nd{+fiep6J9}a|L(q`#UR3hRnHeUw<#K=JWzOe0v1Rz@8yEMX#3T9$2ya z^AAEf!lvlu;=;WZE2*Y$Eg(iPt7>Ioe#uHNFDxzGx8jz3Iebqn2lh!(P1!5=7w_L+ znG5f%+`D&g0e#bNFD@@HEiKwxEBEH-P?RIFm<L4wYHPI3$S8%CiP!Iodh&@@-jT}-x%k+{GZZPFcgyzf;7LIGIQUxoQ zKH?TN7Enzw(b7DqP98A-&8H&O-8D=AhJn-CVNc#Ru| zECS2tB_*i{gy2=Kve8Rxq{DVPU}cm1O`+YgxTa*#$=E5?(DV|k!PJX9G*FMHyfbd* zh&JpXxXDD)+apLJJUp6Z^#;@y7@^|Wnq?bv)qBE{FlQEDu1mI_)O`S72rD*N=7^*5D?M^jA zj}&o&|Jm7J96WW?m>gjW-H{oGzh=C>m;Igdn1wA=ZbYfd!Mdnc&QQ@^%9K3cQ=a2$ zR&Z2IKY*3l3qqwbFlFMIRBe(yZO?yI(x@(~cwJ&YXEX!z0bz(tzb9u&@W6ycjx+6A zx7Oo5zn1IkbT#D*cj82KB3OxSMseCQUTv`n9U#sps@5_-r3t`sP%Y2JH5oRbsNzuR z(UZVGUTQ+67o#AmsRi@8<|H{aPXKZ3h2cTD0Ac?#tZwz(1=%?Q>{Om>jPieDp5)Co zj(ud2=^{iAl*!wXcMV)})roU0(7AZLPy<#Yyu_8}*4tXt{55N<>9^t{kCcEBQaYJ( zbR$!8^~J1j543OPQWsv`A8*33hn~js7aHEw6#;>*jFM9yF$5*!0~mRRbKWI*Fl02P zpk>=JPlkW)H=^>|fiYhUIT(Kv%yslM3rjl=n`n2(+l|p?W3b&g*j^oPCm(8|N(sd~ zoa^aqQP@X4qL&FIZwV7|!tZ?KZj*o}6p1U@fd{cLYC;xG%Yf#9J+p(HRN8K32RTnC zJBRfcPun{G85A6!UBEzC9biv+zQu z!l88y*+S2u8_`*VMwUh7BOCn2`s{jH(*~7rJ;5XUO2_`U8}AT%V{T#MSv9r0a|C3k zOz(9!td$e&9+~eX!Z9QrnHNtz`-)GAx?T#*lGj zq-^2fB&i#3@$py}>}q`pN)Q|V%J{QxB|J9pw`xY7URtcS?n%v@qWl5~vi_ZmIilq6J=63C{j~lKiKJkJ)&^saQGMcLkzq<7co}JZ0Xo*QWMp)6 zuM?(#Vy2}IWIX)Y8v=BRuI170X?jx46>Yvi<-4)ak0jrJ8wUagOEiEH{yi%A9(- zOl{@!T`7o`dUSdrJ`SUu&4X>HQ`K-C@lCv=#!>08M68l_f+aWq)R|w&@Yfz3qikGB& ze|3%A9guQEW5)teiS6?|Ek2@R$p>sc`ckpr@CZ`Huu@r&N}zT)8&Os?@YAnnJ13iv z9fltP1a<2cjPLg2@~YaBWb$%Y`)QRQaNpFU;XDwAuuX=uUF8Ua9MA^ihg_s}d=>bS zz*en6!;WSce`L%qto#!gA{4j<%hN9le;`8cJ$Q`>GR@oct;RYyboV{u*bvoHd=UKF zpY~1Gh0j)4HsO;4!zN=gfnVd8*UGG)nfS2LlO;l5y83z4QlAB;pk~?V4*MvwVzXB0 zY)=p?DQ+gQ5;ox?U<|G%UR9bnJaeUoSQXIM;A^7FCPS z1vPy}zxzVJVSv*!3Tk-)xpb#YpGkRxS-o|3q#!g`k#}qaN8V*ybiR|sS6}`fG7p@Z zqLvy`U(?Q;k$dazqz2cL{F;wNvM-t-(@NP<5~(nH;@%0Hx9nWl;8&jue`z^Eqcur? zb;Z}S1H&2}6j}AJC6|JZ9wuOipa7ARq^(*Csx3--3HRclH(7t%ekb;4lSS9waFi%v z%gt}r6C}a;F`y7s{Fj<)q<^=gB|~T$01I}5hGcsBXR9aB0(mbUH}ceU0(9-XUL}x~ zs?i9@^Q-k#?OAj@^iz5_e^EbxL|viaD?yWEOcj&?6OSPRG|NII-I#a`p%jjx`o-H( zn@adBWUs+^eT;$bog&<0N*>Bt`UMA>VbRo|XO1Si#VvMwg%!bAi7fpaTb!3+^U)Mr zp<=!XEvlBz%ee!1lG65SwQN4N==PZ7;s?5VZl~czv;x`|S3s6De_TnJgvN&3p@|G~ zxP%=&KcGb@sX4prW0@yNpDQ#50h_EU2_5JuQ>gOEhz2po0nJ2J+YMzN5yx^7tuO`z zfyeA{xy(~E$<9Y{2PC&*OG0D3`>jVO$$#AIr;;U8IK=oSq(3}&0#ae$EQaJp?B^Ag zUowwb$$3G>hao3pf4u-Dkh5O1#xA_Z`r^`iXe+4zA@7-8ur`C4cVs$GmcPMbLtC7AE)ERQ9rTI}M)Hk{u@Kex8w0Efp$x$%v1mYne+Lvw)p*9YtDq~S6wb{kd?8Zd z;Ii(U27xar!9y!I%o!=P)e6-$HxFZ}v>%dZc2HJAJId9V^(voK_+|1SLa>OaP$i>V z>TcQl2)iZr4oPl=5IF0Yis2SX7o>9iN#mn4vDmJtdbC_1oF=#{d0#{I9!)31!OZMm z_YSkze_*U!GFfT)26AZr+9~S-)VOkrU?;#mKjAN>Z2zu0T9y2GxlBU&CSb@++63AP z_|lsLY_oj$g31Rkg=*bS(UD_Wf?1+pP=;o0kIQzHNYjb?v-;*F=+{ z=B(145s_}-^VG>VjtG$8Lir7bdTPnw3cL|nf7NU*nc7irWWL4pG?sCThQWGIV-5xh zj*k=Sc^6$g37Q2ncSB{;k*U_))4qqR};{7#i3zVi+o};KPaY<``1F`lK zrA^9-=k!XY4q!(YM-k&7D^66){@!Kj!U#Wh;gfytQcDgu(O5Rwp2f39O?rJ}QbL=7 z7mj?FckW$CV1OnYDvVx}%v_aP$yfH}lYfy@e@VQ~ZSx0DsnQJjH)Kd7-WNs5FziVv zg-X_;nGh+rXE`$!8W$G2&+6g;#l8Bthl7&K zE{G0-aeFv8ySO+*gw63;%x+15hEN;J`rn$c2*e1%71Y*kC=L>2R(uP3jHCXOf08YK z8w_hlBsxKH@IRbd=70``|A5NVCq|4$4~UX^6?|;4dOaTiREzq6iwg^YdV@rP_Bq^G zlnD8aJ5X^-IXKdghpjEgBkB$WZTAGbdyxwLJ3yF8g1%|DVL}I{3?4Y+L*#7HWTfp! z>(Ro{XpA^+Fpa%-U4U@~3O-Q!CQ)4m zz5$dPX#k*&x$Zejm(ms_MWo}=-FYfY<-+(lU6e@Jh*fwpz6@!SWW#`OyST6tb5a6n zvRwh`V0XTSS-~P0?9#|V{OhpTUU7vnTY0-rDuKN}THOxE||yF%&S%u75#nC$q6U87ZI_L6(va91r- zD&$m?X-8fV(F-+ip@l?rh9v`?c|R6XPNkVSKI4u$VI;OPvHxjJh2pZbH13AWHaJ!X z-*cQ|+YLD!fQRG|UM&xL@z9@(5(`*W!4vhm?j zMDE1PzVYHKpEaIGm1;ZT^&Z;Z!C_2s(KV5*0O8hChG2nX2`+WUFqGf-2sSkeVyrL# zz~<`-cP{G^cmH3~zILsDsVrOf|GtWtcH2q0KtQdwf=dpCh*X1A1w;X93?ypGkkCme z4Ik$Q&aZQBU|-6)rF{weea9H{Yh{6U_48Co)?9PV&oRdw-(!iXcF5Ma{M*r3x)7C{s~n{DVKAJ(`Px1tAY8Bp!~MiKMDe}czAdcd56 z3Gnm+60`z+$8=e$6`?d62q3f~d7qPSV0FTf^Ax+pJ~|BVLEK>;=7WLUQgW5Kyj@7z z?38~#kT7o2NFNxydx(z7o%_{{R8HJ-zg+1Sdm5zleOT>(Pk(Z?%hohqh3}q$AHoeY zD19$v`(9TM>)lquAN@inMVXVj#5$L!$d%WOF%zL+6m!MB<~itw1R5~6hAww-dfFYo z=t7r|+*HL7qQVj0P_Ncu@D!IQ+-ZE1>tL&Ubp>8jyt9q?(0$qK!m#3QYtc>F&oM*E z8?FG{Zz+^%Hza(wMGGfL&Y$Y%bR2Ys)Oc}vXFtu?au z7Apn`)m5Oe10^_3O87+lfjD$tC*qNkP$Nh&^LAUbxr5;I~&IF!J9+R?IL0b!?QuGvI5&dA$D9`Gtd`?{FW2s zhl95qL7-yw*pdaDVp^x{B&S~>+|74?aSewtM@`YO^oFe1^FLC$iaUbg*dW)uP~gruWCkke z^h7F3uIo|6rpNtaCDcm%Tk;DelfF0wekj~7` zL}RE|aCO+CsVz(Tu-$d0as8eoJk4Mgyo_7OxdqB2!heXnC~(HgQ^39<4M;R?%^+PA ze^AOQ`Q!fl;i5B zLNapWI~eZ;{|pz4eci%Lyt0L+!QviF5JOGI4yVPUgdUGyi0{I*6=O*YX*KGL8)cQe z$@#${a<8#dh;Y>D=ey6Q7zCDJ3W3LO+V+tpN{`2Mq9Q`BdKGBojqe|uYUGMzi;sSP zfqY2Z&g95|D4hx&d|USkrJ8hIh!>I$D+D@qev?$nikI$QIfY{xGnEq_y%dE%e6{XC z7ZF`jexgxXX?vh3&X6_{YHtSa<01(eR3O2yoJ?tQ)AD&Gc0#EEX$Yx?L+U1tV#XCO zZjC6S2|4(rT>VX3$dY-BYx12J5CwaGQ%T|{%2}!KagL=g95ysL4UiM6ycj3KeZwF) z_Rt>Sz;2CgXYk{DE>7HXj~LJ&)l2T9`37#A^sOloP!evLpqPY^|C^*by!_DQF`KY( z9R%GW_#J$$1pHJki;hw7MLqQm{dp4Jz@CAJi^uKp^xUSv2k%Oa1TRl_u^pg)zg+y1 zYa&Q9<#&!|jvaf|sW-I#HFoy}7S6~arASdGutF`L*N{1Ro;=EBqW$9MYgI1p zQMDBi(U&npTJxCU!t%L>X~FJ{?-Ma@@`gS~Bc#5az_`7SrNo~u)^s>-^~Y6s2h7@Q zcn|O`1WwCo=eXYSTreA!fvn(vK6O|0beIO;FWmxMFDgSPwTuRQ*OPuUO8NoZid9uJ z7q8@xg_YzI#&d`;HkJ~qoZ^IT@6h#U9Rd~>fDgk1q_I(hab$A75JiAgPb25J0tZj3 zO?9P7^qfSgYH{#5zY@VNiVKq6xFob8i}jk0)dr$e3$u6QPDd?xZoB zO0Kw$nTVJcuWI~LE8=U|OpWZ{PoU9=#P*Ds3jkvSjY<#^~cf@(VuwO?Q_ zm#q~M!U}PGyY7&5l|egyoP!F`juHe$^aH&f-eW+}kkJ~2DEM1sQnlm5637MD=2#;8 z6EEcqtbOW1kX(1VmbmJO>+}>zbYMN?JaZ5}5ZD-Y)dtk~(_kooWAK9q-n;+F*((ymKOL4k^QEmzAu!K9~K_6vHWh{{&Hd z)3E>6?;iU_Jb3*yQbvj>YRdjV4e0@rDQyW~ce*oZ4`I+`LB{SqQQ3Nn%2(Ya8l~ zhHy2bMq+q^W63{7<}=~9;-!JSxEPt^d+}jV#VVVKYEGAmjb=PTAroQTDX!y zjt2WqwIkCN1}jO5wRllG^AmR?7Y!+$-R-x{Q+Q(CHj0P~whXXs(2Hkl%4h{8Duh(4 z31>X1b}1Hr|HKCijbaa$ShLu5o>;R)s^9OxVr64+$jl+ySZw`g#sQ>$>o|xizY8^n z^s%1V0;WV_UbonG%hM``*Za58=d@a;ERmtRt&^Th(Q9!WlBq4KW3Xf*pQx@eqhzCS9ZE6{5$<@KA+~#hc)zqS9N=Y!2Q@C9 zMI?5K3_>>`OZbl9S=$TLRq&!=V*kc`7##9{4EShs0FuXZPk%c$*xTgj&^c)C@X{i+yi5OnjIHL3zlqZ%_Kcbytv2F<#KEaI5JQE00L8B zjs-7{1-k#1ZaThw4#x{hG2?RaOpndOz6lhCDCBSMJ;ZT)gJwHl&$>gGj24D=m3!wNC$|JC~kn?JwmVA{m|`qN1r1l&CflxzzhPha~j1!+p{%Hlh0(xEBJ=BfZcg<(Xoc9Lj z|8~V51`P!Gc#D+pA<5}A48)o>ZFhhDWF2MVW^NRv%Qy3;!7kvhqRAgp;aqj6G zqbXPNhx0R^B|_JFKL7OT3JoWy6J2>me~dl4T_D%R|6UhOF*XYpL-fI9GPm0N!rZer zOZd0(=m~$}-v$!>NFn}zG@vPw-}uvb*m;Pb__u+qKvEfhP~*qBA9lBEZxAetqBOLN zonT1q?_DLw;@-4Mk4pfgoIiPpT#zIRU6!8!x&@31Ot(}(#Tu6&3a~im5oN8HU2Ilg8VT z1k|O~WN%VKGqG$A_`o<2lckz^!h4J`!&H#s6l4jJi?G_xaDI%$&?-RX>L>o|76l$Jkn-mDw_qcDyksY=m~h0_RXR>a5kUNtbR_1IH+fG9qF zaJY>H$3EAc6BkB*1t)HVbBi>KagG#4nYm{fV%r&m#yfM7i-nkjS?mHF&Hc@cf8I=J zNuDOi5^5kqOQ?ntA_QKs64phq0uaK`5W=w`1To43LO5PLIe@Mmw1RXJ5fl5usbcOo z(hsB)A2+%0$TXf7K^E88XH5gH43N9d0vL-)&e4|&BrL_H$h_jv9= zj=97FH{YI^Uh($i2UGKqo5r8sA5qQyiuBG z(ql4bZ)Hz^X3YkTH*dhP#$U)J5c4mgvctgXmU{_i_4BFsXooZK=hFyR8K%T_k!+1I z6zN{fd3rXvS{%}vkq9q^YX@N8+m;xQp2ialcAT&FOEgGMZxsB<)%G#+Bd5i!xF!oy zvIr5BDZ^gXhlht_c}mON;3uA5ba3`g1-_5uyP{2hhxk($lBbju&NbjhZDaLr)CFC+ z6aR6iVkH@t6h!a|#SSNux5sawDhxpxV_%1<>;V!7NFGE2flJDX9`@$aU@h3j;nTf2 zcW(@FZ^+r*n>!dHo-W4FrQE#NX(1(fYF3+lM;z3O`^q2 zTK|xL4ALJfNHk(!AtKe@T#|Yyx`l<60GyhcHNnRnBH<|pfu}f~WW!0U7u)O?B)V== zUNQD&_MdY7COK-{uyn!+T=198AU#IAFj)jnWwv zibe6X;1M!%gyn!Be3`0e$hpm@u~h^#`!Mv;xB#R1c!|E!bJ0 zAU0iukw|QD&(;&cebI=7H8kW1-pCI~nhI^|E)-i*7k@L&`(+1lTR0(adQ!iH=}DY_ zo%Zz(UP8tR6G+~3c4rK)gUmAqN^l|ZHM-01} zSUQaZ^RZ)TQ+x%lL-zq_^!mSy#=?kMz8=ODQg9-yUa+#DFF&-ix`#3(_!s;2_}~#V z#5N!LaojKwbXkd!(^#Vq{jf&JH@tm+is6FY4k2(8>>3ak3Llow=irs0k*bU0qB-9Z0w? z$I|>2Qr(3BlMn+td~xUXP#gj-5ZV;m{yoz_0%GNym;LPFyBu$e(@C3X#v|+NH?-d{ z3C=cjf5UvclbWa+f0I1Oe;i>LNrZsCeVC}zNh7)f2;`T99l<;D7v@3oSLC?(h0sa3 zHvPiYHsOF& z-g0Cbp;r`Ee<~VKVFVHH8ac#ssaz%gh6B06kFT;A2T^<+C%_b#3{IlZ%aL(MJWj>msfF<$~HA~dQFrM@nfnP8x1a`Ue7U^;4a|A?k%W5AU zXE1}qe>a;g#gEH`wUxq9*7b-*UvZ(=CRkjrMTH1qg4EICcwjim;w##zF}-U&8^Luk za!ZY64jyEQFX?fG_%xjpCIM%}Zvhu3Tv|MSir^N?ULAwIf+`;ppzIBJ3XNiY>2H6~ z4JV(GJOTZke9qe4k8m5sqyD(oqcJgXR6Q|Nf2*5bS$yK|fVUG;r;(&bHhy}tQ0@}& zUTrS@hLItisOeFGjpZi=2nEp!TOu+I2iC4}DDK`)NC&52a{O)i#*fcVsQCqZ>uv;z zZ^eMtA-Oh)*i`*ph9e&G9`w2_Zi~VmO(s2&Q8WWtr!^rtQf~;k>*)V^*gIRglhl(k ze^@9uz7mw}9J~XcF1xKBjhzSJe-Z=9&+TJ)>xy**Mh<{|0Vm}QNy1Ns8Z`F7 zQMjR{YmR7LMB8cXR6(n-Cv_E9+=SLSpA{ESZE7_oSTs#*J$8Qd#F_iWoJ;A({si{P z5#zeOU|oXMDe+iXV+3e&LyD|p)@-Fg*>h%zfeaX%a1IO_&r@imZLPopSRb>me-)F) zvbFK7OkIL81#8+112tWqm0}-~CKF3!q6%H2$Pg=bC7xa;SY7=@HFCt3z}jdTt=S@= zgxg8SN0=ukP--#az!1SRA}s1rSkxmw6W<S}DqjO@Ck8aoR@l`Cb|$oJu?;Pox(k_8mkxQkM+hglG^={Y)xAVz=uo_uzNe2} z6%$R|WIbnrDZh{RF15J(PJSC|5N0Np1q8W*;Knq$#nN!muz>daL>DlMf1!j0#L`NJ z7z8_|or%r#I?`T6Yg))Zs0ybQL<)MuMZruS*=Z;GLmK}Do|G1)Aakfc;_3@7tWzhzi zRp)TRb*g7Fen>rhQ`;7!Q-_0Fe%hrTdH}auk<)jv<5-{!347FOL4A<4bGwp#9;N4_ zd*k4Hkn(bGAxQAk8~<@@BTtejx7kg5Y|TVnvqxa~5xghggG%n` ztTkb>F9}giZxp2UB*0)mpJ7VF7T|`03D7#iQ6*qSqKSn2D~OYa`ENV7)?k&@+p8dQ za{fnDh2yZ``b^p8iIM_RnEMfR;SA?vM%#M%h|can$V3Z^Q}oPvgOd=j8-Mv3XFcTW zC~|vGD2FK~=q<^gu?H&Hy3g9uSv_kZJq)^3U7TgmFMg<|l`H;RMzoJ21qh*kX)haZ zviN0#tU0gj254yh&1{U@awm^EKf`3d-5Mg~A!^+CE(@d`>qSr3>6xEB#B8k1G)zzl!HGl(!hdDA4@~2hsF_^kH$Z>kV_ZJp{8%{TQT~BJ6>e~@jN=|> ztHc?gWr?^nkqs{F0kOWuG!;}}+#h^Dn2B4XpF3&R%)={sQzl6w+&v{pcW5t*xeW6! zLQ}*C2`IG8 zMbm)?Uo?5Ko}^_*)SB$2LAK3+zF=;doZplWAfFC631@G0j&wiWf%FmFf58_q$}i^3 znL3VMd*in3f>)~F$wsu`>2Qf2|2@P4+*(8|J|~ZLTWGI1h9|dH4|_E=_Ju$D;hbSU zH)n4uQU*=M_zr|06@MurQ$>G5*GHpd#3i4mGf4pxYDDB8EdcF%=J^$gh#M(SjDG-u z7ZHM`=O`R~4%2ee1nSp2!9pP!d~G9HTL=l8ira#mE)u*!ju54X2{F3N2c7CwO;;|~ z#WF9?TjKMJK@E0E$MAnFcPF?pMT)t*p~Y0F6gXYe3S%6 zWf1EY2y;0a`3=dM*vZ&mIv_)P@2yN2INfV;#lj;_VpNDi=Bgpa%Di7%U}BtYh$HQ# zF`be(Q%zSqZuiSE2iIyJBFa2+75mttPko`9HO)6Az4~NRMZ-UeW-V(GXM|XC(S(A# zID|jRbb!Y=4}bRHY&c~QiNLl*NEbv8sJZAWxV%;3<)WB1h%aGf5E8`rUG|{r+U8j7 zqZMBWCHjiHJR&3>Q>}$t#3$qsT9fFlh&w|wfepE6L1|3uBmRlljhoS^N8J$`6%3hn z#>NA6iN-;8PLX>4=KH(8v<9cJXfXrYpT*#ggm=u3F@H5s5qYLY@&LH?c}^-pzBHag z_=W<i?sV8j=2U{HZ&VX`N*9^K)l{ zVU_hFD zM6or*rr%RX5Tp$UBM|IhaH>+%~QrBu^yewPvM{rTK>B zV+0u(C7?X<{Jv02pT_Q+`FXWz$n&?M?2*GG3x8n*Gzl#Y1nC45-nI&IC$5YHp`|f9 zpw1$9fuBrZ2S)AT3GW2LED&L&5ltjsh)?RbgV9dH6DU3CQ463}Y}7$Qs)Lq-6fQVc z%Xs9(Lz?XmYUUVREC!frJ52?TLd`H|HGL4aLV$^>7>$L%64O$}q9J;ded_*a(_o7vAJITII1NH(rddbI=AoOsR2YOxxT;(x;| zlOl{Q>-{%|K^8%tPe~h@0b*TCzgk!bpT(nShFwBC5gxmAfdwJExsH3-^$u2u#MtpvNn%gk`BOpkOjDs#=)WCWFdNd2Htp>3B!%J>S>fJ!>}SsVS}0;d}Sm78>BRK;Nq(pX!Gf?tgswP$B6C$Bh(xCvY~w}=tjw0W4I1J_rcMP-?8B$6 z;YZ0Z1sYV0eD2-zB?k`=gMZE>F4ZKAx>lDCkvD$NaLS>)h;IFA^*(d}?%;xaN)Gz4 zc#7jV1Ut@k@Q!yC`yFg1uKa>FhUyWLl;9R=?g!G=r;3@fa%5!m$lkUjNDichQ+d89 zfGH?KXe8m&d{SH#e^Us~wP_o@*%{)H2$FDO9WPpn)aFxGuZ1}<2!CH>nqamB;lh=Frx|tYr{?0B_m#g6%KA(QQq(6h`j<{ zb)C{E;b0-&FbtLtmjpsGSQ#MWmQo(hS5ohYy-alB@S_TGN+L+Uh%QMNO~?&kT?eqj z0YG%`83v42WeHw(=6}SvR&Wejw1A4SbR0h>&o51_7LM!5H6<58sVQI&&-XYBvY)i* z-7sT@&W|!Hqml%IL0%2o&5k%T{DvN4C9*SST5`u+xru^_Q|)1F5$s8<={Rh`$Gi}X zt&qTUszP)yH$s3A4&`6U4jTp5R4W149Q)rAkC`sKPm#f=0e`cfu-E4MYF#6Ea?B8d zcDEPdi{EMUAKPn-VtdymU>$ZC#CFP>W+^If1j7O>A299!F=sn+3Sq<)HA_oUcqx;YoSqeKn~#SqY%od&ac%P31k_k-mXE~_)6vH*%+GOxDJ zt-il3C1eZ!pbQq!7?6G=R?&;7hq%Pu6Qt+MfI~IT5`StBkj@vze$gx=X^o0!LUJKq zWIRsMGtx(<@8@GHAz871qb;#-ib|fi7A#hOUd8#r{Wc@8Gjle;zRbAwuaI*J2bV5U z;c+V=#2GUsmN5Z~7CkkQNf+Ai0(4SG!OZmVv?XR`J`yzrg`Fo2?`U-}r?3S%D*i)C zfQ#M8MSs5}^%>MgCjx)aZ5wXgMw-f-(@`}T^9JF-h@xo=NW&>3k?+M=F^j-|B3 zAW973)DAAmC#jKQza6N>-FRoD6=VJfT1AUWu}(9~<0~*`VoIrQ7(U!V61l+wucf~F z>8>bMFLs3xW|@scoGw)?4?%74kia7a%Y}qx1SX)6>+IDuwsd4B%vyCBv~gHC!f6PW za1>=}MO`OiKk8~y;h;VFZ_(p=@7t3nyB!x3Fh^_M#CXsR-h4ZJMGAS+7!_bsvH_D@ zyE1=6!c|CjBpSAbbcFS{QQQ@?tDSik?*!vpEux<33X$HjmN zKF$u~CAcsZ2$}TYn$DX&veEsLiOW3oo z^N#DEbQ*6Uz6Yn>6I_X;-w;QP$iG(SpUgg-ov&s}*gL;ZqL&#TN4hEkEWhvb=Rs3A6ZhuAe z(Hkl>I|Q`p3X%CwQgl;;^0L?%vQP*VspxFz3!SVZEjOZ1BVTKoVdoGcwb}X5xG{Vx zw>sYApC_{M2^Zk`;=4>B8q9!%=Zk-{#Y$^sfP>Ar;nmgE@7q&@7`+&9)QFDd7RBaS zUWlvJFO$_sRtaRSO{ zx~Y$jnybqzJ4eq~cXzh7Hnxw}Hnx6V-Z*->we|O-qo>t#yS|%~{PwDXKbn6NUZ33& zDM>^*!{g}uj4atmMl9|nonFpreQFkJFOYh$%L35!~J_+S(o{E2L#4wyFT z$U;xE(OqxY?T{%*lfXUUwm2DYY6v@#aN=XgWMP?J5Xi>aK4}Y4e9v#Dg|+cll-Nwy zkeHD|-U>Mz$lGH+iWo_0*C6isHt9-fE*N#t16)cTv*%lzB8e>$A2)w_SjVYeedsFB z?iNLo#;og9ZC{*nsl+~hDa7}sG#R7V62%$SCXjs9XMe|yRYUR}7y$bC2yod4HRuU_ zA|bETd6P;<(gBOV?;;L^uL{;!UA4Z89C-$E#CuHMUKIlH&dKNJE30>= za!G&Zhc!qw)twhAl~jOCDTU39frZ2D@?}gtdX}Zxik9Y|wlrH|X(o$XToTso@7P2BXpguM1vSNbr36l5J$(0D;Pv(*A}!1 zfJC3n?dUkG9vyW?z_=h&s~M;$aB~g#|FU&n)gu_V@F$Y?cUwKkQu1>KTpEorr3e2w zcy|t;%J~`odAKb9uE@WuQuMdg!~1t1WaArZx;j6gP6u^r2eW^NO9!o)i@BMf4r}&f z=J0YZ`*Hr-mDiW*toI$&&}=vB`@ZMmzMsc^cip8Pgx2H1ws7a!D6iG(`7;5Napf!) zSX{g9JPRMXmUKr=19x^^$KLx*YSqp%#0bLbi@b(> z2XX`Gv2RSUnxRHSa_&smq=XUlQ zo>%yOBqI0M+3zx#wS(Ud0~WjF6uM*icKbde8NzRBET4b>l65t2BicU7FKVtG_|&x! zmuykmIlA7+f4M(zO4^O5Z~bXoixRJM>9aKn<*4m(-A`atzk-Ea9@i!^u(zNSnCFdu ze{vf!v8M0epFCYFYn(%s#zpKrdA0`o@6t|YW^U^SbC_=X+_mi*tgWTMum*z-0|x!^ zy1DM}Sz&)|db7B!#-TQ`FY>px zNO$18zy>eA)gYQFv^QaU3bAMR0i5?Qq`@_}1{(q$v!|`E%Mv@oK?p0oIzI)!31*ZR zAxIiu?}lLv&NM@i)G3U^eahi%+|R3vmCe@I85DnDNdBD+1+pPr;W`3f2hQ6U-rBF$ znd(=IL%+}ES-Q1X(k)~lpS07y>r{$v?UFU7I%Hw!j=~)2Op2u|H60phZ~IXJ43hnt zzn~*)C%jbYACLj~o!f?F)u%>f4Pu-87rs}<9VX5!_4KQLK zPQ!`4z?SGzkAM!gvFTIG;a()m;R*}O5jB4!OL9j8t;mNIB-=*07P;9dj%VF#eVwYd zfwH)cWV$U@dd0$jVP)Jvr&h+j;L12W6=fg;V&&0^?$ZCPGN1)+NJl2b+6%q9V)R4CVhOTp1bpty(z9uQS_~3^h{-g4PDTR^z9;|;u z<&VG3&d)wZG2g5V&L%^^&bR`WtJ3V8cE47(2Oq{?Af&0R_fKZ6-VW6K73EYb95`2p zcQC}g?F!`MXcrNEE1T;(t{C1>D8~}=1)JDdUs-*%y*hi^u6)2fYHun-5Vn;z4mvd@ zlL|nKCIzl9@=$IJ|I4+EUhw=toZx?U^XeI7)Rd%D1BumX)_S0gaTR;YxYo^p+;Hh! z66f)fYqav}gDOO_t>MY1#(=^JgkJg7Xyey)e)qiAorV2@u*;0e@`-)|3hA{F0rO6a zVjM68Z@S}8HMGZo6lvKk%WBfu{TAHJ)}ZgnqEYw}SohbNIou%qvi_Jo9}Ry^kTUfO zf~c#jszG)&((r>mvKd!ec^B8piCo92YN}SHFE{WWr_Wor1$ims+boYUQ{-Lj)T*B# zPyvG_Ew#~7SQMK0pXcoW@_(t;7YF&d5|8Z$07F2$zs!_`P(!F{e`W^vQR}`#Bj92^ z_82w3?$<`KkwRam@a6e$SR6tLImDX@tdX-`bXyX~(HSVsl}k~Mw=Hco{u{%a5BZfT+o@1ZUC z-W>vW2=RAzR+O>C2+>D4m(1%Avj*yubV$f&EfQIr5$p!0A4fRauZ2PM;uAmiCm!@( z70ALl(xEll(kwAHQ}2Gxcy|%VEmfC)#tr;?ALf=ghhlc~7pq!;&c9Tbpj`yGL%bJR zIAaRfa~`KLkQ7gyJ$AtFCugbiOrxp_{=v(zXKXPkn9D!`3sK#VTUkOYeboS1D zX4PhnlerC43jX}9Nf=%N1=qF}IjBHa*QQBpqhFku>$T>P2NG26C5{xdEURBnIzsax zi@jJs5M(JBUg?1#5d`Cq*z3gz?YBmw?#F%&ts}Yacdx{Jyb=??63x|rUpJOlR=s{gq#huayK&PMkB)u3Y8EPcy0?d*y@)GMt&THT)5`i%z_U6sn~ z<^~^C%q<9%dpNzF zK350;)}FfZs>|-etqj1Op?!kf2oG?uLtnVGwS^8q%`HNg*$2b`WW(OoUhHQ3b)bfe zOoVY=v*9bRq=u?l1Qi&bLthy81;(u}u>_5^OywmTZjOGpx$(|_mBQa38&fydhM`rx zN;U*lqkEpk#u=3OvYU-b_Hhu612h&NVQK1u=td4O7j~7Bn)F1!L$)-g@l|~(E?g0x zIT$OwG4qvnL`Z>Z#9fGJaEw|}qFhzN@dATE)U#%-r6*5=&5NCr(t~p#_zX$6pSGL~ z^ZtEU*s;QSe%1tkS%pf+Xyc%Ln4M#=o*0Y_Qf1aTe9}7n2eJ@MUguOBWvy($jn^)* zCQ9*%O$xeqI(>LDp#&4F;&_uK+y=h@-u{nHgDzUpv#1xn|BHw;L5K^7)EHeawgF(F zi)jkKh68zX9o(t!mybcbp*8R~{8wZ$)w`GJN7q%H6+o|lW1(EFK3;$aA_Xf9=xk*f zAmdt;QOE6`o64ovxBSS6jz5k(>>bat-?vHMhGVSl4Tvp zfwSHK<;)dP8{}F7KPer+0BxW2&fA@l&~Wv7SK0`FfkxygaAUu4LMj!MI$4`~%ZN@x z1y62*(u3LiSio3pg={yXoUR9l+~b1|>F@qwK8AV(+OdAy;2(nlCZUIfT~qItcu#3_ zZgb-lvE8ME5#Ap*4o1>4kP1fBH_Hi(gUly7btplXTWGt})>*BcKWoc6fj>k;?ZfCp zSQv4CrThnI$$cXnOL}On89X$wM1FaI+qgWlBQT0JGJM!5kjmU<042gY^VgF7ov}BK zPv8w_!@f(m{rp+qgO)%tIE3%01eTY8(P~0h)i`+fWk$4SC(Zm}HfZJx*{}%(UK{^_ zk8UDMQ1*H^?_r9Z&kvE*13)Q^n`0%yRs)@XcDxa(t}`YyIE5}|m*}j2KR<5*X!Pd* zKM|C?OE;ccH-C2L^==J0sj=nlbL_Y<<@vMj{aUN3Qt45B>7)s&Uey z6>*d}7amF+{N1~U;hL-f5;OYE4kxu*KkK3=#)BFkbfMGh9k_32<_~Aa2kvt`foKbV znUd{V1e>9JNpwK_*ExKYsW^p{85bbTB{WvL-fpdndmXBGIpgTS{x|yez zcukC?rWW9ea6f-Wzm3gityqQShqS_xyBMm|!aI`O56EthFhTa37#09cED5Crj5Ok_1KqOrHwZrKHuJ?i5vjHOjjO zbBBOD+SnKttapg-kle5T-U$}&H|nWmE~pXLOqA)lp>-`Y>rRioxCONT&vgE z2mL98GE(^|mQXle%LfN%ha`{|*}FS&4rFK69PHjSFw^i(q#cJ!0FrkmOXmlthen7s z)rbw-n|F;fvq^9fL+LzR_{w|0y<>SgZ8J=LZt_&WHN7mo7`+=XMn5& zAjYt0PVh}}9}N#Gu$?D`gLdJ;Z=!NPe(-lUj}Byx34%aKck}8$s`ulX4}N&}gWcJo z^dBf@1992GyLYoc-2cbj%j>IJ{ovin5>O!d8u~rk9Y4LprNH|qx!%j%1UUN;*I}+UwrO z4QZeuKd>@O)!OV2^}A@hw$wn=wb}diEBs|yz0q01H<;anA5f!5ECbvie+Ap{B|fVy z<*0IXw~kR|2NL6{^ASo*;KQ*~#aFw$a1SH7k5Cwq@+ZEUg(w(*gUFdy2#u3v=HlZ7 zVKo8;6wH`h?6Z>^j>r2QKnofF7}ie)=b(>CP6Obzx3-64fIMKY1vPn({v&w9&qtk) zBE(bm5B`Il%Q55&lS=zsWDKp!aSJR)2dWzI6v9XYb}JC9BY_O5?fCeD`*bpII(T#Z zZatiVLaa252{@R48pN->3%y6F2-XoFcYsD94RAB-Pf$TX+A5$0a&~RpyC-rST;d|* zbA$*@DNq;*trYzTSDxsRyeNQ7tBL_|>Yzg^k$H>kx8XxHgf>WFrW7k=$FG{T4wj6} zyY{fwBzGxYylsLgi)w0{{SI&KAjB;O_D^H*nQA;5P08oWm9hyIJmg7x0)?#{g z2I|s|?_wRse{!F?AI8vS?9ad$H5%AibdL=3eJF{R#s~X{a$=R~0mkb>@CLqzYGHR5 zwo*(BCa4B8f6Rn90o-IPEeNRQPCIN&@}9~aSTOQ$sDj&;O}B+H-X99P8-^R>HefeL zRBkr4UJ2$ap>wh|seT7)TiG?}^&mG)#win-{qZ^m-zd9bz^mBwR*T{X@P6okaqKvohCk6TSZ+Q)$NN=VW+7T zCdc_7f2MP>P%LWax;R0cLHO#V-G+f2WI(Gf?)k$$;R@}*2-qwv}C zmsS@xOcJ$YaKkqzgY=tMtv|XSMGc`J9xvSRf8p^$`k~Wa=x2K;(@TZr#GzKtLg7yl zii+&P$S=08-X6lk#4XD!ZFUQBgGxuU#jJtFZ&ZO8&cQnA6EC`l@qlQJfq3_kFh8q; z3Kd;VU2a;Cs3-teM6Ho=O%@7BgxQs+3LnoX=vHzWxQ9sik_IhCmi2Wx5i$l+pFdzl zf8)n}0<3nalv>P$8kN<$&d(MKqa{y1^1?IE7ogB2Kq~D3ElBAFM0`R06sWv`@4?8# zSkcIJaCjma?D2w$g+txn+M#Z|gkFpF?<`|h?A_}d1*d$z$g6vxh(@1;qo6SwjD}^U zL7OYNCceCEW%a`cdV|(8;XJ+|>pSTke;x_zk8Fhm8HFrgoT1yewL*YEAzg}FCz!E| z_$l&YqlFg7)=_M#v$BUpB1ptQ-YY=D-bo;amsVjr(zu`jNzhBtnkHUiJENTHzXz!x zk&=;25Qrc^?>K_qP8syNLtF%HOenH0>t5%C6$m>Elre}x8hW(!V>l&)ar7&JSY;PQ zYs*K;6PFO}$6{vHYHbh(IKwJu0_W*#XP=?1hZUR)+8?qy+T{gNyu0t}m&m6!pt{JS ztZ`*dbC8zpOolA9GDOT-H#_&DOrAN;kt^xb9Qi|e8k5P@DSzo5s@(p|O*cXyz*WT{ z1bA_;W)(4elKkF1*Vw8CGOK-Q&cb1bjK|P9=zxNbt;s$TMhWN+CQ5)DoNFRI_Z@;$ zHpwEa$b!tGi2uBekL#ldlquW+Dh2MkC2&VWr5MjK44=T8@DtIdcY#PTZok*r0YvvK z!peu3HmP#qxqt8^(R(dWo>NGo#rQPK;T-+@w@x^$(2fXpf*$#nQ;RERYV`(r>%eKy zu|qIr7%V}%;Uz?gGO25bAoE#jSlA z^#2N+!j%U%J~@T{&T-|qp7|sj9qW&UOYc()Wiy}skN+?sLL`v2_Dg0&(L%A<5D+HN zc+Xl7et&q6nvjwS$~)8ZG7&7P$f9|RH3xxMMEeiGZPwt|)$~vR)5F*^Xgg+6sMmS_ zhPSYV_~4RqD(;5I0btR)_qMtI#WM&;u+8!Q>RM&K3ieyq-8bfjq%!g24osDTi2^Ni z#VL!D?;x*~`r}W4n=jaUJueVc!gxppCz166;9~&$p_fefmRBgL3at4lMfCtJ|Bn0M z7m5l1bny`g4r*#W?(g2a!DGIV_nc9RImw$EuWFK?$<4i%!-6=mqj{UJapz9;4s!c< znlPSILb$hL6TWt9C6h)ry=Epb?P{iY2a{3Q7k@2Ceq7x^1Q$wUikX=+z_7*l`-$ZX z6Tjwz(zEhY44;Ykbhz7CiNz>g}$LNvVrd@8cwCr`KJUavfOrV!r}VKwb}AUX#$ zn}1;}z8Eo5lFAP8UA1$1Hl9=gvPdcI-Q<36)-I3&S>$!i{8_4t#nsR>Rp6*G^{Sl_ z;#E_dC}yECG^atwHNc9oU~EtEo8ORv z#RxNy`mga5w2VlDmVp1Ac;^~6nX#zn`h5e2TES3P*yyDmLfMT*0EtF{oPv8XOg+jz zkhK0fe&{8JACD2H9-->o|CPDf$92dqsr+v98fa8e0(+`zM(X|}PEH@ukbA;BgMWPp z)fUdaRvw*wEv=`)ynUdC#J9dGBg2_u;3L84!X;Lert$|uYFWH&EIXVpgh@$v_K(>Y z!3(?z;1M($PkOXI z%ygmL5@4iNARdV9zUz~b+7y3J3vPK{BW47&FjSZ?pD~K6Vpff?Qns+49{M4|Il4dI zmY>xwqBwO=cxvcMF?D*YXYkr|-*vB{|4?X#-LZ%v0^8-jXf`!wZT6v=pTJigTk#dP z!R-n;5`+THHXR#9Stn)~Jcm*d>TA)~ z>1_=ZLxxcwf>^)U%BWK6#4j&k>~87a!7Vm-MD-oh`dC*DFv+eP>%C@K?-CKiWj z1G7iMw~Y`TPx(w&cOBWtoNXJdtG;9DAsdNxl%SlvUAbL`J{y0QiH^*zzZhD~<}#}H zU_5E$bI3vzS-QgfiONQ(7bHRo+)Sn^@aab480c!}4)4w!L{rSXxiN^%u!}_M95ER! zO)N;^9rX+XEL$b9jZ0b?9fY@sOvPaC>0~0?(EDZYSG;iu8x?&!hAL-7C}`@b?OMZ{ zYT5ep5gkh6fM|cCC?FdBOuF8TZ7vg6#8bS4V~m<(wC^)xf|>*~0Xv*VW!)u?mh&!X zKXvsN+YEoI_UB!A60k1ib}})IY}I*T!pW;E_rl`mxEBUE1i?WLfC>wv(kku?R>> zPBm=2Yy&J3%t;PtGI(f{Kiw67F=VXjM4=vWW(d}dim;!9M-0PSN}$6c7vM8jm>%fQ z%?!HW+Tbamp7IAIi-#zwDphAb*dkXY+%@>f_l0eF?>Q+WtssN}x2a5%A!R#A72P-q z?!=kQ*%a#H@NtSUSmEs(t!~p!LI0M{oa&ztR``@)m?6H7Te%Hy*toQRkxv?D_;;=0 zy76=bN{iTNs*aK){#%#nG9FGI`W%%oc`+gzWz^*&&D{#xg$D7)4vOpnMUe`~=XN(qGhFvtrqNTu^k zbe8Es6Pb+>B=^As ziJD+Vrp7}TcePp_S(&U{)h8_g!PNXD) zJ$A~X~YEb?Z@Aid0f9no4sEppc)-S3xa*0z|VHOIpGug$v^ zlZ@N6Qm+q;=-CDwH;kBt^FwmG_76Idu_slC!RLUaeGXuV6^H0{?7EH0I=5=#;8%6C zCayI?&``Q%m^u!B@;6^!baDQPgqq5fVc_RfaG=(`{MniR1KDL-m-^)$bb4oX_n>!(&gC!hwi>EJ6LkHDMCq^n0qYX~ z^&gI6g(?ei8?h2ph?>iP@YEO8j$K%^lMK7?_t@x$>Nl5vNGPgv`igaE`Gw1B*~InF zC^;6`72!W_CkMlj6bCf{7SL-y42MI*9q9|GDUqNiy@_{L`!Z~uDI4zl;u&xafh~`c ztYQVcE?C1B1U5jg^niSe!YIgl#FxHIDMiPVbS1ug zwi4<8b=D$(DHY9%2uJAPi^)03h|_qtz^#^c+&Mz9fKXPiN}mD7N{|bgrw18vwrvcJGJyy-J(q<+x=&riBWggdg|1vvll+*L1%0y zbl_TlZ&pd!LG*nC53bu{lQJQtHb7h(#H{H>f>Y6f&-hPSO+v@;KpUP2F}3Y`B_W2f{jD=!4c zPD2H$;brSgt4Nr$`e-CfLzmp}-+-Ku&V%`wW;-`G6C-~vK~&<=TtR2?csIj;+pm^? zmIoYs@FnEw)d<60)uqQOfXu$q;bBTj4BqKS&m^C)Z}p>>F1iGz(m#6%*(xZWc&{1l zWSh~KI(2!Va<@fdZ-qpq7fXInq4kJeX{~4y6@HA4!jLb0s_a>*AzZlR2Sy}@gvdDL z(GzhxggOtmn@K#AY+S)ZD`S7bGpX2r2DHumRxHlhZmWoX7Q+WWWP2LT_oIuYFJHba zN#M-VYz&92VrwE^Y|nn4>jKQJI?8V{*r^dezbGH0nh{;DsSpo}5v4A+?kNIuSpV_Y z)t4zmYJc~2we`I^VfCX(^@Rm^uyX=%f0Q&$eYqph{6fa+o1e;4o!=2s{GVih=&+um zR=bgd6cwX%eZ-YCBq@W_RGq5jI@PL=a2Xz$?8tnu*Yy#TC4Rr$=5a1UWhuy8lrTjo zz?3~w(Nh@?N@v}Y-&L!NIn~LTr#+R?R~)7fb0CRV)EDJ&vOZGZl>fG;?%#O?qtqP~ zIpssSk^mYPlNP2u*@j|S6hAzFi2yS}UjcPjy9VzD`W0qEB3+a>$2T%{d^?Cv{N_|U zI#)4JF=5Q345JkCz31&W6Z+H#cXylC>FNBuX$n*;W|1Zf=fu5r|@cs|#XS{jJ(q zH#Z8yB?dUS_lZnc=lE?4I@(v=a}2LG;6i2~3nddXnNOUwH~%z2O}Z^P8#UJI!%=M$ zb?HRVoAwcqkR-}V>)-xUpKu)q2J+Ry?B-^e1x;ZtS{(ssXAVH6u@I=q#_k5UiWQ82 zoFd6a=C24@nD7*pjj4ryX2lrKJjJJ+8=emJtJ23ScPFzJCiZ0}mh{JGSdcDxO#VE7nH&XIL z*OS31)%L_Y9(FEqLX2ooPypRKuc1;v5E5rI5E@D#ZNZi)-zsZenc{?so>^rq)6BKj zH*n#!B;eqXP`T(s#|~W{v5WNLCaylX?e`>6d3gwqNQ7rHeFop@R32g3Y3gcDm% zIoec2I*B(&hCP#iZOhymt)-j5;x*?ZBEbHrE!UXXCW3@rx?fgB;D;b{-erxH5Q&O5 zl3Nc5hIHOYO$#;5q>{(WJc}%?Vv#VEORKTqAi=Nw@d@Wpdhn3?jvSWy%lm8$_4?Ze|q z2wwuaI#fHO{FVeZc2Ry4|3w9LloIwgY3f2nOywyBV$$kom3LDm9F1gd6{C&>ejd&~ zY?(YDz(+EF)9@yEMiGt@#gtWw(DOjwFXgP#fqG$(oj8t?u_GMx zf&`F%!bTJ2K*2JAG^ra_Bh0y`3M3o*0Bd6Ok(=qFk?K{i7Eu$r$i&5~8ZpwisoR zrhN%_KE_8hahRh?xO!QC^!d2oNfeCDcp*A}!U_2o2R(@*<2}m3XjsHJGSifh>=290 zM~zH!z;6-XJVvLB2~2#!`Tn4(9MF z8oH|^cW+gVk5N-qrx!R?W|`I$Gow`7NZk;-Gwa&1<%UHB%9HnqpMRWJs+efY?K zh@dme7(m28ch3PRpRf6&P_`B~5YsvqJWGUPqJum4zYNDcQ!t{Hc!k+CZ5q$Q3&Fl> z8b)~JI@uiRc5NQH6`fzq433A7O1c8yA1Gj>})SQJJHoOzYm^RCR!t5 zX+Y4nR7M?%Tn8~EG2neCVO$~2bLb!>l zi?4@ayGcw1dx6=-N)F~r&28ivD7)HzSu2n{9S__iz}E|8i<)YnVIStE3pns;D3 zX(kr7*ie=$!xQhD;1DB!Hcg0)3E8cMmoUUC8?k1H;UP%Dp>jSFK(ZH??Dpq+)akogzAKy&~^Dw-$OqvBHe5_uQ8E3$rn@4~gQy>Q()CRY*2 zP@}Oeu`&}}8DCoX;TbHQcgVjI5Yu9>%_3W7zMuWM8r3COmDD*4Z-@W8FnX71f~EPX z5_?~oeInTs^S7s2Z!6y>TN>%?K&FD?G`|=3lKBl&n^IB6eAJWVtf4xCWM}ANEHVqp zjo9tOn|FPQb2P4hY+}X_9AMBlL4?&6@>iC%)vT$$I3xBdxc6k^u* zrsgp>xVDPwDjl1K?K+Yw3`!PyZ$vydjLepFw-ycr4R|m`JL&KZH`>_S6}X1pUZfzh znLdKMP!{X)m`a9DQEnN0<()V3cA$HQt2@pNPPO8gUW-+^~mt(o^k zF7`7@S}tO=0%KALR5uTJM|iZx($`7;I$Nb}Zq_`18TKE}U`)(wM)EUWd7aWxm=ueP z6_1Qu$+191{d;loXJa4UnzeqOK0LBV=aD)(ai3);=uK$sUttzD6?`sk4a(<`Ty5fG zpv__8_rj%)c){qbY&N^0^0L;kT_=JDICCx8e4I0N>#t6J7`CEPubD{h{T8Wi$jut! zg!m|b?QxCe+Yc?|p8>g9xft_%IW{Pii5#hT5ka&hiXbb5c4L4}%1H>G{NS3*6lV4p z`J_V+#9cH&)GD*~6Im&S7(ZlV>Iue-Zwz=kZ$q-WX6q0!YJ59ouL=sDTD!@#o993x_B~@@&-kVT7+1u^p8gVOu zC2t)8tV-}~a=wvqqa8t-FxQFX$u-FV9DRcqNj&jA0hxv@yh|YqS1sdyL8NT2^d44! zPaNsd8{^%cjLc2Gpm-RJ8zx-lP806FwGVqO?qj^PZlmg6ndnnMGPY9RhVAP>1^89D z4JB^M+H37?k#jtDx1hp^m#vqH6rmodB&2LlD9oPsPBL5AOH5z1UfNtSFB54)UxsNz z?N4>SzHQ0Xxx!PEaz2();U$pVw`oOxU)Wp8erfFmtczrRFg5p*HTP^y+nZ@X?#m@_ z(Rb>Sl;&HU-d{6NiNF1Y-|?(xSGVkl)?0R?@r7+qtt%u{G{RB|887{WhcCWu1MlsY zG8cbl8!8z7vQ-pQsImm97gw@NBOU42A1sgkSSySz4_z=$Sx5Hx5zA88_e45>4iac3 zx9^K9MQvt?Q?U)mP7n848;KQSBYu*y#g5Xq7}2C*lA*Bwj`S~ABW&*WoTO_ZY4|xo z8cNpz1ArH5=%Gc4&=bgi$Q8*V9j_hnXxdW$B47+BxHrADD+qyb83;%T*+#TP zt8P>x**~f8632`6c_eaQzj~?*mh&}0Wh1PU{KDMq zo%ZEMK7hdM;5VzM+>hKin?Gid0Ufl~H-nd$uvOB#XzUM9X;VsKXtxr7Ax00Y@eMaQ zCsam`xiE)k3dSXWLewR;O`PCWIya$z!ZV4bDN5-AE0vmvwT0<>JeCy+ugno!CosBOhC%?&dtP(p1?m6a?nV_!y!3At4Z+0ZeXA3*- zmaZb{;Pp?5cMETF39Z4ApNXuhv2=~S>nX%7m2hFm%}g50w!Qng6zd-Ix1IOHH& zny`z>?cPKw&1)3gy|&^>sPP?D~)P;akrOc)k}T7&{(cl>MOBoa=~Y$?An@? zt*z7xwe?zMqgHpzI_)(z)Pt$6Xqd*~WD2`8sOw6= zX??ZQhz+VcI30$=SFP7rutvSIx>`#XbeDL4Lyw&r%MIqe76a*w2~Q?r>#M5uwY5TR zwNa_Z$8HL{&`}Vrs!HpXjpb+^b9GQqc3sW0w!TqVU#=|IH&V(v?Jp}Nt<~y<<(0}t zHP*iJiw%dbOKvO|Y7JVCp@AytLPui*i&d*vs&?#S+;C?T5KiAnPidQnEc~c$d8;X!;5$oF%-sI3+t$FX^kBZ$0A`hi#17X#)}U3)Sk(+dKwJzV3jIGk}6yhGd-GN z4f}eUv$0%R(O_HKDAcO#x)}1gg>>*7- zHfj*4S|vs(Q^}LN)JdAO%BpFS4Sh)~nWIgI46!1HRzQgwmGu}^%pyc?yGinYQ_%#p zUT6As(B^Ie6m2tw>|_z0bc*xa(3`45Z;mA+FOYZ14ch^`dp5PHgFh>>r|w{KfZpnI z4o0V5<-ifF&cW=k=<7o6=Tnwt7O|?i7I34!QmZVltcW)l%!Fa68NNp?7e7 z4TND!uE$QqITWT|S+8lXL>LW!w`zjKtgcn+2IE(uF)Nj|jo9wbqA?t!D|%85XpB?M zp)qTfWqn*%YYl)PBqtY@;gncjH}k2dRgBS@Rj{L`2@RyLzO06KC#eBuD|NlHaEd9l z9BxQyuGZGmDkkX>4E3^MjUaRIr7N|6T&z(Iux;oO z)*C7H;`9leT-7+R%&D|dSzU8^DVP3Nq4)+#!Rtt^uOL_1JW_%%{f0zKvZ~{t_w^*J z3fG`9leJt!WQZZAL%M3~pqXLkVTsc#L}?h@LfufD>it<4O2_0lq73#=Bssm zj;?c%F2ktD#iT5`VleCsh1>W4LVYyHdKO+INKYmvF(yc%2t7b7P{1OIu-wBnSM)_sg^;5 z>Zt@MDE(VgpEf$U`$%UQJWxy`%TV^j6hg9eIe4TTk{3!7S+K@`3VZ~cWNjsO;>?k~ zj22}L<&Im=B`Rx3UrIW!qjG{?)zhW5w4OMkv|N-@F+oo@L@T9wS>=ca12!-i0a;qPXLSnR41 ziBqb@NskaoHKO_kJR}VCvdcQ9fosDYyDO|?q*i`Plzji2QX*GbG@$5xDA5Y2t2KQb zYjwf3xB|hYOK1=`^g#%1Uxm`g)xWN)Xrr=W&S+6^!sV}j#n&X2WT6LLHY&(Eq65oX zTaRtUBn4a9pn~oOon;+GGpt808it-mNsx?B_KH(6l`~q^>XYgU+%wc@HGXi;=ZrL0 zSOa`+O-HX?Sza~z9l*ebTV73(2-8Ify=T~JDfN<+3?(e`re=&pkp#T+X_D?--Z(Ma zU@vQ6GoOZk(sny+R2tCMtpJ)@%hhdR`XG`75F+co79R910^D^J~FiW zySkB9K8j-%dm7qQVKH9R(8{dE zW%n$SV{}od?=fF;ILx=SSs4()wrr~3|h;k2HSz-6+7rC3UqPxhPH}fL_^b2S&2_2lY2r1Z7>)SD5YYC2&l0Pq(}XX?cghf zKuxZ-;yO_?$vg=*sx8Ufu%#iat>t2#M20YbTBX&rdX5-~7DdZ}qUKfxfP6}&yOt?N zyI7;DmTGIrLG>z27Dt|R-iZY=N1Vv0ZY@U^q=eB4iMX|jnmbOD=17BeV=ECyR#(idwREXXs_XO6yHo4v}+!Jj2xNI7&dDKNb+hU7pG-p9n6#1zZ$EKUOQw_ zjjmd3awr$wk}eZxG;bi#3gXUOPRmH&8)&PEi zN>i9DjT@q#!h#m}2XYxKy^ZIT&JZ>Pv*7?Ys&my+=m!up^zeliq3~JGCE{VouGNj^ zhtqUpt+HCZ%ku!)$Jm<@of=i_cZs7u+t<>tm|{V8PROKkUA*wLbqjV!Jc(9Pbn$6w z+|_l%h@{kVoet)#c_wwzyCl7TQk*=&N@}(U?nv>~aW!T-g<`pluYq_dIF%fW9m=q( z;dG(*%P7C%=E+P}3a196@Pczqspya^m@TdMMno;3h;QU$rL2IzCdb8U9QhL@OH8_& zYGJX!g)RpV1zT)XieeoJ>ilUrC|52du4sDpMN&R}HPJFmH_*a^qn@IFB#+T7O;fT9 z$4J&)EhiVkNDYGM$V3SfxoZm4N(>aO;N4nWN0LRYjPaf^fhN^E)aTYGMoiSf#LNQ69m||cMP-g*_{uei<{WtrLZoMaZ-Kxk4#*4@RimVoXD{%r!easFk>+>%qbD733^W3wB9$NY|uYEIe*CN2`vB)abPu zvZ}%%<RxH+Yhb#Bu4$X?m-m=pqb_@#mv5S~V-0Q}~mFJ}s$9 zGEy(6u$V%B^JtN@=R-{bFwpR<#(B6T;V~}gq7H(pF2~8p9i&G^x^VEvNpZp;r|Bu~ zW>uJxwYwEan!%C4REUWo^10HWdqvV)_trfd~;Nk&Zbn zQ%uV+qNT4zoCZNPwZI?>GBNYJVJt2My`z#ti!3awxJuz*hT<+wy`84=om>E zrv&S!Ma`vo$Y$0_h+@Q9Xo|$iP##Q1we#n!ib*B44SW*6Wfb-a zAGb^;wGDQGxo~Sa)QkKrhFuqh5Ez?C9hIr1#@W*ZDvJc@R&?kWx@PNww^AUUb2*=i zS~LZ!a=6ds1+Z%TFU9y2sr469Q4i8{zvaj>VB`4-Hy59Ol(iMt zF)|j7A{l&4ZVm~^ORo_NOJM~~Rw9mxj0!0cs0b!u+@Dh`#qicJlt!F6TxIJ#!<*r5 z=*X>?BKTpDsp+o7$BJ04+!}7NhL})Maj15yCfx)edq&5LQBX7{%ef41=wr-YgTG6u zmy$tcLo44@>L?tw;tIPt2~<{ptl>?EXU6NrW9!h!82yZJRt>zQT>^NIyaR+MFB`oQ zM}>A8$mMUz(y!{li}lN`m%@V8wH<^wf`T~5=Zg=<463pUDHL<6xv2?^eFl1rt|d=y z0ts_BfgWN2jMVxIkudUw4+q?nb+3E{CQAg)0GN*wdC$_4$(fT2Ep2*#@q{n9!EsrV z^ztc|)iq->BfFwo$>GSXv?NwJthn)n9CJd0*Nh!svV|n8rP$>Vqm71C?7c*f=FR-X zMmLsuI&vx|HCGU06KaNNLqL2yCsh{JQhFlIA*9qwNtI$4kTn<(v}tL|uGBm!)|oV= zS~8%;+TkTpmV{5`3TH8YDJMh==Tu6IW(oShGm1ci+_5Y{H*USOP?oTpDp6YbNLRcY zr(Qy(9)lNBh+Fn9c!ibzLX_)d$UR^8@W3?g)1t>Fr$fT1?z%h~3MXD=>80c8or2h) zjM9!$2wuZvUE3g_19m-ba!E_cqIZ&5?3JjRk7#jNnFI~u739=^bEy_|ZP^695(jdF{#*akOlm!=rt!5GyYzfq}*x=1`PeW76--f$dK0a*ajt^h3$j& z08l`$zl_xS3(>L3Y#_HQd_5gA7HQ}=Onuy@o8?KKT{uR?3>sz@c8Hi*N5TjQJWz0` zy(6WsNxUh-93F@paRtL1DrWR12y$+<6xIt>n28gT{4e>l`m+6ue}F29Pwvd=Ti3(F z#)Tg-8ppU1AzNU?Ol#vgQtCMZV;CgvEKC;Z((XR#b>e)NFq@ieiS7&k5r||S&I`sg z(0#eJQj$uUWLhdWA&8LAkf=H`C=WB`R!qskvSI{HqA|g^<#+<0IdrR5Ga5rOM>zEo z+?S-hHb<9upNLL4e;5A+TNm)dky?Kx(Q$a%{X=~-bLIlR+ii+-WJ7u6rWU)Wrvh2v zjN-*)?IfdHPU4f&e$qN9wgflN->-1T%x?)yYc0wDXqL7HvsAAF+&tXRM%8F*+$u>L zLZpV?q2flNoW%0Ec#BWBQHrKiOJRG=(ZLbGoKl@OQ`sJqf07WrlT$6h_8XL2AvUIRLm}oj-GCm6Qa%ZSJUfU{BO~p2Ou^)C_;j~RqB5>MaG!21O*&7xR8@&jAU|GTvag zS-LfoPTt~oWpb2@juYK=HH8SJo#8eM6J#=_UP>}ve*}g6ZcYL;cYz&~nn^gtT>+9t z6Zfn<=_*$ZfK(`(Q!7bWh(@xqN6b>zuDn+^NN%F)zc>}&qQq#)Uy0BHyFPy(~ z`D2E8H^q3DP(A#8&E?gE{<*z47?b&p8p29BWxw`<*_`9VzVFwhkxJyk0Wy{AY ze@R{k6`pp-rE_v~ht^(7hz9Q5d9R!cP8v3PvRVq^LA_y+pW_+wyS|$DRuysk4if6R zHIw8=5Hk>m)Wsw@^Xb~mZ_rY=niIAQ^;|W=2222iF0LTU&H@hO6gaiI^_-gsj7PzS z4x-B`+S$uS#m?r|a#$x=Eh7ucJ!8VHf8{gXqqMQtY~V`fR&*pg>A{2oC_P-l!Z=5= zqX&y^ZoR~1b9jL3>w9#zkvvHSSe8|DuBeEgpweGS%QPHw!#WqD|0VR;>}snO5HDzq zA$NI4&dJsK>uh6lL-2ochiyc|TC*MiLHf8hU@gpGg73?Vhi{n~Gz+`}f7LsU|{_#L8>imb?E8kgHQ z-1Z!Qz)b7;J;_N*gTG4jNonubqLVWk2M6Q50GZ}u1Q>~2f7C(}K$zeRb=$R5 z(Q&m|(*r}lCRbNu6^s*pm#m;uxVwfEzayR==4yjRL9Q^K8y}jsr82MQ$i=&0Y0?&i zs@(UA)+LcYbdFRcf4UE2E!PU0MAal6lFaqy;&{m>B=-~KVPl}f4U?@VwOWdZWRm=d zH;LqjN-OT}cGgb^t;wa%Vpf_T14;%qdn1K}Ug5o&D+tsCImtC5ZmpCo99$Zw`2z_8 zl~D0~nqSb$IQzhGr&LUfWjCf}l9fnM`g;6+wRzF(#ym(se?&?}SGdwSXoMKU@vOu% z!Oh9V5rpeSD*c75Nng5S|5U`Szd}$|o`m;qcbSyPRZgcQo_5=tb1jhDVlrKZ+uXc6 zfaWtjDUD^3k(AcrJWqB;)_Iap`o(kqO;IQ{A$O8YXm{Wm7J4L7c(+_PB$`W3M?gVf zlP?FNxiFLofYs}9N|}(h^sTUR4H{awTsM#9^wIlMB(--qmD|nF?Q!A7d++UgZ*u0n zt$NSie|y{CZ=UqqlS$!uui#%W+s>r$X51c3PKV?3{pr|mpI-xp$#guEQI-7i^<*~k z$E9m9QDqTE*66)#=lSto|sDHiCOurZ~gM-r=V=fe{Z!0vwnZ;^RU|~RGWT9g>^jHD{pO4 z(=#P$$1TaF+q3cD+4*RC`I6fJCh;nC=2kgxkATniY(UvFTdrKby?yb%HSoU_e)ikF zo%V>4#U3YT@vqg`F&k*@pM@1FRjs&_JeHGX;eT)HWjH|;1UXXTrlc6o7eQ1J)< znfWun)Go7(w%+6+>nnS)JDB;mw~VW+f5uh5?)x(E?xugpKt3=g89BpUT9Wd4M#SKA zkE0tK$1!`OcWW>K1og|erqiol>(%iu?BdENfBJenoDQd#BOkb?za^l0a8j`A`M*o$ z>)Uc=WDAtluH8QIKEL;-9dB^rjgGy~SKg0T-kYmU0l=4DtMulorM7WwuTB}$f3?{c zqvK$UY@Y-_KZje4wjlm*dmZFZ|WUXF!dR} z0X99@?ZMB=^voYH;Ay!@%jHO+TirluYWwpO{rwp2j|OaybNca_MAI*^Cz)MrpM8#R z%4sL|IEWV>9mh81=c`tHDFIQqf7Pa)a#@e;x-;Znk%g*UGBWdJB&2Ysdy`QuPCq9dvTxWNZe;SCs=X7c( zpIOtb!Cq5apV55&S8M1FBll~){~H7I)5x|gC9FLL|^js9>|>btF){m{>9_y?z9T|=7IGq?!o(+PMr^-EVh z?^=3qUi*WY_`Gq0pG=?Pf2Z9~v*7v5xI4AKb=$A6Zav-n*Vp~w>NYytPrXv#yB>}G z&#+ui)G9Zpt%cfc3wjt}LSLxo9=ib+r0fmU2K>@vM?<5!iD_N*0wn1Q=vr_hx4NMh z-?#d$ZxIHfIBUh85L*Qv^}0qe(p}sO6b?8 z?PgKt;&bG6%-h4Kf3J3*eJGa8m%?urUhKcxt&G~^i7&O)Nw~tP>Gzp})1qRWY0|FP zpp{a6mFh{b3@Ycy3++$-%}w#`pf?zP85A_X4w=?%?e%0O1h#|r=kBLAXI$l^-yIzf zajsfi_*_hFNY zvkBtC&CP-|e+JKPDY1NR>Qb^-Mb6>T{IZ;k-#Yvt2xU-dAgE;8+1fh%AP6<62$v$P zm#Pa1D+3UieIx`vG!^6khme;+(0+(MVSOpG-R=8x8u%#Rn}rA0gNl&2+kdDQfBbgb7h2`E*`9T}!_+nhquKOG zeWum$p?R(LoNf3i51t57?P>E7SJOYLO#R7JHbeK^e83{j|%KTQ(MrKQ6FMg{N@oyL$v0Q0SOGpQmDJrHCj9zRO zJKe}E%y~iMgy-u2~I##N4{Z&e}}VaNx0c-sdP&l!jeAKWX@6~S>?BT zFH45J^@lKlOr&y#*`d7IuYf(z+QJo5M@UF}d~)_${J$nF4g-ShB2>%mEm9pW0#bMh z7cs(F!{49EL3w?Pcn$rT4mns*s=(IWdcX8EQ)lNUoT*(d&03xM!i|1>aNWOsguF7E ze|+?=&(zU8LFs9>=8|AB_={8w?N>v8^vh&8D0+Znx^?~CYd*~JO~!2ScwvLf4279z2{}ML=m7`pqC!~`_Y3(qS5ev>9nrf zqwbIXWs?<{Tyo**`HtR8>c!dc%bQ`(A530z=qqhzlaAHvGdcCA&j&DmpT<;?5B|kT zf7XE|P~Tn+_Wb_{zojlxeK{O_k|XbpqE|0*M&|A;zI9H&n>-h?r&?~GkNUEHe?`C3 zyBwWsT5%3%*#?w;v$F1WE(hSu`REA!50$Fn3;zPXMmB2An+``uz2)VZwJ=<+#8&v2k2&j!No%6i>;PkP}pBPv3_{la&zpBH$+ zc~ZC>&I+J?VKxzzTUw&%Qjbr=ktVz#q}0&32&N_QnepGupu$|7R$It*7Y5{qo+1#U4UY4W^#60Pi+b!c~f zVMDN1jlU77&j-quW0p4*3Xh1tbaRjr|z>WP^7K{E%|zL(VT< z7_3yIU=W&G6@T>o5ls&Imw$yG-$vmmH5Dtq?4Ea-n0~E6GF03cI5-_5n97pK#$rQo z7R>O!?(z^F9CN3zC>t0@(GbN%!|@S!2i^18d8`p7;_1>d3cVXAU3PCC-JZ`>EfA7ax%lqQ6AN)>!|)Wa1F&o+cCFp?dIOxCi3BhGQGZnQ`{dS(iYfOfGKlrI$gH# zSWX_+U@D2C*nyugZHE0y3kL7$Abyk;UkVn;5?Xw+%cxdZ9Xs7Cft}QwDiJei!yao1 zx)T%(b{P~`orC}yT7T%0BF=#1@tK8>U(Pg&^A9t_%zf!{=fO5( zU=i+3@lHG|5{v%wn0A7V!?_b8V8GqE0-lez3Z| z?Oy9JaQ{%wtsg}2MIy1bA=ti2=@}-Cu*JRz&$`m$qIys@(V>ZD=>2Z%TFy?$m558; zi(c#fE-D)J#(#T#5Gsq_qT05C@9P63($@#Anir_-Ma;V{#m$O++fYjcr*i2TXsup4&2;|UxuTJ7;CCI3x~p>*@$n~TkZhY!oKaqfiW z4i7%$8}yDI^sWqgM+R*r+g&V$!s%XWOGeN#rpRE~yD~rTARI3sXjQ%K){Y%#@0;z- z9^+iNSbtp9V+1)$7p;q%8?`Et(JB3{9aNQJmEAE}jJ~5fItCfdq$OWOMcwDr?8~11 zrZ_8Zg^x{B0PX0h`XoQ>ORd&Wul3L7=Y6kjmrZt)H*D!)bSLU>2$@b4WtGy526q-( z#i6Q=(zMMm0|iTneC6w1){bc(d_c3Zduyt)Xn*H;TYSr4Zf+(O^9U@1-!1c3Z{1nC znbrGt6qr(3#@Km}URRk|0IPlb;oQ%68 zTJv6_m)DyqgzdiF=Vr_=1JvMUINiM%{(tN+`S9Bd0flJWc3oB5cN5ePs+3l`q5cd{ z7O6Lp6?uMsj`Rg!*reeDpPLbl=dM?cRQ^Q|NL0lk!ixNcBbeZZe6)7yOb5F}Kt6)iP_!wX2*fmW4oTd#w{fm)EqRDTV8 zV=CG;=CN@>k?#*$46HJl9n(8LC6CJ=EHQi#_YV4{^uP-WKE|DdH4gyslU+bs-(6f} zHZ5HZ^IWOeootVXSN;IYf>B#9E*dnkpVX#K1;^rIQBPfJ1MC;J%t1z(17%0l$3;5q z)Mx>kcOa0vRYo)gPVcezAPKJr3V&EzB{_5gFg<_(31rQS2LcXJ?iaTX_@k%3HDpqO z)m2#$(Xg>V<*i+%_(z+%?bXUnt?C9rwm&rGpVmS1r_zJg0{_V)jy(&4O54wwiD}YM>^Y~v&b@Hi(ofc#^9Qh7(njGvASE<*sS;uYJW-9;Mmld z)}G4F)(2>~wU0s)MG14_gVyX_sq`EJHV?!%%Q7|s#5Y#z&XyA2m6 zhr4pv|Evu%jJEWAnlT7d7N;2sv-`t^e4}u~x}WH#tT)kaz<)xOHGdUYfJ={TRKu27 z(s!Vkh>O;lIw+_jWa+|wy^yCNZ_C#gLINoT3091Au(dTGco5|SA3p4rFEkZo6vEf( zy)9zpU$hRi30+Z2_Wn$UB3(RIe0d8RXb-gDtlMG(#t%}cL1c*R zOyLS1%U-!SdQLN^gRDD{-X$N*wDJiSc~HiH!Hwf1Bk^vNuz^5z0E zM$dRjm6apfX4#y;7uv@nLLKE$)Q4%jS>3I`(+s-IPSKKlbO5?j*>7sU1Fg*+yhO_Z zAr5;|^xBc;pnv5VwL^I>+KPa-pN3E=^a51SSY~neP5YDbX8leKu(%Ry9ykR*#JF^U zmxgr!faakO1paMJ0EN8rM|pI&Rn_MM`TH3U6&#V;omXhP`FVidL}?d`yTj@Ba5m`h z^Z9^9=ysHiIDGt0#{hW6?{GbrJ`7vOub*baY5Up5iGS~7IN*8zlIw!RD_w^11nrGq z6$Qx+MxStn_6b{qkTv^>D8T{InP0Aj=&qeC(ymu46}`bu8B#_?WR zBg8GItA7p|j4db!z7s2RsL#1T9@t^a#U_JZ+csFhdL|!~rkpQgAQ79!xF8N9sst?! z#6lz^jE^JI3=|pVGuo;XGeWg2D7M1+725JjzNO$nyri_&?u)nSCEbhmT@-O*5I2hx zLb?f0@QfM6Q)DmBMS~N?G{a#VLwIZhwm5{Lv#!0GD{w0G;zkm-X4~^Q3o- zDlPPNG%_pnM7j2~c0Kjmm@}baLD6&Mi3knk2(M@%WzsAZA4c_P2(GacIuwpXYK>Ut zQKKYJenk|6^1Xn}9te+mK?UUoBL4K@$d1*>w0x^ZFHi$jCaoPk8x2K~s#_QOjfsVwhrQRHWLlo_sz^hD5?FUCXe+Z)?aQJhuf%-4Zyo>?{RDU=0=@rR-+}Y8cq*BA*)$67*D*A!dIqP zto2^G8E<1}3V?2I465lus(;H_y@Q9;Fu$TH1Hzr=VUbkW zic+N}yAeH}nq#o^ui$a6!_7B{o!H^~?ZgB$lX7#zkJezYwG(cF$hIr(3TGaX8qeab zL^jTDx`r1$Lb~QRGGeV5jEt=H%72dz$l`rQ7n=wjfeIpI4zXvn;PAEZp|A*!Lz6KS z1?GkFrozcL`c?Dl(E?gL(ps2|`B;t$-LyvJu(|l-79cc4HF#HUB1-han!3~IgVgH9 z##CRJwnCH%zmjsbQS}SOCFPfH|fPWmn?3@b1Aq3_UEm3T zYQS?5#j#@t`xEd0={2Tgfdv(?$fQ~xO+aTm4xQ*3au-&?uV=w3f)LrT3Xmdzm7v94 zu-Z<*Y8&{5`lX1f$tVO5njPSael~>Y^SdA#Qjzrefw~LOxD0qldU|npPxI*m;um-q zsO%-SDyp-On4A=#pbm~ywSOIvst8`_iBz>MHl>i<^g^jhhi_#=;)1gpP0oDy+}>XF zD_Q_iCqV1i=WwY!^)I^msDf4CIpC~XzOOB<11rs0A6${=78f7=-;!{-H;UCQH~)=y zXGu!*aSoc^kbULfm8$xGt!&)86F$75ZKo|q4E<<*#!p=&cAU&w!wOdOT?wSKmOx~_YoG;G>JwV)qF|2pmafvoI_amYhtR?2}^tWc%X#mO7J-2M;W zEv?k*MNc`vikeR^q1d`D$v)hnDYO#k!U$`p+~iCSLo zmnlrb;v$SfM9<{?jDL&t!gKVJNsIHBfmRtXayiBKM7yGbH+Q;t4RBp;uk;#5X0Ok# zz|8wt`CrQuzOMt(j9sdK-x5nS@U8}}>n`Gzwmud;{Z|Y~tP~!jvjNf?`p(V-^R+h| z1kcS^zBl?bQck#o&sgF;EMVfk!w9e*hpt%P0qq1Z?wHV{GC zh{i9p#soZ82}x9~^90WnTnmg7m;#r0?RDEyUcyy`ARYD5>55~8bgO9;ua3o4T`#kK z^?LtlYvM=n1%*{~KZ_Cu^72zReMIOE#1%9sA0yaDnEJuxa9@K0`hyOq2|s`mLLN1x zHPtjtJDr$V!GEwGTvW7Nco>*w)r*G@ci0Z6f%8J)Ksf>^pY~ozPhj*#g&Ov$7-M<2 zEka-Vq`wnCGg%1ne8u@mR>EvO{7ngp!Xh9RYq5i9V-g(z`^CjK5<J;^Irj zfY-?BBw~{k^Qd-`2Oxl4QPo=wd1G=IwOh&{>kuEJ=upMAL(Ddi);ykS;&E$Xx1u+e zaN^*T7|F%lwM)45gBGJ&IO#$%PPBrYy%BWNnR+9DaEdskNY7=vG_BIZu2`KAe5#z= z=C>-!cz-3MKnxF!!~Yv71N|c-N8gx@5P2ix2+V;IJMd3k??5(o1PE;5?=_f;vJ6O{ zatw!6Wan&++RY^B0--`RH)@L-oMSAa9$}tFv!Kvc^BCK+K3WTik3AVg_ZlM4ZZpam z?fF7V!m=^901o}ItU+F@jToznR$noibXvVgOn=ZMB0qZctne$ z-fPvj9+07oo6!dw_@)^kHcw~)6}O&;4-d*9p_o8%e=y7|^&y~}OG`Z=Ha9mtluG&x zV1Kqy{Z>olsD}?f^*P0&T+GsveC6Y%1f_cf)MN=lrp6Sm{M;_VT|@vN`+v*O z_Q*2GTSKNF`<5oc2?po6+qdnegm&%AflYwc3WR8QzKYtSo)n- zb#v#N13{cX_7l^{1>B$E$n`NJZj!ge4D?CF5jI`kG()O}0}_y!k&gzOnr+*4osv+y zLJQb~V1B@vX>*_M(X1CIoG5y%|9@VqhaOhv17X1;8-269!-^k#0F0rcMsaG^I;W2( zjsgK-q*TXfYV`(%rE>K;8ZwF!_N0Vt4O8m7E;6wsL&%ch0z|^xw-ZGoYW5_Lhe-AM zXulnmhD3k{UP&At#P^Kao?;s!XO|2YTBFlI=%ZBuO&eH21l-mjPO9tJk$;zEIE)^; ziYw7AX=(}S1=LYyFgT>s&Zk5p(G@q;>>|n+?Q9)1&-}9NIrOS`*G1aU+TB(wTGcS| z{ma;Voq45r765X)?{~$xnI*TXKJHx|T!hT3fljp%F0r1W$|B@0wA$4C{|kk`!(+WiUA#2CQQeV(K)rBu}60 zJGkUnwW$39PvKB0Wl(Sz8py?$`LVc};;ZzS!vJ4e<*FyDBDLQ3#D7k+CMP6>-6m|P zDU9s*pK)m(z=V;*E)C{ci&`W~&NzX%tpiC?ew%ctG^C*y@Rr zzvFCr@Cj85n+G*P|JljekO1~9-n>mY#w-22pLhh;$*-T=o@90G%!pFTs`>xOJ0ImX zt|Q&Qipb*C5++1Z_J7vaE<}VSM1iBkWW140C!w`0l7M6eBtemoL`BrI?IYb+xWBLa z{GAz4vNzefdv7Hcfx*m~^S4i*?ytWdcf1}WhTiMl$TjdkKs=X~@cl)*1k4pG;pJRm z7>!lGq<76N8Bs9Tjrr&r58KdaGut?{&5p{wl%wM)=^;bxoo9`a*SXWh&02}3=ZuvL zE!NBq5eb8_j$rv`S&%+r9&s%)Z>S=iTGL+1UhO&-pQ0i+fj$F;tCtkiJC$pUK&cVz zvAXI`Tb;Rx$p*}_{#RgjXJ^2?uzJBQBKgx_%~uF;`g_g!<(Hf<0UUn~^gJU?uTMSY zGguFS86dn~Pc7T7(4-{AtefqB^z`P@1wkJ{I6ZkqAUjkoZdvioAawi%Sdo9A=-#(| zt$x3Tp()PM)bcpswCETIR!G-4jGMi(RyYIKN-cmNW4L3XW7?d${M+hd{{$mHla+FGDiQGXnvZ)&{PU+{bo*?s zw!^=}9sC50^=I4w$Y&0wu~>i@p&?UM=Nf?zgB?ickMZW|WVo^Mr{l15b3yy}4`2nu zraoXQgpb0+N3cIv??n4++ownPn0#m>5#!vScShHVzY-A?V|cLYh7ggdo149>Pu}&axwcAP zq{?&rqtkn3h)HkodO}y4p_M_C(qmr9zhPIwaFEnw(9QaNpC5EB>e4dk+JeNI?8_B! zL--_oZZ{1bHqfYxV|*!=t!yGJHhE{|rM0!l7h96aTA~YKy+vDzUD5~nz>BRJJaYc( zrG_ttk$i*dpuCH*RkNezI#x2ut5WjpRf6Xe;W=g7p&>;4aE_1CXRjrE z?8j2}aG?-AJWxv>U5J7ww*+BPScv0Uu3=SRW;0{JQrlgn)nIIMJ{N~2J<0a^U|zX| zI9xQgWwT{qbhYJ6!Ml28S&d~jjV=>LW8Ivb%AkLd!y;%t>N7%On_)j)P{gOR*^7zrau(()gMu;D+MQ?4_Eyt3;pABM4Pd+bCquNhBhc0Y z{(ej7h`t#iUIBairh&2C+0D4+A}X$PBr~MFImCm#fn(99C>};f_Ep~~OJLD?xaA*( z1eO;SI4;)@4qm+QkKuY5*eVcz$K(u zKrGw4b7}1kiQ&NN!Au>BaySQzaRENmG#tVkSwVkbj%G33a z>&H?<`uxi%dQH7+|IQV)alS;^MFoFWt@>VF4fW-M+HWPNLGmuP>uT^{xAuOBcQH^! z@T8_u@MXm%5Sv~^GUMMX0<;JiRCtzFMH(e+`4%Qa7*d>Ue)DR+r!;U|FLqj-G8%-< zq5G{3(8%8Au?LRv;r)UL=$DG^^)HZ7$tPeYsPYkaL(fl#m>G)z^Fw2$uMmGCI_(u$ z#lr=MD$p@@W5g>On09QArU;aA?~)%vBSoAaY20z#zP9crNMOwol52gLgzb)fgbL4v zZ3W&ogE@_liH(l6~jEP;kgOeoy zBItdESYj{hFeSHc1AS`+4DdATFU&yK?9E=PzG&DmMwTWa>zw}kMSt#HbZO0*;9=HB z_xNq1o?Q^EVX+K0^n3`Ux%i8@jV2J5q_!R}hPn{OG4JWtd^|ycMpXXM0PJ}qb!()~0PxO!Vl9nY&9Vo_OV(m(`r58pb&SV9d z5SkOI9+TwE&-r@XTMSh15a%L1-je3;360TH2wL~7ilUr82@A3g*C`&G9IM+sUc#9z z^KYluqba+pZs71@OFsX26h`b*@9I6yqv_KQ4K?;aSr0{jy^nub!OtCcM*;CPc8P-| zw6GFqD^CZeW~_};CLya&0p@AZ$ufRec4f|`ef&`rEhn9LHdsr5rAq3HE8>%mueO!J zk8$o>gxcy#o?UD!S163T*bPGHe(q?~>XJGi^;)eple!j#+k=~H=wpUcQZ5*gyHsIaVTdAW$prs^JRThT!!(6Ak@X?sc( z@IUBLBDnE)MEsY>73X-+J8xe-$eUpx&fP#Bt%_Yd_<@CaRhiN4-try$(Co@FunDQy z(HT0=fxad)xkpl&SoTxfR5BoMtl=l6oZ{Hkj`hOiN(Fz`BsVU#jp_sg@6^@%&bdlN z?V94MzCBv}RC*wot4UpCzM}>&wiA|MV*^x;wK6`D$~ZVdFSJ8tXm;Wc#(J5;JPB7O zh_9%#p#dY!M5<4)XnEvUaphx=4vT>8xO=ma&>twHyGPMvu%Dib8B$^sY80Ih3Rdkf zBIDX?SJZ!PPwk^`KCX!B1r4j-wM4+h$^7blR-245-X|p(Z7HRzB8uzKmiXaa;4{6z z`~)R2@(c*-YHtJf6(3A=Q#$-!o`}1h6EUcVaTZN(M(_7{L&3FPcR6~!eV2hDk%Tm( zlSEMyjslzyriOp!Ouz@guL!Lh^$o%mfD9iZZhC*RxV_~`{Xys3;Vf=K`2KygHDjU6 zhgs=8(b=$o$YgFW?9cVX{rfQS)$lpC)$Gbgru#OVPr*fT_IoT)PT)&Mv44;tAt1BH z!;u;^;!lQej7xbscAYja+i{#;tmUu@M?|6cGx#B$o3%vZy671%78FM?Zd~P9rce@nhnf%;B?B;eEQ(RG>TZHaym#~=I z0qb)M3AcBZlkaO2t5usuQQ%#BiGh!*ZWsOUsI#iSpm^4d&cn<1D~`X-8You@BrzTB z>*}j;w|qNQDG1K*=G25Rq!w`m7^$dm1p$Ah1yu^AY_|%i(52=#cQpkKF334cRyOgM zqx_^wl?VE3xd{r%j$kS^hzZt=l3+~V9cS7Jm$!GNRC7))yt)wru_>8zE3A$>y27EG z)iq-lrBDv9ndeNH0BcRD*P$)~P_JR4pBldqF z93j1ax4UCj5`S^#>My}^02wdy<*n!_#1Wjg>9r}vuHShOO`XM z^8_+pJt387Wo)!E41*oyE*CPCF^qru(>TFpTUj}Yr3wEQl{jcNm3I7w_`PE}W{A!2 zdL{%*H?HD*Per)~F9lgq1z_~6#p~0cv3hGUkk@y`73A?Pf>SjG0{y-8I1|M{tp2tTOMMV4Jqgxap^ z%yKzfXvmRkK)U~6ZBs<9U>Hz= zx=K@+j?ExZlZ_dy#^hORb@ZD{xHh^OOiPDCqJy+8qR>rNmOKF=4C||3<9b57vpU?H z;Fm2t0ZM;qe@U0@*Ig3w6}A*)iZGXc#DC;{!&(O)BJ${23}F{NqCuDTJOL36lNx67g^NlT4NY^UN=>!}RDf;0pJd?jNb^re(YtPO;<{^Y8!KA&XDouGaHK6T4yldf4MAqCj=?HEODF@o z^sX?2fHyIBczFj9+q_nOC&P&8l(IE`d54aj`hC(O*((X z8iyJ^{`h>c{SDK>E&AsRDDz#AEQa4K4$iUUzS8tKxbYIXjAeb9_Ak{D8}ci2tQj7p zT56fa5tE7Y3ixTI)b@3T&SNg$lSkvCj4sHhLv?x|L0t`XQM4x#f-R7U=!{uNf zz$)AkT9=0CQ;Uu%npd4yksz8lj@EzC&q1WII@^%}0yY?Lyp2k^41L7Pb;dmvXeOCH z7*f#b^>0*s{hI}}-8UGoLbN)QV7@r` zhPwjYbNI#|26%{D8{&!1RgSiqS9u(pa-m~cZ!B~S{M`%Py{_F${pnpti6Va@_p_H~ z)-*d$6#z5ZrwTlkt#J+e+-x|i1{HrnDNFGiR3i-WT_H%9iO{NZy$9;foi+QGt zI|{v8n6*w6_?$sbe=u}aLCY*+33C-zp1u~T5i%)_G~Ed8{{C;O7BuUIe~o zzt24}92*Rtb<|O|PvUHb0bcj$;CzOn#$G+Q!T`F4){3bGg@k18OnqaS>-7wk`3QAUUbygy zka}n1Hj(LRcaJVh2B9uJE@B!i_quFLn52WAh9tH(L5@@$?hE1Dn*GS)Jo~k69xue| z6aZr0ZD%;0)@UgDHuggufGkjh$Q-hhQYOfuh^BM zW^BJBU6uZ#Cw0LwO#Aixa)jJE2^H;L{5#=poI4`Ba$BYn5zF`E5lz9AF_AFOKZgKl(EC#l+P^CvSe50QFA{97Xz1rjcr{1y}|lW~02( zOO%)w&V?(Y?J>u<6#^u5Ij_?~N+}f=*%NiCh?%Ny(9UQ#;3{0#!G=Hx#HX~vJSCK) zWAz{mVFB-bA+}n7rh(PPdDiRyg$REWgc${oC8xwkMciX(2QxMfT?C|wv*SQLuzBco z`{GoAt#Sk_h30@r6Ge{^mnIO>Vqk^!vf=i?>K-w_@z_#6Z)1^*5KYWorQ}hjl*TAS z_)#oMOM;TmIV?XKnxh*-DZe&F%1eAo!kMZ7jJ*$Tz*Wj z!V07yT}JiMaIKCs)k~NaIJQPavNV6Q2@!u|>}CKuoIqu1>D+9jGY%!b0-yctsst$9 zOv$>rOlLhHxq>on87SZiC_Niqzt+#q)?CHS@3gF|o7Jw+QqZ#O#R zUh0qsmPVww@vhEzaI>T{_~FjZ5V_>l5sP7xyF?^(DH;YVoVviWr$c|h|MK)k3ZU~W zcaW+|AIij}1;o*kV`x=f|GH&Ry~;BZ36KzTqbQ8D|Lm$bDm+v782X@^ zwSl_x{n>Dx^HUL+p!3#J4;ygV#Z5kQJDn_?Dh4YJCpJ@fetT8~c7_|3!>GQsa6jPl zOQ6uYLU#CDvJk8KfQ5gw`s{wHKH)~{)3~)fZ0_|}p+B8j053i6Ei zA;XKWft{o*HEbW79QF?kf)QL4iy-{~cXA*cawTXGu&JoX#-;1ZZoXRY6f!)*eL=mZb_5 zRF;Z)(_SRvY=ttxTJgoG0`NrmU>EL48mo3Il%{1etP8C8i>8#BYpbR~7Zc``f^gz+ z2W78XTbQ+MLX~r}c_68Nv$>e3rj^X}v%l$(vQbAVRSP}N%_w3eLBlPV^s=ct(pqm#+74Xo67jOPZ9E5@+w74I2nsB1$qvWj z-6ru1Q@%x~SLSMwLZH(0_t6flGlPQSR}6tiledC4G6@jGLfl#CdvEZ$FDnRbwzqiD zaV?F;-wl7~wWZ{@B&pK)L9(A3U0DpW68A(=(U*G0G6>qNcL^&*R|S=uX(YJQYq#hu~VTfkVBh)G$OmzJJn zV~Fu-J>3B(ud=r->577HGR4GAX10G?(^kS44RA*n;Xz&6grMlRS6U|s z{w}z4q2sV~8@{@!Ufd0CPMbk%YcLzij*C$|MP^a)o8}kX;s8rPw7+<0_Y4KZX8VVt zj{MTuPn>B^mQ}8RTDR04Y#5)X^+q$m5PsS?WOkb&=WANEJ+=?|7o9b-_0I3jiqw2_ zt2^D;G+gz6zoFMco!f)1A7s08yUahPP1)|#)ijm%2}Ql*g~6!Ua2eMXFzFI<0nSuN z+sRZws+Wm_T>HDLX-DtY?r+Q`+Wm=uvfcjztJ?D=1^ zx7<~FV|(dbvP55Fro-*kiIWVc(3sOx#tNS+&7d?4qjrbq!rmiH448%j!^$Zd!YgqG z-no4RvLI#R%tKnF#^VI>7p8PRnJVeC%(pAE?k(OS#-9M7w9l4i9%wHpERBj`SVC}* z&sgDqqp0ACouhIcMK={5e-;(q{w+NGmgV*)DDxmTX7cCvX9~i5#fP_wqXQ)Xc;fL) z-iQ>rd`W(P7@kIk5!5-qG(UG3hhP8n=3@37uDHhv zAe1#fbfu-&kMtk}Bm#(5B)1|D4_3cevxFU$of zi3hJTRD(X=QvV)-jZx=rzfAy*SpsORErxFw2QzmLI+s7SBShAd* z1AgiBTmTBCC~b*ICQX{1w3sIS-u@lQ-J-NUPHIVN*BAXKnzv6D+cQziJc(|fsk-S2 z6ZZ9V7?=>DCX#h2K#iyv6PgEJe1z41)mYG9f8rySvVCi3{r6$4(skzT{rjVEHJ3zWM7#L@TJz~_{B344+S=ykm?MDW zZ6`v-5U^o4U26mPl{z7I{`^cRsj1T6)_u|M;}D%WOAynM`tDn z23y;&x_cvG88nb(1DEdYw2+P}Tc~iBzs&DwRfQWmg0-_~&M&HKs=z1e3g|1`_$ynW zut;d>Zz!xUx~dRo$cufdkHO5B)k*;o7W=*>2jxt(hEmR=?BIP{?b@+>Z*3!&{7L~C z0R@*9O93PSW|uol0X~0?8e>YDU&smsatN40h39(^EQ47h7}pvpdrPthCsgQ<9~7)B z4`hN%*$zUO7xPmSpxDBR3jyF}+3e=s_MY9a6*Lmh?=^A-I@OyN!7hwtkBan#b%IPW z!*$>I#{|Yt`3EZ=vE8Zhgzc39+^{w7DMye_1|iiWjA8)vlT&}OXBma^TfR1q$ig5} zm)Ew`gHku9ff!?7GT8pP>Gqd)YG}BSZ3?9-n%f;0)1(n82pED`L6b@DN%oVNl|^+s zIj@y3Jv;+oobB(GUXvxjV*b4>)4zrk2op%gxi#e~ADkC*tV@9la;DE(^EDBQ0eZ6~n(v$TELZ)5oHT17ewV#U zHMTdfrWBQM=Z#jPVf}`}>@g&{Wvi=$n~#i>e^q?vXHB?2ovyFRRfE4}DsU(;OkTh& zZ&}6iiq%x`8Sycq^pXdPCreLiIr-QrjE^gvi3nvt*c5*r{%;h^Ujs`+hCm^u1(7ye z2^zWPJlN!T6RhAtpW+-~sw)~baS-VEfRo^#4lhOd&klzLIxh+@S}rPXAH^~$WvH}C z9nTt9+U_xop8@~u&*3P4OxlpwQ(l3N=8N)l`1{4d{LBu=vr}~3qp7~erS(KgoG$Qc zyS}}(!#jW6=MUcvBF&1ZJA zWkt>}o1O9^wqP2~8=_+TdYTn5SmU%Chk3ZRC`wG-2MhGH)SdkaH`bQ*;?elP*%=K~ zWl*B)iqp!DihpE=DDGfQ$2ZMq{Taz6_?Ur@^b~*0kZ{mo)^hH9G(ZOLKd+jYr6pZY;A{1oL|~LANcFj_mJd{E%`>{x59^&o8AuF zu=yB_$J3rDgrXUSI_0A3v_dK@vprYXA~r~S><1Ra$GT-6?cQali>);t-9}z3aVyxcZG+`;UKqy>hEGUVl7gw*O<^8{R4!{?3-$tN)=b zk2Pq&JEO-s4Z$rI>Qo7oIoHj@!lQThHg=DcQAurF_LgU_E;zwRlUmYJ0JnYwD{yV7 z$*8Jz^GZ!Slh6qx;uL0mW3)bM*2EXn-L<&;U6ii3_zR4~tDeRe@Bi?!tNdn`m#2Ry z3OV(7(shb#LP^NnS)p)Hr}4X<{t@ItN4;`)KKbvjVa?iBhGoUN8vxR%3XqYlQL|3% zKIU`6@2qdO%%5MHzz0W@8>N&`C!PZ8p}l=mi`V~@EzK) zGHMQ$qB$Nh(15Q`fRnNUfz%($RqR*a6e|!~6_U0lwV79RtIYw-T?Bj?iyi4O_l0iS z6&thV2Sv@bh|i!tr4tDV>O|=X7(6}`U@D{1B2*x`?VbQmQJ$B2gs~wkm4DXRrx(my zGj6OO92l2JPys3+vU%am%D~z*P(CNqXx=dyV?y612Vof>fWNqBBuKDlcj<{m}a z$JKs2C@!%StnA9(Sq-79#~lBael`B&gJ}wLe=r5jD(j8MV<%XZE~rOd>0d&Lney_^ z(aX&V93E^s(QXRg8IH8#kc~fyvgJV&tdSFu-osf^J_DN{Uon>uQUM_WC6_W%0VV=o;Fnrb0U||aJ5(%flKBCgNUh7JJA@4sult<}-p^L+ z8p5!}9H#`v$*zk^(xnDA_lgGFMk@0FOc93#(I^j+ylgZ85vh<52$8R5m%&m2GFM;9 z%5g--Lauw%O?AmqyUF%Mr#_v&Ji>dTyXq_0jx`cT7wX9Q)zPb|J96;to^B0SZywZF zA3R#^kFSRW?Yr;%qSwFP8m@mQhf|6MQS3T`zP^B^qarJ;G+pOJY*FT+-3EcHC zvn+7tFi~RP3_+d6ToC4DMU3M+EmEcgqXd6H8O^M(A&pc2!$eleQ-W6B zy97L;n&)M{m8avSP&D;?OG3(5Bdg-(;|_3-TU zSjPw=!h)5evnL#wpiplD((rK#dE-^^zux3jgIOwf)|@<7b2Pgp65CVLx{WcUskQqF zBkq`oN=~W`X(^L=cotz?WJd;;j1s745qvz(F}?VPm$>-04C8YH_(4i$@f<<^>HEJc z`=giSRRI_RjSZLnRRJk~j3X^%rBL`@@yN22)?r~R3khph$d(L(YFq^Gt_gG3O~l*% z@TmE)L}F`(*8_t3ZrNDNYqq~QR;ijvF29SS3c(^&R{kd8T5V22tff)5qL_1018E6- zHNARygLl0VGjL8YK9JgprTrl4*>aR!vYoYmMi)DHRN86X_C6=A z+kQTrvN_wMNJ3ywrjOrD2VG7}Uf5Z$Y3%rsXS#}j* z_~ge^79BUL+rj8$tD2!zj$Q4@*f_Ch_RHH+rT7IijsC4RtTSEr68B7k^CPIMGQm=n z{ju$k|ClhT#efhI2OB{Vteo>bvth`HC~7 z&{3G&BJN3+vUpwR2^qQKZ~7kPidlaG)rKLu!e>K>?E3v9lUJCcR#s>m`StQ`I7aja zzXRYZ^h(^ZyJ>L^x?oRXyRt`%pz-+S)FP%B@mJnE8k0Joy6%Xxl?+B494 z0`Br;m&O5UJ*%(~J_>bzsUQYEIv&#^La@e`U|4m10Hl{te#~XO!44bPx~!`~^V5Z; zdI45T=zj3kK|uP%62_m(2#N#f`}Wp93&3tW!V!C&P+7x>p02-!(QQqP$gGlh4{cUJ zlei%amnvw8t0C4uS=nxHKlow zAOOC1bbarY-RT|e_aYE1H?C%SazMNV16<%~2V4CJ!X@{)GNc>7FG^iT<0caKyq;f^ z59UH?_GhPk4uE{NMGu@xghBQ%ps_7?gQ)kbzBQuOVi7K>n#zu!=j3|7yKcF_uXcz% zFrA7p4K{&r zAlk4#A71DK$+~FM(bTL;2DiJQ^{+3sNf@)S@%o}yy!w#S#Noxk>x=Bo*#Wf%5$gKk zRF^4Je|p3x6jwPpKVkZZgFE;<48$zw!^s6| zZ_&&Q_ojh9ZTsHbkKP;ci16NA{~;dfb0nP><(*P2c$pA}qB2w1SMoQ>+teY<@DU`h zp`w>E=_BHQP@-;2vTaM@OI7>^>yDoCf#W%VgdEuC*DrK6jN=9XLppb4qKA+a+R9?V zPAvx$;813eu#B2P(;nQ*ucu7UFrcgud{TC>@?WqZseI;;qV{qhA_48YcRd@y26)Ea zV=8VKw(w%_=FjZnpVz~|o7e8zPZ8?B}-DRXfPMyFc$$KYrL*&aAz0COY*981AO&p6b~ao{t+nU1t=)UY_uxr2C-t>ioG;#EBLf%w5`Ac zd@2Ng8t$w!*i0M6zR{IWPz{+Lj6ZQo;ey2z`o;3Fo_b37<#zdYmMlg`BY`+ChKKIO zaG}^#sUItHr>=^=lJ_}-rL2R;b~9?qMmlny!<7Keyp?7Fw8N zuDAKTa>Xr#U^@AzzFQt&y=#%`7Fvt}cuzFO?e7CQ#H4&m&99)r$t zzKnF)yt1tCcP1kv-VYImC2$cz8M)Zfv}};^$2a!DfwNg7GcR1UD2N(g}!uq1cPxa<}0uW&=pK zqL*=7pz6t&QPe7vQ1d`!O*RvWJdPaH<@}@|cUmCL_^e;bI&{~kc>U+U60=NtrE~`M zsrs3(8q%hd8GX!rxhO>mAeOEEErJS-3#57>0SGtY)WkmL}NiP$hE+xaE*F-6k z5ozX94(Z9~PoH#66-*c-l)t7hba7b;!?lHiM_d^4n+rq1OH7wDeSiZ+2>7HaoFl@Q z-ecP+ySf)WEs@ME_}0{bRB$k$m5uF!r)3s)&MD!XH6FtOQCvuLsk4wMgi&>I?BZ;A1o(r+} z_}P0vv1ze&a|0&D1~Pp^d(d8UK`f<4>v$+dZbMs-J&-FeP!E|{EhhB5IfKSt*^?&&e|TI1wNB@rFUDDh;ZCJe}qRaa0=FQ}%T!U~1K zis5}1M{iHT-^{PJSKnYrdieb4<_0L*=w|G^BTeD>+ge6~6 zqqS(|T($KVhz*6a%oI1uz|cJZ7Yh?=ldy1Ju+(_l2R5ve8KL0Ea)ZDwl-()d#*1&R zfQYco!l|mlWu~)|U$iY^?zj1;WFJ=Mmwz%{;iV?1eCB1{u*vT}+dKUIZ~hFiCMe|H zCx5apC-Qwn3nvMGjOyv8Uh2b}I3I|sGrz7AO)>?ThFiP*@#JLfM!LPO) z6t#N-9uWiN^hu_@jzAKvIq-X?rudq3wQjJu$13f^mucu5)m7l*$>eNG@_$r#tn~sY zU$Pzb$Z=qfDcx**I3a|;BP&GUEE4OFS%O2h$UrX;o~mPiD9XfDdWJI$-gS9d{H>t~ zcZAU@Qq{jGg3NwW}jDj|)r z{(lSKaXYd;-dL(MfeymukKhhS486WW`ju5XDM>CEHXv}kL~e1*&8k#y1t=rCKyPnH zWi)EcL)F)Oo8`)m`}J`M3*hTr=? z%tc)wLoWbqEv*b_@PmCUD6$r-=C+=T!L8Z4%Q7^t2vBj#YRFRosuX}RKP0e@oo1FF z-O=u%lO?q_1o3AwmF0=o{CfJhhTeqkjCT$34i^uQlUph7;TkgG!util@2@kbKui?a zjZAreADg=qca3z#ENrV`i1=C`oQla5 zV3_zYIhV_jpmL@z|2}$=@?!e8plM1$pcu!)cb8<24MxgmX$`0N{_@q;5yyyCa25C7 zPdTsSvIPAhzr;N&R6ILXHtpal6H`K|SVgPOV?J~?sxSub&1E&@0+r|XWtG%Eh_t z7DL?nVVpZFsL>&oE;rDIGR3obFfr#q^=&K{=<{g0`ug!Sk9Ry3E;4x zfqwE#WMAROinOqhBQh_`5!h|C`MorLp-Y>~G*cJK1YeA3TBydFpcb<9YP^F6=eT{) zZI71BqA9#X^m~!L!AtP@<+KLjtYOFQzr%n^kQ94PDObudF0U`^r6@~3YinJ9H^z~Z zDb}s@Tv!DUA8jchrLi`4@_p^@h~>uQk!5v#<8Cz68dPjzO_^WBju{6=c!459Fsqcp zDeZ9p3KZ8@*14beJh!};WQfJ-HEbZ|Y~^AEGBOGYBOi7`Hk5LU6oRomvA5(-vedQp z&9+)CUuz;XvjcC?DMrQ`h%(uKA@%4LHjjNp+|7ur${UA&D>ja(HJJ9>x%3P0)aK>< z^39oI1Pp==BD1JWfd8U@luF^BkAqT(;+e;qD*(UqRQg|!wpJ9`1eW}hb5eH+p=VoJ z*W}XPQ%u|PJxp10I26MjK!>Jdz~yEt#x6kxqIsz6TjYuaDy$vck7;p#5r!>HIU`g0 z$VlEf&W2WwGDegZHoV9bD6+J$IY-PHy3iap6OM!^pWg%A=g16x=~De2vcZvH8nB~- zAmdru4{{{;Jf5D2*Zkh8uqM~Olj{i`MJP#dD4w>0#GqGf@PJM*0{Af`U^4`{vzaeXvt(Jdi>_q`s&l^&8fmqZG-jZ4DS6}ZI_;bX;on!pSI!+F@w>WVB97pDYdz?WNS>kzo;pgzNBI`bl8_B`O}EN)?jkoSxM8ShLM-tW&tG@aw)to3(K-q-La0H=-1Ar=jsAX zNc)!;X8}Hc7-Ll||K{aP- zN!D~sW~FTrO|#8%OYVfY$!u&CD=6H6Ajmh07t^c)tfkm(+)6#UVBLv{Y-NQnp$qME z;Zd-l{v|bp{&&q6h>UEq-^uba^Q?~I=g3_jSjGx}D-+$Jued*qWVaYz#jU4Fg=w$Aq(>BeA0?rV7|$ynxINL@h#!DB zG0EZj!}WvvU%a^eapT90-osa-Jz^3*{Er_GLT5nLM$D;KldJ2SU-W)_vG!0^jPGQm z2Z_6%wM7)j?X8`NAO3hh6obWXnh)CQ8k*ca+OuBx#&DY{u&O3W{zptz7ip)-?l@TW>=ym#WDdw4|b z0Vg0)y5jCVN;zF!`RFWJF_ooCs^YEeBPQ2GSm{cH-XjRD=TK>+Ym~d4CEG?)K(LQW zST}&M$uCqiftO9sFBk6vSAd9bS$+E^+(=fZtS@prR%2tQ)B;u(rd)`QnjDk5--3xb zcKWT)=WninF?3(vnZ)4Z#t%&8!G4#UX#pw-lYwKm4?EQ%m(6JbEq~voyko83EHQt| zQT6VmK-9m(f>uO??T4dpOh`zFSxujg(hylbw(=MA-|Qc)|LLgz0o{{<)hQr(DG9zR z+?a!18MVUeh>Li4Wha92%AAJ#JqLOI9`7nW(RPUohiM@NY-MV8JqS67k$+wnA__>`F^KL@& z2YoZSb9%jZL~pZAXlMv$yISQ*9 z>MoPX_?ECY=w9fGQbx}mYBaMN;h8@hHp}XtIrQbq{(zL>uwu1tOeJ#jb5w@Z7VC?>TaDq}cK>27hY)W}ck`&YVd4|} zLsI!%^_9(?tAF?J|0Fe@)eiLpL6Y`O5;?p7qn8so!+9mINSYV5<*`5$swoPk9AR@* zZT{zx@133D~(*c05GJ$jo zC5V|bF%<9|6IXshdv50aO4UYw%VTm^s}zNX+6M?re1CSVd1GekRZDOv@+V!UWucf% zOU(~{t?!SCvUx_>Q><^eif}O_(3((Tb(O+T;Xn-GO_nEWLfHCjvU?=l2gNCYABp?Z z2bESuD;5T})_Q!r`#AEAz*Xo>BcSAsYVmpqDX&HCfE~Ed{IL0@&!KIPdt`iibIDx3 z;8e&h{eNrLS&qK(=a$@MuX+?;^(C~smh{D6;GG>hHkiz~-q+BG!Ooxl(x1NAywdsl zdiWLL_T`(dcoR0ZhCRw6+}i#AuOU+<1tl-U+H0*S!0>FX1%|dCB~p7GY)Z3fse@+Hi9PFH`@_s z>R_h4z5T(!U9u79G}*nK(cs3c>@nTNN2oBVMNQ@XO|-Vh6A=oQ?B({SOr)WZ;|d8> zP}5TE{riYBeJ~4+Hf>O4rBb%OzK4@jMt{lySvo^uXw zD?hPd76PU%+tRhUp%g4{p&eL zx!Sk!@=Ke~H_Q@cId?;`2~=ALZYOtxH!I@df8bvEaq#0qj`%u2hkqYh#yDAV*k(Z- zuNeg+f4)Q*jD}y&4_0|@@bF>s1qh7$s}HjqV6B(YxUm;v3FD9v`DU8*i1$Wgf)@6yVv?sDA}8?hpYBCA!*0wTYduFD1n?IoJ3C+gtf z11{px))#v^rCrRGlCfO%BabaTR{*%NRZzLRG!Jg5kpBI|q=!C2Db zm_OOwkRU#q>?)aO&DzF9*mEl}!_G#6)x}T!WH6YqpISX|UZW|5kHW)Q0!~6@mK2QB zya+>ZAU{_Eft6w!m=AI>|KVcf*TNm)EPpYbPW--V?tA_gmQsr6aASh#%2K`U43W}7 zBK777?|vgw&(qP4m#}aFG7gjqNaT6h^GS!U-kZ#)m+)`_6o1bq`vIq9v+xps{+IoK z`Lai*sp@A*qVvV}qv-keU_lEt9^b!jo_nnNeM4xTFYuiUPay2iNB!#~(iMl&`@j$w zQ-_Dz5Md*HTteowUk6U=xk7eZ5F9_N=4>qrz6wMVitsJ)nM#TR+NPvWG0I*=H5hi& z+1OmJmda4%vu&T$uZ2EPq@qP|oXN~yn=oOf0UsJhJZ-^&I}D~V84sd90wsL zFhY7FCe4$pVBC#NaCg4H`RVD)mxJ)xL=!p{B-hex|7^av41qc!-;USY(Vl zfxFwc5=wz*60p`Eh+K)>Yvc-IOH`#=1^Kh~Tm6isuGK^c!2+xagoOtL<+uiq2P&+F zeGGoaJX;hzxX7%B}I=h!HRCJ1L2usweOm&kl3X0pFZ<0~|nUbOl#+XV$&)MFPC|X35Aiu1?nNjH5vgmKB;M z(;8Y3w?~h^0ke!D%_7&FX-evoDRNKSfAdWzBxA~`;ME_T*($+%Q4srbksoSNP+?x*HMBc z{C3_uBRgLJb0(-Bdr z4V3A5zBWa5lS{&+y#)BC4di_!9({Xy*-mmRGJpGE`t5j8+`nRgW7jPq#^`q!eO6q~ zuked1O~*FssZp?GupOPT=>yU~2nqW+1jNoJeW*hT0039$9N;9UyL&(srWw5pZ0nko>!n z*s#dr20~+)ewiIGu_OC%@Bi;_j5+6;YbB^Xd!K&(5B9#`%3AY& z8FS2W`Hf70={m%q*9gw2(m2C55ph1d)kdRb&&m}N_gw@SxDE+#=fg2;daMa69F73@ zZvVkG@To@0#!gP({ZSZA3YM?*3!oDOqsQY@2Ze)|FFQ!9i_tY)040>|KMRAsXpoO# zxPnjQF6kdXVwD-cE!^E#pm<$KTCK%40wHcPvVpXfGS9Hdj`@r*k?|^44uAhz4y)op zE7Sub_s2(%{;*1b6P8(OMKW@d9cb=qy%*iIkEu7TSyPR|sRtF6M=UMaBmmaqQygmdulTE8El*F*7-k zJOrkf;UJUoA(j#RoKtC5MiFZ>`g-<`BbfrDkxqsW2O(J?A~E)%-eq2zKzxqy%YiIK~2&@7GP^i1YAC%k(uU!MI$zU0RfGcDrUqSFZNz4=k#=#*J;&C4J zdd;99EP3Oc2AqR7kKXe29IKVb7lnc-t;PYyj)I4OnJ2DS}2FH^qp*omn#TY1c1Fa-4@1* zTeT{(oyFiUyDcR41h4es9r8Kkl~-H8hY{K_>wy(t+zdY?TyMtf<41Pn#uHyDFnBx}KC!XU z!hZF&bM0F3jGjcv92z#RrjQ`~(mdrGRj3cj!{s}UFu#955sg%)pn0e@Bm6Zpl#@S} zc1Hhpu!I;Bl$P)5<7`z9>Q{8Fcy=V?Mul2CyzwOV^_yVt;-N7_-z=1?mP{n*F)U*# z>Ovv45;8m&f9zwBRF!hVn5N7o!7@uJ-yO0g!-djeq$P7Or`h%kd|%QEW`gn`;Ob%* zlzbhNYBzsY(LQy8Pzu&zZyYOgoH=wZaP||TurJ{KCUALUnB&|HG_*LDicrRZe3|HK zKm^)rF&#z{@ZfL~i?CZ+N1W9&#%{!Y6l^Dl1#ue<(bhS|YACy`|b56(oNV5O<&9KgFv2y$T-X`4xjL24^z` zKDsUJH{1-$OgTJV?-Vzzt-giJ^f!uU7_B_45q75bN18)5@d}2xRrWoR?c%=jLugmv zv{@#`LmJ~&Yo=R_kD!$r0G2Ho^HOWZC(Tg!Wnz->Tu2pSdDsox`dzzh{bERMmz*Cq zQR9ET3o!v}lh$-JvE z%zuhVd3rKdI*-#NW5EF$e4=UL@ntSIP{S$x?4!sZnU@lgI-(qdTHVr&aD;_TXl@YV zExf2=6J~DOzMqkk2{JFpvvnEEP$*&Of-irq;M=)+6&Fyyn8g+27qgO6nnY$}fF%-& z7oyAv$!W6Uz!wxiUH6kG8}waTWuFrqAI5H#Dz?zL9NRIUaF1G5wa;ov<8xa2CA4%5 zXW#(1$NNKAFMi`T5E8e1k>u35LJo1B^MH(GuDp?ns;m)cog6IT3-lC}OkxaFngoBX z9O~h*8g-4RgZH&!HX|M#>6LS+SirGNM1(IY?`?006y(msI%x%JP##sOhCaiKJm>)l4 z7E&oljH`Lgn6U>}7PvyRA+UsLolbvd`b=5^qN8Tm=zw8El)}Lb@eGX}83d^$iHjw# z6n^5SZ1AO7Hc}Uk<1A`@YY!*DUhVaZ>$!o2sdQd)6Dod_`2r1yqW?_bWPyJcQnvwy z_qbtPyG9qdLB1hMibA?bc*`4@IK7d}%NuZ|4WtL^s6&|@J zgdc+HNl%}d@+9_-Q|{0>GK;71co=I(l$nMi@0BNve%NWn>7Kpt=uG*7PeADaMGH1S zSC~ntY$?i)ZKh1fSKzQ0*lj=e1L?=l^6MKNJV?<2K&jMke#l+g;1DUw@ z3*`RfXfzz$-Rr}8vY^X)a$FqM(NotmN0p z2T91GnAW+#DUW!x>ek?sSk02?BRYAAIt2w)I4+tFCT+3GaTbdgK@yet&t|d%t+wUV zy<_pqvYlZtAYOxkFS<-OR9WR)?FJUz=gr*;&!efk{N-F%yf7)}nhL`icG{1sysQvk z)5;bTABioM1pr`e+7Eqj5OSTBQ7G`is zihy1+G2vziyvmq=tRcHeaTGrdf0f zno^d3XD`IWCHF6xR@nih3tpl`Nh!0!44odY%+8kZR*Qs$SA4Cz9j2F%zZH~5?t1Aa z=W^1JI!<>P-2H|UQ$i^#o(UQ6%Cdsgx!o_%RK~N`1O*3wqC&y)z%X&5hk*>Tn$W{s zEgCR+$2gC)Z*^zQdC&|$m>wBsFqca^f$jS42Yk#;Gpd^?D}cfFG8$KKXbHo@PkO`e z&>QS^u2cK&aU|cpdpJ*Akq0q84aGsm1pBWO5 zjp~<-MX57?QGXnC29x?@B=+--JY1t&cij7!Jupu zDC$VR39c*yva-crS?LVzL&>U@%0F^TGt2@i&@2AYD?{-yMY9erd$@~4q{*SF{n5jt;RhrWeAKN7$98+@6h zI8DCcb|7)MdO305tK*D+h9$gFq2_&9oJonzZsJQ5hhRRkrmG8)H%m{3G5un~hKuBc zbHwm9KVvH@bN#ATj}zK2oY6+j(K!p_BFsdqYHkx`L^ZckL^7o37@xrO>QPx6h;CBl z2fYB67w+QmSz7uMQW_nrSlx6s6@iMPtUD-vyXxRdeHqRqV6w-5Yo^)Xi9xAc3`;03 zF0W=1u!F9U5W5Rn<>ieC%1-$e8?GW5R2B1bV#&lbfgF}AQIIzUSwhl;DNMMQPHc!= z&_3T1vE$hJmTiNk&nH*>`QmJQPv~1XRjt)Uw7MvaP4iH`ZOJyR>NY7RKAMB}u#!4F z79vGUE;f5fZ=IBX3TK5Xi_l0B8uo1YzAFt^G+&b=U#SRf; z-!=6WiIs=Ygn59;hVX&ID=vS(5gT5!#*n-OOws1xpHwDcEI79Q2H`WTt zj)-E#z|)N3HF)P?2;x|v+OdREnr6IMGhU?JLm-Sl^M^m6v2oJGG2#+|MnM0jR8@AR z5?PmjSR5F*&ocupbH;=kG^1B$ROp_=z2U>;jals+qSeiax2$bW4xD5K8mt_sBg>#- z5638m(F(2-aAb%E45f%@);f5Z-Y^~$7Dcf5416t&cbY6t^a)rd<#YH{a7c<3lKz+Z z8kE%`0Z!xeOnAQ~OQ(R2fQps8lsg~kb_<*d}xNb9p^+qAZ@_6ZQJEga3(-A z9q5F@67Leh$|^8)DN_!n=N>cZQ+XYKxV3pcGA7rHC$je0C6x)F&ry5|P@;>h0pl=$ z>RNPn0;jV)>cHPj7;YqK62uuCVF>7~Yn+MWxWhSEMmpSa%+%nX98g$2i0}aP75}m) zRMxN>v%t=H&a6L)IS_daNaXSN}0Ep_oahzO)N3OR<5>y1hYfv2Lg@>?A77wT8s~0 z6d44;(P{%BL$Q0^?V|V{p~xbC5Ki&M@3(;El|e8OmzUSO5vkIymQcJ5N~LiV3Rwx} zXCgIVt}TISNKOq^wlpx6aY;DLnIZvreHTF73p-rydre_FmtV8Qvf*4=ZDXlX>MUUE zS!*t#3^71NKnU^>S=M^d+cJjd!~&Wz*28!S{vm-yhSwmbmD@>{3NC1WwPIapDg)_i zhRdk_S`ON~Mo7Bx5sfgu<7ny0XFPr2U@IV|+0ps9Ujh?q3ZfEJ>1tT3;k;EizzS+> z6%f8LT&{o^}7SETmA06m#mBdC>=te0ahel$R&a1 zjet}#^+&d*Kb0fMYbqI0fZy+z@r(f?f4F-_g?)KVo&}7uPZwA)X&2FjlE{qx15hm3 z*j$cE40ogEFk!W^SpVavPA3qT1o&AEO_j&XPl-4nHRpMde_Ymv2iyIflOpJUxzCyY zZhVePv9O9zg=1kBBwxO}_?eadVmO@I=3B}wKY|n!&(wlPM;+|>!6?E~Xm4fuf8hqt zuZ!w%?kkjwINS^mp}QNajW^ner}TZYsb7f~ev@@LPd>)%DLq^xcbZtpGqkzrT9Fqk=$dW0w1`jV$F4Yfpb=NPKBru#WDJE49L` z+9JzhTgRotXIo)k)B~TH+D!MC-Hrhlf6eLRJ3$tPC4J%CsI@dXo$eKI7$%3U>IV>1 z2+?c02}q+JLQus5Ayf8EN}3{C7t*c_&2u7LV}{cJc|_!ixEmQA(w#ScRmca$YtXlZ zpp0n9jrWr}%wTzuo;kij#K=(L82TG3g-qXrzD!!``0RRZ?N|~7b8NFfOv<&SfB9D( zYK9*&WklQ7QW)b>2=jPQvJb-sc&@yLnCa(t9r^D3-Pzg8%5B#t0_Cm&nXWy4)Dx!) zFM=BZML0t@&Rt@Zug~GieF>;)KA*NCLJ)K2U+(8_O)4|efr%><#Ye39f>3E@WHBk? zxT^_P1hI}l&ae-d9|W&5OgP0Ie+wPLR)20&qG_ww-HVYuTSGAt6|_PG6BMcmhO;@W zW8#l33%jfQ(JG!7euZv7k__`)&QpPj%+{}b)yBaQLf2U(zSZO&z%YeP{UZ*e9TN1o zK_J~{S7(F;{WI@SN-=%IDd2DiXLAU0dsDl|$A`#aH~Yw_&#o`-b+`6be?5XdEBLZG z1M+VSs3U8j#LmJePrK2;&4UVD^y89ZK{l9x0bA}lg+^!s;kZVGg6V7`?HtxoiufUO zch4w~G_8%AxNU|CN1Fk8?}yz{$>VnsD z&?74jJmHDOt>(oETn*rUZ&oNLg7L@xCeg1TDk6WMaQV}_G`uNee<5!PNe+g{OnrER zk)ZfHtvz@#;wz^6hXd4f)kWD5fuwd^cAx)FWlI2UF=PE=XN>P&Gc!J{k zqIoKx2hF8o51s2KH3@)`}{EmzcMSKk!i^I!;YgE=y z2vAbR4Udt1O8I5}t#{ZpzT|^os0v05z)HiZPGf-9EsjFSe>M4=1r#zXtT4V0WcKMd zD|knnwZl>UEWa#gcu+dSUG&Lr+q0b|NGb#HG)F7mENlVaT6V32dgxt+Li>8wUezbjHZ0y1DW2pmA`30y$tKHa9kn5_mjyd-0>?Ft`5D(@ZeH z*558Jr4sB2WiWqR%DI&MnWC~brHxzJfZw1 zQXEn_f2Ayp6r*utu!syj^_w7jB?Kk6m(GgnlH&7r)Z01{nZ@+MUj(B2kRiy9&p^5I zm!3xQO1!E%nBEgp48x3AO`BQ2>Jkcp%f zxSVrMytu^mii>n$a4Z@{2epSAyadb6^F^L*e?mbv2VRQMyyc!|6Ce*Ue@fgi-*LZo z5A86=r60*i9+ugFh|}r~Drsz$)5?9ZIeFz4d-Q4%PrG#}m+SYz~>gif!`{mEd+-D_6aj|?v} zf8^PBo(&Q*+Jez#so|lLxX$#hYztTNHZrk9EDsjyvb5&7>aPq`A+=$@p9vYq%J&yU z+b!kE*j(v0T&a??(iZo+lfmGdCp(f4@Y9-Ayh!7*R;{FhaIxai2mFNTa5kUtY0m zPyUs9LkVUhIXYJLDC#~T11Z?ZdclE~hVe>i6b4P2qa{6EUhnidTG?#gLZ}kquA-c;njh%4lAJ7~6wXI9 zSTAFRfM<9Vx`p6gNH0nP`*Jat2K}ND((kwd35)M6nh5B}x0n;9A8YxS_58IpfU)G2LD6@e^2k-nmF3ylrV>*1?D`<%>5c97n3D+3=^3ftfe{& zYsXxDG3>V~2wEr`!>sC2O^7R{0WH@Jc{bzkkZFA3)!GvSE?jZD+k&7>DqeNLzvW(fLU; zYtf@58Iu2kK_s~uK(`n>JcY8GbgneMiYk#}2sSKjQDpZNmg=G39y&X{;FnOkj9Vnm zixugRFqL&>5)ZP4usvz<=VZn@K9O(wW(WjGtO^E9I~zYif21>rL`D6?3bVt< zbTaNmuyO@G(%OD8z2@;|@wDu3say9axsB@TUJ8m490gtsaJ$n=BHV#A1}=*`ZmkoC z*&=2Zrs@xYF-k$fw))e6?_7kR=Q|9}Q;Nd&oD18zk09(P=^dMMO%hggP=NTanril4)wVA*HY$c19wD(&vw8C$uL~a@ zDOYk!Y1~1~?C0Z0x?gS!FZTR)q*ge7u{A>tiT%sGs+kG;e*?Tv1_O+h$V2g;{(yQyQq^|A=87WWn= zbVW4Dv2B)Vc1jFGVMppVqZ3e4vLuR}($VT`Vl$@b@r3m+WSWd-;jdXV0t=H8;&h?N zEAC;=9dM3tE|?_|*J4!5m&cCK7H)C!J;@e;JxMPqc>d7t;I zfF*a0Rn`#ZM)Bf`77(E_v;eH>Y72+}RjQN9GoERL?r z&&VoKe-_fMQtOMomitXdZmiTocF5QaGcQfz2H|63w2uzoB(Mb_6Je6$12;gco3U*| z(W0(si1w(rd9rg^7uF9L@%#(RU|o@l=uMZ?4h7UNifG5SZFc2Fghvh@I$U6m`iOdd zYM5j62w5!Zt>(iKlIDQd+&tY38B2)N@=Ds>e;3&(0*(EyCKNxPNjy6t44DmPTwz%- zz-P8d0v1WL=2mL~-)!TxD1qAxtQItk6{TD+V=hs$(XLr9akw4ynthadz22e!c!BXi z@7QesEu8iH%?4s6z{J=@ox|qO4Fo(=6j(IOM1Ca~3peah^HE1EwusND+1I2Ll(5Nt zf5G*lkA{rIKDX^=?Z({v+`>Yw5yf%wg;|he4S<}Yaw#hAHXR~)5g*q~*vH_&$`^&T znbqqlAUv)Fi(lC-1{ny8vAE$^Xm{nlAFRy!Y+bgLtq8yGM2q8!|Ga+;EK1&ip9K-U zX58Qdlp4c*%U18t>&QG-utofF8h#3wf2z~rtJexTs|hH(>ytmPMaFkt9CuA{N;vaeZfGhk#FI?~H^>VKIo-0ACsc8_$#_)i(FoKIH z851PKPn~nuuBmbMDD@i0bf|xiXw3&lz3sA%N_um#v%u9|6dh&71)oe;Ov1xk%-4<##gp zth|4Ic5vJ|4PQXRa_`A254iH%^J{^NVGE*dncnFrTAK??SfE1CV=T}`cab(ck_V{2 z7&C}2S(vjQj@-FO69Qw<;P_cTn1)||*@<@7!GHGrjZA)yhi~5awcSUUWTis~#6`}T z=I9{OXxVG84!iwre~iEFI6vyU7Ih0#Zuqd%$>+7Yd(;=gNuG3rBxZ-r+PRDkS1x^4 z$YW~S=eYb-(vZSZ!xwhscS@&>y6U(Db`gv39Y>KHHFxJ-kv#f=vthvT^V1?D2Z4+^ z68;@UF0D#hq*1Jb$M)~g1oS$8=&u{P-v*)oGS#MvwM`q6%ic$zG z)M%SC#VWKarv{KpH&m5ue#AF!HKU{4MT3??(c_gZmonqC44;Ai#hR9l=!$TUIcoZsx=)3P|fOKs{hjXRq zo3(oF>7cXU**ZLY1tIEV+&egk943sm&ki9rAFA?@uSz* znA-4%nSS?mV@ixE+jswvU|*qk-ws;mcDb0M@An1+WI9Df#s2SzW1V`(Vhs1rNIy*i zpuh%}fX0_v%4N(w2{=N{+p&(qc)Inq$BT-MpB+ zLacm5H=tF~z!v*N?ysx)Ke#sLjQ7Bi?TX6O~77rUC?Cs1u?dkw3B z@4AU8Z$dR6LtEqQS+*$K2)p)hYEp9k&op z0Ll+@iy*9pNiwqEZu6}Me)j75@x@yU#TA!H6X_-ew?7SfvzJex0Xcur<%dajivF8% zOR4`7#MrJlzogBcg(My&-Q$s^K`4ey5&c&g%~+LqkAv>&Xva%uEe$NTugpkX+!v*i zPL4yzdl#+2N@_~(OCr|~C|9|8dJ#v_E3UH;(&G1mz8z=0N(ROmsPQl(Rpc6POB}ZlV6E@4g}XaW%WnxV+z11!aDE&U(bf zoIF{@(jBnS#NCdKLnuSxr_)-Ro15#SSM{F_W!37sWI2;~5LYC7C0~%fR`9?NYsC*m zZN-0i<}VqMAQeTR`XvN5$xzdp=13hoULmyw?dY|>9@NFp>%4!p%D)42;6cE8*kBLf zq0b>c2_J6!+&10H_V#D$q;!MVsc%4lh>Z8Os3^wXNa(4_2lY!T12bp3VLXS)XsH!H zK@MN9XVCio`48M+Bq^w)3-1h`yF^=?>N`k~l}e79AeYWBl0%nP!0+9L)`4VosbG3g zDuyqmVj5PTOKgAo+h?SA+3^dkiI|jlQci9PoZvppC@qnxGFIbK23ST_Yw+cI-!A3$ zp(+*7oZLkJ+K`9Sim%_`QMo#+}V%WXnbhYiC7c-3t zNUFKfE9^Xd5@&0il9xqn@)Fy+br6Sm!CKTUpqR| zpc6R_>KB~i=%R&CtR>%axCW@kG1pn6lPT=hB3DcNv9AohKyiG7;ZFVS^S%BdCVx9s zqIhuOK6h8oV-XjTvW}ebx7hL*fs1K%;*rDv)enX#?R4!j(i%_dv2G=bYRr^-RVFs~ z#Cpkx*~NdN;IY&HB%S`39Q`MM?&t?xLIm1oM>Dn0Ozq!IzPkHDzV-I4)4u)Jmo<$Y zydGMlsCrg!Xl82Kx_TWNu`jsd_DPd6@!Hjg)Fyo@f&sKQz%(P(jHS}S0H~@;FJ^i* z?3+I~(>B55W!TADn$IaklbW7kF1&!I1rY~|AY}jK z2C`tdWvZ3AUCfxx>lvo&fkwNYJ~`9-?ZAQx){(TF$w&t=fC*F{zgT_RtWDL#=+t7} z^6`H%j>n2>QqhyW#^b%#^?JKm-}vohe*X6S>~ALz`Ok0fXaD|>*E7>oUp3oPU)4AM zdA{;`rais#k;j#b^VeUs`E)-0v3~K}=&R}LJB?=)^V{{`zS{UF-+ue*x9cCLre^g1 zCGQXP^v6*vT-1!f^jfU%1O4gqC#~j@QAvNlo^)D+jS*;mY%<38AGP*~GffbOwRW#H z!n3tD)0wHQ)S3q~taSUdU2FewRPQuKxPi^o&TBLN%RlbnSY2x#PtVjY_$LTGvzen9 zOMcuI;FtSiU#G*3*VF32u=Vw*^8TylZ_j6b<8k`+SHA(LUnK6fzP^6#`rI)asosB` zZg-1}*HjeoBHBai0a_KT_-Jn@g^nJzuK#m(He?=6w;`%U_Kkb9>#r%IHhc9N*U{tQ zQz5!P5UvKSuX-?d$QaBW)*VQpp~!MU`Q zh8j8C=)Cq$bX$UqX0tZyC!woN8Sr@gKENt%IYdvea7rv8l^ z0G!T^cKh4hA)5O@61MB>E&YF6BnH$_#+0x<`^?XwOm!^%A&Yur{dFt+tLSem1N*hl zYJE*HibR-=3NYA58 zqoYe;w}t3pDBHC|Ea$@m+5o7mF2^4~UjOILFl@0QOxJLw)9SW0KHVlc!@?hC)FG6i zVPv3(S_DnLqbky?VO)Rc2W+T%2hM~2W+)B?EBVT}RogxieOtu8UWCHNZf`A1gQ`RI}K%p!wsYYuA2!B(WTe6G*Yv^{KCRhQD=Z5_NB6g=!$& zHbGsUsk5ex$ZHKHI5|r*JYf53YtW_+mocaTVt==GS9{$)@Q(FEMCb5nv%W~Xv-?An zts^YZZ$TgpT30Y%lff_9dZXe1arNhRYjM8u2aO86M8NvZqdH-1R@_xdHiV}~9ZwQH z+11q_M`164dVRc&rI}@3n3OqYFpc|2j6lCD92kGikG7JJRCaiG!I>UPTx>EB=k`{T zuzv)W{Rbx>kvPPHr}FLUUsM1-6WjvE0rD_Jg${-K

e9uPqT(s825S*oH`;S_@jfXn`ZlkYtxbrT68tN1hxHJ4; znxWD-n*|rRD~)bxmh@)>y$(C!wSJ6(LhYL#j;_Z1re83Kb-NdMY8Z^%##HP`N~*|m z5UBjSn2F+hqgzaMd{p_vOUoaobbk{I&p!6HQ-|zo<{JWm56|i%{Ox6xbc%E1&^GZc7NzcTK4~#M*+)#KUPK^_jVKI(A`4)=17l=8NjSHn%hUPp47cg%b;0auR3fH&#>u+K59<}C&Scp$}xq}z?|D4qdlVC#GDVTO6L(jB=9v86BW`D!mC z*q~mAXa5kkmwgD&{=xT}z4u3d9fr@gcxvL3H_@fdKqUcWtNwOh4r82;HxEm^fng$8%0q>*nJ zjdYq7_JFM}l{{$d_WC=!oH>HlZgfaqO1o_Gv67DLqVaM)YGWH)+kdSEDE2Vy%dPFe zE4^Hojk@ICK}zg=Zf4eQ^^mMkYfN4?oG#NVq?3|Yn*|e-ZCi?oB^a@t(~%_Q8?4$m z+(07;4^40Vz>?6mZwDx8rIxEBdU(}#yfr3tt>m%yw6 zAb-tn>vpvC`O$FIA)F@{Eu`XHRQ4J9z$u+UAG#EzWfNY6aKN8jon@qr2Re(6Jf2vP z2(Tq&Q(%2vK`c-&%{f*F#on?shMjLMf(wt^#;o-e8R6V@rH`E$jJ7$)QP%vZW!>y- zgThHH0zG48))@eiK-wQ1ZG&T(<7vCKdi3^hCW$`(+myrY(Y^iV)QAk+Ii{x+g@1;| z+*t1RcBWVU_Fu!p4)}0qO$grKF8+qdnv7%l7RK^TfruY6E|BqUB`ES3-O`cjmqTk zv2#F4p6BX$cl%;$er{}*%Y>=m<9xBQQ! zusi}tZq%D)x0Gs}ROhnQsc*%AbT-k>oPcy>?<*s{e1eA8vJb^c@=rA zo6pppSk|DoO`mSWpJ}q=i?B2n!ix(Zq|(Tg24eru55(;>5aVkgu3**twz27ZhS`j} zW>TIk3!iOdmcw7{@xs(&Ju!DSIRh1yec+`jo}p2+3!x=HS>SZ zUT+NtTv;bhUTIg2UGTw6GjiWbJQ?G{9)%WY$CJm81$n1`z*oIJj zm6WeS309R$gT~r_w3|vBYrtCiB#X5dcGGr(pUt29*ph3hi!y=T_th-h{o?Q3dBWUk zYSYBdEw4n%erX~6H|AxHrK}6&eA{^WCC!*`%q|?BURKCws<%GC=Fx||lu|e5tu0Tt zTebPWpJy+PK}avCtk(FhoQQYjMC7V9K2)~N7+JVv@8{=#l*pXk1w#1WOE>jjy%Fb- z=)uC=lHR@V4+gW2!V?BSW05$d-441ewxPIJBZgB)JDVLw2UUXoj|gh~wa@y0_3Qky z?PuI5|GDA%1Qq2F-|0g< z;GI(~VaWP_2bj+GkM%|cF;@IHHt+o|qd$ww3V?7^DDw~t9~hxOEyQXr*us!Fg>yX~ zf-Hm@3q!UIRM4+mZ$98SvGH`9b%FTch2&7IY5v9t5a$JfJ8r+ddcJxjA)e?L%z25x z%`Gl87Ut#`8*{go&_5)K_O|KS`j+hmMq%MYCHwq;O>!fD02(;(ToSqxBnASg?`mzBqBjb{#WG0Z5Te2IKQ@Y3q8}PxPPb+?sY-&18 z>I!}(k~6Lhmrb()A_2~qaI*m^6xuAPLsnb!Jg|W*JgwX!X;`Jx?U${y0YZP`5=`|c z2|~zkXWZL##{F8yZ1k&o&xq3W1qa+)Epk&UNUgR95qKq{`eD{lCa3Q3A5p-sr@jhz ziOWd14#jWIS_?ND+giRQA#hGgz&FcCg6;AUA&Rvf1jYH9Hp}1+^!Dhv%{nU~zAzjS zTN3QLvL;|yh%~zwts_(1etMT~v;h}?O$`n0KWu(;Mp#0omw$bJc?gS)r!ZatFrsz< zvO>+YoIq|A?Ppi74kZ{?T2qEbv1|N-TO7`o-MJ`&#WKe<70HSZ+q8`IA{56&uq>m+ zmZmx{X~3&;dEv$$wtfPH8Vk6~hVD7ERL0(tP-A}Q4;A_ZP*)~W&iZ^3PlNV<-nPuX zeYg+721{OaLHj7}*h!-8Cs=P`#>GF?=Io?nn(`^fEA&h8HqbV&8;DbK3dl2N?vWP`pw;+B+a#@Xzk7)KzasdX zc^u#&yX%f>7p-T&r@_lV_*F!IxV5uhuU&_r9$yy{Cid%cvw@t|Ujcwv)(ql(2;JRR zT=o3*D{QIVuXTgdsAN6i5kxjHSD5q~lgQF*4ci9xqvJ18h?HLXKtzum68zHmFsX*8 zjpwD;pj(V9@qXW{KY7_W!|JRLB1Zrt+LeV#1&-jkol!7tQt{UsQWtf9NLWPZC}nbG zs}eowhaWW$!zQWZc8?6`bZ+|(*9{NViw3yxZRWxY^!{2{Il+P~oJd;ewq zg%IrGVq&N!dugdHtp!LT5)Z$%(8p*a#&Fys><-QTe zjg4KRv%g^bH}y8`f?oiCX|vC%iNS2|mt&=G{GymAjqkH^5C4tj{@l_eUAb~%?|%1@ z^r{-`R-5(>k*ZfMmif=>aoH=0ddkbs%%VTFvsFaZ!LjzhO@_)293fWpwpb_(CBhI} zg%ezwClUosD}7<5H-2>p(+Vn}n)|(a{3|K1{FDa_t28ZAAB#(WHr}ppa@XLQ1ych* zG3VfKpv~?JLp8aFOyL+q61S0&t*Br$+<(T{9%F2S(+pk7eI!?YQp=w>e4#3Q+>-m{ zFBn{y^G_ItpoTSv8#&WNdz^}cP&M0y8Bgu))ftu7D}3#p8jJQ~S7D!-*PnWSpcQ@G z+TN=_=33z6fX(WEc_P%0IeRz@_Ki&y%!!5AIW)EvC8RxfUo5@MFPQ79E2W?y%b~dX3q-OgZ(^=KMw`G^w1i=XstFGF~~H@?8)=ki-i z7^=$pJN~wTTmv4Fn4`8PieK6&T%ks!Kk`?^Yu2g(^5%u5_z@n~WYb!)d~x!w#T2H~c3rFRs5^a2BAz^&h=$u&9rBhp@6g{_y+-#~rRzrq-{8 z>&dLZa4=|-wRV8`xc>V{mebxOKTq4|Ue1F_}5`R!eZRLafQ=rsL)00FCzdxS& zV8+pZR^$UKGOWUt2V|JM`czO%);f1m$7+9IkqPWsh*JB%D`{JzM;~3dI2UiUvU*^yrXAByoy)^od)8NA;RR+KD z_#zE!2$vgOhdGi9oQEgkV!YAbG}`@*JlUUrRhSPrl*V&oK?37poY}{Z>(F6yTgpzg zh%&yQod8GU^?&@hi>YHu^zoxHhgNIY9h}*zi4#yis7f%t?!Ew&-SSONIg0;A7W%YO z57DEy(W}38s&Vyv7Z{MZ8(>#5BRF`FpN>~b10oLLS5BqG3;a}O5(?JAPi>fCZqRXm zoia|OI_f|$FX0hvyq_caLj;z=r+UACcg{xxEx^_g9X`RaHi#~1T)eoz7st+S__V=< zw${Zph8?QWjrhx0IR>VD@@!slK2neCak0cH`Tt|Q=-jWz7mS*IWJ5(-dI52Mk31~2ep`%B_TJRu3KVwSW!_j4jd&MyV z7Il?hk%{Hb&9UAMKS8tP{5s6C11%Z6=0cKt2i@=)`3Jr05GinE!ogn*VWIf_A;f!b zp23d2)9TlcH$Ybo-veZ&;z!M=%Je*c^PD%js=0Z$FMV8Gn#^J=Bq`)&UR% zvXW!|_~=A&kmPhYI~w4D->gXyUR`4R=EB6^zJbGMdXD*vkf zVD4l8<8hx9PjA_){Tuwl|6eZ2BRr73AEfjM8WMSm{Jxz{|AYTb|6ex!OxFD3($t-~ zr5m?*Z_M4fv-oayZhn7$VRdot&TXde&fLu#H{Q+K7fq_C*|!%WS17G<@U|xN-|baN;W7;qcW>w;hp|wE9YTl7?{pnw?vo=V5u4Z*%i(TmFTB++OS~ z-k4jOUtlEdAK&Ua3g$&dyw0upDayY!x43kRnig(lRYG`fWA;0@v`W>q$*YaEhDt-7 zt10ndmfW}ImhOKn-MfRPeHn_Qzk$whG%a_k@8@T4Qa`=DvlRNd&!5{WaPG!DS@d@c z6Q(6S^Or`_nx%!?)HQ$e7SA^q7Vh1+O*ijMg@00oiwj$`i*vVbK`LjL=Wg6#SQnR; zXK&9f@OSR!?OPObi=yTh?<|qf{(tL^mkdR`8OJ``LGOPmJLubd2R-@E4*JV>(CxXK zEX;+)4pYY3V{h1`YbWrOz0_-axvr)ESVtdB(Sml`pUrFR)c+>u?yO#~ifLP9+p(mU zZ*suSFWE^vd&mA^bKJUlgUzA8P6ZZ8$Vy#Wx^-`P?#``6h`RoI@vLYz_&jeqyuNuy zANd>T$BlnmH=qRUmK$?7Zu=kS3rK&Pg69{Px8~;WkZ}3dEE|GNcxPVuSo-X=#hVY7 z=HM|nKo)M@p5lR?-@c;ECRw?p5aM zem+-k{xes9Ay2mq>4R#*DT%Ny-++AIgsk2Wdj)B|b7Pk`cb2vwo+8rFV3;MbI{%No zb6s!pSoZw)xeB9|VcD?+md}SM9ugA{F-HRdj2Dq@fn{{?vLwKO_npl%mo&F9zkl`d zeI-9hwAf-9SW;M-4~aZn^dCJ?zS(t zYf%AAkut3gwdud9bGXMSmkZ!kGWmEyigX7|zub*i7EM=JH&qS)1?YfB59I+r-VxSCb*Ji~NR z3+c!5nz%d5==)1`3)(tuV>70BWnLXvVLzK+Y%a4ua(v=X=%q$-RbMSo_NqARRVsg9 z6Q8(9^On~-WQy}cc}(}BvMn=plx$OYq#c|22Tbc!UmZkXjxB>Qz?Gtgx>A-^J}UPZeoF9X4-!V(5tmNja`F9cYpn~t6}0X=E%ALlU>)Jl_kR& zeKhYd$`w5s^Q;Aipcgk(XsiyYq4TgSntbM-d0x<|SOcT8Ll_=I1lEui5s*37mK#@a zb3p-?)zT^f=H5>Qb5F^dY~{GYfwiBD_O7AiLF8e>x*{s)fvA& zx7tC?6>MLcv|vOmMfSgpKxn0NvQf20z11K-0FzDB!p1;LDI$N&qTdbZW@$HY zgK_C@P+z1OzK|8s#(8Z9tNdYDtTHmv7B?OOF(CTPwNhiV>U!flqd|d?X-qUY>auXh zy1b&zaAk24v1R+Q(NifZPQ+d_$Tlp3$w>^!t|oGgxNV1nu3Zqam8~ovxhAO~+pSbUxna*BX^4y@`hjl}^Dog4ulIE% zCA7M-T&hVF&lb_*ZMGrGx0V{1^2#k{Se8|pYxHTb&W{VIwK*m z7sSocTEgzHX!3toi&d6OOQCfu`5C-ZT4$}TY@PM~T4#UWI+I+>?kwJOU;rt;0UK^i zApamEXV`B<1`{ds8CMNUN1$-mq%;eNi^VFsYn|I1CRjd~F9D+uo-(BMm;XJoO1@>K zHrJ5Cy0)&>*78lET|(Agj;w>fkoC_)RuL`;mV_bUCc%GE%?NSw6Cf{@+a~`HWS4@- zw`I@Jqgg_aL5>~=f1$^pi5?3FnsH4P;xb9Zkglwn_}|#A?ui(7nbdwciygfgOo{wlw)tdguMqj z_MZNQy?>^VWX`TGjEm#1P|DLGZJ(TD=H4%K6{sz^UACCb@WN#S)b*cCNw%$z2imO0m=n9-GZ$nL56&6d+)X*r$d z%V~e~*K+#PmJ;8dWNS0yLo=nO=E9jho+DSc zteS4|+)C4H6h~%Y)r7q80$kTgKCFY+>QXVAWpH^r5^>KXF<4uun{te_&HQQWo)CEv zrPGzN#xo@t(>h=0BsHciEe^t|L+dOymS{A1`F0)Kgh@2ERz%6893}VvLdpNvQIdbJ zq!Wk$e*Qv?>^M}EKH*o8a@$(5;960}$_#5>mI&E?jx{HLVa=bmA9~(ud1*n%g;jU_ z(e`GyY|ALIp+UdgVGCPYgm+t*cy%n641GH8p)boOboAvtvl{cAtyLl;Cpki#{e=*J zrsS_)Uld9#Ac*#|FPmbxmHAaYwOD^-fwMnAT8f;xa@jR3Y%{b*TS$j3XdeD)1^v=o zS|SwyxcK*MMii4LnRWn49sA1u+=kLf$zv4;T}J|4oGo#ssH;?6RV^$nN>Lh(W%t)r zVf&UTSwi9HlTH)MaBT~yDd-k?`DeSRrI{xEoI` zw>fcN(&_Pr=};`u{^VwB3S57;Czfh|^2Kwnw0M5Y7tgJ~7SEr%<0I1;;1`i8govL=NO^OXB}gfHFm*Ica+?FY{1NLDSyY=J;5L?(u)(5`~Zn=-?#Y zD=Xag&8?0L*DZ$xdMhj2l447^zOtrfqK}AR5}7snDH2`lC)^<}N>>C05?V5k#? zT8j)0g({kF3{7gH2{=^%FS+b*5OBs)v=ZicLAq97hJBD8tHQKOdPB5rP0gIEH&KdQ ztrRlu$()LeeagkJvRBP+1eQ>p{mf+8(Ttj!73G>N zx0vB-Z}4;KWQd~H$v%HDntJf=46}MCwK?pK*5{`7-_~TZiQpWjFru*wXP%;B$U{9x z!*1snEH-0C^zDD!POEl^lVG!*k?P+cBDos&YHyGF(n)!{?$IdJgtFa=yWsx3`@ zs7cC!o|><9tZ!J{{xBt55w-b`9gM4CQfVJcSyNqPELjDWPN&($oX^RLl-@2MseFJY zbbRciVZSe%R}7u~dfy0P^#Nh=1X#@{3?t!^-326Fw5gW|d56c(79*(SKoX4#y!7EF1-6kDaxFYjh#z z{M1Qpe#(EDXE*FSs;$mV;S}uj4VKJmXEj@$6IM=JL-zGazt^7r9M{gEYd`y){=vI! zF$Lr5W}nt@LSNJ{>}-xQ)$2?im@yxz2@9oZ7``N;XpJ2PbqZM>|>?cT`<(>cyH zT}5W$>8%+^tr+!#6u2QROrJ~AAUjiv>dd$IFyDWfGlS=P{$d?oobX6n0(~=QAvXVbPXzZcQHpk46m#!HjrYHo}`&M?S=IQRD&tFKBAJMB!4S zzJWAga?oLxZR^D?J^EX)=%uHi_vfrUOW`r4Y!{(Xc4}VoQn*2>)^&8utf>UZ|pX{)43)+ZL zL2OjXA@1~ZdEiW?&BfAg#loH&mX8|Kx2n%YS+lP{$#U7`uf2WmXGXuC$HG2YVcma8 z&1im0GhXUT<58b)@RbaJT5`0v_FP8D@xqUHOpMQc%P`?nan6V2o9{z6-d|v?CW;*q5>go-q-ai929xPWd!nDCB_l&%%}y&fNb_ zT=72tisgCo;n)4iG;{@kwQVrfg%X zAkJAdp|CU7`g`VpilX0c$z%R*<{Zc)_`~E&De-^-p98UzFPD;d$k9JLlex8!pTw1= z<~}H$_$p5fIyC?__M4RB>EF-({3ky~7ZWpIvOeapK7grZ@k$;Q!k=nOa{`#JwAwPq zD95Bbo8IcBk)UFec0vnVa>2qM6_*u@{JEC}&;cqAhgzNCs3+0In0&6X^Ujw&&;cHQ zIjiyKV~qhXjocrUXNJSierxza6WZOUU^dS2f}ytTrjw~H!oxWAGTAPdjzyj%Ez)cX z{uLt8OYxw1Vw{9-t|gCdT__5JcE?Hkn#^f}07jEEpX5w~{u@c1WKlfdmbnkOj%caa zm-~?a+)>B)j11Q}dK*GNSi9`-ZW(TKj z^S)JC_iddx%{~q1Ef;P5s2OPBy0#rfWVHc136htOl9sm`o%Kgk1Dt$_F!^HOA8^E$m9<%!k$wF(HrWrb><@zE ztJi;qKb9(c=PA1#PV=m#+yV)QU5DVMf92WLb^7w&_^jXBAIB1$HA)^EPMl-Hc}#Z6Pe1;S;HT1a+K=osM zd&vLVx8V*;f!u#|tQ`*Fv(!#R#+F(!ay$VeS0Yj;<^*A8n>MUK=`P6il>2m}HO0}o{C=uzB}-y7=qJ7 zorZs5slC9@kq-CfosG#p3K7c&Iqjv7pwT_4SGY*ZR9guSdD?}{umlq_FU*D9_~Lnj zAmR-79@WZ2wyQRGCsQkYe>SKTfeUjHiWidxYou>3)jEHB*I0R+{vC_@@|s*$A>C-d zX@i`2n#!W)_{h6F>dNC$KaA1K)a>#n@`dtaqct?+5%0-{uR~LX}F3#tz1{YW- z=iHCtw`zZ*xqEBx%a>{WG$fc&AXJKPBKO{tl#S5KwEZ5sd|q42F|6jxC2ohXulA8- zdy~fDqO!)amW!QGSgDRQf?uyB+0^(QC>Nexee-cy7{qha9Rz=_5w-fB zr0su|O(Ou+N@Z`oGjmNB=+h7y9P2+e*X)%kHoMBqEOpH~_%<>bzPwULqPR}-OlWlQ z3ANR@{*T@7UcWl|d}r%5BFod^`JUpV&xloiK6k%c=Pq5FbGtXf9pm@kT_087P5ij_ zjbFdnQdg7lUgl84;QRh&OB=%GyRG%dTeN=}2TSs*>wRTW@9xyA;j7-OH?L0juD{LP z`PeoP2HAOYM}4ExH=M3)cB0#1yCvEDC$)MRKG%Tjie{UNMMG&i%9(4U>8&khK&Myk z%5Arrxu^)vjH@X-eHQL{Xd7Yt)F=sPy>+yAIJc^nGx zeK^ckv!?|=3EmzYjU|~t6xOG8_|ty{ANNMx{nqIi7}0LGxzmzYW&{Ca$=1Y+lkMvV zr#qMD(j~{!K}(LWY+%aiY@O)4*ms)l2V0G~z=VK)67N5RKIwO`=6-Jv-R}*b-a7L6 z2KJj7(<2t9GI$wbOt6^>eU3 zh(V@f{UI*mCk@5=L-~i#M|iz;gm6Psv3{H5WqI1x2W!>hn6KZ!Irq+47oiz==r)Td z&9~u7pA*C3hA_=3ND}0>mr~gQ zFMprp8271Mi_zh)3tKP$QF9i8$8!|#<3i^8Yhk)s|tD`L04rHk%-AO(r_+bI-JT3R-m!F z#RULV3Qyjy5tf4HVEaH6)?&z!es&&){eO@P`qOA|7IK8E&=Bo&sXU@UsI8B?bAF05 zW4#nL#oPf@*TtPOMXE|oWQZZyXCcp4Ylu&NKW+vHDu=!eTXfc4gojT|4;IFd7&2vmfD~6SGI)6ME z4YRgxOYl^R()853?bdrT_~F@Rl2T?c#bZvdw;1^TDa5x)QZUrcWQzuDcx(vvRoX^;yivI+Lp(k zuyMO0Oo|-V;xAkI>er2Haq%~~?K#0Ot^9XuJzBKp8e{0U1N%1QR^BQxtO%E zHDK?ZVs_2KWy(?7gVuSWc1)Q;9GZb1HqUeuBLv`V7QwWf6^MS5gM@hsOG7s>mLh_K zkMSXkiHUWIIT2EWi2uTc4+0Ap0foH-8Uls9$XUje#{Pgtyy_fE9>xor?UzXrn1H7_cngf{Ip{ zw6tTWC6S1a;jdfD03l`qFBMOa#i{_ZewWxjwZ{8MP{Ae~E>2){Q4DzdHZ&LK`f=wb zf~cP9zKzV@LCn|u!_zii;6XJ95+25oc94J-ir>u36X2e6MIYn$`+qF3wtA>`3G&1# z+FOp`s-D3*YDr|F@pl&<%6SJP zA_asL+CfdGLi=e_+4&*enim;~+C423(?i_mhOh*>$9+)=^q4uKp|OoW_fJwYMqFJN>Kw%qxAr@Q7HqMk^YG1pQ6b7u z7XTmIsVw5|ZAJ!opzF9SZnC=s0NFx#qzmuz@Z3bJkE?t*K(^+Znbf%)NEi8V7-#H4~wB&}_67 zEsRxx+lX5mKOMPkYp)5r`v_QgRyi3{A^!X%K%y?#iI>Q4}9|J!B#(o6W>E5vM{CzVucJ_ezgyVX91Vug*zGi3r7b};v73| zur5M0vU3XE)ghxKMfb-GX?NpB$U(NlNgW83dM zY#t`gNdO6t5`aTO3PC2blR;qd4iFlLOmUJGN-`6CxD4D!@+Mjr~FEVH+9iY3okU2i(cbk{+XpIBaP@6doJRWK`RpEe}^$VYCJ? z+eW_zez$T7qn;y7MudVy;%-4AVehuf0*T(x&$P)SP)u_tD>7;{bVwK08Zoa#kZCo! z_t0F3?6(iZoJqo{a81Xy3Tx73*?&1|zoGOHtql}M+R;1-6%&lL<~m|d2!i(J$wQum z3&68w_c~m`$2vzipm0Tc3M`{L;*3th&h71!n3h=pPRjU8yF-j8?-TOZz*{By?_f*} zk$qN=*FF*5D%PN|(6kZkbL z+-q_Gl=knHEcyXd8;9rmx}$_q9P7sAmse2}!NV zfuO%=y%NfbOr>#5GKk)BSTq%nvTCg1=}GoA3BG_J=%|QcBw!HTw1}q?(1#74q##OB zj5nvk=%TQL#C?lqseeXh1UC{Br5b<^+#A&RoqgGZLr&WVlf1*qS(BXb3)?l&?!T1evLqG>I{L950 z5pIT*GI>WxAROTCNbM8g>9Agt3qX8=4le=jk=Z3grE8Oj7=N%2#*9ftl;R<&_d!NN zV#@^$>U!pTz@c>!Q*#6{_ghqey2ai+8= zhl%M3F%1&(#DAGma-69kj{)vqG8;6CU<6kr^dXbQgrtaBnN%jEMI1`<&&KyL^k1A_p=iCCZC{g{P}g3M80?0?hY8K;H*15;CAd2J@p9 zMl6Vh1ad(Kbxi$Zx<3#VpOqjs*9wnWLNt*eI^D zg0zT~_kR{oqZ%YfBwqnVuX$(|c}i zLoU>l9E?X#Jo6nsup=%eq6ov+=q)}8JvNuRpbE$gn}1hwQ^#hC^U<0eqbaH+G^&I+ z96xcTdxl771Z}SoU?&6ZuqLy~I4O(goD}nR;(ysB1p|wuaAct^A#%`qYWI%27TaUf zh!w!uuod9h*cJ0<1L$mIZ9&3soSte8Iza6ZNK=qJ3pBzONR|g$VM`^M;NlK8=FoI; zkjstJ`D^O z?|%lnt380$QxiBKA}(Qz8&tRb`b1r+I)KZNO|zwEvmEcV~aQ34wTOiQ$&#LW{Lr35yK5G4_L zAkrI#(@sI}YXoDQWawi5)GOjtT&&izs1i?yoPapUC}am9=3e1={;`B~{7GryqjdQB z0KJGO8%5H&#)}|LBwO*38kR~JrjJ2N@iEFMv`y)N9f*;SdU7Oct2y!Vz_Zm+61hq~DaEWzN?H)pcyOFT6@gwvdx);0Q)7t|8?RQO z`Ya{LhLV~<1SO$a^Aq<0P8PV2_{~Xly%;tZ`9#n!lEf!@nLt5^;s6r8yO52U3${`F zP!;|wu;n0$%#-v;Qrm)B2J)aFhJW>fqeASdP(6W6`Y|qq9TOy701tAblw9apNhWlm ziU@oLDo?pU*nuV3$e?AN5ci7Ghy4(SQTDRvC|b(ZL-Jb|z3=za&kL?M&Q^}(svab< zX3E?i2-|%m+?ex3w5@h1e_3kfGDQ6n!oHn{zLeJCTiM+SIwnC^#>J#CW`DI)^q8#6 zE2V@$5|Ot)p6E>ZL_*gUlvQ39u+li*Xa86=Gg`mSA39mI30`PA(mb0521Z>Njx7 z{yri6!p*smpSCx?L2v8Q34eP#Z-1i@Ekq`Z&fJF=3CL2aRAO9A23*N#GWVoe6u{Y_ zy9>~8`Qi5{sRHRT%0CJ&WCxtbvvIgkdnn4|RBkSWE5=_a9#x96ol)ST{LL#5LCu?; zXYE0IzYUcRN<@CiwR`hP$p{4I+Ju7M*`K=oowvUW_IJ_#g7K{m`+x2!cL;1KF0Sr+ zl^rXOjk|W{MOJ;5UQ}lFhIKIEK*!2L6Iap>Y%uv=Gg>n3CR9t|~=P zDv}8C)c#yG&!u^lK!2YS3RhClQME|Y@0+ZB6$xghW#wh2dBg;hIlxII1Ei2_0?`mL zQD}%1KMG1BN%EPZdCpPy0k=`_0|xc?(d|qMC+>I=RJ#hAUqKdnp(fZwHLtiS{s-%C z{r{?h^@p{woD?ySX8J|{fy!C`PBpAc^{)O?bgVKF-G3>qD}NKF{b60JKcG96b?QG< zYw8c`Mww{Kt43wqoKA2}+T~+O2g66eLEMwz??Uocv6IK?Wh4+aC!GNh|Md_H+ z8t_6f9|^mjLP>Ae>vN57emMBU-!rXGe$GiBh4a?oGMisncW#@v+v zV&gr?oq3|>NFsqwjU>EbNfhAJ^E5$?W*}=CKG+KDuzw``^onayo2`=+=z7f)zc&MP~X3#GK zJ)dwu52{5`OdF$xv)W{#tm)596u0`}E(6ZJz6!i`{8QU`}KSc#aL<<{va6uyunRquUe`QkL2rJ>NY2s%mqN3z(qT-{7 zVR49x3XlkT)g4cJlB};7&1E#8*iLnXLf1l-7L_1i?zp<-e9Y*QyILT$d0fw}q%n^&UgqXGC%>VI)k2<8dZ+ zw4m=uF5}IWOOu4jm;ccZ`$s?QAGP&!N_MPBnA{-zrFFjEGymP0|L$z!cc1(Z9K(&? z;XFhCI!qdQPi6E(yyvC)>HTi-LWrUyW4+d3yY|f1qWr2H#)DD$w)*e6_3Fdk?DVVM-8sC));_(i?ajWzHQ<@*ZWXK>1L(vZ1y-I7%>{f1dMY1X?N-i@dC8ewRru{i6F(`B(W`3n%bc%K2kv`=N5F@9U64S9Ji+vei5a$aTQ%zT)_0(E7v7@kW;q&Sh^6Imp zM-2L&7FcN>v2lBVEn!!+OJM3=4tMAF!bm@!e$FU9Z#?(=-Sarp#ZlEbe}06i$OLK* zv+B%n4paJM_~i@eM*XiLEHf{M?1fjbOh;?Xf5sf`2vtAHT2AJG6yS#;@AT*jt%`f< zmoMEcUY}tjR+YZ9^BXU-R4M^)^ZY=*e8~%ZIh>`8jhWe5+HT`B+n8s~Hu5YrviQax z%R=&@jQ{!djOl(%iP=)~;~IvLVsK6qySbx+%fn22s+RC%hz%9(2q$J5N~h50nBdJu zX8t#gd>R`HZ#=@HPncAG7`*D0M>z7!8XH)z(9Eg7um3$Y^^qJ&?P#`q?Pp0Aaf@O> zkjUP2%v7^`N5ulaMNh_(*Iy?4hL2=Na3{x|qpSzuhQk{}7>_%2NxjU_g&YxIPzBJJ zz3~Ade|^}>z*W_x;6?N$$G))`;S?K`7bgWb_yLl#f5@)qXoxNCEE zW2>R53TAA#8~+?l-`JX|zTRrIw?i+!d}(i2_tzRP*QR-yB9rzHUs%Lx+-AcDFtfav zf8axCo#&b`H>YDt*nRRazJ_gEOv0`~HUM$bSeyr6uL)hDd#kg9s6j?Ao{O|=an5%t_iS>!ThW0oip41^QTbC8F zomoe`0$&-dSAuTAdZlc5Mg=pS6yZMYf2?6F`gH?UWlaHGvIC( zPUdho=m{;b0!0x6+WS*_pAvj!X<9spPS~$QMr=7-Y{Quq4K?L0`0~XYfwnAeO#N>u z$&sV}CjR0arO8v@AQ`}$Sq^~#bs;}xxEZ#nkvA*jz}3Z#CRlf2F>T!n8Az zYNO$Qi%s+Va$cEFaI+Nx#jpGXhd?QD$kkAzsTmAd=e(@cpOET)fVB} zv?7#+w1VyRUf~lv9az`km(W8r@?|EQgA`+_lt#KUlrh4eA`Sg_?cM zI2fgJ2Y;~O!Nn!_e;T9M5BGNvsCc{aIm``iXroWSY~S27dkc2!I3P=k829Tu6XAyf z*}lHKk*h~bs>>%AB|%vET1xDwuy!QvJXHnG*HM5V=qo{{X9BqnNQ1K$6ui-Q@;Wn4 zr4#?ZV?eCP*SVuNlYHt;2-;cB67K63#3d+bADC^0CQxVie_Hew!R6+!zpWo(^;qSG z6`u8aBAhOx{%a2~I<22EoMHA9o?sr?wRj@j8plDSakhq0eC~NXGZl_TX;(<+rp>{6 z+YcOTw>`<*W88GlLy3t;q$Y2%*j8XTEBTpBr!pf9WOEBOWa}P&lnGGKQ+hJOUlENg zRmLH+)KFa0f6$jBDbEV+%bp zePavbf5pUj-KJ#L?D|st*E1Uz*BsIPGJG@c?O%pou{?7-*oib|-Q%4(1(SjAW@F!t z3(}er!u>1JBd*gp1kusQ6lM3SzHXHl3rWq!o_t=KU(pfIofIggTg!tR3V-rV^cQIa zWIGkEi4S{yU3645YS?WlF0}1;TGzv_(3wp(r7(p3&C#^`ZruWTeeg;7V6{rJKGhd$ z>z8WNg}1Mbt109<2#mv+hnC9UrA`O;odbfy%|m}&sMT{`z}{C#bH3Nga%Km-w9{oG ze_!A9%sGtlp4GO=ecR%ySaAgl`)ysDhh{U^w_iAm`*}Vjoay5Kr7Gd%nH%13=M{1bsuVs(?TC5@~j z$7yFzG&r)46_?LZSND4v{YSz)k^T>?rs#FZPR70}6eO~=e#3lzglXf`zS}d#+_+r6 zhxD(7OHhP0=D({<&2v{>5Nso$hKvItO3zWCOg3xr4q}XL+)Tgqsf1Gio ze0K+sv#)e8-y|>Yp-qWzyW2ai%pov#QuY?>q7en@87_I^9dU{48K>KW?~lx}g=gqD z{W*L6yRG1Xr}u+2bKIIOd;8F47SixWVI`ZoP%1H(oR#@utieBBeKOQnJjV zXPHghbKx5bT@5~~_L3hWqir%<n5_g z>#M1@_x#vE1}{3a+UdYft&xG+e7Lonn$0asih$OUzExX$*|uZNE|SLK>DlMkTks^3 zv6@~3mt-1wyp4{XWE1AL;je`4x7*RdE+fk_``xWf4FCpw6HTK$Eh|YS!|rF%~t+~g(Mn>bvhd743gEdrlD>& z&OI2f67<;G(B&WopLd#TPIaxMmRG}#tXFAMXf~uTGS^LrdAMh79an!l24*|tAiu|s zr{5@ry3(3~opfHDx24Ht5A*HXb9f%TF(PsZ{%$JQ@B|lWdC*o8f7DTQ$X2x(NYmhl zc9|me8@Ow0<8x?c(^rcIDWi@9NgmJ}p-}4i`s7Ag8kC|LzP{Je`pgd9!SZA?-KY0W z)MLiUuUwf%uHY!Y#xxWU3vXg2bY783toP4*jiw{@JvCU`3|G)RGCj?p6?tI?h8MM- zAuaF%vG#0pblZhTf0@95>5?qSr(nQ1l%zNt%X(XE&^I2z^5dU7d1c(X+t||bEiFLz z)^_UN*7GU1nIdOI{EGF0sozWDtluwOmF~LAS^3neWXq_z(*DTO^n&~eOS3h$G+nc6 zsiFZEL#){~*XlS*$m}v{5wtA#Qe_ybiLI9v6%5 z#s99{j&$)1Vh%8NE9N-kpCfKn5W(Z5p1*DRH>&)TJoemfH*8&dx%UUY^nRPu?hT zaJP<8iVS;tpqzK~{QCylBaMppQ^zJ>PLw0?#14eif7^6);%7?WlYlt)MBb%=l1+Rr z?|d#Suu#Q_j9uF&N)d>Xmzi8?Nol~lxb&I`9MhayfVgeK>0=_wlMau0*#}ZD2r1T_ zuq755sm{!%vRaOUB0+>kKF)K=7kQ%WiQ87^`E?@BC>C?dvXyL*Y+Qo+#1*L)jJyAg zx5L|we?#88iiHaDd&f{sSK7Hw%WLUzMAA{Y%9@+4Y*aS-+e{uN`ffkDx7`@Viz2`} zbNbhKp|M=`p$GRf5*2jeg2Fx;am>=v8dD%v0rPQf7;w$pa1%eI8TslqlO!jdB>WJ$ z%^E(&ruK)q&0(W9{IR_`x89yb5Yte&EnSlae|j^pqjPYu?$aOYt;Lz9mv+cXgw&N_ zhp=mg=@;jwP#)}zh@pi5ziu0;kxkR&a7i{TgCEkF1$NJqK3+%7s+K~r2;7RrlBq$i zDtd$bWa_Qf?@T{BNS!vPZAb#3%55}d&af@J;W^#D%xB>(Q&TGM1{ngjG6Z~aEE(Jd zf4cyQ*1*zs5=ltAF@3t7HWs|nwf6k+iGvbI-P)5_gOlr!U^>(d%<*GWWx-sABH*L- zRa@L3{;cEae*j?P2}cEftHp)bpV{oM_cwR@d)$-B6=ZBW`BT%=5!DuC9EKp%+n8ZT zZ0%jcYLUr!^qOBvIQTzyGFKZPo0B>If6JwY&r6S9{4vaUY+h9sWUZ|q*4zT9*ZKXi zzQCdIhlP0y&o3)dU!GHJX=#3KN%5tXg~dfdmKWDn46?j5H@7OO(beUprG+IeF$;`? z?7MoszR17L%K!df|Fg30PHDClv{=owMnO;a{=r0Vz}I)3ivN@}{HvzGACvwufAwWb zTJ82mAm6MfJ}nsy8aECpkBfI>QBk&QJIJfU1bcSuV1KLq{rlNhwc1)^lf-}2{*A=U ztLOc^vCtT8ypqY&cEhh3>%U$6a--P-S; zOSNrrk2j&V&JVTu>^%+(VRDn0e^<3=VLlt}lR|E3ANh9Izz>%@yvX@YtrL&?xP{$? zlj+JU98Nzx|DvCrbN2iZr=99;B+2UJAa6L3i?tR5X2zzr&;k_gv!g?fFP^~bh@YR- z3jR_3W~cQAXCW2=C#>T%C!U<$L!_{8xPuvo#){Dh^?&8+)rW1{lT$Y7e_Blf&m;3_ zqum|Of`cFG^Q$w==-(P4!S+zL%+#<8Zd zaV#w_%p?El|45+DcG!0xZC+H7u3*}Y`ph~*p=IlicNev412LoI-l9`%JGSfSB1L}D z$no^?9eJFy6Bydo$afm8f7v#U+cnPABZ<%~A`GS~d2Wxq2Mo9`F+RQmwf_V}A! zw3WYL8fIsIXzN2Y2c8F@Zb?)UHcC{Giii@rPq4*9UWD~z3F5*5B|E??> zJ16Ew(@(7qQ^1rmoUuW7oOL8)Y5mb_e7PZ>HI|ke16yirO|iNCutkI!2t!~>nLH*i zy+z%c#SbLxR^N&_{L~l_^Cb9Z$oa>%nozDmLO^>L%jW}0C({kOvIm)K%ztn+;x(F? zBUhsO@1CjIb-ZjGfAH=YvjpgL#(hsnc1<2sirOC8P|e8~_( zui*|doXEy3FLq#fl4a7pn(Ot)98caJpH~mzyCPsGN1V3>#4(4}nS>llD0y(a$jiL@ zPCs@p34RD{b13C*qa{IjT#_1V>}QxwDO|$e-L3EGqShnme_g$^P?mNN@c<=P5lYWc zco>e6!s%``R69G%?Le{UYp=}^y5#0utX`ZL)I1>}J5k5}E|NB9!8YgLpEmARkKIo2 zv{u{DJxR#6`*e?{n=D^e&2?R$66$;LuxC@IYLP)5$4Y!A6p=UfIpn-M-%PY2MeN$V~8~+1W7SaC;$N^(pjH?;deX?WriP;(-nsqfxAeJ0pe)qW(aEsE zA#qYsSK8NJzkP$(O0GG#&X5GQ56obszPXJEA=?N_e^`gYnRYn5I!zyL^AzKyp;$V| zsf*#kjiE(V6H-;bvdfMvmlVB>s&<;6&USSx{{hZX`Ms$FvmavJtL~`r0z6etsQD(dl|SSmSi0SRZGkc)$_td7+Vt6&v{}Y?k>- zGv$%5wHreFxIkzh&r~OtCf-AfJyTpN7ZwvLcCgj$1Bw zF#+Ia%=%J&%=M4!I$rIOqNCzqn-3)q8jrcOe{;{NcHXs_I{#h+sLU|5rk`q6=Sb;u zIHYt3%44nri!{YZ&9SF#A#wNE=!^T@q3sXi)>waq3=kk5A&tSpvmCfKH`JcSKAK2l z+dS3d`CIk1YfF1rCbaG0MU+-47m!*CXmYxJohYu)oJejHIx}~!N^PwlHy&*qUqW+Z zfA@^$zCN!WLvwRt+vd6DIJJE=f!ZGDPm6@n8VB~x!lc}-)uw)Y91k5&*;eoFK_yEx z;;Hu2r`km|I$oOunag=7t?@Wj#&Z4~@MTvx2Neh^@Nm-M1;JPM&aC}AWrZPQ<-W>+ z1{t4yTHyQqbBXaUoIkH?YIb&8rn7=xe`vEdc>=fT+PA)#EyN=`>goE%6AkV$bb$Tx z<@QMOTHkJaQ1tM(43eFXZv+2B^3iluL_mtrVbJf$q*iBxWqn2OcYON?cB|1q`9|Zw z{jaD2N4B_=d6w>0aif7R}! zbFRh;$x&E!=5&LzwLsZ&iw)Uv7N}cU9)~gR`7#H$jh5j)X2x^ME#7>6e`E1KN-FYgHJ~9lza9jRFOAG)m7HVf!GW?b&o@Tf z(=V$vjz}#>Fp? zu;r+WB?aWBMqSlA)FaeuohPa9o2#2^H_RX3F}g0^{Gxw0t|I_#tiKbL9y?70NO!qAo`bL1?5d{0e(# zu2@y1E)F&Yp+QW5@sspa)g$BVGe&jEEAt7EIN)P(O)>!aPHK?bPm;q!yQ1Bv$@mDC zEG9NnNIJr~mHPsQh?3Vlf5E^feCZy{E12b?1XlodPk%L0J317cQ1~%StZeF3J{Xw| z&QXd!;uc6PEH~6L&<%(l*ih7eO~QxT0x$&y<0Dz)@o`BQpR|W-p$OL@LrU7q{iVC$ zUBN&1mnKe^)LUM)*A2O8h(tf$Y_GGe`mIMY8JMMDu%wI&GPXe_e@CgW0BeM zfC}5}_6iD`#>r{9($O3V*a)%_f7j3VzzD=LqA=R2p~It~y1iQK>yP z5xE<++dY71ptMymoX{VH0~T+GwcAL8n?K(opL!cih9_p9C+kTG?!DD|BW=*w3ywTP zQldQnp9*qizK2$C zJV1{rpwbe#(2NNmG~0#po7I$7d-w0v`3NiVX(VL}A2Zjzf4i5L@)x=z`FsEJ5>j;* z+6U^-0Kc+DFijV+_DiM#Wboj5vN*GR+yTI3LrIhQm~0>mV4abyDz5atd>0R-8m{j! z710YMjm@x{J1>7xza&k8RtH)r44I5~+#S78*`=rtkp4%Rd)4%h)BJ=^sww|!2}>x* zOjd(6$C;QEf6es$f@wmH^GDNele8*}l&e`Nq_Om@f&)LIQ6 zxUnmGS3qVku5i>;kT00ABct9%(ZMi#O{H_nwPgPUOukqd&#$-ei{ea%8nj?}Ro-v2*||@;?;~py-rCSv;^obn$Lo+RdCH>y|Mv%=O6s{qp1z-H`hIrJ^{Qm4ak+}-5N`-61@s0iEZ62to=)*9e|pNb9q21lsbC0~ z)lizZ@UuqM6yFw;f0>cd+$q&!HD(NNs525|XWtf#cB7!P z`TQ+?R|pLuK-=B5qM^?e0j)Iz8=r1kbNCFW^sHLkyp3visdj(aNqQ(hx*f!={sjg; z{JXLWOR%}kf71SncoLrww#Qt5ZqSA7r`PDhee_`Gl(&cLb@^xH|FE6yF&}xvu$QzD ze}tcfA-AFDQ%VcAlKJqt?`4hZziax%y3mSX!7Au5-u+RRRUdX={E@VnrifVdm ztOUi-68{g}Ah$w+t;N&8eBigHU%YX;e+hVM8$rMOp#Y8i&F9s^!Yj?JtCOkz>Tnfe zg?KudnaU_z7K}UxwNpi~VKg)u`&9XN#w*PVM?K?{>+>lZI)Kp*^n+n8Ph~Ef5AK56 zPSt^4UIC8eQ+p&glFAo#SzrMT{1e^emalD^aXd+V*yme*>-vgY-7s!AALln*6|5FjVQXYyQZsnpRDg{5G&kba zl+9a*^`)6#H;rn7hmoeZykBf$`KU79&y7cQJ04X&exFgbtudoIcLcU0)p2M;xZ`z_ zXMiP+*3Nm9akf1Z>L|2l+R+NWe^A_r2#IPT?ZtOn*ksFM+Kbx5r?SDzuaE3RLTTp? zwb${a@bP+URF%QTWJg&m=%2-dmzhFg4|Lz&E}kZ@pgFakdgCC(f;u<==K@&Px3q9Z zPJMfbL5n>3DcRR$Y6^BWT83K=kq}Gfcc3i)f_$<4t%YO4|SJOjJ*zC=Mn`7 z++N8Qif{6FDCSmosE4(Cb?9k$5!KCLlE3A-iES|-$ZEo!(rx+APob=8u@f`)$^l+S z0_1$@La->gbgyKSqP-HzA#Fa&))noQYW&CSqcTJI7BZhphv-Hme@eO`{dcNq37O?XCcZN*3z-;e0AfTAA;9hw>3y0h&eZAq?ucywoB7LL`D?aFT z_9*f+we7zL?cZIRSkRax*4o)V*kKFi1@5KYIz`zR+cjlAi(lH$f~kezRRm)TZ69Sj z%9xIXMu>EZ?&V8He?aHeE~+U18pijl$#@xl3rf9-`k@KM!6L1I`yCt`9FRnvW|4$5 zQmvwYo$8%nD*zr@Oih6oneBikI~k`=K?|jK2`lR?LEqcV3 zl3+QC&Tx)Qi*&N! zhIE?vA3zpq8!u-<|;Dl2kO3=!Z340n2wsiB#+RZXbf$U zGJg8RK)duIe<$LnS#t!L4f%Smx_-VEHA2}}a@I)Y7HKB4o=j&gw)bDBF`BmxMbbsQ zV))1&!a`+CzeWpU%phN|RJkG!jfE+rR~hb^{wupWmcj?l&OE@EN~|@DUuwY;nxBAp zFoHKGH0Zbf1>gOpieQ-{M2sx#TSmi9xF`lsWfo(Pe>l5NloF(M;|JL<>OKKGWEws< z%UzeWJT|4PkFf!8Aa0o_m}9zX<~Hlfxar1Uz?fijayG)4Kr5v_5%jw&V@?y@7uxlD zsk4*2FU;t%wa_8bOges8oX@ntX3PyqKQ|=0-KFD3$4!R5gGZ(ra@`u3^Fh#v5E|c9 zzbYC-3g%s>wU-#I0q+=>E)oJCDnEP-#EQlcz1_9*O6IqO5=zUq_~q=mp%078Xafn| ztN`<=6!CkrKfO_xcM<|L0l=565&|azuTz)R5&|s&otFa>0!x1Yz)4GIEnqMe-+Lc* zn=m_}08K!$zh?-p-`Emnd}JlFU=2K0RB>j3q_mkgs<~pk%OQJUUw-HyJiWwcvw#}A zpLc9`8R!CTt>WL(k1WW68G=uhz!(L_NQmR)httI#jw>2bauQ&Z369RYFPq`>W*KJQ z07>a@=^Gj>vy_!8d1J=7+RT{0FVf}Ml-daso&Qc%sH;O8;q&Zz;`2BT z$eB+FGqu60q_fT#Sl4UKf(PiLStT7>%MLt{2aXE7v78OeQt323;9?C9f`o%8TkrhX zz$0NAZco$-&ls0>rA=eD3EYx@T6K;Q2rcGMMO+4(@NWsEFIabfB9=Jx;pa#bM*=G< zj!lHmvmgk`Jg_(!Q@5^7%ix~DmSVi|0vMjM z)c~h>8Z`=rz)mG=9JOGHH5Df;n3rl-EtrNjwL8|-wHoD>FAl++GcJsyKe<7at|20` z7(bofcPi8Ju{4%{onqunuY_yIFk*WcK0rtlyCDt^hZ#2wq>y)wmxN>sYsluY3E_2c zL&NC1M4DtX3C%yK4MC#kW_SgfgvTI<8SfHAS5Q6Fo$9 zLfiKtcMwbCI{+{@YvCNNPVmnXd`A#h(!xt`Ah?bATkau$(A`eB;VT@Sy<|1n0SAXB zw!+CN}-Uph&om1T{0Yq$#F;0c z{qH>O>-6z|Cvy*1d8Y$w?-CEZ$``R?yvFMiY=ErHRkupB#x7-?_xjJ7Y-YXmLwOcK z;6{TG!4VK5O3Hw(mKqkBl^e=}%e(wdqTd3!Z&u`M?J>Q;+&hJeZKKCZnlBNC*W5Si z+prUTFJUq(u?7mT-O0Cy4$NR35n(Vg8hq*@-^1m9G(hyiiFPIc3EWKFv^G>wzr~%f zWW}aCh`DeDa6bi#-~1E{JvXI0eoB!%tfnl&OcH-lWW~St0O$il@f{i^?I>B8s=&~O z{4{Ie24(^WC^Ry@$aG0b2+JF9f0>T*7aC`6RKKlN)3{Z9ENE4^%>pW9PqJf5qkAj> zHI}M>JIt`YTHj8!E%|nCifu`DcJM)53M}f`T5a^;OSsLOLfj(GE?i;J)cHNKzrs$y zQI=lz9!wS%q&T5K)tnxrkq2fN?yY3sEib!w1!QOZ6J`$8c^Z4$$3w*uTo((63UzaE z)FM5P7O7jFz;AGNqysvM__H^xMC~L|wgU5i?gjC}>=nC83?8np1A8s@;#fzYgd z%sxewYekeJW0QG}6-q~u8Ga*0LnUi(3a9VE(h>)?jN&=^Igc1H2Cdp{SUlhzE}lYv zPH^1Fx_zi7_=>H^jTv9dqf#T!G)WUD>GS%sM# zUW493V+w99llazhV-oDeec)r%2Qv?U{@P>PTR?C!7@FYFY<>z7YorJdtf;)Oig;(k z$5>8mjlOE%b@SBzd>xN8$nH?S?Az|u5JSek)mX+9NSk3}@$?Ri6X?V;%Vu3A8UYmPFf z#Pf9nyMY)(xY)Ic-|W8IX?_$e=S+$<$j+rZq9}Dcwa+7N7C04z_JHV>bL-TnrreJq_|pUO7+{B;z6q~glJ3FZ zXTB~NY?bMC6Np2_uL@^FpU%O5rl`3KnG`^!%Dfrn=rGG+m@$>Zz!Z28=1#M4#%3l% z%%<(hZUjHB-4AvS$uA5cnj=Hl%nTvgRshVG5gEu3q6FS%O;;Q!vEOlEjnR64L;-BhVXLLL zme$MxEO6M$mYZ>#D)GQF-j#mF^M&wyj2)*Yp(_aXit+q)3`;C08tN(0(24F)PYZa0 zF%yko?rOV}tUZpJ1PZK0CDC49eF)`c*19Rq+J@awKxYWZ2Vb9V+Th%hq*n?qqo1lSObB6*DuV{|hC zn!K`z5rP-7Qi`qNfG#4`3k7Wv3FuBdLC!(~=oKIV_^}WWO?}(o(~SJel%yGb$0zq4 z0U7QBZB|^L^(_T5Z3t8N+T$_x6sZ?hGe8znyRM9Bab@aUD=ejdC8dO#vB-*Rmi5KF z*msaa_MJgy--#HP3|;YJhtKuVSkzWEBG%Su&IsrOG%nC|$P_(eNNwxPaKjQ%A6{F{iOn+4K98rE5m$H~$`= z4JJdL0}K_>f?G#_r^~8ZxYG<6E~3?uQ=;=X|CKYIwIB#gw*?)({5%fj<6&~fni<_% zDw6mb_+w*G$Y1l}31YHWPFDHPUH)^A|E%$!`~1g*$>tv^=S2Qt$OaYBqT4>k@|Kty zF0e*Y0muNG!oV8#kHptVD*Yxq(I1#L;HQiM;^DY4Frjf|@PiM;iRD+LcJu7hiTp6J zobhXd_*Z8V%{v?2I|}X1uYA03dk!PscZjqxVPKDsJD6k$nxmK;CV-RdRW{m31BXi9 zk&h!{@Eq;&@@9~}PzTIDF6zUQi~2U+O-tVWt`DXcmmwSiK7alU-o%NA3*}5t!h*+d zeJKrZ!mY!1Jjg#?nzc6!tN#gvD*Eag%6q~MC6ZnsFPLzq-}^a}J|g=E(HdXg&wkXQ zX|(q6OP_-&7~xeWV=-hnUYzp)&>bIU8VW#-Y@Mr=it^ohB!ZN8Yfv)ZftOfeD>}7% z`R2yePv=!X=MejCes4`wU@oxv_}4eT9#)s`90C`AGEULAxXJ_7BrrWIa98Dc|Ym3Go6G?xvVsN@UyN;;2LK+P~g*1eUE=$vjAshVaP$?U-DzT zbnQVn-pNpyQ9hJX*oh!1=mOX>#X{xUvR6$%L?5sh5lv^;_y@C`*5K?f%L<(=BBW<> zb;>2b&er!Vm%JSUAb+Qsf&!6K5o3xD#4c^TZwNy6Oo(LVuZWseJ+0c4|kS-L`AJ&auzb3Fl759b_xj z+l3hs&OwHTNiZ`P!G4bH;o(`-J2Nt})C(sdUy$UD=@ZZh#D9{@E+jhz_hAgm_gSiY z?cNijj^$+DBiNTcHqHC&>50Qb#@fElo-~h*9_9%-V7|wc@Xya$f{;7>#cpD_oBTee z@2Bj4*|9478cwCMT}F+-_7l0C>RXAaYzjfy81=ET$R)Jk0#hP-=2#Vpo)46R@4>9; zmxd|MEz>h|5Pzs0G*1EfsgaM=CYq=7+&NpRB=3y-um19#d})u>fMSKyv-r%srO!%+ z?#@${sX?FlG+wi|xe*fH%(JPWv5&LejMZF)L-TyzVs;CmY@y|g?9Q6)G6Md+h=5VI zitU%7%BU2P51Myn86V#WIW_OJz-DT}|r27@g;G>0W-KH26c zhN2KaG|PwayDr1Ldp?W??zu6ROqLHjFpQV3<6!16#TzHe11I2z>7aO+V*8i4^jvvh zdDsHYS5>5BWNHjEAdM%#Xla~Gm;8h$IoO0eLLFZP{)%`H72b^3GlTx-@`6m!hyHPj{7i;asT~zCeZW2G>TP@D&Mv z=!9b=?C69&eUW^sGz;EONh04_Z@FvQz(S>C6A&ydV;2FL_pR&mGRm1x|&d@N=LjaK)CLY2P>eri+@ zW+2)wG?YZ#r&T-*6eLuXQkt+=D#7=a!QVc>m*G~X(%cmEHIQ>gMW5$G zpNy9JOGc}e34hYm%C4&`&v(^=K|?DtXqeD!0on@0*ckXo9{{|Avnb+bKz~1GUxn{` zCWePizhMj!mU=H~F5fkAL{#BoM8UG5!ecMw59r#xl7{*(TzO4K@68p%E+VfiwNY4V zG?!O4y)$@L@Au+9B@b)jpxK2NjQbSWO@5;(&*RBGlgZP5^a`F$yrP$Ire7VCf<*QV@D!mCgzs{8B6yOH&sGXd}m%Jka zV*yi_AS41V0s5CuBmx%_Y^%G8jkY#YEwpJh=Bt5mxv7_UBmyQBXJd0ZYIfqUcPbR4 z3Ye%lgFnB8m$D=RKYtoi^;l2U<8O3IT31gx)K!Nn4DQQHNVH3@5Lq2B4Y}Y;s4AQoPg9^Fo;Knkwz_1rP ziuLs^ewlvQrbCYe<1cAsVR~)bZ*beWxK=>P&$lncWb_+Dgl1*j$oy!mc@T~lFK{yr z?q2M^ggdq-YBvA+{PJ^e9I7&1%%a$6h0bR(QVR=9OMlG=E0J5e1h`8xjcPtvrQJ-) zu-9iziS)-h``){+mVdV05*;w(E?49^?mwLEjhD++(!jEYqs86=2J!l;JKq8H%Hf+JNMwB2Z+a=X+&pSiVfA6>4s z5zPTh207Q-e6-I7;(VFQBD|}hKzNJxoslxNXV6Qfx_hE8gD*?;P~vtPX`pfnpP&XR zLVvx4(xz?Y*x5XEusS|#4o?i=JmylgI%P${Q^@)9w38L=`fyOl=2h<4MwR3=K`t7; z9USLe7%5qdJpNkxp5TeAq3@%ztrCX^st19*69;Wq_;l33$lFZ#cY5c>@#vjCiR}Oo zmU&xiq9}ubr{cgz>W?Qk1!4e4WKgfNx_=RXUy&ey93%wcsk>JmPhdtK@90&MCs0x& zEToVnCZtGXGRt8^Zkg)l8G+MB^T^XhpzJ3$kVtvFlkx&0@6ow@Zxp8_FrBkXRg7oL z97rD61B|C|%H`Z{VHB03K~Su-3*VtN`;YXF@<_IChYT#NB{vpjdJ0Lfe=LcRPk$V@ zr{<`~PLw%+XMBUqD&H=E6XIhUvRy~>N)#h9T2Qo$tZbsjJHe>^ASnBDvKogxTPRM= zXM-u@-ZJOVlIW4gh{cFIsq*(BH9ooUCI!MJ~==^1# z#lc=3hDh_UmYG7jT)&dP{=;r+@qa+W88ub}Mf~TisG^tz4!baqfC)wjE(e`ei2JFd zb_CaLx^V-}61KZ^$j+W&+wC%*B}4=&Z5va;9R~u~sS9|_ro{js8P$T_z`a~jPe5&ezU9oWJ4b^%!62i|CAqe^PG;cD7AViy+pZ*FxUnq3Csd?3YC$^hZ#>^Fz_^zNHpzmg4U2-MWVrN)E&p*_m)SDL<78N2B7g^ zwf^X@ccm*p236S1(KYH$0Dn0TZqs5+z&^N?daBkKnt{W3=hYiDxs=x*UvKTUk zCJGe;A!BO9I=$5p&l?P@=*f}SBXLhKJt*Y@G74wogH&*9u5IT27Jm;M0O1A?Rt>6^ zJ?|8H%$qY{8R%Qy2NQ>cH}|h_7Hz`J!C)fm7fa0q<`m4~-^$|>3`8#UVBh}GSa zrZbTpjo|jL;(oofg-e}9pG*ZJ?-9r<@f{*|0-l5_2z z{44p_?#sVF^WXcc>AQ9G7X`1cq$7xUfo?wC%Xw6 z0ih+TKWywIFJ2ra_wS^Q-Q@mCis$t;zFfbbp6nzmtNe47bbt6M+PR*rucmKM<4CGm zJ4&CkntS%|UHN+aE2^2w*%TSZ=^415Y6&Ngdy#y+35+u()mlhIPYJR1z#XXEMO z#fJ~Wv%z@q;eSJFJxF=m_26Ek^wXw8udx@Qw7r>FzBC=+=in30hyFMnZzjC@qz3gy(KL+Pq5kroE4YF8tbzvi(i-IJx+n^3t^O`=B*}RRiSH z3V3NV))B=E3mc4GKoG}p#lV>yJ3D?|Uaq(`BWdP0Q)=y+kyP^=kzTIsSq8`;BLBc9 zRA3khEe`v(qhRA_&w1GPzpW-BuftCSM73vUx`)Mwg^|8CT9s!Q5PR`wzT_f2QV=i3 zeB|)Wgv3IJ6io?m^XWli7!pQV0(X&aC+0Ge0$fHvV@c$Ax)5EZsdE#^&ObmB${alH{*Do2E6| z>&Nc$F&&{~OGhxY7ea!$yCom^u3D0Tw`r|!$L1Tq*Sz~mpn`M?rs@&Wf< z<>g~Ye;*eco}ztwMt?kTW9!dUgxqR^^E9vZ*@_q8aAhI;V{G>(9}WWD6Na?`x2ls6 z)5cedb7CLx2$^quNSTf5&LSSvX&vXp!j?0bxwQCgN5-O8>+!GlH)1k)Mf{;`nB#;a zpJF|Zli)*`p(apg>?sNCxRmXw7Pp;h%vN?H9#C^%R3#64t<0h1ug(p|Es0;z8dm{6v-b)-@l? zT7HQeapW>(Gk@R}HWb8~P67!@zE zPJir-u}=59~dFnjg3|ojWLrC8@QmP@Eyi`6$$~2LNKK2C@#H&Fc6*-d^WC~ z^PbOb42MVi@Ep-%+%$*0W7%B#goOShgu>r z9p~7RId)Pmf9wrmyTT5Fr|fjY0}H9Kz!tH+4Sz{<4**Z)j!QoBD6}KX;R_T8FDwf0 zF@kD`lu^i07&o`L${G*Y8ny@?o7$NWMaq%E7+0ld|^H-fEJ`GHw zDiODdC>WC6iv2+v64V(Wd@?yJn+wqb&7;a=?waCZM6qlY*G{tOc6R&F1s}<|X##6F z_kRSquHX=RNJiF0)L{Io4SVRra?hRlb%|@`;@Uur(EQN`mb@B0#DNc#c;na9adkp} zA7G7|YAM+vaFN&Sy}0i#%&@<6Qiz-@6~ebN#+vV|Z70Mp{%+E&jm!mM^rbWYbRv2! z0ADPxr5C`?cz@<(?vi+qiU0b~|I%r9C4cSxS)97c)N#FX3mp4@ipp3?B_1HIG@Yt7 zkZMDQfSfiL?%&NxcbpbOWZ`-Wk&Q?hD6Qfk!er0ud`}0R{$fRkM>)ax1z}2vs5(lw z*B1}ZHhCf}VsE{;szOEwMr?$yARNO%AS?!1v$V5#4u->8AoCdUY*}aVE8Yla)=yb{ zwF?O>lo4bj93Qs$0g1wjbr%2Ht@;~=G9K3Eypi}aXtTkSfhZZ*T&<3e(lwd>+Y(MF zK<_#Jf4Eco>G1uX_v82d_h&~x9V;$k)0a##0#Fn~LDc=V)t}cF78x-#_m@dC0wDovmuoWu8-Lb*djEd$@b>ag>GFR) zT>jU^@_#?7UM?*D+hRR^-?~^ye!jZ=dicK8T>gB7r~6mcOL;oy)7_P;>c&sUif*T} zKD_eetUc^PxxP5uOkQlN9pZ(TcW{ezHgjX+ewwAdyK5?5t$quYH3YGwf>pR#^T#j0 zxV3b!&Ukx9^nXlt30dna_tO=)TRKC!cTj&oRBT6LZyiFBA5WU2-7kG7OA7tk_YHP! zHLDKnms@p|gVzv~)l=2)o2XzBI|lZ{HWr)Rzo0NR@$a}DNU1RAz<=t(tM*TX00p#Z ze?-t%5sG|j_8Hy^0+indU8GbXs6necL|+9A>oKdaD1Waasa3jMf}oxaka%RpHy6#x zctCeecq=`HDYSb;|HlJd9RLL2(|!X8tV!^IyZGt^UkN_$E8^oK0e5={jH2N0{KzN0 zcAgHBih11PLknNx;;$0q->3c0gS44V{T-0HHr1Jo$mg(4l0Mlr(QvE2-Gz z9jUP#w8Fc!q))-@}QlBAdJb%1mSO9HBPND#dWJHt@X?n74QEHdN zp-$g=S~oc&!haT4f?plyv>)`e&u=o6Z^rLK0reYM^po~iU@?EfX$x7QRS!s|+yOqYGv+JxSY-E0&*>tzgS|U)2R@sNJ$l%Lp->R;e z71jdh>{b{UaPNGcLYxznkd&laI)lU~tUk6_uQm4^))`a6D&tdjT|qcdzObGbF08IF ztdg7pFfm?bEy%I4%E~Nd(pT|2>FlXnm49qtye5$XRo&}#h{hcY&}-q+_*=vWI3u$* zBjXmi{ynwq*(uLQF+)2Ogz!%%oi4E5`&1a&GWJmjI98}I4o{)Q6QK(<4}8XHI_Lvn zJ!O0Y9*78X!_8un7{1kPL{xb64C%Jv2_je;toxDhhL#n4)PC?Z2#9fyc{)CPlz&x1 z2lt7~%i{OSQ6ZEO*#>S|e2z!3#8c7HUw3PKBT`N@tb=cp*WCoUBt)xeYqpu;+wq~V z>u6)oI+o)5xRns>yzaW3HVuKVnKu?)U1YQ~_LH1B>s7Lk`+_eJjOORXeJdD~IdWkt z@2Iv$84ioG(+m`?M~Sew*r}Qp?tixvYl4F}cPJyoxSRrdVK9Udw8vzSF}ORB?{^M*Z$E0ONiRKyp$`e1k98u8>Ov4wO*wt2WU9jR={4afPE_1t} zseVl3SAkZqnL$l=c~(n9`EiM?|EtE-=Sm3p_7pn(xBUmxKJBiC(0{g#AV6-?loLu^B3fZEcE;#|)N;5^D_R2Odlc zqk#*6AjH_=!vVLiEPq463vs6mN))9o+GpL>i-9>y#8~nvTw<`T@c&cDT5yzvcSuxH z!zSc@Vpu8n5OaRpQ3@=(zPd!#l41J}WgM#F{Fw*Yh$+Ip!xbfFr_2?H?vjjj#xd#l}x z_=Mnh8@SoH8Gn!!Zmt$wz1m~Z5BIO{jQzG6oyafIk`M2(kjf4jdZ&N9)j1mhqClN^ zTr$cUh4V=n-E}^7^TZ3vEJ|HH+HiDKv+==2hx!!4F_Sy?c_Pt5aAyd2Zu@gYIrU1v zr?z3{QV;5x*HYXg(Ndf;#~_{p`MrqH$8(pZ?q8`?LD{{^k3#>Sg%(!%xQv^grdzvNNI#VZM9Ia;?$! zHKgH~GJSo~mQq|FmZ7lmxHTjDkLVCCCy3T{#)zdQk3CwtsZV57>+nc&9=st@dzylG~|sBjdOj_XT(iwNy`|We^D#_PUd^AtevyS{H3o zuWr_2Uw2s>DYbeDwdUBXzgFri>1t#MaqWg?sUJoNp|$hr&mZa{bHH)8-zLwi7~R`j z*doCEI|F^=EP_*xXCui#1Or7(ZvH4Ih0A>aXMbn@_P|?>GCe36bbA21b-GkG%plMC z2OJDpZc2?|UYg@4PSU3aoF~5>Q`~yOr72qSB@I)XoGRS0N7i-a_Vp-ZVS!f=t<4EW zG+gOM;Ii0^FDd|lj-O+oW=)p5g?hQb-0VATz!4_$cP|rY$KSn7F~W(6$`d+f0 zC4WeH?JbPTE&-8;RQSTg6B)CjYZx@%eX14C)xE43mX!{ zNu+YhQMFOhsN7xz?B@SJ8X94`V6VyVTk|$;+;9D*0Sa+2F!_rE63gxgfSSJkr1*t! zlPgWxMAEQ;@>C6g?3#kZgq)i@jF8R!hJTpIOa{`Lh%%vtkI%pN?i z>H*1;$df2%Oiqmb+HDR;kfcRsng7qPpX$)cwD>d3K~!U5Aj-yu?0KD{d}mj1_^@5n z%NZ+YM&b6FgMQa}fq@-|bX;%?X6r{Qb(qeq+}GVLX}=W%rzjs*AXti4RRodhynpF< z)ONQTP`x%Lo_iUZd(|;xbdfpUZPTv5T1v)VF$`v#`=|9VDsXo^NGnToYup48I&Wno z_R=wxwctx({C2b7@Kz2a2QcHt1Bgtt`DHz;D(dsyT$P;5*N9ZD>B&X6n}U6B=?24;}MPp4q(L}_H&~p;$z*Km$@t^_H)5l ze9Se&g1P5vLLgyZ>bM7goA#+{28>89A-6 zx1_R0No7WIT~rF3;m`!*$yQt>#l2C1$^@(UlUJSWC)QG{BtO}@IKMD`MSpYoHJ>$t zZ`9VU*p&jTfT$>8->m#{iF+WvTUK4!wZ`PC2x#_W+i7nqol`r*l$@s0v2REpaWYv1 z?6^@oVU&WRSIK`Jt3g;6x_|3@wUzvG$Mo6=oxAlJVrO`q7D=69Oz(xxM6_@+=jN?e zhcZR9^_B?GZ!Mw_FS<@{=|Z&RItZ?Bbw*ZREr!NL?Q({X3F`X?wZN98+qHEm9x<|& z6aXF87AR?U<2Z8QP2dFrGMA?1e18&HiDf> z1sZo)kYub^{1-H#=k=sD_|ngQ1pSWUIx-Fy?x^Utjb3QnJboc4RQk+>hchiyJM9q- z-~A@hg=uMX2q$(~34-Gnkd-hjToi(^h8)9TcS_qONl?OpYc~f9xRPej_@<~Fc6CK?h+Ds2^x zpz<;Az(qbTTS?rnJE>ruXAqa6s+&^O)9Y5w6ZbpUeV(NrV}G`dgKNn5a5m@;K0*Oy zwAjjpq9jLJnP6vGwoWR`q&w?qp(POHzupef56gdbYWp8SlW_!h*sgbf{A`i3Qjf{@YrnG{h>R&k^4B4E`K?*+;dL05F z5vB&VbbkY~HL^lxHp~7_J3mhP#`mzOszYFZco4cJSw zfD)KTSU>MS9-hq(W&)gvSkAt3B?HmDY{7JT;D3(PQt8aOeh5;Vrc{l(v6o$@wm%~2 zz>1TO`1ZRe-+CkWlw={lsJG!+xuUv1v>D2t*(%gSmZzZmQ?k)JJz@rs!N}7`F ziVq5Qr(dUb{T43ZYFoWd`*ZiHXkTsLxC?*&-y>}~(jwaa52EP!C{^@4W9Oeq)t|HT z?0>ov$ofBkRO4i#nRETv``&qcHn%OqA+UZ*@4ECeJPNo?gRY2Yq+GA5v=EsM ztuP0JZo3Hv(iR0MR&MJ&hZ-9_;1l>=*Y!)%OxFY$wNh`?dg)?g#wC3gTLcGccQgQb zK51mN&vaB*iL;K8TR28^0hzo7dq{r>^?zH`I4fA?_n67v}~}h{3XmI!WPb-Mn=iRq3UEeJwJ}b4Ukk|ySUqLpHK<@kY-Fxw76B!RDY!1 ztf})aq}@(5Wuq_&&6{3Eu~K|!*xQ0&Y2-ytj*4Y5Ch&qtIssQ7qQ?@nUs<8_{j?HP zU}>rUAOKB{YgmeHfGB%MTcv5kDX*otW*$hJ*X4%F_t02j+Vx=)y+)2sg z0&_Z^Tn!-i_jNZ9PT=?1IBY<>o!WY`zeBX)V7L?MRV;f2D1tWdLOd&IF9Sr{2Fi=v z#~oa@poe3`Z^ z#l5+Et?a8$TnKxGpm5}8tfd2-a zSNd)$(5f{7!c_m3#i?X2SbLx+M_7^oM^2h+u&k zertbhwgGPZw|#gGTaPY&8meD?Ju@M{EC6WVH)r2??K1<`@mcY?_h!O^S1k38pvF~H-}}d zG%6jmG=E`3vn}oBirQ;ahgdXV%~q>$yiNgqWqKn)lLoNQ8jS=KBiEbl9kBgui|fj+ zn!!h%V>*I`ajKYr~Snl zX|sarkN)t z%5+_D?q3+3+pR8VG$Z|WgLrt}K>JVx-7gW?+36jn$IvVagr48a!U9xwB?IlRl3v81>*xu!f&7=7E|Of;|Y7b=ec#=>*Er zFU!v2;bTMw2vCwpz@{N7egj9{=!6Nn;x`dUa%+JK>ciX`waXh}nwV4X31lHMkKv!`N1og-32 zK0_d$a5&EB*CBv3&G{(3S~T6lOkQ4^p9pMQ(7$QEbKwBJ2F<7;L|vi$3=tV3g!Pa) zMkl%M%Q;IpXqQ2{?-``4BAfPhZ;eSbhq;ad(H8K`p(&(udnQU|CI4HLG0`9GJ>_F*emzJgvY6s}hwo)E$m+G5D zVJKDZIiljib>ssZ#>Ez3ZXL4rUU-LRY?950%M65>;+SX8 z7fG?ihS;{()Hq(ifKO(NQISnIA{CsVB0UVUUupE{^2@3M{+zcs*F;* zXiJ#Cuh!go!NY=A^eAlMtNUPv@D1Q}(YIMLC3GeB6NTu!3zFI;A zWkDs;Tl?zv?ZxI6ietp+;5FDz)JAL-?AVB{_6Q~t*3VL#gpRhnJCcSZK~FCbd9zi8YMYF zDqtb6)T+X5LFOw2jC7GjLk4%`_+!wgxihjMF=wJ2!ZujFTX6`zVNzix2&3!)(}y6O zE=9n|7q6YgX}$6Q$MsU>Ary)*MSzbE&LGFh4}U}7;ruG&J*{o7C)>$Ea?UOy7zMN+ zW?1wA8%PFsj%jTGnnNZ8ZcU~JAn*sM>TD%b76jWRvwxBxFsz6g>FjvyaP8Du%(&xU zEG)1rkl5C`gb6#KwlutU`c6p15V#T-00#E?1kje9>c#=$kSr`5Jjmttx5~X*cz1Xp z7k`HB+F)^y9S2P$+rAsN7uy>LZa%jec04R3KBfmtO)pcNYNs#^O;|AbecDYwSB@+2 z@Y7b(Jxc9CQQuro5!P2Z*I~nqRtSP$G;g#@Ttru_2?&o7Dn4a|3hJ7v)&mR4HHe5B zB3OVN3h8BC*)29>EU2IoN@%s)BXqK{C(s0yo$zveMp`($A2=fD4i4 zH(=ly-}7-diI@+<6T2D!L=4s#yuM|UV2~r%t#q=5NQcc~`f%Q=}wF6SX`Bkl#?9_0DJond(uz&o~c(xQO{~a%z-ltWec~H%p^#4St%l;G7qsz;a zt*Y%tCOoy95M#en*hCq<$XIWxZa32h!|aZQ?deB~U51BKI5Wz?ZOaJ2Bm-$gpz;`| z;xJ4+(s;w!#tdx7Jd9Xj7{`b=JMJg8@tI$``!Z(0wC$i4OgU($dw|V1SAWkzsK@@q zg(F)Hj=jJFrS<{rk>6Y)ZVO{=cLwk@)*OgRfM6T+*JJFl8idj1mpiFMF~Qvh*5=p; zw9&FaQk?K~7V(LB+_e1@QHe?VKkR*JS6fN4?dSV1K<(#3B>@JH2+O+I1sFV|U?di;n9Uuij!&uLTKy$99~RQV)~vl7nmAseeMV;BVK>Y=Ss0bt3K9S*p|FRjF`mD-4;00)SkLXL<; z$1_+5neIRqN~2WiUAE5rx!L&qcV|d6xt9O-p-y-WZcKd)b>*T`ho`XxWI%1J?5Gf@ zwPhreQo0+NrL~>SYQrHQRe2f9(GL7CVt{>{!D7aqo1!6)E->QB0H^R4fNwx0 z%FLmaQpne1h>3bpAtEiNS)xtC3wf8sR2L?S{zT8tp(xq_k>?1?*$fqyqE1#xS}<&3!X zwjW1uhKjQzvpELOIqfI`Dkf3@Qa z0~4FYdAS>W^zpn~taLvL`bCeb&{xp4Du*Da-nd6|3}v?PPMIo+@cmts5zookP_By0 z**uP~vSnh**|a#5d0B}H3-UkmOuPeJy?R{6j&Q}^7^v*8j`M?ABTN)mc4qt!aEyIN z1=bFJuz!d0yo;dUJV>zlFf2Y!?RB};EI~$q7f53^i%`m~;|im604fPw7rw(m6yIsC zg>21LW|LQr#={8pe|d z;}Ei0YpH+78XCnAocmp`i#r!g=Yz-2pn5esH#j_?xWx>HeX+YgT?aFujz4H%5mUPK zb_3_oc9y*XvS0C4gAtXI@j~jS<_tL18+XWQvtEVD>P4knJLR45`x+o|f+*Z{3i=`N zh2$OR*G!dk<=tP+y6^(jR-|A-IsE%hP#AnbXhA=|N#tsBC^{)Kf+#uGE z{Ct16k*CIZ;m-}Yl;{*Piy0*<+Ob`3HSFBMWZVa2>iGWx{HK1#PyU(a09BHqH>rMs zU=cDKb2nQ9V@!@->89t+G0;z4au>nxd3bx`5?BYd&?=WZjD%h}$;`cn(ikYx!c|nx zIT$s&UF$K=Ts`qj%a49K;zKEuA()i)%xr(O-B~e5Br_QUT*3ylaSn5mJj2=lV1+87 zLZC>fP`)j4*tC4Wcd4NE{Cu|5mgGD-7J!t3inWSRWAZw9Bo8G76->K%PPe^?qnK)G zkdun!6_u4iL!>Ykt``c1K4wTnU6;Wv!3ou0v~^d z(TH;pr1Erf3&drVv7Eq<9)7@iGTYQw zet}4Gbdfl&k!pnIVTl3+&5yEEtr*p01S%Y89O7l5ndm{Oj<(|FrO>lho4w)^u42q2 z;C>ZU2p?lTARA*^VIPP^->~q5ZGL~Wa!@u1jju;`4u5WteEL%=2ha)6`s(P+-Z_Mp zXr6z?^D8Hk1>|8EF>e+D$i_%|uGuIYpEo>ws>8AB_Fy5KGIo|u{6V5L8_vSctd0!_ zmq7h1ppq=$91#relC!}z2wf;yGY!-Z7Kx(5d6XlvRXABkaxMYg(lbF8eZGI{x~uXy zSl5_g_x+bmP7yEy&h@*UCq{L&jh~`J5GK#;9LKOSzhnnDE7zr%7zhGeiJ)bP=NkQZ zc{pt0Gais5=>-?sj?ecVO#HrVzDKz}F@;niQ}8aY!NW<(-WveC<#o#Oe zo}gVLK#Hnl0mTyskd)5DPzmgllxeatixy*n1zPICqZ^lKir7x3dV>3&wvT3B!KL=t z?zsTl2)Nn)0`@ACqed$%xfx#nz?(3q$WzAM&)Ef#JaJDFfXTvLH1~h|pll$=0)O*; z&2=VmL#Q?Q?!tk+DzCPyCPj%e}N|g#Rx~~;fSRpfDP=-AQle7Ni z3=jU5?nS)?HqOr4lv-|VmDi=J&tLAn!J2dTlvq$4A=W5Gr6qq>MHy!o?t)+^g0XAj z!+mdBjg2-D0siO7Vj$K-Y><2|-2pZ8`Y7?p_?}=jO;7NcVz0|)pwNoUt22u;9%>uH zblVa2X&v!u?ag!GD*Fo<_(4YG{oSo+?PdpZTKan4&IF4TY zniD&ae6|g+96o;l5JXvQW_!gn(1^R7sb_7qU&0!KLNYEvm}{Xwa^eQwc-z%C9Dd!f zk*xfG1X9??KZq{`{2HVMw=5S`bHM`UqP)Q{4ZZH;+IGmvobOhBn+CHcK+3S+aOdn1 z);&Hd3ES&)2pk)8`PV#cESA4w#(fz6@7V)yhs1<*?1B`t$0p2qtFg;UiXR4$VnCjWtebef>=;_t-UxhB3PIJo#x}>(owx0TvJq9Nj zQ^O&R>HD49bf<=L2&TdetYOY)P8YbFNKU~h3)~3!xhc5-$XRfO4bllRZS?CM5U6Uq z53)0wKGbgY)S6Je7a%XwuS}piRjpBje{WxcT8e*kprj%lA^i{|G3?*4RLGkdDKttA zFO~T~taW}Od$CiGwfgbZVT!T66b-ZF>z9d;Nw-Ao%T1OC`b!mHyY2(v|7otRFQPO- zv)}w)@Bu`Sj#@$U>+msulcercXVW^x!ciP8+Pa?C6N!EM1d~l}BYaQ}EO5>Q0^ftI zM)-e5#1C6#*hgzZ?WJ<{kvG~3mv(`KtJ5A1<7!ClS3jm9P%yN`sl4ol*r>cl9B#iD zWJbcMIcPo3odEJl9@DQW3@YSVX^Tp9@coh!j#{=rP_C-%@y5v_VZ}`*!T^RMF{NCQ zFf_eE{=zTm96)8J8n9MKk8P-3IVITaS56L_GSPT z&^H4;>IFc{Y>x_TiJMc)-_-Auq64d@huTK0PWBrtn=q4bx7b1No2g753$wlJmXv=4 zzA~ukI;hfz?~ilvbe=gmOH28oTdQ5c+ape`6av_=_7%jwIvUrRct`fUkOgYjkv!f$ zOXXDt2B8yNc$%X_{eBv^9Mw3*+d%Z4sxQDngoc_x_j|B11K<99XAYFgRnu3TKJi8p zL2yJ8N1!L1B_%*}@*!NT+TcVqneKtwbks zl%mkTVL?#MG^NDBBQu)jK3^wS1kMYnsLNfE?B+yl=snIUbf|E(WT~sLcY} z#oJ-IAQ9T~xAX1pb^}Orj6VqDn!#PyBotYbQ%+_?&@$3fnO6?U*>2s}zIuPTxAkW0 zk98b#Hnv`Dz4=pOj%0dsZ&2y{ePpfp3^y&5p{S(*X?|FWjw+mBH03i6j>K=Udk!>L zum^zXoMB@!6H-t0XajU*=Or(b#7>Tsf??D?7R@bu8_`h^)B*Q3b^(L;;OYczYSyJ2 zgRG@af)^yjrs-l8FMR~4@s@w6szAk6DX;P#-CW?qV)g+4I&KzHAJTT@Wf2HY$SKHu zE|F^W!v^*KI(E0+EOhK4s<@d)V!2xm)nf=0P^Fks1$h^GC09y|fl zg*d%3LxAHBh4IADahmwqfZkedmf9Repp3y>8@7SANX`r@eGXb?3f7-^T#y96l+#sGL7J@TLfQTPZRY9wf!RZcBx=KY`# zrrC;cA>TCuOF*t7yZp?>dHw91j&(pM-Xql|4ggq({mSQB!A621-esrGZS)dnZb)Oz z(cRYX6nR!>dI*2-*D;&yM^{z&^)DH;YW z1gMDmz8`s+1>CesAx?8CZ7?mL(tPYpOcX{TwYpYG@y*aqAJEDS!M-S^w(XcWs+@LE zL33&=P@W1L>wyBA6&~l{*zh!HQm1%eZ%6T^gD_kqSyg}1!vQB_Q_W>(K*ehyV#HiB z!X}jBERA`G(@5tSYGbQVczTB!g~z3_url5J4u;bN;OiV0k-JR}GHK60yBn72p34UE z75qSlbD&a)xJD($I*6jnDjw}Pb=sIMIN5PKjJgms@8{+3=xbC0=$|iPd~G>jR#*i- zKd#pqLnwc_e7Mcx{CCuPh9QIJ*@~q1A8?7$?P0~e$0|ZDJk!?u1*}#0?DCQ3vZrzZ z1DHBatnlF!SGejb!>QxWit?IQ`!h(+*WIA`8BBw|{LIJDMbY`$10_m1sb_oX1{wqP z&bc6{oV+lzZ@iGnY2CI(=Zl>#*sOi#AsvQl%yxg9u+R$J|7PcRE01x9cPE~)NB4j^ ztu5uouhxdc-{Q+6dHspfgHIcfruX}uUSV%X$wj99;;I_)pONEm$lcsWmi#QA#5S8CoYODH?L z)MHin;apybX9$y6d`-+tFej+_Rjac9d-K?A=7~nH!oab>iI9Y>TN8{p^IDaY-#76e zv6C2K%Uv3)1D;FcxFhkB`JIG(m1!`;6eoXitEm zUbSs*uHpD%Af#a0rQ$=32B;ofWa^@QC=2H{B6pOwWcBW|F*!$hm>|i(85o)5?k#_j zc&x%Hwe@GQEn=7McLClZDFD+r4=*47vndH7Z+ysj9%YQf_hkW)Uk|Y!gC7_lQ(-!b zCY)ZYf->ZqE*A~ddGz2O77^EVtY8FD@E)teVHc29B}v3(%2}U&ub_#8k@KPnl9$C}L}BPB!7$M%K!VjaV2P_a0Ah zO|o~HOwPRI<^VC%F7c4Z{h2R%i+0NpTuCOI`?P@w^{TUy@;oFitVC1;2pNB}vsVak z$LM!J&{oDzb5~Ow3?>cZ0+>r(*~kTm9Wk>i1#p`J>=TGPv^;l3sG0gFJil!Ka+d`a zUM;wvuqAO*2bR^aM#QE0Rtx=DukQ6Pjd{tZ-dCi+U;gTupD-v!g?=aICSve6NuSu8 zgsEPJdBSdfTNtE(-b0URw{L%Mdxl{*7~eawRkO4mEW>&o(WTnOrDq`oAMPHff-PB# zl>9D_IiXN*{waryeVHKpyqRC$;i)2?9qT*!eawtFa8Fxl?t6WrPeuLVaQ`^}y12fB z=jz;RuT%dz+%%y|W{?HEA(6J&aZ<}q#y!}6evh~y)0$H3muA)NaL9k3Qk~RrN%MgT-#C&(!7A&zT8+K$__D^y$&$> zaSbg_b+Z&NTM_urb=rUL;mqMRgiz;zz)nzB=cmA`iAyyNzMswN2qvOAB<$f(K9McEd(b28jnQVwPZvwwAM<U;3NZH z&~XVsvx8%7HyudE6MiE&sCCHBH%pto&mlXtl2hCvTRXT;@lvD`ZkZSv$C%8+qep0f z7i^Nf!wTgb*cs&)q!Py4gM-1lDk`T|t{xDyF;7)!c7 z0maUv9em0bKKcAUkwzFUm+^ydASYLm-`>=9pZWH1&QwNj9chr`3 zRfB6O_hw|@YT5G4K(RhP_6zJJm?n=Z*3gIqYm}}U{#C#Vq?u_T6hg~qBv-s@{2-a zGa3FIGLDqsw-*-(1xzix?T=^w_k`?E#=<50r(=J?%zkY{Z{*KaBjJ6o@&SN^fQYfX zTp{z{nf&`28cv_Dxuc``g`=a3W8heRkgta!q}~Gfs?pde^f&VmH*Tqr8rr0@g_fMp z_U+Heu%I&R^g@P5M~gSe3W8$aBd=x78D%k!vZD!Rx`+qKg4pKaoJ2^^$TgxC!ZkL1 zM#g_8+~h~yc^M2*kAZHvLZj2kpN4w4-g6!1ep2$_Hq7DQJ>6Q>2dKdFiAc9 z>wJ4Pk_WJ1C5xkr95VTD{N~Ke&7q*91^bfCWkEYW4#@Uy19$zK;fR3hsi;hF-%ME6 z08qH?(8`EXXbhKOeaKB=eZ}Y@FaCA02rsN;az#UvHf0zD+Q}fU8wG5Bjcwe(dSHLY zVEx=ecn)W7W?CV|PQ(D}*OckqgB+ZxrsIg3IP_EQpv&dxClV6;|Az6`byb&05dlC~CLBD1 zic+!Han?ZKQHEK4_+#_S1VglVVk>_eeL!1g7Y{4*S8MYJN7duhD7*;?0n3vzTfROs zMA0{lm;|ati-)tB+rMP<3x(CkPfAA^jvV?|SS52RfvMw80?eQ2vYz><7v=nwL72e^weO5!JZstWT>VLJHQUH3voe@C@+j#7EyN&zs1wF7K#_aO>0Ml(ad_~+-E7;Cjoz$`iA3ro5=&$lo?^rit~)XeATfa8+Wkn_=WWH zx;H4VJzn1Vr1F~Ent|x4W~YBK5Qp*hd#D&P%W^>*MbSqE7zh*avBn&1r?|%YvZ8BL zk=Z`Jfv4aDLPqQm|G1S)eWvc|XKbypYY=A~Q0)w7*l3k`lNVY$&=&Zb{ndbx(ax2X zfLCFmX2 z5Z&?P;{2=*=V|TMR+Wb%O88-pHs~TPeV|%?7q<$A)di3f1cGgRso-D85g#IiuJ>WZ zVs$FyF0~Q=qz=$foVtGp%)DJUZXFZ)R9F0HL1NAk@?m_pM8PK`qUz#crq8-N20rI!x6GxIz@kO7Dkm?bvP&=UDM$+JF%?jVdxT_#dt;91`^9 zc6>^Oco-Lu(h+5In2Q54F7fYpmr$ET;;?qP z9qka-dE)QU2Cy@MyxE3KrtX_l$iwe9A`jro{Une2!}33bBQjI--~SHtze2vpPpntA z?R0ySKItoN(*J*(P7{z?XA0*&2va8NYPlnRK#7pXdReg*Rs|>rnYIzMuwYSgZPLZ9 z$b22HwBQh0dr-vk$$7VdEXsktb-d2Kd@vf%FOkl@NCD7(lF zsJOY6J0ScKK$Uz5u_4QkRe*xD{sYayhr_b*hGHA>TdjXlZ*o-;l>?gjHu^5`zxIGF zhSQXc);FxMs)u!b% z`wkut;B1ztPM^!7PiJ8zT(>aP^3FQ)yO9*+@N?05w9bv<`7D^g-hX0GFZ0X^1h(SJ zN(r}~l%#(k2=_Pz1}@!sRFXjRwsa58HlM8yz+#Lf^LRK@r*Y+VJH)FW}e_*8(e_LG6E!@wt*eGxwfxz-e z#%07^Tm#1011%Ty)6{d1Hn4U?W^uzyu`=m(EAp=un>-gh`aGGE z2M-O}A12Ytia;+t1fq;UFo6o-pM*W4%)@_9LHsKy4;bZC4$^Li!3{F^s5H(J=Bcua zJ>d|5truntP!EB*A99Wt6Gki;ciKJB=JP?Wl2HlI zj!;O2DQ-W+tO}iYD-BMqk2-E_C&t$T#zZlL#zylVG*fPAB5Vz1Fxw~8af*|dpdWu~ zYvcVSsBG)F{4p$=&fSFp4?$!o!ndJ*n5%Fc1tFt3yJ1!Nc&-MEhY-FxAysR^@Gx21 z-?nn6M@N7X4p%P;=}ow_ci!5=g*y#ZEqIe$|9;=Gpmwo5e}^AQq{Q2>W9gK-b2NX8ppM%Qe&WcoJ9^kK7mb)t;D(@Ucl-7t<<^v1 z+s?BwIOP`qIy~yn9RCVo^r1u<-pUT~^4HM3;;NsYo#51^)Ed$WF=tdK>{q9Lrqco88Kn+S=I}m2nE0H{ked(jXZPbcDa#_XLXd<~26npa6ke z{+QnM@_T`#9MB)0J+bjzJ9ZAJf+x3or)PvPs|gng*r~f9P=mPS4R#C4l^NcILj$3O zfCiPN&G|51WtalEgk?my^{sz0I)&rfoJ(y_({@=-RWTlccOxQgG1ga&UXZ& z3?!7tX*AQ|Aes5t0DeGl2asBi9Yh$bhwP~-)naaA)dEGiNwu6Zn$MNHW}X%}A*h#Q zpe`C%WdjUdGfb_$#BPv0l?Op5R9Dj0i)?Ab;V+qA+8kDU_mMdO4!oCR=Wf{3B(MtN&E~Jz6h4kSd@ZOo*|N2TaL64WR^dNuXB`B9!)d+lWOQ-eb zTE+ACoZNLj1LP%{3=6TsrD=Z}xcN*8I$k|Uys5?u+b{bQK0916&?;T<(g>d2z?Oec z8Uzb?nlAchT zQN*+yWOG$}GYYsVTMoSP>Ab2c6DanxK&f(~E(grNqw{w;-^tU197;RzMO>;r@{ZW$ zxZS7cWsJqT?A?3l1-Jy``FaaTNwD~m&gv}Kk#wEbbOC?xd628-F4fvg%FW^WB#mOI zQ;lV`9i&0JH!;i*I-c?_b#N=Nc+@Q&wT4Gse@HRhGSrO|j-&i(%s6U<^cDO(kbiLa z?@;Jze>}bm9)0akEO+s`2C00YZ+$bsbq z?iPT>lpD?)VF(#x=f`V4u*gc8lvn&mbRiOl2}cKA0B4#A*HHiRVk+)DV+~&GeJ$fIoSlF(()xt7?61?~ET(TR10~T@O3|=C873eL!6(QqF_iJFe$wHVcE3I#zUXoV^UY|`_Ri&d%Q^H_9TA* z5P%ZLXtfADZ@i%ppB{YJQ*tWiI+2r66#Lj1=^Rp2kyiq%N^M2r7iBu>RcZ4Pi|rUI9G70xh?{f zGP!R&ev-CxWJkB`)ZJH8_trnzV^awb-4|dcNWaE>;26bFyNTC0F_|1VHlKT#XX5CRf%l3F(DGG6}A3o=HfSKZQw{ z*iz(#@}vC8Bp8M`m@X!dkakhf@jEqBNBs-4BG=W5?DHz|=4?Z(-~Z3KhL~xXHi!S0 zd$UM7jf-kc_oG)0YxBTsWyCOMxjll&5i zQKcPXaUEy-l0apm%wO}Mr|iRDaWyuN$#0q`E+p7I`N8JNj~{3r+_9uKPwH_^8(9(h zy_$jvcWOIpX3lnHR%{?`uqi~ou^w3qt6Z&98(FOJy@Mg8&^JLGZL@!*`}$fH69JB} z+(cM#;}2T%v&P>R6m`*pxeU#wPkvW$$RK%=8opLI!xsoSV7!N6sUV)Aui{zSWL}0i z2{2zKelpMjF!)@R|Hgj+q!4kE%Jv*u0@Clpq5Qx?g8x_=j|7MIpmX7c7Fn#A(Sf(m zpa9Q2q;Dq1S@vJ&A{06{Bv< zb@37d1q=lb5cKTE7=3?iB9e{oWoXUO+8<6{J=d?A8BhfDZw!A;;x(KY;MNB_;F+AX z0QJGTI!||_5!^>&8UPR{F`0{%w2j^BE(NgvNLhR@Q!|l&z{VVkl{yBY%3y%l}N+!ubsg`I+q3MLjJEzwFNfE<(WlxVAyn3V1`J8`A6V0CGu`p`h{y z=<;#o2OR!#Kn6C%%zQ#vcKM&%58ep2&LUwnRk_<@XspVL97s@vx-j3qA`E!E7R5S6bFdQ06(-mHw*&1 z-JBCY)1F1|(CM<#4fEAQ_Z<`v3>2hE)y^GgPZHDi8X!PbJ_7ZMu1ypludYDkXr01% zhczmkt7sLP?ANvligIW#iD;i;EDgeyW8T}usGrKt%EJ&O#E=MR;fPVAM8>~xzyp9m zd;-a5n$>@=+r6*!z~KM|B}@Xo5)`*5rf<}aYl|74F^HANZ*We5KKuf64-JnxW}>T% zY8Hr|JLj+0pdMs9X>A)XBevkmat9#^-iO1xGU0K*{9SB338u+mGDjauiDvy>Ig2#WH>taG z!?rSLxy%XArZ-FGzDJ<;p0~AgBpl6#j54r3DM^CNnJ0bcb+B~-ci3K|yinfG3+*lZ zRtA4)9u!4BZs&srTVZ!Q?e!b7~S3y7d~z02}4?Vy^YnP-UBzd%3_Kz`fu>+Kl!*tp@z6R@l+VdSltWb1YHlHD>LD6>GkW&~bn6=Tfwj zu97z4y&!nr15Z%Kzg>k|z>4@TfVnGjG1O_(P^n-$R%n5E%XBS3_OE6p@Lo06foYm+ z7|~_j@(xz4&MFWh_ub-V)N*HkLMv8h<+z&Nqmk(WtN_cvJVfrUNxNvyp0eKmhlP{M zO)kG`$~Q$!s6ofoz?hb{E--%u+yu3sT*`Nr^aQt=YUl-g_eznoVF0UyTTiw5RP}x+ z+giWU`^+Qxv-8^7=RZird|hE=HIsq}D>L)56ITytNVb35jamif0>Nhd zM*EHTBE+MI7q*GZH0mQn*YwKQW<0&A;E}Jm`P+M3Ps#(^#X9sSm}}c-sYC(aAhB~I zJP`|1MZ-Z>M+lIFA&S5w1I$8R56H1ouHk!nDv9zY7u6?^qlF zz73iLm7S0pUqZ1~u4R9bl5uedqBch({zMF7MH#=dV_W^XI>dy_P&G{0o4xmr@u>h@ zC;XSv-#GN*I?iBoNTO2atF^z(97Dk}Rdfa89xJ_aDla55Zc^Hcawlj_ynv*A5Kokz zxco%}x?gki$HSv)4xn-1oWz=L<{PZEM%hIuy5K%B^3>(`jAnlhKF0#AN+1)5gpSM; z5Gqe(jXe4GJc*S8s5+39=!q8&s}#!sZ-a=8d7>)i37U}?Mk-Gl1dK8(+6MM(zx}z^ z!YQxtZl8p!k29Zm(5T~F%Zdbjqa4i|qLh3*9o)jqy+t)G%;Qzfb*(H~ux2uGuOT8g(S#el`&gs)hh7m9?- zIjaqhh%@Npo#MSmhH8Ag^LT0b?rOH(KKuw5Mt^kkAMao}AqITWKPut*;C?~gRtQ9Z zUn>tGPHi9F!=1$+UHNt2|9aqlt@yBqxCA*ww(W~!zAk^=!F`K*fArA2p4rb!E8#uh zsEi%A#ebOC@aDa{M9{&&?7=0Vb8q(!FT7^IFygirDS_=ZgrD69y{UZ>Z>}ZWyhD?u z5d^;xjwm>>NuLDKQB*M?rqNuaug8qkqr|n3Ht1t zrq7fWV_-Ccp-B3=nd2mS2-E{Uv1-AfR?|8W`hQU`{zwNBx0m?%IcxGRt}niL2ap^=1B9?mo|a9S zlez@G&L_+|J8IJxw3?Ie{G7Bt1g5WIQ7U)@a1K7PiZQUQ$9GGB#LTHdqt{NTMhHnn z1UwNX`V9O6KGRnl6AHA5EdInI`ZKO@e$szl1FwHhq#*TxK9>++PogUq@O;|NB4UAG z%xGbl246ji&nkx#>%~neHjo+uNye&)O&YIfZ&}lQs5*2whni)=yL|#y=#9) z`R+aYd}N;>-6ny3f*i@y#$#9WdEdsrZ{t4zUX?s;zANsDJyB-Ua@amGHt-ujf-F_> zV^c9>Q^}S%E4VL24VgThq;+F0R~`C?pH_}DP_k~g6mr3B+cWY+i{*(H^2r{NCwfGl z_B(roPxgpBZG83wpX>oX*#oLcP}_fi3lu5fQ6e16M-oQM3gH+_$rxSDr|-A6>9;of zO$c>c^;JF5Jd;W)Zu40|!^U%Ax9A=Zxq##&Qf0g-2I->i1LrH*V3Rlw##l>63g2hy zc=b~FChYRc1^{lGeH?IP!fDWVJN~Frx}x6}0FP|n@E7|=o)~OCIf(K^U&((HgUcrd zRXQ&MJyqGxqP-D&^Xd>Tr#qQbS$Z5(GrMhaNeUUg{^i7R8-+|ph zAP(L`4j=vbdFAE50VE(g6`?{|5P*m(F^wOv)h0s4ZyF_Mv#o^_xWK3oio^KF4lY>n z34p$CSF*b3Zz~O)zPDO^%n^U7j+KEVZ~>n{C2N*4k;b75f&d3~oSvuA;j+ipEq#pq z5FI1KG`dnJwQBnea|j->zO4ZC+Z+H>k&M+raBm;?f8t(WRFokRbYFJe-PdP`-^^`W zdcK4@Rylq|x|O>s-YdjG36(~i00Lt8S)}w&CBE3t(`=>jrS_&>_)34dpTY&2#+f=c z(uuK5l%8`o-(64@h8;8y9^>JV^IEMV>y=2&GWxAIMF6VFPPS_5tb%B)8fH<5lkBqL zFp=KQ)kJ6%VzgeOIKnZR;vCV^eu6Nq1u)sg(^kPL^KXDj%qs@K?u&bFc(oM^7t6`@VoLclv;9c{$r@p}hhrD6_ zhZpmy7ro&=Gem!kUL>AsK8lVy!$)L2j)PA$3;YRHGZz=N7kM#Oq(U4^CC z_;juk5j~3zm#HK~iwkZ@UF0->1L~s0SbVt#YFXasdf7d^IF&N*aIRq#Y}FK@M#bq6&Cq-3bl! z@!WwhY!+$T5IoUo0ntw$)(Mfgomlyat)&%^K)^so4bC*;!lXx*OU;5(HP_-0*PSMw z>-41b2D$RMAB#Zte)9Sv`Xhu^PRBT`uqs@(OlPS+!?ftqn zX8B5}S-zWU`NDB8Qko>wm+!l@m_wk9>z~!T%Q{e|=OUX)^iyNGQ#~f*5rf zY-N8u`h~3UyejMzj-CbT5(R40J96!*lN@SkTskX%;7rrm=I3UJ$Hy+ zgIZhNyBR~}Nf!jVf%Dy5?S6ys2WrC5$DYT;&zK`qC8Ln7R- zM^aqKsio>wWpP$ji14IVht>En#qL6o>fC>*O?$P!2Vz8ydDQM!x|b@!iNHL0lnzrO zU^i?*178riS|&rt_myK3oWP|uv`}2J;qWr=f?{&JmZ(w_jxDOyIJ_LB7C^P=YYUltB#U|xg}@nuKh8AsZGE^gdD(w3 zbHs^)Otb^M(VauvaX`{L)H9_-!cFo8&g0cf*hyCAI>byfBE~!U=Wn5W2L}jp>>1#! zgNnClk(G$YT1p*Qp01=cC$8jJ5E};Ya^zXb12raJogd`x($hkOw;#uNS!9JF9e{(N0#h0EnJ6|1jgNgDx()oW#!M_!wY_!k@Hddr%MW@BPV= zFGp>$2iUYP%_-;cGDW$;@in+7r!tDF$p&_9&B`nv32i1Z5r63b^F1t0H=bWq5<*=x&=R#)*yh<$6)rIOT##V->005kJ^(vtJ&H- zz~FH#Ax8p*by;67p%Jnf@2G$F6%HPK!F-30MyPSx8pP><%@pN|)#_s!N8xf#YIkr4 zZv?v#>+*+{GtmolJ!^e6!|>F{Hd=nF<#)6qs?zl{Wr#^T9C#R$Y=xx+{pakx`3r)I649&WnaNpI2YgEv~mOmg{6_n)VP|K8o__Pw8DOiWT4)a zX&9dVxIZDNE#gu|peCe}^j@uGp!8v_6ltl8Y>q7;GIlVKUdu&YJg+5gdDaq~`g|bd zyjZaq=RGr0;G_~vrycec`IwlyYYs009MM^AL9w+ce<7@*D?-9R{>DE7<_cNo> zT2f$j6N;vWqChqALMzyZGUq@rf)yK zI@z9fb#ljegGiOOotRnkwx7IUaV*|j8h!g&a}eSkzLh&Uqp?gnDrPU#Z-=`V9vC71 z@IkKtp;HIy=v&_FNne_7HMySmi&6|s+s5-Yu591*i-_gAnO1*T$X|u9ze}GARo6(w zFBah>-%Cjvm8(k}0pxB2DzdHGF~oT%*}|JX{%WZodL$_w31zA?ZZHx6g1*jzZ!U`y z*^F>mA`&Hf(Sx>hGm6eP9o_1jplZMIZ>fh34Ei3>t^jj`lDmUW-wI=7Z&LM8N>qLn z^wIJ}tK_H{mpp%`pukRp1~0rc>VwaHR)0|ZyTr%x888!xB3^b zV)5Zt)gUFF^bwBI>ZB|T4E!6MME-mEp6s*X(04XY{b+|*H?*0sqa$q%RE9|)0O%C7 zf>S4vJ5T1aK$~Lc?iNo5qN7?KEpbKp14ufqw&?Z$JCuPFn*JwD*M@7PH22BePjNUy|hoK!teQNuU818~Dg4guf1$!_%J)5HzMl<+!=&9`JDehO)Q zJ>Cy-!%b~W+f=u|PT2>N)ERk1BPj3RO`h5G3FLpd(l68@IS2||$pR)*Xrx10_OTkQ zh+W3voXU~7X(69`9LnP6MhA7GVaCW~ClR&@tdWF@_{jPfip_!l&@PP{d`29=Pg`^(rrzO}`47HX7_DTaw$; zcJ=Z<(4eMi5Jq}x?UxJ9(p|tC6=1><7i5#L6s=t;O{b!`xk$= z&!{uzrITS$M_t{D7zY#z(;_3DZqy* z@~LJb>@LEb(7ZjVO3nOZ?%N7w4W)QY|rmxIMgm@kM=A-D>-3$-3v zpjdJI_)y5y5kbAgF*0Jg7B(V&35~9&4H6c!e!>C)XKrhImG(D>B{hq2hIMk|E zN16hZaH9gplE9RJE|DL>7K6{FW$b-ZN^`gcH!dqA5TgYUKV|(8+R3twKEu!I(bTWB zeoaZ<6_n07{}@LyQb4*%Ed@EawBmn*i?+)E1#lBL z$lGAFLU&0j-{;C8eP(lI?vO^)dFtcmFxl zUr>I?o(ST13m&b`V10;AT=$0WqT-bjP8BZ@xt7=~vfr!ii&i38`X@=D!m!O?}65eyEvfT${4aK&Lt>)O8$~Unm`yio2P#}Lh_zwoSkEHWnZ-Q zlM~x^{;_S_wmV68Z1cpnPHdxNcWiWQ+qOEnspt6uw{F#}U90A*{c_dXyXF|dteVqbh9rX>+f-q*mA_=2y&x zIVNqp0 zX_BdqwWT!ROlu;Dga&dzF!{)jh-at7CY4iHe9%!p*2PF0^{oh3@z)=(RX^_*MAQiU zRU{f?5@QoksW?`u(c52ob4e?t=RL!|jlCocY9@{@t^>;JUXA`Fnq~%K58~nMH10Xq zD+kRV2k?&tw~0M|`~xB#FdW3f7Zs3ozX9dr*QK0XQ6nO^u@Cn^1u~hl-_|-*yKj3% zg$zThOgK34dcBfsBPdRspaFTJw^&8bwd1KKqoeC_KJ1f@kU6o}Xvkl0F)H7DAYM-R zen%t1qup8S<(cH8wFLmE5SCC$+Bd4#f8z^QLTxkXK4pm);dRr zPEJxt)vQ?RK{agsbOLLVdqry?J^F1Ps2jgd%;6phOnW_M`r6q4#zNosx`#>#f59@s za=jRA1)$1~Zmvl;6#Yp~5O!_ohX-E`{P`meapfnLR@q-5v%l|{J$ zIZ~9xT-7ov0(YoiSQ@5_OrxcR-*#CKiD9 z57JNMwd&s%B6`eOKXrQ6UvNClT{vCTACyYUNd;;^v(4dx0b)VV-Xi#amMok<>*U!i zBeuoH8APcelBy;q?wQyE!R89c^1{T|LC}uTg7P`=M@R1cQ6Az$Tf+$)utOp#jq9!4 z<1@!r0myv~JrT%s4;e{p%|9a+(q@aY|BzFaKzfh0Ngp{ti- zDQ4sXv)Jqee~N|u8Yd;lVAK2w*+#tR(M9;n|EOnl`yR{05%35#K}I^hKFz~MGsJ#s z-yBkNZW#?0Q^bLC=*BJVbZM6+d(C=N`*E5Sg|TU1{coJt<_(>s7Z z)Ui{dNoNYy!B+@jcA6m|I)9f1Aw`&9l&9KRANL{m!nZ&mwJBfi?2x9l-UnP}BN zt)vx!KsUnCWX14~T}$oRX0~>pPM;i^G1~=1^7G7-+>3s%E_g{8$`2Jd4wooHU=X~d z(`b8tq(D~s44X0Tamrl|{z!VYML&8nbQDAXRH~1cMX81wF(-kt$HNc^eez^HHIC=luJ7J68PtI^Kf!4OYRA>oeU^|cI1LytAP3?$soXbrSsA!!(e>5_UjsWG9+{-y& zvcbFeKfh_;xVTE{k)GU#TX;-k1GUPRsg+ZCD0hs6*0+{_Y}}q2_*W?P2*3Q%e(-Jx z9C^Lpp?SiN;xqg>Nf_>*Z?@>UPF;S=&8xl^)c0wQbE*AHi{bnR^;c5u0XVZfz<*C~ zb5D@^iZZgDCOr`7-va`2;FIs{-nMoY?as~;|H=CmhG5BXp7;v&@9eBT0Gktg$@s&) zp|z#azoEtB&ehN5d?=fMOoaMv&f`?rjmgKA!{y^r$^W#E#)qSoMwf{gT!Zy9MVBye z?-pC*F^%%iepf0lq<|S*C=jg@jgfcw9+dPk{^{-7lz^ShSYU;)-xt$~Or(F5o@U8l z>wK}BGvHy2SLnSAY`tDJMnkXUVb%Ih?GoUf+pU@^&TI@ol5Ki0@$~R|+1YZmdPQT) z@#$do{UVE=8F1eBOs8CEy3(4|r|58bc@TVX0~wU=gxS8AE?Ihx07C^2)_2wPnx9}0 z=|S@1u*8kx-6X^YL`Bx$hv~!@@*c;=3-NMV>Jp)k2tFX=qvyi!QcqvI;pjS}YK81d z2N!P7wX6(kg%5{XfU$3K?GnPT)Y&{N_w0zk@Nkh#JqC>^CXC^ zmuo{}K|ay1N+PBLEig5>SDo6&EOE}$Y5BmPUW@0tLYi67qPqlPbn5kAmBV?n-{kSy z$X(mF<=Ou6eKXr! znt3~#urNUNK2<9rZ0pWt0$N0$PrqzU>FJ5&)?f*b{QMb^0j*szt=&6(&(K0$8B8tn2uZ_bzr;z>z*>vV8@xeY3b1EGYFC&ZwI>;^%e z%w?!Wg$YI9(nnVYEh zh1iC|rQ3{ViWcCE6}iS~tAsYDtMUevpH61)7pl*~^DbB!8C$<2B5Z~#5fO6Ge}e<- z9jEL-QVDVh5KmB$50ZHw+Yo>b7UfWkSVbPbHb(vJl&z-$63fblT4-l@i-$M zsyOcO4vsirzfa8Wl>uPuC+EdSb&1CDez)=N4&+Hv?zt{Bzd4O1g%xi1Prx2w&iVj@ znRaA`()o!j&cfr~{&}bEqYrkc>bX#4!tFtksniYNmhfD~>jF>4D5{}3%%rC86(6U9j7?e-|pyISZO0xI^6YWG> z$c5qmb5q#i&j8r$*ndBWa;>W4u*+SRJ9=Z1auT06(vu^QIU{vRa$2YALFWYkR&Wv! zQ6Yep9QmDVTD(OFQxoHyXLts3ECk^4!W`n1hCPiZ zzB#U&_I6G*x7T#V#zsVuO9q$l6xf+>3(=6otyv84l^?8SC%($0NLKhqDI=xT3W53x z0d#H zZQ_QEP5Mu_O#-{RAHxgM)Q(o=@~tx!0`n@E1;|3Xp93rpQSxli@aY293yXwJpb#_d z#llh5WAvn@ED@*Eh>RA3%;F6@8JUmUlz`%EE;sDi;P%m4vY8|r-n8mb;jF$hL^*q$ z?#>IYuDecgB^MY(SjU(`>~64gQ~CNlgF-nK$N{GV`gcMBq_?HKH|K%kSgeZuWe5m+ z)yRm{JwPW4AFlZ$rN>rki++P$C1F_B=xuXPAJ#R9Q64{p{(%g0FT=VRhUxYp8Z^3y zIJ%LyZPvI6pTpL}wOXSH@z+??KC`4+GcvRh+C!eBBOYu%yXu1}+~PUh_hp^PyZWLO zj@~S|3ap`*8H&(U#3uDVI}}MM$MD)< z%hxA*%eeJ}LH#>7_{6if1_Nsd?HIg{a!1ezFR9(4?-7%@tn;#X??4+UB54G2V>%R~qqIyGD{`upek?+16P=XX?=wANj zt#7yfBQn>4;)TfOlrV9hsoa~mp%3jB#{eevBW&%c{~qm$;rp};@q2rFs$8b)yT8TZ za)KUZFl>~hlunp>n|XLU!NB6y)hvG1mx{N2?z|BjztDxKVcRM%vbFVVyW_cV{=C-A z`vAjMJ_{~#ho?Di!E(hSaT&Thl)_#=*VlS~1i=afibxV8|7&UKx_4HG3BFUETLrfL zj?1(g2c{F%PD0|G;jv#|5~al+rbesWt_i;|7_S>0U$d+6$sIUy{rC;9yLng=&m|OU z_*WhFe1@k=DJ=*A^4iH@PPdHLArD_ND`AR;F(Q>B|!7P+1Wu`ytv6cus_A| zHeCFq#z_Xy>95nH&>T}OefD5LpdG2RQAjC@d+ z9dV!aad^D7ruPgJJ8tm$$5h%Z#bBAFOkQ*FKthduSLI@?+FGb7tjj_650Kl(irI*S zIRI}1q}h2fmvlJhTp%>_Gc)jKd?8+h-v`{%eqb#GsG)ezQ|t{li6*iAjrxKf^@55q zG;)2~Vh4Jkx&4KHm*#dDnGg8@aKAr$hCMjIwK#@k-yF8WxK-hvTN{rkdMW?Ri07wi zNe+kE@C!-aJ3=kP#ix$$doooMvEc`;1lvG6CO6{qEHQ|l!_>FsMhC28%u<|5E>BB7 z&lQKhpca&(z}|gg9VXu%lA=YZZ%(j5i&hJmW*mXMNC5G{5L?8d`OYA zs%mpmz3_vnBeWM21*J2${#s7?&4Lxx>TRfNz|SoU`9#C0;5?qK*7Hu*=OxKC-e&J) z%(JaXvEyIhdCae#Kw3Jtt@$E^b6Rf8nazK6gxj?8Oay)Sc5XUKN@1J783kVWV$&-V z45EbgSV48=00vD#| zMl8|`q~CsqqKoW1>R2_F=UU+nb_ESTOw@N!e#WqD_dl`lL1NWatp99uH%?@s9TTO^ijB~)+UcN|{c<6I@&QM+UQ<=kXvXv{PJR-9BiPSZvY4uPfWS}dI zBSxVI?I*QJhH=Z3=yK#n+c)o4Y1!SPzzkne+P?x*^0da@Lb@zG zlq>>kHYZB`5%1TJbKA0ai3H%rrpgGL&9QL^OVYDRdr@syu#&2PLFxe@{xM}flimnr ze5vM9FgFRglqU~hhc zI;E_^@p~5x&@#EMM3>d4Zs znpJjvyF6Pq3s+DxwYI%<^=Qh%XWj3C0tzIDVl$O)!?|T!n{9BdZY9vu+|mJCND7U5 zVEI#6(tq8mhc$+qzgU4D&u!Qn2 zr#+Uq)9FbaN2F`s>L1h8XZy-Qv@_&hu5SzQt^3S zlxLYIY8VmoE)nk*)H5J?f5*5C(88MNPf)0`4RlcdC-(D#p9Tx>KgO)wrXuz~GWyED zG|X!Y{RLg-f}`%CmziNZn@`+$B)B)y@V=#|Eqgx#(`!NGr!#!=bA9rSq|Qzo ze$R)jyzUYw@kh|v)f&|Sg=fsh*IMISa@S+5;i>8K#lJjD(m?5DqXLsEe&4yx|6Jb2 zVe)GHdOBMB-kG1>RS~rb$03&TzIvJee0U){XD&sRL(Yu?J!au7vJ0!dI4aQ)Rs0P8 zEB;;f0}FA7#!9Hufz@x2+;<#K{(==}@z@{+g>D@o76+-of$xd4BJTtiX7c%nw5c^<||r*Jxkq{Xvky$f$RFhn1A+YM2Et*fq}WEW{_JS z)5sr`sXs9N{q2&1G;)l=_Hi<^tAvDpdIX9`Ie@PjDq%~dBzx=*z}^Q>Y3?rHIE7s(Y}6GUfe4T?{P&ta9SDpD|hh6+d7zsZ9XrT$PYG z%Ca~uymq|RAw-@wq_|t490O2zADwHb9WKERSx=;uR4JPsw!Uj9c&6}ynGIQ!cUv(2 zNnRDD#P1-_n#otzPq6Yqbda|qQFgPrrt2@Y4L=?Ih$lrktCrd-IWmEBdy=tWW7@XI z9sf7yQJn;zMG7~(ap(-iMp>&hw}@W?$Lv+{bjoeob!Y@P_}+os>&q`4UG({)l$|i* z*JfMV0Q2W4EAFq21(y_0k*nX=_SIHMe)BI36?K`p)hZ;?3$>(b2Xxo2o%sedoiSE| zo{NlSOX8H@9ED@~O6pRdgwvMh{9hFMNVGsg-Y}2H1Mhi@nxjgzRs7>)K8{*!C(rOpZJ1eT=2m-yoDyKokiU;@zDRBqLw8F zMOVbb^2DSV%m3ZCSO~Dc?)_EwAm&y`wX!6URx3DONR;E9B=ep@==mifuwGF(;uWvy z-dBJC-i6AQ7JfyfH7Ll;70I+$O@#*xE9{on3grkJ9Fzz}A`fTHmq4P`?)^nHj%pGR z+!~rpDA+8V_G1*DPm+zBD)wW^o1C;sK;vBDO4O@A^5J0pw~EYlihxT^#rG`R$9YK* zGph1fl3$DqNl7!+(UA`CS)U6YW;i$Bil#)+BBlU;y`Q z*?9V$`(k!m$!*SW2v<*vGAeeq@<4B)=ff!w^pj=*)e+SzYL&j|Ok&b;)^ILRx~%dv z7$zr`p~nQfVdp;4p9ng!HxGI( zcvD+34r!(q60#LmwR|zR&c*ZF&MtTF+)QlYqXnHP>y38idS&<6EPvPZDN`rRf+?k8 zDGPyA$K8uTn347iY@^1Jd!I8`&msfgg|)5zTeSxC9MfS#IJx0W689DG{2tct{;#pv z%X-h-P2LywTu+ySCKw4L9Z!cqN6?udi{~AERi}0Oic5k@o1Ds+OcUb}tR8+$&5ySN z%-d)>rXk2R2lp~rAJd+vdVPh8CtSG-It(XyfHFkLYZ}S^GRq=E8M1^V+qu$V8w|d5 z!{55_c%{(BVFL2ieSrm_15_wg&!>L(h3$HlPHkVtouxf7a@LMLB`Jg-P3Esz?1HMM zt-&>GxrQ`u$i$97H5G09X=HawV@)!AYvc+V4U$of~vbHcWoe0<|S1imsh$;?W|Y$Pa@cPv>G}8C=Uf zu#|2@L|-Vi|5&j^X}@|{)89bpvWl6vn0g9cYmYP4;KkCvzYIRlrCp(#xqfkJeygWa z9j@n=!&x5M5y%tigyKA_1u{o!*8DNJ7nm(AA2uER32GckmHy02~N4pW; z47-KemtCYdL?f3tvI*yR{;K}blr^_1r08jsWyQdn&*4HyeZy$>uh?JERQ_=$Af>6E z#24?Ktt$Ob7kCaEbi_`^Wheowg!9TRCu#^8mNe#)WZXur%DelA*+EvNF)jaBHHxLu zlZ5B&o$GY^rM#_bax1UPBU^NyNdr3M7&-W8$k(*S=IT5R#UI39bnF;mh*Z#cv2bje zgytNay%;J)$IQu^1shvx1F;OOp=0O}X_Kq}O#byd;RDm?W*7?XBN!Y%(<@4UKqCu4 zWI!@Bx(lnj4NO)bSqCUnz=x?abRBPJX>bqH;Z+IjHU7dhLDlawr^JAWo2)ANPiWL~ z7#x?WDGb+o)SCRN|+8wE3V zOHzsge0+b{trgNH5t?D`3Ncl6GhlwrK;8TNW{Al~e$m7}TV;Gkb8MLn^X{hCj#IG~ zpPA#tHPtsXzN$k#%ep;Ud%?um&uHdV<{}|vwe|h2|~68Ao> z1waUbY60K?&7s}dAoyREQQVy~Wd;P5DM7Vc=kvbcMEAYIK&}Hql}OmDj1Fsl1c3n2{$qbe77;}k9UuDzrpQXljp9er zgUdtZu_9hY5%ZAqRf2+C#FiOz7I{nNkGgXOn^6fnE)z*&^9Ii9d^KF|rDSAQ&yt|JB*`Jg~#O$xhBsU$2Ooy`v?L)CtHZCrt0$wtAP#b5= zz_@4r`)6V@yDxu*!OiKsNx}meHRX_@#$uUBD4U$bEI?ZXMSo=U8-!jS=aT;BZ=umJm?+QB_vY8_(N? zT@NO=d3(5nf#joq>eBo3�hjAa(Zu@NhGAjs9dXuPCa@QP1jWny-Ee`>Xre*@IEm zMu{Jd&R9y=2_;UD0##nv>2a4nvFfE5ynis{PzmYb}ed2VXQpjD{KAh=D5sQgKl5$ z@JACsNJp%srlej$WjTnbyS}?Q?diGc2g{*?J8}*AYM~NvQj}pjPDFhF2g2%DbpjFx zSCH%-w3NMnLb-M45d<|4O}b6{8dx4%}Emp^4vCS?DW`=NZ) z@;?jV>++cG$II#3k0#N3J>?7=7Nat7p~Hx0wU&)9kkp3M=WU3CXY&VezsMdnf>3*s&OF?!%k4m5uHHY}~%`0#;}nQ{{3?6vxew`cmO~ZLbhZigV8qAB*0%xpGAOFs<`*-nyAslvcqC z7p0YS{WWj6=HBUi;N`>>aoF@x_Yt)z{ZwNUE9}NcbE#+=a6L>)bqs zz2YbxNVu`z_u|X)xoiD_4E$?E0Q9U{J@+FeN{F$+zA0PGd0eC>pfOx%kxka1eKyGc`Sbxl-sb}lbFz|MNdw;tL~(aU2unG^oXn* z+J=cZ9tI~mNstwq!^Hyn8pw1jpod^}5Xnb+PfG|rD^l!%mPC}tu3PnFLAFAPfix0f z#DP_UwYd(_G2%$REZ7ls^ZUKviWGGKEjy@cS2+mN)(N&hAU3E?(7m`-m|6am)jbge z13LC~7LsjriVl0+V--YX+PCZHAgyHYK+!v!XFQ?xkAq~bpbZJh0GMvRjHYQn2OxnhViq4`zzBWBY~#BkqByFy4*e_O5c?TmL&^Mvpl@-j1Oq;MyJX zB-HCdO{A_#PW0UE|HQ z+ccB1>jUWl(uTP$E)9qrmA#?n8quy=@wA9@3IO1sT@q+qoGR#jA8T z`ZDnv44`1v!xo$uthEHR`r(SBSy{5^8B!qgL0H0G$d*Qx#$zwTPLO(el#WTprcheu ze$haTKk)kHJSl@LY%rNlp&~d*W-?));3>U@6cHm*3>+q3wrj`s5nMQEmweK6Pccqu z_0`_SS5zc8G5xS_Nc^!5%(gsaF|ONee|{teOZF3|oap0X5jB}SeKtODVG|^t)mQx; z{JN&04N>P6f+(8 z4x&WgjCSpoN(!wa3FO9Mea0%vS0*giP8EFMem{^-vk@&&^xvURWWE{h{-+? zRp&>Ij);{V$PKFIe}`ZcMX z=A0&lw%BRGI8KVA6ebdX_fvCMH8IsdH9`boPodh>Iy)BG9iBc9<=b9vcQj8FXO==P zGKw)BYaXhE5xI4ewwFLB=J`&OLZ0mN%BE$`c|4|&c`Z&R0HObQYH_gkDuDI-E0y-$@?^w@=bko08#8-a*6scKw zcY>1iuEB7y+%xQfLmkb+ICXc8rB-}Oh;v>nTnP%-- zo=HDB-73^EP`qrYODuO3HU71NKc#UF>SN=lxFnY=f_Oc&y{$QtJ3eU=q1{l-ybdM2 zRyJfH+=V^k3XCn>3>Fx$25(!Nc!Yf6s+E)@0i5HC{F2_rJ*{xhiXqbLPObAVf9mA8>;t1T6w9VkEIE|e|^DjL&RPt~Li^N5@&6KEaoOUXZN z=HfjW%7Rx^B*qV#EZ_xpI&tv)`_H2q(b6T@n zlC*D1wyun==Qd~kIZTVNs#WSjgQxL8Jeco~OGkhkHih(F5~J;-xMY&Y#N{oDH^5If zWFMGq8xjz_mZBIyYrhV-l3Y~f_*IyJF>?am8|RgnG}9lcWdfkNlRlJo5-vQIxWO$A zi^VAL>oh1URzn9iJMF!|UsU}`bMrRO4 z=fqAOZIHlOfy#4ZB%3umL938TAFM+O&iR$B-jM&nG1mu=C(|P__7rC>j52QE92`T5 zw=tula4AZOz>pNZCUd_lSM=&$?At?;6YO;m5N)dZt7%146}(W=t=sAVUBGc-jYl@3 zVs|44yoQ!erx$*UZmP?9w=|;|Mm>ios@YKEVBu8CnffzLK3E#!j~Lv+V9x!OKB&7N z@E=mP;S;GXEIE4w2}MW*7ka-isIkIDylE-bMh#q?OTzZfYop{0?{j ztl`1V3fg^LfBi_ElRUpMBzSt>qzCbg0=^^Qet(|CB5jelsEN>smWK>}j{V(fD-y+s9)0tzka zwKR+{EO1M5(M_*EAjdI)8u(Apz!-p*{@;sJi%Q@`7Tae-=szeD-w#|;(%R?iTN3*h zYKk8uOnOeOY84W#s8t)fAe?akC3ZuPi7Y8uT%#Nmsx=o=U>HG6tN+f;?q2Yt<)!s}QJn5)%s8w_C&;_cxS=~k?Sdpf1X_7fwssua0{^RpZ}^j5 z!^U9y{9HTY5yW{P^4B>k*IA#hQ+EbBkckF&L%zAa6UN}ze&|yfE#a72&2Nrd(HbV$ zYxM5clq}tl#}EDhtfJFLl;2>I7ovf|G4CL>NdOC~0?K$oqvKcDp<=HWdReLkNOcnM zAJsGHSvx?-3CuF__H!io{C)loHh-KLd?+?A?>_A?6pyCFe8^7$lsO3?0tW-NO#+C) z89>XE00yzA>j>aud+^RL!8%Bfr&{?NNET&OJWP}nwUjEPqnY*a-sRwO`^kF2v_!!$ z;EGcjz59NzH{D8~{R5v`Z}nCe0!Z>NKoHGFBw`CfZ18n_Zgb5hKycF#l>8S!4#ZcY zLuPrHKXiRQJd)xSA8~Dbta_aO^E)d#f@WWqV!^f)y*_o2~ z!ox1D|f*al38ZiZFh}=8aqCeJgpXBXgxxjqXF8~R99$X3JumCZn+&tu`)$czcJ9DzH1bw9l=CV^h5|Gq*U|5Sf!T}~pkqcrz zM)U11D$M00g@zY_=`N>xIOYG?2HTP_y)N$uG-w81`D z#@RN@Yw`bBngjiw+7jSrPjpu!ma%;aCDRyslM!q7Hxne{1Sdi1!HW+8NmHr_$ZC!N z+NhlIbOh5M3YEP0e`UBR7YSYLSSkj@Ob2 z^Db|u!a20_6YTFWkORxVPl=jz4ywkv9t>?wBd~LT%SF+K;HeKl3)UvnVBq@O+(8v$ z*Z=gxiq)D*IHNzj`xPj_L;6LVz<|shRWMzW@v^92a8&{}6eW7$mC1T6gzAtlv>?G2 zN^5Q*GTF=|z~glO)H|3f8CFSxjL!=L8kd^rZ2cfsLFj!9s64n6e{$LKTNM4TcIRmP z1Cp=d&Yngz-@C^Uxwn}i+V7XF)2L7npDGHf{Y_r5DLr%@vlwu$(kU1XCm8U|86JOO zC#b((A>`NIsP()PNC7}{pskqYPVVN}AJb;|^I3)+Icqnv7f%4hEyZrY_tL4kM6%uC zE4l`w9z(!K?E^Sd9=#V@)OO_CODl5E)%l!VRhbT)q#JT!Gv~NvS#;Q7U!{bFowG#Q zwIb^8Bk>nPumPWldoiE5+ep|0n+p`U^}~yjF$UaZcOxKJcTd0}h?IOoe&F4}j=>xv zv=}791{WrPVKpqS^j~|!I1%qbI3EG7y&N;I#WCh;+ph97!~cW)Akliuu)oxoDx4Oy z$}2yZWr8hoDv+|_MJ^my|lZv!INKopx*D~f3SBt{hdNs z0=wVs_XO%W4jTG~OXCRjyPy|RwTI9#)ZvpD*y4z-6|?~lUg$gO1BLOD4`*UE1e*o6Ebk}kzD{llIphy zBFYhqD!aT@&GY1WUeqqpTF4g`%V(MD0aeTc7ho^LOwL!Rhise?zTbg^(Y+`K>CN2VMgyp0jNr z9W_Mbl9;#cy8GBMofNoF-56;CFG-RjO}fLg0}2-qa{i!pbC>RkdG5Sr-Hn_)0UW5O zk4bVzRgD5mCGW<48D8Y{=$t)h&OrI5x9|5*>HahXzYP$gm^rwdER#yeZ$|O-3fOX& zg$LSKH`^ipq^CaoW!;FHW=EQ@FyfITyd*@z{7vW@274;MU^o_RBoOTPq)uKYqhrQt zHeUGRi=2FH$FpSgh9URv@`L+b>2McH7VXx=xDM5sP+bW;{kE4l8yS?a1i+iOOK!G7u_Ia5bAK>=*4aD>3(7thS1pQqC2nvpKtJuMrWIiN;2o$_{ zx5~m~XU76a4|)!}g$;IDohzO?I8X#XgJwQI|3DwP^s#OtV8RkgMq*dPq_^dOq?Z9) zKo>ZYU2Zyvg*eTiI^V9Yj>Zn%p|q~%&W>(P!!3GYC_ha}eczsz#+FA{yLQ1rwR5Ti z5TUe3{^ki#31^!LcqgS!0TM|$H zx0p$x2gM5QffFni2GA)OK!?fz8^_u3L93*{IQ8Qz_Mk(TBaCRiKb|TE@Mrfz@95Mxe=ip01 zpCP3=J`1@j4b7`$`d6S4ZT&|-?U42@g6(jQA4AiYd0bO&-e|BED7XU6ae+qztY?(B zM3%(}!W=6k)5T=@nLLp+vDkC8R(W%SzF4D7m>Urx6wFVOnrMc33)*{6fd~&bBcQ%l z$En|Lr8&ETq@v(HvtO&i@X${7zu@D(uyFLla=Rw~I`n?gR#53uo+2!h3>6P9^KTGQ z5B#$pZ<+RCwHAAB?d1WhR`lTkyfB?bSEuj$ax8@ENS47adu!U6YJy#)p^>?K9+TU| z5JJ@Rjf|Z7H&ja|9>SKZZu{pG_HnR*2R@3*t$H@S37p6q`^;F4!pg?9a^pzafST>c zm>nItPkbvz0^04T6Hz-GVl1p=N`FZwWA=~gwO8F^6VZKNU=RFwUZuJXQ1bg>uy0N)0JQDfnAjg(~&*7vWjon%M1zgXM2vm0*KXZ{ybovPBCQLcaV zXu!q3i8#+VzUJDKR^Xly%sy#}1fWM*z}jLB__s2Map$)tb&m+^^vZe}UOgMQTg5Br_t6VK5s1GD_!Um0rK7_B!_-Jn$zUmX zR_|SKqxSWBk*c`ZSC)*8IVV&>`5hS@$zv7e=`+6aE@4<4)0JwxDQi2O zg|=`N?YZdN^y#hg={C-oErP3iZw4Cu$@=3yE`0jh(THf4>pQw%^ZMz{b4X%_H-g4G zdVuJd@ox#xHgi!9#>_Ku!X;+t1BX|BI$RmKrouKfqLxaCO|gb;oT3hzm!QithC#4S zG@$V^y*1763R*g;XJCQeK7d?P-l4lkZOfRh$s6T*hS%|j_K^~CnHvv(XJT1m#U8$v zcygk&Tr8=DNr`P?dH-k7x9hK_lEqK#nwi6KYMLH6iauL9_r^S63k^Zrkge%Af&WT zu*7~5S2d4Rl6)?qcRZ_qoM29q3jRbNG?TAEHn`y}>-lZ9{o#Q+Df)H2I$3k{T_h)3 z_rS~lzrJ>=dUZb1x)-j{|66vZbzftG)CCEC`|o=fNYF1V4ht}c8mxe3Njnj{2MbfaV(&F!dr2iw>Gl6Mxz#nY zz_b#z^#cd(F}sZXRk!FzO-Hu;(5w`$cQtoHw|CZSFEll_Ng4iU?ykBu0|oPX(14Gu@G)7U^&~{krB82v`?{nZ9M7eU zGn2qCj;dqYw#@qm3!zCeyw1_%lqy$lE8qwqEx=dwPq!jSj^3NWDZOCsaRxY45N@el z@+(U2JWUK^=;P10Z;({LoMYt;wJLfcm?mjlPkhtF=W&v+D4H>kM%aSDCl|K} z41f#7)f;2HcZe90DxF|#JezztQt8$`Y(fsA()df5kiUuIE)U?{l}n-kcA7^dywk10 ztSOsNQ@<`)evWLAn4^U?AIaKGUWzxA0Lrx(`Z%inJpQ2#DN#As9Yr2{3-sONhH<}8 z6&hOLo}qmXwDy^##iQC&Fyc;V8l)4$g8{#VCfofI#vjh#rsIEW;z~~{qF*(EvClT? zOv-xqk|g)TGAApY9!JPq8$05=OEw#n+6deC3l`?_zNUeZs<21cx!8z{Rzm8V1`!}t zU%JOCKALlQ(2GFsyR$vGOn_5^I2jK2Fb1=%mW%OUR==0`Y<%h5n0m8gLA>oVMc||J zhxOehImB51=S8S$25t&gbrpQ?DfT`0+av#S&5e_()4{L~E)N0mES=3q+@%^>K`w}! zr92AT&*Ht4tax2fs9TO~=9*bV^xdgv#H`vY=8%LG|}0MYCq08N4WI)l)W z#&Un9GqSN0dJ!`VTYIPOBf34549H)Bn9RwFgv{*(!_}8a$%TrJ!EJKSTeeS7G{`B7 zV&T`cPV4AwU~6RrTLWfMlB<`*s93HkrVl#^1%&koB!Fzs|HA7x2I~^T+(|XPfM^Vo zCY%z4L|*2{(-2y-h>AypkXXpGcx9?caPEc{M6R;2Ge*jZJ ztiR3}gGHIJ{s<4T(3AE-5XTSrJvqV;#60)~$O4}p@f}#5X+HSv0h0rn$tI1!sB@0r z)<2j9(&!%&rlToJNSP>s6HnwA_ME(i^0Xnt?GMlvji&s_^9)!a z72rJUfC~lq2OsT8okVJy^&1z^xJN60B0#tjT!>g=YWP6(U||SiA|J*zd>CeVVzh{W zeTtGQG&+^RvJd(d!k}Gtm0G3I2ke!au?Jy1a(93#lG}{31D4kQhc7X;!8w0=uiKiLBVNTIq zK)gS<%b*3T=i@%#1f0Yf%Gc$8yg+GyQIie+fzgG*aEy_LGJ#uXEIZ~83UL4H49(X0 zhPW!sTVff$-ueJ+6xWpK1a=Xcg{?xL*5sy9<#UK&G6|z?(9ozKR}9>dOX~wn+K6{! z=rb@;@&op)eJEEHUM?7+M?5m4y*6wy@eabM8;6q(G|n>6Wf*&$fG0424r+4#6YHkQ zCMCuhp0Ghtr22(+p%7n3HuI4m>WttnESw~XqHGC3>yW#DFE0alTmjY-^&n-! zV>h%UglLe65UI8d!l@=SdO2SkXEL?1ILTG_xQm9U&1As%#C%ujCRVb>d)#x=54%5N zq!eV2p`#KOzD4{kXm;j+$cx)QyxjW5 zVR-n0qvtFCe&&CXS? z#eV5WrMQ3`KvDVB(vrkh>ljVUeo^94^OuQIPnQS7%bH9RU6f%8eK^aeJBzVu#v)vA^`lV-;v?!o5fV@MaGC z&<~he1*km4rXX;>;%MZNwG@D0a-k``;cLLbd~;A*1PWhg{vI&q?!UQL%ixJ4@Ij^D z?782P=YGpS_vVfFUGV130&lV`?k?PA+FgVu?!H-EfW$2N=A)I@rR@4IAMw56e6r&C zs)zfQF~ACcJM+jjMW2~~2!nmP_}TJJnEf}Pgx2l>1#pZknhV^g=GAuqy&gF1SqOS_ zBDvtj=JkF}{01!SA7D~U<@s)aQ%hhxZbWcNnPD}sb>KY#vSkvdMZF906Q8z%WCb@ zKXy(eFex62y3wJe);LOl2c45o*sdB282si=u2~0E5Jyiz(wXe$!W=<3CGz>t7(8wa zPRsXy#=@rgPIx>0zs!AmS5wLM?f>^vAlNNY0;1j8$7AG;O&`1gZ!Owe%M*dXG7`kzVXU7ZxLG&ad7j(( z?_my|uUncq&lP=8-l*$JwFw|4n@K^!cn$+a_h1%6#u|i-=}jKix%aoaB1SW^_@P=c6J!!E9=Mz^Fgm4toccOH^CV0~;R@I3*v?OMzg?|= zl!Z-#BTR#jH=#1f_qc;K{#_T?^z+pmCdSdq*CHk_04m4abq6zE5^H)9tm+vxJ+mbJ6@_RN(EXy(Z{ zVP`jUv?rJL#FfBIG4;2wccyfl#_C+mWv!U264B1RBLtkPE)fSJ)EQ3C;#9+b$~xbp z0&Y(4jzxWmK|$b^nRgw^93+H!3NGe|zeS1e2|nS(3yfKSci z4#?=zs75Qif;t;d+sW=nq8+>bN*}40YV+hp^O?9 z9<&%pw~-8_+>4%-dr`?txz{;=RV=C}+M?q-U38?Vi-BTwG2E%y1+1;LkAxJ7o6@3T z2Fni9<})3kbu30$8@Q*TXe|cv@kLK{x@ee8ivkfmFu#bJjBVNk5b)(3m#nEfiu4Iz zhTg`wKHe}_CM8Fm5d9>&Qd}c0`J42Pd>^%~PTP1?Yg^b_x0Wa``iS9#m79U4< zYp#AH6B(w|Eko3y=Z!P~VrdmC@ppm*7O z?GD0Y?!Co!V`~e_nb+HY8(Scs&|Mo_w1H?kccs-ew9g7}tNAr3cQm#An$5MNnVokV z>${`%0J+EBtF_wJ_SV+k=4Neq?d1mPLPz(kZQ1of1%j%q*4AOal8eUI-&%TQ7q36rcH)UMS9`c(YS~d+zShN(* zQi~qdQw9d>$ui7;bre>J1k^*Y6W6iRrO+!8icVBbm;oKsNe zG^o$9kR$@DJ!aB~Kg@!jC~>q02iBg(thL-Y&z1eJAU({Z*A`O6-+))_MN-)Ozt5u+ z3%qZ}Xubdnbtq_0fQBM>6PzIG;zSCCDSv6@;a88@R5uPf=uCYO0~b5mR-)if6?F~Z zLjrIJ=Vd{EkHpqCvZ8@-roW2U5g1iwH?6j&tQcz|OE^d|#Hs7X zJ%%JtH2j%KjH#OB!yR4|b2ZMJByM?s30VF_uA#B3nVcrsaF%Z+q`OT9qq{xblb(b? zBh`afu{z934s97U=i&naiEeY-Jj>Z5e1Atr1hvveBB7NvjE9F!qy-z>?_qSC=lVvF&^LmFhW1#XQTUR@qrrWX zv_QL0e~mm4`f)K8J}$}m4~IGXaF7h205iVRyU5-CsjJtitJmqdH8WCv&3!tAw}K4o zSjq}8VN*T}UQthz1RY8wqk0Oi{S`YHa|dTR%n0Rs0&hGx{d3(T)=Pe|6n=&oY1^(Kh;$1~O;hH%27JMq*er zDgtw?1upO-9{P`XXaVCQFv->?O(e9Y>i(j_xwSdnkTeJaDjAQT3uhROGoZ~q*tyMzSkLY^q0DUhXZRKw#Q^h&;}EBR`#kv@PKYp&XWchA*%ztwG@^bWp0 zf1H_zZkP6}#0WSW8v&hvoj9qdmYtN-yn1&LD(qrX^HyxUDZhyQpoJE{fK-u$1GKL| zyC$@NYBK=kr7S}1gc}U|LfaS=&B4G?z5CPR0UhB=)3DTEf)Q(q_jvXUzaYuq|BCHC z3|&?R$~qEwQ%!A_9N4PvR2T35bU?;df3L_6m!+|G|MF|)AltuN$s0L>7}yz6;TQ0N zSzA0@*q;>@D1T}q+eegkhZhTuFH84>gij8~k)RHXcPMUtI8zzy`GcMLeOHl|H6#lT zJQOB<{@BhOA;me}5DPeT8emhYROjxHUSf_v8GpcPI(H9$aEq9m0=ZtdGEMKxe@!|+ z&QF%0iB~aqr?Oe8XyL+Uc)^=9UrNr?(-+3fyYP#CFLb-OC_K(Vqoe$J;NO6$bq;Qx zMWvhIrY0S~)&;frN7v?6;F4c$U>P!M)sFb%KUVfHN%;y#skxa^M|e`27A}l@|2i+Q z7ksXMzP##@+RXS>f)y+Fs`2ZPfAsjoI(3WVlcC@i$7lX{q`rInb2}R5`{H9SX?=iD zAxB|bcvQq4^}}>gkvZKN;&1ONq@zr+fp@ZuC&X^!U(K1rU;=Z?Qgkc)7mndVPFb0G z9qpLRzQ~AZ14f8uw~%30&T)>j<`!zsaw-gu^UELY&T;>g^(f9B>6Be~f3<^TCc}*8 z8P$Ob{{d$M`42!;(%Zv88y&CyY0`hk?MI)L{yJ_y`l!17Cqov^+qbFv-1K?&xmTi% zy!cIC%a|Ysfm*``xw*Me8yvvBH$FQ~nJ+p;-0SJ)Rk#oS4fJg&+=uCxQ!gGmuS**1 zmq_18x6*LlA2Nt=TIRfrf54A?z}Fb=r^I!Uv*0+zOSrq0x(JhhbR$ySgf9#qm?&=w zzrT;Q+UnBoQmqD)s@xL=&?HMf@f8AqT89>{4pBP`Osb2Ev-r5YbvAYqIu~q0z5zE` zi7i>}%P(i@amG}nuMumUI^1&+g)q!W&$7qLyt=&7Of2d@0m!|l3B@&p_ znpxYwdU{;mzdAmS?VF*Ho-ifIlHo*j5%IQ?PyHT|oA0IkN!J#9r4Gp?B`0&)Z z=g*&4C-w&rG8djrQ)bRE7GMKyD73vAOsM-=N-gvc-Yurgo(47Z`vGOX_k&qFJI&T) z4;WdFPAeYTdOLvFUxi6_1!B~WnP*ow-dbvX1EaeoQxh)akk{Dx z7S_Pc-P-p0`p(*}?GlTCCSR@X{=SW2T{1K<>dT#JFsRBAXO(cNG{VWqsJdDcPRmX!l4;1Dj|bA;gT>rQoU&Z_{6rJ3 zE(pP)!9&pIRpMaOF?~mdXM#vZiomjGS2P8 zs1mUij0{7tP~DNSW~uqsHMS{!#Mp3vz{%?58Vz~!5K9P_X*V{6NJ9==>YYe5^9pg1 zfdn_@hO585Pj ze^Gn{3^_;f0k80>xA1{P$82@pigG(Df~VB>@iKv_`|-(A{FVqJxzgk*w+(hDK1THw z(LpHa`&Tw{$+w6L>-Axg$@etBW3+!nyT)`Be?(EY@H@w!c2il=zPA*vi+1dSSt=>d z9Y>Y$dD0*|P-L@DM@Q{+&xEY}dJ`(lzc
=9MzgcTROo`~7uo173KX)ZmA$u zN5#8+YVzPKj?+i*aJA>IlXOkh4D-b=VOVGdW z3>Lx>*t^F_Ox;_0mh6enODQ-_?R=ZrgKS=Tff~THIgMJqzy+XmB1R-4 z6Eet-SS3wPmcS~SL{I3NuR4cmc@C-+=aW4%2_KD+rxJg1W^a0@WHt>*f3xu8pa$rW zD%%z?F_gr3J^~E+B}Zt?#o3#%9Bs?#beRXMEH46g<%GW%3zx;y2u7+&z-3e-%FJO_hoso$SbXCj};^=pDut1U3*mOLzw@!fr*ePvsf8#xydh8R?QRQ=!vzr;W9P3L9Q$gyAd7bce+PU zW4QD`yp#>pQ1hNLu2;4`3}Qq>rSBi+Q%m(lW$QdAM`1?hi+kTL+xsSa)8rhyB=e9U zFfKrQiQaM_JEPDVe^*<8APEkQY1|f_ffV5o49#%{!dmSVt}Jlj7J0q5KfRA=jmYAV z+aC~<>^4qUDlLCD`-*rg;{Hn=5?ta60>$VQm^5j^&QHfV=!5gB!!T%g6ZBn1Xo$75 zj!%=_)(^hYpM@76+S0;_W85J5$=^9>+egNf2oV4g&j~01f3Ui~hM>hfPd@C>Fnd5l zJ{~BH%f=fh?@il7(^J}PzTRVC0&Wu!SKL4Cqd+(P&LF7<3)eAp+|R4Z!h@>D!8OfX zm6$tT>6)`Hz?0Qf0YnJlVmqAoOixU7Rvy?Y_k81<-83E(k)~qoTkxieaJoktOM8p7 z`@iGb&fY`se<;R`81u%hJ(KCTR8R%cHx%8x;1fKYuJ<$P_I{QUWw71LeI+-wfV}Tu z#8?s|M&dLMF?k}er;LVikB;C_-%mq$&MNREu~#UAMSLpu7g=+3IJADwA(4o=`dyf9 z_%L$l&hMN&jBL$*=k0a;k@YB5;Y-e4kmL6cm;r8ee@T9G;Vsk(-ohEq!h4`2VX#ga z_3;3|z~fYo<|PCwkpcNg#*=W-&tvRUm_;YBOkTT!)fSrR?$`GlP|kCD_*R3nk>QV`g6Doc>%18Q9S%aopOVw89 zbd*jxf2mG!;yz~t&*z5?_2N`j9|DKO=`)+Bj?P>$)z4C@g+a+&5=~pEx%wo&5Sa-@T%wV1MOWCHB$LZfWNh75@U!M_~yy%gnz#;Ky?4e^#N-ct3?e5@}(6^}!x z0C`4;F6l{YV6W~fF8I1xc@VXyo56;g59R*5YWA^6rzPojRP9*@T5-r>qB4=DF%{UR z3n5m8jwnI4LxAHBtT3i@*^xHbwWpx=e@T@z5|u>j?O33f=@&0vWUy-CUugo8L@oqB z_J>TtUJC+~;M*oK^}zy+6B45sY_2zXcolgV75S)ChkFMZEr(gP_f}Jyzz;K}g?snl zZzpw?)Qw<7@YyT2li%V#lan6uh^c>ipJTWq`U@kI@u&1d4}rk-$Q@+tHGinWe%M9u73Ih$%V?@f3GhAR_a^pFFjiJMy0%(IPZq1${s#I<{?b%)w9hp z7jupRa@PDo=>ZNMe;|AX^zu)?cO<+8tRm(haO3gefx~{hs1(T9FYTSKCsIF634r1= z;LeOhF?I?Bdv|!~f>Un%J=|ZGWX^>awE?Pe0s39^VxzrbU>ARM!c^x(fBaMpc*|vQ z{4BN%Za@e2p-5p9>3${xwn?S>0ViO*bmI6m=I#V+MDPnvt|@l3y1MsZ##k7{3YDvo zpQ5G#n3e4>l(GueNTHsr;4QQ#uoayhtFL%&AxWV)^}O@vbb5uW#1C+&F7z=C8d3=B zqK~0#*f@nus=rJWmjDQ!e<`vl?5kAgFU>7{-LxCHJYG0YA9oI3+>I47x$#MocMCa) zMO2256-ui61HgMNTGzwZHdV?Jh`9G~JO7Zb;_k+)xVWQ`<#QYo4R1ROX%iOm6xMuh zf;UX?#Pgn#*6r{hqY}zTNLBO#oH$?zZTOsktH*!QuJj=W7h}B|f1lCk$bc>(uvKRr z>Sf6%IiTLhWPt16*>9N7qp6kW)Hf;&bq_S4!gBYk-Ph*M)OgThyu!%wynl2M{9`v; z2RxF_QsOIxM{C@tqZGC|AE|IW9V+Lll{?R0JUggluz+RR&p&6+o;_R0o|m)d_$xyq zEkh{HUS!qsgZluuf4g%RM?9~*SOkJxwtpY03UQxwk5-*7K|eHC1x`ErXH`6ftJVDj z$?oH4X3hmr*oXq~gaW+45dZHLnFhtIkj(-zY(UHsYEHmrTdsQOXCfy|Y%NU?Sz$t8 z7A9cCp4h5yp%iOUanz|{P0TF)Wn9{`*ZKloJTe>OJ8uHve*@YjV8gQ3eZbrT7-hD8 z2zO>l2|y*Vb$2J$1sPXhcliS>N!Z`zAxw8snjIF!BWc1!lsv{Ls0L5(q zABGbgv-T`ZGR~IZ!bnopGHbqAnirO3CV{@J=)C+vZ3w~3A0`L5jzcNw3(zJZcn?Vd zj9VNj6ee+he;LBB`c0@wJ_&-bJR5!pC_FqT)G#-=4>tI^fulJ*$AS-lo+owe#+K=G z(LYXzI~eapWMKS}s)jFK;f00Sd8sXKJrjEN$Oc~L-@}wV3b($&nXv{((i$A8xWSnXwL?yQe{Lk@J1bvGD0eRiNjH~Cns}$& z+Dk(c!+Z}Arbx8`hrnMvpls!$e5bnAcZsB~=9yxUq`M^FFgMOYgc*Vb>EkF`8~|3o zTyFvjd3E`i^yCCNhWF3JnKrLn%0Wg8j58DweCe<7BK4KQq3{I1Ujzghd~MF5Eb8t%ZfGj&hw?5UL{*f-pr9c_omr)C36Ciok}A+_Gk zAY=XI|PqRxqFUh>W=PG!q*oqn|Fz4ja4!!QXN6-CK{rJYatk0m6yP5B__w2-!1(}cLg0(mjD;8&MbvJjGBZUko zz%5Wrf*hoP+LY+3Lg+CU_n_u%BC$U}#@CedaW8g(cNQ#lYClNu(kOexRxwJqHG&rP zVVQ83;R6F1f3DqXe&HV*Dh%Vzho7Jc1iCq1`sSzN$kl}g11p{iLCLfY#N0bm;$9QW z7l?dJylp;KTsQhyk>*T}%`x#LCt7eKR#hX;F>u~WVS7^>#ZRXQ)`udk zbdmP?FDrvE;>&)jetvWL?g|UyNUv73JHqlV+MS?He~j#YZhH~CS8y&OcJd`|4WIk=it;;LG@8>96 zx%r5NfBl^z5DrArmH&INa8G>sVxL2f=5#!KM;MJZ&?MT_j98LL_|Ub@LqiC$Iqr<( zr5?GW(~W8RJH1#v9>k=OSH9DzFluN(jNcEN3cQ9~0_fCOurM8)3s90FY`ld=JPfLJ z4cu$2in1xHMNbdRNBBv+Ah0>~Ko|qY9q2*^f4wbW+<~c{D`yZGb5bxc`28C6IEr*a z@4y_sd+Kc#l(kdn9JubQs6brCz*u{O?7r+`e3ZzG#8wsC*x@~ ze=3{epU7Ym$va9x6S+1PU8n6-`DxYtGygv-?cpHidfM4+pl^ZCc`@?7JG7AWW%>@I z(n|z!N!LDOFN9cQI{x<)Ky`F5-P_DZxgwJP1`;1aDu9dV9gK%eWnjeR=zt-MBVzUA z;@t&}&`)uQ7Vg2Sdh-_pHi$bF55Lcuf9FQqRQwi`J{I6G3jjw{iX6ccal&P>Nx?yD zd{40O7AeMDkH$vB8BgRc!77MZQs#c@Mbp3T4fD|?_Qt-e`LnSf0VA^aPQkte636Yw zc;G|XXNECp23E=Oo__}_g370v_ff`tcFQS}6-v3X7`ZE=NaSPH_wtd(#;1c(8D zV&8ShJdyOYo!{4%m$qI)R*DOEoxz(}-kvkFsw`%i2j)mr9L7eWviFnXiHT8x;oOXdYpndDBI~Ccx)WxEw&&`W6e0Me|hZ+os!QJhtbmS z5hgKwC%BkAgGO_DhhdETmI5^^Gl#7KsOL`llBR1b6Gz71_f#5e#)L|CLmfVQ; z#wYZ`@=exysEs^%b>@Wh1Au~fcYA8ny z<*1<^HMFCSW!JInQomP&#&?+bGHj_&sl;#hwPX5@^Cu>ve;h~h+abrcX!>G6ZXrW* zkVEfaJQZiAbFXpiczsnPXw8P;(J4l`AB%kcz0fYl9R1xm0uxLQ7og0^K@r`+x^~Yi zloN^^Oi{3e1y%Q0$b8(dH$4UG3Yqb!4w&4ZryVWUZ5%EXdMx^&A-vLAXh!QCcfGx8 z`W^s3vn#-Me?Iz_4Y2{$-5xf-QNc2Tl6Esl546`00fY%eqz94E%sn0KA<|~St}Cj% zO=VMb0GaZL%_HER5xQqk8TcYOH@EVzD^=%?AwTPK3qfn)k-oR&8t;EJIduo3VS)`g zhR5n3k)LYYyV_$0ch#pO4W?;w22#$t>0#nfZolZ_eGXW7xXZWNSTT>kW>~!a z8o8-O*W?HM15F*);_d=?K9LwQiaeQ06If*7bz~f1DbR@}`5)dOw_Glwh){_p3^z6? zoSzEsO~K zeeM0qfA;3~TYo+GWjg)#G`~2{6!v)L7rN#qWl*7NxkBTPF#A8di9F0GQ!P^Z+sx7~ z#>nM84wh@1Yb(1TvSB@a^&I(9S)(tCxG4RI9xw0kVcgOYdId095n;)ghB=$HV?^!o zQ`S6(&M5=N5%{aKi_7fdG`oN^34ZD*KF`k2e>3F3FWEiHx>p&f#{nQ(Z)E%va8W45 z`q}SavcK^M^mY8w>Ed ziBLKea}an6)PhA3^GKv&I8BMBn;`Cf=Gx{5+;H})*KNu zQg?JOm7ULcBH@o@BV-d0+J-cN)%iFfe*%f8K`eClRSA(Yp@9D5>zBvz0R94vFZ3Ip zyD-AS2YGyImISuSZ4FsSa3qPoK`R)g7K3VsxMN`1v9e}$K zBC*;Aj)lI^f#B6=$1(ac-jk0lZE8sFCXKNU7YPoRlVc{2o6B%-5&{n_AI>^Gf8fr* z7tHb)zuJ&{0srFY&a4#i`SQlOSs|wf1tcCt)6~&0M5~!&8%T`0GP6n^D`gPf8b;LokQI-o!Cxm`MzHK|(RTkPEtaIWc;jP*sosRTx zpe}hLE!9&HGO6si2YrF3RSXYK`gQoh>V?bwqf_*;q?o>QqK|P!a4ZaHDp!W2s4duFHATgjdI^I++mr6Sw<^P zm!NHv_{QndOh?|fIF#C}HU@@6xO0e->9k1@D5i!z15t_~5QAri#hFUDvJ|M|BfucK z9gYP;wq?MQ8Lba%+e?xg?R7M=C^a;5S zH}ZP)BMCi)0o6UUl{PBc%te8s6A@J|L>x==laR(&S2CftXHDU#aHKR;6}W~}PZM}d z`*S5NgCbMOWkW%_Kir8$AxAt!f3jqveIbSuk)Pb*o)3Z1(oZ>1Vx+_DSO(#p@RZO~ zq#RHd8)Zj}5z$=2e|J=RmQhrRpd|ASMo<}zBoW>Q@wV_qxiZ zOSM-vA|9x?unyPy`84jK(`LS$k>L`G9!dl`ZREJ2jL>Nzv}k8;C=R8fS+SeK1uEH> zuVYz8b4OJZid~<~m6TOh$d`&?Bq^uh;@T)Kd8waMR2IGJ zg3_{>3ku59$HB+LV3V}WbbGE3VuVm09+@lsUaWVu#U$Y;(l{HQE-uvfn=cxBEZ+RJ zjPxTr+@zQ6aQ$Sou=ozTtMDGWYs_5=j?W*7aYOX+e@T9%7Fx<_1l_XHl1VPzC!_AT zo%xz*X|5``=UH7v%uo{7g3Zal{7tm|*$nwTzL!SXGG-f%?o!z2l6~XuRCGq}SQAL1T)q}kmb;de z<*t-}f8}oWkF)t}Yhmul(*0Mx(}L{}lMy#6OWt>x(rzYf<(xmgKy6f2CO{LsTVXsu-MXSy*g*(_$4XDg&F{ zxWV0}H6%^z)X0KS7FSr$I*Fs8)MjM`7~)=dXV9qU^H`Li>Gf%Hi!)@0=RrELEQOhn zI}t5`WkMxgE<9gU<~l-L=3c#(*~;5;=}rfhq$(s!@u~3?{nnA2U37{a-R+llqr2P? ze=+XVu{%NqWsfq}y0jDKLV+zYf;?-fRA7>JmmvxZIg^iEnd6RhdCPfu-t|bPBXPf{ zUhPNxI%Lrte>tWz5dR0R>rxR~R-)x2NbkZiE9+70k7PPgJcduh`iaQC9gb7-P?EKN z5@9CE_bT5iZYj$~$;8!@0;(5W8aMXofBq@ngz(lfciB_jm4jlU2Fv$E%|$h`OX3yS z2Df!BA=%^ldCQ=-n8Q4b>hOB;Xnz_arxM^*i6vWbSZcqOle=Ddm z2C#y&imzV2bf1}&o5?bl#n?{0Cl)pSx^7Q=FIU#&S{~iQlydPNFd|W{oD^c-kT*4Q z9Se}n7v~>e%5}ufz3S-Mf?h4WA{`S?&aS&qHUyO!RD!+M7Y+hKA~CX?syFtGpr7NW zYCo-Fy6+jWwygY=j zk1x$Vi7&Ux17aO3wv%#V>Wh??Xh4iZypD^}PD;rbGuBhWp{LDA|}E;f0#L!5yCRjo&Hv=Kd~!ug9k7rLzHvP*VqqBAZG+I5tfWUJ}OI3)${5oY&e&E_&gTPpfC2m!y3s=y%$^>tv9Gmg^KN ziLO-*8K<1ljCDO~{u5C$G6iTR{i^dOg!J6RrVw?JusfW~`$oDif0#wf#)HkIvkNh8 zU5ZK9pO}`#41hi5Z2Ieo7F*0$5Z?pLW89t{XQx#4y!g!;)b^D$y6l0B5vb^$x#i$L-mzY%P z^LzMqxv2R2(rRLo{sX3b^f6ee&hE+qU!J^N@tC4-@ z^d-sqPh4N~vZZ)B2rjRhJazm)LdoAKAlvgv#y?)LI@w1_*-eE!Mjv=dMKV!kNqH}B z6C=IZO8l3T4DsZ-&CpvUuN^JEbj=|5kIwNn7;W^{($qahbVm#6>nkTTx_) z%9WJsSF%{m7n@c^iw|LzbQ4D?If0Xv+9G|Cn=GKt>zYhi1~5Pq7F@9cYkBC@lBH;* z1B>S41p8Fc@wu@uP78=0 z8cML_!6d|$PbkaZ*Ea%uoty+BZck8JT;o~I3&y|5kioBTWQGFT*L{f_&m;#K5AjV+ z2qUiNNO4f%j+Xf5%9mTu$QKg{b4)S1IN!?1E|VSd`5+51!^OFLCZ=ip~ za#gN8|0pK*__PyCLxF!r_i1{c2Knd*o#D}GnO-t_(YQ)3jnRz)P00I6Hx&8Xu*6r< zXX3djDs_hYxG31@qtXb^JSrWvh09J;au}FtfBCT0p!!K%HPAfzRwd^h5D|Yu58USQ zvCFHr$A4u+V~>ZyB<}{nw9qLM(o!23wJ|HRI^?4 zPSl)pL2x-~7|l=*DW8;P;eiOvn}&`-KVz&SaV|EpVvtfbkQ=QosXB%_M{h@8aj#U6 ze@xIoNY?r-J#hF2t=F=b@kze;b<~#*X4O$Ylz;nR%V831*=7!*mc0u^S#~ZEMhRFJ zI10lb8-f5thNQz7AkGZODuKuUVQNwM2Ar=2vxZVu-ip#Tznn$%prqAeHcEd-jnO(LlMkBtlR*zv z1nL}K+{n9t^Szci@Ajku9<4L?_>IxWPvd^%qm*wlV;F6ANgXKWm(08dGe3TDe;x=q zdOX8Vtc&?H8uBKcoQb%_y>iZ{o*B% zFu)#B0?X+lOJ?*#m3(h-mT@uVf3mH{34bB-AgqDvDch8B0H9XkhthTR58#VyFJyP_~$^glM z7Ur{Kl5j`41S60$=oGXcyg$#*2EFVI-_Bvi`{;|5l)Xqz>x+aMRrGwa1CYDk?PtQB(-=v&~FZD)I(Q34^y}A09TR z_@Sq#Y%*L5B25s8)y+oLroyHVQFv zVl_T$0*s;{=(ZIQtO2eHnA=5vLKG=CxoE+S)vy1?+^uuIhfXQDte}u!stg=UeNd2E z&v|y_M*IozOpF3Ff3{+foq&JuK|J-+h&TfwX?$pyU^sc*xxJl8l5u$Mm#}M#slS-y=Q70z5DX>aTME zu~9K{2{9%ue}&$*R8I-Lpu~{t1IIuv3R|)Z1PG1;goIZmD!Uft1-+sR1j7b>LW0ro zhU|(+UF!k`DSJM}&44aVY0lKi$y;X|h!~GiMlANjlrF;GrC=JynFe_E;O!3a09X*} z{%+An<`piE?4lNSN+;RY>L-FjA!(SiYH(2#2RU6Ve;T-oTVZIhqj-lSObuU-wv03{ z@#1AeGjJ5=wo^Ja~rN)qg3DRd=>6&<;omDtDX zvns*VyuPRAyfWPp&K=USkRIam^;2{?@nNJ}e}yZs4>QiX5A=4|&(*7jWX<{U*&$T; zByM)s8k^{bCH1Yt$l*UsKT_H7l#W>#L5&SEi5JswU_@U@0#a}dRby9!G-kw+jC+%p z;)1mBTI55d)ad&SUlyDTB`M=~h&u!L5p+I0gBU6jU+G*B9U_vCOjBaShW~(>jz3@V ze~VX^L_|R;8KFbM0E=Q%zGF{p>5jxkmaRyknsN>i+YExqs23gXlZRt+Zg1YRkRxUd z1G~;$kwc&bK!@;7p=!hvSWh}e@Lb^4WIUa0yc!U(vzpMTEl<3O^@22$>%Fqo?@W^F z*mR*KW^}+rD3cJi!#Xx8VJALNbQDFEe^SRHNvVHntF5Z~NaEzah!_89&NJ2V)T{FI+M%*g9ltuohsf(}$5_ z_ws;&WYL65_oM=b&4$rYj*b!YfrJ`jllm*Q#PY%okewlGnfH*^@k~S)Mj*Pae~lbI z?S>5<&G0M4sj?W3alN>$Irsz1LOSYzlEU0YP$HIGPswSAS^!Kyv%e^{$CXxoPWx;Y4QVdqGPNWg0QCKuST;M<`gn14FUsS}BMK4>hZry-4fNE9p$jpBSOybFeW zWWgIla49(uTBxEo#QU&&MM|T#$}Ibuas#Vn@zezOjt*c6hg2BPrK4LKz zThbZDKTFL%!?X!^3EhAUL~E zI8ZU4_Fc9=L{M&1dYBROMq+>e8t$7~$b^%(EN89du{F45RV*iFHSp{Nj(>oHb(C8u z)@-))c|S7B)I~wq#P--y=hOaiT#2*lsUsn&eRRS!Crobq^ye`YAqSWR&`UA_LXnEv zXobuaGVI{TiRXlLM0O+QO#|eOBcY58$+-2MvBr-sBV$T5IOv%0y?<{$`B)D?nE^HD z|JEvdbX|SxWpRGyykVZmE!tx-yl4TR6U`66p@1e4H3gX4^i$Jy5g7nENtjSI0Y!IM z09uZgdy{NMZ{{xnB^~$+BUOuA+JSXW#sMgEBafXx9H^5kRW2ms2`hLymK9XS$nWt%r*IF}*kQ)yr={ z9G~ID`|QoP%2#0j>2+I!${UA5{;BdQ%c=)6TDAJ1@}fQ<<>S#Qs+Ixq{O(*S%RYq{ zS|5}a>Vs#1N`GbQue)FCgKycxzn&rYEwzrk*}U07L|9ofkS<4LJds@qoD8sh%*K|b zKc+z{AkTwdwl}LQz31SL@qn>?g>CEvAjc1h*~#%U$XMYTvkueLThIo-2Owrk+)+|< zU7>qQbLLBIPx+tAU>=${TTqDWiL*+@*-RGB07R(qDu0R{8yLwxM5k__O;5s#1A3zw zxMq~XQP_bV6x~B!ShMm1cW#zSW@d}eI804E@V?Oo12c+y`&P{Xs%etM&p%7|RRqpX z4}50|K(+v6T!g2>p$Z9iotgR4%%Jq_Yt#-${iK?tPned9fZDXnxX6Xc$!C*bohX4; zflttuCx2-BCvZ+FTJPSk1k=Q`%eQof&*Sp$+$?-VfYb{pR1}hX2OsMP;`h9UpLs`7 zn0EPw59AKLUrRH;ZxTKk+AIfQ9(Hwk=8{+^1OpWO3mDjlucaVBYPSG0*Ae0}n+=<0 za&Yf+_5MBykL&$A_?pFLfoLSi0#U$ztnpWMjep}xp^8X)4SQ*Xml(?nI# zt0x*-;|8-wY_u9XGW-W4zGq@9P_pL1=JBzrwh?Pb^Q6EdGJxOM#`dQ%yU;~Qpt=JA znl~A#iW8k8s4C&=BC&x6R1bZHDH{zBkLw)n-BL0vIS7~n?9ddJ2{)9U@Rgj;K5~QvOIv;uhiz5MonLLnF zw&2}4sfUjqMj3J8%b{FJ4h2V-l*Vct9wojqTY4&#EG81WJxk|7iQ$VW5=U`@w z7n~BG>rI_lu#HA9eUqL1*h!uk*##@DVQECVUT50hJ7L14RRhzD!MkahJXJ! z6{-8D^g0qS5FL&A&>d`UyHn2RPtr2WY|`9gmvL&F10W5DwX?yK+4!akd`;lAbtp7c z>nC9JuNfA^3}~}uWPr#IRt32sKJY*5o4N{a_5Z^cyC>?1vultYsP0e0M#HMmw6-gT zYDYEMB@{!ig9$RuhJRX0+>)syHyzL>KaVxP1P4v?(1uWsiW*vRsgVtr zh{dc8+i(ac6~hj*e{x0i4#JzvCAPpacwCzWv_CJm2KF49Uqu6$#(}B}{6jPCq-lUZW;R2e2>D_#MpbURE#(&wo|tD*NRJ zckci6{Ke1N$Nw$}4gUV{;lri*vTUA)l7GqXawu4l-!)&b{7`=9L%|dIU6$W<{;odd z@4CC{qlfcPa35?!33>Cl2_=uUeJ&m zHsRwZ?o#usD=e8`4Yzx^s*mPN*0loIgc4~GY)}FMoR<~IIk?B4mot<1;dZlWFVe9H z__y<${4UAws{G0uSbiigcKKKNeX5zI@XA1O$jusmrM`G+@)}q9)PHz)l3BNmtL4La zecDIsyvgII@}N(iA~XNwH#Xq>Zx2xk{H{wAEc-^$2cBP#8s*`#Gzw2ZKUmW4fC`}t z@NB$(bTqu{U-7ysse;pxhA{h8v#Ylj&?IK%-g zhbSX$?JRY<>VJ`$^p)=2+97$6R&8tNRlSYL8BNE=;#q8_Pe-mr>^j`&^Qz5FgMQw@ z%U8uM6X5zFuz`98o(y&bR2gHS! zbKQoE*DUi+*H1al#kr-3TD|V9BHUd8Q8{I;tHh)_zK%$l-WIO(t6-o}!yQR4? z$6s=xBv-Z6nBxW)au7FTj?hkf5ELaZlhv_j6*MX$ui@L6i#!AL0Gz z={0BNTf$QLgMfJdz6tW;h}8o0ml4kfxY6`PSqS@6TQ8w7N-A5gv|c(zTpJ5#Ti+w; z^$?!g4S!tW;CMX%obU(1k6tyqRyAZW0d_s4b$iN%`r{CgY0G zTtGE+O&Zni0hw>Dmz2Rym|Pti&gkm5q`>dL^ncW#V91>%(@l2w>z|k3N)P^GD}AX{ zU(UQgfZ7tgbkvd7?n5;)vtwD~^w2`63UANK>+eZc-c8TSi&T!4S4xbLH=G3ep1WUn z{Aoz>wC?L0PDA4wACS~n$VZ}GLL%h%;L-o6uqQ&BMIx0^Lhq4hk@vTcSq&PZ>cjp0 zL4Uh9c@MLoze{`oD5GOel=+$8z!;5V`T6eMeB*+GZ6+-ve)R#$WatOu#o^ zN*F4hsR{$IiO%smzP4zgJr#Iq=1qJ>e>jhvgvYcV%JZ4S1!B_ZKX4eHPJTb}mk$d) z@YoB+mn*)QzYLVdMbt;(CA|T@_8YRo>wm^?nSdTyeq^s~Ljo!E1u%ma(4_i+wU|z( zI6R|}XKCggYVEE;=lMRJ=c^yVxeD^_InN&p<+Q(2?c2;LLNPH!+Pv}lj3Sl1syQ^+ zVOu0Do`a@w@sfIz*JpCU!**0L3^g@R14eIKS*99i_7teTX7Atqdf5I}`b#Twmw(^J zx0zkk{QuH+?t4uo+rIyQKSiW%Ok{GiU6&3<7AlRjpfq4N3M>o|AQ}>y1P}@PvtQ%9 zz`%93&YE={RW)kVxcWjNqHGT9lK?ro>VatwBK3Me z^L;$))Kvn}i&Xibow8M&#vxG+;eUD$C)l?eU(W}IxPSkq{l_gxEL-n^J9|`3som^d ze$JNv(ff#XSV z_(wqfe{j;kkGDgKHjExXEOVQ^ip5D89zms7nb5ga6H-{7sk4jjN%>{P#}Phl zBb8E7o@04kotXZpu!MIwvK&O+zUS0hgyd(dW2n`z#430k4H{iM8G zxijM4R~x0x{*Mg%bAKyuFwmP}$laxH4pFy?H*uo25kwSZ6rrY9*WXc7(p^?(KF?aP z*LJ)4ZN+A>I( z1;@&|`{?<#$A8vl$+B{ocXl1S#<%z?;_D#I^hDY~9RtBhzw3|?-V5<0n}5{C{OZ5Y zK41sL7kClNS0?)k5>V6MGNF+Z!3Hs!31*!$6{m!6%J+$+$wb3ZV2I}wv#)WYtz3HT zM1l;>oHANtURl#i2ZMw=mrXnQU=$}NLhTp^JlYjG27jFk?VW^5_fm3`Lpd$k!C>oA zrWpmx-hu||*uC41G%aGM^}3sV5#$EUOT7k`97Kc|S+DD_E%Y|;k|pkDS1K2yvi*{S z@L9A5+z0{m2z;kOzi=Ym*Fi1tS@W1!-f1x9^~Uj{DTpq3{XF8|)q6iZD!l&nad@Tl z-^24;c7Igy<#`K*w8mkQdG@c#OJ1vT=b!YJe{+4zo8(;?@&u<~;NtcD!2)sbdU9!& z@7V>Ohm2o|UYhSxOj|HRP0a}as{by#(roP4jW+@~svM^X0LAo0Z#W3u<8uP`1+9hT z9g(Bgpr;Pg&SV^#j6WLt3rIIl_t^)#*=J2-kbhtA4$RRDrL6dbAKG75d?8U7$`5ilK(5v)0MsYL+kUT?tE@a4+&i&(Vwqf|^{1|br zbALIB&bHIlcZ}`a6h5kV9}@S?OJq%la)bGFIul-5Gf#*{M&8hEH(RH@-M|+-zG62r zlZo4;tvl@6%UsQF%t>YSMei1dhtKn>rfA|5?|R!acw;jCrrB_HFTLw=J`!A%zj$qW zb5wrC^{#TSR-2rKj;S^O$PL=Zo;>xA6H=Z`TRh;}^pl)sfm60u#glej`2riJ1<{FX7iV;T#;}cv20*=K+brB z!0N`;Eu8Q%W6+lOEHL?Qg@gH`W=!4tH;3ZioYux>`WV}@g*^QkV~9T7{yXZgN}?3} z?C%M^{sEVdH3KJqsP~ojko%^Y?ax~_63<%onf+VkVOvb$!6N(5RAkm?p1mtu=Z&)c z&1d`DUD@<$!habcyowS4&xMU;@9*r~#IWwS2}#&V$T=>0*Kxy7%_}7F2VW@XR@p1b zZk;Xic5n8p+(^k53hp{S6X}@ciM$~;ba|7MKYjYql`2H1~^tmv$MX^ z+^-0gBnTSCGP|?l!5J^Ehf&SGy+t&X%3=#Fj=*+*Xa`1zKQ2RhG*@V6Xlv)MCQfam z!oX<;&ulbXBxO^GhOjZu#I$yi2Nh7Ey0Ua z{`?TbhRVY{!_A}YHu*fE&xQPhnTKk$A`b_OATvw0dX3{d^@!g~VxI zIEZ0?5(**m7zj2j`in}j(dhH&U)1T;h;f<_Jpj-)BYP zHZmQO*tZ!9w)RstZj|siYVqkbZ1ljJIY>Rz>feF_!!G*Y{S~?ChF99p9nXDqhQX$0 zZO;e%P5RJb#*Kqey;)mWUs&DX$bP+lxv>0tqxv>`4t=!&EPh#BUwr+15fd*^ZP<_! zM{nQXTL85c*sHCnjhBnh7G5uv1Jc6f-M$51cP8T8VoYT^Uod|$oq6NPTLD0~b^4~#`$Y95swkDOJc zzhd7PZ{YLy!aAwkiNyXrr07m3E+GS}?rUc?%h}U(*aL1ZZ>}u*b?t8-UpdcirPcFQ zRRUB-{CC~V@pe6OX-LwVm?|bT%K(o3I$o7T=8spAaWG`H=n)XJZepa1@Qe6 zMX8DoiLu0hHg~YO9Py5Ad=p*C#zLhiVTl~GWC5DS(}Xi-Lx*S2s1DqK<+gHo?k@>c7}Zj`wGmsVq-UO`NAGf zXy74&dtSOQa00&3ox9g8&0KS{&pVm+H}DQlQBkg2zW3#ZxdL`{QBE>Jhuf$0p4SO5 zSQ-t3C`gZJIf^TPmcU7V)6{0NfqBS0;V2Q+FyZJ#H;!<$=L7zV< z^&tuf!39CdT}$|?U(!VMLxncN9_87&l@jwjy6d&k#Z7$01q|J8v49sO_XpC1#XZZ9EAZY zDMeRb{yOPwoOw`HM&!>KB*l>YAs6tw%V(IhA8V=LkoCO^2j(K=g*r zX~`em{F>4Uzrr0ff7s-scQ;!)?3hMn$$5hxRKzTDG{JS_Uv6Gdm6R>1K6rpOG z`lBO%jt8$sBkH_#q{vx^{Lq7lBjJ9OoUFQZ3%7-6YUIT*Al@qbUGs?FP$oug{#P(1F2Fvy;e8` zejG3(0m+khQDFyv8wyTGzOO@sh+cg)_KMnn7tS*YF;ogVhdkK8gF6JG5MiKZ9*Iyv zIPBU}Ebe>ME!l0=d{OC9K4#^`9n$VC0WSXCg1ZNF^7+tgBzjm2_u=pp*^~KMg$tU3am-5Yp3{CGLZN zB`svxJ>s9~6C{y9Cg*{k1HhD_?^N;uy7&1=ex-Q>zb|; zzasAB9fW-(ue4f4wlrk=rPZKNQcNU&Cjr?RmDTKR!#?xnKzADcUNcn(aywNzklQc* z?vu=(EaBvn&Dvs!2V8b=4de3Sw-TRN2VJGpKD*fRU06owE>qYtH$LIo1a444wP8(o z*VSxk^Z)PN4YMbx!Ck9Lt}WM;;7>M3Y?RcRWxufep}|0%n@U*80SOr3f$$iAv=@U~ zO;5uey5Zj~s-3ub=pSP%yDt`@Fn0fn#6FQ2?w8WrG8%;0VRn(7!n1-vy@QzdwnRTT zEz1yPg{Uqtq8y^4NtZ+;!6UVE_R!}eI9JR8ai)VN;s|W*P^hnb01LV#A;UuD!dtF# zTkC}jG;-MVlKi{Th@Lj|gsf}=l9UBLJQYYj$*uy5S_}M?v)eMVB-sHU3artOW-Qbw!W6&E6K5Pu9Po-YB zr<_+6Q(^KS+;f`VGk4y6-OF8d%SW+y^&At6UU70y&@MhZNX@h;-NO`rhl)iMcW)t> zcl5_>I%91s89f~vz8&fKHt{!`bW$&&7s17A^rPBn#BafIYH)`EI%b`$DHs1+@q3-|j9`cMCgq`-`0zaj=#wL4c(d=OBuJc9YrP8ojM99lD#ifjZD zHmYjA@QzaoT&E(FVichu94u!<_L>pE&LMyH=1nxn+f?$7$s{&|K~1Odp+EB(m%c#* z7k|*-f$Tc6-*&ytx9XjZxytO)#*HTcuKClWe)F%7`$zm9{q=E08WmH;;5@b%1}_%F z)+A+LMc-FRRg8>3@L&2IbbZCQlB-s9>c0>`N;uKSme||wUhM8nH_1#{it^#?TKC-k zLGKIUs7@gmcBWPNVe?X>QUM^_`11>YjDJxT>QE=-e6@evNHQMxl9yKcMN|#1{Qvj< z>|gsoJ*vbnX&HRo5ZJ8U$Kf%7&!95seY_&D>^g=1Wc*6?C7{pJ68qgeDI;t6E8ATZTCAwL1=Q5UwFv7A8{!TB=UNuNp{GQoEKXdVS3c zp}Lf-;TgH%&gnD+=KAA5nC_fCeSaqL$i1<_B6}CW6xbc3c975c!@TOnB7ncB<|$ld zk!_+IZ5;pvK7DtjsRWnMPLgSaRBi;rhC+vhLc{Yix)ex3Ok#Oe8e!6fHQcv#tem7T zh#5wzF*(8Px2p>5r=n)m@a=nKu&QPvyc!w(D$SsyZR|nq$<$bCN`C}>?sCtQcX(|)*_r2#btga$lSM#Q8(r{uYb&9s7nm}OEb_E5cyMVu z!cNpL92cNEMZOovi_*|=u$?TEjWsH8&J^UExGuJT#U(MPw2kh=0Owx6%cqA!yoF0{RtAFa!Uqcy!LU&GUB zcf1FG>jvuZJ3CiD%uUZ%|1n;hxSvh^=fel(3W>Xlsa%u+ID9_5v7j#={$tnvma63n zLSmiD(oik!^mfr`O<1C|HzG3uk4NTyFf#XpVs00$Fr64;Psx?&WPZgM!5P0vbW+hu z%^UqORaSM;4M!bC=~R4YXvN?+LHv=aV52jCU~$jY=NpZE?bJ&+_8UT4Usui6xtEd@ zoCe<;FEV^2bzlHr>y!@H?B3mmMc>z^tmuF;-T`SJvplelLGOvyuH~g z;YP+K+n@PzHO+`PXkHl=GTdx8+$-ycQryzs_wiJIXYqNN7Ipvr#_v^Q~&e+cVe%kzZq6IfAwEzdWq82(;>`1qX) zLiYz+EfkY;v+pgq52hDq$rqh8+$qdCuryjzFNGQk_5uTnC%uGr2wd16r+Sf7THM5m zlXj=~G#E%@_#EO_JV#`q*SQpbB}mENEr<{wMLg%k`L(Ez ze|(R82?pC=E^9Y9L4?oTsh%%p3cg!CT+9xt7yLOptDf>B!NXbgL{Hu77Pr{u(NXo? zVs_lAZt~X|%T#{{nYNo%qU(zWsxG@6=l9pogO~?sz+#0A|0qM@_SLQ zUM|9H`Gg^Jt5JQW=krepJ#a;|m^mgnepH*7m$!4AemD_5uZj7QamZT~eTB>odk+0P*LDfL*m7vuj51C&Y z8dFGtt^DSyjmfjg%(Q2^`aFfGe{vC?Z21UfbWggW9@6e@AK|NG4Yr7r=o~cW%Dm-) z0Q!CR8dfW($4Y(< z*M>3miKVuBg~X?pcw9^zv&26yI>qD%mi)u#M}H$Z??#($$i736h%?|p=>o=>>>n%U z=wf3{QZ2e%IcRLJHFh;$`~(~Zl;X681+>-x%(47tOXW$U{AO#nwq`$o`k)cqO33gT zv0z)LA@vis<(`(jXi3OLe|7oB`KhlSIfH37m@?SCMN~>ThQ&m~I&8cI%E{+Eg61Uh z9am9|C^9xh@pNgLMj1vKr27$XV@5$Q?%y0Vrn)EKjdJDogFwo=EG-y)w%MYS)m?VH;If4t?n#cA2s3_vw{ zk-TP1&sDwksjPgJTXy~?sMGdAQqe@Mp`=?y7I+Oe#=ZlYdtE(waC%V~P^oLfxXB6A zGT04NKrBgi35yN_UzWwK0R?*wYW; z^gGnj(XNi@2F!DFe}Kpv(KWK5$oDE071RK=uo;#4nYbv-gzv+7r_G?3Y!Ni5g_VGTvbNMh-z*OLS=UXS@6}N+_kTM+uHuD$ z#C9!~G&M%Yf4S*!DjHA7TI0;k%Y}eFyR3}iQK-I~i>bV4cE(oNWwtp`RdVXq1KY$l zx@^(H_Hg2jE(dD?5ovIsGNS#21*sKmxZSkJ^R=F?>RVcLpZ&*VVcqWSQOyPl86MMz zxef=K&UUSexq}7}TmzAtHt&acN(j4yr(M6*CFYH_e=5d!zE(vab!>?i##g}?m7%d) zQ_(^sKCqDoHb+*V6W$l;gb=+6JeIFZ?&CU{Mg?#ph*4gA%g1lx{454=x*p2KxoEkt zug$Y9-I;AZ&9)_Pl||}C2ceb??kh(Jg!*DtN2Cl*L8-f9LXjZ}3Z*4FGAfimtvT+K zx)c|Rf8|mL47F11umy&)4h;u}@?+6Pey>F^7#b>xx|TwKmEqhdsVlvX^Q}~-2<1@Z zZX5_2v5$Ez>!NiEIJ*teP90W;4*@b-xL};h#RT+e@TNoG@F2f9WueKCeU~g9_D3brByRP zW!JD?$Bc}eTM1#hp3cmLp`A1^ZMRXaKy8ZHIAMccQ|C%+&b)lxx|hU9%S?9Shs>S1 zRs0sdOq?`wXEQjQ)f@lo`mnRZ>LFovcV1QNeZtR-bB9GGe5_1BzE#W0Vx?Ujs-R4H ze?~nKh&EWwx6TK-0P+EUB@ld-4}OgZNx89pWLEYG4Tfp_m=B?`3wH+VJP~Ul|2kgpsCTjhxKiQwG^{4s2 zU+vHJpFH9JT3`S70TTcEwf@tmPxXg?_RPON{(^SYt!=NgR_5P7^-p#8_0Jyk{GVfT zEIfjCoBrny_l);8J)Nvbr@ia$w#JgFZ3*E|PsuqW_{wLH)%+Be@Z1gq9aP{se^Dgp zs-?{6#7GZhrUTs8zFTd;iwh(NNZ~dJ!w6)M+D8L#Mh@q3XJ-Ru=8(m*@6G_{@quR* z@>}G1=FHId^1&)M$RlfbF!sP|(C=4kkfCu@gfG|8cfruK(TDfjUw&}fM?>=gT7Vt* zw_$Hr_C`3j{ztegD1me?T8Ai-e@Nf6PayEK)-}q3ir0o-V!K`EFFosD^^W@84mu$R zCw&Ff>R)#*^zU2^UiYQ`*+-YGVQL_9(;RP=h8a1=ljxCbyL>JOyjGK4Lsya1X%6Sn z9P?Gw_6t=E_)O7K;{YvhzIpMc|I6~$>SF&jx&{4bZ1h^T>P{VGg-v9`JJ>9k!45)xLe)JiWL^Pp7ce{uN*G+L+!$ zbLuQLwESDKhw{TbDjRm`Mfphdv+J10!|Xxb zoGLb}gYvg3BYw90dSU%t8pgDWlj>sX`l2B28S_=VxsCGeQ+-A9kZ&Jc=#iY({xW~3 z-o0$`^^3iYh1JEqg^j&ui%ZL|P5;xQlswpJfde2)C`J74{@@V5n1WM#_Qmi$mkFqb zTRSMEvHSJhoEVnhf01v+Q-dR8NJ3G?32P92Fz2fao6leFfmL1#?j(K8Ru?y4zIm~? z^mbwWMHLUtDJ*c`nuCH(vi5R)VPj!s?~ga@FE(5jJP-_NOv&s&@elwQcugG>R8MfD z?<@za*evHp*Ht_Lj}Y2u879d|{w5StPJ@0HZ`=rAJdCcw4t5|*;3C5B zE8HKXu?mH5&ave6uFDZZ**(^aLUP-=P{YwLY0*1z^4#waHk1scm~On#V31h^M`EbS zr9KY&mpEwif0PPy+kTB*>PQK3@bWiKDZ5q0uSs1eu`b7NHHCrjVjZ=iuzQA$f9-Q= z+-w14StVl-*a}il$6Uq?R;)T0v~e0j6A3u%J-Gw6)0OsZ(7?8hex-du$A%W8+Rc_N z#=tC18Puc36boQm*4B{rG12LU0l9L~{2*u1=f=gLf39HO%yKBoSL}Kghc0ftiA3@> z1nP;V&gQ;3<6Ocen(x^BrbVEOD?w)T5^;eq{xXVuwgbO zZ8E^bf8AZF4sMo8%vP!1HDB>O;wpSogd@TP>+beSYgb(+hohhJ;ZXldi|e+-PTX5- z*G>|_75gdI;$CM(;bjR63L}b{8i}aN_kgtn@8c$yuVqC1@pdc@R+G43=fwUfAa6Qb5V>jPST$H4fq?XP`8;0Mg7$f zyR0d*lT=lNBf!IM6mlh5TAkzahd&n9Usp>`&f>G&X3KWj^n3cZrX)OkpEhyAhuwbP z1X;0)7X+DZpzp?J#hjEyVY#RHQFh`94OW04kVZbj3ANz!J)WrZ1XE|-DZm?6%Gm9GuGg3 zY%nJz$;~N;rHbfUbx8M0d=GKu_i2W zh*o_}mG8Uz%(ExK;q9D zTa0ZO-AH3D*0C<6Ip(MWnUjAkWSy8uYVyrFd8@B`w}wbDZQOfWAr*w_Wj{Wz&?R7- znB|x2RRb!2alS4oRr#&PnXLT2b_VB(>m5+Wk-tO$Gq=V|*VGm(N%9nn_#V;vK!H$^ zG35bqSSk#|m$_&Gy2O=F`B^i2(PgMFx=$JZvu3<-5$vj!)E}ndq7_9vROE#=7=z%v zs!0AY7oS>D(zrHqJ>fMiT{t?ZY-J{i2OZ4cAvgzrftE~v03*V8BSTFZkjuT(YIU9# zB;SJ{bI@vkAs8u$@zq`L-k%mCEmj6940abV0+X=HEe)cLq`2~i2dYN3no$lgKLenR z4ek{Sy$vq1YkorvsuRRfi-~Q-6oy$8_2HD(;2^`eT50eEdSH;ZB5BtT<``h4q_s zaHcZ%35nJnU7DC>9oNVZIuwLOYHx6G6E%7eF_uSm3EX|R40sWc$wXnr)=HOgR|7eJ z_%SmD20PY;xA^Rt1B0b}a>(yrRpun|`n00q+3^(@&virdts1%t55oR93|sTCF}F>G zBtj*fwX?O>ZX7dH`t(z%%IFNgwa#Od<{Ur+nQ5uWoiSeMwu{QtzPph^522&O!ZoZ~ zykn9zUepuHB}twNmalf*%X1Gg36hV0S}D314%HDTol)Pc5LUzeX$y*+WEp6gJ8JT3 zARQne91in2)?D@Ohy%sxKs%8t2957FnjzhAt!r0U9A+cL< zRf>#^wS>&7fQML_k=Ta5(iMy_+kfl#QMVh>fNt2u4WSZ+q=}mE#XRS?5le%Ah5QN$ zn?p7D7uUc1qstlgv4c|{h71H;d=Iu+3h|X}f6*QB^3MSiPKGaf6Ye(m7l_HLI)007 z4s#Dw0ekaPOGks-=Z;r2K5kpqziB53z@F6LX398~qDU$ucOk=e-eqUt(1$Q)@4zRNWYV=Up}41~CrE zlH=g4?#MukI^Ur<8G0y>p5sudHa0surT@pg?&cM`*Iqx(W`C4Yty5E@>+S%S-9^o; zpqJZboIw137fH)L%K{n}YS1!0Zq=Yt0a?~*)Lgi=GK@;kl+MoTwZCC8kjk+W#itQ0 zN3kVGCBqZi-nDZBmJla@h^qsp(AaZ{-g6I`TC`!6mLA;PKFIK~b67&iE@xp*9Tf*f z^}}huQ<7Ef9eAN|B0iIM&9i`yv_sB_1G58jRw-+;!!V~)sWJf?wVo?=<0Le1eR!@z zK~s@hY%dO_wmUDI$0vAXIO(l7aBx>{cP8ggLQ>`aG!7Sh4_{b+N0e*F^!w0uQgUT} z5@&Q*cpi}EK-2khaLUNlv6I%v?j-%}b~nt$Oy^wwpF3uI>;qzoJR|U>#dF&TF;>b1C zKFYjWCrm_~2j_cL4(GHFO6KusYAj=zgh_ABTQ%~ro|hO4#P3SrDZ4P%&WR{}(Wt+>3a-S+L=Ry|0cs`(^g^cD(!?AAUt?CR9& z&Bv$evu2r>P!sv-G-G3G!rJ<%n+XJY_@sthNVcS%kC34sy9vj$8RwWmg{8|NM_Q!B zmC=Cpovr3vEI9Ll^xR%W*cEerlk2F$VVT3$6)dogpi ztgBDX}qPh$$JLJd4amBUC2-YbzX$!;P-G#ym+bqYoR7u|9nel&`)Tt z^`B~ebo0u3EUT!N%$8!81vP88AKxJ?ThN}={DrY?zthaIiY8RjJi2=7j!iadS+^R0 zD#Frs59|^xWuE4aTJsE!9msa%oN3i~%psut2Nx`nCd9ty$gC*F2nne~07yh*h|%41 zWvqiECHIVC9&mp~)F_Ck4AOc)}w+5K_bv0rae5GnfgC;fU%vey>V$S0%>w0L* z3`CG;U>Ry6`8QzQ$v9}_9(p0ZW?NjYNw4*QIV!>ldz`DVVe_{*)we3`3*}e4z`?R% z`7(ZVi9zX%IvZ9EyU$;%i|oUhd8SjlT&Q=J1-T_DZiYZQH%E3AIY5ADU0!y7kx&D7 z0ge|B933A(ie+A8f|1!E=D38r?15IG3Pao)dt~Zh4*veFm<{wI1d94W%u}=h>N-Ljw+!1+|9bw#=g+5Obel-5b;LB zemuAXP$F)VlP8!c05@ik^O*sE`z3gff%{=~8Xidr!-z*4aohNK@)Gu?jm-{Gq5R@k z)K2a$ZoAHxXXho~H1JB5m0bWY?@>nF#~)!q%v=O@;bRWgIow<8G;o~(RVAibnMg6U z$Gj9z41XS_hm>Ih68x?)U&Rc7^MbYG65}c%CGeb>)%a$Un+|F8)V61TIKkX>uu-{Y z2mJ~oJfPud^SsHg&J*7MACv2b9!&%_E z!qQr$dPgG}!J?h473bvaVI^rUW|ZMM_Mij87djM@gwV#v$rD5#fdU;LSCzuQjx56L zhGCe5DrAY&DhABiJq%=jd>1`#aD257Gx8)I6!PS!xAD0os~Aj)K1jMLHXKtENC=%S zy3dfbUpHAmjox{j6K;-J+G}8RR(&WAFF*hkCWN5?&Uuy~L|~=m*WyBdANczrbN(4e z=%uj-6P(Tu#_Wn~cU@A9X490y0Df|TA;W3o@F^@@Y$}o=DK{&BMg2DVtk@MnKIs97 z#CLZ=3#$`x0;TU7Lzp3-Q1^XKMtMf-E;_Mt=#kKe$d|cVh&L^&5m4SEoEVM$j z7TtSg*_w!hp~q*EcjbK3={-C`3VPYpBy7ujmB+nFvhM#ouX1v^$9A%v@tt{n#XbHdN}`!%|F7}0@av>`$H zvE71EO}6LLpIujPe|+_#QvD+yZU9LY!08eoA2SgTE;T1-XS8Z2_^D*t?p9E&4#y+e z==@SYXZ*xf%LjU^i2_@GcXwxt4)C-|))iskkk&>*(4!!clJOjQ(KXhiXAr{*ifxg6 zS6fyg;>y^_sI3$oCIFa_9iA#*L}z3 zV)eDu_FhvwLwj7UJDbZ+v-XrLb*BkZ$sokp6s>p;i!&9uNu+lX>6DfCK(0Bo*gDOe z&;SV^2vG&PBN*8xX_IMw%_{FRXNx&`CegjAz;9X&YL5!c$zsJa;lL+ z>8E0$v^rM^f4gB{TCPR6KQ*{!?$)~PY`+6vC`{CT2iHMB;_w+9>e|OHUlYsi{e;IF z`Nk_|TfDuZ+he0O7g*OT=vJF8ys^`{$qs#p_VbhXZ<;N1VG})HwAHrShbYNoCmOAJqz|#_Ea;qy=c^Yn8T;Fe3{ieMlulnEJfH2yh ze{u+xx1>gLo!d3}@lldcLeLffqV>b;4YUS~td}s>F_r)1l1&sOoZ|_jE-DI-&})N5 zRvvrtX4S7&^-*yn-N~1!1HnhbZEWMu3%tPufu}mnE=xq9x$5D2Sn{#I_i=XOPHhbh z^lZpl*Xn zIw>u$xF^0t(E>HlLwP25wF=qRFjiSZ`$G;y3Q{2t2Y5EJ+0bLs5MyOli(`aViynrk zHB~t0RTUUw3af-EkVWe@Fe|jX3zSn}tvX;u>eJs0BjLz>oM{( znFZOwc=q0?uK^G7of^LKogOomf3Gx99#EyTlSa1zXbkNQv%#YH03s}Q?+z>(dUx07 zymO;#|Bk*Ta+Xtrr2{D{Bu-nmps27kFkkX!p?lC9Q7}3+p^hhK&C7+?)P`V$@10YT zk7dhDG#&5Ol~qb5!c>uq}8jfIeK79|SC3NP#2)uc8ah{M}byeUI*2 zq4(9_4@3nWHIMN&RNXv~Z`HyvR6S@8rMaW2deY&5bx1S{`0f*Wgn&l_sejZ7CD!eQ zcih{~WT^kd?|aQyQwXy7f3lS+BBE0+VM3~_1Uqrgv#XzQVtaVF*1C}QfP+)Y3iAGa zsqRd64jcOy$E)IoCH_REurzDtpWXUVW7JnX6G-KZ`wnT&DNn6y#+AlJls1F(7^_=Z zbUa@@%bYj->Pi+Or&O1a#9cd^!#78pO)mD;YiBLztvuxt73T&Oe~q@FTjoMG^n!TR!@SI4zTt~pxX$VNt;Fp5I=MzHrH)~lwS3OX7n(HjAodk3sSo{X z9Mm(80^G#I33Jl)iHWl(?}O!OD85yDPcXg_Gr0v-AE(Uj1&4Vk%PH}f~~VE5Wr9Z%-w%xDyF!yekxrv$t~#mHsPu{ zB?qUeKULT!sRxR#gJZ5ha+v6h7&a^5Xv^)`$pY`GLG@HP>agMw59()lQzqjnW-B9V zIL!{XPj^#;$olv7!Q=dp=_1*X7gc#GCrC<>V$@0;f8AHw8t!hsoYX^h;Txj z{C=?IQ(1f_8YdtHKNdle-F`~W*io)Qsf!;$ymB2&km_k4(n8u)#{H>@A0Q`>c1VO?|* zwVNSdf1BPz9+$I!&E+Ocjxhh;GV?3rY=UqFwbUbBPHx6hZ#tHKo@o46}~*6gwA|@BJuRxsQ`Pw z(o)CB6C#rs?Kj|oT=?G^t>WIL-i^`XDU22Mf6GBfzg+!OKfgnsd=nq0gAP#9=L$+v zgc(REfEUHEcic!XE$CgiY73_B(%0`Jh0x?Da)B@S<0r)&{c8i^0h~AI&bp)7up`M% zBbaK&iw<_FH3%W(gi?gYwy%h8%1~|f(5us0JzjFgt5tT5Y2dq zf5a&#Y;NUd=@GyA)WnZx*>$#LyZvm+&zE%DOv{{+auO}sR#jpsZE1O4#yNl_wrU?Q z%V##IExLGbmYTL?$Ith}ClP zRY6o(6wsl8Ikgd{dcC$`up1wr9wZv4o!b6-kpFRDy${cjY|b%HA_%}#Xl!B&A~Qo$ z{@?%gzlJEy>_&%z!eC+xv6P)D=AEdyb%m{9%z(?=dJ>YN)mX;2<0%T>;Md8}e}f`&k+MzSde$e0d-!S$t? zb>=$`$#E2Uf4Fl})9TJ+SX#rWB1dfVuy#1;vnat3I)sZW=g>~j98nzZe^%?Y!>l<` zJB&_uJ8GoXk#<}&_m+FtiB|99kg`8Ublk$R)-D`n9-3X^L*053GsG8331$IY>N!aD2>lB9`Nr2s%F(HRcv~ z;26#ZtX_*x1MFIsRd)-0e}5SB?L51js^w+d+wmEU{QR<9uT=7e>!YdhdL`6bw>!fx zT5cD~ZY217-L4FNgB?EU#5GpmqWLi7ti$|9{sCPH`b>Tfb;yRU8u{r1_1G9pheAGl zM*=f%gz(IXTY83h5%y3sM=cE9NgJfIuW4e@c=hPi8BK8|M^Q4uf06t$1pC^~;CLg7 zNFib_sFjo(UkHa{3axR8LAz|X?W&7rvu^;j6ME#d%!|E3yC(L^uWI&kqB5%ny1G&M z`s(!6yC;opC~ctsTt&i-s7wGp2T;3Cm-INZ;U8tS@QTR70}oH6|iM9Y>;aJFo+T>>Rhm; zR*^inSxZ~o)A?U7)w(~K&=MQ+QjBY%TDa@w|012 zuXQ9%EOsIyWmd_+xtd_~yaRP+Bl!|W*CEisc3$&tt)6lgw%o~;9^!;=u+@++hD4SW zx2e*?0)aBP<1!jAo1W1ioH|4!j35hKzl;_L#gcX-Z`Xycliez8kbuk#G0nRg@{K`Q zH|r!4kVF!hS=x|)KBH0u4{fvZ)88(}e%K(}7_!nav?26j4|*|;e89x|Ln`m&pj{Ed zO#{{VxTIx;z2yDrF_A%cD5hvKDC+kUrWsSP=g%cuZX7;yi8@`JB5A+B{+^f5a042D zRy=ToEX1U8K4H){WJ*G?BUC%l(TW^2mpG>oNV(N}p&?HW**c4J9zqGsRR};&?SryN zrNu@()v$PpL&0ehn7I-YaZ=ToN zT{@)_2d(BAHfgH)sPT;MnbS&F1NIGn=grUl{q(HU=0tR5)0=Vdm%nO zi%(1OY2BWdxVv;Q)qmEyaD81qwF?SQs}1bP^CvM6+*{}T?1XV26U36&Hx_Dt-yYYP z?xb@YY@Ul&{k$-&4HTF1ESqTiyN8Q&LOeFOSvhB*4Y={{c;@|BQ@3stiQO_0?Uv5b zrEuOr^;B;q31}TP55vp~?<}B);U8@VceBgO8f4_j&zTXVcqO;@SAWpbShk21=70#N z@&JHUIXY9QOkG`FO14t zGh6k0zBNnzDWpErHg;)$4`~Z|+Rq`ax15xooe9amnefZfVnZRTmzMc|@lfWi+f*$d#U14m!W4f^N6WZbvK z929bN!A#Eg!WkBov79xdR|qKQfKE=tT$Ru$5eI%R%jndLvJ6LmraRAL-2Kn}pdx$s zyjMt(2c-1fmGKe~m)-k9RL*t?Mh1ciocw@K=I@DVtN8B+{7RpeUwd_x0$)pXZ}XxI zO_RJ+hYXGB7C`>MwVb*9^08EvlQX>q5zgh%utV58Hehi?orA)AyF-)){6`lOdzyrW z?s}tD|6Kf_>O44qR1?-mLqpdnF6%_O?;vV)UoG@k9trKYVzkk`x2CF=wijJi7AM7g zNTx|>v#mOQq))ck47k8}Ro`rEmAKe|B~4Ncbv1!!2r-Vt^)Q%6d=u*1g4kw+6X#h`YO}E?dQ=pD+YEy)9$lE)jEF|OxZt!XEz^(f z@uyG59u&Bw^~d??S@IXdR=$F|k24&AHy>}Ks$=u{@hT305XdIBPJvFRShXotjPPid-$vV$rtMndsI@z23~~mh%5O&5`KT^W z|8sli^UTcT&gVxn#6D6Ox#=I~cOMdXtlA&{Vdmjq{?5bFTX$6Gae!hO+e6&WadZh$mVGqG zHs0M-?=jBfj-Un`k29zFU#&mRkeUz`fU~vQek^sjXH=texBBra!v`bL&g($x{8{I7 z_298M&b9j-@M%OCQD+fs{k!Sx8;9n+(3d}eRS zl-aTzKo_7XmsctJm*+ESV2j61b0+8FLWC6r_fw+cEbMRCngRI$*!T;mtWKu z-8?uto~ZGsbf(q#lPLAy1M3K54^Ar?fZ1vs^(GaPta;RAKS1qr>`?uYa{cSoAGM$n zX#xNGRAT$?jq?UKqAqtgK|9P1v!`Jqld@98O`o)r+JNw4M7#F2TPlk`1y8Bzv$saTrjD zAs5Co_QSyew^np$-LMWctfVugC-y_|?!kdA_(8ZD{aF0){PaIKKi+>Jw%LR8^W)=v zp7H%w`k~_OnVbp*W(9>+=4usx2d7h=G}j0sUZ^bxv6*%IcT8##MT-vvbtxRE-3c zMk}L|-m&>&U>}zzwZo6?X3%xk=HZL$7c17a>1F^$q{1-lHd1@a31l~a7<4)n#sc`r zh90;bd;(H&a3Qo=VXcb+qa7l9F$xl_>{MReTuJ2HtdLWF)wd%dOgmLI0a@t-DC*Di z-UoTcjA=J@v1e~Tlwdh>b&yeg%#HN5-9Tur$HRIzdA-oQ<*&xCbZ^3Q0_Q%*qHrD1 zCBxBv=d;Vo12%UqpFY@^*m(mDf6tJP@~vnSJjsYBC4pya`XQH|bkTBgQ=J3a2y8fK zb)E5QVYw@nl)`oyjZ0SRpMdSoj$5kxjg$H%7@g>br4^Cx54xpClVJ&vO$2~t73ky6 z4q0IvrkP!x=AhsJGkr{?{~vkh(rnjp-S_$Z6i1v`4$ryX?*}DVWkI&ce=0(8Oofz0 zvkJr^q>Jd1PymRIsA5%y895ncl&VxEl}SF9KS_T7wYvB2-Yw^;T39@Q!6u z#4krMjFd-f`SfQ#+|#c=e;OBC`Klh`5!JC=IMuDY;L6Ylr>KwlvR4& z#mv(>$IScB$auDefAON)8P0Mi{tCrBw-PhHyzE&39rM-B3AhV)Uw9L`0Rzl{eI4wj z@Ouvb12s*bnfj54HvE#Sq=Jw*2y&2UfklbL`C4?b0FJIueT^_G+VymCIB)$3ikZ*| z%m4cPoBQWaI#l;@8YB02*u1X2EF| zJ=$hpKJ)#Se?3iTXL|ks&t7=7lv#tK=;uFGT=zLn;w;xEb)UMuJX%d)C%F`g{knB#R6WtXTZdY!R7fba1MRDO*;6g!YtXG4XPoEzcf2 z3)RTk`u_Kxh5WA|+WhrNdh)#@KwQ=(w)DTjF>71+e?pSu{AMHdB;Re3gGV{r*ErT?-lkqtVZncpJ_RCPWzpInm*rrO*DwFpS?6q=jmthWWp^v z3~2_z7YP@d99ZQ1>1YCC1komX)28S+<8OH!I-&KvbaB*A2X77=D&g;>3iQJ zzUTb?$N8=8Y4n2x#*9ra+28dAo)d0gNS{$Be}+C(JVZWXNunRWC-Z%B`#=BqbDWG` zk0aG&8fU<}6ev@Pe2lEXlVyRQaC3cH;8$q@8$|~GT?&>;pF#hSLRnhNoX+3$V}{Lx z>T6q+&st@de#DEl?(ZH{Xetlt^G|;DpgI5Lrw`imlP3?l^XD(Qu^wsov3TN-Uwr?w zfA(D1H3Q-AmmleGZb1rv-`}0f6#lyx`g?}|96`u)H7%3l9~u1<_2 zDP9&;b1ti_*rzYh_{rx;i`CU|E}N=OiamMp>D}j9V^v)==ca1gq||SolFg7ee@2P! z+|+HE4(;FlHtnve2KuYore-2!OE8tD&}7aZcWpHk=dP{$E~zi`_V>6S=T4fUuFh>+ zl^P8>bkl89rr$>8g|~hE;MEVW9EbE^Ft47nyfJ5N*Iy7dAb?!_;0xl#-gYd>i{qk% zilC6;dH?4Ro}t%rMEHmNz-2vYf4my&6hzjmDpdcYpD94i5aKa-sr0e4_>2(7M?aem zA}J3mNfRgfy_^w+rx`t{q?<9SkAB8MylW)whFwaxDMc^{UZQqiJp{N~?J1EvtIh8NBq``cTa?&#G%#nKBn`<`;%oZvd z1D8D&N-t1V<<0%$w_p7kf0qpOEdrK96t9G?fDIcBwQ11M@oppUY4PRbx4+*MZ@&Vw z?+#6STlH0Q^ODx==eg;G;`t9Cb$f1xj;H>^mqYWujAsp>Pu8f@3JLw-Ssm9efiTae z(kQ~OmzRzJxC^6%1bmcl-Cg|AS9miXf9(-X)zwBdMH#3j z;Jh5p^~kRl6qg{hZqB_>1LjL+TDDpNxD*Jj>H#n?E6|oKKUMTo(6TC2TU5we(4a1K z(1bftNNcDrx_(-bp-EQ6kkxBNgd7M!%UXsNNf)FnxH6*Fa`Ymz))piFyk2UJcCd~I zh@uyr*WI}qYBqvMe-DZsMxWVWWKi-B8cnUzE~06cRJEb-;oSSy5M}k{^`b%AKs5v{ zY{e&wsG0eamJF;c7<<*K>G11%>3vJWMfK2j7^9(YZNRp=@>Js%U7btsAFAwZNX)`U zq1{tKWCmgWqPOY4mpxxCbY@@nS6A3yUExH;b%?C|8&c6ve|K5WP)m(1sp721R z>vS>c)riK(9RlO)wBB4dT1=|GybSfNCZ+jz&24!engW#AGPZ0o78vC8o#Aa5&m)W> zTa4Zo1Hu*hVQ97(Y9ewrK2)+aDig|~6kmPzv8|LNy|=;@EaB2Oa622n22h?WNU4Td zjV~|AwVIW+e=luo=dNTxh?g)}TM#Q>cr`XgcOEZoDBWS9KIl{At z^QfIGq~5mQf=qs~M0e_G#uh>nI`Vw=tQ#Au=g>aZPJ zgd#y;`EDu2iL?j}iy$o6Hc`d0waK>H*Q~VuvOQ-o;nSEIQs~0Irr|S;gN3us29rQ8 zK=mI4W#7}^S~k=pTRy&DLYjP+=kR^Q5<;QSa`^Tk`!dy?C=jhmQ|QNQ+1a>y+u=NR ze%Y&gf2nBv9)biz>Q?g>JKSM63wGJucFc587f4#87T8e-r-gjjWumR#zyM4rmV@{k zR3VWtKs`*rMspTFYtBfC%Mf;%FR1O2uTED zEkZw<&gf}xJTUpJ}f9oS>2miCkbJoAB2q}x&{@6c02Y{ z*+g_fO(@5PETmpzO41-I<~QW_Mz|7H*nTk90TCk{AW$R$`jnPv45Tm7eChlzwzR6V z#94J$k-Bp&j;Gp{>u~yPOz_Zt*FedXQKR}=3XmHoY{XXhcEWB0VWZlax*#o17^n&f zf7ABd70ngpkd6x5lRWOw74)k)-*iRy)f+LDfOb*D&$rTDP#A)S3}sklWzo^zyT$2! zcb*id`>s7T?dkoJ51M{;8F*O^MP_RIFsHWJ#q|Zc?S&xY)QLz*ZHV&T3N1{-MRN5` z1=T!z`|j9t?HOmTmQrMQcx`l<-q|!z}{U zJ@kXR!s>Nu14ZRB+ArD~;c`^1ngS)Fr({{3E?rZfE(6tjNa50mb5RD?#b<9#loTlI zd;Zf`&x5u-*;jY%x)T~JQi}}K1mh~e*_4l z@2@e+TV0;k|H_l$@BqFQ!wX8wwKxJH=|`jmy@iwSqlPrihoArH55oP}5iaL=sREA< z3REia(}M!F3jE@rK%)Y`+$r#LVtayr=y16;r{j+2_m+HXG0A`U`~NmYN*+~X33O;LC)Rg)1iRb;gwV=A{HOmpf43o`rf4|~Q&Aq##tvX=<9~gJHt<(Isv$!gV==*a zM5P@7iP8ZB|9$ScX{~IF_880Zh(>k*arA%xKjt=S=+lJUT$D!|$TnbVBf$Vhkc!q# zg7B`^N^AqBHvV@qj-jz37tP$=&}banfY`=={x9iVD(j9-IS*L^bO#XIfB298HJOW} zu7(#*LpGf50Bki8Xg0>GoblZcT8M3cZrsRDa_H>C`RRM)-96_H8G_TlCK;Ky%sY?4 zA)K$pz$**n5T+pd&Z$EfT>AbrbTGR51gE+Tr&ivHT3_9%kPMSHa~TkDd>~D3c#4uH zUWxhwpW_EA2~4xO9Zo!DwW&-r>gAWt2d{zxwODfReOQH zjST~o_(xk7ql6tB&+acZZC8BK`pc5%6xVOGcY#mn-_)UFt8?lG7_dfFp>Lm>p5n4u z+SAB*PuRpXhuVEYcn>ESI*n9}oe?n}N&%+^v*)=!_@ln-u4Q%6e>?^x2p{aO;=*W! z#S7?QsKQ~>NlFa;&BYN5rx()i>T&Gr;Y&2EcVXjKyoRi5_`j9GAtX~osK$TOUm6fs z_GlPLCR(dboopp=dudO#3bI6~i#4{9##m6a(E<KhS{2uaQ$hn@8kBRhp~sE>cpfljg!s(T6DLkhzIfp5$uam4ll6Ku|4RRRblJfW|ZfH zO`|<6%jN{}e+WKUM_)an&$fRv!bv$zPywr^d>7;J9<-XHP&lJg$b&&(-?2Pw7nB(A zfNce7!-4of*on)qp;*SM)F<;4PpY&AwxW^aXp69_Ear{tZN`*@Khc5h6s;4SKxl6? z3j9Uvcd&t#%MgkWz!gNrD%&Qn8aV?&0;6JY`AWf!f53{yD4KO<0Dg@!^%(n%<)k;r z6jE$ID97&9G#Uu5f*T0AxM~R)FwBYX@ny-dZ4p%AYIET~abUpsC&aS=iJ>tud2SsF z+UN`Fhm0AG=m)>9L>s6QZ!nA*SArrnd!bYeMb;x+1!NoJaOB^d?%4*l7IPR`a%=%D zTv*=`f30#}Um_Y@sPp&{q}dGjwA+1&pXMG8SK|G4H&bT*NBXo#jzbKG(n9w z7nB)HL<}i)(Dpr-%ofrP(3CZK*a?$jl(6wijbgY+EKo|k5mu1&j)OAy&ZS4|z8Zel%`S{3y?$k@JRZPy*Mz%Z>Zad*=%9&qaz`^dZI zN8ULn6@K@e1UM~zg%=tGX~)~zg0aR3e|=;kNaeAXHv+WU($lrfKw>P=BkY2>h;tyi zG!_KlDvtoH4FP1XFq?vWf?^=H-C?bonbaP!CJaJt2v&69!#SG?1UiyIDn*7(06y3e zETVW8yxB+tD6PR;U{|IniOtEWfZ%1prDSOJK$DaQ$-%EaX9uBEY;Nd)nctC{fBy}z zlOgBkyJ9Ct4(#DOVP}aPiM4Nz9Z&%!>0z*}U5i4>E}ms*-vDNsq+ z;+Xuxr7J`*2ssZ>=@`LFdjKPIgI}Y(;@eVz76#Em;I%lE%}V@Vr5x_9aC78~ST$tnR8XsA)2CJ@A7HWjRTTvFII7Bj|)( z2M5GS58t=>uQ3ydOj-#lSHO;BYJwRt_z5dUh9v^ZF|vmbVZ(KQVPe9A=~6Qi0t!rp zo-p9^&u6c>`^@#ZIqi4*uRdqucyd=%vzDBZXx4j=`?nKjC@hu*em{vifAPGIAtC%f z&}4(!jFS-ULm(*!Y%$CWiaaE2fTWR?BM~e$gq^_`4s4q^8kMPq;$)_NRU) zCr#208g$(c`-Y;b5Fsz|3e-1(c2CDrn-B{McC?un0wAko;;pG)|(VPpENE6mYLwK%t(2Gy9%OV@$V?p5@#w2?%38wYpwNl(F5p$;w+40op_NX z0Fuy5#31aXC09xvQ6aq|l4^JLhSj}c_T z-m%E77nwrlf3YzGUkqRP!~Rz%W~rEBEp)QVC?AG=$VFO<>?K2|1)ybuKtZ6B57ChD z$v%MsphYb;sC@p6^QYz>2ahCGpv%GqyQ{_Yw0lsBe08*+>^CEqQ&CJ@UIrOAh+S0B z0Ok+ONdoa!LBRq2uJDZzyd*e@qK-iaf~_H3t5V1Ge;bXZR+@-+L0K@5)Ga7W))zkw z8h29@zE6I*pf78-nj+HdqPO~KovZun);6e*Py07R?29>r~W#s6vo zs==;en5;ZDko_iAj^}t<;B^|9%yUfq0Ms9t9ikD0m)r`r`&d8wZEzq&&l}Mdd!Ob4 ztd=I%e-Z?vQ9^R8sEJ#|KE*(Gg=ISZCIl^`w!@vrw>=`b2i<`X{f#AT&%2jiiIP0= z>N2;Oc|s2zW-+#<=z(lKP|2XoBkA-Iey8-HvXLGlSoDD5KGB2!&gg-uM#*A0qe_TmDn9@tKcVNP-2xZY<rm-sNyFRD4;>`7+NsY8K{8e*nF--cbg>7FF=`@KrD_%?<@e)5Cd4uZ+s#O{UGt zm)(f3!B2{Jkyz7su_Uf?9%4!kOitsV1vM%yP)4$xhdAzOQs!*0=syA;tqWacaxrK} z@F~>eAB+=-?lO7Gf@A4g_eK<^`jv2AL@-oCc!1qtzA~w4>?M7`x7ZA{e;b@-BvPR) zwlLjR^fkh2p}TT4eRl3~c39#Z+vpcE4gD%Cp?>8mi~YKj5s@sXvHQyCR?aeYD<7G< z)%VyVly92d?XDfQ z2YIslZG(aai<|{#4d@Rse?a`)FbEUxQjVF4_G3^xErbEBP)KU9IqHm4iW|0IfM5~a zg@5dVgKfETg1yny)0xY`_Z_F6&Kz?8Zd1=^KKZSZsh`|fo8mZ!-ij1U!N;Z04-STw z&AX5zvlww9B98h}lSWmzksnTMAI1z9kb7DhlPkd%6t>WzVuc}We`di9^8|Tx(Xw-7 zD8a-n#%z+w;&Gz=5H}=w${41{kl<_6l-LD?F3p=kCMy$QSwR!6IsVYVWvwX1j{+vA zyk9X3MXF(b+kT!kngT%uRP{xBh$@MZ6j$F7RiJvt)ptY{LMp}8H$+u%q$a3>AeB$Q zaHVc~R~@JBDRVE9e>+!udYmGk*wEIs#TdO&q z>7{tDiF)~~O=)$XuX$MHfRr>doxmcgBtgiZfzyi>PAC;Mf(OEusl(XucweNIdTD2^ zmX@JL%_OnLe+zku&EN)#qnLqJ*vH1_&FDwdW7N{KmA7LYvx(vG#OYgaFoRcr_gwE* zOrzqC7;^>_YLHXR!fAa;uvcj-Lvzm~5)B;RjqEO&e;+EX@VmPgrE@Vb`Eu+hJwQK} zp^M^c*%LuK3*(}rQy;vSJI+f*0+Qz6(0{3=v|J!;6kCFMbuzPSCSIKd5_f=hMJ!q* zs8`e@>Xr8?r{32PFHy-A^(w6tvc;b9jAD)rn5ARsLU;tVP(l~HEe1EtHBUOI0wQr& z5X?4-e?knrW6{y&VqQk6l{=AnF9*M{*`O7uBP;91h9gq(M9TnC;6d$+LLdfQ`j+G3 z4!|%dmcBO%%XVC{;j~7{j#Hb*d#=JYCgCF#^=8FrL)eyMow%gdJSX`5NSZl#g#2%`xKrG@nAZrM-$f&hvk-mOg6LecltQB_iBMt188jua4LU8DmKf9`@;g` z{EbqF3qd(XQtJlNC_p+ygL)wGiWScR11JxV9_Z4^5?t0L`Ilt5o6(PyBTRccG%5w+ ze>8J;FNqQUGonqdl^Sm?Xv1Cr0Z0|(B&*pWsAOYl=a?ZcKald1hFcub&~FE-Wcjm< zmT%!ke^W6?%nQab)q$qg>u%znZ@)RMFkim}0LM?i|VGEGIpES5|{k4cl1FKe!(+ak;l`Y zHz!agziU${phC-xgmYT)cf?{7f3Y|?7Ue55zh+|zEb(W8#k!Hx#;{n_t)sD#8j+*1 z5)%7|H7g2vVco;lC@LKK4@V;Sg*uIGus`&jAQ1jz2;_SMf&It{To5x9IPXjaN4v2+ z#s<-4hjF!4dcsJxbUHRUyIc_h^Qw!><7w%2R&M%h!WsB80wR`VSo7atf9=bsS8Zkn z%I>p-T**H>v!G-?b6I^*Te3RG&zL4@LKgJ5%mYf=ClqnxqSIsleuP2(56Kn(O9@8$ zf?6quCak|u1VwKC$lEG!LSli!E5aQjMT?+K#}Qf2LXbWy2^2Nd z*$+eqc*o#DqI&tw#Vj;RAD0rSG+PCMZb;Qt0&frfaahRUiuRe+WsQo3OQ$kq`Li%1 z`SI>*+R)(TY`9hs}U&qp{bJl`M3s+(PdQc4w53ypKmLQMU z<8$s`%r);H>i>5Af8(h8=KYH;E&3n7UH_c2{-*t3@19h4q`^iu#rXDpj5<;4*G!}9Z{z#PSiPxC)@?Pk(=FVi+axQJ!jE8LHm?sXd{c{p+bsUmN0r* zNYdtSML~2(f4ewYx-I-xEDdEL;1eyrd~%+pfW|lbueXZ zQwk1b>GI}jiiz8tuM3&mL^}uqvFjvG?SP4LuRVF2zb$*4Z>4WD)@Azkb(Ow-6PtJ` zg~fDaIhCw0ov%E|-?mVFn!wFL-g9L6SX;D-me^TK@*p2={Ze5TuMTN^`J&=OAV9nBM#&#VFC1 zFna!RVw4u5)b{;j^g%EFpJjK7x7rO3w9VOX@@@Q*9LYdCVJ((!CuX=pz|PVu%~Qh1 z?-J1U4kRL3yDA+1-GdPBVLBK0JjQKD1Grgxe=kKKv$k7(;xD#UOBR&kYM_u4e#GoT zQmkdP$#tqf41$B*@)Cm+cMZq`3iCpQ{dbmsmSJ%f2bC~Wbw7`Vtdbw$;ugDo!Ee;D z+j^uy*in1Gbt2re!hcw%3S%LS44LR5x>LbRjU&>DU=}!t*YikjX)}RM9b4DgdO!AV ze+ywZZp6D&B(c<{9uH@`Ipyptz@dK*ts{KR`^ky;v!YvPMYlK=Z#USq<|E>I1W^D_ zv6fM2&K})zRy1MU&=+}JgMBd}*4E+(@c0}NJW0)&;{SQ+JtOy@Kstdf2pz4 zuddn8kKkj#ec9rO{=d2se**s!TL& zqnIyIc=63TB#dk!+;83A{q^ZHF5md3j6!W{>*;94A#;cYHwxNIt;SC9#!V&#iuR(ZKPs_z@&_M^K5;6fc;o8_6VY%xm$;A`7{^=jq!+)k?pu?ed(U|T9(^hqzhv3bPR2M_bSQ%ObwQJpM zOxyscD>#J+yE#*rZJlM6+I40i0r}tKOwpkiNq@Ogbk0EwB;|}ttSH%zSASC%0)Abg z@L7KKIMD2ZjJUQ*M51bTsi57!iARqCq8FIAJR7>7Q4I3Xls(K`~dtD!Ri;>hi0O93F8=qbR$m3p`Y&mGVRQU?9+) zI)=`qm$Z?RvAk;kA~$R{ZN9`0e4ptTx{c z5nl_OUl*<#PxJRO+<)=H>AUAfZ@7azcF9Yg z((baJHaf}L=T#WIpy8ofO5S|P{q6BxdG@Z-*p=QE_3F9aqRUO;^Zmk$ch&wR{P|Ze zKDBf#UieF|Kj5|d=`7-P#80_4nfFTb+L?rug3gz{bA?sF#3RKLIrFd`w7Es$~jg>iv4^p{>2C_p7OoP1C5U zy{Y$1eWUl#(XcoFf%zX)TO+}H8&*hY`CkVBBy7%T*jxT#g@XuK;y}aQoBps``2ZN# zGxq^;x4_OE$Z}cGE{Bf1EcY7U7D#usujjtzR2u<~6@QFAEEauyf{0vo9=fQ;6*}6c zs6-OH=3S7%dO>t6vRpT!J6{YhK0gkmy)GX}dr=<8Fhk~kQ>}PwU+IbyR&W$Ib%8_c zw$P~3Wvm(>dE1QKyzLkgDu$+8(}YiHAm?Lm*=S{tk~nU+OH0M7FSdvF2cUflELXM2 zn9|lI!+(~(F3Ld}2iocw__TWg(&QcxBSS!3OK6$5No9KwZQ)Kl)SPsf2;ZG_U*#!UC& z4YNLkv+jp*V;ci^O&d#@=GBNMww|+pHlJ_LgNzt$b>KFSb-h+pbWpF|CL#lA>N}tV zYHw`|?Z8;AJ(!dOKrWx`YX%uown5B$i*5yzU}rPqk5v+Bq-USE*!d2OV;&iwHKOeU zvwz&+UVU-MX9w<{UQqTe_d%5+4|wA~zu}z-Gi@hpH?>$>##eM0$S#}sCsCzA8RhVUci|d z4UkD98X341Y+1mTWuFeD+d=9DHhwD1XSjIS5&W3Pk_Y-4xVG;BJSuJ*bUKP6xSs(t z9Wv9`0-kg|is$C=!9*`_>j9~#ar#=oHMAqRP#Y(AWw|%-9#C8thHn&~eg4AQUc-KPYBtVmkdq5LrOMaffO_=S& zr9d2wOsd2o+*V~Dvtpb_aN}bKm^D6j1UJmV^lg6nTEGo?2XNa^fe)`YEL!+6ybTOv zXG5X}AH%!Ar+48&onI|{G#u7|pnpKF0kb)l1ESTQF!iAKB8T=Q7$Rf|LbjN2fs^kU z&T!a$(5{&ZbJ_(tN8Vo`=g0?e(<=8jh;i&AxQ{xq0Vb<~oU>VDOjMSr?T{(9sZmZC zk$rUl9}Cy>Gpo{vHOh!O5M&$^d=30qAtEhePtcHZvJWx|zt+*F0>O??7k`SEHkhkI zHrgKOm`8qsdJsB};G5<{0^hVD61Zl+&$CC9Ne6H*`x$O5X%9~Gwtj2>TH(IECb}ClUjmO; z`_>+d3CVJp6?T8@)W3L4=sy|T%&voI0B&P*c!K)~?}EQ>DWm{w%e&Fc@&#WAPE51N z_dsS4?y-cib8qHmRf+69&}&+C&!_&k#W%P=eA@*Q+}OAoqYH24et*zQYgYVdg7v1x z?RL!db?!t7>oRNCLDWz{f_s0{tH7ZqN&zE{T?0V{4lN87@G`mCO7)(pqyol4j|$jY>`ycB(4zvz zM2`v>7dn|=;%=Onvtr2&0? zpaO>;0t(1Kw7>mTz_;FZfv?YRJ^b|k*>7Ha`n$Vl*EfpF!hc`&OneiMR6k-)CZSnD zkp@Kr&N%0cEWGWwx)Xjn1!=tqqz&Ffk(P`G-eWw4YrP1HJt}j-Us@sFGY9oefm<(v zVxd-?$&)N%vCVG|g(4i(9vwk>pO1{w)Ne$uM6uJ2747G(!CTaYTUJ?P0_z%eC;xl!W zB6osvK#4&ov0xtoZ|>8sbi58#(Wpp{S4VwB+K5O@Lc;;|rb~uaI{1>zyA@tFmVmGj z(@1g3k2nnS@sntAz^2e0<_R{^sIe8`g^ZSeCvLPt!$eQTPy|4%=7#-VHDB_LYQ~*c zgKP^9ZvqYB?Y?ErGJvCG4G3EK2EbUb91NRKcZBXi-4nV8T`gz?m`$=CS8pB+!4B#EQRE~<$${fp*v!xI zc#TOO&p*64lGNyo6S!FQ8D;H3vU4&}GO_`;hD!`$A!rpjv?`eB z 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 z z8#sn8HSmZ97Ye>W@TG>q+bl0C?Q*d&!lT8R z<+J1Z?UnWM{L;p{B;nis>Q<*Y8qK`Wzq8fv;S`>1je(wV?ap|oJz5xz_c}%6R=?ev zS;rU!eH-ALk zc@D=?d(deYeowp2+fl!|?VfiUc)-`GiRWbN`He7M#`5VRW-Ol$W{?RVckjN?UwGo& z+J&`C*DeHT8r!dT@7i)c)(#ySo9_dBBw6sZ*Ec%DoN&7&T}Ja zGEIt8Niqm#s%p`}KLwFxqWor%ps)nVZw4{;N(leV6)Tc#P!ys`<%AQGeiG?Rny&mkQcjrD?=v78{X;Ky&eJ{% zC)CuS`%$xAmi-qj8;)kBM#o%o`vie(FH#+Q&vnPt;XD`K{}kbo=;Dv+%`tpY;~ zDk@+KFs-~&45v7dN!yAJ>0;y-n7roZ!vezuLGn7}uBbZnqAdypu@uDx=EBHd3d~rM5&tK^U9DgI9EyQR`X(?LkHTqZA zC1vAi!DpGB$pw{{k?xbz)uID>VymJyyORucg%y;HIv3$Sw5boMQE1obCEji<(41Z+CAwF1Q~619kj$lI_TqRpyVSb{d8Rc(rRy_CXrIy7 zx$Foeu{Jgh=zsle?@Or9$4i7LD_T$#89MXPC0s#m7Q-*~^1`qPwf($TB&HwDj{8rw zZx^lEmD(JQVLyMWm0Twa*V`RD$Iljx$BNp*8-28t&19(fDR*7vMc!k1RQ8FG1v>oJ zmBDL{ftt<97^!#mB}v4*hBC)2|Ct}?K2ttA@I2i<>NE{j*-*4)!&+QK?=Zn6wPsQp;OQ=z*kY08hyUm zEgDaO-*mcB3wSTv90YdTa*`Vp81rN{Co^ZJ!nUojM6J|X{tl~dqiWP#jL(@Yv+Zzt z*4s`aqkqQY>gbG&Xs6w2ffg=wir)5kXLU3;S1T5pg8`1A^90j@Yqs^#2A0_KxER0| zGmK5KpRcVnj;_Bp%8opCwDH>Q#l`v8ZZBQmIGVql!g+QE8)Vg+S81IvG}kyX!>Ntz z$lM#nLNVH+b26NP+T4-sh`Hs+vIPDPnh?U;Y=3XAfi`yb20KL$(~rcttZoi4o}Bi^ zT(*j()-#=x73+1br@gWGO--WNMb-0&QPEyoTLBFljp=8a%GeradRUx9Zbm|B&_8Tq z{5sO6Cluc02x z@_)kIDV%%Nzf&N}f?FcFSuizvVzonBygLUaLT;Lp95+emj+?@lOW_rOB}cJ9uPIOM zE^IYB9mXN9=cv=#5z}eN#9(Q>?Z@Y5h;>{<6=2gx%w0LO81n?wjGOHqQk@}^C}sAV z$@`4kn+$AB4>Y@+1e5LMRJMJYi3_{`-G4Lj+3{Y)SjUlJ4j~Wq+0L-Ijw=dq%l{2C z(tL#JpgcMkS61S=Ft=^PEq@X^K3e~4v2UBy8yo5k#AUbP^{m?;wlXsZa*ls)Y_hCc zbsA^w?l#C9gcs_D_6N)zb3U_hV06!a=@z3@)yqP#*G zyK{dmJwI{=eVn2G#grGROmF9AkIYb)6STQAmLnub-^+e~R_-D=%y29PhgnY#GefIs zuoY)op&bG|J8~4Hd@OhJHz1BY#1qZG|Hc3LdAvg5l?LDL;Tv9W@a^aD4bM6F_7)yD zWR*X+m7+NLC~xNd9Cs1+Cgig(W_d^O*D-&d6Fw*5PwlCATX0WxGiWDq1bAHpaq>IZ zwh7!lh_+tmn)bKpLf;{8+=CXg$T1tuEYPI!yo$xtIsfsdwmL~M(UZCC_3I!?o6W5o zSuH=h{_sy9{@KGndHBa0M}_^c)$x|F1HXY+1M>qfAz$czr>hZ$mu+K1^d_B-aEpI} z%*PgKtyj_tIqe`U$wuimhugS1xcGXN+! zc&jJf){!%mf2Nh@_p~`oLWFTW9`h-<8J54ewUhithzly z_mhwpHt|fdly7zVqXM7pUJnnfOF2+W$ph*XK8Ho8zOYYS^@e%!xN^fG#X z!3Kathi_SbP$rYwDB8m}I*mDh!+w6V)3`(V>%=Z28J~_0(MzIaB?3t8&dttxX9LGW zLthE=?O}g1s2AwXphG&Nz5RT2_%N{wk`+vsDI??CC0+&;CqIv+#wtEcZnKdwZnFFWiLf%}EI)_RcGUTQW|Mx=x7S~7 zWQ;s4BD4+sW%;v1Jp2e&vV5pLVp;g5+1>m)GUnN*_kS1fb+5fv+?=#;W%;4Sng{$x z1`dV=^xs0*KQU}H*@|KJ{#jsc=(Yu*_x@0-EQSLR2?y}upV_vGn^Cb3|J=5gfZqQF z(_R92@AnzlZ3BH_xepnC)B&8)0Cggp@gWxNE77oN6=&WtR74qtyY2O;74!Whcc zL+PJB_(g_nd5|Hh`Uy_|2~InY_wy*xWIW7ihy9FhqRIH_+kYb~pi>OIVKMODTY|_w zt$+yn_AfJZXA?%RQAt_E1+=Qipc5hVU73UCW(Vq{0q|RYB8_&M*#BXZzb@4#dh@M6 z)jC1vn+dSY&{hY3Yi`m`)chL^-}SbEl$5qQl?|q>Ncm|(%yF;K~W9VeiNdcwO z(M|ATaf{zna!yakZlSN6LWypEQ-%n0g01$@JN~53ZwVN8RfV_A80yTAJF5)4FVth# zqYe!D-oHtIKfBG2Osjzii8|M7`G?I1LZmwV-gc+BK88U;AG+uPnSED|gl8)=eDL>@ zVQMWO$cm??_zI_@Ejgh0@~xttf3S^BsplP;80yZHTp#?MH~eY+lKKb-)9MpW$RJ`` z|NcmpaC0z99El$YXGHy~$nlOW$Q~$Mvik1}0qpmGZ&c67JHppcrfEGD`aP;@NxOrLBJ%1+%_GH0wE7iH)kqt50t!U|A!j@VoHsoErCj@OJ^SvXaqF2${yI(Dt=M$?8L%8f48G}sKK)Qm@=niX!%UOkv#<#Gqqn5v zk9Tf=K@8;_UfBn-@Ni${vfZZ9`wGOp*su?al>q*p%wx}I^-axk6frQ-=?Btjf~MP+ zea-NS=I_hYri%aQt#=faBZxp_V&lD{_x?bNdi=c^)gKEi;6M#jxTfB%CsWV|vWI%u z>rLA9v{V9wYwd211bW_kPem8v+!K@jqqly4Qw9hLvdrXF@dIIpEi_SwPz|q+ppyG? zXyF3TIbBR~;Y%OyZKqeW9Ip%xSF;E;+sV}|w2EMf9*Z3H_;$r=7N%=Ey`luA+m)-? zEGJJmH8som%fQrXmQE8i-L{+r46j2B>p? z`AT}}ituU|CX>1Vy}I_jEUC3AX9RkyVr4K*@0pcJ(B$I&EoWhxO#b2)vSy))I^_89 z>InOxwEC6gPXADtA*Miy20r~zI2fMOWC!F#AuNdaUA8XF;$I8<+3W0-)JY)H@}xI( zAaY8{uEzlpo#G~kpstrX!ZpjgvWa?s2@cNWkew}$o)zubb1u!;n3{wLa9dNdz5iDt z^g}??wPnZciNGK;m?;nRzVHF293SpphHuKg@ATiqJ4R6NuL~g}h8#tWuqMDC$_N#9 z#fU}KKwIlQAr{@DIhqWMmW;<4vSfN&SvC>f{ox87>+bY}^uOfvr`kQ|_CsNRzbNGE zB5wI3*juuo=%s!z#C=zQL8%pY1Y0-K=zm|hIxk0z==bHs=UgKwIuCHt1MKhn>cQgNEIY(^}7RkT?lhL6iKw8`_@1PXAu5)6@Eix zTiiQrgGKd0f;Ivra3M<|g$4zGJ%KYIwN9UuD-M4t$_?QjUE11SSAlGW-xd)T;`Y`J zyq4dH%EmeT)g}aP(?M1V6B)0C`>YgH1gUK-HSZWA;Ky?N*J^J!yItp2N})18AOtsX zPD0U5VSEknb>(Fzovr?muer;@e2egP<*z5hLaP1kK?=tv~ zd+TSaRdF4~60G2-59C}TaB(x0;X^s{B||dDeGz{6ra9`_eOai(_6YA1fTEJP0=X+7 zm89xS_hgEQ5~lF`K#oR#1t-e?KqjC((xVz=39fO5m<5w_%v{OGV-P}1Jjd2#*x5_5 zn!hc3R=`Qo>;AvmT9S)Mb|-=u8 zl-CU(tfv8i<@v!!fS`GE0_)MlLJ^+ii3+I75XlWLh_&)ggjv~tTnbLEa$$4;O3sYP z0D#65BfD25He`r5ukgFu?(36jRLSvpn4~!mgk=P{xS7oGq0n8VDD)B2@_gJYl~&EK$s(ozzMMlW<{jWfinRJOBuA&WaN^n`?f z$_@L0yJ3^k<$bw-rzKc&S;%2a;HnK9@y`kIO~r~(dh_#$Ae)wm^ij0pN<|ovDFW(! zx%vP)xJQ5$!zeg*FeWJx5>M*-uKWz__JUHfAD;AIe6^{2GDq}a>OGnmu#f?v+6C4KJ-he>Ob+Su?xTtU z$r*p%y$V*)_vOqJ&q;U&-7Q*>9l~7i$wq@$q~N{Bz@-+zlbwGccPy>;t#+$`E(gy4 zL?*owt$+%D^EIr18XoBS7|Jn4QIX5JX`Yr%jyR?&X>>f0V~%s&DiY|D?W7`XxZx#> zoD77gyPAQb9|UsAV9oBi7ng5>5w zUyL!XY4;Q6C3Un@eW&uSUcMuP&6H?RP8$D0B#}*jSmkG@T;a$%9q;z>V%?gOPey1n zKw&;++}{zQyVLK3C?gY-#Hdf@%5)z};?BP#)DLUwmOKC@t9wVLU6#$1Y$EGDn>cCS z73wq@Or+O|p2(3ofmJ^DH9aoTjv(uAa*ct_6lGDmtP$?8mHW*#_^ zk_{tk(QB;_6PkKu+I&c#;Sht|29VZapvFOe+{4d!X+Oy&e$v<7n3Blq9Q_XY(RZu) zDF*(OU&2i^8DHnL*ZquB5~)4-nJb1P+^ZO2&S)vgIt_003{Z$+yLWvI2YLbUE#ZjV zJ57b?g>rD6DZr29T)|DLd;g>`VQ`)-I^!57OxsI4MFJ+X`fRhi*@}TOhO3?`90O#3 zd`{=vArj|a_7M?Dr1L?qbqQB(clQ-pY z-`6EH%B!1U{(HhY72Uyjk3>uVB3povb57r^{{Bvi540abJR$1uIk4;Cqd z^ztEG_zV-l2!31RavzH@W8|T*q@12_rW%yPAO(?A6LMGrCQtwEegY(%h1?B)hcG!( zI?)znpxhzAXG{nX0lpUlgb3gEb_)Z9^MF#>)-cA#$0CLfqGBJbA`0GgLWogB4mLZ( z24x5+aHU}NK$>=uB>ywQfQNZGn?Lblb92Boa*(5T59lpDNLS2;+(HscaKDr`KY|3 zIvm$6=R``&@1bl6$e1DIhceWGC#iE0xjYMm9MhCg?xc>Q+^?oI5sjE`B=iU_SD?7V zEcF8gpqfVgKm$<=1ahcf$P+;g2^3ifucT!|qVTB=MLYpR^&W~!R?{Xnn@_g-PE1l3l-*9LW)R)=1z#K|>~-tbcDNU8fumwJO4-s~Bu zE;LUo#K5Fo`-~bU#~S4TK~`QDc1ax{M+SM-8kF~i z18~?)KRIgcj9wg$lIh{=vMda5Y$H|6aKs6M0Ty8 z0`&Uq*|CH(&mUFir>4@}HbO|$h<1W(`W<)*giFZ&t`8-%5Bbl3O@0}ilA%*4K>5Gy~)MKHw zdY2cz(?}N4Ou&^|s^cnBK|8}pRrX5Gmc3Tvm>V&Q{^xahaljdIJ{%savnTR_X>gYG`I} z5_fPnkw!#9*#bMlyXEw!Y`Wz94l9#X%VU%lIttP1jCqcQ|Ez^JM_cXo7?%4EsdYvs z6}Y3bIeyx&gQ&;EJj9vX0li zr?Z^v5iaF_jNj^m87oN;gC2+g2kJ(wtPj$+$M&|I79Q|>Le>BjOC!IekaRK%vdk~kAkRZ|RsOdlQy0wD?CVz^H|Qcx<| z1w#HqmC3f?fWQX`iQOJHZ~1^93j0hQ@zRwDS=wVO5`s%)&`TCp2FzPf|9_a<3ur8Q z0HIKSJFsPSQ$PI$VW@6FOUkQ87__jL{~(&7 zi)Xej8Lv^Ti*Osoj&%B$8b~J3g77NXy6B9ve+mDKGnAoM`JuLSSe=RTjBnkWFlprb^H0Xccp9(k8WTfY`Pv8C}KckyyGSXYw zr*F&ioXzManvC>Z_UYU59A`6sx``&^i<~BpbT*@#Xfh%I8`9*R&SrEIO-6by{Pb;k zm$Mn&M042UW&>$oD_6Ro$k_LMpu$_#;%YH+=BXebE<0pMDd41N&K^wH|UdR;yNpHTj!r%rzH9rmxBl;UzVU72 z4~ljlZiWDJPaaJ%TX1a=TX1dh%o6=Id+*$^v9<{Bf$H+>puKkzK}_e?5K7Rtdu|x? zQ4!U>_2Q13UBNJjK4ewr)2X_^gHCV`_bUN{t(=Q<{|ev z$TQxVzr>DOKSM5frfZ3VIsm;Nw$0C-o7t-^+{1D6@@;Kv*dC03=dTpo6Vj2QY)Ga5 ztG`k`*N1p*kc#x{Q}}?ZB(JK^mU9y!Lj}k5<=k^?pC<=~?6m0otZel&ml&C~z+cu7 zBxwz7{PoYBk0;KqFY}|!?=Qs9lDRES%W4ZU1`Fd6vsSN&F)e2*&R<@FYe=X%f*X&9 zdvL~$e1a&R2XDN8pa=gY_P!RP7Ds0gzJKM^iV7YLj)la}0kgBC zdC6Eix_rX;(p-OHZ@s@kp=9Mtb7N!QM07$;Cr>SFwGI4#I(2MG1&y#?&RIh!E?e*9 z(t3;Ql`p1Va-2EB0JxXO@7}fFPpJP)>d>O;5Wb)w50UenF(ahbG`~!^<8+h4y}V4% z+ymI-!09F-xC!^0LyquE(Tr}s8pUZ+=bi9R$zf^_A2#0>)SD$cybcpy?n1C*szHq zeD^MbHc6;0vn+6mkaN{Z0}HGLzwNv5f{Ld4>Tn-l*wKDI!8h`#j}P{wkFLqoYaldo zkK6AQXR-+bq3MqWI0-_utLOVAR&7Y-Y;HEAV9FGK!V58V$W<&m2B(CA5};HwL)rzD z(Br5(UI#hCJpTu21mi|rm6qqPKa2pDBO#1<)tVOWs*5U|a93SmspZAG>e?7$Ekud) z_pn5IQE(f`7XQE;y?Gs8jeB+yoMRX3h^E=0QXmFqvd<1^*dB};p$Gt5&GD?Ib{mMu z#uej#itX-QtigiUU^(Z|QE}@sbV&PL7m#~4h7G~f>aa`gAck2yYFe{8?h)d#S-+^| z;J~psoP|3?_6rp`h44PB?CfsE0M#hqG&TYAYXq8l`pu**fo%fK5cqC*`PxxmqlT^-12{ zXuPm8I|A}+`NRfCFdl+2A0zC(Hu~E%bI^rzb<~Q89@PJ9`G9`~t4V-+ji%5E#LUxhp?7hGva3R)XPw zJsSPQG8pC8Fj_P1-bev(M>>#^-r9{rcpW}`ZDE9^QOqtPcsJqHIbJb(!}edqhRd&l z^}l+?L|a(B3cmlMYq1zf%VmR`PDzX1a0r z?x8oO18dv?8o;CXV9oEr0WEVgSE!jcAF=)`e*IUbjZM$4(D(KPZf4Z`Hl1t41K{kT z!>QZ6QM^ENwV%Jd(jec~wZ>z_pCBv;V*hJQ4iG#F(_w$#z1!halOo3Q7fNt{PAN`z ze(RDt#EhD)R#z=CKPIxDg@NngsGU4V+6M-hc z_=C%lNRr7glFB2NKv0g=rgr!-Vnz!vil+Zf>E>hPY8}_Qrqkdm%XRpF7zOui6Q}8{ z&3yzu*CD;DjWy3+=RX%E=% zNyu+i9pBrdSy}-g^Cd-SM^lMVQDG2VjkWE^!$%~eAObu@FJ01`*j2^wiT)S?j$h?~ zQiyb9nxbqjF5rM4LrU>~g(WsF>{esraw?=J75d6Dg-tE9(>*A%hf<`8f8Z|vuPmP> zYynw77>6p#pLWYh4BCZ3e*^`nevb}Rq9*Mgn|n{1owc1dJs3J`v|M&rtm_2`(gs%S zJbhUhQEvH)N6xNplu@G%7HbJ1Fbg;Ar3#_Qj(C?+awI>TvS7D=<`HYZiIDMCnIeGu(XYNiW^ z)iVeZE%M-u6j{I%f3ib7x!j*UXB4TQ+WFzE``1 z(+F3Bv&3adOdw6X816S+1E~encp6dT=)PtV3!h@YdhuR=b>UN-R~F&z^b6wk5~a^W z#HzLwZIpW=FMcT@+TS0|HI_AC9qsoF-jIirG2Kdm37?n)S|}t)m=kEZOYHJB?9c)J z?cpEYnqMqCY_H6(qQe)t!&m+FTHBjzT;(NOuCF(dLfy}w#g|=j+fxiR_&vwgS}T(| z$T-K~yFz_`e>R7R^yWsc0e04Et5;0?@&17N4kEEP|E4*{u4)`Qa-@he%;YT-(NOuL z%+D?yqXH7m&dXEFyFxUs)N%~;O|u`h2m9A_eh}yTT8@WTa6z8M{6)W#^*1novoA)~%wN;s-D4;F{D=zZT?+I% z9%MBXez~#kWa0bHXL1Ceui;4dlV9AZsj!$T10Xlq^qQnTzHCpemrI^@`S9VU<(Ty% zMvE*X2p?cNngM+mwqyPpzVGKxl$^MnMciIjj3AgHz;yK*uk<*V4PBHDSO^XSr|7x8 z3MK;>g8XQgeD2U8xdqyz5){JU(``w%$`%x>m%;)BH5}cX2Iiz{36mRN?LAO?4iEkDn@$_jY&$63mIm?$&(Q>|U;<#k;YbvW+S~#}2Qr6{H=GJ!llvD;nlX&!5 z=lj!*#*4eeo;R7y&#(3xcY2fVCZ3Lt<&z$0L)Z6>Zu;wp%SN|1b^IOFul90k zr+#HI?^57@wzYl^)`H@?T}8w+$|0F4pJq>FqZ%Y1)q{NU0UnjUNX9F;bm6j+k!nCj z`9Q|9#|(WDt<`paZ=+v_a&=Nv$k zG&8oxZkN&p1V4Y79X;j0L;f3Lf$<35H^Lp_1vFvs$7}Sm z7l;M;>4d%krwwj~@r&@>zHA5mTVw?_R6o;wdMRf_Vb$)jzxd_IP^D8VZ3gD+Vsw(S^0&L z>Gg4A`?)J={wa*qC1@7xYlC=UVWCs~^c92?or8nsaGi`kl*5&yr=YV<(5N;ZhVsyc zaM;h!pwIb<<|dwjZf*t!n1OZ7XgZJJL3JXz*X0wj&8(w{oLRV~?z|XIaGxH)q2qM! zusg?inB9L4FQsp3-0YrWWpxk%`3oA>w+4qoq;g2JI_HsWxuq$%{!=XU&ESePS+NF2 z?=sssZGK0IpwjH@qcv#KXky+U5)@A*)cB)u73aCF^pXE+h(+-1TPP%k<*t-vv+#`} zXLqalrqhFHwSC_Bxm){ubLZO!_rKR*lz4vp#qNLOOj#B_?tHer`K?RHC+okL*)ggV zDxeZ{p#<7Np#}B@LJzE8N)y~S8Da39HNxQf?8w8s{sp;j_eunWd5y8SYV)5cO7n;p zb(JQJOQZ?kBaAAU1sv3rDWpQcAX9L{igmks)oQhlseUYFSf%C*vzj~fc(z{~I3?J~ zqz!*vmH6Z}7Lbcktkn0*2jT&m*|$&vih`fN=EiAdzlWwSF2cGq(J-#!`nJxuVS%~V=S{gboetsc_0eY{NR3YopBa- z+}zrZCR0?|$(P{>1R)&#S6FtY;y#Aig%`iEUfB$gSaGa?%hFZpZ1WnI9ti{)8216m zecDQ%pki-e8BY*M2BJzlW$a}2a+gmD1Rg(oCzvuQ!c;r72kp>ub|Q^kRx54nJQ=`<#rqc*Nx~Pq+c@R5}#Xj#sj5)k~k)$O{Jx-L%1zMrOHxzN@%HI2(_f8L&CaKVBNqKuBQ?< z{B+~p%j?Q%GPi*!)N=gKVNFd2KMvq2ZYpzHbV=XEXe;7&e>fL0oQdjWb8t98f0+z9 zog|r{+K(!Fo4ZrG-wURA^(tA}d77J80t|n0AM%ia$U$9Z=Jv{e7`MMg_UAkL0@1-k zM}-_Z#WPPdsIjTgatG8Hp+H5&s;TYg*|Gj4SEQ2wHEU1wn0mNCQMm5p=_&vn;7p1( zC95PI;r^1%UpV#g&k#g(807Lp&?hXDwi4R`?&ug&{2LQR9y72>$S0GHDJI9TFhRl9 zX+ldMnq9tbx!Pw%9UZ*4MGj}!#I4-j{Sm=kH^1~}$klapH)%0=oQa*le z(tbljP>MBS=Hw`#gzJ~RV;Y@Y{Qe}_eNUQbLmQ__h2uh9j7*=@1H}@x0&z943)nxn zOvYKxf?QpHyc~8fVGtT+3kOdj@8x*NnEklosr5={2qX~PrE5om)$)agUHW>bG7pjG zNn>g0)vH&vSF5$*>GP%fC!gF|;`LbmdH4Wf=iN63LO?T@e7n_e4qrlshb!@LJY@Eq z4Ni@>$x5yezLhLNG5}b}xi6yeUOa5^KC%;*;#o0&e~Pk2lna(D>w~+=bU4~IP}-He zgQ-!(wv2}8WBM9&CCLzI6qF;mnxHGBprTS;NZ%|hMDOhTrZ%u%?JeYL&XuoGfjQ`W z#@7{YhtUvw92s;eIE(2dTS-?fw>tsHSW6EP=xG81W~&L%K>8(|U3K{&cgaY) zVe>uv3J6HaHHLS(;wzpN$h&fQvl=L-)O!S{7>`Y$7)Hwe`Wb@-@a}6 zZr{FBmd`c4s9lrH`uk>CH-Go%e{0#yI#!v=YJDrMps>C^uM%! z*OEC+m+OjOG=Wswdv~Fjxr{@L#RB%Oy=i=WSKFV{#R!6uHUt{7bnoM78{4&%J~lw^)Yj_@D5v0jD{Hmn@3%F=xyQaUVU!E=ygkfKfHo5UVDbqka%Q>k+=G0c&DM9#}{sT<|c5h z!~%W{8Z9=Qk=FrIq9-$tU(0TZbv%p;z~sw&m#>(kDwLn5=tK8&RQ>HlC%DNHdm4ldKtl}`Pf@~K>0ns-&vjlcc>yNa;A~z_>4EqYVB_gwb@5sWz zd2gs~cx(_6tMh5m;B@-t+>x&+$)9E|saq60^s$ z{L@gy?XC*GVq1&Qcnh!1@@_Y zkoWx%N1D7*z8QMw$FJAiqTUE%*I?j*LxwIMzPSmsrM+~hAo)!XfBW1_zl8SlW#4MA zMPTV&R8+!c;w`Tupm@uFlvdJ1H9?_=m`lba826I-V;DeYPB zt8d_UYC2)FtYEqW(Ze_s+Fp=X7v#e_$=SKA}>m!$XPYJ}L-xW=VA- z;-ZYr+il0y!ND42Fi8M077yHXkKN-IgSam0$i; z!%N@);P@8xf@CKe&7yiUyfpLqetw5SrD;3#|NUR~D;kVpIySxZ5i{u|eCem}<(t@( zCgMxCrZnw^cbBX#uoDYOGVui52*7|`S4@Xe(TYO%zWY7#Lsts{<{JsYOCGkLqqNQO88;Oe9aRe|Gqsy_yAhwLF_Ab+bJgw*&Mv{6Y2!L-moJ; zcJq)nVS=Uf(%B+r+#KB1n?7l0)a`?u!8r=efCNLTGb!nRtZ))^2&N}N(&}0Nn9=aA za)HE+f_pVBZ^j%%qd6W5a;bUZw^TX~)=#D6YW?EX^pVX;Wxo%F{scM!naH5ZjBY6W zq;H0mH)<{kqjGKbAwI7a>`1%`32gUioPdn>i&h+ohZtYwl3~m>(LB}iaB{FPI zYX-!r^Y+Sy85X7c=JpnNPatb#LzwhHD9{DyZG-rKxBM-@xD7!l<)Z-ZHi*7E2|vZ) z)djI=Xj}`4&6ZC*%O|j8h)KajK)_1TLh4z0KEbU=!e0ZtmbLk3gh=DFkT^aAc~T1a z1jHtA9Z#zUR;llO;f;JkA@!U5cl-r=EFKeaifhk80z;DMr zx8#3~kPVtWdIxZc-~9!`(1yW_UjVH4EFYVcHDLx_dfGosEE^1pgIh15 z&{!M5(L?(h!!b!lq26)t@U%CP?5;iwwY9K&vqm8D<*>Q_sE(%lM06_Gr=$trsr;JA74i-E0y%nt{3>TD8M0eIX^y)V5tZ^{ z_1evqTg7sLMEGLqhef4)Kl233KFl7c&QVIx-o22}lC+ovewk9VKr7u0mp2*4Bu7l& zrJpG`Jk}I_{?w)d#LttktzUMnQ^2B{?eZoE~m;Hl)8E$$hO3Y9ERNwSJ=*KfriFr}iBN_^c(MJa=SQ8p0F zA!U}`=;ini*D~`J2G13el?IcgQCBrdRwznxW#goH(sa5%sEWW|T3I#ow^I7xcFLM- zvREKln^8(!)Ujh$PM?ay zhXr^3t{S{x%?TKwp;{h_ik1N+sxGp;h1~WstH)Owz3S7@yhD0HQ4cg*Va~G?B7|K zUz-=uveo*Eyj)x6OOW>y$m!Vuybl-!015**Pqu>p!vS;vIl}te+8s9c2|jiUW!SR+ z=K#nE08zlpmDNwO)#c@E6)Xt)C@+8-yqwim;4r$X|9=avqbu@?z1~2drQ%yCS6^OT zMJ1?(-H+-;eJgivp>F(tSJ%Q;FKXi(sTptay;ik;^E?_5*$4m})V~x4=dZngDWK5I zzjVI7yo{LU!NC-!{yAULq4<$vs>*yw2SXTNUOLYH4MhHfhP$|{6Q@8K0NVl64e^Np z>NJ*JgXap;Wq4bm(3?jaAE}%!nUn{WZ)G58Gy^?QIO95 z(A?Qyg-~`3ISY&@yNeRHA4&!!{16aKSz@KCx!T9igd!}8@i_!qK0!^^wQyiEVuryB zz**s{Rw#$Ft4tq`KzM~h>f`i!dz~pwkMNIE%7}fbtflS! zr$mf+tO;CDFW}1TR@B-u6+Y3DdO2lDJt#r~UdjIh3;D|!^amVSNKdY2}&#7GmIF3GiAP!uoTXbrd7yYeBA#!@G z4iKV=CuE@^L5&L_Q1f3nyhK(=or~f>5!5%Eg9v91LGB3ld)&f#kmS%>8y42!IKtaJ z4hH6XH_ZbVn*EP}1t;4XYNWUKLybvH7sQs{yF2619qEE&tB$dJgUJ9a0Qz7NUasZs zv@}b9wc0vXa|Z$ax|sskaBHrkzEB+lFGEGzg53vaLzp6{a*lXvPzVOk5J}QEK;(lP z=~@L&pR5*sPntXcE1?yXlywe5C`3R%^{o8twB0}HcGSUAd?MhpHWJh~SeJp#>y7CB zDfV)p+Qgotrk;esZFXeBCMP@>O$wP~!Ztd8)7n@Er1d5|BLpB*h6h_jc}&GI2A;=W zv)>vydNopd)$l+|?hRT<0shW@X~=wnkSkweW8+3dEAB*REWx(7#9qP zDGBCS=0U#p4OvdGx-$OTfSRmAZUG&fGrd<#Nbzr;l1USqYbbaI;xO= zK+G)?jkH@?xiN(L7J*{}j1_4HlP?=;rhAF2037uKx?8qEhodl}#7JpX&iTO};sU5k zL{7m#Y)HDIUBDsa2+m1ZN0QrcGAi(q2K|6(G_^D0Z*BFXVa2-_PgSs_m|F0S=MEBc z8MU7qggAXL_ZINzJhS`^*x8~>7It`l9f2J=hnUzH*Z5=N;Bf1^sPiO;CS}z;!|p?u z_HY^*PMXyA8h`-1a4dSg*xXoJK_`rql361meNDH`Da}b^0gY_Fwj$;(e}I(~0T(X9 z@3v%p>7>j4d5{}Nb!B%H03&%qWGv5Tw7^6}b_Gp91sBjWAGj?Rqg@tUlL;Vy{s8D2 zisKn@xsIcq*TTLFXAnr6j4fO;OEn1Jwp|X;G_E%23g9YOk{MzP=URZM#sKSfXcE4Ey9O%pN9r3N;v2j^xnl8s9uYAU*}qSU1ucklIXzQJ zvJ*U6rbL7l3I-ub)QKSL&Y^EW(&1o2(j|HdTv{w-F0N~bTgv|(*Ld>NppnrxX!jaY zlo$lrK-n7|o$_}&rtWf_&ax2K;~MM=aRpKuD_a0*uA(e#C}7066B@UF3aT3!hMD4|9*w5Wy>)zG0DDpW&*Y9LPy2&w@WG79=kg zHUKd|N~U@+b9%1XKRy8D(%XEJ<`j1(gss)bjdN5hbarhOD#tgB+O{nAkZ!#KOd(=%PpaQ`2M8y3P(3#wB!WCGjxW; zO;4#;j7wpXO6)#&uQpVq8e|8&y7x$*V$?$s4~X6e@&;^2L8P`_>}`Wr!~p@L32z(P zTOQGgCcRLNfCH<-aBMuY(QE@ELwYSy1&Td7RAEASk66xk36|6|8gnMHc}m?Owt0H_ zZ=dx>djDU4sNKBbBU%Xx`m~&jQBF92*6ZuI8)>|R+6p3&CC5Qw!AT^oMZ}FV1bUHW zM6!{+nVodvytuau(ue-clO_+&Kl6Nn1elqCU|w=+4DBW0Ig2mb_HxfInxcaE$184Z$4^p6#*~9+$gfXrfApShibkpzLRs~21MGO&tTf6OYnuwhQZqEMJ7Z4ts_c@!H{9~|VRJ{g9j zJ!!v7xRnSWH3A!TYx-TTSnez0+m)u_9i-95HQcN!@AA!n;LhoqY!r0{J%+oC?_?i; z5z9Hgc8phTlaK2W;~%sm5sayBO;i74OF0Nr$9F~6FQTFmyqag;U0g$E#VLY@)#B&5 zRKo&|Zvw^X{RL`b(ZYPJ%$R}#dpKjj$8{4>xuG6YF8}t?mTb^G$Krru_n`(j`q3>z z(p{Wj;Zo0sclxlBwFOfuI4F}kwbuuK3@Z~g3fCxn9)!nj>_;XTmuKA-_*Fq%Fov1y zd!*u`SMBrBFQpqhlarmvAyd%{FqfMnmr~DE8z{eE^Z?U>5e4wVl{E65iPkcKgsl&z zkkfvQv>zg10BZu%HxVvHqt&9W51M_HDZT^Fu{b_ob?V#NB^tlHb-JlMzryB!3Txq{ zkFN>~fsa=Z)V<51mKLtIqVY8S#*;hC8QCM|-_r9uj~__!06jp$zZ(z{aKjavjw5Rh ze?YnUXYJ$+V=#l!i+O-jRz(_NFwtmAQ~If8Rk{jfWZ@2E#dhcbV;NHY*SSxy9npcx^!< zb`7W1TmminfOBGldCtiu$#u$Cf8Z&XX8w!qs>f~yq9u@NOlt`6QCh45HkIwKl7)k%Ca{HY&+C$++Ee`sB0 zVQ?jw1^D({MNxy`Z>>&Z4?1ciA8Lx#WQ^U3L_!4z!;*?W?O}Q-&0~ebDJ`qDnSF=k z^n}iztx3B&--z1=uTV$0^21|wEA zR~?_)Zy%iwM|8`t&qFOI*uMqM9@+flkx7TO~CSPOtczKN9f8aa~V>N>^ z)>uYm-rL@ahfUFJk)xu2SvPu*0Ijg~{t@s6A*LyfLkW^j21BD{#=$WI==7MoV%Xf< z#5ibx0Eh0m-cba?YbTqPHa(lGLuD&vlqE&2Da`2>##NmKL@?BK2qPuQqCrH}z6)Z$ z_IYJRQ9P+2zryZk;^ zbv<5={&adMb z4}T!=h1%-0`y63;e<1Os25W4;gDJNaW345N6Nd!fm|-Y+$4=*~p=ft8<{QvaG$f$G zK?bAHQR6lL>?nwimmGffIqV@B+h_D?7mKvJ4Q?s=68nsWx_t0&Af< zOIMyNn=U=DS^1?$TxpZ5iwk$jBAN*eW2-1?k6S(-L(iv0G8vu;?{S-T5t*XV#MXlu zt%xte!Au<+Y-xEdM4UuWP>E~ds8bx*0%dy)Z4pc(f5Ds}{EDEms@beGwuym-1---? z?g3HxYux8^=bn8QqV0}g>^xY+SHYF?2#1_TYr=7;;NhLS%WzoπfQhX1BigZt47 zSgUAkTyYOMfdQJ;;&4UpHg5rm@+P9SsC_i%Vc4hGfmoI3Vx!Volq|QPUMtH|>D;?l zU#>3Pf4sT!$*ru?xn5shS;gb6)fM8U=ch1Up2Bt`;I3VXyQ?|d!bmCrsqFZLdKZvO z#b1P|frDCV1>sjPLYimC`RbyZeo1xjdHEMnE-N4lYaJWJ@q~JZN#%ANwm2Mva?*os@0qr>Npic z6-Hpn*O%Fh<-dN`CuhRAelw6ugw$XX%2}fTjb8bcZ32g@!T1-}dBgK(%#Fgm3`b{< zf0{aqW(hEQ*AYyH4_CEf=&^z!Lu7DQMhf$m4LVW-HyF<*_#E5=y)0)Ra!>tq!Xzmp ze+o&Rh&w?d5v|Re+ePp`7Z>r12?~n^-lwpv{JBTx4(vGcf}4ZSLm@2j&B2`5<7Lrx z(Skkz3b{-2NG-{88sk}WW{;Pf2saC6k73PGdMgH2*RPX&!?A}t+$z8;5eRAKIT`De zlVHR_eQ0fn)+s$Keb@@&ab9bdIAZZ*e~o+1sK%0k%2v@ny$ffS18+_{l;fn3tdTgf zlFsFGE6*sn&&3`Z4WHoJM8oCd;h~_)_@89XDf=-Yrlv}Qvh7hqX$}Z*v^xF}+vq|{ z*QK1f6#0>)U~Q-Mn=VAxd;YDaLK-(%O_fz9L|OWErPbK~)vw-Mesuj$e*MG2f5jKy zd|7oaW*C_%B9Jyt;{jaBj^{=Yg~5r7_5+bqQuc5wY0mZ}BrHPOBG7xkJt4~>xN}Kf z9Cj|#+|*2h-ktUI#1sfIYo2D3DSd zoIx!UN;wX9Md8JP?5#pGK@W%FkD)4qhN{R-0+sFV59GTJ%vaUP)vTwH7%u9i1{{;w ziz>)?oGB^x;?8Oo#({Af;$^pK9H7jINj+pl=Wv7}=qBw2QhvK^NRw^ne|MYTWLFr_ zY0B$aqbnwG#U;&y>PmaC_fC5d$9RCM#Rouwv%i0EfGI9J6{%Z%Gmp?AL~t(arA-~O z{Rw2J0?Iq>bbUie*HDRjpACu2tcM4(1j$@^gV*3pTVMR-z#EU&o2hsBn9*%Ih$Ae;r z`yYK=c<(CNyo7k4deGbOAbd|cJoXLIn&V#3!Vor;q{52lt)t2LIZ6X422jzTpo|Bz zX>l&xZwLK{&j2!fe-CyyQbv5bM@66RCs+`IP=S4I?%d*7K8K;5qZ#cSnM(;#1husv z1~^Tgr%@$hU|&czMZPNbA8MX#hRL35hq<#xam237g;oSqIZ!1eAiunv8CNmqrhh~H z^ewz1f5NZwOU7wHsX}dZ-XE<_8C@3!H+%yTT$`0Tq8#Qre+77mB%yjk138pgAd^c; zt|CHt45vhVCA_DrhW2*|5{n2N=|Ch9I5OKP1D?pt2zuzpTBZ~k<{tt#Xc2ywlVf@- z!WfnMx$~O{*GeeZc8o+nT7@Gy2mo>b-JsZx7b6xL;V{cm2`w={l<4_kPJ6p6u|%U@ zr58LIBa3Eie^B4Gfa9t9kPaQRo*Tlto~jq=G}m(9%1*L}xZy{5Li$oA^3j3=bYHr@=DUudGHH;TgVt3t?XMj) zT)r?4rTMTC42uTDOTKe+4ZRXiW(Xt(oeCg>ZUB%$f4~h4qy~y%bGXOK#=HeA4y-iO z-kC!_eegN6DQpev>f7mm$&Z8VF?0RuSC-Gr zhmg!6fHGg>xu zpi0v|52^P37DOnFGdlmfzx-RGVF0UvgM89le_dTovp$Zp{#VJWXp61@jG3)pnBoiT z;4v|%6wqw`cfSRMG>iZCKTEHE_gl1RQxLW&E4EUo6!Frm(t}W`09g7;|BF?MK1rp( zUoNfGN+p$|gU^nK5SCiqzx%g;g=!~FsraqE)S~$ckGjAB^Y#5@^6gR|>MgHNO6ICN zf6evp--Q0X^@B_McbfL^H_0$ceW+ z^=o^*!`FR%z1`e#uXpVAR}i*5fz1^)n~Z_ZIPP+UykxnKlw1F*`O=kpY2}_Ye^*4q z`lz|Pu)XjV5CQ|L$+EHq+%c6(ckxkmsq*B;17Quu%|{Ep@eMp?Kft4JD$mRid_UYk zjvSvY0|KnP_IPP!@dqdiXcLIO@A>d7+It}7wa1IQi`&Gqi+G3j_y*VqjN`cZdabe- z^DmF}RW;l3uzP#Rhfy0hDB_$q8 ziKMxxH@XbVUq{6+rxe${qaZ%N#G1-q^ZbPYNFuWwFV&zYhd=N%LLPVlLH;j2clnk} zO&_aTydiO~`DJ>i!Bu;sd1pEMdIMbLo$P7;A`l@CHXo1;r(hoZt}R=Db#k`c>cgFB zDpDkv++-0V1O7)ytl9jvf5(c`y~To(i}nh_Zukuy(LsSF-X z#7g)^UJj6TR{7BsJ>>8BF(ncR$0URdZu2SG8U1uRPI6!ob3hdNDm~3 z@QiSpwL7b;OC!X)_kF=h@th}cA2p*h=Nr`< zulDwpbi%x}SqV?tF!~cGS;sf5 ziB*nLXz4LWarTGbe_nHKz-90j^B7s1l-$`M4ptmc2!c946LnItK=-m!OtAj8@SHQ| zAKkpc3;1vqSFws-#Eh#VLR?_YGI0Cy*0^i%>GIY+lJD~G)#30mdP^;zx2}{P!R5p{JadyLd#9aTX(*sugiRmkg!r=*JO6 zZyKQ!)K-*eB)YEz?YUlC!GCwMmD(DRsk6;;U{@-SxXtcHEHt61jL-Z#pngl5wr%X+ zy^t9V`po}bfA~MiZ+)$1@ilX}ifbm|E~BJVCb@V~ZOWn} zAOfL4PCp3=_4D>I^g5;t(Rgke$}M}173B=Eh2ELW21nJ-XWN_KKGuIdvOsyJsjqq5 z`Ikz>R9*rT%#u_%MwXmczmr;)v$h`44k{PE(v;%RGa3zWsu<0}Icc8~mjRw>gu=(U#R{YsGHlg5i zL!SXS|Dxn9_-u@fc>r1<0P7bW4mA5q$>s=_s4h??g2h3c=umvE*RgpjE>L3(VujgY zB_PK9f8+){49QS0Q-Y%Es)`2J9I}cGt7Mjr0q*%m6Y>5M4v1Rn&b_XW3W?kf+;{*} z2Jb}#vE?)&;vbUYsTcBkfyhBR_SX+F z_wuVVeeO2P)?dx&1t92Jn(}-L6>o}_*z(L09n!+rse>N(kiCr0J+jSPU8#)?2vY2YL3v4saZltre^Uy0nkjy zAujJ}Kc>77y_k|A^kGT{--BeVcx_5MQ2si!U;aKcU;cg#obnEN&wuKiatX^wVwNzD zBv>i4_>aNkmNBq7{#ze?%Q4p<^Ytmmf1h&s#rr_~Tthqz?}Xc}$9AtCG9HGiF}dE^ zB1DduJvo;ZJFdH}yhWVnIC)5GDIU^lA}8l|KmY}5sv#Md*Wk{2^=P;Jk>gq-cL}B` zLc%<$3M46z9#3LCB?$y0&;`H!{XP#HI_zAxMcrQXo6hg9GNb%=f@#GpiLJf2e`hWG z{t^^i*~aIafO>Fa4(>t%^6GBSz0y=Qpn{3LINOw>fgXdsK^~sBwfR;#szkMM4$L`! z=)kmD%9tTE3}O|ZI*Ur=?e)F2E=0jrocve~7Plq?6u4_wufSb9=j>7pCzwWE6(}ih zr~OQ=84YR^qf`ERs!LlwE~go^Mlwv04pVe!V@O1TGd0Sm2S|gQtnjXV7T(eDC?Gx{ zZnp)gP>{3&$NlN#d1LPJi|(8Ushs2nvKAn z*B4+z>YMsp?k8$?Vm>GdEJAgC5w5Lib{OBnMiVk)4xe?HIrVx43u>zLb}`KNqo(aB%?Y7w^$avw?NK=;$%ekRRA&D_=0FoV|xM?L%O0q ziVSbyeH6RAr1eG!G=-sue^mI|GNXnB=AN$&JQI5mHkrvA)v`gUu|Bv#P}1}o(JQ9e ztx6ySCCGwO-C^@3Z=vo3KyQalkdl;2kL9H~aW7l1$z#m%06n#`zve_M6Wf18_>5S-%# z3p&g`0`tXQhv5Yjzw3LY10s2(PbblcxQ5()8ZK#~WGaAOIv6d3jAjPC zl(B^|p$+znn{+Nse<9aobtQm+n)1OUQOsvOu}&#m;gHZq#p{=5_aKl*-40I&BhbN# zHP`RyN5TxgO8cs-B;v5DUE2?CA9T5}OL(h#w8;&9W6*q~?Yca+4I4n}CK#IT;^x4w z``M7@QNQfYLiWk0UCg(zj^s+C`2CF{hgJ?LhZDHRV`MEP6+98Sz2JG$Kw#tv97BLgH-^g| zzJ8LtUA<|qf4gV;8n%cfN?$m&^_Kc&2iqQ%#40rHnn`qLVM0h?5zi9f0yPlioxJiM zYz#Vv^_Evc?%jY9=Xvw-8Uu80cqO?rZq+Z$&Z{$&=4uQwMR9&|RmFLj$#R`Jz-|a7 zUeIyktRX;|9|SeCSkf4K&ie>bQ#jG&0V5=fB7Q4;eBAbVlU~P01c2#*)qus*YE*Wc!&Z&4D%d{wKj2kI(Et(lZIJC|uQ_`f z^b!Ace>)e?T<4>4acn+MYwEScxjXui60AYTPVG>6`UXTUm%`E^>|~)^zEpTJ4sXX`x6|sXJHJ0L zbhw@iHYvP7N`iaX%R-#D?WS$63n30+`jQ|be?Sjg|2=j!^rob%{yXwvO|}h1UeCuo zO~70@`#(=kGcyEqvyU}fD0OX^3U6Gf6Qd``ZH6x2-yyxqMQ@di?%iefG=GKyI-zjN zyHnEvt%Xfb#5F(&8=4WADBE>DAc`Ko;13L+(m}^NluGUJJi()qV;_hHf|A7$+9#b} zfBQL+9C*L~ks=uJ{B%%>hgYbBV$|8S=qWR+4(1qojagDy&iPqo0r1&-O`+_R)+LDS ztO{hX(=tMBW|aZoGHIXo#0ffW&Cj0$@(c+AayW(L7dR59AAihjFo zFLr`FH~2$OpAP_OERAX~~% z^`hGaT$f+0?o&W}fWW;YaEeDy;gj9OeF#Vmm7zSqu7uxtn11IMI-rNE00wVHQN5pv z9x2kyl|c~{;E_3A=4h{Q%@S48Vo@ z1D)+D$Sj0cF(z%h1alUKf7p}p@NxS&z&8jid@P`|ldRi68K3X?1lT>b&%U1YLCZ(5 z);{k3G#DcIGLY!yi^}l6Clo1O74rL{ozelx%h+ZO2FKsA0 zoGh%Zu##UM4*_QYUz2O?i;MQ%<=lKaLxr?fvTx@R+;9Oge1o{ef4fb}e_r$F1OBtq zgm)JE(b_+-aO7d?w=2~*9m4mQj>a!AmLpnp)S-r3jv_LBgC zqOd-;nS7DMv&ZVgAoy>pU%&n&G62>=WST`DisKO}?0sd|`TW%Zb=ZfTVpoCiu|D+0 zU6*44wcDbh!XpC8553~rcoU=Wt9PUAHNQX#FjNBU_Q);11fUTDN^SH}>yhFc3S?t7 zsfw+1^X9+I$Q!+ge^*N!&}h$FU&zjkSe}~Ry9enEMpt?D@$L+tpfbJtk+QeL2A#81IBa+kSVBor)#^GRpa{x*!r^Z(Z zc%V_}m)8e~WD!j}?OognqAwWo;$`ze_NckDKD_(HTl>Rr+dUYLmU{T=$_TI6APhs+ zd%i5%Fr*|nKtoUXWFH_gPzgV}+ctn7p&{-8e?CEcp&~21dC52W1RdfSg^?f=^aHwV zdyc(^WAyU+4=8~jn4TZ#Q}=W%qxE#W(A>!$-F?amA2pw%Cgv8%G~L@wU!X#x=NfCi z7Ym%9JFO^;qHR% ze*`CO(mzO}$8@(=pKiErfDmxa^KWf51X(^DH1A=FhzW{L<|s@cys_CGdR~7o{ai#t zTWE*n`2s%6M$fmfimxrVkdO+jL2?NFt;n)i$&#;L$md=c(_uISD_9Ang~2~|!-xK; zMGsQETecIyZ%_5kh9k8~`ag$LxU6Jae;mOe(~vm$lm2Vbw$XJJ+$i(t2`=Bewq~; zg)|S81Juqw55DwOcxr?7uy)lH;Nl{m)-Xy2ckE*Jmg&b})+!qvH}O0=FbxiRe+Wsm z7{1UZZ2iz_jDtRP8$)w0R3O`9Q5H{bYL1W*e>Muxq8^VcXi9^bWSHI_y`O|1d!Mz_!!C&zhy_^b zx>!$zP5zZ_^3S@>uSg0>DL%7P{p=WNw(-|LGmRFLbnhX>rX5MP_gf!RcOk zf;7a;A7F+q#lI|%$c-z9m|gAB_#;B&aJ1+f|NUgKq}03$T0kzb#|A#`VD#P#V>Hi~ zh}lz|CY}djU16U#IwP0}Ed;!x_T^;!4ScTS?79OZr^#Hh!8qE@GpfNq) zH*T#k-=!a$cU&o7A`A?6e?3MQCqlUDIN?pXY88f-plkfpZ;#)z-EF{DgeVK48f%Gn zcQo`ZLJMIjF2II}=LT6RZQt2)CuN(Q@x)JJPavFUNsnN!4z)YV}5~ehY3k@vFu90=O<^2V1q}PZ|jA4Rfs2 zL~i(sN>cTup*51Tf3pJ88~}{Wm6tTdZYv1-oIvx~rDB8&0*bt*^)xJqa2;^cfb|XD z_lsN#M)70;(JqH4SW^$0u&3MDcV!q8Z)yp}Z9$=(MU?VZ-rLOw>)UsC*0(Xe8~fX# z0=4L9Rn8Zh+gtncN|GRuBN0W7u>S`_Dh-erhao8(w{F?xe|t` zSTwQo8q)hjvR&FAbq>r(V;A(lycmfmqTlYiVk9n8?sOKt-|vdAVg~&Q=jtUypfB%! z<)-N+#_b6%1%JBIVgPV{3gfNLPx%7BY9Qya&M1E~qdRT!BrebJ9E+U+;@{Gm#U`J5 zaejLpa#5aDe-UrQZ?8pcN*iy>CxOpR{)A!2HM1a?SjW1?P0)v)ySLmjYTF>NO!$X#p+L;k6&+76R= zkv=L}q#!1?LLd2seL|@kw{96(3l=|pI)Y8LWjJxwf64teB5@>2@$+4X21{FV0m{nS zDMTJa7GTY$&h!i?YTBF+; z;#h!!)9j5%<-F2{>VMP4j9SX{H=s50_29;uDrHchD4v6lM$puZS}UfFFln7@JII$M z9WKO9e>4}smCA+diiPb1a*CrC))+#f#HT_C7Ut;{(DVos#5kOiH9qboET@AGQM*Dc8S?jbT+eBu+A zRycwXV@*>PP}59#ej5sF#LmWD1Y$fBGtVy!7v{4$Ec&_ULk2H<0=czD6A#De28Mj& zZU;BC4gE@->tIe`8N9wB;Wz6oq`>lMgMz4Ybon*U?g12BJ}z?{Ds$Hb%6#p^WG-Ji ze?fM;g!-P__Hdg6+XOh@>(IZa;%sL{V2>bL^5ZIY5bE@-Vby_G*3#h8jgr`PYJ^B< zxqka3tPT$r!Kk*10pj#LfIdA9VP!jv^xze?W#iM4JwY%&un}p#z2i58_;CPZFt6!hPb9h_7Db1Ee-jdATj&i;8A@dTpd}IAaKZe12x;n`9oZUX zl=FM4gsVkt8!;K?j3fF(qR>s7Y~(#D>V{0 z_8+o&g*&(Xc(v`6XeVno8Q3KrQLF;x-9lUo;#cHP6ooYAqIW~`ngmoQ8OAztD0%KL)*70oS@XAtfWoK?iV zb6ywj=Ub;UnW3u=Zm_vbIq>>F=CDIp_LgsTHa`61?CF;8!RNGLA@=H*d@lf^Rdrk<8xC*C04>$m#<6&AR{`IGZ-^r=I0MLn=e)q>-mr=M!lki zqehX0wb*P^`VyCrtC#Xj1Tr(Y3G1lQH?IcY;=^$tqD@z>YhMomD0=iF?iyJg#;Q`3 zmFB}uiEV_TVo*U~CCJ!KE?t*bO$0Ro(3g!(1Q&lF_Q3v%rE=PLii&_#*O@y!S6f4* zYbEkwC!QtRGigoPLX1D0Me)`ABL;|c5V6I4k`Ew{eSxD)Vv=$zFv1(|aIVFGy#SlX z?EKvd2j5W^-cWqYPY(};>k#j?L-nf}9;+F#q-g-wXQv3@?9${xassH)3TT8q$Wy|` zWM6+0#1a%eRe(7Dq#QSGgg*zvQ`|}X)On|H|ndesM)H-KqMBWfTAN8lVKEQdaQu7Oj5V&Z^YT*yoroHor| zVTleJ!3(*=wBmK7H<)xgPFQiLc5{DenxA*4xjOwV^e|@2<$l~9wuTM&;6j4pt^B>) zX?5^YeqZMMY{&XU``qachJEQX1L$QZu>A+a@M-&$8rYTqRGiYxzg5|zk*$ALSet?k z69;Qi8Am`g!}H}Wd1$cFcVBVhe*$&{T1rZZq2faNRp3qZv(B@PY?nwmr3-(GPE__L zELk``!*Mq#R7;1h>-&z2%<;|f=G!n2bl&)SqJC_*d)*mqtPTm z5GfIMY{_!sA(MxANa9F#oH&1WBHEIi#8t9XayhxV&j9?tl~=gmx7Hrd*{1=J$}LMQ z^gesuYtL)1^{o{hL>CG%13OY1{if6VdoJ_=Z*pDm*Vwg(c`BY$L0{eeA3@C_u9XvZ3 zv^;3Z#92!mG^1y_AE+^CwRKb4<^NB!3N_D9Sc+3R^S=d)!3B&hV+w5_QKcuJE1fJ; zl!?iYN??`^5$M&W2v=F3tVAUvk=yWiNioAxy-StrZle)gIstc6Eybxz1-Qpc1cA$A zyBownaaW!r!exQLMHGL?VELZ9o|AirD7<3#g_XHpz-Ju4UQ!#McF*cK0M3*=WSNa= zik{D1$|vEvOVP$V$nCm9)O;qtBNin?B$a`j(G3oZwtVT?V%s%f?ulOa^03JA!NXw4wl8x9OphKFjwa@X=hM*XZoG*uoc zB(W!sG^n8QeYs)mS~c)oven2y06VX4;8aqh1PRrS!@p*q%`t2$rD*f*%=*0t`PP=bcwri+eP z#P!d8-!K!h9OUJ}ubpx)!$!h~%8a)1c$QLg$TYx7ermVHje@Fyfz8o2Ti~MTL)$){ zQL83`+6kJ<(4jcg5X$Bfe;I;FGTw6_2LOAjz1{f&Jn?^ARCyplWIlnUqAP7(bjTAR z@>Ltv93RIESl^c#z%p$vHMm%JnL&X!uocJ-fzh_L2f=J(L125hjO%8Im}@?w%RMN< z8p;pM@b2a|CIfsSh#ImQ;|Ay#VVo@7w8ov#PbL8;00@2?ATzSWiaJFfDY2a5g>E{zrndAQ{HI@`&}k?umqLja&pnEIWs>m6=f`RiQC|GlAm~ zXzHioI{tFVXRNgb2Qxc|3MUP+k^Jl|#sar6h^2p%@<4M?2$PtJ(YP?(5eihA?c&qm ze_}XTidlZ^c99xAdboDrvQ2I-A$31px$943Rd;%N<2 zdX#Mv{)Cd9KD%4uB&u%R?%jwxEAuH8o_j!%M;X+=v{OpjA+m zs}=u9dcx{&pc)z?k||z(c6IXd%$yONoz{PvL#|1VwDKyk5kv+H!$(H>5_unso33XK zvz`%$CRq7{#cjo{Rz#Drt6Y{?^8qk$pk=fNg^FPW_Z{V;?+Dc9m5P$Ky!uJXQo|lq8(_zYmW9f1UY|g zvO*Ye0?IsSVjkMTz3;JO_d=o-rN<7q#b)fl48eYONSROj8b)Hiyudj2cIv=vbc#gn zRfr;i8Al*-d`t;<5{~@kn0{28z&c@~%qODEYZN}f$a@#IB!d+Cv}|7BOlnZVmJo+N*NbdF34(@*w4cw_{W``LG z?nVb2IGW)lN|{;fH@5A#>cBQ47+A2-)ds>IE)pErZNSd0h>b$>Ba0kFZM~LmY@3z$ zG%4QsLPzW|+E^zC3GDR!ZVO_bsqvMHx;uh(D`QRHr)z4-juF4Rsvy6P>0 zs}ePV5|>??N^n-K#cEvJfqPrvczR0WJfQ|6TLkM3S7}dd74T_o#hf8Se`HXvCR4L> z>eXaA?JOjfOGJM%wdqfVp-kl=T|Dj-SlfIlrCht{p@D}mII;4Cg;s%@tXWUMWq^9L zjR`(A*SA>{4G&AhdF?8)v&1GOO=I1tZS>0}RIIiK^}sU*cu{Zx7-v?Lenpl0>f|g> z=lTH+-Fzb@Z6&iC0R%HmL$~(FSYsXqep-45Zu+fOrd5Bq41^VMYXTlw$~Iie9PWFk z#jXO`anXUN@-R`AeR(?g2*5AvH}u1bp@w{>&kkQ{^&K|y3-##i-;hn)%i&T!FU+mC zMcH1JU?YHQP)28XBvSPld5%$@^-bh1OtCJc-C$?Q@E~PP~#uE+E)V~2!K

x`N_yt^jcf8g>$<@iQNh?@knjsS;TR~+GB)ZIdIO8k|(>iz)g>Mo^D-n60Coq zt&vs*R!irLa`E85w7jtje!Cd`%-w`JQM6RMc;*NyD7BQ8DWR#MPmZQI8|2L*85Kb` z9;8X!$&K|TiX{OGmy$4XXXpX|lZat|6dGhKJs}t9>_jKDP=aU;Y=5D6;r6fGI=^D; zH&r2=OSF#FPh9(Y)(J0>2Qdm$)Qx|LA8BMA&fjt@smQAqQ}oo3s_T1>Y-!@zhA_)i z54a|su0$MZFNy7gOGwA7;MweA?egO-BA7z|%uL>vs-Ug3W%F!R1SAH!b2LO1l#2us zPKL4`iFiho2cXV3v%RWutGRZ=)B!840M_Wetalv7NggKWYO^NR>P}pFn0p7&ph<703x$1M)VJX^$_bUbHNJ zR@W%}z!5$@$RG3qUuGUi3XLvG4o1N0aRAIasmv3bJ?4UDQtD$lGM)l&Fb~ii+T*1S z^W58pHPB53bS(YjrQvZtb|HU_;__)y;Zx&V6o6J-U0G5E5Q4PnTD0LSmU}&HM;@cN zZeJ(r79rd?0`r>1eaJ=@AQJPO5#UVbE89&CQ{|))pBxoUT7A43MmgwiWo$PV3^vLx zipLq@5Ue$Dl{4Ckrt{vo_%^aE9|C}(O7`C*dlrct_GSnGizf17{bFq}0HKb?5e zee6Nhep9a@fecf8lGigAEdk0YnAU=HHFGbr#$Hhm=y2sqF9`7%_W|7fi#AaFk)vUC zNYVRI-cYMb8Za?uKjj=52Cq|;>ZB{(D=Q2UiyoR#Y3)>jC-d6UP7V6vjC(3GH;7oi znJ53QoYeBTlczT#P;!4iU@U4{<)Vmgu?-KT{Cy0Slgh>E5YxoBcaEr}t?=?G3-+}p z4M^t}c;j23_UPVL@5>n-VR7-^Cq(kR4tWl+oQ{e%N56SF4;!hzBYW^eF2X2^9{9l- z0VAptQ-u7pPHT|K%O(e_M4qE8lSE}P!0i%?AON#L!W;lH);fOx92?DVK)4rGJ0Xz* z6>UMjHOTc8n1I4@tY&5fHJ~F0^h2Y;!=uHxgLUG?Db)LzuP>cjMah=L4)HX1#u9kT^T=oBu}fWj}bt?^w0u`@YlVV}A>S zvY5G6Kb6aJDtfy#dOKBUy3EcEf@}ijk5xJ`9W;&Y*64)oMPU)>jmSIw`$^uop=}FP z`A{PXR*yQ!i2NROsoh9aWpZ+ERfIiZaE;7+-0vT0Djk2$=EZ*W@FX@futc1V>|2QO z3mz|Vgt+5QlV?jMTzJ)Ju0p#NyAXMzcNAq|1P>WdIVa9q9opJgE7S9_hzl2F>MFES zB5{Otpd_4%#?9+Xp%rRFkv!WHnOptU%dljuuw9dy8Ci)M6XkhTs~%JeVU(sv04c_; zmlhY0g^_=$tqKa6Nuoq;Pd2BzDMUEjf4&AwTN%Y}_&wyl!7o)_E0Qu#J<&DmB*@*n zIX`-`&=tx&68y>mAee~Ix`X_##N&}r9K!U|q;T!HfnO#NHR-D^9XErGaOOW zgXa{Chrmi5P@X9x9mugfzc2+LRuPH}z2QAZSHlcy<`F zk6>bezrqWN2#u1wf&vVq2xgx#f_S}$hx^NwxltY48<^iy&yVy}<=h5k|H|3Q9Y|*q zZ{NIw)6R#CCfp=p1C$3~XgrxPY+GEx?%;n21YNkw#o>7A(c7q*%z@AmRq|fUsP)N- zqZ+AXE#wvm4M)QZmr~9onPI9O8L4}6M8#!A(j1EI97L!a{lFH?495$C=ThWr-o1P8 zudONsV+pDj4$(8M3+>el?RmgRc>PxurEm6i~_lt;@HK?kjwL2(D{Z-QgN_Hi;Qdr5Vv{V8r(UeX~ z86`$1B*T5N{v4=}1q9WF5RVCqXTUUaj0RF6lJ1lfg2-e=gObAeIu}KsO|8$zx5w%E z+!gR5UY<+)kx^x>D=<9|bXPW5Kk=2htWn6jv{6H$T;_fn#>st3C*MzWi#LD${|{!v zH=q9)?En1!seCu>=RcWG`~5TfO^@g8W)L)oY zmLHQ0zctkWhRX&S$f2f53Wo`4nW#3v_~SWIf9pDrz~j=l9HV=Tv$OmzYqVvp=5kX% zZ3S$j@T=LH`q*aS*LY|;>a~CDiOrf)S1j;Z+@LY4dixtRG81yo4hNhG)tZueX+akv zDA_1!3?ab?&|gEE7nP3K&HtyH-f0o|SemYb-c1%iP22?WQ^QRP&XS*)nWhs=rLpEYQ#sv3Z>=kUJ)bqTgXlel!y zFwmm=pAM~)i_u+G!ABXepQ$Nn^=ht%Dk~DaJ~L`0go%~;o+fS zhIf zRq4;22^x?qOB^;aLF(=ubxQ?2Oc-K zS3v>*y=@$jw>1voR+tYt+l~i9J~;c18|in*Kzenk3I7#Mwk%gI3%)Ubm1#HX&q2Cz z90W5U5Ka`8UfPA?B2=jbC?TU|71#VHF<_c39h};M>sXX}AP6)8! zPaVO+5b7TV{!i)Z9Qbg5z&c*j!SEaR@rWJQDJA`nhqP?@77%Wpm6FUlY;b5xD%xrN z&TEzCHJPqclS#mg*H3c}n(9G*%q#9YSK6Oaqqr+Dg4uUs+wQP37NY za#G8^<4Mz%Q7kO1CE^hN;UO$6)$(DPw zi{%J{{vnuhM`4)#!6S9=zWVR7G8II^)G&e|TL=dH*5PK66*skVXa{4Z)=0Q!6osdSTR$i^yD zP=#QKt#)3T=~{w_&hLMWioVpnrh8swwOk4*CaIBnaZ)~mkeO2LYQCZZSr>7l^@?)q5Sl;bz%{&+H-thWEu{CsJ{Al93Dv{!A`CSw86gt2Eu~FzteV9?06lE(6M!yr~h1xo<;v%NyW!rvFx;hr> z%Jt=1R&UjE8l=vzv!0^?H8J|82axp5X#__YEIerDfxUbkBf%T=ds0NQKUsRfFG&ah6aH+RKtiVr+&#F~Ai~ z(iU}wM5`yzv^CIDnfefV$H=0`<5Suci3rLYYyFddpQKHW+z3~t5vWSYmsJ)imzz#4 zVs^bz;t7kxj&7?jK!Mg+!J$QV6e~6*0pcW9h~Eayi{LzRudRt}!>6s12M1LYe6hLe z0&&mtffNogA`vyKBm$S&iR-W&V)yobI>A;YPlb=-ll4PG14F}OhYFy@ID>bV4R@_h zsCATov|6kN!(vl&jb@OSYHA^?r}ysN?s@PnU@bybR&waC!e8m7utb52FppHcDbgMZ zTAz>N6*k0tVF#@cqcW4iXLXB37A*Kr!Vq;Hgf++yIwkV%hZ>fb8lV^G7zGr;Xw+uW&i=X_ZKS4Z6HDZiACha8}P0;+Q@2#Nd<|cpSi@ z0&N{kQIP={$W~XEH+sUh%ZLyY%zADh6M)`PlmK^?%~ebm@VZ&Rd2xSf#tpAVZ=ZRYY~{|H z=gxFI<)vtaMatg;OAdAh6x!KIDV*wmM4UxBlnY93_E5_qC%nG`BVFOfs~-DP%k9`N zW%{>#9pN9?E)kREPH8r<=}karcdMhaEv=zXRG%<*#hraCBaGPw!&#sftHM-o0@zWk z*^1&Q_^^CTabhImIp5ujN~q_itCQhB8yO~Y@FkKyToi8}hIZiwFGB$q2N%k9UbAE`cb5MwsE@dPx=dK9*8j>%9 z&mut)b$<;v>W&}l9lXOut%S$+!1_9#3mo=DncAnhhs7i*2 zmr4|fN?64839AoNuRdWlT7p2CzLb`(!a^L89P(-Nh0!{Fyu0D5QPDk2YHq5~b zxy#%d&TU+i&hEioGShs2?m}flR{4Ad1l2vOD2Rf@dlM6-BbI=@@LsdVbLCcW<_B!OP*iDh5GCa zbaW*$R2>Rdh63>i4+rCq`+I0`cg`DYv_BDp)u3kjlP6-nDf#Gb1}ezqW?7nQzOkcem!_%$+8J>2OaMk?wqe<~C?O=4 zS}79J@HpgF_m?|=nZ8%cF6lKnQ>M%sP!rC-y$6CY(|Cxd=>mIP4vPzgkSxGLBDZ~2 zLhI|*xu-6V_<{+<YZ90lPrW(E_DdhY&ZpvV0UlNJBSg)YFO~s zPY1QIi)h*-kOVLiUS;#=Buq1#O{wP2=;|el00CJW6=cGHy8;9nVA^pRgBcqVCr<^K zdXT5epI!hXWUSmZQrecdAQDm9>R-eY%PIScs^vsekgG+5qOuAI(G_Pd5W8M{*g=X@ zSo98U>}4cOjQX_Fo3AgP3YO5ZK=CczbXokYwMW=DT_}BCN}t}lbP>+8r?_YYPF=?J z5bYQOBUaWY}P1YfbXNGd>7Mkab9AuMW}oTus&ssY|yW_3W663@xCShP!5CY}1~O64;6 zcNX1w>`>buq-TAs*$Rm6`piWww9vQ^sP~`eX+kr&*&UD9q~dv!Tl1h16lP zX|3s5?Lw1q>*~aF52%4vUv~xtjoxUHs6)`UF(e9GZ|)K$EezXoz}luxr?bAwSzP62 z@BRjV%fZV8nLC|`X|O(OmYnIOS_ODYU3&pa(^~JsB2(+C;W$#m*3@3@0%Rt_h*C#- zes;2Y8A6`jVxFLz{CqhNC(qWO#ql`HKi8XO9zoAt?cGBdhXUAQsUW!m1bdPweLO-w z4kUx?2sBZ3KN8C@6ibf11sqCqwo6B_xVTk+BfWF`G_fF^Q`BrtMu_JG&_uhb?kPHR z5+?Q&q#CGqJ_yzqEV`F&dN`vNVATV?E@Z}&jU=@kJuQ9$D)C_Eg$pN;^UP5vwYuNE zn@bV2oB_$xN=Zicj4}lXXsxuifS<&fqau{E7h1J72A7~3*BD~Z_HdRishT>H!8^`> zDQZb7i757IQFrgAN(x%yS`jp%X`6tZ!rR`FCICvWa}%2BCggI8nvhCDh2ecPA?ycq zLW#f>koM$u=?`jRN2oIdl`4ZOu81|LDO$e*q$1{raA!TJ6rN~A23a~dA8*hIX0;rY z&-|Dk4@D%F*30{KJGU5NWn#)!sXfepca>KP7{AV6R%)32>)sJ`-1xyve16 z&SoGwXq7gd2Bbxt8JXN%sbjy?c2rgx<5s4+BJ$|&Gdx&}78-dLd!UA$TZ7;$y2&Lt zSPxN6G~Yv3*1~iJb_-K=#|8mDz{Qa{U1jl(u}8-!v(`7wsaWi{Y0fHCho&We8WAzX5X2t3wjY-jAtBw zh#z^`6&8)lNun4P3yp6=tY0dBO>~1)WQxRSz$$ThI*%7^NN>CS@-%o8^fAxQEC{_V zunD;ycBXR6Mwgf3jZES2b+Qv@(LjlTi!)cgjOwAuUht<&o7J(1Y1de*#1mm(J$|Wi zqtU#j+D%=!8A-CP?#HowGgaT?-H%hiw`>lPX5|D=tsZ866a=l`|AESXS?{;Gk#QJOKc0#z zw>`?6b_OWL{Mh~#m`ap?o%R;A0LFXJO}{^iO|iYV{c1LuR3++7HyMTDflh?+>bw+`8w%P( zH7}*;W4uCe- ztE4Ys;S}RHVvRZZ;=&b}3Y98E>lD)iA==u0jGr0fIWbfkIIHZ=TWgn(bOafHEoAG2 zF&;>^aoLgid_^66WZmqsREnd`c;_KE*>^_9wV zXVeZlO~st(pM46JG%A;@-^*8j+NX{U4)){cnP;B4+Fdz~ke=?o=g#zX_jdQaG|~sn z`pV5Sldmv(&nNCO+y8a7?-NtK>N@mF<=W-R?z#Vbwf}$r6VjhKqsAC&OOP_?xpuj) zyYDg7>qX6$`StbQ1w`FV6mYk@x39Zr?vZ{}1Q^EsyRW{r`|98K|KIO_|N6gw_-g-u z|N7Tg5s_IyxgW9Td|jVLUHN%3sCpQcmE{b%as?)GUcTBpaA@kvl~Lynze7q56EsGo zeN^l8nO=2VlJ@sb$OX3R!VIi?5bVCafE%tptOLZGBI2v<^+|KI7axm}A9;$cHISrs zJMzY$T);qy<7$@BBZzW;!_7CBQ9$Jv&s4f0o}SBev-=Oa$A?CR;V?9^wS~M+YFN+! z8+&g3>SS$expuophdFBCDg%+YT;bj*ian}ZL-gTA^d_JTPM>>*QpC5qnpqDs!4VIF z@K%~Gmuq0bh+Ip)h4PtS#D~DS$s0Ag)KHLZEP)I5-CB(sVaCB*T#OcsTJSqxi9V>y zTbm_~xg%Fm5a5#Wbld=zGI1TjtpV#sDic$xPO1H&Q7gT$?gY7C`NS*vUh;(UQVK}j zKQyJ8reZo;#zUZJbb$tEu|jUD%YD2D%=@yuh`pwE8WGvrDLqrjW6Yu7Hk0)DPwK!bYl- z@7Xhn$w!91Od7r>z+52ZHUqDkcxk`2*Z4ve&9Ql`>S$&>@puMXys!>Mn|P9%^ro&Z zshOccf2z5wTk|!Xx27q9j(L;|H`YF3%oBvQaqQ>{qB)S1!NPc-&zAXCU+t0uh45@J zB84)vkb&pkbzBhFyVjdstIgG}rR644_{bAo0FfYAx(+3DGK?`|tYlsDZK}5f6F;nW z6BTt9>Uh5BTJPoAAYw!bP%9^z&f6)RIBM&Be{1z5M4%2E|BXu}Z`GC{I2Foa1l+0= zO<;T;BteKL;1;SuFmQWw53J#2k1m*`98;>Xn{l& ze|BcJIZC0B4x_|U(tl%T5_yeJotc~;Q4p3!6Kg*WND7-m#N7-Y@H$vj7_uS{iE-e^%Jf0RAJ?7HZG^k38!~h7V%JH77Rv{W{Yw? z+HX}f(K*ay$Y1VN!c!t5-CSJ1g&S+Ce*`X$VDKnN))%oQN8@xMdK5jxV4Xe<>9qvV zW6AoBd;j5*dh;M{!F+5Rx(;nd ztdg4rR%FA)<6A>*a_GpO5xZZ3e;O9PA}@sl9;iFJVWx;GS` z9nYq@Emm9mN*559#C9%tDZ)D?Xj39vz#~a5QGL;6QkFPW@Mh*TG6jLfk5g%mhr-tU=`-o(Zr_3j66TOW?IHolEf1n8(lE@sv zIJjB&O)<%})oowZ$DCyj%jKtDvmd`KN=BndgLng@~| z&XWskO*xb}8#{G7l_9dqmHJd|5r@?(gg-@%51R{49HoV!K`k`Mo_^%`+Qbo9W--jppW zEXXKb%P1)!FMv|Q70%IwLv;?1uHHr{bQvk!q}#{~h+?OV>MYW#(^ZjFvR@qO6TQ_w ztJIiIO;S|(?g~)A!!KWH9g>&&J~$qO@#6H*RRjrM6Kqen#zB}WeE-z08icu7$g@dp#YIN?Baw%(>PIY z`&f(;!~!=C@|V~V6Y==Z#=|kX1&u0+kX-18di@&-hDoE<1j7vYw^(%6Akq(Vpyfmz ztW81%OJ=x39F&&Xe^bTU+JlvaguEghthClO!Ul%rgbTY__L8k4XHI*J2WPzRpR4k! z{W&#~Y@D(@Q~JV}IB!7jx;O213PYvpV>Z}7G`i)11cZsX{5b?+Comn%FKjgWmBBDM zJ-cY!TzpQPFg_=&532)&@eLK>w6^z+6>Dtx5?)_hfPMPSe}%0r_{f&<{*T?(AE)*Q z0h`zcGc7#|{w^nZDa4f#3|lN$dsHS=%I`WK)a<7wzuhkoEmv{35q0xv=l`?F|FrY} zdF20$^M51qf7baE@!b2*IR9@%{%4*4zeN7eJOA%Q{^y-Paemc*aV@*CdC~=ZB@Xa4 z`cWJ(>qz_bfBd{k=fJUf!+5{{OU1JW!aG&Obv%Vu8u?+!zP1vb_abAC{76R=D~X}a z$8zG*Tnj(7+2bO}gV4M=le(8KJD|d>u=R9T9?uUPsb$T%P!a6@i0Xz-_sGbx zt;cO1HBO`QJdkiwQhF~Ldb_XxAgG8cxiK&8oY#L4e|tzi2H`qg5}ftMR?roPjd|Fi zl{UbB5*2vubz1>A&6>e7Obx!-p|DA{OS{=WR9iur771!|a9|W3n~#O_4G0+6{Th#@ zEAjd_T_s-sR-!~)E*5TR0>W)vxgv%Pwl+&>8szrv{p1D<38i^`+vlZ|t~9T(vAhkH zX89eTf8}@gQ#}PV-o$AP`IY4PU7zRo4v^$m{I#9_h7w(q*!0=jbcREw8#Z+w4#dkXqlj~=w!EH;BVJ*gi`Q!T zIN}w?Ih(D_S96inFN}2=(y?KT%k?ny#a!r%QRs#GQoc3f6~?)=+Nv)%js0&M%Xmg5 zUCS4BEv`u`AKr?>&#ly!a&-|e7f0;+3;Gt1f1u>lZ^A1hp3@eNdXEm_7>cW&^YiCD zTYYmLHJj4#N?Xek@%T-%Z>b?q4kTF#MzC|mAN+ruk(tL4=An3b_H5j|ZH|JA+>Nje zg$lpi`X6&Ot1qh9*r{_DFFbwa$^^Q%*;rbJT9?dzG^2S7-Yz;or0d4&O`N1d^y<9g z7ef`x$j7f%)p8D+OXUh&;^1=ID%QlIm*IZ|8-FWeXNB`m4Uh1oWPKo%(cKq)O-5f& zL|;!vU;WY7q3CNo`Z83@`5F60v8SoLC?HB=fYp{kB*(L+7 zHGi8oO0$9s$K-tW!2QEnw&;rmBj*br-WFm{JYp0*Zr7^5nFfR^<6PS1MgI=A7R0Fh1^lK~f#-d=pG7eMswNR^LaF~z9WFA5=QILbA`gy@Vl3xhvf=x&tszFhQPx9T!^E*H--j}ARLA_p6uV(>A{ zD|DEe{qOSV+mxfvz|fH+M{&7!C4WFT(U;+B|D-N-%z1MZ>8$^FoF#)c2Zr%qkmX9P z>T?{oz7uiEF->{&Xs$8~hSkW(?pX6kn6^LNkVXxB`>-vK1R+tCTt3O#Yd&E$TzpsO zAUe3?E+RW+V63)6nI#(t0_xU77Xx#B^tpCsxQ@bPDTc=pP}BSnq2f+x0)GV_Pc2h= zGh5aV(GL%z8xJ+~=HhPl@buQ}`@#n)XIiz;Jg=FffAJ|6pMRM!7#nFWVyE~j6A^gew+FbYZ*wLL7 z^3}OxqgU}9-#>8lP$KZi7z0i9M98kZf)qAAYpXDFB&uR}-&x4Wl7B7%PFU9oRIblV za@1O8GV8o4CHdRanY{}><8p~@8}`2LR(}!B_qX_%H{JwiJWA=WqVr%aNumzyb)R>XvC`|ftO!1e zV=)E{rs0vJp1~xsYJZ;tH~s;O92(%P^1RHjps`V35CO^eEXWezV8x6awJ!_-2hTL@ zA=~Bs`#mS#mpziXN(>Db+WJsU-J|57)p6M%@m^yH?+|5W?lE%4#(Y7iAF3eR{1j2E z$&p&yv$&9C58T9&<6#p&o+3LmmYr8VF@Zk1MpGdVIfgZx&VS=~^jL2E?xXCz$8c%M z(fAF^mJDHi?x7ovJUX{{BzQBB7VlN+-px&y8MW1yy8D_w4!c#~_`a)pw`S~_C#63# zj6Ac58s9%RQKPs&ep`Iqf@|NCA(xK}alAW)MECnuTq9R3@WQNZ=QwMhJcyJpUxR!h zajm0pAIU8;VSh=`F)+r{?IK^OhmT^{Vtb%uKv;<=dmkEBp@dX+g5)MlA)XAYaE#g4 zf%;17hyd?>EnfL-4xE=;m7Fk(G$56ah8(C`L1qt2&Pf;{mj*Y6 zy&B_9WU`i?2%5BGt3uh2eA>O*XVQ9hZy|?0+iQ!reBn3;JXox)>mjl*4xVy>TbsMD zd)cYwPH9{q)BMPfwWX5y62Q1WkK(qVB$JZtlK2vsOS4>-KLZ%|XHnep{B2+^4Fv4g z)>rB&0e`QjTp-fC_QPBn!fP!r6AHL2p^d@RZw9IH)Ct9kl4iM3r26t}VXD=RsZ1zS zy&jGu%`YuP^i&wmlwVG!+%qZD{^X4~E$h>%R1?lp(<%2%Dy4qKFDZP%4l-*EW3 za54~ZLHx^s&?r_pJwemeCNhx;f#kb}n1)!9Se{>L5?l|wg}_tU(vo4GRjcZ@-CfUs zGEmh_?MF}|H7HczLtM1OX0P8lIUY2@N)jV5riB&IrGgw}$}~T^+}jmKt=2F1!hddq z?bskjaWVK=n>rnQt(L8cpq6z84a8DyY>>^kvp>#YMlKaDG~am7G~-rTfoDX+%e0B_ zS+A?BQS38*fe+gnPo%J!Q3$N3m4qy>btc{NT4&mwb?MXL&$q)?SfOnk53=?AX!Mit zg(#8tKetlHn@u!m&iV5;q(}(!D1WaIei1RXE7r_4OhBEZpz}6WF$m8TIvdaXg$iC# zL;SLFzC+M8zv!bKFZw&5N-XK?tn&mifp}hUK0uE#(pTyXMx|i?8yPh}GzFo^^le+c1U z)&r}5Dcvz@Cnj~uO8nJ8Y0*D}fB4Lby25Tr?04k~Tj2ac%mb-$b#iv{$yHPsYKc9o zp-vaFt7NnYu8MA-{A3);j4Mq8%ds&zD;jCDglRS4BE}TNs@D&mb}Djri8ZtusxEC% zf7@u7SzWS?sXFXr1RAxz9kzm1e;9J4kwaI>IEGXbai|rhFym=T!rGsaH48;#Ik#THA5?lnl(75vjBH74xa|b-HU9k#-E5WE{c4@Z?z% zFR-|Y0(MGZau8H0_l?G?8~7K3GE{U^%Yb8?sUSWY=QWY@eaZWdyF&cYe_t9F<7_EwEBXM?1Yc(q<5kwq5mer2V=OSi$V)OCn71yo3hSOpp zx8v23WAkx)Nf%X`3nMNpe=KH;aWfcEg^9w5#|9UVBqE+Hl6s_iyp|Oro+?Bf8UjXM zv5sm`HjFs9aCGtb@hBpI(3XphIX=3$xHwjbSZvJjky^D{j96^U;81mFVW<$X*qFhg z?D+9wj>X0d4;~vjnivqp*35(6^NE;=zR4DckHxi=n8o%S9bH&Vf0dr-oyBY(56gv^ ziSDT$A0CNE#u8xZiw#;_tPW;zKQdymJ!tp*(Oi2FvDlo&#p4TjNz6wqwx%|Cv^tb) zHzF1rlN}w)2IGFjv`(~TAv>OH3*x1ka%}Y2a6Vq5CC85(8;d6c;w2h#Y_ytdG2#{5 zF~2Z;1n<>hJlIWXe>M~24AidHV%libRBMh8FC0lkEjFlD9b3#&QHyO_$VNtvg7Hy^ zT5Q(w+Th42wzR?uSZo&b4UXm(ER9-h*20nbM zh>1ZmxHz;J4?RXq6g^TKtHncv5sQ?p9;qIKZc{#DV$^3qJu4OssJi@$dF)vAIOJS& z5vPm0+3=CEBe@j@5uYtY9GM@fjpkR@Y(s^0qYYqacyu@>_>Ju8)S+c$XmoTeuH=nu zI(d3HI`s6&f1v9e!6=7OjqaC4VEeO1s@q(q%vYo7zqbq?;?o64HbPmI;~&a7nD!=5 zHrqKUHn6a2Ymtv0hGS600xFxp=p=C$4NhCGNE2(Z22>G%(S`+4aP-+TJ)b%Qi__|5 z!&wH*=lL1{;mzcrjn&FCg9|gDLR697trk$k7p^@oe}Ic7fn>R!fQd`or9zmvFirq| z7UHI*qQHO4UX>zHGigqMG>1zLy@^n#wH%#4wO$*LI|@ua0@-6L*H#78n}}dN-Ss)bLxSXZzLyk^1Ur8+2N2~0u&6PY{{9U4 z5@s_e8-5xxv02v^u*bcHI-fd$2Ngh!8Z=BnM5UgG1v0X@Hx+>Yn5cjt?Ey_1Q|oih ztK+Pdpphz?5d#Qg1zcoIyt{Y#BYq?y3$!*@01Pw7 zi?D;67Jxapbw5(zA6 z1Ub~AqJ>39YN&~Mg;KP3j0HR~1T+jF#t7C01Vz+HDV~4teT7A3q1xARWw0rtrg%9J z$Z;7|Ted10X9mZ0^NIC|CTftGbuBmdVSTSQ*X)DjxZxYQp2|Q<>|6p`D5jc&Mi>Bup})7*Tt;I)*RG)f1hMk7CbupF=m-G%rYoa9 z0?wR4Gz%E2ahGGo9x$9d@EH9_*OuC#-pv-qq$+FQ() zYlWDObrbnfT@JZ!1SEf)jZ#yM=h-QFfLe3rQy^RgrH%Q{76qHO^!3PWvh$~_a5K*z z?qu}ksVgS4auJ_wB&h-(bU+t#0to4Xxe^luv%q1p4q=kSn5@9fHHQMg^hZd&@m#d~ z4Gl5{}b*H;7a92M}3iS0?Q-r0O0=T3fdFR_x%YZ}}~t)7-gx_Z&hAWv-RR~ z9ovHJiR*Q^j*IJSH1Q~|ufs)N4B8GCMg2em zxG3WTO2BnpLjM9TJ_~^^a8VKg>;aea%nB*lOA4Y(*@0Gh$Y$9RwqE{ZjPf^boE z0EDD@HVOS9Tzu^ZS>d`Vp??Y&-`PQAxc=*(#rYPU#Nq?d;ru`M#Q9@7sj`4hpz}-2 z;NE+d?Du|U$$pQG5whR=H%s<=|8B{C?`MYW@4suP{{BB3qQCzymge`~wlu$Y-_rcv zFD!q}@BPx!{N6j3=J%KzX}!(a(e)pHtwU?)J_jg<*6zJu>%iK% zZwJ=SeGWwotl#~MjH>_m8y!+R_c<_iNO555km7*Dkow&($GZUz`X7HQ!|HeMjCX(Y zsd48Q92|Ef;&=Tx`<@?X-=~wBFFW_y95c@T+K#iGUyzXh^$t|8E1#i})c*t#H`Rvk zl`FU_bHSxETY#Ay+D83P(A!0L#YX`1^rl7tDK!FghPoej5d=<%;phmL0pLY#xEds4 z1gr}#0*1SdKnN8EV~KFVppgsao+KC%usXR2Af1f>gbiSLFaidJi}13Ka4pl9nw10_ ze|c7XF!!C$0u07hP5~O}HyAD%NM8BP59oLmjvvzTT6g86?~4P(sQd<zPgd>qd%b&(09MVK+Dj0g#MklG}T+`mQ+7c zH&XppyfH>Tk~)4#Dk90g48LEAL(;#4f4a;w;s;;CWKyr!>3WOq5B``=6#jwuq3{ph zpab!LgAx!6K3~P$W1O9L5LRW_&O2YH3xU7+F{Y!C=tp#rM5ttqB-(lJ-{>M?{*(^X zaOa)B6qi=x&()1IABd9#d*{1!y+!v2-=UL)`FlEqFqo}yN%CKT+H{jJzxpF}f3qwp z0d@SX)C^VJc?W&9D6|6Am$Yn9ZArQcVM{FSBQ$qOD1jO*2_+;BDTfYT(wq?K8r$|; zB)cZDLGx=;w|5Zhni2;kUlZc|BbFf{&OgvW;$S?~g*fl1OF9AZ>r!`+t}eBbgsj!q z=pYS#N(ajM2#efxDH)Bqt|en&f8Ah4A0eX~5{BjIhVfq9{F}mnxT(p`_#QjiWaKyZeu>+UJ#i*kj1$-#Ue@LNk&_N2l zO$X`mD~V=Ci6l3p1Ve*vP9IReDWe4KgG0)cWWe;@c^AWRRZB#YRcR}{*68)&x9AW$ zh>Kx}v_?97h!NY;bQl(JNhpR4&C#=Mp*gy$e=Rge&$eZ4`ldLfAOA|72>$3V)QOgU^lfz_=MOPt+S)0S zk95k1D6Os3$4Ua1R0h4%7K;BF9i+Gfq7fg0nr$vTAA*`~B_ZbiP09B?EI_w(DZ?Wcs{^>fd5+JMUo>+}5Q8E6;6Nm5}d-fA%Z}-G;Oq<9I`2 z{R&OkknWW*_9-U9hUSj}v!VH;-!`PSAmJTpFDAzwq4Rqf19zlJAm$w@5S2b5bbgf% zmWN4lLg@TGamd(4BTvW_mROv^+jPhtfT;_Yk^r-pZXp5&EZy7#(9jb?Qb{HC#ZCj4 zrg~G|k_w9<-E5_Je{)^K_5_Di1e84?djJ{-hpu+W^=VnjFk?@u7pC(`vj=>IPA(1N z$CdBPbg=R06vToLHmOs(2O#W}E^}C$PRUTj-f>z;gbYp#iO^lAwc|j?(?S@`)6=>K zU?9S!)xcPyn|pvbWe>ohJ#F>?jMURY7!-S234_jpOUD4He@(Z{ZgdOXEK5q@?8c^q zoR}y2>KUOGs6MS_gKE>#RS27wkqv@Q3nfs4X`zI~A?2_+Piszy^sFpbNcOD6Mpr$n zD=}g{tHeRc&kAwSwKGB-ka;V{cbaM}oe`KT(DtJyPgfVnZ_W+4zMu{Xh zqeLpD(+AW)C!++kgG0)cWU_!Es~5FIBzaNV3a|6BUSNefuXGR>!w~7b>;V|D7c?D) z1zZw}VRS(gVD!Kxo)}~obPteVdSOUikX(@Vq9y?GE=m~2)Ey~UNp$7MK)Iw{fsTetT87dtDb2Bdz$J?``s9+(8GU?7 z=q#CYnFI|l$yy2;{y+BKrK_!Ed+?m!Pa!LPoe~@Yl6cs{GK~R~q%k-Fr!knc4@lUu z_244OHU@h2qz3&#deCe2qzAof^`Prcy4I>ufBrv8eTDk%9gh>|NEq_gzh-rBTAULn zo;xCT?AXs&25{{7-woym?YuS!jK%fZpf48AYps-}``T=1kkV^|nVIo@gErXi`-*`$ zDBqY_gtmC2(@uBa7<{i!GL`yG=8r}H#?;E{fn@rV zevi=Di{``+7k%93ji5!c6 z{=X)Xe(^}+zcDhN=>DJdLY_3kKUt&tBJKW@^~{U3`%jaJcK;3F{P|B)8{_6tY6H9c z+kY^LOc;-n2=?VknxNP6WSU?B>5Dc2f7!u{Ho@xSQJMf||MtI|+L%QiWfUa-`G1%i zSRFh{A`}8oG70~Lg5XhWVoC8RKmup|`G1;1^oz&;4HuL~E2dk%Axh|ovIKsi;ZPYU z6AM)Jxi(aiA$}~*EqrXjw7G)je@$zGiTTF)MJT7zt}#dFgq;z222z%k@Y5~=qa%^& z%#8yG>=_2v@ZYgizc7Q(WDq^2YiyhhfYN+%4{{@L@)Mte^Qg`YN*6a|QQ=h}Zn^8w zsWH3tP&G1>8Wh)kl4v9x9*OQvvOeI}>-J2q=&?#NW)Z9Kr!1h_K24hOf6^DD&|yR` z_@xyAxr>RX@^TpcCgmu6rub>=TTzupti(Ej#WJBtka0`H$f1pj46+94I;x=5U#lO2!gKytBgwKAp|hhggKH8gW}wO~~^N>6!%4mJh`D%%r8_ zm6yt*>}5h{hWZ{N@j|g9f9N;mjWisQ%BW&cuiL)J;h07hAHL?^bK$+L$}}e@Ny=%>owfG44%> zzH^da!WPPeN^ZBGIj6bZ=&%p)hy@iBC?65@jhW2%=nyvqx~SYDvTI;>c(#ifq&g?e z;0U`_ymHA{RPlqYrpw--DkHDG*ShKWQV8WV;HR8kMAGB5VzYQzqb%)s@JifeNRVBW z_&X|gOct$*+0m0rf0k^QC2M8cb}nQT8pB?v!t9+$`M86_?veEw-EuQ$K98HV<~62% zHkUmJGTAiMynBqUVZ`)cF}1MJy;!wxFrFfbjFwLV#XP$QDTD#$C>BWM;2u$;vgz>T zxQVj(DZq(|-k#T3zPbt%z2dUj_9DyodjKO>?Rjh!zf#pKf1){{PxTm0gSh>b*bBb| zOAwmJYY%3sO-xgXeL1G6D%RP`$Fw|F17=gcIR&M@38Z-16A!GagD4tvwp~>*%n(YW zYL0&xfOIn}e6=@3UYrxl;&Zdfv^sl8j@g3wFzdL6-kFB7Tgf+MD>90aKWfHh9M=f3 z-~PgAj7q}Te?6A$2q!KP>9|OC&{ROP%4@-R*cwoWq^s$WS6=9)G0#mU{@_%!CGG}m zL3DS-*&bqptwRGe^hu4`>gk42&9bVG7_368$S6CeFHUVJDL675t5tlE+MEUh3lgR1 z0U`BWLkB{o3@y>oK~2GEmL}~Sj5eWq31?Pk$PtJgf7C^mJo3wcz}|jz{Abs-n;@0W z7Em!hVExrqi}<`+R;=vBKtBs(6d^?ec6f$OF&S#DYY?vX(VuKe4hGbwJE~fBqfrEU z7P3rreD3vA`sW$tby3Cz+lY#cVpk2ht)7^hjSa5_pVYh@4j~&Z``kl8=Ne zO+t2}f56jR%1bDCqR`e*@4=j7JmyX}D))~}gDbHp$Vvdzk!B@uJO#wtGlK3hEm*=h zXh0m!8|AUT(uyKQ-wMDN{{sCQq}bWO#t{w4T?YkploIvZQ5vNsv>fCn7r9irTE9e6 z)*dOB(x)xXfZ8C^7R>P)De;J=v@Wylu3jMoe}d>NK_se1j)0^G8EA39xmyoDp}>(O zgUTvNCUCGBIU>#_j`yDR!S=AW+*Y%ie{BSNn>*Ef0CTeI6NnO$Vk3d=jMX%v*})~>7ycs(IRfi z*>XZ8Yxa+L8%HT2OMYjwTT0Or)>aeFVPw3Mi_(KZ$*thb1D9fxfbVik7IOp$OGukO zj|pv)vIS5Ws79S7TqTQaFh}jCo7Jx&Np7_9YUYFtn@W~pZ5(~FobwqHwPuW&eXBHB89mk3q$T9Df3#6rGufTs=Fk`Rf$25@1e)K1UMGyBEVTfFr9bf^ zlYVo5#1P96b(67;AYW{8jp-8;erzw*=8D2u!zUNtTcgs~^ro9IXOr#GwU%dc`k4U* zsAtUWFtyd}eRQmbw9bS9#PlD9pAO^FsRSdxtX^OJwB+CBudjIiel%IUe?Q%VQP(`- z^f1E~aw@y&+@Q>rR|aKryF0v@bul5a<3k&kc4$qSk|q?kEjeje9q2t{d>3A>OM1lL zaK&y}w4R{c#9$E$$5TUgwPsBg?}?RN@O{L3@e-Bq0MxTP3E z{=J=g+nBi0-(qe;!FV|ne^st?M0=0Sae?mmO>?K;nYxI;`QemFFAY#r)}?k@>Ujb< zuzo~pV4*!-(7w@y06Rd$zXF}2gQiDI+OtVXHeIV+7pF&OID5BrGc4V^VS-_Y81s?Z zWT8dKj>*Dhp+M}6JZY)>KU~im1Ipst4 z%nw_fy-SO9>*hUdmxMPXc>A_+_|yHrKloqY{c(AHR1}+n`x5yj1w-v)285(}u%!>7 zyC8it;BiPlphlz}FL4S4IDbxHHby!#!a`4p6CxuuG3VJBLCT1<#Gd)LUGcF8uBlb9 zA$$_chcTT8QN;mOd53GMHM|qN!cEw)sdUVyGihF(@3SqjgtSChD2&NuH-o!jzYvOiy+Ph|JF8rv*NeU7bfajQ=TX1e!M&px$JIuMeSdXjEvOP!RM2;S zCxnTF2}rQ_E;`4(w)V?PA6qFy#ZhCCRxvU6^n6*xN84RB3HwW?jL;j!MMubtV^Fg` zGE|jk_oihvDNeRS@*;*&j&^f#60=E1+rz15z=rUkbw*nf3gxhiy{jkaB&k5kV_CI) zs)V1Gu#&O{gWag=&VSmm%<T>De z$QoxhS!-i%Z2nU zy?Ec7ZgDq&SE5Xe(-`aZMy^!)TW-w%(wFM5=+9fT{F4}#5O&IP&E|&vKA}^SE=Dx( zU@xtv0k1d!S{tKwA=p+ovinjj%*BA}A8q3XLkb@qN-6@@%yyN_;fW*L#z}vDPBWA( z)gGY;=X19uM}MoZhYS}?usGpRmQN(M17mz;G8m4UKsn~h2gm2jE_D&2)P^0Q_Su;WfXlM#|-&ZX11(`sMTI*J1tX3Jxrr^k&e*&BD5 z`Mis9eV7QSbPKMKNw?vXdb#q@y7|aXL1FuAHoLVa{`XnC|047=vdJ;cDU-n=pbY3j6414*D~rJ>^`eYN=q=UR`NQ zBBHs-@}*2wS`il=Pb0{zSY0ith>wQ9PD>t2rhgkhCbWQ48|Pc?+6A{DZX|L_UDU+N zyT2>aAf9K8TqX9F{XC5-z|;>RG1aZOBQfnu;yaqB2l*p~#PajHkK*eT+3q=`Xin$A zs+N(0{h^!qVy;Z#X(h~9CBF!yC=n2aXNTel+9P@r=S)4y>cVA=@2%zIaSTyMx2%1D zXMd*t7rGg>t&`z75mE<-Nr+Q3204MP2AOiGZ!K*f{};n&f!}_637a#UB^z;7!PlH> zv><2V3)$Y8Wu&oJb6 z5cCFrOGk;R_oAKDM(;%Le2=kbM7(O>*nfkavv?pq7M97%?rvH9=wpBfRx<@uR>YXQuA_gX%ZQXf?zpMD0)J-V zh1A0S4fJMaY+%>c?=sn+h27M}i`D0tNhqlr2+Ki%{zAxt#A$I$F!J(%<$jEXW+6Xl z4aC1J#AeUz8qt}|W>UU9+tM(^gr}HjnvnZCx<4KO(*AH($P%Zv*s3oJP!dk$$#bET zNr0m*lrPda`{f_c3&`H&%XRb#<9|mMJFZUlY&UD~o}<4jr%7(GP`|v6nhPoicjC16 zf`t9H8S3JLX2CV-d#XV1&haK%i7%}h(nSUAHWu%tY`H$<12R+f0FHc0?(vT6JH$MW$lI}+t>R%hAA(1e!{Lt+Is?4Az;Ie zV|oFCCp3{o(Cf)@%>r7l|Km$xy$A_sDnQ7n)3;wg@M-=QapuuQ@X=n$_oK2nBw8;< z&mI97{3coq&|UDFlIe+<);BC&_5|4+cr_>&N z67_jAM#~n2z%n$omGj^1p;BDT(93AZ?j4}}8qBb3Pr9kTUIh3Xc=lGi z8K)Tr4}WiwZW-(xd4$Z9-ws(VRJRF-Fr983yJd>{;rC_uqwB*QIC3R)wPx3b zS)L#5z4>nI(;j0i&tOrRHD!7{x{Tr*r{}*H?mVU8{Ud-T9qM_2(W}$e2Lm@#m1rC3 zBJ=}td1!nzOMtpsO1#MNIH(t(T`sSSQ$#KzV8bd3q<`_bAQG7kFRV^%WAqHB^UdaG zq}7*P1>;j@;L=~DVeccnZQ*Osnmn29FN;F37*RmqBeAW6j>cA7N2_AXi}+LxFUT@aBdUQQnbQ? z)zmjDfq&x;Oo;0$@s~Jg?rB)Ob6F|}bs7{bKzc!{6xWP}myZfVgkZP|Ek_kd=QE0$ zz2gUA3AGEhbO)7t^eK%Vw4gKB{`zP!9eZ){V$zlCP03u^g1|(FE;Dr8ge}2wi!V>v zhwQie9O@j39d}7&57D>vL_CnxN(CTcmQIp1oPU%=0gAf&i~ zPbUOE8eG$df8^etzwJ6!ctd3S$je6(r)`pVXo!3Vemdgx`$>`%ZitS`WCIR~ov#CN zihrgGEt8W6k9(r`3iutn$4#8fxB22YK4(*QwR&3{PYJWCxV6F}e;E(NAV&xrLj-F( z>-7u6$Ca@wVE60mh6uuknoR9Wyx4IuE9?s^zYJqFlMIhsK2#q(*e{j1S2Vl@%RV5M z@!14hEtV{vUDILko$w@d)Dw_5nm&VEpMR^C>Pm>5K3+gWLi~yjnzAv4;7)cfyLOvP zo6mf*AUc(UR@_#9X!~&8)F7xkWn(ilaH`(%{_ptk}PyS2$M}z{ES;84%c+s@_JL- zerRFE+TQ4ZZC|9j#hL}2gHHgxPJhs}Pi?#K1sr4}+T>37Z zHDDaq)`Jbx4=8px+NFmEPS1dbv@i#l*%4h!Yo+yEkp{ z@gIT>_?uLd3`bvGt+7axWskpNTkm>skt6!8SbOz2UiwvDY6V)kZI|yxtwCm+Q#8EC zpk$G0+Rr8*mc};5c;D(Y^?^i%O{(iwZfl!5eniM?(A<&{U8;qgn$?E2v$ZD$>g(-mI-SxVe7?OgKxdjRszsw zKgk|4jT>HykqG;)*}(=o1?ecXk)&rSFbmnMtL#TRXY3?o@joh- z{%DIC)g{zgL`w<3{9-2FMoB5mnuhgdswV&OW!%t~qE!DzKYuqT>y>DL(vb_#VB1Gu zYQU95dQq2dc$XSW;@ufheAp`yR0X3`-QzA(Am%w-jj{s>SEjqzB)it< zf~j1mLTF?A1|qfmQ8Gr|Qma(qtS!~`38gPmMK{Rw-g8&+z~PBgT>&ng24#I4)`=m@ zgXe@Y4+rEg>VIqKauW77AVPz>FHeQNdRd*X^%t&9&s8UPCMo!tjB`| z=9sKMVU@L~UcPy^v9-6h^Kxg6-#SW= z`E(MSs#q+vaAv`=n#|SLYQbF(;JUZ^>rI02idxTy+ThwvB8Br7kPon8TN{7+s; zAELu{B7e4gIrXXkt?=wwM3-gWUbctmb|RX2`YQU!5xj83i7X-)|6%n@)Lw{Q^Fi+1 z_=sSk)-I7}4tiazOP`n;FBVh)15!)%EE3Ba_)*&JCJeuXgD!9OKEF^eTy}-w(oW?k zMn+f}1#A#tn2d%MAj5_cC_#mOF-x_;VcE84sDC9-+g`lHoj&|96wc=PV5)a|ikP;z zw1kEi6?E=gK}Rq|SUk?aAALu!J|=R|fcO3W{rkf|;HON!?HY!6@{Lc934RC+qCVTA zm#Nv<9otzg6tF-}HPxCdb4S-OEv7BFLef}~){2=?9Dr=-eI8DOG)H5E9Y7fss_jzIgm7*BBS7mV%B*>*VtV zW`}2`!-Zz&DAzeIRdStkem<6FOx!gqb18LMaHJH#oQ8x9CWD)CB9Af4@Eba^NyGW$ zxbXqA=0UeaP`{Qw^n0iD;A0FDDfQ7lbANj(rZz@rs@Y;S-&~C^o$Itq`1ua1z%#{l z^sUNzPWEb25gV16)0KOO%>2mA>FxmjXy|pv^kMfP>;pTgyTUp2xu&zf^I0}F8sf-Y z`0@g(xw+ZI6SRI-A3m7d_S%EiS>JEJC8V`yt!CpMs_8u8$l8O?G}&HF4I4@&_kXoC z3kO0*wI#dsmQh`*Q3PfpeHG6&&9+RB>*dt5^Z0{Whr+o|wg00bOFS__z^!ryg?jL} zML?4obAD&Yl}lwRnYNmbZXRnfI3r)*fZo?DoE&4+9c+}MQBnUrTreeC4PQ{P=MtSD zZWUjnJU1p2rswAp_Asf`Y_YIHIe*vPh4Mz(r$O3j>1Rr&8M(bxqi*{s5yD-T`XOel zNS4COpq??Fh(L9u4W;XGSwZmJ+y2|#qlqORuRwb51rfa$n-|o;TTCs`vf)gk_m3a1 zY_G1pd%C&3^8DTX%S6Hc`pFYm>2{3bL&nouspj6^e|z7xC(lClV{J$>I|4jyv8e zE_G}FVpB`?w+%HC5@vtqv#UnT$BIv$B)w@K>a89WPTOGhOsN3QBSi-zMc0**XxI16 z-{7*9ntnUqyKnn$z5(_7qJPdp!KHH)y*({UEja|zUEAnNxJM`laQkGw8IJC%vQXNxG;Yog}>${QdAzyqd$b*_p_n@ zE{{RIAE3wBoSi@`BRM1a`ICWWwsCT8F-AooXc&X^sN*RG44OR;AB1fRw~OuOMnWDV<_pA zMq^m}CAfR)TSZhg@l*=xPy^~yL@b0zNHBy%f;l5}9|9{&`HkxoB9Rt~HDcVFLgC07 z)F(`QEKJ02HO~3b)_!QV7LB_X9YLN+;6QV7Lk@ z(_nvmXDskmmd%V zh|TUi#SL-0r=qQ-K@^197W!L)5RoV?qmc8n4^sDYo`0UMaj3`CDjqiOl3VB0P2+KM z@RgX+nH_PQ0*YHFDX5tKje&{-xkn&lu*8RtJx)%8BOD+chFNL%P^nk8IDl}VybU|d zu>c4#6k?T@oHursB#!J&8#UOCXbs)I8{N#X8k1VH3mU*{l9g|Y6F1dA2{)NRgyWXM zvJ_P$`+tL#05e7=$tTh_ZxT!kwoF&Dl(9v@Hc62djj_uK{sCt7bmw(|Hhr^C6db3ct?DRiC6!lxj;-Q9H z>8Us_-Dvb7j%?xz+B6%DZ=zU4L})4(XAR2efy1Gi#o`XAyVht8+H zb2%W+FEBL5mFiKnE)SyC;jiiYsLS<+@LX!&0oLBfR`;_&Yx6qGO%g$XTN+*}1GNmD zrT*41;t|^k@3}Hz1o#DIuVy>->Bn%AyMLdbTs?k!1@F4sZMNTDJ&AFzb3rX6TIF#P zr=wrV{&sp?0ri)h&aJv8ufz?^C;9nJqhpF-#r8p2^@G9=3S_DX^a`&p1JU>7w=7YP zEm>WpkS5szzfvIjWHU>(GgKRvKtkXe3(HAEk!!>|Z*ZV_<$?bx1paR*W-3Qkbbp*0 zDJKjDg1d501Mq@NnWXdlZTvMy%IjXbjkterH&jk|@Sro()}0PlAt{-kfuRn0C@Cip zN^sY{i}_h?H^r9|K{ThLFz)oh$4Ph8`3G2b_9A6+q;61RnP8CAO^iit_;`3M=0w8L z7U_T`V1qBmA4*i+1zCz3pL99Z%YTlTXDfg4E>xo6Rq8>4blGU3HEGdxnxv8pih<<; zisT$~1+G+dM9!a5d1l7oXMMA4MxsiWzLqNA+MMBsD7Bsx9?g7#o@;iBN06ZvXc414 z+wthIwo`v{P}qStbdH&tQ6CJ*y<-Sd1POO1MLGk^j7=l`1B)v?FvJJp34dhD?R86y z>B?AjcEld;1=m0yzFLPHe9#hpKyejDOLAg$EPlFWs=Orq_A7|7@CbX|?!|Jf5dB;K zmIy)D_b;jY#1AU=3pQ9I!PPhE>UXyl_Fy{)nBv~OP1uI_dY;4i9T#~NKyJa-*fYpw zLu{-+h?%9Ih_Au~_a{I~hJV62sf2oT_TYi7MqR?cY@YAxi4;=q87w1&fNZXudnoCZ zFnQ(jZ0GtWToMf5;3>Ccf@U(;&Qk_b5|<Z(CHmKE9rcR#$bzs$u=1svQL%)myZ$Wb96-2}5r3ziKfbU^qvdozlKqen{bq-C<1ga7M&{~=BljUoP zfS+*R$6dI_AbW+8J51Q5$(cfb4OCn|E5c)12L$1%u#QtxOxZG*V7+%D-^y7+(Diim zB7AzIM91%OhwA-k7%WR=nkD518{CTi9maT(8RLbF@gh4$34gS5>-d&$9-mpuspaL) zl(bAux^9G+!X$!Ols)AAjzAh}bU@{jlD-*?O4;P1=K4R<@4?NIwxH9=6~py>?8z$T zx&Okz#tpcD|t zdYuU+5k&AX_J7upK6cZqaIg0P6;9X|N?5>m>S4IscYX`f#7l+-7q!nb@gV-eN$iDg zA3+-GrAX)i<1$hL11qb}dQV-E1m;5c$~Q44TvH`Ap%t-4NCMncN_MQ{2Y-Xpzj*5b~39uSC@em3U7muzS>9&qp6#ts?QN`I??aTO{=U;#IS0b^+FvL~aN z6o?0zlv|kp36vb^GIG_JUhqeSqOMz{GQI|ty`1mT~y?n4RtE;RBatWC~mLhqu&?m@BfBFJ9u)tIwEHK<6v;s zuT4*%G=I7@glCY}mvaIe4W`d7dJQZ(r@zchRTicy)54i_iR47vAOgG{-x6a1JZgU_2p$DfiZh83FZ-2H=r+Qs?*wk@4cF{e_6;uOJE4Td{ z8C@3xp!NPof37it+4z%zpdwk|Q$M;!0AU}hPR81FFx z%ABlJ$;@EZFxA67igw$KQ^BV362z08ZAP=3Zdni}gP?8$3k#@-mF4>GS{ldTWuOnDaJl7e9@D3_xLgqAHqbJ*Vtqx;e3K^>txKl;T%eoCgO$_2m zmDG~dW?c<^;lMQrn^c6A{ZL}Kcz=(rZCs`l+6UqjRO~|pp;%l|lfK$#Tz|_D6ZBQ@ zdCfC31r5&JWEyKj9EzAl*SW@MRFQ`b;b`8bS`ATx?_hiG_0){(I4tCsw; zVswZ$NGeftVwICh93y;@!e@1J{#?k+I>AFjT*QfPW7H%3lRanb@u?88+P~p4Sr1^k ze_h{Pz$J{rmMTyJlto~GiGK-Wl_^*ps^nwetW}^p5V4Qa-Ab;uKNyyvumgiqd3zM<<}uhQ;eSnSq;(_$HeOcw zMp@8-WOTf=g}IO)Vej-&#xYt~29#q45=aZ~CL&1BjgGd{>%u)Ytp8@h`e)a43m4;A z|6?b^)n&9C*aUC}8Em`bDT8etuN=o0;S ztB^Bt8M@etE= zm=9+MPKN3ym?%6MO@P0=TJ17zAbOLvBual~oyO=z#*J;fAAc%0z;j*w{q4Ia6$&G$ z)sYRT=Nf-^YAYv}UwUq5Oc=zvuhW6JP|wU9cE(uG)*{A8dh}z<)f}k3wYaMeD{wL3 ztS+g<;Ie0U@EC|LQCU903G=z=d`fVN!4xKM=EXVivW2iRQwRpSL6Yb$wZ3wq00=wm z6n!zNP{sgnoPSGVV(!5?yGVp5s36f}J>Bjaxfs5`jB^qTl&dS;V~9T-Y<45eK%fuo z0fu4(XkNOyCYPyA7;eJR!oJb5?$~wGoXu$TT5rxPhgT%$)DNexJN3DFA@gGG*B(5u z)f-uCnvSybi1xZ>hWU$6Yy@r*{E(K}tFD}s$pAK@iQYF1RaLt;HT`2?8GASktI$M#l-+T+MO(T8Gq`nvFKg2$~ zB2)VM?0?()F`XlZDwr{_Mf;ZMd}A@xOc8ZrmSWy_nz-RqkuLU;sf5KF){EHw*|ofg z#=sc=w1JppW~mTcr&H(^rMF9SOKjkwAC(wIIc@xBnRnvZp^M=Vg?4O(%_FySy>3We z*Qq@{XU%GH+8zeiC41DHWCerCU@O~gYjfpL5`S@s9UOWA9N>53u*i&)I7TA_L0wn} zqKL!v!xt7CF8k;Z%QZ;(RL$-^{!mq`4dKj69Tu~3Q^+2dzxZVwh%+RX1MWUO zO>FL#YevJ3DmsyD#24Am0kl<6rA;rxxb;kHO63%DM8?%zSR9y)ZSG<9}cBjV~qrCO_@c{8Xi)KfhPXsS3!%)9X(tGCY5-Q-g5xTg!OcC@5$?c0!@`C%d0;XD6x^8fneKb(5B zkgHD3&pnDOQNZ(Nnh(;u0^ncUn|b!Jw7tAEVl z{G%$f$nTh?WR{D5WkE@vIcZCO%xYMenyt*5-?p??ePo)>G+H*znWi@%P0cU@#__N^ z*Dg)X%siBT@~|NP#J0*OZrW;Vy)u0coN#LAF?0H(G3504}V9|-g><} zRh`4#as6_6>rJg3t#0hT++2QBt3)q%VBXYbqvfrw?Y-r_jqR=7ch9zWUhLM&^Qpw$ zz3rXl^|e~Hl1iqg<)@o#HFVlHcHgb7ZtQJrt=9-{5pBQR+}Pc#Rp#dLCw^YPbUA0D zwJm)p+XvfT#l8BL@DmOhe1FzB{nUS_Ts1Ut-$B@7A@wdF-N#tf)rljIt?ezT``OMK zY^eRcS~dD*WBr#+{_WKsMZ0^;FJ9Kl)o5eud96Gb?QX1ZE$_YBp%*h{jEdX!%bm5| zjRWb`%FY^=jP%FV_0D`KCkZRto7+2#GD+EfxxBKm2W+(oo1s$Hmw&xqHddZ*t?e?# ziYBH<1viBzH<%}vAhTVC1Q_}$Op z+`JZ)*LTY+EA(&U>3_zijCBrZE${BGz0j%WI%AgJJL&1W-(D?irpnCh!|P~;nBvj^ z)4991v;ABqMH{ql0>s}psF|9o;g@$WmUo|%w7k0dZg2bD%jLaa-aXq~Ua!qwM=!SO zm+L#rZ+2IfS!3m=FIf)J&id1Lm05YN$n)~MYDHdHdCw6G=zlsYN1L){lBuSCQq}<4 zF5PAY%|$C4J1epWqL%*&uzqHYOta+P08}0o~mFS(#go!$WAa89>!5pM))#en=zGQ7qq3qwuppZ6Y))B(iK)N=E zd4JWeo9`esTZ{Hz@+3)N&tJTGZc^uyjwfmK8_^8#(PcSbF>7W+y)kcyAzp31YSZLR zrF&2W%y%l!96mHT$oCD+TAQE8jXu7AM8&!`zmU9$+wp#F{-LQ-d@T_j(Q+#1AB{;h z1r}zc#dP+CvdM13%hVRwTU|by7p$SAKY!2I=eAEzC2wtEcH{%DylM+`rY;R`SzDNw zs_gTE`LZm5!&S?*_E0+$CX`L33X2zU|FZ+bL)(q)2UGP!+ZX-ni&#ho(Dk3@Z~A2G z6UV)o`e4LEdDk939N!W5`H}g&+avm}E)1Ws_6Stw+;%Fac@!*loNhadm)av;@PD$5 zQmNI5knWOd3Ugk!Ij=3^o$+|rquok?T{*2+AZ4~Vu{iQ~cVBPs$Pu-%wX(glv$nFA zBv!7Co8WT2U!HQOQF0A?ru@V$jY>>#7&$qRW{?K&i!w;$eAZtBcPw!^aI0CCD&q1J zX+aOUBzTcX)!%P)PkZ7@pnd&5jDNI%zgS<)bu3fTM?K0Gex`+!z)vPFR@mF$a211q z;}V`cnM04JuXM;JK<%iMmz&0*hcE>utAwZ5OQnfTZ$&@$D~mpWoxeS{~?12=SHh<`tLpg?xKf#$bZg6oRN3Lm=0zaY2npNJt{l)!wjbq-x(QOm5y80#RBQLT)-ZNx-)Ew) z=O!YTM#YJm7HF+b5{?Szkx6_Kjre3j+*wT=8xKN+UG=VWg{~fo27f)Z4EH+(VVOr+ zy>kFHxE4Jj5jN&lHV7KW`GN6rt79N-vYBXDSXP4<@Yws3%wprb_U)u;G*o?L2%>Qi zF49!@`}*Cgvw;M)dm~jgaFg9?_mf%=_HV2;sMAJEf4TZBsL@r?dHsWq32c2eJ66?v zq+9H+!H`~=H*{dc1Ai}|w=JwK+@+Ip(8dEDchb2viQIQ<(PbpSgVfOc`dDST7cZUo z2G?zlNrQ6Q2(Ggm-Mat<>4PhMuz5r-#({=-95}wf-rdD~a%w<U2`*NC|W~6`!58(W(=y$L@7oS^}R53g@h9;WWF2kAKwGWZnB}?i(#O#DjPP zl@QlB{A2$Pk7Es#hkuKpud<<6MmWmB7!7zitGL$+6da zDj*sUnv6;zp)1{BP4Mc02Cr`7e@INKlaQd@;)BZEoOkA&bn{E-TWQRQ3+*RQDzj2J z;;B6Eo*tS9`F{-t{oL!Wal&N!ii>flDJWWRgxj{?s}+->ZG+svcvCDY(HoMgUrN<- zHaM75+Q%vvJuMUz%yE&NkY+FJv@T_%wN7$K{?K*aYz^R{iho(+1p2Xql+}A`KAj;S z$(V}QsT$Upyj>SobZix=9GI|;*0GJtNtm|Hu2Jgyaes9;Wk%)SEU-)liTs#p&s;9B zvEv%~XrR#N?7x?o@RFxNWrJ3k%>>9a&>`L0@3ju3yb~K zGPXV@80M7dQNk-X5ducrir_0R!?{M4d;8w zS547xFMr~b)EC}0{k3We;9Vp5Mw)(m)`A2<awy*Us zP8RiV_XtNbwlE4Y?dA))fMZi9drl!DOvyXz$2o=I+1_!*R-KK#KS3@d|^ zyk&aXH=U5mX+}Ql7r-K4fP*wPz8PqW=J%EoeVOKTJ|ID5@UfYbo|)1He`smQpSgsl z>Of|69?vg!a0~Bh!E-U)=}1UbeXt!TrG7Bcnmn6`CkgCszmU`?sW&;iPW2UvNPlds zQ;-P)Y)Cf+I2!RtSBrGAr0Y$3t$V0m=$d4Ki-O9|4f$qGiQ+VYbYz+Z%>1n85T0yvFCs|#P809En5DnYQASz=H{ z#Jq~W^L)m$3Fg|HIG7wpJM~@M?tk(Hlqf1-mkoc_d_ z_`QiI4kE&z#1j{b>*Dby+SK3gll6EI?d$LEWc`!4!}%2bI$8fM+TrI~!Yw9Lv%C?W z=XO`c@+8v_3U`Q``5qD$Mb*57 z`oX5F->fv0fB&PUsxuoK+>1`w#6*P!H&J0dblC^3iI^qPm(*BNJM{t^qc~k*X()91 z|KMEe@TpYjO$=h5RC0Wrhklfz?X6G>_3T( zZ3n7~#B+;czpm6p${2()X3ud|9kbie5*f44H1Eg`LrK;)D-yMlR@FuCWk1!jylLR^ zsGn+E-YA2+=YFbnd2{*0_T^3UyB-|tc{H{UCK_clEM5*%eUUfnMq6^2>WjQlmavq= zRA1!Hhew>Wt*(c^}bd~GatQZplOMB|A%sd{E&WgO5yy2Y4n}kXOa6cSkbU>sc8K#zu zkNX6`d|bxt17gG{bznJb+JgtljI3{^XCz&9>0r7;&1ns8qLd2eot-$C7z!@Acs!Ga z>3V=|aR{qA z5<89gQ7{Vm#+RDI*s%1;mk}tBfrOU{8ks5{5FrP zZ-=5GSJFSR{8mo+Em!8>4o{Eu1Ak`qSCc9xsj4s4hkxefM1QIA^mx{MpDpWe)x2o= z*?E15^-DZ!ULNUhQ(untOT(0DXq^r7rMaNLvA&!>)ZY{H(%_e{?(%Xnr!Vtb^~tH! zc5*r=FO8~vX*`sYjZ^7O<5VkaoF4PrT#&rY1!<+ZAYE!MnDhoN<_V51qo13^Mfy+y z&bEGmAAjz{!~B2!zy1Tdf&clRgZz;(APF3pZ>&R_=#hY?_!7bV+#z1bZ#{dyk}uYt zZK&CIH*}c(39H?J0dsPGaW?2#%iUM6HdaH|3hs0q$>a@xM>u&^d^4s?(Ssc=sPqx; z--?kkklmepZbTKW)p(ar7Ti-GQBUMn=Kc=zLVsIp5~bF8*MD5G-Mv>fofD_*qU?!D zYf}w5+QRC5aBoBq*`=0y;tD@g0R{^$W|LChJv>J)TA5x;MIlyzxBuoKU!w&gkV0iY zsV4QPyVga`^b8kwMtaB7QzyOC*ncxV$1g#a;Q99;nP+M0iNoO|t?ZZ#5c{)97W(e; zjekfB<^E=U2Z&>+zL-qka|;CXxICgIAO?FMYXym_reegTZYPHf;-ZO{zu=C|a?X-R zBBB$j!)?rk%{!psiH&gT@eIUCC+8U6Em69_F^{POtt$_2reBx)svRV7UK}L16_?F>vDY z(WCidWZw~Y<)a1Mq9*U65lFUoueLV!$hybZQ&8gn!Vpc+r8xWP9iM~*VseYhE+1~K!Uv<$`Y(~mLRVTStHwe=wjep*?U+WV^ z(>%Yy5{sy!=rKJLMLj``c+*lTtF2UI*7E9Vc0yRKURa&-;@YUU%)4!<4q=wOzQLxe zJHhc|(JOpz!z&aHLWS!+?=a`|UOZjV&7x#%bm7mLzY|dqf5ploMOeuTE5ghRrW^z* zBm6oXff>m68Ho4rFvvZU&wn#~MMa8#7aTOf*UEzXObuu9lgS{T!@7y{o<2dcI}f@2 zhvx49Q8@KAjP;Em(}60=b#N5G^$yeI4&_^@NyvfoXa<55AE$&wLTVuvar6cl)JqpO z?mLX3@6qO>_=d$U(2~|l;VUnvD7P(0Y@gg984!~k!y{85yNvM4bbk_D4p`kmeM!Mo zeMvL6zNEaVFR9;(?>(!ze%K+?0spu@MHl>AFOf3QDDlosYrn)d-uN;x{Z zFl5W0;!5n$Kx*q+lrRW7nRF}ZNzk}4Ul*;Ty`EdjsyvxyQmJ9AgZGXV{wMrMizNIi zfafw=tuWhEcRA#^sW?KJXh(~q^;%4n)SKuwC?8Jd@h^4j(0}s8n0e(S3FGJ}>FUeI z>0Jju!lWMu1BcD$exM(t2T-CPV|AO2J8DdzMl@yAtN3aYABLjClSHvrmBFl@gyIvL zP@%LJYNAtni3k0BGBRb zJ{M4Bqe^uT9)F+}$Cc;)bjySe3snl=1%xYZ~nFN zxR~`O%b|H9^r3q3!_r#cTY{XguKXJ;;NT5@tcpoEdHQu_YxVA(gJ9SuP9&;=*g~=(mh* zfbsYSP=nNPD97UQ$9^AaLVImgrY_Y{1{hhg8hrJd?$>af8K(c+Y_`VD~;w^#`r zQ)*pz`nV7Cl9EL8E6{?HOHL?Yxr5fKI5bP^Ja`3SK|e-)7)IRf+0ZNwLi@=!!9|1w zAb(;BTMb`;pYROzdO4ayok;Y~L=iPM&Zj9Qni0c&2luR6VYumC`*v2y|FK#tynWlaoV^BB@V9aernt+);lb79 zRf&+eKI!N1QItH~9s<&W5-pZ@Vq52_(=2iAJ?nprGBk!H0{Hjh>j&^T#pGii2v!w^-6UqwsrQx zoJf}?XRqGVoV~~OxkpRb0T>5`Va|Dzvr%to08&7$zs`o{Y>?B8Rz%ecM^{(*gS@%4 zgk^spnzEgGN6U7!KONi3L74NA=DfP{kq{5+2U_Mp+dIHQVJJ(tl*bv!WSyWGll22! z^-0>Ka7E&hB$i0jwIM65pjhP9-ipM!bj)$NS3W=R@)DS8<#`|(wdIGl` z(zWr@;bh@UPe^28YFMRQi(usP z+qTMQoVH<&o@da#(N&OmhLWtt?-hU4DT_i_{R8U{Da7P&6qB1JjDyJNn0wF(%UGPR zN${;xqFb|)X(OTE{YnWWO-F%ci5?$+u}a7)xmXZ^^z^p+pANlIh8RO|DG<69ibUMV zpQyU2(=rNfx2^D2+rLJE!QO${+3K!aI)%2yP749Rh%O?k7w+mfjnML~%tG@u6`Yv1FyFDWqRZ--^Zewf7njNU{{) z!*v-cIviW{A}l(j=;FO5$E&}E{~acgVVlI3uh5BN$5a5B`egKfTym#)jduiHR?7~z z;U`c$RA7hHrDapM>;m`f7yczGw(L&uii;v_Vn>CF?NoK1gso;1+rw0%VL z&5pexoLpI%_5+!qP|yCUJw}-@i7GlN!F2)M?3)D#)^t)@GueIBGYdm#nLg(Ju$l zo7d4wHQH@O&#KX{)u?}W5WT8K`&$-*t34}ySnXv^QdSKWw%aN$+DGa)j>haejiugq zV*f}FQlIEf>YcuscS~i`Y2;EL3#&c)ti-22xy#upTuKD2m-1I#02|q5$#~Bo7>pp^ zlKV<@GUJ%?Bil-kh4K0QXJ3G@0pqjs!DnKvbfEmlWz$bdM(%&|u1&|=g8%|AeBntH`z7v^A@x&*VgN3}bwnw-P>}Xgo_5c;9ifQ~Ju`Bp4 zfjK1S2pP_-PQ4qpUJz;!sqNG|?RJ~yM*Rd@r;8FcIv=f{fcrJCMxGd#-$tV{{sOmU z%5}BkGcYOW&trcJ2v*iDfcS63eF;|^$&&S7>1O|?xvP2&Y@uzY-I zfn=lCNTo)S8%*oJe>b+w$XW#0J>Q)78mp=@v$ArHjJR}*D{2{svSTAbkVevt)0 z_ilzD_l5fTuQWVA9XLqc&x@$+V6>}Y)v9h41S7*ZCA)tFWaP8)`P_rGr5-dB>-1-X z)Edl@PmaGhx)Mhqxc?T~(|`O%fn)Pw)3y@2O=Wp*ixC+{xS8Oy*T+Q?ox}EtcMg;^G@f)zyAMO{2QW!jt4mH&i@Z%XX=6IRP zd8~oGAOL?6U%~8RRaUAh`Blr8Ohr+VV#h>n9-c92f>+*(iINJH$zy;Yv__6YWCZU3 z!=*1dLv3)r<`L1gn@E4Si#) z*CBo{MFHBgr9w-0->#Lxf||AhWz*Dg$YOSUXSIJOL&ziDnmTFP_9?lT#|x-%;JnpD zTbhJi9vSwec7#DE2=Dt#q=?Ngw#w;77tmdI#(c7xT)qKkq`N#z6TeE&r|r|^aw~oM zUSj|#`0vqOhm4bxL{UA1hD)+MO|$sbgt;Vng&YBA1YLKBWN;{hh#T|y?eeW!zPy#> z`}Tjeo!R6Y z$zj^YF(Z)bH4;FNB!G5F0vO$R`_~OTzAI`Wrmxe*>r1*Uz9?MAWs%mYC*^4qg;9L} z&4f`IAc-J)o%ngH8E%?le0CV^VMo@=Vz^vW*#IG$DK}z+jGg|XC}d#_B`9h2Bg6_o zF7HwKG$Q3wScnPfc)4g`0}?vh_XdCS^tJE{HC0rOL>G&V?gK?AtdlOApokdGy=IPe zs!b_5%e4C-zuzOwN;98d&+pk!6%#*nNiK!91|E?3hTF{lu;wLQ8;(#S1WEfq{qIe2Jn0}6@tLLFLcNV!;V;DOr=|-p!C+McjEma?Ktg3IWk;e3kXOe&N_`B7) zXi&GI$Hh_@930 z!r)e_*C0EC@1tzegwmw7d>`?Zc;!AzSMIQI?;j8vl3kXgdI_uFzyAqeT!i4#L}td}$O*)RfaaGofVqS00BiW4{ELHqkzis#RS6_(urhG^d5Iz=&`0H+z%E+CSygls zv@UjbLdk@fAoN5KeXoBAxBkJCqbYNXGsPm1b9_h&t|#VJWivh!fZS^axsUsB#uzz+->Ze|H%}GGt|atM3ne zti|Db6{~CA2Y54JBK8 zWit&d#L1x0I)g&%n4^-+tm5qK$`+4(O6GVN^S$Dn#T*F}4S;hB%K(m7c{hl@1pd`M z-_JS8Cf~>58N`1Rzwye2F{>YPaym~V*w*4r>=nEg6BD*p9EMR$wJ!*s529W7{bT@R z*TTZRfph?nXQ(yu=}f2}Xf~9r714wAKDgIlEhEemGlxm<%b1q%HQzU~3B2LDXNd-{ zyJo-b#J$YgmxrVv;W3op+@j+-hQ_Jr+ky5i7|gV9c~pOfPL;Andqe!!p${cuW$Z;F zXYdmM@?k&@^7x;ha!4QM6bvd9MDwAALNaqf{9xJ}!9%FmkyZ`oJ7+eo94}ytn_|;T zju4yadEwPhX(MNOLt13?09$Tr`X5L`FkZ0B zcY)dX(tS7@5~C+u>nKJKS!G+$df`1Bx)P0*a>H8DZe9^knsd6 ze;gd5Ygq7o4BnSc_OO*b!}`O*?x3I_0g~x|g2apD6hcR@kP}pfcJ&aD8~yogK(G%} zk)U)@awAGqpW-yYx}8(hO~j9aWJIn56iGHnN6p>#ZUzOzIdL0yw?FMcf?`cto3xd` zce}&4RDk+-kQoK=NNha%%?KuzI_!3uf0gf5QH*Ac=6nVp9x?@oHRADL-p39r-KChP z`jPl#T(}ex-8neM&~Z9+3!Z<7?*v9!<`Eq6$w#8IOck{ysF;?X`4{Z=@huzy&R|qgq8;%AdT^oK@H_FSfP;ijeJxoZPkYX&CzWSXg(=uvrx1g)CG4N zA8m92-`nUeEs+bU`#u8LOH_?`e+Y2HqPw`}+aH@oY}M#ZRxz(!I_fpZWonzTZlQ%s zY%`DL6ly{MG@t(RVJa~^OA_-E`0gNkWy;~NsWVzs4!=8q3W$V!IWYp7thA*Xa!lkg zdIR6a-4_6V@lA*#I!c6r4Fd!iB_nK$iaYjd9>G24BkS*?x};6&lE62Ve`CY(h`WCK zWD)uzkk#gjKM8f>r5~vU%*O@~c|z`U>}fF~x0s~LY>h=8LF}PqfFK*_0!Rrz;vGNI z0#)^v?<{;e6&$X4gD1H#*dav&O;=dh)%_^eghVwxxpJ?j)<+S^2dTJSQR}PY$uSsp zQGMEPK-M|J&VvpI6p-w*f7p0<0|s{>1$p~1=UPLi>#1>xe1zM$MbRMt`U_Svym~r) zmm2n76%BjsvoSsvJ6RlMvW(8*2`jA;+lJbsDhWN}G*}YaHEHOPfHO{epX%Pl&&>bE zKN)lTM_aUeE?{^Xg#I+F55t7+LYNm`fCE*l?HpXOCXBI;Ui;-}e-cDu(cpI*@h?;M2I(O04^tD9V5w!YOr5CyFM_mQ|OSfc#( zu(@-<%jx-P_8NOyFM9{)yVLAZo=r}(-`hCiWTQ^jKh0jPX3tNu-buE#njN*WKU&%8 zX?6#ov6HOb$&OF66Ii@Xvh9N`2aIl*op-X=tJx+DLY=HTf6R`1*&f(SP%PwD5Zzm*i5NF`vm@Zr4zoY*X73NP{ln}I z;**TB-}7vIk##S!cZb>8MRwlGc0d5ht$e4iL-kGt*K?VpCc6a3jqMnS6KUcwnuOYy ziI?dtPJuh2e{~GjMl_eVE~4$iY1Fo#@-4J&k_!!;T%*;KYjgn>F?bd3(2>BWK=&lq z=&Pv1Mz85+7S-A(X?k>Na*h5CS%SBdhNB|sW|NF{Ne&DLcc8$?a90>4?h4~2$%(;} zqW=otf?<_hV~n}dFx---7<*Lnv)EP`iY`4yrMtoae@${@v?kXWy2&-hadM48oz}I7 zP+iLuo-5qKh%dH2Wie*ax5Q_F^onpKA$!Owneg^^FUkiA>U0P zCTb`KX2uEzxfO&z7*7c1o`kd zN6bfsIyrgnPCs(}-~^0#$)`9lJkQC^Wq=qB1JE;=^<6|QwY~%7SN#AGfX`%pr)Z9w zZ}<0K?!svdUJl6$rCTk;@Bw14XID5hf1#r5`BVv2aTq5g)H=I_vpir2+r=w7KP&D7lcq7X~b+gP}hEbEk`g zrzDNnl$vc+(3T+RoEJ0T_r*u^4@&?6#KU>l4dr6F(%H8xeN<687x6~C0b`Bj#!U*H zU1MLctMbi@udVW1a_b58#nnwpTg{ewGin>kbXC21$)oCu(&pr=%GWn5e{xn`U9qmV zw<*%5gjix$JNnvVEz|h9@DLor_Sv zj-GK6F)dWI6DtZ;S06GrJc)TkIDJo(sfMl@7E;s3h@@5EV+S5(SHuX!?(VI-=W;$0v?zr%0qRJQN-Usf?coRxmx-AbXUbD-A2hQEnOqQf5l7En#v_{_K@O(h z`UIX);B*A>Tcid9KSxyA?I+0OE)6N55kb2*f5%L{JMBxtI8xXhMdyYp12d0_F_DV* zt)^g@BL#S%KySHsJxfA6Kyx>={yOdvqD2+R4HLW?1-L)AJ=gG^FE244~jkJIqJONI-@T^<|-pD;v{ z6k){-7bLT#BiJiAi0Z^9Ly`9Pv2KpgPxT*yDru z$pc-_>&yA0PKCdpmILtm=a-N&X*fnAK-TAWnfi}iK!n1Gq6Un+{gFf6_*J`ye^VLZ zd@=M`Vv>AYw2Mp8x}Kf;IFcA40E6QI%7^J)2CZY!30= z@8&#~{@yyW=>!!eenYgZan2${Jc$#$UJ^c}wvzM}Ca^MpMLDh03cQA^s?!P-_o8d& z8xiJ806KMMC`_$@F(y*+bHr(*fAAOt$Ro)_AS)OH7D9q>_E-tAL-dBM1toYcEi~*C zG)FYIJ-}>Hi4}Ixo6DZ>z1#)Ping8JCyGabqcx7{bQqDXm7Br>O{;6Pz|Ey`8Prp1 zN(CMHY7ijIFCy%}iLJEI*Ng&7`D+Rl&?Go)A>s!J&aCj#Q7<^Ol)iy$VnZPr zFdXqBpynouw`Mg`7%zb5Qbi{AW+gO55GHe;<(07%M#F6?iClp4;-j795e6eEo(VzvpxNz=1Tzgte+xsNBUqYz=Wf>I(e8Re(I6LL4A1eV2@(bjW*5|@EOAT1N=IDv@jYTEf8TJ*#3H8k<;W1K zE{UJ}ux`6dw_W$(Y~&lrfkdi0Kfp#}{&UYQfgw`{lQ_L^73jGNX;Pa-u+Nn+6tG>b zyOub*nc#4fmY}k0^-sXFLWucH!V7cc2oDI!eqMs3HQYo&Ag9XwkuF`V(eGq@i)S9J zX1ucyBMbnJJqoh_f0p4AnD*rN>iG7wylpr__d2XD@(XDx9cd58}13%zlPnl(2 zpw)=YChjAH0n0XYt-{{+v)zaLZ{J{3;D%{LOH5R28jp2*nLM?Ec9R>Ry7t(4q@Ck8 zjMHzZ5E|lqf6D7LW4VHhWDuA)@)hklx(`>{(64EW>KBta&Am9PLG?_zO#!&N#vy6i z3NU5@N0ejKV>Q|4t%)m(r45zW?~P`>q&`!cVl^M2Vys&M(3%5QK#-o3*L2lYV3d~= z`;ze{X-1`B;XMeGCC(fzp;B>Mi2)-WaGhE>!Gp05e>5CO{MwrC)<5i?EkAnm1h5;~ zVCz37_@zj!9OMh?kE6#=o<4lLvw!sH<<84D6iU6qYzS9NuAm^VO&wfO*xuI5gChWg z^gLbBHlRp@(Qb@BCNflfF}wkt@`npOUHAW;2a!(nKyxKr-fYLY*3b?OPwCVG8S);O;B?bbkK91FTw@1aO+E z+rB@1sLTsZ4$QE!%^hITqw}1o&*KOm4|z8Ve-Z=`$+Z$hvf_>5@UGh?l>8^ZV;_ay zli#J+Bvp{gs-&N%1z6ysB3y(vcQJ1K3CwFJk`^cZgYL!B;Cf&$I6dfmEXf*FmdYBc zaFSH+vB(gjJ&gJ!NydtPa>Y(HbF~OWXVL%ZryH31@oq~XdNrCZRo0y%JYWjAeZ&aR ze`f^Q1u9a4bd|RZR4tWr2!dE+TUjDiB`k>0 zqOPD(JjSpq_?q!r}Ay;R)%x37$u)vV5HKSEu>}bj5Y$RF?*v~ zZ%v0-_*5G{H>~i?HrMcST;5Hq4Tvq+f23qY76&>MY$B1GU`|n{7M8OF`&*kHlNY4+vip>qqlh3@PyK{7my|7XfA&Xyzjg<a?xZqNWI-$P5md=}NMn#wi zfJ(t38-ib27ta!)tVlXMM%5q*)zOcercFpp4Mo8j6hsA>7ujxt=eM5_q+TwXhQ<$| zN?rc|x7Il55#mtv>r~111{4po28+u0h-hLi%9t(>C}yHN4nQ=Phb3h~e-|hCptOg> zM?taAhmCHnouFN-=m+Npb!)Gv=r1(3&eI4l_Qp1txeCb(bP>TZrm%9L5RGP$tWi#< z;yw`#k?bG#*2qg@ zX}1}UhZzrTVZ4pDdQ9$TL7ddo>u?bC>x#aqe_SLhT`CGBQSj{$ z%V=0bBSt12$@NHC>nrl*HV5+Jm>+V1DGpgMS(xFz#|P1F<=K;M-fpC z1LlO~3w%^>`Lc=KX_`=ZTr&l+cwBL}qIT4+Of(R?HCIBLe?j=5%9%!`=xD-nEn}%& z97$DWB|9acYz+LVSV#Stkp@!rQHaL2#%*JwS&SRfGoE*kC%rQ}dD4KURy97rl$0Y{ z$(+q;1DbuD$N1Q9@Lfe^(L!#eQv^J1@^Ib{>tHq3jy)|UKh_u~nX~#8OSj`grI|kL zz8agDCn!K zhUFCWR4gWiXOI`9JqW>F0?Y>o2>)1|aSsj!!=Iu_Edpvq2+?}rtWj-Eu-o;4z`+s^ z#5ghkZA|XaKt);>Iiowx`xUUszt$;Vmqa+aMuA($w2A9}h97_38B8ssRQFvP7&;P6` zF_dw+f8Lnfpnj^es`ysTjdJv>XVpsaMjcb2Uo$2GrDb6>@KyrIall|l+~dVM(bGsB zo>>hJ2?yC?irCQUG?DR#3e?mTUXZ|VRXIP(b^mXWiXyeDx1`NOL(I%LGjcHue>~)nE zN2eY{sz5fc(Mse*Z}_@s?TWU9)Y?Txaw34GzA#2k`e&F7EZlD_LmX>ze_JWY2HUdGi#TV^y%+u45wa7BREPg`)S@+X`qwmCuvdX zwXVEAjWNTRHo|U? zrGT8$4EVIeDYAx?l(7=t;IxA&sa2$zNa3l7$G1bYy>>d^E3?bnXa8%v*iF zDOjJ9BaDL{4ZP2E?x zThaxT-~XV_pRFfO*c(8g8KZz$TvbOOwEGiY_zFaZ=3!T$9)Ocvt2x9Ge;9b;H5%(= z2n_cS4536WLuM@~P9}ljqP7y$GSy|>6x==CP_ob3K(QzeLcEcRfzTZye{)R^@=7Zt zo=#B#w{)}fWPNwkA-%`*W@kETVL-*N+e#43Q_!6G#VI0KN_7=wwQ;@ySr^NET?mR; z>Eks8jNHE}YEs&fZQbI8iX>NJyR;RvYOJ`z>brPIp8_df zT=c!Ig=!gXEd^p0Bc4R?e?zy4`xZMdwHOgdeq)PKVf8JhjvxBTdUfkoW9N)m#so9B zrrrLS*=|(V+IBM%%_;m6s@sk9ooTxff$2B48x^)OW5TGzp1FF}wb`r^DE6otLdV~b zpWS)11pZyy>ibE96G6^Kx|+-Dx^$##c%qFLb^Ho z6S?8XFm zY|Jonq&2Q!l&Sd!Sd^-5Vugwaca)msN#(rv3dDwr6JHF#5WH(rgF?xAaC_qc&7`DZ zNb?8=b|VriS^$GxXbL<@^*YV?TT%G0npJDnf%Dz-HD`pWe{HC6gbsuPS_z62wv)Eo zH=FE>!)c5R;e8NK3$Qm10&2y1z{58|z%sC7-|1&_1;WrdL}MvG0%<57U|La6J)D4C zm1);oz3c_-?I&3a4C^P^CajpJ+15$+75L&jJ6g?NpJb<)%<- zt66ZUH$vgw0H$j3(Z*05U<;!Nx(^V?On*|Sf7yma>0OQ>jhDF)1rK9$t8>L@&luRV zV+E(dg3S_nG7r}-=T$+=$Q+tQLUPQE;4Xu4S-VP>p6ksM|ladDwZxl`EbNT)E-TLq~o3r20^o0>P_?B z(8QbV4oRNDM^B=h#%2t_5qum>g+T`1a;jYlp_=+Z2YJEqi@1y-%yCS9O~iiUu?;)J zAorCIq?|OL$%jlAdvKt{S62AXK^@Hz;(-x?Io3Ex(3?rHHGH&c+K1Zv)d?(`N1fB*yESp5(O9xu}|7fs)Q(v<(l*| zmjV+7IswU-Jre~*f45Te@Qc)HJ4!EG1*?4ebTfqx4AaD0Y2vSG; zrk3W*_>`>0o#fb@F8RFO$YEj5uY+Nc7wc!7Ku9f;G?JURH-}SkDe|%Bv?!os(Ya!+ zH0^3Us$)4;ykmJa>kw0N7B)Cqt#2sET2M?Gd*Hu|7@AhXfB1c)!VtAL9m^tV{)TdW z-L9gw^;KeRwZRuy&Im#2HCja(fPBJYb7*#H4o^Jp-$Frw)3=mP0-FDuz7EYGQh>+wM<|5I5Kl;z`A*m#<6eXEG3G z3dPpH{b-KDf(@WK99(Ues4I;IA7$rQ_dsU*WeM~Ge~hpp`~w?7>~LOn7A4{VnGWz^ zwu2qy!RXDNep4HQ9O{fX{JrCD=NMKangwW+$ErG#5du9PF6USXx2ShCQ%`}r8nFiN z@-+Jc$1uRSfYky53ot97wDRoEYW4*({Um#lXRlD)Mb?9}#f8@W=`X6md-_YF!J`X- z0u#Pce_}UbbAXt|^2WOI9mOZm38PuyfhG??UQG|+8h8$>+2kH6qp&@?J5L6nsFOQ7 z5Wqca8pKxsKAJKSj&v5>4@d{6JS>EGb8!w&;?F$(JdZ!oL`mK|F=!#$EqOEsMAnp- z_DDxRT0e?~RGnzi^`YX>F%W&tHUJ4E8Zgmuf8heXRb`nBal=-#QaFa()(BKG1Y@Y4 z?c;oMa>_A)gCU;>Mrz21(Qrf(H=IGWQ!GRRM0`1Z{<^&j((1R5wvHZe@9jU_ee{Gl ztY2;KKH7@1$=zR8-XjQX@1lFgQSfI2Bj>s54KUQE37jjpV=pym)v)X|OT#ga6*xNCa0LCf$y%pG ztX-i$>cD%-#@$o_K)kwb43||Or!Ytvf5xOPYFt(ghs(O*0Oc0YLbJ7ff;*~vA!0Ja zFx$c(@*l!yT?Yu7okotUlCDAl@d6)Z5(6ze^^k>pWdGm?}G_CTwu&gTHqnN7&fuUE6%%m2v>KA zFc5zaGr99V+<7l|)(+Pp`}j0#fA7Pc_av(J$}8M+uig8SlYenJY$b`djer4x!Ukhwcq5Vs=wDzyYTxxygl7Z!vG_Z46>644*&3``JsWBAM-0e zW3VII$I8ziHyY2ay&#Z<>v5#r3-IHL#4ogLfL3S zS2kMHm5qi?Ly{+fx6$ApGJsJXuh0!iPV`AU7od0I1^Ov%DXV{sSxy*!!UIzIX(V%H zytEUY%OV!+mqQx-e?YA&fI##u4UuEY$;q}WVUGPNkd|U zcFvZMzOv05{)OUOuRhM^pQ2cFgrZ|&J-T3bLIDYiN1>bnHMjYe2XAD@=}ReyR~rxM zA9KL?;tGggheYAG;+ZPQQ(ewKduL}ay4~T!(GZQ!rm+K^3PzM4|MSCtf3bc zSdk~$J~j(++Sd2zJ`=(#gI%Zn=i^=Bi|aH04Di=SYj)VRgEP`U8#dFR-mDvi%VQwt^~gY=tH$7`{PNe(1)kl` z1&{`BEevAk<^W!fBaJZ{;z*Mkjgph?D1^4{HXlw(VV4K#&B~z5)vr!sFV7588=}Q_ z5qkA@5okl!LCAVdcv;I)^{(q;$6DUP%c=syx+tyPf6{yEqrSRq1OJM;kghR(`7N{K zwZ@$GqUwOd>98RP2q?FEU!lhGgNNa>G!7&EQ`CXz>W#-hk4Q-`1wqQOkZmhoKB6an zP=j<5D}y5zD2#daAK!tZPWXb$1O%lt3XeX5n|FS0vmd2xbuS(f(ZQVf+A@|YLaJoa zReCfVf53@Gd+$}_3hvlp%|^MqD2RyUv2xL^@GNt|2;D*iAPqD*6$^AFD<*T;8%HNa zLW&Do4QLf^!4)Vm<@ca%Orc`-6HqbU-RL)WeD@skX5mh=0Pw>gp$S?*vFS1az4UPD zjAu1|{R*=_z$f)7`<#H&@;sc8^jxN|g-hHaS)eAf9a~<8?9#ul#(jr7#Wi`oqUCdh25M1fG+)R%l2edfn5r#@udBv?W9NR7iHRaFsbW{abmt z;pOP_XO|Hj1tLid?n>C?PFV1=-Cp9ERY)y?izEspCKxHv`@cX;!*a=zmrNJBD~<8O z&x(h?1Ql8kU>C+KjV>N}qIOV@XemA=PQgibDSG8+mwX)s7&}#NoeOY1QFv3Mdnz$b z76r%j@r=kI#f&}`4V~@5W{9P15e5h!HKM7yET;=_m~u*tca6ndo6?MO2ba$s1sEG| z?3g&7Ptu?@$pJ_L@b#QSP5E>cwHCd}`~#N)9t9_V*=MBY2Iyl&w@C9;9Jqh`k2@M~ z2_|`Ra;OgH=4u}lloVy|SET4+4GNwNHSB~H?3F1JQv6^IA)(;gKPE}D(;B69-iNvY9Y zWMZIy+If4#2JcT;7HMnH^4P>nW;?6BfR=1;kV3np-Ir34; zJL5FjPW;9zDFX4(u%3 zgK_>2hvdf9@mYTIJA%Cf5P^w6FpCnoq7Ix}q+ODFN`T3~;k#6qfO@jVAZ^TbX6B4! zA7N)%(O$(?)U_ccna#2B;vW3!<=6c+{dF1cUEYVjGX#cifu{-@?a*L#bYOlZqd?Sf zoUwJ8RePYn3a?)hefOuAf*%DZFpJQ{=ZnpWDgS8?fj540u+fK#`O~-wh*$$iqXp0! zkMpN6WOo`r&rkpHTh_<*FqhdM1vpN%a3AB-7c9q|n-u+XD1ygoQvBWUOa?E%qtqi6 z5?o=0xGGBKa0-BS2lOt3l`%XF1}oh}&I`J%AmOQ43yaGLdMcCH^lrRK!dSSugqL3+ z1s?*PvX_7$1r#ftINkFFGEXhQs57EpZTcmnvQXLiLbM~$bv3~)GRmMFS;B~I(^VT+ zy(O2wAO$KISMWu;6}DHJN~!h%Grc4_I zsR*N$%{jUe;Y%PjR2@pD1>Nd?zQ>n3Aq64=UM!bhAq5)-T>ye+VT_l5Aq5(LUKtd} zhDCgukW?IO8U7772Vh=vKvei6Qbac9 z{s9ytd>-Q4Nm@@H)0zODt5F*J8?&`e80@iFpMJ2{fw{bw2yBA~Xqel)tkDv+%%TDubisXPLAj>-X{q&#!L+H|%?ji+m6wGd+;9g4M z1J{&=R*Q&^JHc2!)0c501u6#jbpFB88keCX1r;03_J}FxuvIF6CO9BU>Xf0Lm@(RH zs*iM|0=0@3u1;5|BY0 z3-tohLQI`+5TgM-gblAR$ZyYonTTNxOF8V< z5EIEMt*E?pP-Lf%rkSl1B$#=;hHv8IDpOEVEhVP-oNC|9uoKkUwTBQNz>W2-5aYP} zxFRac@x7eGn%FIOO0z9$vn~J)9z>6(asV1xi{on%`=rEU|-gR633cRHc3ZcZK^7K3rvq{yNc-Cdi)T zj0z+%kH0NdG%WzSq`IXADCxWbYXl6eS1Y$odt(}#poM8IP8Rd5y#%ZH(zC@* zM%R~iXR)Jdo2cMvE%xOp(oyRE;JRSuHuNlGg_s z9wC)RK>c(GI6O<;6{-ql{t{_s%FRSi0Q|){u+$(BH1H^9a-U9*NQHx3xB5tOqkKqC z%CusYm^C1`2<=*bj8$$3V*+f#`AD7KtDmnCSBDRDUNBSR@I{XD)xkmvX}3V3G3a(X zFoeG6N7~|2bB@x$>Lk^fjKx{NcEZ=35Q%Bnz_y zVJfW387o0Kd_?7Hf)n}4819BPS}1l?4l58vZ|cCJ*i((qgzu^DrcVzn+^7#7;Z8So z1Hse+Iv&)96dT+aZ%o(Vd;`h5ExO~*A|o|mxCxnmfqgHr2zw=~XkpYIWkIHCCY0o~ zGzd6v$6k`Cc8*R(2|bk0h744wTI@xS+c3CQGxFn6Jr&z(!bKdW#O_UPWLnj#^uI)?U5c57%t5!(c zyzbEG{lekJJvvPv0diS=Tybod6E_UGCg$chsS5UFfA~F81wg|vsXo+?hP^@HjH~jS z49ClM!fa5LR4BWtXJ)5Ua`4y|$G$Ddfio>(mQtaB4gJvn2%)Dy6@a#a6_(wFdd*eW zpc?v>25y^pTjs?&)>~ZEB1R10PgO2vLP@MUq=s4f*XlwzJA++9T&7n3i!A{ZTo5o7 z`gO0ze^ja*t_#)4@AZ~O8#!D#+~89!sk_60*dEcC1ZI~4$5B!Di$#qfo)(IV8BHDQ z9%AZSp;SmaX&#N9tHUh#6H{}x7Z*R?V9>!G`4)XQp}vcw;!SdPjiDCEc__Nr7Cy0x zYff22N`NU++vLOTejlO>WU+*7a9ZKBkN`*^f3F7CXH@p0Dthh&p37I*hsSL!QzW2` z+i=y)Xu+^DC1!9f(mjzNt2QxGk;^xeK2=C=Z9mV%1)Ytj=~fX=(H<3AQoTueMu&^_ zL4j^w^B=HY$v(O~h9hx2#p4vU0k`?^M&~pi-Wa0hm0m01SL%!of%Jb5)WT1|(^ zVKLH3lvLTBaC1gpB_>o8luyV3V{sw9$ety7CbWSC;EpRbB=(@kCdu4lCu_JRc`=#z zRYGurJ~41gxT-|b2NV;`vjug3rA(7jjr^Iy!tKQve00+Y*nj$|czoa;GPHueEzL_6 zBwSD6Dx)Ja0|_|z4p%CANtw3NYrV_y2IL#Udut*LT+s{G=csUEvJ=L_G0_w9@*4CD zwhcSz_)NadqD=^xZVL?%N(g6M6c)@_Q9=+0XH~B|-IN%pof1TL!Lj8ocT;Yo8q5GsFjvHNlWgfc^{?>nEf>IC{4VTzGyT3-h=c5e@!nRr@fl4Z3M|(UZ%1P7 z^_G0qcDg%cRna*CW|j|;<|)uSnF|UuQ&rI&%czDzNHySM{K-P9`AWJ^4Rfe-eSEou zrYqHc#GZx>7a0v#BfVK5om%DO6aQ*}=vmQ@HB!npyVRTpF zQ_Sn3uJ%ekQo4`0Jz+R~O_<$p7728cboDi1C6mNcusantdXhvOYfj>bXCDY3Rzrt$ zy_ImbrynEFM{w7cvUKKchB*WmgaozPpdXS7{r~_gtwjT!; zC|hcDn&|3s2|I?H7&@}0aW+Om>rd)**q?IJs{iy8!o)U#ZZ}n7@L;|=>3bO0pUEo1 zv70ks1cCF*Yg1WwWn_1La?w2zg(_C0!WM9?`@wBK6QCO$%}pr+aj2hM6A;IFK&DZd z6VwQQU^{@s;&RXyhlk2;5{SiQ(x>C!)P{4d*$(LI4 zrIviDC0}aEtoZ=N8QAc!&hFt)0J(_Z8N{Gx-r$wxGKf9TmEz^P%4$&mq-DV5R4Smh z8H(ApZOSFo_CmRYLVhQ3mfJx;x!jSV9RkbXVS}gT^X6Cn!DHubbJ$p3UVd(C#=mJk zsDsF8@hyhmeD>PiYvbM;gc;Vjjhky(oBkYS2NLg`ZK`GinQxd4<;ZL(2k_QWC5JhG z@hDv+>TGT95VODOUU?Uy!1FK+>jR^(!?v=jkS+W zya<)nQlB-BupS%$lQ$1uMHSZf#-31;TMb{0Z|1vz4L9Tmcne&*=Xl%F8~SsUJ;#gi z8-EVQ^DC&r8fd)MR%m&|k3N2IFoYj}_8y>M`0)jDN>>QdB23{*zK$2CNnF{Wbw!$v z_9M2t*lGDf56}1gt`#|<<=GM6R?~P$CjbAuzexF;p+mrDs zzbWtQjgJ|Xg-0O zE~zePs*Re<|6FJgf_-sqY5AXQm}W}qgptA{7-nu>d9(5F>@_VFZQ5Y|z1XJx<#pDk z?S-zeySxV5SM&-m?YbI|{=%TEmj+ywmQv`d?z+#CUABV-%wJC+e3a+Y2(x5}|DgDJ zh98Icp`ZEHjpHGFQnC5P8<)6$LCy0O%`^PzrycxrX{}T3SX0%u#*n@&cfGh zvaoZ@A>XMO^4E<`I}KcOsHhe50ah;u)~&|ZJ2?H13^8KLIb1Uk90m%1LE0ynGpSE% ziJMLLG6lfCvPPDS_0;6}T7g@7%dq%8LK(6*2Ti{L305BISUkU*nY;GE6aq>IwkGdW;1IMprV2 z6Uz25ydKQ1cJsZjBjHYedC-u9klqHVZMZEahMTD<{vUf^+SW$WW%*Yq^*b&BDR#UF z3kD2kDX>`!EFKyQBpYG0yht*e`R{Yiy|JcJKvh>y&xfgcj4~r4V_$CE7hMs^IA3uNjC2x(I(KyA315OSl(4WSKYko6Ew-_yV<21yZr0x=&0F!~wlqERqe z90CfyY+ttEQOO=G=rQO)`JO8Gj}tLXVvofg!Kw!9^~LO!r&2~-J$7U-1=4S-T@@ga z&}gU!4Z!VdI5@k$LsSbLgtG9LHM6^8Rp+R`#-cZ!)h?cqzbg+D;eol>Zr03R#1^Q! zn||kcwm_8l5gOZn*&J+W##&@2YGTC9Y-+|1_8MTh(*qZHpnU6jLjzRk>KGT@)%9(V z3;*ZxflxWj2(JTO`8VPXQO>VSJl3%q?&8ks2-=Pr=;EO!6|F~8I9PoapWZVNb(lTJ zH`K$5b)+EDi3>J^1RQH$_yUj*=@@A@K7RaoQ`a)vTRCHY$aXV~X?R-iMK0q4jWukv zgH+onfF67*F2igYk|}XZgr~?YQ50s>=+aRs_?Da$XCp&gQiagn!Uk<)72M7GHkY8Z zHUc7R(|Wp{UV)yOQ`qzR_7J$R#6v)E8UYK8X)c6Z`TCY0yhnYe1^7)cf{LECB^J3D-KV&<;$1sqqEXfw8l@F4zfD4f$}O zK@ufNLnPcP-NYG)RED(iLogcQfl^g%YA478g)~1uMTDV3ePjk?kL{r8DeWOjXIMib z*60j>gbpnDbQ3g*)3LJGi;F3HB`r&dq>v+pL}&^^SfZ|C$6 zfuFFm(ZhA=;iFfR3;9;5a(r|G0;@GrezjNm)f&0uXLx`AescC#3!OUoMxxsqy~^m` ze}e7ZEA^0O`d5!>-tl#0c69pfYfPA_$#<`R;WrJ|Wz4)0;|YOSNNk?&#DBzJ6^)!9I8r!EcRF+lBt+ z*4NQ-?13U`+EU3KRuQal%&KWTUes=@_3y+v)OBJ`NsOP7i(>rj0!J-aOoB8c)9>DY zLZWI%pS!A^z_BqVgLL{cSC!GAqJ-|P6VL(WZYJ!b@ss8UHAyihBeF5+eBJ8&g`zz-4g z&&rL-F|G3Hv$IxG5k$M4mc6ADGnCm%#X+_ z1+q5uFk$71G^baQAx(b?syZr;pI_9Kst}1wD@vjiT>H}#Ln84)!KQn0OkV@in8q-$ zSS0`*EF+;ojJp@#OR$2|6NVvwVXv_?)P#zbh7giT8L7LcT8bWiac7#*$moyAx=VGR>W%}s|isG3og^fE)gg`a|Pbr z8Uj*k8yI6oSDA3mnz@4=#a&j+Ql_aVp31j4_K#1X``PDSZWTujQVh~H7BNwGC5%ROie^XO#xh^@>u-W!^Ym{PY@z=hpd0Q%Yy|D zL@c@wM>T$fwM)H=tq?s#E@wc%i`5Ujc-U1`F)67_-|hiz$_97{4(X%$i3QnP!T#sQ zS_8w)9b0~nZ9W!%90ksoDLDll0Wg=L||Jk;6fr}TL5u5s478moi( zQo$TK$=o6BIFp2l6-Zn0>w2s(d*k&?p1Z4% zO69g8kM3^WwKhd5;TY9xt@oYfObmn|)Bb|)h}|gY=FSZWH)dRMG&`_%s~@fiZ470N zg@@pO3!&>AkFeZMB=1T_-toCW6a75_Vi>|u!(!v=Y6uKE;-RF_wV@)1VB@7Ab!?;@ z;KM4We|o1qq6D$9BM7FDrA|@P$8w}NEM2~OVYY z_=<$6+pWPIpworJCL^I?_&!3I8yFiCMA!QiBnf6uBq!z==r%E{j3H*6?mhSc|->Kmb+mKp+ z1#UAS0gKQW!_wV`Z?21B97IDkV(J42(6@?K4V@03t!G1^*VDoWGuZFCU?`YvBh{6| zPj{eBt9199{4L$PdO=-g4eG13wNr^25<@%o%|i=`$QieH2L^A0W#=C{?s>iWtwlRj zHH)z|gL)W1KtxNLK}63`YU4MIbWmA;A%0~(*D!-&dZEYkP7|grNiHsRNKs#!zYC{_ z+fA)HbOW2vp|7dZzrw1H(1PImSS$%fZR&Db++N>Ph_V_)0J@v{8qjCx^*PX4)U*x2 zEX3*IYISQt@O#XF^shXS5IEl-6uYq{ZHotp%M2nn?@*r00}y!U7Z2U5{8u=CZ{l{! z?}oIS!R1014#8Q&*csR+EQvLJO!Sn#q6--)yuccfd+|l>sttGr`iHs3&<<@ce;iWV zBP1IGF&p4i^i|y$);wl7nJK0w!4Q}~7!cx9)}(KSO#cp{gVFPkX6h){UxpQTWdpDy zBGo!B&du*1>jahf4QnczQ<1-aYx|i9+|mh6SG%1tn5Q1S%-SqJHxp>sXf~Qu=ZNH< z&|cZY4vRiN>`gPJbyzXl_=;>yj_*epx?$pCgk*?0wnM-F>!CUJtLlpFg?+(*{{iZ#b{-D}1 zVrVENY_a+|PN!bYWbgsg@eEF2q(3B<%Jh)2*g`~Bgw3)}+RoU>4j2-nBw#Nhzz6zG zBs$SP>1>vv-^Cr%5t)u!7?^+HlxR>lWDp;N69c9K7sWuOfU~WB4WqSNSmS5*64r&K z7Kca;@tol1SI05d#16=RYXc7eLjvT7X&B4x!S8_G8!*qg)9E*uAaj_0>RA^oBiPoQ zNW`3-;h;TKwSj2r-riKbRaeZ-d@n-R6XQI5izP#3dEq|Xuz~?Xcv-tg> zy!z+L=%ye@xdXl;LT>*vbJN!`h9s_zC(FZr2MzU z4>4DbIB>DUqa{SMNtp`8r*7*Mekdwcf3UJ zXjk-(DJAdxZb#emo%OKqNEf}MyyzXj(K|AW-cerkj`Hw+xVR*9S^kruMEv67xvLk) z_eT2z^Ls^q=7()O>-*u&__z!We#gi6gZ^4t;y9+q;xGLd^!@+;FZG{{69;Jg`_1BA z=Dc@na0eZ^vb4Cffw9K#-rCIa&GO9Z&DzT1&+q4pZ?!nz;k#8}j#LqIGHF>YOsnSyPPbZWiCJ1cH-)RLVPit3Z|mRCz5@9-I@+6` zo&cA9K?N5bBG_O;AK@mLo1SRj4&_ES5(K~mRuEBgV>t-PrU)pzmfnaJ2;S=}~EN=Is<@^>5xy zNjCSTCcaozW^xBY?MlghT9}^eya%f7XlZ8nzI0zW8g1sw5PJWbK)6kW3$}|J%^e*b z-Fuf6N5ykK0gpU2_8vq{F{9Itt=XOe$CoON53Ja}Tm zb6;UW^Ywo-S>YQf{2`Ev^2j?wG54>B@?&m}7uSD1Y(An}(iH!mEp+#p`KN}yyT*?0 zC*d*#&$8s;G;EwsPy1$3UM4YBe44h=2nPDgS*LXc4!Dn_cOHNHES`LF{4`)tZ-7;D z9C8Pe@`+uG2hTBw+7-w<=MEscxYdQidAwH7B?qQR_TNY8zS0KjWY|Cl24B%+YQipzUrW=VE?OpXT~*a zEW)8R8`a>!t&f@vl^r+q@-d#nAitnR*<+5@kq6^jXvf_;s>vF6pr%FRPMdXcu(b`l zkyYx(QhtBsT$N|6`{Nq*8;n9ksD0R%%)@ZS!!nvX1>n-fX>L>nn|0wzfm35(rwm7` zBE-PgblrvuLr`UDi3S~MBj8v;@H2$Isyybvk8%i>!VtojQ_FeS;6l?iaxB4qT)Bnd z$os)ocR&`XD!Wakjzih}RC-um++QqCCM&zUpLc(YQ;*3{>=u9;`mnNzP<=T4@Of){ zb7g;}IF)?Z{JghPoK99g?HsHetQ2R=m$S+C!RBW1wfy)G-Xwebi@WDJ{>= z=g-wBAA?QiK&LX2IGs9>u-w#-E|Nbg$*0@o@HW}HO>RCJ8lX{5(*QK0Gcv?KAX6}p z_&!tLUxhS+o2G7gbR{W7gM^sV7HbP6gvA)Jd^yMpp@*n~9?XqK`hBn7{E4V7BD!q!sV$?`0LDM%?vXG)BPSYggqYNA6qK}BYZi6@Wr}ofe(XN zPp!Wq!tXzZg=ks@`Ro2g?HVc)py{qq$?Dxur8%UZatthEmM6?(4!(Jq38=A-h#8H4 z5I;zyk-J;k76{hd;3`ez-xEK|8s&fAVKN|igAl`!9Drm98$F97>Z|43r!etT6JvA~ zO3@}MDEsaOmRjoycSFeE%^96Bq{je0fT0>rnE$Q@`5Hnn7qreDV-#g^zTnv|P{H|U zLtGzVbz~3cD821qP)dsH3^A2URne4cb=6=Emf}{#zx{W(or~CLMnh(ICkx z4h`zx$j%_W$f)Kd{*m;(*n?ye8B>G+tFkthhdjz98q9<9TJR2+1N8L{K;TK3Uk)4? zxFGjK0naD4^KH*S8me6nQ~3@A8n7$6uN8X)n740_0+-=BUh4Iav>oyTZ6Q3qzPJUN zQSoPUjHiCoj)4t`s;?a>4S;_*rq_2SLoy>N)bQW}rq?)LjiVGjbiKOR-)^}dO|*S* zGCRl=4gQTDQc^1HBW*zuWDgAD!fuh3=e!E^S@2?i9qinJN1EyhAI0#0e|Y#m>ce~r zG_W2F{HGBf`vzFpf8V}HT&!*JDAyGn!r4x(B)Q#VA`!6LcOdH;y#IgU;;o91eP@Ib z<3pW~11@I*zsAL-35`;IrR1=o@3S+fEvtzk=*_1w62-%CL!!B&?sBnnz?|viLIO*A z*&;Eb)cD}&f(eyvUUSf_S^Ck{S?H$N9@T2aL?NjY(>7Z~FQU`x^utW216TF&D-E7Zx?GZJXz6+(h6iD37GC4#BEgMi!e%aK$ zgwu>gcs@mwMrN+yK>e4?kwF|-kYB94;Cr<4U?H&g{8Bg^uoT>EdPI_b3w6;lu=!c{ zV=o*AbFSLMbika!$@)-hikLhP|2H5_%YpJj2MY?jAqcA&SHeK>euJIdn7I0Y0=Cb# zxKc_*yjQ1;(h`uqZt>j>+Ow_h3}`;n0nul6qlCivO9$HT!{*}ZH)6=sFM7=%#oi;A zib(}3f8jyrqr^XPJR02ppw@OM{_73V6%%x1e4?TD@wgQS4L2M^l8zBt3ShrV6j;j2 zR+35(Az2}QkL??auHMNvk8{=Ze6jmDWhgqU`jVI_)pt!JzoeRk`x`*;luKDn?{I%% ztR_rC=`nqs7F7#-g_Ve|z?&46+Ky!Dh3HyWAm|IT}L@8T;CS zNnmwdh8acIWr>@l{Od(6BFGq>b%ly?yLqO6NNuAxcyH^wij*`Qfsz`k02 zn{TvMxJAQcXV4OfzQ(AAt1MavP`Kx^{q<{Q{U2EgFKXg{c_9oeCA|((<7XM3sy17} zf6l9Cs8N^I-B+^{e-%2#u>n`y&B3@RstCln#>1dOPhy&W;}lAls_a%*rW{Uxr^N8` z5|wX`yMVcK6QM>`Xxf+R31Rq}PLSj0`3i+CmJ=;nDu1Q)G)p>Mr2ZxsEz>Btf1&>M z(#<+HQASrF%rhd0xlr^J<5KyDj*V0|fBd&CmnX_eFBt3`eVdB(Hthc(Hj2rO@K%=E z`?XsKdP)s$PIj)zy$RRmn@=TGhVDm@R&PJ5W@`rr1C6V27d6TsQ{v>$iWGbav?~pH zK$kjh+fSu}LaI%L<1d(XsdSES2FS4fZitUZwP9*o;r40_Yymo+oUpaSMHth7fA{2g z-0im5c^jSp-l+Pnj9w=e!@&RBRZEpZefzi+A7U((WDi9bs!3FT z|En)oYDnRtHv|#&MXNgWHA?r@@XW<*pdA}-=>$9X*e~h1_7dYQKOc#Qj`^r|b-_I4 zZ6|HHmDQMdvOTNC<AF&^@0ovFl9rm*rT+zBB~HIFt)IV=)jmdVyR}Y4~dQzhEA5B>ux1r-lX%g zou>!N<`gDvM*S+px>2AT)RBwVcVJ}u8({VQ?0_92UEc# z9psu2H0Nlbxb|VoMsgjcqZhB*7nQ+ZZ}xz@No6uvP7f>r>*|VYD=JF;>7`P;jZ!>& zJ&Mrwx|e*pNOoGuQY$%tu&I~yddX2O`B+ab%E@*kx&4%^HIn_?nN9^Ff9vTF!<}@7rX4;-IfR_!1P0L$?8aWal7t8m%Vr1GfX=Hu7DUPbW=D?u zr;b@A=)()-&OTH)TKcIC>A(v8C=)9Ysy+G2LO#C=bOh-Af1*Su-&ytAkCGe?3@T$# zNGs_q!Ha&NI*vsY@qkpI;E|?i(r60hjRk$j$|+<7fE^P;vHph3km(^Q#HmvI{%S}4 zMHuhWZcRLtuGMZo5Ri^w(pVdIMhyCtp7}W8GQP%j!PjydLuh3iwfAU`r6s6X>QoH49j+7$}TLYatrjed%bNK|R2FmG0k{#wMoU zO}$;XAD^5Wdp89q{P&|{698TtpOl}Gk*Tp6BeNlNg@aZAIC9^rxHxZ|>Zp8$(y|-F zK@%7H)PrVhL;eTApil5E!Y8yq219qHJe&kjqt|LTT0c(Wwu9gF&Fg#}>f>VtPjXurI4cdYc!11(_C))=n4xECOb%qk39 zb$>9#e?eKRF`i+_uy44Qqj`jb8b?SbiSSh4Luv8KrB_ll7zxpw#I>CFw1xajhQw#4 z<1$>t<{Oj%&h$S$NI{YRkB-!SBx)qul7r%UVjMHbI77st5IODk+yQ{ouF2D`&OaUg zA;rMqt7aT`y5azd7#(+2d)&2f+*NVhVcSU`e|LNSxRd07UaW@4o&CTbcMxUrxWn=P z;^Pj=H9YPBEDd!6J1e9RvoSy>dQuW#A)HL@e0+d;tv9sA@0s zbnMOK>=Yg+@i_5jijPy6!R`L!4WGQ>lQ$%}qEQP_+cR}(zb`|scPt?G@(sLD!V(66 zfA&wFrDlNPOk`IqgWTx=oyO>}gaeR#yHFk;KS*GnwJT=@Y_jqjh27zCq?jE!FhH^a z-02~>7;}eUG#%itKUr}p4|<_Ide|M=5!V#3oR~7iqp9=GJtcUGIO{*E!o?>=H<-ACJv0WQQiOpYI6!f++c_6Te|i34At2Ka(3 zvoq(DUIC7w1dkx&O3m{o!4c0ee>tQ3eQ*`k%#4W?gc?pC-Mwj01wZZOcUwuW^Amu| zaBd!Zvy|dt2HEfDQY$1;eg-~M1|$n$8Pc3AbgpThgH8?e39Zw-Uu2&cPRjxpZ+fE- zuiJKndcfhuYHtj>i?p$0wq+Y@V;5^2w@*qv{E?f8HQH?Wea!lG1&ahme|yG-fvk3D zLL1oSU=!DQ9|WkQ;*5IG!nG&$=%F5!WB7n+;*ae6Exy(5Ta|Ae^JeQ)3GP3w;JNCb zPad&m znM2$Jp{)wy#G>6&pCJYPhVAO?t}bP?yAG)scyuwX=Bf%22H2oMWn=aFrz;Fji+B|3 z9|c%HB0V;4D$=D=kohh!!>Ba&N7rxkYEVvBMPSLz{pkf0qygh1goslWvc_3KlRbQz zc>3lnqL!d-@U8X{Q04AQS3R3-Ra_oFn{0{ggQtdYx`zfFf2%#Pqj5*epc>R|4HnrR zsPc!snkEY}sCQhEXY+lIWTW(Q9W%y(cM2M<(-RxmqhY51`J_;+PnUdE1s*|xtV@8= zY;B&Fci}D@){>Y9xXWgXwO%ft5|jt=mGBSBp#JbOC=AmJWKfaB$?s5UiIUBK^M7*e zZz`R}-yZKnm)lhZ8GqZjPC=8YCngCPgsa;3%K6>bp|f5c3S59YkXzklXQ20g@qI%s#BSa2^Ypfk|9ZC93 zU^UWF$j}`ynGUWGfNk-MI_bBBU4x2a9w>~kr4b)=yhsn{bASK4S!ve`*PU^zXkfkw zO0#3v^R>#57h4ATEI}yE7Y+YK#_G=c;=+HCF+WmY$k^NhLGI%^G*5Hr@v9uHv3EcJ zu~N*zc&_yWG{D{(5X?TUBH%(0=yHL1_9YC8p*W;#JGKUZ)&STNg)Z+h(9r<;44%QZ z(3`Yctm77UO@Hk#NhGntX@#NjRlSXa(X{EuEZqbWY50zaeZ6b)7W60uCGPIW&?ZqU zdh8Lr0B0^NpCV&%o%zl~nVD{ltZEABBecqTYCJtVgBww{*u2XbN|$-i^FrHAXnO*0 zaIs?E;B4r4*1lac?zMYk+#BzJE*PO=3PSwQhk!`-OV&;LFf4H2`2;4~f&`n3=u4&L<(Y=&tJ2lXi($EAF zf&#$L5a;NFvg}yPpSSeNN<3A$3;7)gMnPi2hgumWA5$yq@Uw5t+W85b4Y!%z1IfTT zynk2s_}-reRr`R_0B)u{V#3q6E)WrDWm3k2jMvDFf^f}Mk8AMmG+%}LugMcE(l)LF z;7VeY+7K|%8GZ$Hz z-C1n7wIh12*W6s}7Z>}5UdvHP_LuNpu74HC{Bo1A_3SVAByPZ$+zD3aOMCGFwhOje z=LBAS@q-WHx|a{w;4kq|If1wXKa7C1gHMQoxTAO6I!R9X!zc(H_=KofqOmH%j35A@ zU@FakFYQDevnS%%JozKJ^1_ZS82EPQwjk|*d}B-GC8#>y@7-mzR>JG*!bCB@T7TGr zD{=fl00Ak|%HL~A_k}&EGIUEvh5QjD{-&hMLjJMeY8y9p!14vF#BtGL0#syU_ zcMJ6z>Wp7}ovgi|kXEhDPh$C?S=f(`Ye;(nN9O1;aYa9}_6vKk35Jh)`hThaBMybn z`aJ$!r4kb_(QhT?ZQV*DJ8IoPsGY7Gh`RKF%*R<$iGL&op1}^^1)6cL=&%yUV2Q_| z&UWp3w{>Grv2Rz%7sy}A$R2ME7kG@dz|S|>eSqbw0syaEK z{#l?w+Y}2kIPGhN?ErtY4A~0m48kAHpF!3dWT0&VP9R*Uu5dH`j?1p6J=-s*J#{4e zsLhDd)a)7L$jvj(YKAzH(-5tW=%gX@cbWW86Q3{-x$yTJ&k8dnkAF^yuu$=b9!;1i zmIOpEAc~?$^l71m!)`$IG@`3G0^MTv>EsEbr+jaOH;j?VG0>FBG#r{*Df@u*4Wx&Q z`yl;YsW%R3d8t7k^8^9m2pF2!EG!)Z7bZuvIf#mAfH`%FsH~nzML4b3$1iwXrM$U3 zIyC~{@TIo=?qMnh)PEm9b|B!or<8ZMv}Z{_oKL%kmhrfsknvl{c`K{m5K_S{yd6w+ zoLiT6uJ63BcjtD9sd;(41Hlk!HauZo;~A5i&r^Kn`G@Ce-Elm9e(C9RGxdhC32gwh z6;4W>?iaX_zLp!wR08j()*1v&QWDH|TB|TMa_9Q3inmqUb$_noRv#ZtKL=RS~#c6H3F%@SZ=Di$Li(fQUK1kM}-Jz z*oS974^lG|?^Fv&KhJ)gqOFlZ!euxDf{qJrq*PU!^>1Y4{eK0-ZLlZskO@0#fqREp z7=DW(R%dk8@qci=5Y+jvt(Q1Is?XjWaFPwWIna@Vzrs{3sR)%pOBT|tg)|(7!Ad-u z2Z@TW4PrQ$zBbq${Vv+kBi4jboZQ&&4FVnaO+AnGa=j?G`Vb-Q zjOq0>;|N4?Z6CMXYc%en$h&R8s}8^fS>GKJ|8ZbivVRKXTk4RntpoY*^XBK>m1RKx z9elFS00q1~ENQcE5BrhTxY&%fH{}wZZ$h~P;SPx<7942i%<<=$IjQVfb_?V&z)iT5 zjDAM=Zcnl{loPt*#@?S}U1%{hznj3fCh)v_>wwy1BymS;U)0Y#!1_eB?ksLwG}}sb zV<~3_)PEj@)`bl#O9O+TZ7_9lb)qLPR~LZ%NS^=|D6;~^mil=hvGyR%E>;t1F3>16 z#+<7>xWE=L=cpWe!^!z1Tsio{fE?|XZ$o$avTpFW&$0LK@Pj^wpX5RV2i;wvjAJQl zH~dSR7j7WBd2J?p(3F1R$MLpf^T54qbL5^i-+w6W;Q`89JkSnGtGJlK8Uz|mJlWu= z((F>^o+T%Ibp*J{ zDp+J;6Q(d+>ZIye>@`()w3na zP=DPmUcio=l^`!*t%zG~=N_&da^CHN=Y_qxy$NV?2zP=P1APR_c*Wu*Mi@F%;%c|GbI3zK2Md%UbbrP)tIOAw8v&4HNuXnpfQ9XVJ?JDXxPr1D zrPJnia6(~TKtqU*y)Y&0OvT;wug-=){`zFVJ$KoRGx!64=+oLuCP;yJPZc?gbI1mt z<4#&Dt+@$;`|!>}K(w!pSBHxe3GTr4ZWw+v-a~kJ9iE78!!`n75fgL7o2b?BLx1h1 z+E^9cEi_>s43DcW83SA05i~(6B;&7DOBoNNmU{FWl8}8Mlf+Pl=m>eW)MUd^l4a|( z$!6t-(&pu6pUKNjz|73jgO!4JbZms%!?CT!qtorh{r#2QPp5n91R5`T^{yg-7`Fq1#9uCv5hy+F*wP66JcW#R~rm#N5D zOt1xuh+q-=-N2s>nc2rCs}o^r>!QJrVS?kzv{lg%3TgO&MWdW#dK7qSLr4Q(GH+$Z zYUY*`VVDpgH^wZ55s{qu45A~?@D=kIeWv=KFB&ny8&p`BPUHpAH)2?iRDU)m_$CB* zKy^IHV{g1^>m(s8F_@}%k^pA}5Pw}nu#T#ak8}U-Vr?h6^y1D5>p&Xt`KWYz=*6ao+d$R; zp!pRY9B#M3G{AM7I@zEab`F;TmhDsRhp|E-;tTQ`Dzk&bUjeIF5vY{{60MuzfZo7-&3EbzD|G4 zSK{=Q#Zh|7?e>waBYzT0E!}a()9ihD?jG$ic^$o)eE zI=!DP;qSymvb9~BoJ|(_lI(RDakCoF`{Y{HbyKu>@^94@j)IRT$02;fzk>aPy~s_# zRpAdSk~&1KqM^T4=OvKn-2E^Cx_^f_%jkm}Xk`(eUhg@`Rt&U2kl!h?fpoEQwFj4G zV+AUILw^dP22BdNS46o7i<^Z6uj%^7DFuooJ1r%~NWsH03g1GP@3#=czTa;}ag^0d z94>C@xTV^Cy>^W)-F$u)zNcz=-j%wYgRqKfgqs!*Y^j!cPL*MV!;-&wW{T8IDT(_P z9bhDl2OjCo=tfay>=|pvIX(15j5p()8hHYLya(f)G5R)z8JLXGXYTRnWlsRD|Dcrd z6fi0)Q3?(`A@A)tr-vSKI=oSw4n5+cagCBhGeBx7;~WpX)X0x>#^_5Kew;H#-$D=d z5BwuLk%J!Co5a_$crJi645mZ$k-uT3zB3a=KlP&?tKfz=OVJ%lW#Z8X9#6o#n?yHf`2qz=U8wIZ~u^>`C?L-cH_%R4f=gwz=2yJ0Z z$p1AZ>->ja7c+$wvHK!SV`}2(iOsMiPIjHc_=gx@T+?Jaq^C16mneW$4L`JhJ|M!H zID5_*F3yz|2pH<0(pp9d?g6H(W5Yp%T`(XmaQ%n;z>>wUUbTffHnrL-RYn@4tB^%T zYAoQ&wnpwokDx9Sgo90WS;|*NtHbimj^|Mai7tm>DNHRma8&cH(cZA+WBIqK#Nfph z4w%}Gb-Z(GQo0zS;uo1nK7jmxK{||t_LSp2`3_;)9hA!WD94~{V0O(UC%iH=v~TX> zzG;oLGyA48QqJxhX)nKdLElI}GM~TMH(_Uh@#iVgk zwEQesk68qsAUa@hWhXFyylK@%k4DbKSiSUkRLOPZpvUdd(lR30dxvT=90n8r{%37( ztJ3+=KiI~03%1s@(i0>J>yU?RSO_TlZ{b`qn3~XUF@6EbJT3jZG1h^DJkqw}{wwgl z9v^Z7-QZ3$S58={%?W&1lY3B-kF?J3LPl@bDmyy|m=UC6oQ1f5fe6*5haUjlLLGY@ zkRj2>AwK~8Xf?N~H_xwnRh&h3pP*aY=k*Q1=CIpCy>w0W;SqJMXUA-O3QS`}K#L(A z0S`|TCj}_5k^@_SUMiWeqw+qD-;VPf_SkDfA*M!Z@*}KHls0jrfJ%yWW=E_Og5K6) z%;-ySGYvv3@L@lH)ovIMHaPQ_t`0QAhryd&X|%g{LdrU$jG)ia23mxVPdpCF&QeQu z4hRq`gk#abA@JV~gbJ0Et+?Jl1+1>lU+w|!z@Y9Nq496{jx#(aP6Y>K=oElJti=jJ zBJJsSZenF!RAN*?S-n*IUwhO!&esa{;c+}d+`$8Qp;Lr^E*?0)pmI|>QB5$_lvh~= zv$f}h;0CF`3}&%tNQnZq9%btJ9jv zT=~3E7y}3k6vo~TBdl=@mt7~x<}r`}P9P>1_U%UTAP52fHVyy-Hx2*?Hx5W=kc)I=;h(4X7mW^N!3wk zF=P}9s`YNPw1=Y9S;Tqc}cM{{?D!rX9KJI(a;3*I<=2X=6#SER3Ju&k^z^$;7NzKZxnp_kix z{uS&!072>k8Hu}1K#-cy|7$yrLl`vsO~dXtu_|dE6TUem*#2(LVx>v6L>v>=U)IDOg?1a zs-yU!4rsIjoYdF9F=9ZsMG^U9khSTK!6jIyI*q>xvetbpUCnioiBil^&g3&K2cV{wbm?NtQ|kCv;ZYJUMjubi$MA}_6zl&yE<+|Xjf zlR`_!R`U|KMyec;pR1tsLFme7UhAl#XS{b=;Cj*NghS=<9fR9wHE|#6SPe~0kio6P zaird^Wj@(Jqi!HdYjGuG-7sHd6dr#P=)oDw)lLJq#5j=zeZcT@R-0tqTB9u&%AlN1 z4=@C{U4K_UU^K!O%P9Uy$Sv#<&@wdo66ql(KB6r%b7H_4&ocm>3Yd)a(Y6`sumeN> zCGQBlXKQi-nyITeI#HBeM6*K#yk1Gv&wA~KnkXuqHG|vgb#c&0&{0O%7aP{bNhHTp zr_{67EK&_g_K}vo*jFiRJcebFGZoe}t5m(B1%J;rSGR7OzCTT(B{}J(!lp&M5a~sm zODw+l7!TjL>I%3SI3^3m>qm$FYxBA9r#XN{#WPeeExX1@n$y$<)Eq^~*a@|IjxVyQu({IydxkU~yU4BFrlCUuY)4T{KEMZd*f$ z(OY!Yixfri9+?GDyDeQTDCG3VINxm$anI||TSh}@Z0-Hruf#@%l5Umy% zwdF|LYN0j12tYNngn+u8vqyT4=IRTeIBR3DFvt&&Zf!$h)Y83?|46^8aItU;O46?C z?QTve18S#P!lXrr^f7q-=`K-aZX4v0B^-w8W1>d4P6&7iYFc9LTdL4bcNJOm4u2s% zk=+<;52`Qq&hhFAv6-&mlYmEO2PusOk0(8kNP0?)#{%!)CECS1L8rMNyTG)^t;|&E zUbcrLsSafbEto&D3D%(|`V^tPSFc7#%ji*QuJ60~hJ#0@FSa@KAOt+2=CbuMDwIY5 zC>3q`AXMn3+HWAv5Q7VvTMUEij0KmS24)yE!jLqe>I}@sIx5lSnu?tyI(Q60vPaX$7)!8R%rQN{GDLe~J5DAnR zOi_}H28YL45CW8-TDn88^?wLf;(KnvJx{^giVwG{diBP49L%ClE8`5?65&3>Gm7H1Z`SH)VKFx7DmFO4F#6O_1<+e8Es5VQoFy3v9KJuf3q;B3pkpnGp| z6-=YIb5fr34oDQ-yL2+ciJa?|HugS$;*}Nq1(by0TcQOGP{Zq=NPlK9{$jB^U_o*F zqKK3(ZxtZa(TV+u$)JKr5SZF#qd&z_%^V;FL|aZ@z4{HjV2!e-I4J}D78g#7`qZN> z7=d{MoxXI?yKZsuAlVpI|NQg&lTZSQTkaBPX=7<7aDPk;-lr&G(=Rn*4iJtn z_8P4ga={H#AlNW(?`eDsL3UTg7y`2i?FeW;9AFVC)Q!csF?6!&KxX%lg#{}|5v_A2=^)@wECdm312w(d2c>%Gh2O{m&Kf17a}o{_A$7IG zFi7fz&Kq6ZAb+vD-_J;asLbh$+!JhH)(pKNc85>OWi7Fz* zl?zl9N`Fn|LpT`okD^}K-wmo~7_(8qq5gx$MC>*qu^AsBb{xbs z4g|dvNi7m@c%(?6As_6quXauvuWs{vHilc!-yzr-yV@nfbqUHXYJr*G;94P(s7dgJ zGH$}ETb4->+HWcme`O#Bhi)zaX6bAvpyel=!ha!vOnR@Wrk#C!9Zy!K_&Pj|n9V9# zlZ)NlXo^wEOUjc6IasMQKvg1+l@hT>+7zj#+Z{6hG!89Lq!Sm~#k#Qmhm*+pK!0X0iup^6RWzAVZ+9yRbF@2U2G}`xP#e^wygSeN2J2~8f zC@pDXT%S<^slSnZI-$JWTJD9j$Og{=NEEB3UO_It?xJ{~T(;5y1ais6`Y_AKenV32f0{ z96t6w>;&cZ=?wZD-oZDFvmOn)@JPFmlU*8$h0ZR7(zI>db6rT)i4ZhFRn@qTf=qqy zY1bLY$o@oxH>a1KTc+<*B#N=tPsxCxSfZDlNV+VBB~)>xzjm#aqojgwoqr!3DAD)V zHiJI1N;`33=^6nPIBOR-o|v;br2mXo!A~Xu{gll6$t&-Rq?nJMs}O9K!4)+-{vRve zsUnDWtT(Ws7e$+iU1{K@Se4z?B{J z;LPo-4t3`z7=}%O_ef3fG{}b=MJlS>8u|$s1VUArw`LKj|K==VJb#nK-A1BIwjAB! z@^kQgI=GH!=}8Q8H&LMyH1cu~7GjI#o(%z^dakPnY_?#wQLpw1jEn_AUkn1|cCB?a zClVe4rLV9U-mS>Z12+&tKCd$$0<;7Zy~0Dptg>{m*rtfQx>vjUhL;BBL>;n8c_k;W zTdL?DXoMLKdj(m+M1KO=`P0B?R1QdtQ{Qg2tRg(1n;J!n**JEfo+M&Rz3PAxB4Nr_wn$%=8r4VW+ts2dbe>i@u`2=pnQni9g}g;>P-eG4W; z@9#|r`Yi?I^dlNJVf5Cl_Q$is=aewQ#RcLC{7hX&I;N2-*M9<F=v)9BF6qPxH`B_E2J8YkZ^YH`CY=2Z^Turt~mEPo&fMoKyC`)92y2rcsn;FIHcLvvuP z-bK%yFXZ$WN*Oj6bun6-tG(Y@U+9%~){C|IC3@@Zm6q01<2*V zx(&UCM(7*2ZffXJjA&01SFhC0Z}x}bN726FR+fcu=;*(g#sR;zCF4#%1pUJ&rZ;xR zjQd9g7%G=~uZ*elsZz72TZ?;tfVKA9Z-3CpL)7B(GEE17^tN{TadQ#;KKP&yNlQqf zs<=UQXskddX5e1Bcs7 z%B!DKVzpY6B(O5FkvtxNey3z=C5@b8aPeS;UudWr%e~Zy;18xpe*FqwO!u%_^?!x@ zJzx{#lam>yP`kmLQrJc3rv4m85Rt!gsH?!|{&3Nxqa~Xu(>iI&sDhI4_uxeIS0k$) z76bXAQrt|=ihIdqY7lnME>PoK!c=bnEnHD0#pF_ z%c5^;U?s<9siUbEPHA^;9bgEO#@iAiV{dLJENV&Nt&OSg@3C`B({uIr)-U*6oh}*Z z$pJjKd1#dI7e2RVhad3Ogkkg;-J-IY8-wc)(4x*o>qdttt+r?iHqR!uYj&~TY5SMf zd<8XQksfvn9v@;+O+WMMw5D=}O}f1>Sp@47po&nF66V^UTQ&Nxr@3o=M00jDA8^k# z=lJY*Gaq|6@`*QDgw-M@13JpeF8ty7>Xor)2vq)EB>gN08}ryLPtZ|Q6HpbfxSfZW zZhZw9fA6p_EvF>pQ>Zkad)+rBF&l}^V4UuVr!$S3HJB)Co2AGWTe-i!%*cPQ-A@t2v1NMuTvdVq^j}-_X z>S}7DZb#(O7*R*?lc_LSG<=UbHbIo4kjQ(jK4n|9NBReDY zfAPuMG)GZ@SS8aGs6VP%?{HtJEmVsW(D#L9|BftSl8Zzt*n#4~Id6#k8u~K(&?{%C zHW=l@CfwjPG59B3gkm!Ql|*2CxGA$C3wtDN0RlcUHak3WME_$5nK~IcqF=SW?m_{t z6HGw05pm zxgF*dhRvT|VR(bLXQVhMi;q7_f5q$(r^g#F)!`8ewsLfY^2Q$=m_$DLKkR)8TU%GM z?O(xqxsEUgY}_|}`-&)ho`XX$0XrsO+Q>+NY%~N(HiPxw-&$3*r!xqgxcl|Jue-k( zopbiyXP-S()vjSxLH|Mj3*({4fKtT;*EW7#+g^LP{zPN5)YV+nF?F0Ze`rL%XOTc( z$skFKztgeD>@*h3!A|3c!g)PA?Sq~6!A|Xygq>PE9hfKRtwL81L9TFA!j~|D?->rZ zN~m^XLbVQzx1Bp9(y3e|pS)_FloRh;K(-RmXel9c_;B?dPrW9jUTwJI!?zCehFtuI zanRo0PLd>Nt-Zgp<-$*Me_K!`GbeE9XCZ#gkAWK?pscAuy(B~s-u%u$WX?Ncft1BN z$Ns_T0V&v_4a)axS|dI*{pVUATisKVp(QBW94E$isIS#Md;qMH46qC5tLKD%yKFuu z*wbiXJDIghKa`hudTJ=>kP>bcw(Rwv+>p==(}9Zq-Lr&wCp=p0_!GGZYJ@YpFbxCS)}DI%gqAs zlpomf=ifQE$@u8+!X-m!JuCS9JO?^&pm6qJ zn~P)p1)ph_M)%H&PrUYx*MFXSQL=J9kbs=&ix9LSsFuONe`A=EV?Bg_XutvWeiNzS z+(L6;1vKxL)KU01_%_gz3NB~q)4<*O5Isbd>g=e&r#N+@$mi~Nma~Ybq;{F)+i92z z<0=O0Tv!v%b?8o%Jke_m z-5712CEDW#JGn4biMOM6CiSRH2Q7&+5+u|jZGa3bag_)ImPCUu9=~YJZEIR0tUP$D z+VeSyN@0EwXiJe}^6&%jFw}PXlU-R6S+G8{5fh3ys-uC>g6QTF4CUln_h3G|g}`Sf zbS(saf4GGsAf*sj&pN+PaF~)8srvP1^hMjJqZ1V=A#tqG9Y?KP08c(hqMPE2(xw%` zgZivUQSb)C3J3;}+@i6~azA*unf_izj=_2AO}(q{#zn3v)ca6l_#_##})< zM7?HBrm7_3h?;SF%wv7^7MiuUa`D!R#o$N_e+&PC9FqE>*Tr1-1jq_!QXgl%GK^!3 zTiGHurrq*qK$n&%+Tgj6Xq`d{7|@+BPZpnLjDsecuBGX9N4BV?ZST=>k@M*A)o2ym zo)UTjgoEe=`u%!x3(!$!>#%5CANTBR6+<7F3s(?}#YLVb4F+jgn?5+ig@*VCK2{`( ze-!Z#qkGWU@OUlr?@13dja;DO;5LOoGRxgQKCVe#19wuF0I3erQHMwbmeLG0=KS_62g*HS{jZO2K!A z*aa`ur2$(NS~Nmb3I}}Pk;r1F0L(=t>P-saR5louGL7?0EE%ja8OKM5!?wlXFF|~P zRg3Xo1bz{3Q){yXQH^FjIOG^;cOOs}i<+gk4>Sw@#C{M6C@Ucj^Snz>3x@U~e+Z1O zNrUTQwi6M{<0f7uU{gdJl_8Cj^S2aqJI1-XgXE`ig8o6F$Zsg3t1|!9GZJeM;=#J* z2xOp)X2s1nSN;+QLjntcO>(}3tbio=wLr11-9T!@7nl#RP}|rde_sjOF~?0yZXzZC9ga4m$-ViJjS9C3LUvf%T$eopt=hro%Aio?;EdocjDzEi2L?NjCp$*mr9Y-5f zGGLgZJy`{Yhz|sHzYqu-J6z|?6Q$#@CAlw^#DctZ@t-)wr?6vN4*t0a1Kcc>fLmZkA8G5*jIv}gs|TP_iF`c=JA3sM8L3? zTHy36gj}LTxqBm+9u$k>F*JU|>85sbx+z87>01>agsa_*;}s&ej+i9knBwd%K>oq; z3vfg5H;lv_gDiu=3;$0;H7i%bAD~NlwV_z$=pc#%_hUmlgwQB3f9l;49i`Qv<#4g9(kowvIWwhxV;r2KI>w6)V zaPoa`Wx_q)F1VdxcUuVd-h?rH6Yg%fp#kt7|9!${z($ywSW_`hx^)2oFh7kfUJ9au zyx1N=F3}d30Io#%f7u|Y*TJ(SVfj9k-oo-z&}}j(d0f^%1#z>5R}BW^`sO{v40X<{UeMVQ&kwP__vKA>O8^)PzmnaAs-L@w1B5F>vAMOjq^aK}QmgBN8fN5V;oV zI(&(dfqfQ6oWKp_G2&n}5WqR1*t)kB_tP#E50ZqONG0AJ<%oA)wLgG>(m-GVYK z&}{w+&KpB8G7p!MdIW>sCwa#T#mV#ZKJpba-`Tt14 zkL~I+T`Im+bV<0XnCMw#k}G?MB^JeFQzMl6C6P#S;Z>>pacqq&KlpJh|JM zI*0sg>d6r2yx}5nlo|eVO-2pcxy(BVhrkB&e<4J43v2?Aw+@j6tWDV>zz-%NGAcPJ zGCDxpIYH{U@1x@Vc+&qoT;VWgXz&w3VUS9#<^a>yjwhtoY~LBL@ImkU<<;f8y~c7# zL}isw1v2~c-ASP$W3r^WuZ)7b@_QEzsWz?H(>t)@-T`;F{u;VAnYF1Z^$wNCEJM~$Yql^VcOPbF$ zN2R{yl<=C9*Yo`oU>^*|1D-qgPLl*~$)m|@JOwILT6|tIX6&y?u6A=<`Nd zpIOjUGnTXHmd{yqZI4j7(4h_K(DXv{B$3n*S#l%2d|dA$wFFWNihLuHAnE9}8hr%mrOG9h3=K6!*uubh5 zTd`-GTj;+#Qm|hx|C)Brc{)fBUFJ2{O+b!uB^xJGvT8%RGxYgy?9Q*4aBjG88CahR zHA5_BMC?kcEQd>=FLngV>i#^OC%#4kUD1)uN#bKNPcr-B>C;-n%0FXyh<|)>dDubt zx?BZt-?!Lvj`6EG3_~oS_YdJ8Kxa#0l%L^bJ%@;~lL0naROP?`hUxrfgN;do7-|=o zBdqD^&*?UMmR|0pm%k?KQ5M;-oxMNJ)=#pvlkB%)_6oTLWvN}}ms+P8&A(exzhT4K zPc)?des+ykEy0Jsg|{R{@PA6Zc1#q^HU@8Z3rH4IBvsIW2Zw9D<7lbs1*GU${-lL1 zH#&@1Hhy?Hg1*l1zBo;hEoP__Q zCNrHvdiAR}-jFgHgpdg_+6XBZ8P#o6dUd`qtiKR<>{CHFe#%=AM9 zU)Lk^K9GG9!zv_Yb$=+Jj)Jod0@~a!L6+@bykIa-A$p+P4OPdFlb}}jwd3TpxcNL(x&|M5J@(=#&^!EnC`%moe zmke+8mREiFU4H^q$-hlMMD~*YoFZ%w?<%XTJ>wpe^8DdSJAaCVaJMls=Lu9JIVBG4 zWKScn{>*QD-DfZt-+0dx!z+Nw_TdLkj87+m*ugiV-7U^WC=fjv@JVZ)7>A5_hWaDd zJK#7gTS7o7jzKww${_+-RHs)ttUxcHk=%5EB)j!cWMK^+3O($a z6NZDkwd^i0Hh*dj{XrQ;6L<`cps7EFk_c+|^4jvE0On2;i&($POEbNt44kiptRcB^qeO{qv)1p9;e{I2&r9v=Czvgpu9OSn zb|@q1UnwvY8gMMpai_HtUzxm`B)V6=*AeCS+25`WlNPieI6{dJ0s>xx%@YZles zMNE0vrsyf(oz}(!kHSsSW%oR+5|;!hylCE8DeAyJ>r5L&ZL@(6yJs#8G;M?D?d~yD zClnd3KOpgAq65-U6?jfQeSex>{e9AzKo@&5>3<;pl&R`-4F(l{WwUU)rusZSQF>k!)YeF(8>^CD;lTMf zS$}~_G6Z5?;28l`>W z2@u^5Xn2VHY5t%m!ncDyZ1NpW2%{XY#DC}u2gE~uC7cgoyw)~gC6}qIY{nI+Unw>w zy%^ycd|K8BUdKNAw%S$Q(QdR$Ti^-`y(#O86#^+`ZBgkL}wjH#jPo zB+!jl7c$4hs|%Nf)#dKxR~JM~TU{xRZp9?4OG5Gf(%Vj77A9z#N&_Y96vwW}?tkW7 zq~o=+G#d0eb_5Cn!>XFn3T+u4F~( zs}KCxDz(PBS5urN)B;WDc!FnA@^wyXNZM*&Qy7^X=IVIqtu9RHE1`Xg7A*K7n>4p$ zgxkrw^)muE?k2Qg#WADBJg*!J&3}3kml=G(^E#Q^7+|{cgYjP@SORbO0q{C6Hcp2l zG~O*VZkx|O1{0oEzZdgd9D zTcAUc6FYDm;_`SZU6r;OXUFxy{mVaajm32cD zZ>|K6AZ2+%lDXs06>k7Z;Yx?=S_Wu}`Di4~v#s;J^{8~4_+;h;(vLB@k9~h|G)Vei z%EO>^l)>~*N0SC~`#+O@FAUpf-Jr=U6hHpSQWr;Z(%nL;V^jtz3SGQ{ZYhN*S3h z3n0dNVMzCBf-9%N0flPD6STqtWf;$1>|1S?B2nu^2S|8b6B{4Wq4>oQPAzLyi5#H| zL!80TtstO{tV~Z zl3}_^f%2VA9TfSmov2bL1hnW`Uz!;BaM2-8$h3$Z-h)sURC7 zM>(qvb`(zcMH-O^^MzflZ#S|tYm)|-LYc3y9P*zX`~~Aqn9una@8SxI?dC?jfBw+i zB!h2*;dViZw85Z9OO!inGos7aZkoK{5D0KB#@zO1 z-O!x`OA~xm@~jIfe)HxI5DdCCD8&G(hjOB(n!keWoKfEzTsWW?u#HBqIYG|q!`2YU zgY-yj>z@h#0P{kCHlcMuOTlNEk3$QgRMd~O6RbL`2mWRL8~cFUKoU+Tl0gdF>Ks2g zAJ%L2)yCgHuYb(Hc{93GTj(u(%O6etQ{Vf0Z3RE}_x>(_?tErh+)=TD#RFMM+s2nobpZGfM~v2eng&Eq|!huDsG~H}r@@;knoC+jr5O zzp*<99-(~^Jyx$x#z%{Pt06$0uts_dU^k0@``dT_y|~Q#aG>agrdw><`H~t^ zuX7v$NJ+Ag>h;xI_ujl|W31Z?^L5-=o#(v5t4H?2N`2V8&?&}iOk2F7nfV;J$&l-B zrztKsuz$hVcL+J2?a=p1#~fIeAg87ybk>61y`BB$9vd*j!LvAW4(S|LcD~=W4Rrgq zwg#-s9euaFm`wmHdcd@xzaRq#wCX6nbLuEW`~q6bdYrz-b*xVm@PBH|agYDsrtfhYN@d2}RC2L*zX{qPo-i-8XOQOY?V+v)VVy_>vy5Yvi-o zy8F^-b#U`XpW^yb`xY}!ykB+rcJ+L4tovvLEfc!bUGAb=t}}IPs=t4`f9Kn~;-cle z`hSo%^jS2(Bm|DnB!gUQuGV0!;7*W@x%}THTVl0`EHUxNH{Yz*_uhP3+`lu=U%&kR z@ZCOt30YVLNm#`SZ_dy2aT9~&bvX#@Wja%tY%#6=UPImr{`kc^6Fh4^i(giIi>)yS z2ZY@HyG>w|EdFKH&HCF!WT39i+`0I!|bAt?p^Oyc#Uiu+>y#9{IlBIzPOK1*Zh zzPgi$E7*6wG3aFW`oI;594G}{6+)ZDBe>pmLT}EN$;k4$saIR;a8$*2<6%J|g@1JC zkO-asoNwv!ypCbSakW1JLZf_719|61KaR%$8iJD_xT%O4lCS~dMQlFkd$lE?PNB#c zd@}BMwELHrKyuA3ql-1!i>j(D}7ESO$&b=qnzbKJ#*t1QDDQZ(E#@ONM1lfb@wg0HW zB#5=!X(~5-wY4T;^L>V5L33j(nLyp&MeYe5ZyHLb{nLG2&XJhVdrdC^cz@4e)j}gB zChao_tGYJk>fc;Jvu8Q>Q4My(kF)?m<3%jt@wB#dkey~!W&Y>A|HQysoKQlH$Riv0 zkkFBH86xWj>)gKwV1NDb*HG+OwjZS-6J*s*uTgvUD3!fJ@_LWK=J>qej9xJ*C>EHYXYPiaxi>GWZ%)E6-?AWw&pE?1xHq zY{^9Y({-%L%ga=)P7AV?(}GlJKzPhfmzz_9<`t>YK+#J7&-LrGLIJRi|yIeTf(?+KMluSEl?K<#VIgHDVvbA;IB^7cMGga!?Pyv8PVtruzyi^ix{HG!h_~~(7qs{ zaCD|>B?MKuM-KHw7BQejxrzXisaOS=w=zkt4N5lx zuw_eb=Qkl_B}5n6!Yo@t&QOoZ8J{ZQZ(=?8!&ZY*YeAyHBn#-Tv_7@E5N~IHzQZPrb-0KI ziRNrG+Mg^*lFidCRykKySZ}T5>k*l3|{A+EvJZSQuUb9qBuB z+)%%zj0KjHp}eK=!_5`_)od=n70hO7-5D&6t>2hsm46fdZYklv0Xqp9a7$@F5? z8Ks8)%1;Dn7TYLLU+foFCJjb3R=+KD7-(lsxxw&>$*6h!jPN(Po9E9IQBf8JQ&u%= zEq`h|blKH1x+P=p2{p}Xo|+!mEsfM|!by%vY4xFwXev}f? zsgx0DLJ96bwk#fkY{N^~2NcY>1)MJM9a+OTA+wS@iRY<9T9R&cwl&Oq5lCLeds0pu z-1tyjw|GZ-E4TFfV<$bi?JkI6DcWO+@PF=4WB)^!q+dcz0*q3AO(Mww!gA_x80?qP zI%3;`)&V;W5_K{(B@j&|ZEMQ^1RITS!YJQEPMDi$%k)+8f+@%+Z0tS~n zGd{D1lU znP%T(L+8)<-MRhIxjOBd zi}LTAyYlC*nllmNG66!XE?Vd1>^1!pA~Mm8sb0^3-V{yfw?A7n!2rwBKn`;6wnG=9 z2mtcpz7pyo4d)vaUU@HiMai&;Vt-BN541TC-&vesE=&aBZYB@nYE^4!DhxTQkob3$ zzX;(SGZ!0-L+NSZeU(Bi(d@qMwfYFVS5f;hO$_BaB)DOw>VQA4$fc8Z;mM;@ps9f* zRygS^Sb^@qe-9X2JqGEx6x z0VpDryY7Qe;ylNkWaJ;g#bodAZ?@;?u|*#f^S^=1$l06z{=!`#Ljj4+Yd(;Kk3i`_ zyt9I}2D~?n_%K7C`Ty|lKG^Rba2d;#*s#^-l-NiUSf<2Aq@XFWlb0!@1rQIWYHgQ= zu1a(5zbGdwTyK|1qXlVCs}`_TuJrzT0SsT)1n~!KB!A3ellRuXk)fl=S4=ZoxF4b% z%J)i1)I?J7UpQ*w+U<3d?eu3{!UK=UAK8j*nJ9oW$Z$!8nI|GAn?9PBqy-oXzMNVV zzA9o*ZYGx^qy;(xw}+Qrqy;bt3dF(dM2ml%mzJajAb&d`>T7eqK-q4<`9k5`MlqH0 z(@mJ=_F9XV`}_y~`fnB&mi8B5q6_B6=VETe@IT#DyB&5(7-$RH z>ywQaPc~jko-|5SZZ(k*pPY4$e3S7yb|6)i=S;*--59jt|0kEtoHC=_p(-LHvxTKE zlJ!#kc)DwHo>|1H5*}9Se>Qs~X-hOO=Ulmrbp3-JMRTD#-fybZ=PSS`q{HC|yZEd` zDSul^hYm4f@B!ni0L@UX2aUZ(%Qecyt?nDj(Kxh)@vGO|?OGNAqgB3u;xTK{r^qV! z&gYfMH*Jcah6IHEaWP_AybIfruilNafdw^CQkP+_k)&i-+R%IGU_ z_i}#yXBk(Om+_69fxV0GHC(KU3mK?|~N%o@Ad+ zvW<3jev(}dv*VNO-6Z=o%+80|_DQxo$&Qh=rJZe^WG~OMt@G@|dG=%{JAo_zMt}Bk zCp$XN9-q7OOSh>6wbM=glbHb3rR)+~MF37*Bh4t{bvu%zgnM0_lwD36=;iDudS9_s zd=Y$Il2-$t8Ygp+6fN~%FPob8{3QqPDLSwQz&Hr37`r z3}14Mu|&wc%jgkbV0@F380_R4BYz(XV-CUvW~0OfIy5xQVBdFFn6#u>%wY5slNo_V zhc{RzB3UDCp@DJWbh^3b4e%OoDrP=rzGH{F5Xvb8PO?LlGa&cy)dZvLaIE0D;FVjJ zjuK=y4dD28V=z}METh^STpV#20M_;#C$f9gh2aG-B-RV83j2kDXJ##zu73&m=$c#a z&TnT+L*|v-V)}bu0P_OHHsnp}(fnP^J7AnYD)1k843g%Lf#R*#l0}f(VTZTO)Mb`O zFyn8{d`!e;<}pTyApibGNM*bVIi0$_k?S|6W=|8kAzAMt@=Gp^;LPE&whWod+a)a- z0%ALR0dU<;mz(nF+|ak7H-CHx%p*EKyX;-a5@L)ISveDKpD+L2s|}jY0r8S=m~A4L3N<q2`^zaSxsGg|0HWC` z5WxzI%WG-?`p9`~bbSmH=0nW)8KKX0mn69@nC!h|KQeH`Z$oiVhk3%@_vwU)QkJ+1 z>OS-&Y+h^-tbQwbiGjLutsto|a;ZrTE4fU0nr?G9IF7LuR}>{X5&;tH$K8)$(z*Nx_-0?gsQDU~D0oDn z>}AN_cX--q^?#8Z!ZHn70WL@C%f!dY?rq~9OQX3k>_`Q`?2btF8%BQ@d)H^9qQ##$ zcBm9Rwsw&HapfXS)bL5;Bi-f8T$-`;vNuUCA0Y2*oa7-byp~>`q;)UT6cC@%%Z;>? z=jqeSwB_UU>AUnrpVGqT>E(7>cQ>tjoECna_G&Aw`+ric5-y9y)_Ib}LSkls*c~!R zy!7etRzljD2goQyj)jF6ZCOc!qbDGzg#Y2E zP071cTRZNBdD4`t%RgbqsQ)!F2bOTbn zI6(Q_Tz?gb?SYFltBlW(I`H%b5h_7OY7Y)ISA>e1Pfk0$g6d`10z{JEw#G!)4mxPbXC&7op zI`lt!k!Gu81%iho;$#fNl&woqn|6Bf@ExHXKC2!at} zqtf3!ticgUFpPod002ZlyT9?QfSlACJ$bQ?JNhG|oFjg;&_;yysQr!-;BR#_!-1sy zb#lPaCqCe9%}GA8bl#BW@7KEw|LGFR-m|kHL+p)_bQePgF?xTcwZy!%T?`6%>u5n6 z*<8DOUt1XU>*v=Ym~TreZcpBgfXy}GkZ~CXiEU+cl(PIs896H!sL#;2;ok^F!Rs#=HWon(Rg&g8s2qS z$K2N!7e(p3D6+}okz_EQp95g&1!B~X>q@Q{O5%G$v%~2(SH1Z8@O(aMi;s8nkAd&0 zvqnpw6~aQoFu!ik-vJXZHWwxkQb<44hF^VdUn3TpFshQ53x|6}SVO6Z(^JkHpWzGWwW@<)$L)LJTIT}hwsHkigq2)e1G7^aNn?lkC;TQ-Q5MkAQ&>ZF_@)n9@|Q&Atxt( zwmq4)JIAgx7{2p8B*O@cy9sWJ4@d;NcvVYB ze@9cy?joTG;i#Q-+X&Iu)b&;rDg-%GW7d6J0>9yKKS8gck3lbF=rEAA`;b-;M>9NW z5m)n5SG{kZii1{vj0qLkQ4_Ce<>}_9r&RIn|;jCQ6%ofx%9BK(_DJ~Oj$Jp z*k804DN_WPLhFzg4yeZM&M8#AssU@lcxE>}FR3jL&w;yOw;enuFbLj3PXao?XE7J4 z?bOQWFG_gM)O<8+G2am6^GBy$6oz{;9b%PAQf_jGzA1!^>xQ2P%aC}p>l~h3e?&h( zD~vowXAVOk0BDY`QKiek8M906Nwa_Hh;6*HF?IKg5dfj@7 z+Lc*U;QZ`EzuEefcXiv2@YJprSTqY*bIvqHgZM zx-mFhYf~pr7@bqPJ*@r$Cx2pb(p7C|7q?k`^&#)`mpvHaL4-i0iCVK3?&cwMnlzaX z@L-6gkHG)7Vq=3?0TD@JF`{pJe-2<@xvQ_4Gz*y2_T0NB;v@675E_xc)!5v$)DGw& z&<8+BqStm$P(g3Ydu^n4Q5eGZJ2I$?Y}j=mBD7Cn407IPgBVt<(9_hoa1Q_flsmM=e3@r@rAmoY@~odzsmzo7N*=m{u+_X*K) z>Eb-;W}rJlD)A9$p_BN6_X~7l0~{luq(S4=pTq(tEqShwSE^v&SZkef}JMnUm169hOUcf~ER) zblZG2Sd$n!noW`mBSY6#{ZDcrQ_~AyKZNOJ`dK^;> zT0Gk6GhG|EUXQbPY5mtiaO`t)^`mDEI5RLG$j7zYx3}^4C;WYmznl1re5KGQY~8;7 zQ?Gsz$;c!*TWi>GxW8U;f2(*O0+r!3Km9Leg)xb^(|@!Btc|KT5} zD{Empw6KmUBz9%Ro`+&vIJ1dB%z&z1>_k=&0uTSeVdnPd8XyiwyHSGQh#!4Gz?YpJ>OUr-x3l2f#y6|zZ8GF!|)a>5-q0&bt%-Hn%+I0|0OV6K_BM~$n5EWdXz@)QKi8P;i- zc$Eb-USUQOn%(#XcPfc*mtFzoq_hQZp)z{+R)6#+Icn87fefE+w_b;LxS<OU~~w3Nwhm=m@xM&;3sy*7!Ql8sbvUc=&tT{&8txJ{OjrG{8ZrG=Fc_X z{ijW&noe`1@8I~FWJuozLGVYBTU|8-7qMPzIHJ2bvHZjkUvaSXu0jzwp`OI_=rfwf zzaWEsn398YlOWgrP@7Pu*E3>7w-QfS>WA(>%RYqZxj_+SGBvPx+qJ z)62&D%@rH#7x2vB`Jo@kKnxuUwQ3GJv{fV^*UywYT!HS%!bM*U>iwU$WcwO`)_>cD z?(Ibtg{29*ajx@?f>=A{NpH#%EbVdDXEy_29xuQ=MB8Jf;`l@L{8|Qy4 zt-}#FH)v}H_QxDDSP7E#qyeu@On(%7a^&sA1jKt5)vu4f_dZ98K<;&+MsNT!nj9C-H|OOPU`NG$HZx8{kWIUjy(oEuOd-@;ZfX^6SisIlYbBjyU<%Ed!(wZ4o zTK0Cc`S8CK=tEQnKkcAV_1isuZB$|VwfSCezfOFwW61K_;$46UOB37zs`|_rAt*Q^lWkHN?gDiB@1{`|<(a`lVipiKurBh>vsCrwEAFcz>wW*^ETIN_a|u zJn@5BKsE8*vRqfcvV!0nl{6jTh4Uc}b|4X- zO&vxGFxdb3VfSyKiGM^3K!`nlow#~E)zd@3A16*+M-OUFAsT#1uw>1zrD=H8TlmyJmpjC9i%MxZ2BV?57@iL$pQ+04J>r7!@M zyfm4Uc{-2JPyH5m@!aJv3xQ7tVv?K3r!WmZfH%(>*!i616Qq>lOTF}zBwrtrhCwhR z3$c=o-z%YLaeo$H>mLn#C|MwZ8a&?W_su7K8#QsLt)^&&q8fc3Yrv{2C&gTBdr*Q^ zS4@gYMaUqVczfhioqQ@~6nSoM!HAs=Awqx`S5%10Sd8W-EX&YAgc?2;!#@M#wm`tp z*|#U--s#i986GQlhW#49f5hGDFN`X&4*Q4jEjY87qEcepqdtQ)ey!zV?if{ScQiY=qkPKeRe-f zO0$s{5I!C_?NoK`xEQO!+Y9)LRB6n9Yf_FCpKoh3*G%N#Fe)hhoQ&y?GP{$mjDDCp zcAJG7e}CYOP`|>ip>_}MC{TaE%yUtjiV;^Gv%FgZ4+>NQ!m3()&sJJ0gwK|bTvM=kOm)sIz|PfJPr z(8W^6I=fp?mH1L6z#}fkgxT(^-_01tN3NuS5r2EyI1l$Ycg%uCgUynVV|tEXTP?z{B+9m-rGSooMacfcHH=;1oHuB4bHp8#||exR2Fr4R5jk| zIDd+lEc6aU4Tm@oowj^ncMCSb?y4A**3|OvSuu^7b__Wj^bmcBfrI;PbYZv>a+@05 za|e>7!LW4D)F(V-p0>S9nlvJA{EXRmNj zt1RdWNNGk4R+i*L$E-NIaQdM)E7PUB=zl&tZfhU20gO$Z@lK-;HH`lLtrXQ8O^tOb6oU!2j?d^d*-#I@ zO#RJr5`pOu8i+C!A1wa{wYh>uG!(a2LeL)#PHC=10G~#;qK{#H*mB0g-cC1QFQ^no)+5E~5n%pVNNmoLL#gFt^ zwgcaZ9mbKsAZDpwB&7Bw1_Y8iREQE=YM1pHMQ667+A$l}%O*TSE^Z&TmVY+4);3gB`~}$SSWJa03mZ~OXH^Re7Z-|3~e}5gZQTEmA&G%4fa3%hN57xCp zfrU&^01dX`ALru*xk#X%HGgkw5eXu1>-p^cYJD5mc}TnWN#@6-Cq}Kd6jOgkp^=8KEa?k+d!0M<`doZ@H}gOALF$ZU(2^ zU!3DL#wS5qBhMa<0y;e zFQCLY5lC-FB2g(>13?Tk(@2-BP&*;nhK3ZFUh2#=Q-hOpVVcRvC^XnYe$ej%N1Tdh zdLcA!T{>TpSPD$&F`ON+Nu%W~n>M&*tnpXt0l@-K>-5Jg+1OnKZ^+J$7wxV3FZMB>uHObJ zF4!@DrhyORD2B%o#%}IF_uIiD$d39^d_sQ(0GGBu2{(W~kz@p)e$I`>*Bn6Ohm4if zG}_5gpH?x31Jg}1T6<;N85`jK@a(KLJV6WtaE)Zz8FGAh0e_FEQfA!v1%74Q$wJhG zjerdCjs)v)w>1q)fv&`IVP0D3MAAY9=Z3FC%DH*SQTdYdItfnbl=TKlM-eJzv>arJ zk9d;{r$pPE)?`$72_**BhM8nrHxgp?R3;Jf8h>2DqFZ`AhCndCqU`?*cy*|pA(}y6 z)b^n+r5}wqw0}$A&@P*2g!`2@Q^{&EnCZSxu5O#`uhN8wmNx7=?$>G1uv?!hiFaVH5aQqyq7B!y&`umw1n;&0H!ZmAg{cT>$oZ44wF6Q~{fqX|dr638RwR%gf)HkboE8raB*xe$rb+79T58Xxq~ z(-}$9=6_I(5O-oxRM-yHVN}>Dpp>#DR@k0Q3sw%4MK9sJI`dE*6)T*G-v;Gi(eJ>y zckS($=P5`Cm&dK~OXC{BwBrQR*vX39IdPq12pwJycV3BV1?G0yHjd(|#74@*37$Lw zNk=iM{0BO>6-yXlO$O#G9x$=S_@w&mO@$3N!WfX$SNG7h=GSvR*{dtu9~Ac6ig7{Tfu7A~oX_^UTrXDUcbvYFm?T2Yz>>xZ_sK_QdhiZ} z;uspxW7I#Cdm4wG#AJiu4V)cXr}MF2KDX7j-ZmDkg^2zmlmU8A4L(tLzxBajNDU?9 z^$@RvJp^7V`X~k)SkZ$yZGVKCBHMrN^ug~nJa+<(6ut$a15&2E002hNPRga$Q(15ni){Y*xcoZRXmeK^UsH?pIXY-_`0jkCTvy93cb0e>2&M=wt1YRM8+ zv;Gd@nf>PT|HAv_RBh}3!-@LRcfE#F9D~ie9~;v3j&ICc_iyOL>+~hw4clC-JMT1# zDZZJCg!)9YaN%5WQa|fsWahmZzf0cmChZ9p7oGP+j;vapI9YfMD;Xq*K9mNt0m4mVE^SbRcnc8HZhyno$^9Wd(q=L@86x-$A#oOE zBk;Xakou?jj2kA`)-$oDs?0OC$k*He{>e3)N*cQD#y>hIHJN^|sXAcqB`6EM{@{YL z7+a%zvA+<-bWtdwCI;UF$YkOY%piscl8x%3aP|6fL94=2Z;x%0hsb+Z$0P<^rL~^Jqa$Hy#`?)1&+eIs-+H?_;{s(Tq~}r&)bpj4&7Y9&H}=lvdv0-|l#qAV>ULr4?_e2N8bjiLJvHPU~15Vr*z zPv0qLYy-^B#iZS^J2c}uTqf>mE`y+^e$%%AVSfm@9eO4Z8cs7p#TH(RCr`a@4;Hy9 z#jNYW7bANIJj0-Gj?!6pR;oPNBYWVEhX9Q372;PVcZt#i{Y*pD2vurH_LBJB1+GsSL52Ts1727O?eXIdS2IZ=7G!ChaunmMjm6)0GctfZs)m1HX}8 zet!tS?>v}qM}VN$1{0ObSjs9C9uR94s?i|or@}hbBS-1`x03g(Z=lFY-ajz%iGhd4 z`%ywEf@@&u_?TCqvZ*Nc8Q39@RhT0%pwMH)L+Vd56ddT~H+EPi7*Y|d$>N0u9u;3U zYfE?0NxQMsdk;KRWlgcn*OVim=f3?2On*Rk?X5bJW4J(5&4tfTv7bb><3ktC4gG}! z$#eoDku$yhFjVW>QNFJ3mu6&#g0NLHgJ;-6nRaE-FZT3;=9d?{c45R+Bk>+Cz3 zlUC2W?^|%)IXvqQ#}GatK#0oVgc335`qqFQa&YR9bypt+WoPR3< zf^+TI_&WH9qnW%?1YSvsqp{x~T*wMCQRZ#yA)p zzzK#hAS2mU43dJ7%_aKp?^=8BbE}Jx9jAMqndym9Rh>F@uKVok+EuCmyAz52kqF;y zUvMwF1dmC!?R-XZ>IF-ZMwZ8`jMp#7L6FiSle))5Jo$(9NXMn~kC0!9Y`&s(#RF%tH>10+17KI?sUc4#!eV47_P`+w&C>~B5jGHOT6 zKQh)x+e@sT!%D*%FV9~iQ%NKgOePdgwT24aGP zDU#}I%8RA`C7mc6)yhed4@s>29b~!m02NM?%Yx1nVYi-yq)YDBZ_zCo2h8c#Cqj7$ zZVc4d1zH2#l=7`cK7SA)g*JUY`>nY!-G)lG>*P6yEaLHzEWt|7+axkoIG>N)A)9tA zoU-{b_%`UgOU}7S*xT9<7Ow!$ksKkB3yGTYR(O(#_sGDfOODosmtv^|5%-dk!HPUf za*}762D)PXN7>~oOBgoR*bOu)J-eJMMRFUKxQGjKK~d0KP=AF5hY3AmA^*@@4fFUD zq`KmeW}&D-#jQhn)Mv;36qo`J**PT%q2{M>jF;3aA&|a=7hb|kagOMLSBNBBfXm#g z442P;4i|s^g%knSt@{!+sy40gg>f!<%=rX=4B%x;ekuIxQgAx062@y#0ce#Dn#YEM zT_Fa#!bo*|l7G(}UKMNy3)um3T6(1r#{k8JwozB4y;JLWG(b`J%$kj=I?~lEtEs8V zHZ@r1f#c9&s39#KuU2HRcZTq$@nZ0rwB#XilIiH<@1vL8nO2gy8i9ZLBE~RjbzR zRww*5N>GPLtNm!V%C7aQfl#OIt5*FrkOY)(}aomG= zH{F9~JAWwOgXm^5zYsk!uQvusVi{9yA`H(2ev$5{t>57MjA!8@Gfb@H9yE|8QC95# z?=P{QL^~albfY<|mnUt-@rOwB@FxGhuwolHa-+8#!{w1r`J#DgK%%ciTcf&3a@=sa zSRFP_@&&J5Aq`9jvWAoeZqYStP+v@LYH#5&XnzR73_zx@rvDst{B+et#yrCxgLika zTJa}{Q*-i}JGTAUL7>*;Tsi=1Rc9i`GFoE39)Xr1HIL@DS6bpOo!+4WyunXsm<{;P z#NNBwn4$&7+`%HImKtopt9gfQ@i0mpfxDXH$bx>vuh{}m{MVIBguf1!^?~S&d=yo) z7=J`%9!L>uNmD-7Rt%SDf+l80gkUN!YKy4KjE;b11PyY2m;>FkOO)kgl{mS8Y^sBO zpyYPO3{Ls4`{B%xN>Kf=oS`mO?HC9=433Uuy**udhSY^MWcoi^V2}yCJ1N{-$Y(z1 zD0Pi=O>__9gn6v(+m|3bDm)|>Dq~~(HjOB|dOAY3fzlxNn8V}TY=5&(6&m4>d$>@~ zvWh<2uGA6Fa2{?*T!255?nLjW(MK-c2-8}P4`wbw zVqJ|h8?xs34Y+ER1BF#q@GL5hwq;6<(0-DaEclZj~)jG zzI^*C;6|~k;&q^u?|<`JsGKshIgA6boN#sPyHTGj;VmbwkniRyECIfpusXgORdyRB z<^;7Cs)(wu1k0SD-tcZzVKt2ABpW=u952cQI&+fk9KWF(GKUfNMKcqsOo&e*Ec^3o z4=f(0-a>M!^=_gBal#M zMr2`k8=jwzb)dy7B*|?%)*<+!PSOyhpX8UdhaD3&z^plQaEF@04w9=Q1Dm!0R||&% zuekAYn!inTP>uW!?#?NEE4e$d*TvjjPE$?g$1PO=T_k?Raft<dDv=gf9^p?(|#1%JkaY`cO;bIU$ zP>m>&oD9!FP?3B)O8yI3tI|koO13|3rxoO|$WjXw@)87Bc2bzXM2F`YZL)LJ0xUzk z6fSSHeY_Zc^9LC|@9!3|xXP2eCG>3?L$z{}=2{5Oj(@!TExo)@hcI{fOByn{8HG&J z$4A5Ma&cqnPX9t7K|!0`|RxmKRdip0{kJwF6y$nF}n^Kk(MvTL^=SbAl+vkY9E2EnkN_AS{y>t zQ9K&d4}UIH0nruzZ)zCfF1cUa8)jS(7Y|d^yl)aIv->@DP6o2;ssvnTTLf~jl6^AvVs<@F0yscO~ zcMf!o5{pKngb(8|Nu*k+ZWr_;>BzQa0-$xiqKI^W(SmUfvCit?={D|8KiRm?_M(le z1LJfm60_hxjW0k|*T$d54bXF{9Fp{C-KWinb-e)EgKV(VoOi6>VJ|G_d7Qk5d`qW0 z^nczr(IZ*e?!FB!sxWNpLYSa+;Du=Wi}2lQjzr3OZ^6=%8uu;^ELw32GvZxLa*$Yv zoQtZ71HWavx-@If2l}QAkuXdv>Ii;E#6FaDB?U3b&pKb#+pUa0jW4vk%F zWiN(C7oW~sEbP%J+I3;*$%>?J0$ltv(zh*4kq9^k(h56oh?ROn-7+&}Ju-gS;_nyV?3}nzyKYy(I zp@GSB|JG5}*f%t_vd_n-F`UfD=X-)Z0!^^5D(tWE?#4u#lm&YF%n(#v8ZOrOh`650 z2UZo;`gej~nLe5;!)&Fhku$aKPbksz1am8N`gh*mkC zyhx198kq$Cj&8+}6u7%`7)fZ@)PE-_3kE7bYZ0Z5CjTZNC zn_Ae}kk4R4>R=3v@t&?v=~j_|rm0tW5ejWlcen&O%qrOK4xpL`J#T;P^oF?Q-YTL7YahUFz|+CQdyh@LAckZv~s>4L&l0qJVx zN+*?uzIzJ-hpFzu2$iRmfsU3Cwi2?I-Bc~oN}8J|d^R*_l{!>CId6g}A*)K8Q zK1n<4AX0MV+}y8oq!O{8Mt=rMX>4qN4Z*9PwNM}iau{N8qwQFSH&4JLii$6q+5^3f zyt=W2T(7+#x+W{rLhQ}WH=*R%&#s`yfpLc=Yq9N;#G=}cp&ZOEFvr0IiW4R}hwTR= zpGw@t%n-*A)ST0U4HeivdKEiwWu63Jla!~6{EB55F@Z>0RtAe@+<&`QMI^IgVS%MH z<+a|e`qLgtg35Bm9L;$|Z z-;U4})yvH-gghOo#A6QqNy*4q0+4LqI{ptKylaVoftPbBJEcMo14H0piK6^zukqA@ zmUf>tY7b`b%`V)(U&}hU_|Lch^Djr3zr*9O*%Ifz>3dmiK2AJ5*w0sU1O+M~26Zh#r*|Dsao?-0@&NKL_&*q@<^DT%mtETh85h|1aqBE1&GBXUc`eqtu3NYkCeOEHSC@_3 z1s(ywm#o_bDFb#++Lzed1x9~c}!UYtkPPb2&0*PSY1m_yn15b92wrZvHRg8UI z^<_4yI}49YT^V5GFk}4qIXtg>HFEwX55cOPe0YQPqaj)P0X#?wU%qW_b(aO4Ct7*( zs^n9jufyJ0`R3cV#Dq~;z>?P|9ikKA+$R_#t9aSpP%j1dUFm;Jtscr3AHRKzWy${$ zqBa^AKiT=Akf(4I{fj4k6ixa78x!gLi%SuV>G;+~7K-s) zlSA#vQrT!DPk?{hRU>zx#lr}l8T~q;12BpRz4joN>_nZ?IvJcWz_6Zw#Iec17gO_x zPE%0=t$2fm86R20!*r#4^1gR&bZx1b+rkWMSCB{?9{OuEqn_qrP7hkykPi4}C_+8w zh$dii3_>-lLaJ`m4Q6*)OF}nmi$gCH->H1=tVzMFqBRssw)>#YPTp@Yl(3S_Yv z8@Cx00B&|%i@<%VyliXp>Cs%>{IT?EW8rMCp1ON58sEtW^_w$bq``TF10Z??`_6S#_TcVaR~3AjWPq-Dq?2a2*GxMszDygV#x)CV zkVyRp`v5+|r30%PuWL76HVE5H@@FHrU1;7;0|7*6L~N$Kj+U?2vG31bo}G3F%au%G z{Fau@HtLHNJ7q)0(zlDb{3hEoJAThx`}2RnXW%UCo@{!$-?$D3aN5tln>&EWWA->$ z2iIH@J4}3G@cV8!Cm;9nwYd?NC1zwN%*bdI7=|k{46Rux=+3WpoR75EPv-Cogr{|XHz9lJR@DNU*$F~<9WBbryycXu~M=*jD)JjG!|Pwhl&VkDo}qC z*mdRp`wjvDC9i<3!OMFMK=5bHXN`YmM~Tal`6V>HPREI<^&1B_BnLo5)^~BH8*Aiy^PDR(67xue!9K7nje~s9idwOo;v7s*5&CCzxczOlNp zySwuE*^AZ9q?$dc#<6PAgU5n{smasVhS}Ep>@mP1``IHn*~w;n^}sw&UOmV`|J{FY?;V#C;{_@KfR{bv1s4y5hP~|dhkc2oyt(LHoD!E~;{`hc^#GTk;{_H7 zrcnKEgWyXim%if#A|m*G3`Yj`b=Wsssc$j;I@=d^>8!e;l~@E-UkZh!z4-1$mjdJk zOMiLKO^dKWR7ngt@6Fk3Ef8%gyLI<2>Tc2>gJD`9g|o!?GW#?30UVfe&j_C1?QOGd zm~i^VgKVo65?(b>XrId?X62<(_Qd?<6U3Q4H;Pi0SuXdWJMsR%rfyPqkMF+QgA7V< zGh@!>({zK{gVr}2C^vT_Dtb5+swRH1Wq%l6vgWxL0Xz>{xFgJ=lm+()Qjv^t$@E)96DoMUxtgV7oevg=$iSQtQN(n2DKFptkQ+u?+wW0X1p zue*njPTiTpvY(!rkx2HL0Uoty-U`94*Qe&FYG={w+ln4Tg4NdOmm52x0Hu(TpMRIt z%VJY{lQ*UH1x<0Nm&t(1+BI(adSW#`#yp=b;6 zk5EJQatFTjb#8jd;SISB(6Fs)YwK|E`WGHYhTLs z^ag^Q{+Q1;paqaW_wWZE6zMLQw=WL)I(D<9q6M#k_|OC0&iN#+)L4X2{MVy=8k7k__S_{Y3b)#(G`l@KQt$U>Mn6`zxC59Ye;wtJR#zB$*i zhs7g|Nm*vxcmp2g{@>?kF6w{7A7g{mX)pwZx^O_^ek(Sc15-oT3xe}Hr-bBgHU?aR zP)-ITHZq~A0YTb`9HNcE^#K*?Be7>69|8)kg3S$PgNOrbWjCl~(SKJ0o4wS*;DrKQ ze$oxZewxY_!isgk-$B3#Q#-IHOqlVvdst@+F4W8xgbnk@&Y)vH)1Bp-YAs#6T}xX0xfN@DIJLE3a9YMStJF3}qhL3p zLAbT+-LKJg>oNK+gMR?_9q|3&$`HjsB(yZCB6LT(lB5K{&fsTE)SVNi>p`w_sQ0jZ z8JKXsNo^^s@b5UD$%eue0!}?NU_EHS(&8?$OnAeU;~T#ZI{-!sbHcO?^tR(&oS0e% zcAkG#AE9w?-U-3iSEp-s2|ZcxbhSJ1^I*&cc$28Szft){T7SP?qV!29qeh&ll)sUd ziw-Q`-f)X8h_Cnt!zVwe=dXJsx>fdur}=&@B0ww*oITaW7*lIR&wk!o^B>|G!~Y*~ z0e^>#EqT7<;!De9`V^+h4z1!i2%zPs;!r4xm5bQUWx1~Cs7v{oGjhUJ z*!y-!2Nh-3S*UJwEEaF@2zJ>_w*}&@klzV3->lPZJY~RJxh5ctLP0cE%Jn;55J!3m zL1Pow3l6H8?XpaPcwYe z6j;rB+25sn2L<;adg0GCL>v6sfOY|YcB~~P5_u6Y?U^`S_E?e0#aobzjY7wpanH7< zvL4r?M$@zJ#wp?mKBx`PPp7}v&^{`q=Ac%(3p>ox@Z#-1vRd~254bTUh8dV_FE09v zb90|QeSez$bRRi9-p$>EV;*0reV={LkdC~I6imDHkeV`ws78(cPzzHFwTItl$3Fmu z5TvS63;z5UNPi==pn+5$dn0!>qYMr1U5{!Hj}KkUf;)F|LM)g;)h@!Y;9L|s@N*kB z2Jmyc37RuP&dV6?!&;Y@@5Sqk0p3a7TuNc>d4J6UFr$g2?lB9V#XO&7Z&Rs)Jxe z2oQqfVLrvf8I*;7ZS|}l%&I~GxG47;_aHp`B=dVeTrch2^?L#`5cb7kw!=SnA!TgK z4}S<5&*jJc!|YYDYutPI+;5HP?U{Ccu9f}Nm>$gR)aQm-2aM*%%rF&fi0f;C`P!MHo~7y z0FQx9AhI-uZ$?*iZ3>&=+ne98#IN|{Cx86#i@bv*H&e!^ z`fypHAVymuBbiuBMZ6k{v;Yc|G(nffzgbY#D(8itmX<-&NkT6Q3^q#%5pE@VU4Pc) zuY!&ja+Liv9UmoN-o+myj3TWs&SyY1Iu>mrH;inQz;NIN`w13Xb%l}8=B&zt#RJ|w zL_C8sAtuw&ZfQeI@mYi9s2tT_<^GrfU&}Uuz3IF&LDPS9) z2M6HdGeaNf1msZFj1D+Ra6GxBgnugB!T=D}IO~BzYw5gaAdN8Mzn$|*0O>XFR%{iI zTm@`rI%mO6%xPB>>-F^ULC!l#_Q9xj2(K!-Onvv=H%CK>VnpsaCTBh_jtSAP%}-q>Bh=ZuQPw{v*1gIg40idl%-;ccNro{D0XT*NghgzwS#?M*;?ZG`_^{i*21aaQ%Gu-Z1jRTCfM0U^{%U#n!x=(sT z@a&JF1VI2!U}7WlQp&~#{+-Wz=kzFmnM+A47DU^u7J0F}=)>81a|+^4_+y{hq`TxI z6C+dStO(DKh5@=2;2S0rfkhJSZ)g>J1&yO%r`@P=Q^+NWIvdL8>wj#fAzbQ-S7t&p z{o_pT&itWT)Z}Qad=J{n+?@po4@+xlFw<5Fg7Y}N+)lAH9;H|s7K`f!c+q%uC<=5g z#HiK{$4JMY9yi{^bYqG>H9jeqK8O{BinOo?qloHITM&S3enS8@K*_&u_E{*V#G;q| zX9nyJG4CYWRSw!ruRb?WHD7YKDSk$Yw{uG5-3e`+Cx;pc|a|`j#Pt)0vvF{ zY)L&Oic|o`i`4QMDFz=1YDKG=eVEUlUuLf^&0FW`rH?dtoMv(lIsOMjW}k+4aN<*d zK+43U07l)&Xd6GOmpdAKGY@O1xel}t_F`TGyS*Oc+v)g3WrJFFqnm%>98XM&sWX`} zM4d`2B56iGdZgf(E5<_^L8ej*N^fvw%M33l_{AbsFCWs>7u;g;E@A>;5R_$Xu-->R zKHy2!G5|upswJW~JR;z-Gu&bVp92#=7;fb~UoN>Ih-9b?ecgJzCMei(ZLbQoMFqp# zMBj>=&W=l)`M?#!8rFX<2%3ufJ*zz=I+5KusJ#FJL3`>|zXt6~;r0{wbJPx99;%#z z#qP#V5k5H!8|Ln6+GJ^$*j3OgdUV8nfFp?BjHbXBbbTr=O7KAGCv7ai=<7QLu0D4v zais=slW$q43IYOx;&LZ#_#l0#p%SGVcJcT~(M$o+O4Ms~uh)N-<3}>0Ov7Kh_+oFj z7vrGfEn!KBi$%XyI*NzI^I<;Cou6OSx3y7S{9i%H;o#+(S3DCnXgL0WHE(>2{F3;r z<|Ii~aWqXI9Ml}(Cs3307(dLSwanXRyZ{_ucp$6UKccTv4HmpePYEcFR8I-Yq6<6H z;0enL-1#NuKxls>NsK17(F{ojE@jyv#dW+q!28ws$$Kt5Kc|VYz@@aimUU0 zi1gIykNlhw$tsz@+vg>}|73dHsQb!9Fp}CQo44w(THJq5DuWR7eOYrL#y|^Vw`x;5 zB_h$_IMl33nFCc33^<~-9LIG>DD(tO1S-u(FxX5looRoEa>M1I5z+@57O?~_!7%(? z=Di#F)&R^4#sy(C@T)#K9fINOjex||GC>rBC2Ap>Eg>mJS8lA8;{vw@^>DN-#k<){ zt!rgc>lLVXoXL=jWRK$MS{-^Skh(oYho=?VIyW%NlKF^u|24jFg{mlnt??`d1(Ns% z5yjRtBn^KlRon~x$-ZFkgKhK5y0a6o-~veR=bpTWc6;~H25s7$f{&y*%3m!2b5 zpw2>`kzG}x_nkQPVZM;fEnPEn1z=!R0hTXs+1`!(UXQ)GrHYOxYe9S|VZEHGk zR3U$iqMCn``+06a(TCkhXQ073$KMF=1_nF8#`EaqbMf~YfDug}e3S{%21D>q{z+sU&kk&TfSBCF;7zbR@3xoJFmN_rKur#@+Il`Pdci*N#9 zctali3K#6VQNG!k+TEZn;AB8X-oOq$e++-ZGhM%1qo*~T7RuJ;>B79ach&$s_S;~F zO^!W3H9mjLyF`AeWzToEHtAiAE!%l}1s7(~>m-emofK|~+6;-If)wH%iBqR(({5EL z{v9Y;;OiZ>!&yAFe!|MNZqzT@B&>9yfNQnY4=bRKhK8rEq0`dpcEt7wRK&+dOw`k5@K-UfE&XZQ;dO!3ckKugMgJIr6euh80<#)|G9b^gNacdB= z+{rB6D+4|U?>ldyU_!VV{-T2}88&}RGqQGa!v&Xgs_ZZzV|zuc1J2N!(;@7kmdjAw zaEQe84RvwUxwLl0#P3v_z6irToNKGpBloo;U#R4*`H^Kn{dW#2k2*Sx72t_qQz2G73OPkT0<<~5$O?j=l6f$j=I^{2hcFGrQ+DgCBLq0$> z#c5zFzM;z`vu1nOe-wU{IzJWgbmXHs4=HoaHBZF+(}sX)kT@ky3yXPI-8MZO+u}PkpB2%0nQl1xwEBa3`YbT_1u3hm}~|A_`*-- zs~l>TnhStK0RHGob?do+&TT3vAxtEYIczjD#p!jfT9! zX^#^i+zo3JM8Mq_=~#c{x21CKk%l8Q+ToaNb?w}bh-{L*xgbVI5_D4xdhWE#TWy8s z!Vp2$uVX`b!>XWtgiE+HH>f8Mf~WZ&!IBpKW z%>{uGzL1@8)AE19@E$qH1@%+b132P>J^6(Brc#^<0r`*=6HJxmWdj{oa^KtRnSV2S z#V|!4T-f*Lz*PM78g6^)fsIg+F<(DcB_A(icO0bk!7_(i}(D<6TI7Pbrjo*eK%I}%0!wyR>&?SqKCHF{FD)ebOj6; z-)FRTtvC{#fg-hNSV=teB%`sA!OgguCEin(7{t)Gi(8^%E;TF{?#gFgykXyTEmcYF zS2nhe46ZeFO+t$fxSBA#d(Hu0k;t$Jl&8q8~(#*ROxF*+M18-AyB1?&(~2j0H7is##ZLOch#7VR_k zka^gebiM-!YsSNHgV9$cKAkZc0wKJ}(XlC$8+@_~Jo)H8E=9<bf1pm^w~^lnlqUId`g!Z(X9$(3!4bx3#hMzqV0i}MHC{#8ohnmum6f^->aN< zgmt=Ucm1rG{o-S{2!iAO{?fhz4VKNfsz3a3k_j%?H=c4sB)TeBirsPsP<@gf0kD7C z#&gJHDa>J*k+sr;2s64yebT>eveqgmD_XUGe%i7=!QCWL!5Hn@tZyFu$4Vx(jiaD# z{F|HGSEXA;#jwadY|X_tag#av2u!l1AB!8|2K%!^dQZx*-Pk~|#E!G`!c~=xh;XGe zS_&EHTU330YLZts4(>M~njsWPtqgyl;2U-DsH|n~*H3p2{`=QYhj+f6t1tbAb+A3t z_zhYNhjSL2Wy1#`O^&HQ)c)UEH$GyuKfilR?Iz}g9uUZGN85#E9s^y*<$Z%(aeT-X zA2An?tWpc5gGFTe)dZ{k)nBpNuX*x=1z238ES)U<=t$aj%lWw|-z${2zad2~woB~px>G|RxBD>y4bih5l>`+B%&zSWy@}xWDrto`E;q6AC zd&pl`O(R_hiWkrW#A9B&SLPOsARtH}IRy!;5s6j>POKGlX{X;jA?A@&^Vx%u z;p9ESUeq>GEkGmKqadl5=~I7vdmOHas{U$ckZ&0s?H*gqIilkz%givLg@sPvCLgDG z;ECqhMZ}hA$Kz*J5vQ(9!ID^b;IxP5AuM(!G-lBViIHnxPz9EDXG;Tr3PGuhZxdr%R&r{+q5jA1C65Ly>_LjG%;YXoYKUw&x3mr z?ucH-22u1ezyr&-B!)XLG&7nG`cOxg^1(>ABiO zetfT?_@#4oPUVAxi>sAr*a^OS13_MCC)~+3k^6L6qe^rbapO!k0bjUQzAddpK{0lR z<=-W>xlPXNAw|ZRb9o?^NFL2@CDriJ4m%@9r@w1PU*7wlbclarkn^(}n~?LTN65-p zeR}w;L;2IA@W9df)esf(r)m8c63_^KHS$6FItNBLAY|KU8`1+KWCtlbGm>|z&yFad zbG+dzCbu9}QH5&Q(mLr)F!5=E4*WY#5=H0#vSZ}mb~IE_avATxijoWwG|coKb;7x2x9 zxiiQSxPdYhDOIrlzX?W1EF%W-4n;IZ-X68t!SONJdKg(So;D@Yj zAC)c$U&;b?ddOQJ*2USfIX9>;ipxIal2H$UJnGh*fR8$gdbO+|4+w&TvJaf1C9~G> zhCa+<57+$ap%S}4&07cihjsX5l%%v`2NwGWxo3xXL1W&*PEC934BVQMPUO;Nxkl!j zh*p1S`v9wo5Do`NsfK8{LWBWG5J7D1(_ZzN2g)+G>_i7e+#8d``@m&(>T>{ac+@He zYz2M|1MQ;yQq+yB`tsExBKqRZx|eS6y|BI4B>HO4B~dA}K4bXBKf)$rwe50Mf+uqSJc?_^gL8 zqqyZKD-2}eiuRHyxm(^fA?hf=tJ=Vn7^3NMpHINOowGZVv#1kAUoO>sW1%@Nt5?&g zNwo)nI0}^#92x0%-5}kdGwsX8t1MZbYsr#?*~<@}zK$-3bWfP~Y~yy~wUN-?HSd3l z00ZmtHB!jaJ_i#N9083~ZhZcT$=#@LQixHO&fnygkt~Fdrckmr9LeCo*8_d|-0tuB z?q7$qVFMPI!ig>?vEBUBD+-eh9xRLywusx%(F{wO!eDssEw`fs$%Wb4qHMXCCfw1) zm62o&XpFDhb64N^_PBDli)Z`U8NYup=3FA>qv7|;2;4p!gVE|6y)SDxSP&ejMN6c4 z*NwGAUi}r8$dZWIYKFJ+tkHEv%3|f z>qAbhKbiGl5mHjM5`0|dnPvGbU#@Pr3fy;Up>t3hWdd^itV+l$Ky_4Oc$k0Owz4-S zj5C3@@o;wxNU8AAf85RGHG%QhX^rf4paKN!FXaFy6#V3kYKhM(1Q~k&Y&wExN-M>R z77)T{GEy+Y;9_14N*E-avEYQ!H_AW?gFxrN3QKafBmjnyTeiEYF79LD36tT^7?d2< z#7j&OVv%Bmfvy*j+uQiJpJrGp1Ob!zZRrvj z#;f8?rxeGFOO^FJq{c$mEsz_1c?pyyLKJ8qw=aXS31xmqLY|T`7`#yC$!2L8jBY6N zw!936KS|w%xk#=tG0A^5W+}PGlqJ`gzvLQ|nOtLLqtsxW7pMS~*e=jlNWpf2Pa$l=F3>CN8N0xcL1APUXyMRb zptF#??SdoYFEDJM9>C$6%SsVPpdYZ!fvrX4Lm(Zzh3_FTg~WejXAC-G0gxrG2l*mP zY$OUVXpptffl*D|+(NPVh_|v&ei>KRPJAo-R?C(h6V?I4Wz01n0k?goSoLt>j?EIh zm@2Pb`{+}2#$~hG>DGhiO$HaIbp1!53I2!+$lWI=^%PEz>)yM#3G8j$W zpZ{An_31r?1^7xim3F1dwBO|6ZD^X>f%i~-VikC-`Kou{FQ`!ws%-Ci1gQ#9vfz-< znOy+CA^~aS@`wETX#dX8V}Vi4KAe1l2PXtBYJ<@BnS}^I0V_vnG2+@AS5)c zy5p)S2Z~@7JSaj}lwsX^%Lofm_dDx|%}K|Nh8%2)M_+$@>5LdRmcu&amX5PWcRm8* znS`70UQU5g)9B12ji|691Gg!#8M*vI!=s(%VJk-Ymw~{^Hm0?eW*JC4jYgF+DfEy!h++uifQ8e(l!b)au~R2SC&(K$^jy z4}NGa-M#B|vb{#Qh7I#X9MzLOP zQ1_ygfjG*9b#dHBn2*4Q*u4%CAz~eT_np1!PEmi!?--7=Kns6N&>bOAMJJ#J>_-U( zNfraZsn;e4(kO3?%Q1*WW{)Bk+-{>svqzp(;C=Twcfd!92;=s-80%vD z+_f7Ufgp3(#y9p5?1BM1{;b(?JXv}zT_`(c>Z1sN`KGKm8u-T_DYF)#&xKFZoKW%w zs8oN5vg_LvfM1G*84Ankg(YGoXAC3gJ6bS z?|HNyP5+nP1*d5k3uq|x>mMUHtAAl5gn6-;@DYeo5!9KG9Dr_U*m)w^sz;(?V0FXr#HN5G$k1=(PtEek^E+sDf~A|7>oqT5G%^<{tO zrk>or6`f+S2JE#ww5L12Bre|Mb8D=yHxA7v?jyX%+!90vgqP`nVFFI67$g;RNJ9K= zs7V49uTV;`9Sf#t2wdaCG`!6(*i-ai3?B^vJYGA2o9>R zzs-cO9)DZ2_3eQbQv7Xzjrs%PEf9Yj)%g0&H+Jjedu9V^E{97ul}}JOrvbMoANut= zBf?-@2R|+-cT6h_^>@(z^n9;wda!qe2l)1Ul4P<~lJc=fI1)ib=`qJ6kx;T8GdtQn z;D7TTfJ)$1wah2DIe&Qf0TN@t3eKNM?1&!=hfbWufp#Fk-}^J2`dmAc-~E4?L4B?Z zt6iMC2MnrdDiX&P?amk}6z-<59F(QEza%oMVOdqWlcZlJ)hmYtUW?Gh0!hes`gLAHDiLIkid~XpC5BWA=@! z6}=+-Ov-6huvcH+)EQ~2DFuJ3#Iqj*j+g_o2UwyhY~q-r0{lrR^RhSSaERhU?p{6> zUPvL)__jU!bbEDmcXe+!QB#ap#=kvpi`bGti07LdIGnNijH2&cXefWb5u~yLsi=7lytQW4=v`IJ0Nv@`QzVBnNW-9VERdymNVP z{C9{7R`^bMr}R7bOWui7T_VJRlS8B6XVwvi!m`@p%BQ2u5>7^E4^@m`S>T% zNheAC<5Ho)DWN3k&n@WzbJ=)CTZuR)%KOJ|W9@(4jrI65H`adu`3BGblC4#;V8Fk+ z#BCF8I8DyyHylvB@~QWlbN9d%7nARm-nW$uWoPl3%fHttdzkKormXw&GKD3bFE)PN zJ6NlK`?`PpRo4CE;<|t8)_wo$uKTB-x$aLo=kQtkm#=#?bAok`Q0z{hIKP!k|AbET zWo!Hdi@#I$;9P&-m?_;E=lWLp!~c7$|LIp*{ZEUl|G8WJkE*j#eaY&7?ySaX6CcOs zyVI*26XjQ;jfxiJ`g4VA6Yi#puO?ec?FH>jQ3;^>=_YA1p#-t%Ws+vyeNDIfkmy6w zl2Mh>HRVgrrz0RnmhVr%B6EKl_M>^CC`#Ns^bcKURoQ?4p}(|$w{b7>I)tnBjNt9A z0Y4So6K){AEP|&sAuAysGNvv?0#!mjs;9`5_Z>QOdmocDe(#seN1y_n+6zS zi4T3UVLK7CR$j8OBlE>dw{6SqPDY5AZd*7QFoV=zy<4AumEHP0-L1M!ufieqs4BKA z-}2n1dxw8a=9BI@l!abZKfU=S$q$MYBJALDSE&54h}lgA?yr{=Kqbmo{cLxbt@g8T zoqN-h2Va#Iu0k8?T!C`VH2ClVREU-HmF6p(fIg1Vc|?(57t}(pcR%W&%zKP791B3VEap5ljiK8$`6Oq9o@H_5cRn z)9a)puXt|j7b~T*`9gkf5W^f?1Nu0`7(!x)SpSEs zrT%~2ySbcJpLOmyOZV=u?y^v2^rA02f;tEN!`MO6=afh0DpOcF0`aAZMBEuOiQ+18 zQ*b0?Hh0&dtiDGT-S&X&h;|1XM0O8SD7V4QJD(*G6{d}N*g%xSctr^^2r`OJ5D^sE z8mQB*9uB8XQtyY>QV)|9o*eWTGf_Umcocs|I1a}9!rdCV02`4&su6_h>%w!<=sEah zn6`-YlO4}b&BH6JHNrnb@I3|XPO?fzpK+FB6u!b){wg(}@22+h)im|)w~^*wG9MZG zonhWh{c|3A2(~dA>0=qR_VhpJ>r--<5R0&)f;WW03EUt7`bYICF`G^=WB|fEb|QbJ zvXC&7*(4FhU*8kZxv7PJjQJoQ7QT4z)-T!z!WXRx_QiYuHRg+WSoy{KU(iRFCaw6v zih->DNM*NRo3_w{uVEyqPU<_}Kw^`siyKPOJ9*&hE;Km!Bzn z4KA8zN$^p=)1`(7Hf*JW zwro_2xwA@3)XpKM2f4B+!&#>l-V4U!1T2Prs}vVjPW$hPRW!d`4Id)*??nv5*tCX( z6hS^iXtOF(8jd2*@^5eE`f#a&2EEgt0}KfAXd@C!5RaI}!=3;-fs#WXBGicD#jz%& z)JD_$*kAm>AapcA^CB_$=ce;`G#aEjXZA zn<57^>}HFEE8oSI5G~onh#$Q*MkRRbBS5JA8BF=ducBc4m@?%*rd)sc#p}GoW_yXb z8^@(TMZ`%l{b@`FlqNU|0oNJU`?8 zrWZo(p0zx2MAH*}7W#jY28#i6NRznxTj*qD89+Y}U1@6`wS}lJR^>175{FWz?uGm(ItfM?;rA$2GT*=N`5^)s{(gD zAw@nd)P<<@`8S1+mMa4E=Prs*(#5H%szR}4Y>p|U9Sd*7${>^T=1CR2Af-b~SH zUNGS{oNS`1xF#AskEheTb}CHhNBCU;Cq{fsc$3d0^Oz&u#isiwOZ&_Fs#Y74bc3;r zo@PwHX)d>Cl0(e!-+JamD9JGlBRyIgno@Qo>8- zz2H(;*syNHC;PTtvVEcz8?VuhxbP94C(?=w5?OTJSbYE}57k?!1R%F1f{Tl#}93F_6%Viw}{YxqJMFx5Z2He{N zKymCRxQ(hg0l(n=YlT}FN4gbxh}cc>LK2UEl#+m-;`>paEijhJk zgCD-UZzEJIDFx0?C>9#lZeL^6RCTnF!8cz$@Tf~suxl!INCwCNKPe8fVvFJ5%O7Nb6BzIT6; z{XWQk>Sr6n?At;1sGI$MnSFbiUA)VF+suAJVCZJ{cr$Ci%LcEr(|1sXy?Vs22u;9Hy^F9IpH}_ z>f8rmGy~1MzBhe9Kw?P9cM0iq);zgO!C5ZkF0HoyE+LmVKtzw)I^UMyjO>5r&F~G5 z7|}lhe#vT6Sv-2z-LTLwePS2ITBRbK3B6Cu18JqhHD5UL#tRvn?1u65iw85E4E6~H zC}x`N(4>5I65lpqrGt`6<;`vNVGZrm8)NDk-@drMsDZcETG>G0WJRqL)U3)%=Chg3 zn6~+-ut%ny-`eLt+4@5ZMXMIS$W6F9vtLbmX!<) z7F(euak(+)!{MRC-GiWiMicCa#=%tjWqXYC54Go(wvN88vth?*JwSb|j51yAmY%CJ zS9B3#8`pJt?^@9~l-++A6P4$7Xco5P$^E;bTlG8bL#XlJ48fo| zt)|va<*gyG+f#F!=zI+6^)2X6mHSAu*aIVLp^#dO_u69gq-tT<;}-XLsOfn-G8e!CB-In= zBtIgR$)3}4f>VF_#Z@Y{Wm=3tmtS0=K}@FQ)_L=bt3(!ez!l}nz2wdR&)m0YwRJS< zzKVa2CksK#T;ebpY=vbzF@Yc3F_?hG@*)DsAO}eVNwER*F6UX!lb!FY?&{m#TapuJ zX0leW_N}}6R$X0}uPTbXb4aSus;~#Wl7*oQu4+vX#aw?Td!ft;vt8^JvrqMCR+j(? z7N)ea$k#agmMxNHgTq!dU&Fbo#mOIlU-YaHs+Soyf9n8WZ3g_vIBnH?+|`w4*KPc^ zB-obQy8D8=x|9x=Gwhp+r-U0a+QTOo$gJOCDtg=9;ax~LJ{NY{lg^YCde)MUng%dw zK7po5-1UDfevrKCoH^s1>(PKhX<1$%p?*}lk$vQqg8^1V6DUW9&jb{XO|TXtx%AfX z^g|1eaOV#`i9ds{-f{gvPPdN*!IL9_?0NvN$6=o#6&BCO9SSSPXoiXY#UtvLh7tf3 zGfz2o6Vl-IvR%l2rf=)?%hs3Y%x)_Gfkoa|XJ3DuiG#2-I*YZ8(l%E`lzDwGHgj1HES6_1<_m`sq{WRPriS7mNh?Xexi~ z6KqhTkW?OzQ(q89RNtS}SrEHs8OUlO%{@VvW#U>+Kqvy@(|57UJFE*wk!O$>{sDk6 z^_EE)w_)+u<9W&*g<12rhomLt- z3t6?@6j>!ZCrmw<#MPA@#3%BOjH`$3($Q-rbIb;FjAd#Q;#6AnRO$`3v5HD*hD(2ybYAg{(rFk`}xj@^0M0pZ3fc3B{13qq2epMWOq68OAZ_-IJ_8o_L>!gBS1 z+f{UcTVJ$*BmjQEoc}>c){O!;sa>(2r)}86aRW(=F_RfQG(bEb&jF+Y}j+iZ- zmktSdAd0}3uYUYVwR6ZWlZFuSJLl?RKNm&vgCV#tl4a(DgW;-~ox;hnc1uRI*XTu_ z8@nNYK$z7uvXU^I4N&hc$lR&j?lqe1dokJG?O9r0%^$k?^GX-qq1mPN9{E$siCxBe zE+NqNic+D-nojx<^ht+Oq_ zoua>+hzu#sP)cmu4SEF?m1mxVVrccI|D96Vl1b!4URRZrUbs;S>wfN zyk%7ygM1Sjpe&cthZC$Q|4GhnmreHxSu#@CQ71;Jw_7tE`B++1kNPn7@q!)tTy-!!DQZvX#!5W$IN86zaV~W!R z@pGn6FZiZrV755CxVaVhTPIO7MYGFGx^ihJ8iIbkZ(JF?ybG))&C^l~w+hk>6x|wk~_IYJVmv z#H~M3LV)|~CrCoD%dRT>28hH|&C)J(wiL!+TZ>{~ec(oxpYt#~fLe-V^DJQN2hHu)detfI@; zsY~Kc>c4nDefep?Q>Vk?9}#$RJbwW-;d7)E5eMeNWExJNLoPRrMhnBQV}4kV4Z8U# z#EwyuRJ~w&p_mH2Z)6W-_=MwgOCdN5mG zjLvcoQgzpsgk;snCz0YXxw+BiNavMOEi6wNB)p2awEmCdH2i=J#)azufIP!RbS zu;!7<33u&}r9L7xlegXd{B>IhL^2oQ_UTE#4fd;&KA1eFPQsX9MSs%+Ji#SGAf9{0 z5p2Ugv#DbV9`B5qC5PZU940f&{DNU4+u@DJwa5Mze9JAS^2F`F8d%wG_kOGHRBrd3 zY1@77j0JG{Y}2?{N-srxm(0@j}bSb(hyt!GqzT*O|xB1_`5o z7~s+HsQpgzf%tlHvjt>$cv@lF)yy9w{+c^h&uOQ>^GVb(W&Ast1T|-H*3)OPOB;NI z#rYw7rfzW-c}X8~$3Qh|y^E@|gUSg%XJQ{I%Magz=eof5H-DYm(O~b_O-Aftpr2!a zo}57FhZJ%TKE&sP_PyWy3%}jtes%8zNBtgBd~+&w+7B?4R4XvwZ&m>{8fwg5~7HGldD|15M3u7He4{lENJ@CoN}uubV8yZQ({(mzHHt4|3kB_~LcjuJ30 zhJVdOg-yuisbE5`A*o;@E};S*z4)yZ@P|^+RSFQPwkv_{ArvZ#b{{RQbRLF5^wP;M z#Dxl-=UrS03YB0M9j(+mOK`bZ>b}d-h42Xbjo}OWFn<669q}u^fJZ4}&k;Z3C*Hd? zA`AQ=BF&SfwxWbAGb$yC1eK6OVv3{~xNa&LmXSa0+;kboPTZ_?cDZlnM~mMrAg|gQ z+^+Bo8Ak96caTZV{^~Ba1z>Dkua)~lCbIi31Ln~M`x zj;mAi?|*ai%egr|HRl&*Yiw@D=INz*f}pN*^ZMMpZJT4Hc0!ud12gQJgQn@90awHf z&rIvgoSvD1Myh-mxJZ=`gES5u$_sN1pE+$6#H(c=C_aQ<%l#a+{7;ZY%tJ-mI1j<( z;U_4L-U0E2*}w9ANU*vElcM{16MjAoG3QUB@PG4A$?NbFJ;D0iSpkMrxx!3b&QEpFZQV^;)5 z$?10fwcw$|bXLFYAU?^L>pX zLq0{ui^!_I`1+lBSa?=e%*sQ9Db6k}mQ+Vcb(FM%8CDqewRcDf@K!L4RD!SPdlWvs^zk# zu;A|&Q1n_T`nv@bz9xm^8c*3c|9>1$**yPzQqw_;&{W<0)zaqwqg0{0aFULs>?(7| zoTlydyawGC5*dP8aV#iVoY1hB8&I4Q5F2qnF%)DRlwo2*fP+aOQ>~|U(E9_4u6s&5Iir>T1xrLQp#VJ z(vm`yuLpv=8NpDrd;Ih}NFmR0f`cE+$5%GBbeTkVkHX3ow$`; z8#;+mA};Mp!ULWpl1I3~ym$lg&NvFih1Vdg>F54&R0;$*DZp)P{TY``D;YKbvM5?g zp??Znms~BETrK+e8bn<`UVC(%64gN+*On~sef)7`QBGQo zX~R?dE~t~2jTo6vT#mVMS6gQ<$mG-pg(Z{pe+cN=h&VD z5V!=UE6s8HOL}>nzBPOvGSTvKD>WS5q?b=qE7Ow<2P3WMb$ain?t2lTQ+Keya z;Mg9b0g2JFq8Y0ufbu@&I@)J5e zRWm`nk!R4Di7;`{_%IM9;nQ>TacqWH<_{n*!to3{72GfnOdEPXe^K{coq1pym>&{g znxOGhh?pOMLkWPt(9^|_4*i)AExoPwf8pu?r z_HLqHq=t9}iI;!te>k}I48<+V!1mudj;GD644)3lm(iCp_}7+!Us8tsSIS6Evfjmj z8>OQa{pfa!=mrl)Asbb{u@=@59xEOF$G`yQ*)oWmQ5ndK&0syx^5aMD43^xohcPda z>X$g$C50BgvxmLpmOb?)x9st6CK^=Mbrj4s1*JBe0D}$8e{Y~X_^IDl7gmIJV_3I= zDwr4=sKR$_aLTyx29PUi{R$L7_Q9+|a0zqPl)QqK5MIdwSCTT-l9d$QC#%a!&R(5=p&YEL|C1mW-9!f&|j(S74n4lxM zyL*}*u|B4!wPElk5s$(2#MMd9koU9mSa1>K<+E@e;{mK);_MK_4DLNvfh9r;d=J4f zeaMasEV+Wb1BO6$;FS@b4N)%lTA$YKk8VFo`?pq-_7D6uO8W=4g-O64sM7OY<^!zN z;2$pYe_9=jkQZnE+H7*CYd_xHfM+;8oi^cU0$ac)5%wBmxKLbUV1wh-y~D=Q%F?po z|8@QI?h(p95i@37I9p20dFK(|G|ffGT!%G!s?(b^ei!c@T1pNf5tEoh2+5#_mzE^{ z@>KCDB*`vl9yT^T^lY@n_86rl2Z=C6O%Jmhe>buHB{!jcYEdTV>x-*u*0Ik3yW66W z&acvExkx}+(E@glR!wKsylI;@46D$8oSEm)shpW}7)><|LF;Xr$pPo|WhnFj)CCW0 zZy`O0K&ci|DC1P<2|rOuWC%rlyi$MPlA*#8Ze@94q5d!mf%&w4jkUMwveX=EcA6Ur ze}@TiQZggoUmyqf{QNb~TCEy_2KVg!(@ysSw-*l=^}%lP!KVLUJN{sE@y36!-#FTV z9by|w_II$hiBSR&#@1vFmfKaV(joT&~Bs z#ti9W|KL6R@TyT(Mo6)Z`pSA8GV^8Qf2hgSJxvs7r60HMBKI$Rqx@T<4&ODdA6;`E zqWO@wu$Vai<`3(zD70}wt>=wgXiOAlPC*7%O9&>smt$99Ce2jF5#2+gu*h!G_(4=J zJaoYQNt%d1{3)r3u!y{p*<~0lI<>J?Jg34d&~`r-tCM;$xla?&Uq+FHXT3xsf5x+Q zc!}!6^X#FSsq|bUFUu=Q6NZgpw3_nz^zu!rifd;Y!Qd=TUOz6^9U#WgZV`AVcm4Mo z6wx1meK0JPEt4BKOXJ@${zV|38!3tcz^UZ$P;&uWGzX0;jj*YC1u!3+>5A*mCl zB#UVONUOk(>EV$fQ+$F$s=ba)|CCNz_|}GHK&-VVN*Lo|JdlFHme79q8CiOMx9`G>Uc~3{zWo{7n4bTG4IB&@YK-TR3u#fW)P@qn9+1e>y?TDd z_3mSUa0gW1{$lrsA6A%)8!lKFcXkESq-gLi2Br0Qv;kM@#g%oy%hXqtN*J_&-xAHz zBXKSXVo6vi&*RtuEEMIdpj5n8v42VT&9V_EB{c8+uN4{$cnG~wDUelogQKQ-w15QR z4H)SJxS7$kH9Nw*WH%s%A^w4|RV2AF+x#%D@ip#FV=L`32%6#UZvKHaAVAM{Ko1=N z|B||C*6ZXQ_DC+@V?)Ef_5&h;-Fiaf#~=bcS?4Rj>?tB$tePk1P850@GBTAZkqYXg ziy;0yf%-_@rp_Zp4~kb;^M4?rb<6b~@xF(=^?u(&*}|A8vcn%zxj5A$qGhIXIbzSN zSfO4zk6H5o0y(%ob{*l%@JNEM@`i>@{Prt#+K4M1VlYI|MFML7@MoG5@URPhrCJZ_ z9D*8RX4M0>thVSMAoM{05Zc_!+pI2H0%s^9NY7h6Gc%{xI> zZq5zf`Z;%baQg*z`!_$Qc6*nj?M;}&S7$8GpSYv9GiAWwZB`T)#`x5H8k=M2CZQKu zHGkm8su`}DU)!d4YJcv-yKvP!yD(R8P5Z4Gzcufd&B>WL)^ze)L+6OOHB22btsD6| z5{)sC*9R}H1Gko0Q2dGGS%CHiDGAg!=t{1SgYK5Z#*aWbf`Prh_B_5qdy;pDVL79b z$s@El1sg|=4sCD4gR4p5UXOcj5O?JhS=zuW{}fe^D1}C!!hf()@#&90J%6&lqeb}F zK+`<%#bT$4Q4|fvFoU2-UR8;qhYjS|XK~Z#80KPGHf9?>-3ZMJUuS+A5Q%i=ORxcQ zXOxL%1Qhu{&+*@XeGf(D`TQ0p+A40I*K4wy(_Jnuvbk1CNh}<~gE&Bpc?x#V-e-WsAIneqR_BBP9 zM`TL34W2Q$Bpef=Qxq0Y;I$bX!*A~uJ`>_CVoTwx7>~OgAw7rwR&4XM4n~Q+8N9?) z$gs>yQQ=dRa|h>MRv<7n{_GCM*jZ5M&xo>d-^tJNPdc7<&Jc+Ot}WjH>q7e!zskSB z69E&q(ce$Uqfz4N;MNYfQ)Nh$e8RNTcodM;q~Cv$Nds^-AO)V-mnbs^VO?pR{(dH* zBNh~0y|18kMw>K>&5Yb+c!9`EU2(-Jfn6xH^(sjXl-gx;%8)aMnKNzD%(;+4r)pd; zS|?ySo%RWV-BLzu=hqHj;MaFmtDT1hI*$gxO4sx;c>Qgc<}(H>Bp53G8R)8RQveO_ zc56}kp9nwLfqrUPM8(zSaaY^xoSXBC*(HA&hEabS;oI??**wi8mq>hQyZKIej8MRh zxeF9RB;fLWSg?QX3?V2aL<^>vn7+enF1(WceOAHGlNwF!EN@%MdI%cdX|gNyZHa(N z>;`toKmgu(T|&3r@afisue&3>&%|bv8mLD?dgOQ`^<>Eplqo!sAT}1IKgFiVxd?ys z9Fv!LH*B?#0NIKe#9|6G34}`~7+YFl6Z8_`-;|Xh)uGbN*$}pz(cqHFa$08&?pAp= z6dX~ucI)sHkg@FC0tg4P|70241x7}lFCYCgr!ZDivrw8?%`iPe(J*0UTdqJ3FWJkZ-GsoBtH2aib7)DFa~aELN0 z^-=aLj>a9vsT#=xMIsEQw3$W38ajqr1&~#*NsP!rV{2&L7f#ISs%c%BGlYNqo|sSY zDO)vHt7dO(KD3a=*4%W>1>U(bKVc6%F|QD-gZD2?@2%N}qw1NtJTupDcX(@lTsHeH z^90_kXJ-GUdC@cnXXeG3**r6cXXdSjkKbsb!<#Qlbm+NjA=6(Tk%|<(o01%;WS1wJ){{7S zNl)_mzQok1}p)5 zmzz5V92h-@g{l6G@X}OS+pCLC>reP(RAgrB+(nnqI|dnl?Kx{=`io`G-N-QYv%RSU zj%Jbh{}cUUbc?V<1j*hTCKHmv?SG7@KnX`HVlLipUe=NJAbw0-+2`F)1*uDwqbP=% zOg}2U(I)4YXFLWJe=pf6zO1OikVQrLqopLm`dMXdE^^9yw^pHyz3UTDm#=}gtl-R_ z))5ea1UEM5Ypg+Ey*praSHX`vm*7;dPZY;o5sxHL*Nshp_cy&s-HjXey~8x{$7~{F zZKY|z<`2L2{QnZYH_eVff2%M1!frl4qrc$ihq)rK{74Hvm-;*g76FWx5j_Sb7c4Ks zWO|DPMI~h;TZ?XLK8sB90%pf0mrgwf77w4@&PT-QtD@H~sis+D-5X=JJ@KlfWBOAj(RHruAFQw*z5fU3Swy-e*Cnie8II{_2-CJ_cTY zwh@1_{dl19C)K65W~*ohH}%N)Nj}~?o8}{(6$n?E!L3Arsqsd?z94cV#XA2 zH$d|)V?G&(eOaI1Whf~2MZ`oq_P%X@gqgAz!BNj;UYe<>B-^u%|l=WRmkP!r!_OeZA16Az@y#CJ2NUE|17*F+V#n$TK(vF3Gv zB_ngnsbl@g2dAhdayx5p>i*a(aesvK9NuWX)ngbe`;ONtv>3O>go8jCGn2~E zW5rk4>WU0it}U9|cgvyCC|fB1IC?H~dYCjL=}hKap35hjE2j6LF7kuw_rL68x>OoQ3}5_KOkVN=#^H@ zM_g)k;3qN(u#GY+AXP%DQ5<;_Kf3Eo+Jh`rIttyA?4t2K%Cujz!?#}kJM#bd8r|*X z`OxJ-#77b*>CNl3H={@=Xx23}sLF-1L^gDp%V!Gq&Om+KzDM)}~lQh%H6<PimU#AOEOrr0=&Hn#@P^Chl^@EF^6|QoL6`vdD4r}mts7Z3@|p%P}i@M{e!oc z<*Dn`fm|f72>fK8uTJvn;T3-EbQiwbJ6PkBHP0QUI^2YOcRx+u8Zn6xcD^Kju-|Yt z6|8=1`nAiug9I;hPSFJ)zSj;uMI0qIwUU-$Qw3*i`%iS70ZgCgJb(n{xPL9D!CUy=257XQ@{B;e;Xeg!y#%o+G-fLy2z`~g-d&@=f1C_VfKNSB*(4HPH-vxeu3 z&4rGC-22Yn`%k=6za)|(6s`fr2g;kWY_ZYejWyBLPH3=xMdi?wt;}>oEoC1|YocYj z+?)j?z>Fp#5OX*SFsI;;Anm)N&U{d8aH?*R-hn7*6 z>NaOFqX=6 zM%IOMfM>0EnA2O*m6D)Xn8eEi9DyZ@Yj>=9fzOgaDv$KEJ68A~I~(Vnpph&kq>-h6 z^9w&Xg5Jv6lI<&8E%96Fm$C@0wmW3Y7DfpU)bwW8gqM}dS(GEsAK#b#LK~v5QeaIx)BbmgG zca(Gx@WT)T>e4O09Ke7R(jg;o;BGg6QJ-4$tCs1W0AI=cJ~r>iW~XhibZ^?`$FbQ& z)Z|;!d}}V>n$4#9_00VA(i}F;aZmBVI*Je0nHp(_JeY2(Y)0{BS>Rgtr1l6i)5QRh z19CdrS2TW-QBXXnB3sx9jq{M<7t%%bcXk+qRHNB?oRe@I(@%fqwq zXfxYdH1%(<1BaM&UIf^6;zn9f*LgRrka9>w9OO+D$>J176cuvc1Ev(#0QZRgBWGZ1 z%&Oc1*JqODz`>#@1s4!P?IT=nUP*+vG`)OIMBxo&K|{=o%J~z$D{*rlBP1-G2&2as zbDj!cFr*$OIAXYJyb)nq6pQwMp$w~%=8oczx(b!zm}=VEe4XRiqtoMbe8p3awbY0} zz16|&ug&_&bSc5TPKvOSCQ(^nDS=;B^+U9@s{5qC<=B{6<5&_<;tAA8bC^;op^D>y z0t>d7ov0gA6~=ZyRV$-dqN;CY@rT-U|E{RDtXn2fQ0yUb$Wb%}*Xo3S00`Jaz#2fb zZaeKCvTfv(29j*Z1*rbckXOrI1FUJ_FNZOIF>u43M>45 z?}hRDDON*qM|UOzeSWNeCIfj+$4YGvjqLw3&4EAV*KCbHd|KyFjaAV|lB`kPnHx2& z^0@B*kt- zR|C#18d#CV>2-&%`alr_YHKlYuNb+9d4HKk?tSfeyn^%|iS_BW8!dIL%zrX&uMpO1 zo4a>D7++p(g7!{kQImHXhzAwc?a;OBE*8I z*@FByWr=gCoZ{Kw@|tmdc20cKBf+(bxiEF6;ehcZk$63h64Xi4kjf;C4qtnKt#Wj) zJcCq+S*;?%6N2e>R0s0Jod?T*k4jz>>SVPha2q~tJ6zgy7 z7P^Dgq&y}0PVFkQbq+*8ciPo)wW?Tl#l)bli5*lG)Wwfl(}KFfp7#RRWzo!4#f%2y z({o!0M`Z_Kj=c^J7QIUWNJJO?NZazyeN5hTsOd~can|o527wBFbc*ct6fvK|+^BQs zMj+;YqHb4h>ldiY{D=t`gE0&7?BGd=z(c|&Mby*C`28*9@lefSS}tw*Qj(Kl%NS}@ zvV9xsZ*`6?SEAy@lKDfv=0o0+=9KtCIPPC|&=d;P6(G{vgidjaxa2vobP=Y2GluG< zb&9AQ+Om$YGR$HZg6-UmPr|fyGeAyOw;6PQqs?H*5T}T_GPR6|5=c0fvk?^-f!qnT zL+uA7{&Ch$T}{wd#^}UYZB6b zMuZOaj%XzmOD;4St$wzm>Gk41aNWUkALP9Z%G^Oo(jka);y2&K!8>0zN`h+nz|A(I z{@K~4YpcR?5cJ?$5L_9{>S@`K<76X1ZnuKcbDmzD6I+2}FlEEIBsgIKEtN{j**-7X zlu$s>iDG^^_q!i=pBx!O)AA{HZp7@)y$N2%~p@Jt8k2p!Xbw+#Ij?BTAAshZe; z2Ola&RqUY9g#bUq|4xiQ-g^1+r`_WhPj)xAu#_^(f-+timdL2ckob`3AzdSX=&pg! z>{sQfkx*S&X6$iB-Gr?vwbtoKM{$>SrN^o8CmsYQ1|Bm&!j2vaBB#+#UPQ*t7Fc)5ylF7}LL>32tT8F8jr5f)R?c7QCK&8<{09|ag zZQ4oWXU15<>@MwFUhjc@p!c9laAXgmcla4%>=M?R_=cv=S2h=5iN}_5KIYo)ehWM`_5ezId$z$#ck_vHqnzuvPd4u z{K6*sZc59jZsK7)U1i$M82A~c#jl0@*Q(*Qv-O{sbxsB%PKS#K-1;x1#B@kmm2T{- zlbzVVEpuVFj~+%tSI6+SmmoA^c*jfNQSREk`dwi@#V@;;)?!Mu9DYz<=6`z1eC6?n z<#l}TX+~4hmi||lQ?2#bJwV=tj`(%{acZu+=4ID>7@OgV0ay6gHP2e+)z~~6 zo9DAZS>{W)>kOw!eAZUeYxY6ezhJJR@qwTCvoU=8Xy_xKv}yZiYvm!3}s z8b=GcU7v;0p5v#J`OvTsqKzg(qSFX)bV5j^dP0{b$xN;+R5~NcCk7_!j8+3hfkb~E zVF)-3{(s42?tN1cq9Hf5CUpPNt(X5#1|R|6mmp9ECk5PCS-umOOi%_P7vNy?;Qab> zF!C8?#+;m|nlnF!)r+!FZtqBy;jm3>xq9M|;^hq}% zju%E9Q)G2xLg@ldCAtQyr}sR=pTMTA#+esj>&q9QU%JuMZ;j@`ytUB-C}4s3gtb`= zma_LTL9G$W0+eKL*e4-Ak2P4tC|U22WD4uOFbT-xv`>WLS-~pmXM32>^?#Y!QVorx z7fSpl4m^cd{j%^BhlC;M;E`*4=uza2v~5jEowznM8k%v6IZ4h5C~Z*`(+9d#Ul|os z@{wW>OG5^5TUP?zR-!0Y1hMkjk^&QaG zFgtMsotn`1mMiol#AYN*2!HSSa1yNg;h$%_w213Sfhin4#BR~4dI)qeYn&-r#M+mk zZ+^S4(JiFn-iv$pZ%23d)499X{LN2NJS#2pabqo3#_PM1X;UDTUcH~6dlB$s@(LBZ z4n3FDjhaJ8u3<+jZ_mR}c|~WefDOYqQ1x^rc!F1U$qp#$lB{7$7Jmb_qW6@m9=+44 z_)LPPm%&^5c5VGu-NFcFP5Tj_2ZRQ01q!?N7`_*azT*{5#Pm$l@2|4qNY{2vcX6!- zOuozcs1s-fu_Qgaf7>EO1O93A&zOID{L=)Ls@V?R6WYAkfA9edWF8sGLtHtUQ=mEN zs8~7gHj3bGU&*3}6@Tp6-ly|V6?@hvo(OUf>na#(h@)N z`5{%m4pX&nH-+W;n11^#RT;lZi+Yw`K2I-Op(5&e|BMtoB7dv6(Z|$1?hmedqGc7? zN2X2?3nQU08bm}nNCp9fQLLKYs_C}O{Zlg{S0>x<%&?^ zf{1>5asM{nQ2N}D$uHBJ*oVpG`(e8R%XUS~HLV*YoPPqx9qw+?TPv&IeB+KSM{7s| zrr-Rwlh?q_tynKNHB=mm4?D{mHWaOC@;(CW13jKq?I23l)Ez{(kdE6eXq60xuNZ+s z1$6{{wfW~rs3E>mcnI-%V1huMJ(}y9qVB+GHX|OMmQxir25RwT1%~XV(7w2Y6)Jp>1u5 z-=|E-4=PpIV<(LG`u^+E_g`o4JCQ<&Am*{7qHWa;&Xh6&!rT8&EZ5D`4r1*#p|dJ-|_QJ*2ikIS~+_vsn!=7V`{fS`=#dfvNi9@ZWK;hRdL zyjpxfWsyHP0Gj#Xqt@v0F8&ab*>&G>WACViTto*W`2kE8S75nDNy#wB_yXQvtr2Kl z_!b(PK;V&ofpVtSzlW3cZo>m-?}3m#9H^VICgcV%*n96}FWGMVu)VP%T5Puv7=KwR zYv^XaJ>e~%k!MHx)|#s{d1xH{t4D_&C+#<7<*vvU2jOQ&WEV)y1vvuJTdsJGlb^vM zF4Mni@-1vnHyPNl%_vt9)gho2{`g}(M?z8W2gyzs1iYY;fq)mJJqUP^Ky6Xj%Bzcl zpUwb`yw_+0vazXWF3PN$dX+ecjeoIe5(E)WGfm8JOsNIl`Br}6o@? z;C!0*8WH>n!e87Ch!n`~;3!c0jr~#`RGqsi*r=V#X-w;HqV`}%g0+j`pmj2w?*Yv7 zG54llc7J-dwYT-^<>$}-VSf|wp6NqnnKzVsmR9TY?ZqCD0wM800^&6!GhFNZ`FnH3 zgcX7JD;C8)pFtH}e#2sR*oh9)^xkD-zFS{i0AeYc%73xh&JXbm_HVS0|6<$i$+q3Z zw*7^KmyY3#gxg4{`?s4c0`UV$OX4DdN}5$Nz(n!iU-IeogzquLd4B;ISldgJLf*e{ zuC=2%7M)AloNr9EfYsFow}e362D5~y-v+0IR31&Y33KtXaxPNZmbqx>p2*uW7a_-U zE@m?IuI{1RnM_RqEp*|oJuB5rdV5=LLm>IbIb<}6%4d+v`B8d;R|q;k`8m}w`2j|! zlmF6Aeh8b_uZAaMr$ zJ#<|R7xAW1D7oz2rd=sY1Ni}nJ87Jto}QM)3Tn^-a%*0KJT5f99iz}n5{fgM~~B74!!iU zn<~2RrwaCwMSt4#DJ4=B`XIgBPSxONL8DGJ`1?WZvl?`%1%zqnlNSMIyr8h9&=aR} zGgM#y0XdL%sEwokQdk1UUtj^eTMy508J^)qV6^Teh^1bpmfbVi7AI|?JgTZ=6<9I& zuMzfbgk__atzs>hYwFm7vsB@TzOn>k2mXgb!T#X^JbzoS!xB9%Y)0zLf@89tU)zm` zU|9O>QTy@u5wJ+tYRG6MOJ3uWc{~{c>eS#5PSegc!5;eM91d`(hXjWjLIvzk=WQro z%Sw0MDZIiSa3M7W1pp#kpnQD<8cyVt9uq-@ZS)-vTP*^uHV)kuY5h4X50qRMWk3qI@)wY*~wwYYcZOhE0GU;;`}F5yOD zZ9wXlO-3geZ3vaVLL8cdyePzgS@{0BK0q1gn14VB>VtJ=QF6?72eZ|sD0I37k8{1^ zZ&`Iibc1soLCACKNSlnA0WgH<0nf+9Cx~c5dfYDlK|zGqssOz#b2FRoY%sI7fOe+O z=#jACg3i(&fwxBMLSk$b4Wt6(Q}HU*`GE_*z2e;G(=tOWR^%t|U>EN0X!Co1U_Qd0 zXMc-2chHohb3dvF2j$R|w=nI2x1pYOU`YJ#kW8R+QV+uemnz}-BZl+ez$tq&yoBC( zmm3WsbX)|K9n+QNKH+FD+wVUN>o!ulj#AyvIn^*b99pMfuH9l)({v)f;9tSMM&c)5Xw!TwC%DYXC{*E`J|JZ6EbFEvzm}G6T?-^m4AsO zz`?Krq;XG)Gs!p!9q8eusWT5Xb!NLHb*5`&S?bJ9J$bffj93H!!{m&Xtt_LZX_X)d z(MA%7ExAB_TY2Gi7s%;?g%D&>0MFE+fK!{qP3Urt`Efc^nPzxGa5EZR1~54b5RpoG zWx>h}#4l}RQp7}1)#(lUVo-`N#eZ-ujahX#?fR zl%!t;Z_dPreo@3grPI?%{_R|n&R81!D(yN1o<#PUjkPTzziKm)1SxO9Aa5mOldZyh zGGnRCWC@Luj)~-*aw7$xkl6AYIf+h5EE&Z%C8yKBluZ)AabrT@07i;Z$A8$xmrl$t zDKb$CF6(^fQPhO|lF<522uXGUg|-urJd;gzyd@jaC``08fLQ=qTrZccfP4ehp6_d* z^WCH82gyPDo|W<} z1ymO|nzv}LJO8|V>m}v0)!W!*$~sY7#vI)b0y#gjSo?5tVsP(bgTE-4JO7@SjqgpX z+4xqR^Y+K)BeJ-@HRq@1)0sItGcVqnf5WPNW_Hia?`LN7tvP&a-hZoe-uV@nfW^J| z1a;4;;D8OrSHtHJ4c_1$4ih-j_ealLz3#;|m@F@>bkdjK2R76Y>(x8Yu~Akd^9s-t zf>?=om_Gr!4rfY26pYDwSraRmTg7qewsmoN-Xd_R+M}C|)n(v7A?Y-0X+Uq)r=ChI zWzDj!%-5_9(s^!GZgAz-a+Z`R<+!#tS#4KY`ocDfhV!q#hj3Z}N}+M@rxiD8E?Ky6{W zWM;81246LUy<{hPw8uv*?os(5!8Kv>AT6VH7Z++5fF^qZf7&jBvITi%uLqs+Ifo6~p000;1@6|qBPNbCio6)TrU*@YpL7e_ zP2*ks!fx_{^@5B-&&VHCzq-#5mhM@vwf7t=52~8{{(o+K=XU^5b}se^dj)et)lk5A zaalPMaLffYFl2nuKxis@gv#0OhErM?2zYjdfrye_!_PAs2oUxq15qSq^!KU+U{6%z z05Wlxifmfua4xVe9nd2B@Gfn8+qHeHZ3kB62;C1fX5DAu-Ha}Wd+D|1O+9##be0gH zwuG_RY=2zC9pVsw`!E+Ke!;Q*FY-=nsrL^?Z!eikd$sjF!Ccy{sfPH`jdh3G)uq4f z^Xa>k{E3QN7-*RX*|vn_t*&p2CmHIvjNPofXXQRPoV;4Q-KVy97k?Hu%|5lfyZEzk zXg*YUmr;$&_r%96R&ZPIuNEA@P{yOz3s5-1)Y)1IIX^#1G-xeC)WHeMoP5+;~ zH|f*d3pw>3AI%xHw_+jZ3C*w>NKb4Y{l+*H#@CtMrR64`u7uaXohaoN%i5uci;CQ&7 zauS@05ghM@#awUY(#LVI*t?znz4$Th<<$MuXPMG}yyd^Q@jpJ+{moYw{y8z%hzAp{ zpOi0U@v;7wWn%^}f9-gZeN(Ry%SNaw3s(e5>=uLMDv_9}Prt6-y!qp}_S$*=>q)h6 zp8s}3(*1en{OUYgc=NJ_AB(`}#pbh!=>oE&e^5+O|9~m#A8il=Qm>i-@as*I)0KsAL9R3y$ii{pAjn!rLqdmk?zJ z8y0oH2YamLr%%L5EsiA|OE}{~Mf1$NmqBF)Cn>_EE94)Up@mx)F`-3r4jZ8L_5B}8 zP#{Y1rKTszSI?6Q1;D(G>a3WTk!1!dfAKr_d-7w>X98&;28?oVCRyZ*EfUWgcD50c zivAw&(^LQVdhKoOW1r57U;D(~*^b`yC8|BxG;Q0-p`+6LP5$cyDrZx$U6x4fhU-qS zd~Xz%B;D?R>d%|@Tcl#QrF7T!yQ_a~zvjia{ERAkG&v?j z+&iz#=slYs`K!gHeN^Lj?RP%)vF5`T`xoCQz>RNA71UNrZuT@Fd6S@Ie+fypPh-FQ zLSq@Sw1n)(B9*svF5!DWNgK*Wt0p4r`%UD()hC|3Y#kF%r-J=dK&QInn5H(;av<0> ztN_sL3jNi{PRbwu)tg;RV7FeN=UQBWw&)nOXg?yf2w5V6QxP{uSSbU*yPp=X7;Bl6 zd!^7J8e;CaJU3J^_c@2Pe_s0koVSGqGu$(sw~m~R)S0ffUjzzXeD~`iF*+{*5p~&zx=X%P;f{#(<6T_x6`x zzVQchnu737$Z8}|=$z#1z~`Ho=g={~9TzZ++t|;=6Q=Jiv_mq4-?o33gf+YQZgHC5 zvM=KwZ$(M&ner`Pe{cVY@E>#X%1e5L=PT8P>hedz)+o3{)wcaVRMjQ7lHz8$^RK;)Qm0V#WF{;9~)_CfBVtoKv#)5`@GX-4|l9xnwhUxw=zMG!zF z34eE!zFOi}9I2#MPT1~!IUf17bj27HpPG7!UzhOz$8?UI-XYhHnIhObVwY6$8l$qPR9s>{6C`Mn2 zu=M(_(C{6~zU5sWb0*m~sJalzt+irT`;ae&zB5)|f3f%0+*`wV*Z%zBIZ&T9dtv@H zqcee#lfibMT^ngviLmCa+vCcc{@aBzC%(M>oh*ghPsbb$>?QY8*a#%$rJi5LNXYN{ zO>eH>BR7=S>hn(&wDq{LO%esm8I?&CoqX-H2AJhukG^`F;@jIiH4<}gj=w>1Bk4CV zH|xiy=8p>1CYQY9L6upO~?0@lQ*X=6Z}Q&-=-@y~9> zS+cb^ZxzS>DiVS|nzmcI`?lzaCg)DsxMpJT^5CzN@4QM0liyn((H(R|#MhUT-+w3U zn)p|dME)Xj`zuk;@q>e~kO79u6Ou7`;g64_e@`6B%ZX|jnUU-yxP_lyL=o@5BcH_) z0Y#CTfI9MJ)e*HFCXnk_uRSmHn0m262$(aw^rZCMyyLd!Qm4A5T*|t#;RU46O2CNkXR-DOM$%K~8GOQR-ur|{ zNF~|xV1>agsj+i7>BN0Mq!8YBfLwpp@G)&|X8N0&=i(I|k^}5)Y^W0WGHU)=00C;8_@D7+8<#nwmn=P>*lU8fBr}?yp4R{G0N+Me=$z{k)tW9pmW3Cxa;JRb4pN%{>SrfcWW|aN1 z>;fHa>X*DVU;BQjy4Q=j5&L&WtoIK#n~XgRn%k1a{r^*Jd+cA0Z4aEwf3HsFCHUO! zS9M58B`~;OCFIZvMdZA~aq0jeAM0L32u70tpZlJg?a|M+tmX_I!;5ssc*&ufh0T5) z5Gwc1%NN1^s9|M3%>6IJxdgf#ja5sIv=KKu_p_7GlbAfwd4@YrIo^7TYWR?b9TCuf z?{HHSF0CUey_jg;6bZ*Yf2@;`SZZ#Dk3RK|DAu10p44E@i13qNmmG`c6d0X78}dL5 zy1#M+VJ@&nS^sZpd?Ru6#5VXn<2>3ty@%{DKk{Pg)F$GzP50;u?+Bmdarb_AgozH~ z+19nwb0DbWB7EY{b1@#8zR7v2o|`O*K}$uTD&vWFh;;BcSYhsOe}_=8w|tbC#&rHV z%c+6);6v|j#fdQvB&lU#j~A1U^dYid;*N8yD+ua%>r`HvJ>z5pHSF74PIC3XC6(}s ztfK5ILy95n_Iw68s}Ukwm`sM`{(;7PU$qXGLg}Ca>m*%oQk&&c*x!6D(8m8N48Y69 z3V&9+2FG%snLVt*-0miNkB*sY7nMNw|>{e-IwVV2=@)8(z{q=;5D@ zt~+nrj>9Yby-sb!8))g(OeN1&WRUIzJdo39bP=S$z7B@%aU2Nx3nV~C?0eBMoYCS) zHGUak(qi2#rfk&}Zls#)|DH~e5usJfg{|lN$ce#=V+h*rGeL=@mj=&@G*;w5z1b9n z!#NCo)S5@Nf4%`nuYhjwFf4r@o|7*D%A5RIRVHWqDdJzHkjb_K%X9?H_}%p5>R4Pb zpMO1ox;uxz5GCiF{^C4Q{+gGo*T=se>K4v{HR>l1%yjg-=+J=^X0X5duVI7rTbkFF zD7=~ni`J{ob(JIUd>-taK%?($9`xpCVJJ;`^H}e~f5gvt$RqzMMbtms+tPD;O_>Mb zp`Il5QbN5I&rwpfzjct6$&8Q#`XV~*&Lj=w>m(8&r9qOyf?JPD>YH3kiG&jPu9ajj z#bJviAbDRNLBnJ0Q8b%<6OshHLINJG^^y+5JY8`BFZ|v)hiuC*2z~O0F>{7tvn_TH zV^_StfA1dNI^r1w z*E>H(?VdU0>=^>cX#Z|v+P^8&EHse1%_f^{%O=aGlG!hXV(y$$*?tg6C~VqiBPR1q zRqH1H&R-md({N<+|Ht`c)T5Ndw&N{{ZIfR`fBmpRnXvkapM3V}NS~2`vhGL#>PU@x zQ#M7f(HoM`q;g!1j+*Fol!98P#+)Ow%2BF+BPp5>`0)Llt?o>bKKkFJPwRuTtrh*p zQhz&$sz@nFRsH})Mo|Ka9FxtHFl;tX%mz3lzECe&y(qeZS_VXSGTk17=V#7>wP}{Y zf2W<`B`IMS7$9s8nQt&q*<$KZD3i=XaKFWO^U11JsDsM!YK;g}js$=bA)`6#hzL&7+KM#~P7|@rQ{FcDeCw73acuZ0~9N5+lf8@(( ziOpbCBnncJ_pEkHzTMe*%$SzA$j&43UkuuQFiX`2RsY)$M;$!Nx;bw&h%U zb!u10X&WMBasG(W+NmpHvT~bnD&v~cQl7K!0TJt*x*jYE*@q|0IPiFmJVg`jYwyf2Q(4T?zxW z)~{`8zWKWP^X!Y9_{^DZ;k5mqmEi$Q+&Us175%+&S?8ba$}4%HU}&`?g?0Gc4c>7! z2mWJS%p#0#cH=r*2|)|#V1XU9iRv})Js?pb?^2}6oD6I?su3W{J?X_zNK4>1)H=1| z_CgmgNO>p0&;?mRUdgopNkF#0`+xgahAB%Tw*9Il!j{Tgp{G5O@5`a?_XUU~fU({3 z#Cyw9f9_b@vF?^x>2#sZk{|XwA~i$fy@X}nxZyrtxR>qKbml3IzQxDw&7Y|;SMUCS z?x{D!pi*yk+i1sU*H>nP8O2DQCMRuQVZ?8?Io}`sTWU!eYbnA)rz1OAOdh7EjIE3e#YE9_LDrW8Ec{+U$b~U`E|CG)U=v4E&2~f z@{mYzGoN~0Hkg-609bDW0hDsufStgq?!(<7c1Ri7etbW+FY~gg&9MW*5_1Zo zl7H8!pl1@2!x2AeVn2%#3VM6o-vrdHQyd`^(N|vi1pig1ReqyYq-a~HdtB>#Y7xv^ zYlAV=Bmt0P4v=|)O_n=owz{3ypE_`2?L-*0R4`G?*qmE#gpoRS!bFo9tT$!Vcp_H< zn32fzz2+~!m@a;Yzu8`XZ@(gA%ydoCn18wLB{&4O*z6OVwf@P|3G!~5I@CaRk_l(C zJ1H*+AJ|CT`8!x{qPg^u8sW8-7C#=%mHBa)61HaOP}0(&infSnHp95oDCD7ymM3pc zhPNd-I^v1-_`H9}zOz;vRTs%4j`8Q%My0%O%V4EEWrEB2Cb+z0i{y;$O`F$_(tm#O zxZ)E=zwx||o$Oxn^LLfQyXCZTGq2uU3ghW4iU`>X^Up7}yo$3L}1(OSl5QAbai0qIoM_|sd2d*Idb1Z=B%~WYwNu5mQ$wNLx1!=F>dXu{HKirdS)0fomo0&(OX-}FSDhTpIH&7 zl;4KQ4Qz`ltL^8YT@o?O+oL*K{o!>W6LJoq!5&0=0OzsfZ5NUc6E|sW8jjilwL_Cbf0T+S9eT%^KA1Gl*!1(u()z?A3 zW5QSW*cX;7IoKOC>1)jJDS!Ikv+)Zpv$N~@=0t}joCH_`I7G?EP2+tKGFGkEt^H7# zp0&#OTZ=K9on_s8o4sK46k!^{q%OhbKju5ATd(LAoZ840Wu9k&Tr+*Daf`9%G4=#- z!`?K*`)nxhmSK^&vvE&?3Ot&zSw$}J`15B{Mn$4{wg#W%`zoBa%YTTvq->G|yAvI$ ze=6=RfrQ~B&%qd>9fEVRL(MO?>1%tJ4QhU|OI5svS`FK?*lS!P$t&-HWa~TlE`G;4 z)-Z2<(Fs{2i*>tEj^($~kUwaD3BB(L7jXviaq_7pP8Pu#{eyS_3cGrrHy`!_;saDQWud({eCIz7dDWy-;0b@M@=&E!6CnF~I>4<0XYA8dRcOh0c2 zPb#PfT}Q28SCwF{dbQ?MR1_1k_Q(EgjXYMau+}JF6}JuxW)I5xD!WjAPYH(Qa4p16 zg%BaJBSl+#Tf^M>RZO$HRrx0zN$ybs4A1mny*eA_4sBj8!+*p@s~0{%T8v%1tYp?r>%|sFg)i}2`laGkiT7bPMVN9~FxV2Iy9lvS8ZR#CL>YQ|s zWpm?feeOA)!5_k9|0HLy|3@Z?V1Rb3CpX(YImY~BGutvX47D3m6Xh z|B<=bNX=cAtKJwV35F2Ly@KnVZ^h(*t7+IM&Fd5erTa2 z#0}_fNZ)YVbZ7F?jb5$B0aJ9 z{`&sF(}z?~uM7g}NKc5FzSO;wf@+1e@u$gam2f%X2sW<Wgtb7n8mbO-&`(&z zSbr@GXTm}B3szc0ua{bP-=PRLiuRi#2L$@q58gKz#BZAZL=)3!1{ZRqkl-v zfxd?N$e7Vbt{Gjv@r2qMsB^FEJ&p+MXwq_w#Phrv-AhD3SH~9ro;5tojI2Y#|M$Ff z#!PP*lNr5P*s+;J!0o7Fmv*6`(@t5+}_wa_3Q91Q&q`4i|G%~)T5%~R~Cf+4F?lc zZq(#^TT)w|u%ER~RbaNG-;wtoJT5_`jfs&qd^;vbtZkant$B|$g-vr8;C7BN5JMIa zeaT@6KM)1048b}IRthayoYKa*Bg4kra~N!ZQRpBB(nT>WiXGKA>Pb+ygnzTjQBYni ztcvqfQLgHCI1W|}y{}YI>%$_lXhepS$UxF=B8htBj_T!&$R+0eW@K?6dFVw(_mR7H zH=0~em+od!`{__s^$tf z1cF)tO5hp@1+D>?XRI{00H4z#kaVs9s&fT=1Dyfvz%`H$T(b;;>pOd_ApGzvVZ+^* z!zQcr>Q{o_us6J<&W*5(VbeonK_NW8!5bL6ofBmi!OVY_sk*l$~M{B!ylNvAVxtCuW+1~viomt%njXB(SW zd5OV|u=!N7YNhfB(fOQ)5ojEILfMpdeV65d27&`@x6YSpf(A??J=gB&24En$c-0yt zZ~8uG;-Ya?_QGI?=eZMqGH7D#ZatUSf(A?;nF0aSrT0SMeJxJmp;cM`9?I1PgkEI< zsp0!{T-TREg9gWc8-rMgo+~L}GHPJn)@3?86OeRfL#Fwr8quaBL?sKi?}zuD!}CJ*kXXSjY~fZD1U1H9^`^Tr$EV1 z@v(~I?y(vy4-MBYtr24#Q``UwXe55~4bhZ$uTMa|*}gu1(xnf9@2regGyOZ;7H94q zX=u_~O#8*uY5fCVT#zu?c6;@C=FWGlKP~W{U3?2pz3Bb|3j{1%0eymNXe|*>#DtT# z7aUxAQSdKZ>u?(CdOh_~*Z%T_rhLNc@l{M-vdu9CFxkXSJf?M0R> zd7oo{w-hI0h$^5-i#QZ3oji(}G3Gf&?|0>hS^KKlV%|4ACrw~fuRibiQj{_;I|#ID z-h+kcP=_7w6Y(HxB(+Zr{dU&IM6jq(3KO`6*8xwjTAakC;KT+9aQ}`O75UyXx?RINcn4GkK^>~t`_l(Q9(4~dv5&E;dipJ9zpLMcW?O*imsOJ$@fp_ar1*)NO5&4x^Cr(6U}PjGWveM%BPbfIET zcGN9?-BBmmQ-2(z4vX^X2LhEp^x!6@Sgi_43Ju7OP809*|H_~u!+lPDZVVUqh*|J|W;xrlRZy!b z5u{R;*Ty#lq`a|H1;IMQO;t=)m0qMClke$=q&ha39|qdfv`(a;T_9^?eMaKl7^(=p z{z&np1(#tVa&TD24f}X#UYt}ysi2O@HAmcsDg4zq$#TZu+>u}lmgQf*P<43tC}LEqnoyj0E$ zyZbGP*^o9ph1=Q-g4;6K?=xmvU9888xl(G{wo)EE@#9y`vTrzl!nQef{=8Nx=Vxr7&rGLM`r9DU4% zMB9OcSw#(NT)KfE7%2#5L^*YenWuc|;X4w)jR*-1>A5A}nW-mM= z{f=q>a#_OslO+|HNoITue7>fS5}9JnYywz?7<(pE_7>8 zzhQU%p}N(DeYUB9!Lv5xSm>eJz?7YQ2&NJ)g2{rzU}oVUn55VWW+f(qd53qw#-m`* zm%;Bgg6G{Xf;~S3Gbu;Gr+3=#YA?@%-(C1gnUe3=4<1l|wNswdOQHoYZ7!A|T&Pdb zb0AfC6xj-88VH?I$p*6XeeZ(DHD9pfuJ2U9=vXS{c@)<3NcjBK^L#4V5wG2k%8uhu z^&&+MF>)|NyFq2j%AtkRO*|L^6E*#%USnQxr$)W}P0-@m? z!N@{6_+h1gK`xc4wOAyV23` zw??=l6ZJR19ffL!RbjPSpBsf~C zQVe^{PbE8x1;9JHLG))ENUg7->Go&`5`|28BUK20TT!*h{0)ICCbB==LesiP`wej% zi{qEGH z;*hg{e*EbxMnpdrEi&h%Fr9>wsU8oTDmb~;B;hY|LrI)?BwdbNcOvyk zWLb@zb|RgsjXmz!*yCO>_SmUe;RgZN34Jg>={#7#mhxVqSYE#D-3mpv&c%x2yLTKj zKuy#*Ljm}PucG<-HcdpW4J0?rbS&zpsKZ--T^U0fIB|ZC_sMfYSOrym)vFjJO!C|8 zp`*`wbE06qBb=P4`V^;H8DUn+RfC(l5Q%6To`r1oa!AN+9Fp+njc*=POB1j*)sKfg z$cEQ>IK_fcOG&UmHqtX7vA|Y*c>YDH@Xd?VmewzNC+D?}|0&PDP5+?@9y|PJUxZXs6Ymmk2};LmWt}oP~Ve!v(PSB zlBfKlqGMa>5Wt*<4u@`OO2tNhexhipUIxlf9-QRt&Cr0m6ia&%`R9NA;g4`K8heio4<4(n%4bOcnDNlSZFmTc&n0S$c`t)9(yW#1)m|Wd=xp!Ha3= zL;6gC$cq?zA^c2p*BuX~f*p@^H9NvAsBn_1GKo44*efv%x$6Y{LL?EX;;+}#D}+9OD#^t>r^cD8 z?rNn{KQ3|cL?W%n`qfEC4Ch*HU@Tayw@~m`uNF4`n-(h6)XP^V6BoPM{cL{P#lGPD z{J3kNBRQr0$->jK+3D0vV{;0?(zlKKK=~+1yj{$ANHrF)beFsuiz?=Lk1=pw7G?Kp%zr@DMaXA z-UMv`-FV$v+Jl` zQOV_CTZE>-G5)^T@jOwrVhohklZ|cd2&C74%5yks8yP@Z9YY*dXjJI7?eY6u^?Pzo zK%OIy!Ad(skME-Uj8h(m2(b(a;>)2n9anu8DETx*5{EZw2&NTlX2->@k=y?=iQu8N z5wb0ZNh?aG)H@M>`EW}pvF8zGjhuqvq){Ihl-ME#P73TeKvSIehMdIXSw;-kAc3>` zwDC@+*Es%5xuedPQcgw;j_0k26St<6MV;xHA^SA+K$-exs+M7Pxbf7~INZ2jOj*zT zmxc3Cf2HkyMGO{4|G0PVs6H>@EMm_+>Rm+CVb3>2ck=FksvOaauPRo4Y0M@=pee;N z2YV6B+4)k^Ajwg!91&)yzxh~=BzTS7W&z?+u7|;d6hM`roQX%|Xe;BEI=VZMOQ}F3 zrNm6tqoZ%{Pr&&pk04qz==WAi`WN0Mq$%9DGhU=NY%O(H4@ z`x48=(N#8oLXMk-oO7LqB!x2;ab`ue+ z2+VjiJ-SExo|shftM+(tl!QiO>QkZu8?PzQzkMIMzR4dgV5sW624&7YqMiaZ;AfAM zd#UrT4t$s$oxYDSKp9a^JVyn|Cs&i~FU^B?ULBc#c=UK6H}sT`dfmuP`<_xnVx&$C z>z$)(I_fRSBjJ8(-0U7bv?4j>Inc#RiSs1~%ZEhjfX8|i{>@QYBHq*j`zG+C6Eb1D zb*w>0wPD0NaO+$j5XZ?{9J@Y)s4J7-(Zx8D*RcrgmRb%u!bTYOhDWnlzz*Hx z>GH{tx6H+{I(_m;R_R^8PCWosfaGI?#LVCJBbn9Y&(q$QKU3!?vwAtZZY2||*6B&H zo-B51qr+JvdAL_EABsEa?@&Dy|Ys7 zZYQ0~-pOUPQtKAu*;T!A5+yp~p+>*;@_wh4>`t4jlgDbgHI(n`F=QW_7sFM(+?upb zzpSp#Qqk0T?4dmxGLG|3Zgd!HjB?#pa`@2b(7*iaom??)#*`h_PEX|du-Q9_%J^@8 zD<|D*ygN*R!_|0c(To>osYGqq9A~GE_&z5J?LVeYyQ*z!;I-*p7G{^J(+N(F!&oXA z>$cVWZab|?b|`bJSFV`na3-*5C$q!m#jToCHGVj6Ch4bq(C67+y^@<4n0aH&=rPwC zd%&-pI7lTAd%%3!=$&*0KFy0krxCAz3VhsgcdC_J8Iu}U>hwz|mFz}a7hitMtPb~D zd(B1F%ryi2YpX+9OZC0x>hLOG%q9xMY$8)gEv~+Ja4R)N%VBfxs?!{mmaXz|RV&|i zs^bCQI(d|}t(Ma=$62+~>@@aL9oC9Ar2%t#03Q~qix%sen>I$xS?Yqd9q0Ccs+F`_ z&r}i|*~_t(=~yc%@01p`WJ%+O0}q8);kL=cMJkzCq)yW(#nnl=xJq?y2Z=(ybTw0b zCtB&!dH1GNy6u#riF|R8xGtR!6STc4_D;?U(S!4RDVOGNA$5M3Or0mL%lVT`zIbq+ zIXxN5y3{JEPOZ{?WbSM5@By5EnKml22TB98Mul3rxUmi%e&5=Dz%PEl-r5cyH5NUdFJ`|D zQVG?jTOA$7`78TK;V{plb>J_3+wnF=hf(P(m8{7erJcf|{3sExma_eS=4klHe(yKp zIav$VRO5Fu$z0SP{%{FiFPh+gtq|>Ao~9qFqv^1^ciT%9V$pU5dH}vQFSs8EmV3(& z-tX0{m+GA#riOF-j^8d8?cH50f&XE@R>`h2W4kX8)|t`4-tK3mS*@In@@$dr)tolD zgJ!ZgO83$|?(H?>z>;r&-&9UkjX3*Y?`qMy7(UkWgIVh=*2wg~JYMA=A2VlPX8!M! zRwjAQhS^_d^UKwZ{yXLGDq9$A{ySYRZVKnK<~q8{BtIN--M=YxW{tDxGTU2DZVJ_C z=Aw9bRY>h;lDCIf{bD?mtRAMuCxhB(x~{}Iv`p}0l$cfGr2%+<`OqAG=w*`4!>iTu z@uo1CH44!szk7TqmbndB#FfH%0m(F-r&Xo?6 zg;+XUTu+#5RrjTT@6kv0ELX}F^2Kzza6T;ZjTm#B-EuEijGY$Fi@z~WfzNGmFuX1$ z4paGJD^-alO1H&jx|A6FcGdq9y}pRfitFfO=At98yBApA3M?{d%A zcRS0SMPr#n>X12I-xQj&Tp_xjIe$F7&M)t1|CmWmfYJGXtR!&jEvwvHXD(P%-p$Lp z(gbFeWB)GEwk3(4c9y$^8EJk8rU^P#l!2f^8@->^K5<9Z^n7=f#30L zp}3~cKEIcLSL^e~EbGxo3eEtZv*MoMk@R%_0lIy3kwZL51( zb{l_ZHNM3d#%c@~C$znqH5eE0?a4SZ7mTYiPh9uX*~VT;cy|JR4$n-@%4d^a0iGvx zBUkB8Tfidc-a{5>(5_VQ@0BWFdYSXu1N|l0XR+pg3OpD+{+1e~XRS)Amr0!5@a$Ij zd|?k-!TZJYtKU+?lWr|uIzzr-4BSgp?Y(lnlATuJO{w1UHqW<;LW_#*mCpm zz7&;z@wBFm3qw&-7Z>)LQ0PU)D0M z*7E$2d(~M99LTaixW`_|ac{sHC>)v<)nE31k^0N{1V`zosPG2bq5c-3KMId#b=9sp zE2(y!Sy??F%$joD|1!(Vb)Wqu?fa=&TiW-pW@&Yw{i*I3XC-yNI?Jo;<}9zS=}+}D zn3d&v&G_VceLkyI*yG@S>q7osA#=#z+gWoge}RR%W-qDh<_vzsUudoRJD9;+4ztjI z@&@l`&(3Fc^_Tv5FMD=1tEubTS&jFzXT@1fwXe>Q-T2#_HB`IKtg4<5W^K6!el2MS z{EF%?^Og3%?^Zp(oz>O-;_O!atJDc7s_#o&&#XA1@(7-Fsn#^z^^XtfL}@40l%_52YyX;4b4;6tcPk} zowZea=pOg4fme?E(56|5``5rJudaDdT^DC%`nd*9Wp&Ls)HQUce9m8ZDg5#pI926Z zc;QI?rjVoLFSJKpvyO3SFf^|!_?^slZ)k%|FLZsP?p>7R-up(fgr1P=-c-7O!|Qkr zc|ME$BJyBs*b>=&lxD9CqwV5y*g_V#JRQDAhKsf;Y1-tvcV+jT;i5MBfUGopUrV09 zxhW=w$PCCj2kSy499|}i)An9}ZX&WuDtRz$txginF>~v6hnJPusD%!p^c?hp<{t9P z_?9s&qn8!>zF5W@_|OO^DDZ;K4H zfDXE$2U@qh$W}!DMvhc^OR6`Rwxtbyr@%?t zLBDhT`f2B(a=H&}2k%>F9~R)nq6WNf`q5RoSA{3WI`xZOw0Smp$gFbjYn50B80c|~ zbE|ey`V_e_mtYOhJ7wH|!)SBNIu>H<)nqCX|0=hCX@S&^& zIFJ=Rk@(4YXAR7T?->WYC_QOiUtz=zdWpsON%PHz39tL zaJPmGpy$5qW-d~PslxfR9X;&TN2Px2^k7g!A8L$Bvi6U)N;=xkqmy3T&f0tMVq}-= z5wyNc-{sOu;cj7n(rqID0Ot{Ue@x0yBLDoBQnWWc1!v54;_$LCU)3r(+MsLuYcr}A z0=R!Fb4GqaFF@a6? z-a%L7sn$ho<2&GiT3e-O6k>}SdULLl=3eUk?TEE0miEzqeIE5V5A^si(lOxs(Clya z=it)DvpeQ;9nZoiq526$BleJe25y^Fva}BkSkx}WUXcKwM32j@TIf%V$y_V z!8yw}FK%Uj55z=I7Q9LgON)B^;Gq>i(DZPyeH`e@QNi=(Ixvl6Idlb?_+WffX782_J|K^OH%GB<>%6pLAFlrH+_AG^vq(e@ z?)IRo(8MJ;cGbBpvnJ5gzq7`nd7famSTVLROx-=)Ys0IWvD`yZ*@X_qidL?C+ry1x zd#J&iTBE~h?exoIst{$b`ut*(S9bihJ!RjFT0)DE-A_i!#x)*BSqJ!n$LnODx%^4! z*SM8`L{>!JMmAnu$A_cKi`x&?JT^2#pX|6ZqZ;~2?5qy&yOq6@Kj=0uPG-SYVCnr{F+&e^SrSp~tt= z%*BC4DCLANcnp_RE7y&G%=` z)qr*JXwWJ%nm)+4QnFqF*~Y+%^}1E?yHYsi$P37GzPy0^^taYT+XfHDrR3qM!i#6u zMAO|;8GY=mdtzV^g?C6_6D3~)=c}{%>gMA1{pD)Dx-2Ie&0$pZmRNdJgvNEd&4I{& z45bq)Bf$>?e8EZ~x{*E~I^}1RVEr?0aQT?<@Hld}~IR zQ{;;oGzc0y>^6GvO#d5e<}qmO;o4Du^yje${kcMZi2_&TEPMdvee72O8GKzx4x=sb zIR}lXmlF$-*?pVhw)N`BdJW6#lNL4>U%o%Xo)>6;wYr5yRVxGV?V#5x*GAB=+12Ue z^0G90tW=_tOXRuDIhF+13ecoS_!YG4cH*v`C+BEe=q!cZA%`EMk$_KKU@Jy{o~ohi zyRs2*NVKry6``X|XuR05WuD;2K|8MG`=q~)9qgh5e_n+XPv#8DVx1}LFLE=mgm%Y8 zHv*pV+Ng<71zS9_O#-_}Vjcdj*UyFQF=UdJ_&JbYPSec)a8w(M?YA^+46x zu?-~;Lc34X%5Q{EXTjJ4c5Q64apY3oKNP*AXK7KYAN9YPJm_MZ8Z&=?#oZD~Y+XSw|%_hU;dt!^1N_6?85xA(;Nl7nug=hq`-24ukI0GMJ|x*q2aZ_4g> zpMmGt?+3fnd)DTJ`9hb5gX=N$0=z^vXN|5VsX+ocAq}0s?OkH~7J7hwxX<@P?eu-{ z7~4!XTPH}V5$x#le;@nu~g>lu2*{=cskyHq3rpM!F*S-*o$N_6*l zqERcw4zZhztEG8=6uLcV$6MWUJkh!K)V9I?z{1 z^|jP}W%WBT+gHN$<=xkP#bSrGGCqK<<4NeYCHg3s=R@@Je}a&XFVG9< zpBl?t^`qWJj^rL=j&<+!c=Z_cxYw2Zm+qtn8#P!su4V2yJ0IlMQX{LsOWT>Wjq3ih zrfsR^>??3Cf$vh$PphL^d;w2neW&_6aW#fN)!g%!KBWdLVyy0uccooPwd0=iZq9u- zroT~Y0S|94D4+Vpuo#}3@;5s25O#o};C&`J08aDnrQij9SHX*B&(3>b=c2x?p63-V zuGGAMd0mYQ__79B_Lk2BwTxf7NW=HDicX4LU8_u&%cTYxe|>o->+R?sXOHpg zy<7ZzDMyca)brfS(MQMpzP%SbwfAqzkAD(@G`Sq@-#6C4HhzBJI#u(XU5*C#_0#G4 zGM+tja7gP|%4dWQ94~Fa9h|cEqpsQKGX;BvFKV6!&zPIpKY9-sxisJH8XTJIbpd}2 z-OxB7Z~-rLf17D0K43mF=IA6-J~udv?qTp%!_MHVhM%-y41zQteu4r)mL9H1usH*iW0RveV_1?tLjajQ8 z@Zmjt*_s~C#c$K8^})N*<9%bb#14T^fBdX%Y&OTKAE*# z-^z92rqWdO_39MazC8SJclHH8Ky2Zx&+w)^__KkZRsOc}OV(@u&-y9;dH&YU<|AlG z_c|_g23_HFc8DxA<{o-^ihITP#T7KCFyG@|^m-3Hx{^DrD&7#wf-e*7e8?c(uEuf3 zf4UrJf09vj%!H!HuAa?%g8w~y@aXW%0(uJXK|71sTaujxJP*Fad+d!`Z;3w|-;(f1 z1uyS=U1}2Wp6nao0bDYPfDDanrD7h2?mkueo~!q2TB!I;Mz7JIicWd@s-l;y?_o4^ zYH)k+cBa}6qYv<6h0Aj9QfMT&OMAgxMZYgce~P9}?Q`%$o-=<h#(i^q`tv%{-Vu7Iv1J_~L8^XS02#W&Vf<6GUsw|$Lo`Q@55{`0b*x^MO- zf8tMnkZWuo;NQOB?)0)ZSzX5WrH#a4Oq#2C|1$ppe|*QT<8+Q437yjNSF_g5J&Bd;0?#gZd+x3u_E53IFQ@HMDKGIV z8*7J+M#b~wJCF2hcrbKDU^=cn>~JXI~f^qv;^epr!8Ka`9f{oW{3l z#_OMNU8p(FG;bTQ|Ip3wxuL^(^1kv_oq1!OK08)$NaM}MSY;1u{>U@v;WJ}3@`LPy z@K}W=D*DM-eOZ5cGunTr$2o;BFR{sii$jM8Bgac@z;4 z*e#b2nIyhvukpnevtJxBlgbSb?)xO#SW0CYQag z{zp9a)oR+mL_fb=U%`i_-OK!Za5+X_Tf6NBy4`5swp*)qqYv*JE^W~;nHiqL+AKGC z4ebR_$E-Q+!aRodipLD3-!QCbFTADc&?H5JoHbl7;QuptbRS+ngP+EXe;?QMgU@)? z?Ozrim$kgaQVrjmv308i);CTEZ*B^SVTKqe?77;u)U$rk@HZak_0z){v2gxA8GHV_ zfyj44i?gRw;CH3`He_2)g` ze(tq*Ww24{H{wKBJN9oFe-DN3Z|>)q-p_nXY}uP~MoiNv+mUUSF-aCT4~>8QO{M{(twK{{#N+6U!CPoOMmdyv={BU_2wMcgPc>(%*H zq1GcN@V(=U8eZ}46~0O6OF-VsoJN=8mr%AK;>RlCs;@h+9A-i%C|KCj)w~1is#Cw7S+?C_}D!e zKIE%KZ~dZd2;RD!VaK~jy~j3l@5t9vbkeYov8#0efA-Q^)<U$lFV7o%o(Vv7_U^Q!xQs{GeOosoeNHy}qRqvFpIGa`J!;13zzfh(D`K{J!8qIBqUl z^ZJwif2~bA=x=2#ejnmrU_QiVrGXPUIfwXl4wMcS8aMup1ThkcgIpyM15d3kr1UX= ze@Py}trt_^$tCy*h*6Xn2W1B#9)MW(lcOv{^q+e^j`J|@i0I3 ze{Lzds1skJ{kFqH?Qe)-hthEpRbpI?Uh1x!lB0<|>ozK1eBI916L;#IDvpD;!F`Z> z$U|S1kA*fa?gxG6CWdfN<-^E&r)rhXJLS)b;)`K@uLm0Eb!>vzLygZz`C+2SdhR}t z5?|=?(|~WZh@Vh$o22jNcmO}?O5C5seN*N8vj3(cmBgKVjAp2$~X=|oQanZym>l(Gj6;-%nCf4y9h zJT%eO1a}g|KNr22NfWDEoai`QV$ZRK72@eX#cq@tiJxEgmW~$!k5Blv7waK@cuflw zF8VQn=Mtw_+8XO+V#gNMatwHsLjLg}Znd#3;G4s~rFnc|lt4dFG0J{SSUiTmZX?D` z#W(Ai!5BK;^WPz-BJdsQQ~Gdpe}el^oaci31>y?C9*&(&;zV^m3A|<)j0>N4?_}+C z%-%V&QFP0Ay*OwCpF8yINA|eHZm>V`U+DY$^g9x}vbmO+oHRBAwLX5V9`OnnX^9_| z_~RA0s&MWm56>`d0O7Vd+*Q`Gd;EwJ(>blh532G#7oKhU#Wq2Vxr%34f2&xaK+K2f zKTaRuzdYA%bu2D%YDUh*H{i@w(MMSqZI6tL&pdVZMdU-#@$I$P=ao+mJG%QF@rNVx zVM8^scp^tOd%@T|i6ciR-1c4UDcE(qIi$#`RWak>kBU3Nj#?e1$1V)WZ4@1T++~kc ziS;KY6d4Eo+uT<^b8sxXe*kIZV~4F|t9#{yqs43r-~ccOp)-vA%@gq|xoMbG0Z zvhqsd&AH|mj{jcCJK`5q{SObZIebw(UB$qwc*vT>kaVujkY_8%uVZtqWhroZ>l`KS z>p8e~g|2V^u9j6L=R@cW^Uyqsz2n)ZG#rFad26HK)H@(FFe?IT7r^L~r$LM$A*@kX;^v}{Y*-u(tkDq7pmxsefGS`sr{s6AMbJq@eYpC>2XpFfp zanU*lJu0$I`oP3gPl@kxeQGM!s8)_Wwk`$|JLmXD6@OAZf6bQxiuk%q*d{dGZVCtQ z;hQ2yi0&x)6vSO+C&UfSh__X>4a6tcI6Wbr3OqVRFEce1%r`s4f@;1yO03%XeUS^F zi!mIc+mZW$Z9EWvNj?R5ba^pX@Q|1`)vuv1#G;X_N^EMpR3Ls?&8fMbc7~p){WX%O9wU24L zEdl#X5auSH+KVsCpU7V6UhWttb5V5UvOEavNnrosF6rGOEPX`|p5K+yo$FEfUdp?c zcLK3_NfqZFu=`l}!t+kBL&39@+{BoDpR^ape~-?SiS17+$=mzOQcC{*d6~a`VBPj> zWo09DxZ0b?fcOZ5j`{=t{{-V2Tdx+wj-A8nIa%m(lTYR9{Yw=SkKiZzo*CXcu znyF$nrq}&1*uHemTUbvC$0=yo-M*`ys=UK|^=zthJ~ey}tK=3~ILo-Ij$R`?!o)55 zmqoP(IRQ?Wf3*f0fAs&$+_`lnl5|`92lYh*YPDXL926831qAODN;#=?i3j-g-!oT4 zWJV@nRqglv_SmCG4=qVDBjdOZbIp0*-279VGi>r_JF% z-{^Dc9MxNT!+*Q9?3 z>y}>skF&Ab|7Pq@)%AJX@!@(wT`2px?8tb3t`YYq zgUIHO?Tisv2IT?nZ`wQVZD;&%wB4@T*7oTA-8`<(EuN@2s>S4TwJ$oKsFBIU(4*%b zU`w!Pa&J4Q@Nwf>meaPquAH5|@g^L2B! z$N%yDe}<*+&Ofl)8`g85xaO0qM+$X1_$k<%4v(MT*K}Q)>$80+#9rLbLU>=d{x^J; z8CVqN18r8^o%3bCe_kDBsX@#03 zU*BYQPubU=<-Z%pm;we_KBwY*?)%w2)MAL7f5+5TE$y9hcB;4aqWRHzT@0Q3Khxg> z$G@dg2_g4erATf`?rfhDl29pfom+0h+;7{wE9H_~rQBIj?)Urse!pzF-;KE}jG3`v zY+pZ}zu-I`=e#b@mr}`F<}&6WMk-?R=vZwRV;IrYZt82ggG}qVsY7v9Gdc@eOHPUB zh8wC5xo9s#k%V3L@e#S%{wZChoK&uSd!vPx9hZ<-4Dy%8sx8*Uf_D5T!q0wYMVWyQ z7J|hTxmfUl;*UBx>@T!8#is{w%6FOGPu7HHoeZ0A+)vm!`>|;|Zt^=VB(5p)NFAru zC-P|9#UjL~LUx)asYjcuy`1A~ngVoIC$EKWNPo0_J=a6{1b*Z6+30Vqr9~9cW>Y;@ z?xl}P4=hs+R=_A)G8UFQqz@n?{d_r*#9Iy4Mb^2KciGmCtYOb$zC{5&IF#A;GL^

()j9}Bql6<+uX{WVPrx>XuKF6M1m!WGDV*>sSr2mW^dxZ9v=)jITx zQ@-&47i!&{Jv}~)s*d~lcfqwqZMgBeNw&&8T6n?c6gmL6dDoq-Isjju`{xT%ud#pC z+EA>p&BYaCOuS9+tg#5FrZXRN_7t@yUN6308zlmZR?prs?*S48(|LG8cbWa7)KSbK zw+Jj#-z>RS-$$&MC+ciD3cZGxzuYE*molekV713Ek-Yd^`EEVmRF}_>$cFDrq zKSFNR@px)_#PBmeW^=k_d8v%6<431gg8LkEnCc6JbZk05>fz-yfk%ct_6m#3;-M z#N~mRH%-KgUv3DWA`6X88RAsogXdQQ{LPcnz#JWYwk+OAj+t)jm7}_oIrzvQjsbH(b zOje@lB5aqio#|aK9Lh3QQm&2uoDo=hJVL#<5dEoRsCLdWjrt1Yu~qi6z!_O2XR>_0 zI&8Lj2 z_qU`FGIW(6VtLa|xMpP_k- z<0=ha;e)sca&(w1*%Wm;GSu}0#$4R~mA`t8$k%h%6uQuD5k@TUCGEHUsiEK@_a!12 zrm-5Je8m>A=0z{fPExpkNV=ajsQiuObcCtr!>V`zQZH}4==kOEM9(Nec6}bG1kEA4 z`9eWjoP8UH|$oix3H7y!xx$$W>t#AO=jVZn-EpYCA&95OQMTWDya`>&5rq?E7eylH)P0sY00H# zx{2`@lpMU;5ooW6Ue!Pl!eVN+DkRv*2mPkTzqif3dwOyBZ*5I>2yt0hdHHQjm-}${ z@3G7H%B2Pw9nr3nc79mUhq=1lLpF%JSFZVeyQ(up-b0bkO>MwO)EZXHCrOn;b$5Et zXjrvQoUBL5-Bn$P~ZfdB{Qf?12 zf>o4{$VXa()inJTM|Tq{EUmMZK`zwT*8}ktqL+zIt4QzvP*kTX3_oS4)JWtG8fDuP zff5m&pxhtVLZ(H6ziI@0)N>MgCFO8PnUdv$Y|F6H{7EYtYb&CVK(?Mc5_|nZ5Di}* zhRvq*I=mZ*Jnh_9e)W(Q8ur|f$k`mZI#zL zQ1mCRR0~;NoBG=+-MM-A&kpM%bQdSN)h`meGh^e}4+=nAe~|mJL$NXCQhq|@z{j+- z)`XMh-$U{Ib><%{W;R)T0;j;Le0DTr2KX8_hf;K-`TJISV!;Iz(P;6#NP9~~0r(9`A z)gFB>9`qU6_`I!T?F^0IXO}5??XhE71c+92nC`q>LH&qix4K;7sM=KUpyz_}p$RD0 zcpxuA!K4vB=Fy3$*wHgb3`{U3$=iAUGrVe%T*J*JsT^jr^0ua)2zuRNZik3s$HlyT z);1`umNFa6YZnPe5Fa(y93&uQvUWHMwJWv|%}T`OTlSuWwTbt35oeYYk8&V3z>j3X zjri^pE=8f03o^2k`nYGzHpqzARf`25qy!7k`JB|o$QZOVu|vhiU0bKo&G^F~$00gJ zTAjjY(PD&{&gn&tU$HgqBHl9KyZfl^!R+!n+c^wm8FBhZP?bj?80_w!WxNRH$rIP} zPpHbXw3pp9+Z$ETsP0=>sBF>%lu`4V!r8HiT+b!4i@V{UY5t+n**SZq#pA3famk_2-If!dbQ z-JB#!PO^de>bBYdQ#*QIExFDi>(h9;tUP?YcKoSlp77(AQf0k{ZOEOF$`{HB zluJT;0=(f2^GS9y2?B40*80oJ+_%vit>(>agA?71m9z^A{roH?1LhhP?G^6}epc%R z_ISqNg;@~+o?#WJC}T0zs21=zRiq|^+Wvd5^^skHNhR^JvM2E38|yt690I-8o|f79ksAxHn2Sm`4j?%2u!w!o`Hjya{T*G0 zE9b3i;_w>Vk~<}W)aYplTg8eUfk(a5TJ)>Y0sa2-peUut)L*`vzO4l~MYX{ko(ul>a#w2zrI z3UQh3N*TQD+q9gH+e9@ri(v>(p$+>^{gEp3T6M|hM}Q@nE)j5sjZ>(gLn*W76A#z& zrm9nmDBIshwuZ78*xJe#dju;1QDWs6Je;Ip&k|hR!MwU$QO!GPEpfnWGnE^u1@wj# z&l~wl&lxdP>p8Y_7((+Gs0s)a%2DAQV<1GL+t-dHUy4TcLpKAuMcfr_`5odj$`kK5 zn;s|woo4LOsaDGnK@O*-`u<01O3~opm*-cdz@+50e#M3(XRpj)B)2jwO;f3s&Ziui zlWmzj9w=vStN*s_Y1*0MjOp%t0ImQegfMRols+eD0$88yH!Z&{ukP5WqqZ)yUf6rI z_}>Ls+)3YoYitKiyZ-Ep;GDKZPrv~Bx$g?TA#fR-!kysVw!v)-XtXY67_7SGNI;{XCUcvY^ zu(D6I0QYz-WqiYjFNDRU#AP@Ga zYvb7ISXSCiXk>8yAPDAVcw9jQ?Bh9z$Mmlyf?dtG z*Vc=@suF6VL~*!JyiXO!qi+ah+mk-@$6_X_b`5b!B|8g(Jr~`jE~0oB6CW zY*tWq^HX=zw)DWrQr;P{@jeU2s@%>JZ_jc64 zadH(MoR7scQ?rL~-NLi%Mcm5GxPq(U+6hkc1TsP04n>YNqakM11!S+2kO4kCX%k#% z-{ZphNmY>FxU)9MP|5}8IA@jykOOeY`6h9tcx9lU^*@iE9?-ZjF={k(`=w9_m@kDuhG(uG7 zN;)3;S`-1>*8MD3CrV_ zPm8^WUtPW%0-53(=!b5tTr4RAr*r1*&*2hdQB4I0di{cQl{4xmz6(p1nr|^$@gIYX zx368!Hi%zRyrDCQB*1xXAcYGX4$pv`L-(DEWGCRh;f@?9Bcz?j??9?U!?Mud=PUl; zb%sENPG|B>O}@?W&3B12W0=ogSI9h7Ry%r_h;(DD14#(i(iG+@UBpwRPmqjaKhV$+ z%P!+C`5*JAJ@0K;Y%aTg?STTF)9Y?e`nz;zkf)pJB~#pT7_TD5xH5WMJy!Wfhe1U8 z=!gx9j;{c?GQ;s-1(ZMYn%e;$Cpcs9NozNK#uS?q@A zwg*5$uDviy1%+@mM+Hvozy8IhjFtck_VE7Top9nV0v9L0-ly)q9;UPDzObr~$g!dZ z?1=|W_74ciiqSzYLAMX#4djEO*YrD{3}6T5%VSZLy1l7foBVm?K4EVS-}#KkS$f-9 zLSE(6pL6{_a?ZOBc=k2nd z4^_*AP^{HagaE{;#vz5Z;5YG$6x zufyY?c#Xx0wmgaf~>MBt#zj+9tTWMg1z z#h1x_e}7yqyS${Z=*PaJzJyz?(bO#OEO-^{U_)qm=*5kvVviWDs5 zmIr^=R|I;RzNM0XIJbLh?A&7lcd-@+68JSf+T4mNYJK=tt&<^$F~YF}zj)$ndHpkH zrAl205+^a(!$FN-CY>0`D02yrmk<>9%s{@j_!#;7N0H)$t`Db$iHb-%Om4BDs@e_qR)|UI zPTs@rSXv#Kc<}iQvp}hflk=N?G}^M}X2!eu>P_Jjvs6J|h(y(SXtgaq$b$M*$v&?3 zMc(z}%A&W*kjtX{GS$#&?(DaW-2w%P5!)0658SshFJm;=Sc?_V0mmkj(lzJUMN*5a6j0p{rN2w$AL1{ttZR(HmvSC1!dPd1$TD|=^m`;Gpw7K zk8o!!KJclfNpy|@WkWBE3`MyiZ zj~M>Ca?j?z=CiO!|4RZH&4#nI1a(XY%fW6nbmAReGX4*shaQX0mM}k+n{h=4fwQ|^ zsQhtbVe`}Q01Zc*44xDoJsGrhCJ?*1Z_A4Jgxl~HzvH&fp4^=KZQY9cCDpC4s9a-f ztR?#HZC;+o_(VyUWI*)`JlK+%psBvV6$2dA{^moipWE7yvrDjXYu$Q3d&7eb@(a$K z(Koko7z|vXME-o3QcRl>A^EBN(jm895v;w1U`6Z{!l5i){9UG6B5I_*p_XrsV_B~M zPT(okOhRWpVl$#>{MRg!m`aSx;tan0N4NCljDpJ84D)Uq zN-qy;5A@6i@otW}7dFgQIIUYsgfu{h%ECVkcY0jj>ILJYeERLL zo)tB-WR%AwN_V`q@vHc{cK3X5H?Q6xc0A259mzdC%fX(f9=CKht2ms`tu(zX`B71r zm%?0v0P8r1#4)Da=zhr0)g2VG0%9@saS5P(yxcNyDu|~CZE78`#a+5cW$}CBs{0aL z+jrvx1sb67WKZ8o>v-Yid-+16!10H7;JI9ECi>#w(Ir(uw7Ds5|Dk62As~!?8n|01 zDi;}_i*8&$VQb=@dO7;rk9Mi z%F~W3=Z7p9*-&J}Wxf44)bW+|&l`3mu06xFZ9nhk_9D31p`||6!KNx<5o9g~-VNp0rv}1g6z1jP^Q2WP#$AYnq6Bz`Z zO6oWB{^!tz+z+4LVmBly|3%+vLIJDE_Hz$gE{QCXi0;iR7u_890_-*ym^qB#ozS~r z1JLvn5Wknj__RLc=Gu1e99Bgx&z2R$s|W#& z^cbw8p?j%hf~V*PVP;&4;y)<(Y7wrxE5@i>7G9jtR_Le%S1>MUy^A}%34nK>1zU7Z zVtRcz6ck03#+u#RyjmHn83md*yEy9b8>(S~RLq&p_>&qJm0xlnVVfux-U8qLo%gWc zuxkkC)ss~&Fufex=DbA+P}v^N;h+Nls2}6iie!ceH|zuFmsB#O7Y3PSpav0u^;VE& zt$b>X&*95u+;GU2YgY}hu4uzv#DYrc>Da$fMsiG%)0t)7y5-VPh}J)Yd6FuX5`P0& z4DuwC`Gk@uq=T;%ZVeq?>7E#JTF$nOc9bnf>Pye2>qSwYfjVphdJ-j^bsbdG+j`%& zsMqQ+;ezD{$V^f_9X`ldJX2$TdG3+4%b)ol5Fo`ve_d-iE*4-(F;!9yrcx>VYI1*c zQw0Z8O_Ba>ElXpL9@nh@dOj)riCY%+TnK7Xg@b~Gy4AzM7XlI2bp&DyO~O$_E?)Q~ty;g4KP)$tnKB zdMYdO@o2rYED&KP^p)vjL1OI#{ErQ@HlEHjJ4l)sTTP8{Vv4tlf_OexAw&H>YyJcA zXQG6!;Frzw8*Y!HA#*KSUYbd0_7hjoO)t@L@l&oh5wB?N1OL8}Vn1lQ^fE;L=(V#u zUq~OqepKt6y*oa39~?wZZyf$=NX-c}UvMz3jyl+M0jwO?o}E-F)wvdq!a0Zrb!Reu zqhMv{Fx)?dcE>OA#d$6M5=g%WcHn}GQqKu`3T;ww1G-K>m)%O6J~-Xp$Fj|);TAQ* z|Emo+l14{t6vd5~*Cc7;Rh|E|5D7nex4BASt^FPZzvQZq*`HkJ9|`_WOb8OE*{Fm{ z^v~;ofubPfMS5m%Z%EnIiKhauLI;x>W{r(YBI;}Pl;VnbcmJ;C=2GeXkbqy7F{FrM zE}3fnxdZH*+n-&|~*7CeyAC*);g)**YvY{UaKb%XW}WcMyfTc>KKpDRI!?#>4kPP z2Ij=IacnyD(Zjz3caPpE`CUZ7PW0HEa^WEC_Y2i9GsAlI5nRh-g{ayV)-(dsSU`4orR`jyXs=ue49t;2(k6tz*Iu>3wd#%@xNaWEr^5d#t`%9ua_9ik;0(ObMqFc*vJp*4kTzk}r5EZ8u18rWH+H)ZWHJJ8^;yw4hw z&AY?}??lM{Jz?2u2=q8_*kMZOzQSnkkqazxFa_%sUEJhPFP7L~86kDir!8q~3Lo&L zT+i(z4u3qwfg#)qiwTN61rXkmGeG3$Ih|Stm z-&Mjg@F#!m93WfTJS=Ceaz04 zu7lSF@iXxz4KIq_dv4n$ez1~zUXbdHd3Whe^i)ZeshNRcX4Ebqh$W255!G-u8y9=(7&)z%N2?J7l_g6HCw;BQGT3)_whJt|!H zeuTSX$Br|a!l=M$V6|a60HH+gXpS!X6F63JN&ZS;U`=%70yPfZa3I89mbD$7{0M1q z&3>-D#GKGEt7pO+7xLRqc&tjwNzUD@q)W)|dUA_Y58VR(^SD5FT)Fu+B_9zI7_7-~ zNR!akGE{|B=!zZxeV7m3L&cH%X;ZpXsf9md4w2 z306V$4qiKq2KDHw^(Xr+t3wsr3(x@Dx;ASE=0m>;dn?Uxx|ENWVxSBVcH-SqT*>&u zw$Cd+Po%{P{=9=un0x?g$y3fd5<9HU7gj*`qZ0c@=5|P2Nr^n2(7auzZupzeHorm==s8{mh)r~pL4)m#_@lZ( z(m5`P`K?})=wnF|>A=r71~%37qngDhlUeCS)&It@#&PmE=?@rGegDktYQ4E@5$SC9 zIPUyW5N|r=4BroS*W1<8j(e=~L()!P0^b9l2c_bcXCvNA#@+^P-*Frp4^Ao28FJyR zoD*2LSLUkV4De$dCH(e{NX%BjCfFG`D}|m}K!WY`aNZQ9*?6~GWYY{b-hV|N%a3qP z<(5yfJ1AZ7!-Kh_P3mVwT#>=&zBHw_W zo5_z-0o-e|+UD%JhGLh#*eM~X)T!GnQ(7?n#XpT!^?L|eW!Z4S+eiS!tc}GINyotOn z##m$Y+n+ie)oNR3>sv?3hSZ|h$s{WAPl6{Yoqvn}`{MfJh7+&pG=g!D#cTI}%ov=e zND#ZL7K$zLIK8@>DhH_f?Xyk(6AnjYQ$?Fe9w)B9Qft;dO=90=sJ--;}=o>La1i(w2#k2r2KEuynvM5AUy3M z%e+ZU%+dG5KbR!bF)9^-ks#oY&=)40O zIobFNmC{IC0*q$*(%g2HH-c+LX%U;VE~#{ZzgU7o{_H>Bb!JzXey4T+`3G;4Ay8j< z&ivUEvK}o6RlSgo4M$KLW*z|}iRt``^WE|V#{vh>D};dsW9YzCx#32maXRJ2X?W!+ za0~|r&4W=PIS}WL`hli`y&ktN^AEb*26OAnXNW*ECLn1Un@sa-!t5f?h36ED`2 zzBKy<3(+cmyl$YG4W}8V66QUhwN}!79#nL4RuR2Ze2;yCFsjj_I!wL*ojJ=q@TGdB zr||6qPxoiJ>_~h1y|8)BiK2;)@QulNa=sK+WJq-8&D)SEjlaP`WMY3BZazsA5vS_m z14IE86WQ29S*Q`T>g=fBpN*rMQHR){s|BQuD{~nyZ=g849m_ES@UbIfizKN%(&NoU zRqKTSva6=On<994^F(b;^g+F5&4VgAbmDQ=R1~2DAsqs5JZIp#y85B|w1AKjR(+WI zx#PWF_hhJg+32zA9Bn9&InA}GoOp0%P*KQ+r*PZqIjnf6>)Z@if1G(E99xyf5%_VNwEiKpjlrvSXtMkfyio$~vcAgrGCBv4sQ-%A z_3b3LK~eO#pXwK$Dt74);!hOZ_H$(~7jqmG9ho+RT#xz2bytsWe(vBi+8pjzu@g({ z>ey#K3BJQ-iVO6-nrOWwsVJf!6@M2bP*bBBGpjCV0gn$TiPDPOEDJDA_W$vE8E$%I zYosy8*R0dvHr>3|s;yya%9acm5?goLvXaNbRXv_D3SBds{AUd-$9Puty}y^qUYTsO zT0St=N)2U*bXT23v*YWSauee`?>1$TEobG#d-mRskB8U2G!b3!&5P2bQL0Y{X=6NZ zqZGoGFaq_W%cP*|bFxV5kFXW_e>(5VEZ$q()0DA=L|SA`rmZuKqw0W5D4Op@x&J9C zV7Ymy`L8S%u+Q<|s+acKNIY(E3C|c5!sx(Oc`b`;?Z4iKi7|4mNGBa@7TW!JUCX(< zyHbBc_sag|Oyk^e_8ApRn_pCP?uTJ)CGNHz~kVT(} z)1X4TW+IC6JZ>HrpUy@hImBkBSoYagp3^mys6oxaofx{x?+lb$_p|Lq1AoTJ_r~j_ zAMmA3Hz5jF!}L7)xnBvPiNMsEI&H+zxDY=qQ`BTGy;9JmoTuq_K4T$9NNFY@jXZC( z=U(=S`TX9z>Smcs?xY6F&ghpI!42p573u)rszXhEsjqHV1@h|+(T7p!qS|1sqLl~3 z^Zj^hXbCK>DD7nG_GGXj_v|9P?6phtt~%u=h2+~yEWe#H6@CQgrCppIEk2BGdeNhk z*OCDlP3RZ%|C?2%ufZ~e2%p_syNr^7QOXPGQA z3-CM7GC~c20%|wCRh<9l7NpBja74D0Z%O9w5a9@%jt{i<=N=2?8U2b4YZP1GG z8G{t2TAlncuQqjA&)NT7M76TNTj+e$46?2uHFtVuIbmshqumu!D^4R$%~#`f6Bn8IO$a**2SrT&Y{S1(Xw5Ith?X5VEse{65&6SuAC9z4dtotn#&m zN7cisKRZ84sAJGiLf!~Al~~OD2|C1?+I06r4TVPHR)y6l$M*Mgc*fF$(?SjIOR>#7 zXV;JNZA)gCt;h|?g4j8e>9J? z2%yv^qEd*VmyoMR9)AGNyVWdvDSAi^aNka${)&A&ph^+Xa8G}`U>)K56|UAXRvZAG zjD$`i&lAp<<-!Ba?_)}oIw4dA4WOaO7hxp0;I}~b*#MeBt)@E?)hzzpWN-ep8T9_z z!RWUjhb^PEmu|}UQL?IHEu}2a#I7TN8mZY^xds@Mg!p64V|NlX)g_K1Iv~pSXX~AnhBZcv@_2_o#&pDF)nd=E6|@UaS8CB0f_V7 z@%>b@kh~34fP;ILza;PKY!Djx1CpO86i~jT>dOkhTy_Ed%1#FG#UhV~dXT$M>u4~~ zAQ9`Cps7~~2L`7IPj}nWpI+r9tjJ*Yn zO^tK(5!*9+DTn%JLNr>JQt^(EiU&ZZLcxDf>$E`D^V5;htbYAKCuqIkc3^VA$unXo z(rqTjX2(J6LmXcrODEq_W=9U*DT3o~xPWnOPzkv2}=!nXFD0qg0~J@-ar)h(n%{LvZMlsj9+lcaCfNKpr(bO#ctBd9nLfdWC@GO z?K0iN8rPU;cEv70)Bog<9UVpe#HBj5)(y4sT1}@iX${p4g}g{ImvMcQ#n`W&3O?DY zMsV|D3dMS6(R}raS%>AMI$QgtU2mul6Vr;_rhxqth-7=sI3TU3-yI<)&i8=XsDUe0 z>&UGL69JV#*+#YMd!U+TshOBk?$2$q8>cnU6eD^C4?uqqc-$*)CS(1P^bAD2+ns=j zWi1cXBqN{5{yHmy=SDa=G<@lJ3WA(c-m@_&ij4E@^fbYob!`_1_?;>tOf_WTOQPh= zG4PbMhm9*=-v4@J|F1@^5Z1jG*kpygoXEe{cLWx_?RsM*-!={&4OLYmLqwtT$PM-QH><>}|%Gjt|jL_;dll=7j-NJBi*6s=o` z^1zkw^*HQsmmXd?=~--f_KGIhto-~+xT4Dc7@k_s(uHDc*M`YY0DR-Y@|$%)SqVs4 ziaolk^w|pjUs2I?buoo7r!1e`n@Rx#iG}L~tgDU3?|~1(`diPel~>CZ0wrMQMVAIz3~CV( zq(&+BplsxCrnse7me*uR5xS)2N;-Fl8jQAwFH)blYP*Sa&8Sb6tq8pB z=#Vs%xm44AXrvL5X3sCUoL$!l5&i~cGWuFL>jhQ?_{!bqJHQ&+iC=1$Z+ zhhPByY}wi_{(glH9?-J8I_4MwgwKHv)i#v7jCHp&gqGY7xfy?u|IO`UXV-T_gY=~1 zj#u_i$D+g&dK%I+s{q{c9nKYp(6`9Dxo8|G>G`z5>08|D0zJ8t zW%zLT#PXDD#!lxqxjg4&QlI-~_InOiOfIjw?qF&EEL^76UlzjrI^+ev%4v-0*ozoV>OHTRyw z_lk3Ar<4?T9M;UR%S5uXHU@LnT?FGIiT1Q>`v+)P$IGo>qaT&!cLi2r9_H1C)jTz4 zV;_05+LR1owKFr!Vi7^rEEzymrA3DLdg7X0dUib=qg2_fy@Z$W+Q+i|?&!{z;sCsZ z;eCO;_91H6?E;DZu1E1xl=FC3Cf`1tIdgd*yPwXZ8-@E*((nu{)o`O`_w9s=yq=^pH~*?UDKEe`hfNUmfHtRD6#Y(?Do-hGa-G;-*aqXX?NG-4I-i)g zX|XJSOb+;8g?#^3c*9YW>YKqs{gfzM_FHlSGr>RHm82OffFHvV7@goe_*;6`FvmNW zvZ20gzzI=)!$U&%oi4d-{kKgz`|R1^EcZl%Z~C9N#c7=g74Qe2UFW_4O@@T!--B;! z9sGcRP~M<=cfk<({&9SylJotR>dnvzCw}DLpIYR=`P;@WYDz0Yh9~sM7(e7_ieueV zN={a!>os>wyxi82sucjqnC!L%SafY-frNc7+h|pzwzPg-R{KB#HQEYGJ+5k5#T$pN zS4z$$XU(`wJc|sZ>L7CmSgqe^!e24|s9jv6@CF4g!62;a={Wa4+_(d_QgWLHLy9e9 z2PBASI>~lnJMUK3^}|?Ww>YHN?r)HjU6s8Pi9m{-EBUz)9+x z3zUCCaxY&RJx1z%tGQqrBaGimMWxDl9{+4`O0yX$`XMv!g!~DaRgsq|>HnaTMuP5l z;=zk^)ic5sv`2%Ria=4K_SZ9(CJ71-BS(2u#3>v;ZODfE!B;kSEZ4w@hW#U87_3t$`53EC7$%tiPlE@T0_^BCNXF?4LydPKEwoYwb+TH;5oqEv4DFNMLg1nD6 zvqADrfukw@ASof=kZ0;PXKFHZbEZ%uv9COiD|=eF3!ZxMg*pr&+o7gVNY+=b^`V@U zIZvPY456*V{rBB0_1Py0wyZIUVxjIYSv!Qzm5e7_0PX?TfcYKOn`xtZy-aQehjaPi z8KjC{IIsDDsPaIiXaNrt9Q3c+aJH!+_THw+KorJ%L9`GZS#*UWFs8iB^z-l*Ys+t* ztmlnQI=auQT-B*noLH&*lbwf>nqn}0ORw0IHc;iTM7H22&Gg7-9T~Sq@ES`EKeEE1 zVpC^<7>1-J?KUZ{E2LN6C$a9V$-NkDsC!Me=7GkNzQ(qRQ`~{M^(?p|OzFTYlbSSj z^yH+kRq|?FfX;xYY2$ns1(=~_Vo33~%YnD7>y*$$dk`25*|MiQ)->Q65Z+Tv- z8OY?+IjAi^0c8{On+E{H*_lh?(pgoU)6v%UqiaojtdXQlV$i$T*~L#ljwP3eC4f`C zlb+bCQ(%{+DimTNaOOrx{Ej$~)cn)+jvq!}6h4+TV}4m)Uob90LbB7%&nQ*FWj0;- zmL`{%Hqg<8C}h?tR=N3 zOWT#yurNG<9eX2jKoGV>j$bHLk*E*a=J%A=sBjkeE{PeN^E&>_+YQ39>{kv(dB#-4 zKq8z@97LSU)T8kdTV?FOISjGzP|x1)V|^ zP7|Ekm9cX|DK1zkey>)p)VDvTPGCV=oi zK&nDdn$rCRpu>A(O|gby4cxRI^y8kQU)8dChZ^nO|JAq-G*_?ko8+W#qtsAP17#)8 za9xl-A*)^<`e`%sL=gz?X~NMo>$ygf+KBo0LqHzsB;ql3E}%YJa`i#1pmM)55-Xyt zv83VK*y(wkne)0H$vN4$T(!<$VqmEo4f!$t&`YgfigD$zfkQWEwnJ?GQxPfp%rST> zai*dIgN06!eemg|TW+g6ujmrx; zYHOrvOP`g_;?9Z~VZ`1A)9T9iQ$96?!ck|K+1ee5Cw4K~ev_)!T`yD*nun8eET6Ry z;F4?Uh`v0GI~-5-b^6hqqZwfiIL|1leiDUD}>ZR3ZmRvvP5g%!Ujl1 zAG$sS*r;#=KwMX|-$`ichx z57iRC&U(*$YnhpJtg8|}&ifiO`5JJO@BTUeXe$Wlr2SFg7lygPhQM~rC1bUxjomf> z>Z3B_G!{`zmAn&{Z&Gr~D8$Hbgxe{%_5BWbo!mOKXMr@7?wd6xEu?#zXA2}>lFQp& z3Sv9gZ9r-%B7fDqu`;4yFMu(gjvIS)6r`p=pM=B+9(IETlvkhBvdv35rP34>ONwf? zqJg;;_fMhk6ch?hacz;BrET@}bV{gEjN7Kp@7s9avOkl;H6&&9^M(?yy7Lz1bGcuw zuCB#DD31?HoH^Em|BewsQpS&$2cHs1z6%9%IKB5+(Y2k|~^G@@us9VQ*-%)Ejb zi4Kc77-*GPVlD-g9u?kLd1@(SK{r`_;y((^$j*0o5+ebsguOlfbC;NcxepN1l7>w& zQLh(j`iVpnyY&gwhTh4qK(1w7i1O?wp=vK_9WNWZH@N2y<40ybcc)n_Pd#f!ecn)5 zZ5?+?t}R=p=u_G|OQ!RNuT8x1ReGW?6%git6T(k%3SCZfq$}vNg z>E|L7l_pCF-$+wim;T8ZaROHRDhclr2JXj{8LLOZG)&X1nz#S?UT~xp$oKzayb&6k zjq`wMGmdoiKz-E*M!q`Nj`v>-`5-bf6+|Z0pe<02fQlrz_gZF=NG+3SYrF!eao|aC z;OC(rWN(uG*r{cUE@9a#vw9Ya0y&03D!i4lk2yS1bd562@0+klAnLP^#AuHP5E-Zw zb;?zZx4e>n8t5l! zK>a6OkZwXJ>qHIkNgmGNhKBN49@?l%$7~Rm6&8RWjq0?&SHV1uWxGh$HFHkz|4J6| zOKoWZo#M`|jFqY%2zS8~lywObGw(DMv~`4;Y;Y`zhjm$hNFVaMR4q9XNsmEJtB^HB zym9hZbVs}~CA7aeV^^*!OQ0^B@Lg$s(3r4S+N6u2XDBVOKTSlQfHyE+*aTyCRm{m0h=4*A03lR$F(2$=RU0Ebo@8# zS+ZDZ{{tXbHbOgX+ZVRW96?TVZ{jhrsvoLqk~}W?KlaTK70NRavFa@>iK@PD&qX<( zu9|+a;9FW>a>z@M(YV7dt{~W!o;73IvuLvWi~+&qR(^4gb7>_E)g_RK3 zx=gVW=B>5sK}WPsSqY4ui24Y`=$JJ}EVw3FvtuXuouiB}GGI!*&$*|DdBy-RAz)$|e|>s?tWc|rIe z0AmVTuuxe#ZJ-^x2r$QvqPsZ6n&{3%8<`Kw{O|Jy(z1A*MnrPb)a38F)J^-1Y;$2p zC*ih#Q(vK__S>9ZTu~ymL||BZtFpclkbN=on(jY9<9T;aN@R(gqa$N=S9PIOgBseG1 zs{MrqKz6@en>je$-*8TZvy`xha^nQ&Fg0sH;~lp`AGADXBV9_XAhIyF5tCc&Q!#@# zD%gL7KJi(citn2XboH_xHfq0B3hSn;L%X-AF2_Iiw~@s*#*T_l%AqqE>%dF`DZcfE zlil6LN^d2-2dHm#cFpBm>IzuXX!q|8qj<%mj-FON=s4PA2Af=KqhW;8unNieLkrzi zjbvRy7JFo3>ljjQdA)W!*&9S|$a0Gw7lGsf6Z7h(I4fE% zf)hKy9q;aWJm4Ya3}P-LwCs=}cMf=vlpsU=;ruPAqO zRSN9)5bDYDHQnL*S*^?JN8^ zXmYi!2}*8(5y+U80i*2P@6pZL5da8s60&Dcc^ z)KTMGUjoGdov!i@Y5* z#bX(mGf_E}d#GtNq7O@qU+cvW?H(jk>J+j^4l08#WvAO9>>2SX!k*pxP%-(Jzn=^) z#Maly5t^KINeptl(@hV*tGq$K22J}oYFqS=n(g~L!lkq{M$f%*yo8p2 zpuKH0;sVajXm4MHPzXr(;+kn_$DJYN(@4h)7o`9T%~LAp(~f*tNtwu+-3Ko=uHe}PV^uOLE$Im8gJjv1Mia)vxBzAn3@?NqC@AYUNmb}i{j9KH6P zRr^p6@hf=&mpE;HhxYLx6ncqjq;+uFEv_}Gm#I-HVuRgovA2=wQ`+*ObqI7Md>1`A zAH!G;Y;Vibi(2e?t@x}qtT|!*43Bsd5e~RPwwU4^D<=Ae{mIPgHmU!nm+O36)%Ol( zr?`Dgq&L;=P?6>f6}wB$MW+1A=_9upP{q<^B zISoMkh%;vjpNT}tQ2(rDdN)gry_L9u=7rGUn8 zD#1zEenVyGT$l{3^d`!BEL_9^y5!Z2->5eHG)cgfX;|uoOROOSwM`e^UBaobyGEyw z1ZQ%Ws+r%Dm1GP2t6=~C26wj?cDS+})T8EK=MReM+B6OZd2BQc%4u?gBKK13WuT82 zYd#O=j;+U3W@ig21<2DYce1H?pfAvQaj)TV0bzkIOU&hAS=(+FPceE3e{S~kMtXZE zN#62M{|=hJkiU`{e6sWv-C(N-ew=y2+_2NJ)$yiA52oj8h$WI!bb_Z83;bjGL>SNG0?hcqcb8a1EFJ zG;;h!d2+pTc#2BhXxHc_&6~II=_x9ZQ6G%6vEtkwo6uIh*vOmId_>5ymSF1#_ z4ptS`GMJF{(xw_Cs>w*)L@bRcj>zSHwN;ha{vszr+545ri{#{8X37oDkC_`#jB-Bb zUe+i|3#>9%A+@Dp?)Z!9QHZ#a&?u6~<>d8X{W|bRk>NB$&J>CFRUc*vZ-LwHp6nkv z+<6h;`#y9Sqx7O0ZJt~b;KlZ~%&e8qa%(N!W@?_Rb)Ki*{5|x^4}La&ccV`ko_exv_cI#aqaa^X}cBDos`x2?{F*q5nMmg`vd~>me<@sl*s5!s6 z8~IA}*HGhDS&&mW&@F@%EM|uq8#{Lkg`MczXR_5*~U)7~q_nm70&39W$p) z6m5FXO&09Rp${n)wm5eiX6wvP_ZP%!EsNTk^MmkgObqUSHRp(qy?392TXHXMTKz6C7!jBS28(X_ zzo$OP=qg&i21(4L1YS$s~%9L&)I zibyxU7#y~W_v&pWWF5Sw40AJ?xynM#h3Gcwrrb31)3-zWeq0K5>b0SnP(RR!T4P#9 z?j2)+5#meg!z&RMDzoG}w3`6xm|CNNoYcbbw$~FTD3k1JFHHwYsGXTfo+w!0He2Ua zWeT>3+2t5$eK-40rTQkSOt>U>>V--`#x+qJ@81b#Usvu%aC+Wl%v@fpySQ2#8De=R zjoojdQ2x6>8&7>+;Z@{$DcozXRR2(U16>t{vig75A>9hH~yoCLmY1~q)WqZ3iW$COc-UgaiLi|N-#7p*< zRBDn&2AN*eW8p&$DW4<9RB%QYS<;id-$uIaGsf_%!m&g92Rq?DA&Y$!sYlc37VsH5 z*~R>{kwQ56D=T*7w+ukc>~lP+bFx`VB~Z0%L3M;~7T5y0^3=pQ6nRHJ=dV|m*bgFs z$K&xxQJ}xt_OIsld6Bwh>OtzL!YiXne7F}ZRIF{KRf}y2qC3~wb`X8#G7{IJdWFeS z%&UhfU#Nkj=2IC%{#OobfUlVr&39CF;m-*YhS}C_h{D777+?p6#ZI2zDsBgxVk^Cv zuy83(@yp7&_MpK>WtsuczQ%W4X2cObYh)X_{K$?D{8zhzvddopg&bGA+gVEI7|o=r zNPqG3I^?1ogymdI&dbSppA*t%7b=!+9C~egjmXUS_$S8XLLbCpgKD?sK99|jnFuu^p$D!PK;VBj zuEm{|qigZ|sNEX9%!la}$J+mmO<%k-eZ-2!uE~#!un#aJz zUC?F~l^B|ms%xB8#K6&u{JtFdjVO3c)+>8o4okjmKuRx((rywIv{b4sla*0cs^N@N z!Cv`}a1is}U8RY}%Li6wX*EY=mfi#J0Ni^GhyvqvWxs$#_XPLOY}OW(D?N?PUE=I( z9@OTf%xC|%}YmSpt>B9ss7qm?sU512;*+HCdj$YhpG1SOSeuC4QLky`IXm;TQE zuL?%2z;N)I7&*enD!c89bo?Vb3Tihnl=HL8aU6Iexx=HsbGJ0`ugE*>5Y+`h{VHwH z@k!V5(Jg@0u;fg$Wvk+LOV+I6Cl*+ID&T}_6B|E@rof2jo7l|2+NyHH2Z3QnZw4nixX zZU=0)5hv|9r27Y@f-5?mu@5j}GaB}vv)g}0e(iYw;PyJ9aHUsH+i4(k?lvXV!t7L2 zih`jTXJ-A<%Nu`4v+jWrJcKpDR{hPfam?(G}}d<{TnO)!9#$a%5G6czfS$WFgbo7yu%8Y zU8e5n&8Z&v?EXnV1|&Y??0FLZN%i_#YNY>}T|o;@#!yCPk8SeQ2q9SCxhxcf4Xv9y zxNxY;gv!Bg-5%|Dz~5hIOp*1D`GgymI5q?m$;~yAwBD;-4G^lmmi1)v@NM^m_4;5w zd*8rz8IUHFFqvRqO3bV6k4wgFY0w{sB}l~mvnI_QdylPUjj(xri&^lzzcupgEO?A| zIHi07c{WRIawyq^kV*P}ct^4~%$20LG_h?~;&ot; zf8J9`Nap0p&sA12-lJ;PSo3yDXJ(X@Lwmjfk?QQ|J%YKG$Mh0+@11nexH0IM?L8n)~fm`x0!I!m%IbMgICK8eN&M zLPr8t=OgC`60m=E9lMD0nXB4A_^d{0al(lkTFA>I0>3ih^9M<~?!l&A11l;-1KcIR zsT}~%j(edw$EA)2@mIlwjt8)%s(!03W=KUOJ{_xLeJ}#y+zvKVE<21z$4{>*bsm$P z%VlKaEhbBOf2TIO-=BypvRmhluqv#xjwIYClOtd2yz0utK|8?8c9+yR)%ub?kO8MS z6L`Ix(c_<5!&k?@3`Vzac#gljDgcC@vVa^?A05Yt?+D4fiZcYC8MJy2zQ7ahue^N) z!Cw#p3Uiv8Q2zOz`~F{*chVYq^Lc70tG4*Yt#!#-3kME^bs7I)yT-K4f3%XT3%z>8 zQt9zQ`@S%g_tIdBroZ$I41Vr_^~Urd%Htv3nuig-hFXy2)nQw=4?MgY>3}!rv@<$! z{kae=Y?gf6=mz1Mx9sK2*snHN%{4}D;fm2?*dF2rYaW@dxwt7--owq5FEGEhk?|_` z?~YKHB39T$<(387^XtV}YRWnowUxU1WO@HAni(AVIQ9WTrbO?w)rOD$r^=^|JRF{U znXUz=E%!Yg@U-`Zti;A2>A-7IbCg{VFN^IyTtFi~%5bd~RK&e+Lcs=4s0CS_#EP?O zcbWHe;LHB^?_l3*e;&1PF$NaWfP);=fACYuJ&VR%_HPW(|6C61Jb0#)vdAqcHPmP<`dFm~y@{I_97@Wqb< z1@oHri{s?G2PqS+1jh@?IQg^Yshf_S2me8JiJ)^j+3VmRPL+8M3$_1Z_SA^+<*J>c zFU6)DRQVlebw&W#t%dX$oo6SA?4Iy%bQNB2kCUBQdr$ot|}ENNm@N^KF5&Un3OvEWL{m}x9KE94QkhU z-|9xt;}+l=O)-09`bhtMFg4EMr4Lp#Rk0iYEM2;{|8_xlDghxy5`doVHfk2P)a~KB z??3uA9inr%TN_jxks4h`E@wDfNuG8dxMU$cVE6hJ^>@%&Uh-{EcXRlY0qFMTPgnee z0PS-1U2n`yNisL+pS5|N1+X`C?_c>$aT_^?)+(^@eEdz*X@>%T(wnRyaJPAEnu=(8 z$CRgzI*%2b=WN44X4B-9Uve(|)NU3iewYd>8h^?1#$S8kzaVfBKTD8=+mmRH>~|BT z4Ru#bCC=zMUq^*>xhXp*f_+GFh*iO9n-U zz#Ch+-HLn)&u-sCk@T&)ko~uE@#A`B7k>L_%ZL=zxQ2qfO&z-VSP4p1e~sGoiNt0v z<@l@YC%rP}b)O?j`1c;HG7CMrs}jbs<`^r;CQ4hhiBJ8#8Sg+R_wQq!?vr~{>Mx*Y zCwLdv4&*xTE4x46)KUJN=lFqa=>s~K4-|c4y{kJgMe(&D&M|MvOC`mqZ}Ed)XPk1~ zfZG1A+@RmUc()-n@FfL?2+)OST%j&5v}7;rSTTj-Syqjv-rI+{$v*vyf3sS^U~=)6Q(=3^p}&lZ!P*mu1vO zc$AY16aQGi0sZa(hQb*PZ*c$0X{ZhSHp~vNAGs&_1D3U0g7d|*Pvh_8kKngMDRwECU8uu=DN3(v+f_Q)Jvm zQf;ItH*PItgw%6TlZIui`vpE&K`ZJBRoUgZn<|S z2}=NNicgk{@Af_MszoYWvDdS~!*e(-x<7dQ40L>@D+!-q<7jQ3)9_H<^OQ$LeU=Q7 zaJWSrr8%^Ibdhi6Dq{=c9biiba_*ct2SG=fFwVq^7l7Zhmu*@0YKf3|JJrU1zMqSa z(ROb_*)-PC!IfqWLDEZCKbAr~l3kM24~jj*FJkh@I+@#_OQrHIknsCw6{0WVC7(k<%9^~uuhw} z5lw4@`ksF6e8ggxPIyL}JC^zm>!Kx`)s8hz4JO=p&P?HI-I-{7X1n3W{G{m6bvmhH z^vR$Di>fVDWpG=@A;COWqYt-Vo-|lnb+X$&J$MjkQrtMMSvQriOGH3x zJ=6^*;Rulois`$!37%0(#ZXdoW*GaKUj3!d;~fV&y|by1vPD;e?hpH@cUjmqSJ&9y zW&!r+<-E=DA4Z+BE)4os<7gcr%w-nf}(_fr_|A4)UT6AX~aaFj7MW@^4tV1 z8PFx{@@jKA;OL4CuPOYB)GnpIq;+=s?J9JKcTS zRuE-3rXFQ2~0%1T(l_tQ!3f~UKy znm!Qp2VlsP0c%uipzeQA)pq)^bqIp_azx{6!M^1@aa>07$gVeQ^62q>@X6WLI_-3K0z z1#_0Y;I%6vSFgn_s%7LB6V}DWE5|i<_tP-n{B)6(?Op+Z-)+pzHMV$dJ4GuE12!kL zf~(OxF?Myj1N1j!>WSv80DXK1?F!%?LuwotsxZUDCO)~u?PcqQbB-<}6?yh39B46)kXG*YsQlrAgc#3^><(+udl!eG`k7(B5+l!Cq6@k&e|juitWU-+(7lY&-Wql_DJs4 zZ$AzMx((Qtec0Kh!h+VrZ1=xN;$*>wnYPt2{VgkZ8 z`HGQ`&uG9G9qMgAFh@+Aql2%(kM)4(BTpHN}3AcsFSMQ6G=eF(<%99kY5Fu_*-9 zwSeu?2WLskatLsgaWG)Fs5$lTbQ_zvrZmU6WW(!T$g1=+^zDb%G*NS>N!ETX z`@KI5Gn|S9uUUf@O+zUO!%sUjLi1v)X zL8HAKebO1Ex2LJd0o*;KIRkIv83*fUGMPJn!0oW*tk&r-W*CN7i0B!ejdKR~=w4b-PCjuoS z7^McG->1_eQv9mk5AtebPweY+PGUX;WR2|9$;4;(%e0}Ag`V3r=0E}ko=2M5^4X~f zs|lz~RQ6$&G965v!MYqmEF)b(`~3J#G$BUs*v!Jzu@w2Z(leaH{d?><$GyTe-pT!Y zf%63pMaDEqfRJf7LxWLGZY!w7zgNkxijVE3!k66j5NpL3LFtn-`UC=kDeyD)Jdwxr76Muz7^10K{ROMz+{uV7um0m+&+pZFLJI98p>y$|HN&OiD&)s*!8$ z>{kzqH?dTlXDYYbmT0drXP-C@FHyWQ(^U>V{+lpqyHM7ZpKR>#JqsxFn6Z}Z8;{}$ zLuh(~eaMn=altNW>{K7gkWHdU>+r?OFdSX@+9|Q!7ukFT&!61wKHHQz;0!4+NJ_`{ z3%qpH9g#fH8*q*o2vM`_?CTsKWw=d7X_R?TujY$YqflQRZ&+jXA}prKUHcZVZuEvV z_8x*M+sB;K(i}RA%B4XSMTpVd-G;iES@R7x+1?F1a~JSX$?=*rG3rd_M9HS zwSSNc_05#C zN-LOBo%kP%Iv_C8Av>h@7|&K&CAeEN(7n0X?we>=E}c2Hu^E8>7-|MKpR+?Hb@$6i zz>))NKo~Tdi%YYyHE=QSep7p}7~`g-^J3WmPWZH%smfojWevEtz_VfEcBMvmHt#E; z(L-DjZ3D1(VXH0#_cTO~w?i67Hm>itSWtO)+}A~dTpAH#*0I&ghsHzI*a_JlNF5{u zRUXajVXyJKxq7IG0n=O{+h3l|IRoRk@3u_QV&`pRwN@v7ES}4X_3@sKYr=02EQ{(xfa!ewt)ipUP+kBnlCPmn~7dlXs{ zzBNRpQ)6c4O2)cZ1d877Q#U3_b2x}DY!YF$bk}pL3-d8{B5d{zxrn;4(izA8!^@i7 zUhJUQC*Kk^b|HOsd~PzSpQAT_xLKE|*XjO&5MI;ybwmGL`sKR@1NNdyp z4^RmcI^vD(<)c$=uEfgA(PhP8E4J&UZJvquLB80pQ>Wf1H%lZ zkDN9=!Y+=ge+%DaKWHwi2x)(O1--ZWrE;?bPb$vsIXG8(P@nP{Q|~^(T&ouwGh*CZ z{lrGj1sxjp^8{}HiU|OTtmJlzVgHdcdG+FY@`l*vly?iey7kdBAs6lii!m0!r#7C+ zWw!2p5)4m<=>%RSY>ZR|ETB!?6ffLl#4tyn<@l$KDg~ z>kaJ*24%oT9F@1^Ja%m~69C4bMnKuEM5{8#wbErpZ3AF~uUl0pObHZC?MLf<#N`nc zC7w}&q4`TwJ(wX0)58HxvBO#Exc?3%B+NO+oRY;t0l}D_hkq4$!0qJ=LIOowNQZZ~ z8vvYg)^=+J@rBO-X!UX(>^vvMXEn~f^{vArquRxXR^qs0GLFo@z*cmDNk7F~LEA)z&n29`u zEeEU=AmsAG?C%$VbwIkY11P_a8+G`5RV2!Jt?S$(CsFa&?kmKx+L`RI`p`p1CY^rQ zbWIJ-6BFHEtzxLRRR=~pYQIHuK@4<>b?gAeO|-X{sPJwLv@zwp(QM#5?M^~MwzK5w zny!r1+hs&A%ZGnU`I{}^q>>kY^(xjcJ&I4yOGyvqH)D%WT&^tN0sI82P^TS<9rVI2RoX$8O6!TJ z9(y_qK!BU`mGAoxL^ZB#{YCBmgJh5t{{LqJE^4c363h$_yUIjenWO)B0H(G1iZw$Q z&ydpH-j*&LG}28MEf%lBQMqEWaydt;TAjD|xtxP# zoE>t8MXXlp=(9Bfbzu>ow#zAp0$bnKT{i@J9Xg)0xqHx~!4qL+gg%a)uK#TKF7$+l zx=&jeBYxe@Ank%#;?)j(mQ`W1f!!1!JJL3(b2G91)&nDZC^u`>48jwe;6(${mdx|= zeq>m6shus!aS=!>SuW(ZnZ78z@if@y$M|__`^z1gk86w0&B)B4_Q?-yQ8QOs-O@cmk(nMc&63wRUkrqfy z=nC7gnY%;=gPjnzpCa}#=Oy3Z&+DGE7)xluurJSm7Pw9YtoQGd?pu$?BzU#pREZ@>3%70tb(e^0UuyrVhHrnge%aAE4ut!l;f(+76mDGC^HlpS(wOOU< zEco(@NSAi@EF@xKkOerOq@}OTfTfVe~<(YwLqwoQS}$ zS%jvW^XH^tls^KpxjZWeta}KWKjpn-?KICc%fYM-exv!uCg7fnO$hj7jB=V_ACT~w z1uso+q?LZ<>aQyID>yWm&KJ)O_!_T{YICQl^HuF!&Uxy z{wF-)h~71`l~O+6>gNtp_#ANi1$5Q<;GBTM5bL(Od4EElT*v%+Q0#q$p{0$hI&&pc zg=T?5*wtUE^T3wro<-2lV0mfsB(=G)=8T5)$p2LB1WWkjiNh9>Aig#)Dr+Qvotn)x zPnSU6OL^v(r`i<_&Cx98_W4x=%_WXZxug0WOn2LUj>{eGJctkzVzjlKOH4lE5kh{1 zr>Ca_;r;BIfQ@=hvmPlFc&5GnA^NJ!r)O7unid;*0it_$JRhcw2;tOk>8a5tT`Af9 z#!PQqGkth>8?=F5~Pl zrh3*xUa96oxF!HfHeb>|ke?aWt7`1hAkDa2iR%?5u&O5O&wnUU}Jc+p&L1&8ZYp%M?b=+!@nJk7JgN#s3;uQ-T5&#uvr z=OIE?!{`!>ok@u5>?D;3>k%YQ#9>m-I`suq)#UVS?jb}X)2-1h=bf<2U47Z=UW4|J zgPQBvpuEXcmO##C6-E46cG{&_DYq;R02NQryBSlkM0uhe_a|LC%fZN4`E}%Z(CvBI z_2%TsT0`<|Z23}iEwJ@LGfgYtNG@{*6TLdo++RLL$m_1)#K&I?{H!4q7vT3!34(v2 z0lTgJmo-tBUE}_3qdbu{Q9anG0c>w6(F~x|@K+v3A%MO4Y14y>{t1G|3qTuqx_OK* z`^Uh^_KQAWgDY32f@B3ygmk*sb$M-9f~s zot{adXmvA(in{`%R1DF!bCmfzt&uvZWMA8p{Tl8OY_$JvmSH-Sg zH$*YsI%>Oa5a3vC105dzOkjkc$W&Q;_Gtgb&h@Ccx+7+|G<(+FHy0wf_VJ8XKWD|| zA8M0FkPL&c66W`-bbJe;A#icZ^&L%?NT-#y^KMUKF&;&<4*@fcy;Y8UCT063gC;5u z7^ius+i#B7Ej09Z&T9nLc~!kLw~r)cqXsfSU#iEJT|u5*?P-U-0MT_gAXc@yqSD3A z+3V$@#<=H#74%@{=izTCBu6p98-h-kY18Hsa{dq?zK>8t_F$lA$Cl=X7)A;C;qd6c z|9$25`-%HTxF}|2qaO49?GGT=;q?kebf&2M>VBp??Xj@s~XD4rhme& z4yOJ%--*=d)7e2hCw=!Sea|)<6_}~hRF&%piv-T1+)3hJ+zzY1MgJk;GzH|BT`m_j zX^k6>tqzrZi+{SEZp>`y6m1E1PNm(n>P{&j7wUx!kw*fWwA`W)oBLDkgt=jB;4A4X z500iqI%lm^O;O!4*?zgUv|)~`qCWk ziwU;VJ}6gQ$ibRu0DeIh%I!BC7J5+J18QOwHT0&l8pc9880j z7?b;cL7wkt8*OBkn?d6`l+EZa9#Zaz^lS>S{dGO1Aj7Y0z&PRPkw|@OXW}WB^crZf zg8ksS2W|Ic-_`!;zQ^^<_y91`dOu~^%~-d8+_}_;$NWJMho5{Wex73l?_JHguV-GS z*q^*fwM@JCkbSOWKFD=Z@Mi|#cO6s;kDGVRGKw>wYo4*sl>bKc(~NYzo0<Y-N zU&&h`$QJ)E>^f?=OJ@@I+coH#?nj~#_4~g3Gxb39SRjF@RWsZDG62|~aVCcZM3YND zoep;oBWAmJYi0&_Z%%%6ymxq;lJ-T{Pg$s)39155q&#HZHY0tsrD(b|JFQr59v}{` z4&~KVD<);8x6X9CyO*AIqWLQ&&Dmb-ylJCoH2mB|*-eQkz}6bmm_wyvn~6lZH8r)4 zJ2AB$)oOlG^IDJGrGZFbYBQmh&GvsPm?hvq?m(PhsoWqW%_ zwgx~lPqi0}D!**fpXd_jv{)q_AA^-p(I~pBpw?@Ab({RIp9e1dBIJ2YGA4`m;8Dpn zy4d1!s*$mR7-3I;<8khBbIT2& zKX4=2rbu=f+O^>k*Q#eN>AppYdPckLko{iD+y2_pao(+xrgISwS-e)*AK*vb=U4QD z-xhbfB+sDJ%?0+)v1R_M5H^!mVZ|rgq%ZjjPdaE}{`^?>6?AS$E26xe`x~O@YyGe+ z-MrwX?07T-m>s0fi#o*6tX{=o#?8CiFRSY+m!wM?Ii~cft?h&n6~twx@_6PRQH=km zUl|M|f#|Ibh~|05T{|vh0zpaOtkhokmcrCV4HzME_Jfk<^CtVR6#f>oY-ed9jc)fr z*XD~nC+)gJ`eGp4dcn-TuzcuvCP;fMjY`#uTekuVg$H^vbl^N$)lg$L4bvmI?@yk< z{qBpn>j7rAT#pp7M?Q3mkHRY|QoNLdF9BhfLyqjE3PE$b@`D=~P)WsWpKVX0i*>Ax z0Y0zf?c#uDdHTg*B{M10YDJoiA&-|c`JrSk)isJPQbAj8HU8`RjsLDW&G0GqW$~gF z4On3`PIv9?6;N}245*Q0hDCId_BRLr+p*3eXq~N$4(vHkR`vYGIeLlh?cS}Y#ssR@ zz~8ls8=Jj)L7jP7b+0=qa0&@9-;TLuaE_4haP8-L^mDZR{-VF+_V>`|_yfsaG*%0(01#Q~Sv0a3I;RvZI;`o3Ht)zm^bxbu*w*YQckCvi;Wn?(|k4hQ>i2{O8E@m6!#hsrtj9nCg3tcGMRg zI%Xr+N{wrNY+i^B^i2wy?ri8^;czqGH}N@U1plKU+CH6!xKQ$Rwldn(0`p{{;^*MM zz(@m0MSgk}`0jI#V`^{I0i`Z^T+A)5!w5OgaK`x2j5Z@E5b@nSse|4d1z5!^H6MWE z9O`xQaI#u*vH%lAQoZIgj)^v{c6eAPi{v|Q^Q}{?Fz&}xeo*D*?82w}qVG)izx$~O z3EW(avU2_LxV=9Apu^&BaEhxWmZe&on0!{%G|j|rFMTb_FnG5b?N{|vWA+N?fAU@p zPN0y(N#Edh&0S;muTu^(13rDTPDBJXKHuRz;}oRIcNQS^?7hBz@a0a>-XGAZ8T*dT zT>+vr2x@Y+OQQ|yaoANbK)Sf>==SPt7~u=9NFeL+bAsus^Y0J|GT*#K!#Q2T>ca}k zk`tQrrHNHwiT5I*itJc+!sr}n8^J+afOGo%7jvI~Z~c}|POJ`Tj`zDETt_Y4n+s?uqd_x5)j+0Ac)MoC9GgDs}I= zrw!OrX`B8Xs5R{4U^z}BQm;u3W-tTvNhqTDs$OOjj(^JXF4x{(L#2i)E#%;xzTLU^LIH#e8GKWH|TVJO6fQEGRY>$|!QIt`?VoGC&d)togg!@8v z=GYSpk27+Eb5R+=+CV9%3+X@ADWDVttE;)I)(6ApYBi%)us3J1aqOJMntzf-nsW6< z8QX;nr9HfhsleczF6c+mMHta5sEebYZsCxa4ZTnq8|2k5XvUFaLE%LtRo|)HC=7tc z&4b^2?6xq+a z{cc~N@)i`A?eOyQ15c7Dv`0m}WZqrsD2&#JB)NQy+1LbAT6`Wv!j zldXKSp1OKm$T(r^&K6%D%RmJN!9O>)I3%%fo13k)cCiYPGpK;=f1AGQU9IQx(?_aj z-y6Tntc{wCSD*H7PC8L6u;Gxo@sp(cE5{n*G3kv0AI$nmMCTC zrG6iLg6Fkqf3Dhe0v>7m8zBFOE{wIJ-W)ymVOg4=!h9A|`UbpRqWfbxtCTW39NZ9) zrl0527aQsal4=&6C+8w!ly67|sV$^kaO}{0CWQ4hchRD=iAjtb!*z-!*H^~)#7lOi zVW!a&i7Mpji&Y+19TKg@01e{Ew{^;T>PO+Q?2qYIckIu&#)zQ=sq>TNv5fi0FGhNU zo&}c*#4qO_zLK2Tf5qO`4Q$-yK(AQ_S9pGwi^du?lQAr!B;S@KGf&wB2j+`EGz> zFHB*5Ccj(v7>@$V@cnYr3+EMbsv@WNJA*ug_jND|YAe&7+w8VOX=}R@@|<#zYT47E z@f(t$&Bp=;=Hc}7?{uenT{@U1b1+); zMONUj(sfkD3-!a{(jAW#50Z=vDxb{}uA&Qls^1WgVk9xifv|!O=jGU-w(V}*rp^j{ zH+${@1$by?kN%VS{YU=c#2d4s@7XpNx(vmWhn8;yg==UFFP`7Ru=dr=M^)c}Jcx9a z$I25&E2STDI?iTKV8*ym_VKjvDD?Er-JRL3d;9mhx<82U+2$|sXT^&c0!EFmPDZx5 zMa?B*bRv+oUy{yxtX1`B38)IqJrv^(MU16E(}5t$<@wNCj-vj z63BBH(E81fvKol&8=B7Ulk$V6nz!P6u$B#JxR}_XYwCBgyT@{6;-&rKDPY*lCT5QJ z9)>}ibX~ZpEF-^&54ZS+p?rC9P+w;`(${#)R$hC`h`8Pu@#DL_x#^8eM{qONZ(+6@ zQ12Vh(UD&|n{C-i8?^vGqdT{Ag$VqZ{p)<9pbff2?^A!n4k^lUdPx)WiS|7gmidD{ znOFascG@Ru9Wt6nS!iA420$l5UPc7LE#U;=jD7|IeH;hKg{~} zzZf;7*A6LR^nh!+6%9Oy_q!+K(#TRkTJ3zJB3RW%JKK*e9C6dI=n5wgMeMp?lOL6o z8F$jF!a{dArNbz4DzCGs9L3$xlLl!p^;VjbEC|GGH8c(yVevN?Tc)&w`^1R7me1bT{K`cT`m-2WTfX!PSX7^=1EoryLc-~WOP}! z32YeQ7~mGH!Hg+9xmiGQ#5cNT{1d*5O4QHE1W|Nd zo1*_=elxYZ4}gN~b*<&9>{?6&-huD1-yGNqj5;advNaRIReyiOiLVvaxS#8rMUQKa zzuE0>eh-DtFH&#z<%G0#`96=>cAjnOgs`=Q@BVstoKIqk~PFQkXiJW0> zv-z`lyL4hA;w%k7e6#c!kKS!MxmZh7#;I6Ua+l{<5Vo6SvZ1alPwqWaqv*G!_{L84xw_w0`F-l84Z*r*KOFu;_i^@xJiI9R z2#Z$)M)ne+>VVZ}1u^0-)@iG*?y<=pY;tmExuv$&WFK^@n~hDr%l>f3p%2q3V}SY7sm%lzQ)`=*(q# z!>bfSi_(sL2>#VyFN^jKs4s+l8vLvG0rPGX7?t?fu)K3-7F*?y41EJV$Z=!j8SahS zN&hjDUF{eXU-0{^erp>iCgJx?eUR8jseGa_b!40T6Qqqh6j0LQg+)@nQ7tvLK#j;U z9!smhH%Z$a6Db1<1#tV`<~sWFEMBjFV-FIpHjknY!v%9&=>X7|ci4b@4} zO<#J!uEY|&!{!3$VKUUeJXh}EAeCqOM`_KCO>^?OmPeMsn(MfBTYWG;dy(C>2IYSj z5008G)&U_nx~U=(9R&oRQzn7T1P$`1CUm>3B~IqDk}HE&e9g8`nmqc1BrmK2^v@-& z&YjOj^GhVHm0sephD40VM0zJcg<(W{N7 z)spXJNX--8i){@4?pnv6ah3am1Sbkrpjk5Wo<>F5<=iAJhG=h3k4cbT&3Z&2d1FSI zj@hL>;D^(p3Tr>>$ieShp6h7Hdp}&9;hT7i&<#T7EZW9Wre8Fx|}|R%(etlsCBJG%8z|_pz;Q z=vytq{F$jn5nm&%oux1EC+)TLN1PZkW9_qeawo2>9#N(9IFmuTbOFe2sk!S!o*IIbCH1v!!PGK+oZt0Hnt>B5WZ z%XMuF65-(D1)luu3`f?z=w({levhn4)0HmZM&SuP_n*zoP*>*d#9O|FH52g=(j$;J zeAaO(z^|u4d0_P+8%kayOS2r)I_h2D0#<+i^*-rO2hYyRZ(gBYbh+WM(x%3N;(fzy zz;T6Z2y_eK1nqDMEEkP9hH?|P3|n0{MYgYUHsifiMAJC0tDi?+z?$fW`jO6!O#K6Z zpx>f=ZuD2zQyZEfsNEf$y~N$s?%K?W~Z5$Q3sPvYD9XPtDZ1#^Ng3&MxuNJ zJ6V~Aold2yFTd<=NNv}>B$|Znx-PLn`Ds%8HLZA`@aABN4;qn&GFYIKT#QxlVJ z=`tmQagbIqb?XuE7?FQ8A-OL+n=^=FL7l!pkJ;B-cYgb$&3E>O=xSBeGH~e~e%X1~ z^c7HHRkA%(;<2dTaaxrp7O~qF^6y};C5iZAi@aPn1gX}j#4!FR`ab;3o-p4!96Y~d zu60{o%<1_N3bha&4?CqcwyBWV@9uXobZh>=N(z*MdRZuOcnY_=$kS|`tmS~C5q@?y zJ@$l?cO`bGG0fWxWvEXNklk1wUI6#%d=71!X5QJz4N%1W%z89>IVGP2${$#4jW3R(66xk z>rRdAKRhS0b_LXbY4Vbb%nvS|uzi0u>c%sMn>Aj6kDC^BwmG4@u8`t~+yW&IY_v6R z+|i}_VYcHZ`~84szRHO=#yE1FzfbaSyy5Kckl~ipZq6N8b=JzXI*j4Gt*I_6fB#Z8 zM^kmP3(x(JTf<4*=(+KrB)}L`P0eq5pv7a&g{SoAmum3+LjA4jL`aOLt=7I!UK_lbr-Y&5c17$tLEbdr7OpJ z9eI&d zQnleN9vQ3gBUV3Y($3z`!Aj1e%ARxt?E^aoyBx=L%tqdl5k0G~#Un{a9U7_e5j_qm zxkNS1z28!@`R8i6T~sD*{)f$_&~EarP=e+T6saInK~1j<;aX}_<23)c?&F8kZdo{e zbTlN=M08!{aecrz-&eMp%+Ic1{+!WHotxug7xy>`4kcW07;Th)_MQ*Et9&~1ERf|? zcP=}Ncx1Ay(8esN`D1~aTu-Ao_UOdam<_{wjq$=c>PeZq7WIbyU8&7>vDyD}T~8~; zvKWM#qP{vM?r!?Xlrk*(W>a_jXSQQ^n6kuJ=x5)En(p^I@l>w%jslKTj{UWkQ4Uyp z_GTOnvQPQpF5Dh2XdkB}e^1E^u#lOk(#UPl!??yQ()nUOP+x4=Ey5pdO%fV%2st4& ze~9VSGudT}@8=e97`Ob&yu5wM+3tcf;THhuPcGl;J@gD} zjXjbNNrxG&+N*n6Nt(nuG!dK_CE*SrtagudMQ7ADF9!cdy@EyS8iTco8iNa6s7sYs zf!m@NZ=XmYa|(j)bYBd$ZU0`->;k`;rU37vkm-l$&*fqouR%pYmQQNi$775HY~SRs zc9E1x-78sTYH>Kk5RjkwoOCycJT|VHr&Tkd=OR9r+x>Fi>dj2VX!?nReiu5w@^3G1 za)7NWkygDfK^#hwxcxl5zhT~0C&mwFgKQ}Hn>-p@t05a=vn(U6`+3YL_|1?};s}Mu z;gDP0dbDKjo6#ut6#SIqDB(c?P;b@8nIkc{;mp|{{7wX&4dCQVxbTY+=7(GH=mQ^v z3@GaHGbZf7Hwv?e6Ro=e87dw0X!kt|{U-vIQ8<>b!HTBP*!OxFA5^XBo>{2{i0?_U zt_FI77RPU;O!_1GFK8ya*(}p81UIKN^ClaQLkyXRoD5ANUYagt^Qajixb1Mna0&20 z8;|Lx5Q~B2m_s_ei%A?(sspSPt~xOo{I2xZXI~J_%#aOno`T> za-tOFsdF6VQF4R5A>oc%=}jvxp(o6MxtE_bE`13 z2bz8PFnPamyNY}}jn77Y+_@rr{_SGJ&I24~t8qPwd{!pC;fr_GzO>vy`J>^h4+{cDr!S1?^WpW;)u ztc~#-s+$E6&n{Wq+jJfE57L3S$6>YaiJU^WM=#9`w?F6?D81hllQLR)qjpQ>=dQLr z@SLAaExr`fNX-hF+Q57|4tqG)SvFMqWS&U9y{4^nZc6vXz9N|DIDF zSb#{iT*LA~b@73amN#iLH-ww-pkuZp79aTU8n&G+B`JTD`)<1F)GX>ZA9t^m&L;ww zpb<&hz3DF@!gxzR`e8uGE6Cbh_|Kw;mo-M4x4Wc|8t!S1(Tp4vFzX42hh z$=j5kd8o*QP&{7*!dmf0_-=?`ZRv0P1@Qj6 zfz4MWA-zS{(Q64Sp=B@s&1{DMnSHduYlu<@4efl@FnR(tSCpdNfH=?i1t)#NTF!sD z*tm$lvjKr_2YPPdDzO}ULW3v~&jiZk$b32^sQljs7 zee(E)!qxQu`tV&EM&s76xawyVpzrhTy_l#uJ-`Kc~(U>C!Re8){6Q}Iu*#-XvRytqaFd0OLI{;drdtq7bY z@;lCl)$3bm;Gz?dU2?p5d21axl3n$X@cKZ2BpKkXv74cV~ zm%PI1)}4;=f8>-*z3aR)_Yp6SURi?Vz%|}EOyt}}E)#z3Q#jp~=Sj1H35=IDW zv~HzeCj#1=_!%6HY)Y?BEi_7)%F-8UnTgMXUh_NaF!M_<(S=} zCHiAyNwes7yVL!ySC)-4f2CgWjs|Iuy2;(UD}f*mkjGn6Vet$OVZWiZB)?4CHC)yR z?vEW0Q)H+J8N0DT{Kt+sWvfk;r3mL36!uyGs)A3lmvyQJE=x$s(5jo-LpO~kk3P#j zP~d46^Icey92((F(wO-mqd(~X?i(P1y(t@=bYcN&is%)uQ-mFSGy5KPI=k_>3;VsK z`kT}YEn?!a-hGFyWcaD$CHdX9UeexxuST=;Xd32Uau*^@rd$ku*nh1!%R8c$Bq@8L+jT@R3gp3*xe9p>lbxx?;E`5-!9 zSfu)qipPrL!%zPVzhapl+%)6O9>{hS{;%+`#SkQHy?_fFy7Oivr-D5QqJWZDUXA+tO<55@xB*Ig4 zZME>4Y2?A>=Kp$Z^{Mga*`r2z*Ok}KySQB+a#0_ZwY6hqld^YkL0HakH1N$n4}FC8 z!41!Z({4gR#Tdl+-nkH4BX>WX82PF!JNXj9%1Md#b5}V>`>P*bR-5}th+iE6d9QxCg2UM4Rh6o9^Y)4SzHx>FF2dnhmH?ZqGUt$k~(v`C9?Y@ z-Xg*GHRp7};5pr6?m4Fnu3uoLfuy5_)P@OKVkQpow=yPrA2V<6Ev5gdE>HhL||ubnQJt+tqX+H#`Xa8ohi z3si$ZG3L|^r!ucT7g@P~G#MLoUl+~BLI!0=_SVXSKmi(!AE2q;TRr1?Dtvvn7Q#47 z6NcDqXYb0~`QF{#1t7zoG^?rb_Ju6X4Lo+L(7Wn%K-n?O*j*>vK|59a!qi_HcDje& zgtH!S^f&OgNG|5lqnM0UT5W;CJ<_$E^K&XghMnhxh=n4;mi3lJSTlV7$VXhJ06I`3!#VT@q^xs?zbNTJ z1#8JOYB0ao|KMW3&yMF`wt9{i&$%^xzCzGp^f&Qmy7O^z_^>jf_b;dFzu2&T|8zXH z^XMVEn$+m)JIwu8)Ns#8-K)S+J2Y1}{6%5ExT)$$vIcwT8bNWC<}G5Tn71EJGg@v? zA9;vhe_{D%7Xa1cTwZ8w@C-SY*E)1Ar9=N6rPs-90xP=w7&lu?fy3^8qHg5 zV^0-2cq+85?*Bqd!!Aa4jc?ZkT^KO1wNx>m{BrI+No7hmElj+5Pee(Ws@MK(Tx)Sw zizQ{F*XY+&G5l1hnyxIN`3 zyKD){>$5$b^){+~D|y%bm{2S$#95|l6+TkiV_rq|zkMI#_^Kj#RXi6b`$cC^aXJe( z^9gg}k_a5XIB?|Jcz?R4z3HM-@xdu@(p4s_9C4KA4W0`d#T zMJHi_$~7~^e=~K9OTFO8Np+~C* z8Qi3#3ODEyO_h9?0cuFjHfX8^baLlRf|`AUX@N~0X1kTmhHfTjv-u85U`}IF>+lMI67}UVA)(O_ zoZcU=>6E8gw?^gfD%1p@Lpo_Fq;Jb^>S6m&h>&&pbw*U`!l9x~#XQRW&ZSYG?DT&miNz zS66C5#wBj+E(C}FdbQS&?wv>3 zi+o!^Aupks&qbd6hA$f~`&HUoJ;Z1I0(Ua@=NC$Yz4#TZcTQ}6%N)ZfS-UkCE!WiJ zck-Tcdl%-1B18=UmbIS|>pl?le(!IYw3gd(#Ct0btp@yF0wx+c8BeyOPg`q=?TsMa zRJLJcUO)EMA_?6Tdi!e#{Tylu5A z`gyT?$TB9jzOhXMg-v&hVJLOTez<(s-DES*Ot-LM-?8)R-M1~Q_^gb|jlh1LiY9P} z;;Hn0`|y1l@Gp2obbesJ%@cW3PhRuScEFf4x9$)x(rCJL{>wn}kr&@I7wT6PZP?K_C zyG`T?Nn;5TZ?<;H&9VutQq7bstHX6Ka6p@)MJJD+FcFJgd;jq$^Qq`5Gbzl3(Ji%x zGo#f_;CxMo!)!aLoNqoTAr?3}N~4&02Us{v>IGk}du}~s1nz}a5X85o>iw4bh|Th8 z^40JDKu+*)OyE6{{W)w&*)QZCDH7$OQ{u4R$jkV)dRWyhADe50_<)M@zSU3uh4|+6 zr;h!|GagzWc>i7>Sj(>dgVS3dWzx;G!@ZQ*gIcZZq=M08zWz4UIbdcgmbT3S1mlvF zvp4^j<+rb3%=K+oYRaqkZ#*PRt_BMFrcbB&5anjn*1Rb8g0dJwWk+dOM(aC?fXn!xzIf%bbz81ZId1#72t^&!b+B9Tjrh4)c; zg#0&E%6W$a`gxjBK-lHcYZw&AY?s?e)<1frO z4i_60h5~neqM5(xAT;pvwr)ASHGlu*!uNz*PCLbK(Wc&e0~e;=cs<;dC+d6)15Y43 zyayEwU~QM*B=@}!0y7&EQJY&2J#O$lgw=kN&s9*OoH1Zk`a$)3rECQZUp-XbJbZ6- z^(Yg2o#5uv_|OX@)G;H5x;N`*q`?WlNUi(?#d^J0bW&`OZT{bOmFwHwk{s_kzuD4N z6Q6{w6!@(v&K>h(Er>Kut@$xJUuE~L(J8yok+X7Bj6zPCa89b9#XVh(`TObg%%!I< zxPE179vI1FYpdoaJK!$>$k+DI-EU@##i<^d?`Ny%tJ$YQEOeMV%Xn~AT}@6&dAfZI zn~(6p^iP8OC%8Cx-AJHJXHq9xa2Z42EY$E;Z-fyUYkrt1LEO}%<~|bPi&0)UJUVFW zH@TjyZm4&9)eh|%r;SXT^TUewIX0S7AUWQ`{t6a=&M)p8I{H8)9a z`9(z09$pr;36S{(A6fdY$fjC)1U;COr0hnomG4+|TQmy-uEY2X({-}pZC-EG^#TU_ z>$KC`08pCNVJjcIDGLU3=3>azF0 zW_zSmmr`rJ5l*t$_%6ao#VQnLB^#D$y$fKn4h?AYYgz5Gr@WqlNMqnviqB$@6~;Zr z&F6qD`)QsbLlwyogC3c~0k?Je{R@Zhwo5+Kr2CQJdHrCFFP!%sV{Ox+E;c+)W!NEM zYG$oGbTbNeUyKl1Pb_HJLySp233;mE3!NMKg#Ta7RY;P1Bd*xB=ik{`Dwfc0rx`!1}IJi}1l#-cVvT;WX&r z0DD0uT@+UDsr>cgxXuVVG>&Rk8>5W{c9cEOomKt&P?~_BQrIJboun zcz!KY_yj@*l118TX{MctZG&;E6RvksWC5a`2=fS^}2KycC9gXSkWJ+|Fu6($3$|<5~PJP6!BC;OfwweTm4@ z`bNAt%_8;Poin!j6dNb>y1PPHK#v^F0GjQAet||$<_F$}H3qv=__%=E5C4dc`=2`O zQYF~CPmRr#Me&2TFMouYzzOPGmT5XK)9_M9T^6K|yqzt@YDyh`<*=?COIL_;zy-a7 z3>!?Kg}BxU8JhSNJ}b|g0*<9%XFyWKSPdE6$%RfXFzpvHu7LGd zP`V#dNuqoOeT9X*5#$h=Sh*GWz(J}>^^?k_W~KTYqG}fUqrmrBwic3ANcxy!u*R%! z7iq^1;(7h(-M+hD!aq@p5eSi>`$8q zXz|F`4Lw-lT|j5khAG-jS6}fnmW8K(#a(q6JM5#BEaG-sY8)_2x)+bu(_HDF_GC&o zjs+U1Ruzl~C2*+M%N}c)of#d9q3jys*VfOL^F8goicIGJ2IJ;FtsKB}8s|hI(!Csr zJXJ>bv-_s*Sp=E&gAa6xnYe6;_16Q;m+W}%S)ZZnzyf>jv^oS9%t&-K?7x3Q>qzvo z>R~6V&Ab$vS%Fd!>>T_{mQ1{>VYvv#$Af=3EagrTzBa$f$oLd*Nwh4xQ0Od(%69HQ z-U3bfzozpczfis$>k2gYN;EF@H)QiHkHB7UyW0q+A_}X2dfI={Vp*;h1H=*>4jNKx zSMGNMhIX2dpD%uuXsa()hwjqu9Uig})R&t>j4F)A!?b1O@O@!zD&J)DMdFz-%q>QH z_|9)l}Z)J#w# zXus*Y&1Adgeq9qM!+9|3lHps?fM!Wooj#@f6@B+xs36N-1$^X3MJ&tJqPC;(D83Sc z7xOAjSSwOJZLwJNV-5%$;I*MOURzf|F55l-aakyvc@za>I1*kRh}{PESU?}kmjTT& zD&(721TEH^sZremvK2ASQRj22vXLyr{KvaT!y^<-aV2{WnX`1iPg2eZ6Vpyl*M^(yGon#!Trty1ro z+@=-Nr@ACkjJo9EF$aPzlA2#io*2C>h2C^}x5IQ>uKy3C?40GNgZ&ZhyIf(UL~GQY zIxgNAS;4uoS&Aj?y{qMQezH|Z-D`ks#7V?Gz680u@@5g~k1HHi*VIRT1MqX$lM>|Z zo)~!C_YT8`Ru}DOy!BY|;?f}&+8N8o2wA!prJ(g+#$My0fZtmWbd4@u!S@bi5z)7R z=MHAyzu7wRQ09k&#vZW%Gco=!;SRadGcD9yln6;Gq1*QArr=Y*VDG|-cd5z-JPIwP zboiUdtguwJ<}y>#>3VHor#OdhtWPcw{eT+lR@i4@B(K$TIoPUV*A(r428nH$rE*?8 z#sxO2huyCEwRf8?{BF?w;@h9IwG(ej)3>vL8;&vqpGF!Mk+$kamSaAsrsC?fP!M>j zF8r5Ck~H@Tt7Xf6y?hMwV3P7C_l77zm73RL^kJt^;O&xOc+NCHV2G%`sOF`I>@er! zWe)Gzggv2JEp5>((y3<$KEGy!#2W1)&k4Xrk4+R0oBa+}Gn%T@5VD1H>ZoH#l+29_ z-gB^K&rbNp;T|)r@H4I zt+_^T977ViLf(aPLf&cQ9j%(^%wmaINY090vgPFRjwUoHcdq$4?z|spRj$$NzKN7# zix)P$2j^kJl8uBkm{UBP86<5++&iw%oCkYVs@N09hOi*WGlXD9_IP3W7QZm9k+2;2 z4||@oqckV8WyL}|42*G?*~kROs0yyKbx#af&6xU_S6p_ORa2qT?;O3D{UO0)*p?^_ z>mv|9^6s))3}HJCGv#-7)rm;&aubLz$?Cp#$eq~Ll3p4obC^AHE2;9abU>4%TZx-T zJ^`3@nWzAvOCM)euV^CE&|cenZi61-2@YNgNe%)NAItqc68|X*>eFB)l~|Xm8n;8x ziYJ+#2-h}z)L54ED+hVRTPmLyYJo2kNvI`M6|sEh8ssuM4~aOqSf!7-kA8HPuy6-h z6eKKUj^-PbI5e%;|Bd!p&rDt(!_@I~1HasAx&`8AlqyMviCtLp2A&CHOqg(%CtH_W zlY$0{d_gAG%|%Mv(SHzCkwzH|xw-Rf-qdnqAm2D>jaD*JlL)(n-Z$fFM3iRIalqi} z54VW$2FEIf2d2uV&5;{@>jZ$ESsG``g+Bj%ERVIih@*-aNb_^l{j}d0$J1hk@pu9w0M+b5Zk zK;{s|h;bJrKvrLyC}Vksdm>CmuG5H2{>?_*feB4=O)u4c&5#VB>FbK*z2_aUzixRO zz|QpA&DHMXd3a4SGoN|gYmzCB?KvtQS&_BUC*IF`gqbB$Br(IHK4@Z@kuK;T2V|4j z7&Ax`Wh$&D9e2V>5(n&(4C3z9OArNGQdG{)5!CZIwv+`tD+d$D?sBJXckt?RcG+sh zZ)fYZQ`ITJW=|Yd75;V~J_!wzq_LimghVcqN2G5ey`qW6tWNB?*b!m2y?{d&#D|ZAYMkbiT%(Uh{Lp_#CugXMJ_fK# z*Ys_0X$p@~qSXd^vF+m|Njhq}@yTH=B;(245@I8gV2WVlUfB%&C>*sx4VfXd@43ujURvFy3Ou*Tr9Xv@ zs&(%5E(WOkMQtotHi#f!*A1Cf09dubU2b}Xos>(l*qgVsyA<46BMByOHAE3r%5-GDh+n0UNw#cPP@2`+v2duN zl@R8^hu9hQ`@**duCTF&ih)EIU*x6#gMHr2De$9bI&Zen_#(Ly=fFoew*`SJWGH^% zRgQ#QMwB8xAKsA*SD+UC!UZj(l^Md5T)>{w@Dy+$L3i1sBx)rZBJobv8H@5>mCZA2 z@Pi={K|xrqd2}<7PeU1Pv|GNyZrJ^-LFy5CmfgwH$Sa$y%>zgWuSlBxc5vy%JK`F*{O~QmU})|4n>V^&3vM z?fb8lo6BZ}=p0wc-pBL_a|vB#OiZMo;bj<2F|lXlw-IomPC5b7aBDLheg4%D@o#rk zjkXQZF_Oles63{7ICge5CVUkU?Zqnk2{vjZJ%?xsx%tO^s6MvR-LJ#%&12q!Ax#03 z4&9P1!dw*M!S5>U^r5ppm1T&Z>vZ4a5&RPx19v$_ElF&4TT;g_Pd5LQ{m= z<|)X8O@*sa{La{J5sXp%C;WNI)#`Oa$>Slq;&P&2GA(`cbH8;MxTn8XZ9ChZgLC|= zvZ1xKnIM%|qgh=^%xt8zxpmkJ|FtVk>Da2c%AmR&A0ISs) zUBfR?z8)$$@kt8p6`6VLYH{Cwn|K~1fWX+eW5+)6daJE9xA3BFhyDJjbAw;;IV%w< zgfXda;NLS>U40#}oqh;ii)t!e+S9~FA)Tg|4mcDqum6046B%E1{{vfxA+0Pp4|er{ zCT|6;8B@>~-;RFOuJRyPFAi4fkmH9XApSJdXdjW<)>B6q0 zNkeA~#LT=vCi)yt{-ZR_E3uiJZ81%f=i{Xt8nk%ZpOJwsg7ODlI`iccQeQNRtg9Aq z%k~=xH?@!q>>l6Nti*1!DC5wrmT`dM;yPn9_|d-Vkjerx;UEhqI*RgpX02lXiu0zN z!Rtu>7A(Ebrr}ojxqOzU!-Qj#LTgQB_R}b=kTs&n>!olum>|Dl>>S#II-q_CWnI5g z@L1d^?1x4mh$X4D-7oP)Q2B0s{Cg*AuN?0fFYBDeZFK)}az-%{Iu28b zM;wmF662VzhUEA8XJqUS7-OFVw^_|>D|d=nF?E;IUUVwFESX&!?-KSu?`41vxcyVf z*MqKC?S7lLC^#kbitE#0U>=wwS(8Ewi7euM-jIa!XuY#f$PWz^7+}+#^}0iDcb6jW z=HQP9ax9WAbowQ8p>7+O+sR?3pbLfDygX?mW8My3NBbnp!txR;1;~(V-MBr{XiIxc z`9Cpa@uX79gf13?OG!$gF{%tFY#-mDP z2T>jBo5%c<*8@4O9vW18wg!Es-S_gfF+N`7Tvy=Ua77QS3>?~POSl;2^W3ppES{KZ z@1;6Is$CP*@W=*$cwS?Lfvf{=sc-WhijCsuXQR|w<4BMFtQ|BP-{ZCplV?yBT;)Zs zg%Q$Iug?~lL-ox52G*D~+qXS2!A<{au5jkng)SXt9hfqLMGmjh;)ewn_=`u{UJ;wa zuW%TDyR3gX57VAlJHD~vRs-jPIhf7VAKaojLd7Jvd?tX}>F^7&uR;BugEsjR{>yt6 z7)12n&5W7-QwtE&Hkd`3iMW^AwkI{=YVd$Z2q@L(H5*|vmP`jN=KI1{HtX^=dymJa ze)u1LB)sUB@3p^r+v51F6G39+-GN$^U&28_UhRuzHJP2re%xn~vG3ShB7GS)%K_|+ z<$J5IbCZB!xy(%|m258DFpNd3N%1i4pv4$W`ej2q#qlzpd8H?W-0!g`V*OeEe{E*$ zPKNlLip}d7#DjP^2q8Uos3y9_>&(J5iU5D`5+7$b`XExYa-Jv_3Cs2R&&*rW%~F*u zTr(N;uDG@bTS+`CIkDt5oF_$m?R38bvGG36=rZ8kWSHDj8FuKTWzTsE?cVs(6n3T3 z7AP5JWRJA6OH#z5a>0CifsBdc)ZZ$T^q93Omp6@SK&i^s)KVISI z(`pk84DOm72j{O_7H#gO_aX6udB<;t|J1Pjf_vb`L>!q~-bi);-_mPNNtM%WQ!cfL z1w?JRH61hx$+&cAWb@20igZw84nsrzkT%N2ox0v$>Y`y9E8@>y>Yo_nw>m<@UYi-PD-1|8hx+w+w@l zNLu(FmKn3W8w_gfa^&VrCJdepjW6-gbdU-^l*fEuU3fu&g*o&dAMii#SO9{#*jFNQ z&bPheN&63~ch7&cON5`8`AfkLe#eIR$J(f5VC! z@+x_Nd|gixCZ`09nXi4C`&ek^p5RNh{Ang%AtyC3xjgc<2nN{5N`yv(uE=G^gM{N` zaN$_e zsh+T5sF|BrejjLE-S%RWy*T=Pk#6 z(#A?NUsn8O3p?d_5c`sIU&RS`#7nJ9NkbJPlazoT%V#b}pG{w>k#Z8Nt@vv}`HC zAV*fZC1njKo0{otZfsE}tXtJZ_|vr9s>3V7Rn$$9CU!T1T3@@2G0!D0O>ZMG%$qBE zvVU)I_S^z-v+cka>7=bV!{~6|9uUNP_q%RbMXj@uA!bA~yt^PZLDUy8>v$-;=>%`f zpaxE^O}%;c@?!Evj3}x0C-Ru{E3nF+m~LXmuVF}N`Y%&(QU zprz>k`dk~91+UG3RM@gifmTzf_8fNR*l8h4K&P|DQoxel*mCuN7;NY+-z?FM=ZM{F zh8(O|cWF6Pv35)OwHhgubV`!*$jQM4Kruv^G) z(e}iaZ_P>XcIpb8b)$uk!Xz+=>Z0tO5rJ^`<#>~P(D2^av(KWq*D|@Km)SQyWF~z! zIv&m*iF`lXdRprs+q!7aaCbRY&{1+AYXh}(iItcOLR#m)d5%%CY1j43dLcnk_nn@UyNio=?<)!L2ubqZFsYl5vVV~0xkx^`>STcHgP=fCnb zgocUfC2VGQ@T`Zi=}@L|j_dWaASrgPk$IS!0Lmbe$CYoR!(;1nMNhU^+3=1BxsHL?*{zM~(Pt-CHBl4ogL}&^`X5J< z&hk0IbPVuIRMQFI)<0ygd4H(~O})bp?~^^65RgQ4q19pBXPa1HNyL%wgQX?; zhC2OJWwmIx;k!dY;e~`p5+ic|?rN~)gv~wy=cbN4^cQex`IR~%H>`)ho)bE(d9p6T z;u@HDjWc&N)FM5kZX%7rv-Ym;dL|sk=D+Kf)gtpm=LoR*MRXI2pO6ptx{>J;{!5<% z3&xdR&T&NSe50Zyy$I|(`jzr?Nyqx+Ra7vXmLFz**MG@SF-_Z8(&Xhr2zp&7G%(3)`;JXmvA z0`h3yh!FR8C%(5F0cI1vzO1s7@9gNyZhZz+5~H_~9^A4_PkEPpkhJHfiY$(EtO-v! zehlJvi4m%UeNw9_$PY`jFh=>l(cjY#y|;S<2z^Gwtnea0vrj_*L#o8q?0bDicEZh# zq7~mVI-PCpu}wz?@DVmcdMBQ=6fReB)P$RJsuMYK2w?HS z&sr;2T6jYi_g~wWtMUy#XQqVvm`5nd04LueE?8{GgB6nemmM(N)!6M&Gz zSLs^mEUCFSfQ6i4-TR~T&b=?Np+@l%kIzU-vj&+w1eY1@fjj3>FXw3G$P~l(`j03> zST%eCEBR;}Z&E@@=p8~2HK7Lx5J(^)2}wTQZ>{+?Gi%y8GiRSY_r9-imNhwPCpzA_g&xj$ znuM;Y>g!VrTqf+Sf6PqH@_S(m%3==Cj}?wJX5~mXGp?}>HICL@?=AUG^+X2%>8~ai zU*Mq`y^QcO1)Z#x)L|u}`$Wb)Km*;W8_kq}Mv)2oZ=A|@`TGn37uGyfg08uNEIoLp z+m|$zHUWLMt@!ccl32NSpbVEBE>Ga`{yD4wJ0Lg-E=&Vq<&D5L6O}$7Uxa==Q@G<7 zsb(LE7(|_;q5rAoz?HgzQ_2l;d|vLQ93)D`rUTWXxv>8Wp-<%xdaZ+23oMPbMUUeo zmI(}{iJxysNp@!rB+*ydy$q#pO(FsMSuUQ~LBHG?){{JST{cv19rz;0ha!}6=xhhf z1VbG?o+8zm)$@-SyeQvQH|0u#i@Ci)fA@%>s~644-DSf7K%%Yk5qnz40Qy<>!V-qy z8t`s|uQ zYW^!}C0wzqEwA`>aCaX=Z{jH|yV^_r7-z~Dy{%n{ioTx4S6pE{EIy!8JI?0PUSJ?S zQa4=4xyryPCU{;DE8i7SOlQZ%L4&>RW|^nRv-@P7ZcnJvw(H`_SM94e>i%~yvk;v^ z@E;*2cqq#hTgJ)Wg)$9ml@FTWpsmJH2WL?T+;P>CcNVcG3Yw0uTLg09uY=sIN9#S2^nJzh9(J; z2_UefW={m^8f(6OG2|qDSYv$uN>N^{J_Ra%Uj7)pXMeT6z^8pTni;k+{E{_|>JP1% z2&>{`vpNZzDyN79>Ib6l7-qvAl<>b6xil5Jy-#3XUlIBQ zP|}-(sZvfGLEP50j6>h|NI!VI}TF>pCP)-%naRxHAcELgYV$9N&C)5Zhosr5`X>8V-92cq4A4A6ycHe(#RW z!8MpXR{4!T@R~*-wgSsJ*O&>osY4jgE9(TeEFf<`Y!7u>QXu^t)tb_iQlgJ-RNQta zXQW~_wGYs0T~Z1_rbp&p`hIwT>}>y9#>kaO!T@wGv@--|tUM56%zhh$5AzEN;(~s} zw+jm64)M%uzBfq-JPJsYqS*aEcdTIt(uA6J>o&z)!d7?$sf+6k<`L(rQ#(k1dg}z> zLA2!x>B5Lw&~G(pZp9CCq2Dx^ozhl5rJO48z|`b|ul!`|l&@UR{j3W`H++P8N_gQx z25iQ0#gsFVlIXcUcK(s=*5Bleu9{z!>9by#Sd)KXQfjoTS7#;7b_+KC z4T2i4C}}&oB3nu`=tGd~;>m^+5__@w=vI*3_0v<$QSN zFHEcOfO46t&$_`;yA75^*Id+{x=O8QeqH8z2ZlVZ@BnkwK_I%4TQMNubI3-o6J$z9 zkud4AhN+v=c0dz!9xstBA(CTyK2P?Zz$cz(Md1|1qqH49`H)q7G{~md%_j`m5j|$e z=iEq~{0=u6H}a0}JhY#oNHJPACFU6zKHVO+34y~;l>b0IK*Wb=365VL*>-L9`U%=4rfFXyf7EXmLN!|(^YrE0tAIazt9k|XblVO?xyzL3 zdd9uI!&{CvZ%AzjTuQEOT%2Y z(5Gj2@0zj;Y2jB(e5={o%b(mxIY~^wuUPo}5-FiVK}ye+k%HRWAwCnwt7sR^*LRt{ z#2t_v&H7Rp4LmC}T^{a+Wx47IzF!>yLq-I5k%YM#)Qm0Dk#T9U`yR24Q5Tji{^15E z))xDTP0P{qKtDN1>nB{UcGKmU4S)P8?e{r1HuBcX2(2+^&h((`ZDO_b(orDmib!}W zJk~(N$AY!`faTMf_6$`)aQO}`83&$_zfl*MRJ68*(nz5Zu8Jw+Dzg;QYQMR}MsULL zbq`2`ppEZrI)}3?-N50jh7J*f5lqQfKd5c~SXW=GYaK;mqc%U$0SEC-{c_fn#fs1; zRQ=u$Z9jz7#VlgN=z-`S5gYGz@E(5oF3^wg0fIeWoMy zORt9QBpbo+8f|v+Pjptoq~d>X9NOhxu}~1!#yofB@_t*$wUP$x>d;t}z7njhE9N7; zQlb#?de>T(_LygnCo#;1GoJF9p!6-%ZpdhZmqq5TGMPgPV@5qTZddh1FnKzgx*J5q zlwOI`cnZQMKQRKMQ9tGJog@ZtdtwQ?=w2u21uKrUnzuNego3jXsE7dMtJv1n5Rds zZNa^LeVAJas(_fgc7YLeAJl5gj?*CJZKP=tXkbT!CBhGY|DU=@An(6@7>MbMK~J@H;_t z-eq@lR&6yfx3S(4YqF6bV?? zv~UBggUV|`-?_>w(|Uc{>Tca|iDC(BBfb14M@VD`jwkPAbk)?5@WR4fdukQv9M{#{ zUvU{*h1PjDH7xDKtG@f*DjWXdGpe&*^fJkm=n$mRLk_y+k@Lqye2aJ;4=G0EN@(Vr zocbrae_FQeQPS&_(DybO9eu?LT2f$0fV~l55jEC*P@OpyA~aIe-`;U0#1^oI#N-KP zSfvL7{2WuF$qu%f7{*6&g7vicGirU?btEmQzHDa(QVFiAMPliDaAhg8wj{RsdeLvo z{;3aEczP##tw6ei{Uw;}1J-;Cb+D=D8)Hd%{_*ZkYzlA$Z9^9+Sry@X;H!fKNcU+O zbD0U#l%p9#*|C_zGoDp7ol1b>Tdx@SSu3dofQCJY+jX5po%{w zLrSfTsLQ#oelgfvlu>tj-DVoumY=QW8LKIyT7OW^$7-F$9_n;;yEdlE z_exU^`|OTlK1V0C>-IkmS>|EiSaoo8Tuqr$&HM>=Lr77Y(rQsw$?;vfBP|8=M)D#h z@V3O6NL$wFWK+6k3Lnr(x9a0+9kCPWjQ&*q!{7cIw|^Vwcki(j*&(+`BcOx<}_@~A>z(UZj`11kN+~5r%{95ozgOB0I7mN8N zxX>Zi3KY$WWnC(I^qJrd+6}w43m#=rvSuLPIs{iAdJW#rCYZxu^fJ_u`nq+)aG?6{- z^Vl$Fw&VmRcm_n%w%b5?Rp#m3(WEvnSW@Li({&t89O9XjVUp^EYfA~trR)DBbR(%_|9p9LjuV!Wqlbd9AmGH{;qAzRlXoB5#HwPh9VnYX179uQg^JNvBk5~3Yr{C zF%;eHf+V*hHR_QFp(o`Do2T^J6?tdS9(~3T<+HCk)jBkAY|cwkP|cH8>C9BpeGkM@@OeM(iz*t? zU0ecLfF4&i0giLXnSq^5zImCqNHnUYqo`NVZhu8x_rPkd-%Xf^r?ZFZb+W>I_`O?( ztmS9H$5QUpCpp^YTdUY)m>&eNAlPHe;dg@1V)XaTf~p#aXKB}BYFr`_n%#u)pW+$| zSARxVedsv}x}Kv8oBNSM%<_!Oq-?_gf1PyT5qhm?>$_S{+(3Bzk@&&$JN7?w0$~53 zdp=tS5Xjj3_ILT$EAR8jBMOvWe%W|WBp=i0*qf5tUeRn3J0t!wpZH=%wvw1Csdjwe zM-hYemfIQ-Qi?y{qrW{fD{0Bk=HIyjzO0Np?w?8Tz{{Et& z&uKj&5znijg#Dyu&Fh1SYU?%&Cv?OLLbFj+-uh2({;J#W)vW~4AKGnc>_~#!I^ha9dd*XMD*D+ zL{Js<)vRpfiIRcW^}GG^?gSCQ7DJq!u6mC-jbA*w-Sa+^#T$X+R(Tn_|Jv;_*9aGH zlzJGAS<_K*5ZcY{KP$Vq7b0@-tyXI_Z76HRF^nelPbKhD}x& zkYO+nxSOLitzmb&XVxe5aDTvx&(?S{eC<+)39Cz4rFc08ZiU7H8F%#d48AxmrlzaF z81RHJ-rJIyX!&VcIXN@qfp7Yn)BN_zF9f$}xjONV#8?5|TsdwO074r`KW#i>BwLhb z?a~%OvHAGivP(USFnUnxY{k3p$Ju6Cng4Zbe>ILKZKh+vjc0>Y06N0Smwwf-haFFN zQFjEpS}wKUjdS931#!*nK%opeGL2oUX6SS^(m>4)6ULZ==GB(`i_l){#!iht-=KdA z?STz)`yBHF{W}Zr8e~B{#}b$AbFlZKF2qXIn2c*W;bPOp(eSmzw ziNOLM-;jeb2&tqM{=|)$+!^_u;uJ4&d{|PSRU!xK0*JBn<)3DRtNO+5k1Scv6 z=Qt2TSL=Z?LKk37S$2PNwG9eCBOdw8JUVcgjONIr<;medUHvBDDJ#^&&fYrzN<^r5 zdV9Q`8U}H;ci=O#H43&`0Ebj5NJ}J@n18f?gyKa60Ma#<{w(}WKwLp%(u&R z&-J8Jjv%gbYuzMXTg&3>J@Rj_hb2A!z#_uf=+kKB+rFP#!E}4`>T4lSGp?41XJ3f+6HscW?F=?-r1N=nJ zm?>2$Ul$t*llHNUcFm`m45dBk)(B?huU=rW-S>q8Lo+*Efv;gHTUqR)LX58 zcRA#+-tABJ`<;ib%V3l0xyWf%!2667V?_F-3jL6|dULnIZ}i~)1(9tk#+|HoTIp;3 zakfeipm{X@i)G2nvKyS@hBne(@ecDR!h-KK0^%`qq9O)AMI5eOiI1(N(*N7nc)3oZ z`iqIaC=NyZUJ5<|USFD9Fudp#h&{sSv?Yxl*ml_;_?hx;z7Yh%`}aqH?=K&10T~ec zuDRr1b$OQ0#H?6h()zprxecj@b*l{+##SoX6+=^f+E%7~+|-S*n$0?zM&)hZUyy%RG2*)RqNU(0b1%nI0y zqAa@anMY&hfH>?2?GD-(eQ*5*eD6U9pA4k#+cAQ!LigGB06aKIz8v*}OVZL+kX(B3 z+kc_s-PX+V4)bhIeO7FpG$HI;g`eLU%7^ZM#QU1$6(io#Z7BOGL?t!7zeQsQv)hZa zp0n19Oo1>~{|tr%>Kh*+kS%<@isgxwfmy=xCXZ6>N256s4Vsl4rKG!D`yOwm-K8@a ztU=scD8U;TG6z*e5B@>h0Jjm*Iz3*CUlgkDNX*sJL#eI&dOW_{+Z}a~rPq)Loa*%7 z1Ef>aWvnR7GMlfzt#7a|&Rc84qaK^)7nqY3PemItGFI>I-!W`Rz0Z~pif`V_&h6__ z>nvPS(E;Ae8Z*jXTuIl9j~6CKdN;hw%4xS!E(Gi}<7S{gt1Nm=X&YkizN=nER}oon zsWPf%K8LIDRvlx_zKwH|es-MY`r|lkn}H2TmJoEggb=fzC_>Gs*xb45@NA5R1VVfd zWqpZ;i9!EF)^$h2(4%SS`bjPK#7L?+F~k->sY9&y7$>=dt1!YIBvumUEI`HAlkk9a zL)9K@X6wBcEjMP+ZKse{RWeI*Q_rBrYwQT0#{Z3kL`5v31Dj}Kkaw|~2<)*s(t*T!?FA$+V%-tQei##W?L{HfiBz4w_Jl273ahcN=ZYmV^{prOUOYOjhA^22n-hk_t zcIZ82DcqR`5kG!qrx?!Se-fr!La6i-yK(~l^*UZ>5Sp{Ysb{A-fVdx2-W~o)em%?{ zN#hR{HG>YMcqPY8WO?vC(a6c>aAM+CuZls>w5P!{TgL;sm=80#tTLPW0js*8zkuxI zq1=i$s*Z*8Ou41WL|}h=(WBr+@0v_l(eVJfPUXjOwdD^nv~Mx9HV~btI)y#gdYv8I@GF$!7*{0jNQ+)IbSrzmEp8KI^zkdNTx&-$QgtU!%e+DL?Z>jmfJPl!s%g#A7xE(RODSi(V3O+5O9Q@`X%YWzr9W z?FMn3nfKD52;&z(#U^t?n%u`<%&2ES(-Lur-{OQ<+#9h|osYI+ZLi!|TslYl*JIt4TEzZq(=cskcJ4 zdNG0NJ*L(ckY1W}`gz@6#}dos@9Mgp4&U5w`=QGX^5aoJu{hBg+rGAKLv@oVXcyXv z+^tCEHyg3nTd$^d6tPzlBI)BP^Uav?I|Us>pYaH?4CwyA z$%T!(k_9Pg>3>V~1M8qen%RkqDeQN<+HG21ofT@Pp3d<>#~O`Hos|c`lA0m;@>i5WJoFe^*Q$i>#y0Hn|`DkT@;|?zV)UW zg|H{WH*}eW!9L7%&%w;~e+P?WpPwLzI@-V7GfF?sT3GAQ3vE_4(Kgm=6VJUTXayO< zOoquB3Yvx>;>B*JK|QD|_t9O;QG?Ew}JaW zoO|in6^syhpKeVo9dPodh7ojRb#kpKO~-1zlQMyD;iCS9Im*($!Weyeup(URkelr{ zi@Pk&ijpFNeChx?%zH%I@v)3JPMqfh3vNofO}bhEAAMBJ1I+RhmF^b8tVMP%NS2JK zM&B;Srln{JVXUU_mh~g#cMG0L4B=P?oP|ldL9TN9Pfpfi>sEqRm1;)PWA)}cnZaD` zstB3+^MqM#tq+zyY8{pHtYc{w$_F_@@Mu`3c%wssZA5KYhOU?yX1g$6EUD) z*sJ{u|6sqkdw-rJU2rQcDU&Yq{Z`%7`M3vaj(Z``<#iXlLXOrb^^}>~HC42W1kcSx z3DsDkPH8^kJ*Q*frahEtu~hb<;%xe9`oAnthV4^#%xdwXU1=53JK9zGQ%E8i{tegm zzW8C5G^p_?-aqKwQ=(mRe2XgmF_gvmuCzoy(0@5zcWHw5>#a=tCxIk;FQRYgsvWkN zIGEer&d?4os#K}o3|5ZsGm|aJP;K|YNk{10oo{n=hPYCuo~Xx2Xkq3$W5RfFn>K9K z{mV|G>qZuk6LOMCP(}wOQ_X(MSxdbR{Z#M9KlI({YFOx%wtN za0(maCWT*@7Z`ccOwCYkDtZ=H_XJ&Ko%K~LUwv_H*-~2(-cHl<@HB;_U`8NqdvO%?6&0GyI zhVi&ZPCd-js#3?KMYA7~?gfRXgYU7;+aF^L-Ch4C$91q{nvU{zZ=`Z7{q=WS_%hZp z|47F)y2-~g00-qQ>`Um-TL=DZUxAv_MErf zqm0?_=`De7E+t(G{g3A*S~YHE>Ssz5N)+A-c3$1NRS8e_D?&FZr63OJeOUW190|T; zgHum~0!P_Db7JA&3=RU1zlt4f9`|;rFLF<+OjBoy;p-Z@_2 z1i_7%y5ID)h5VBm?nBHu?q|G#+lJ@jBVn+Am-l4q5#;L`pGX(n<1B?~Hq!e7Bz1^U zGKPknv+UA*6e0VuK%nFe{(DIt-F+7MtS}H$V|?+}*eeq!PxT`0wF?z;fUk?TBG|+$ zW8J}>p>aE@fefww05JP9Z`r3FcJYtNXbvu}xLeaUkQIyNn&H74RXnhJzNFBl`X}J0 zh`bjcK1Ip*n=BWNBB?$#NmQ46{ijx?{m{bN$9LM#(SM-+=^O3o2p;-Ceq?0dyl;~; zCL%QOqij{96BaT+KSd{RwS0D!nUY#_8jth>TdreDLm_WwfV2`?X1YVaA31R@`3i1t za#71^rm~4Zl}R+UKe9I{y+mq%b9x6coRy9r_qe-e_O)bV-_iln068VoY_0jh$eTGj z@9G7AMhXv6_9~2177q`k$$#fAQVE^$8iO5eIq%Ulr@EH-46LVog4?$dC+IJv=9}5> zaBeQ+wQZIi0LHQA;8T6k?NJpj(j$7Ku9295{ptgO1nI=s6P0^i#wf-VX}IX038~Tq z^fJqaM~<_J@9rJR(eS;VskeK7Dsu5dZj}@NOzy70&M#@7cXQGGPI8E>5BSDGP_S0& zf>iDEqWrkA{R*E6t$w_2EFGV&C?|f>wbNglV~+)#6?xYFTqZbUN5c$%aBT6q?Jp^+ z?G>*?kSbA3KGs<|jf7+1U*JaVFct(8g*XPr?i{WwmJ^9}54bAn*XLP850d4LKZ24j z#)pNS>_sD{{ zWg6$M*XJpbrAPRF|C-6D-^m*XELc2%>&uqFH0?@~Qs$iEYc6}AE(iUS+CxBm1Fy=E z`_~oU79AQs__~AHRDMqH`ikJnOMCPH^1YoLZ1D7H z!*7*o%*Sy$iq;baixQI34JEW<4}jMMlMxl8Eu}hyBUgm z4P|DWKN*5v7zr>Orb7>`EXnXv&4OPyDeLhn&hr%N7of+suk?gS?W(3Yxk@NQU49k5G+TO)4q~!PbH~_HKV>sIGF;|Ng1W`bn$-KxkWL7 z=FKMXYpu9h;W^K8SD&%##@B67iNv44ZlmuhlWHk$zU>57iqN9hh*j8PNnFKYRw`8LvU1zF7!byj0MFIkPd(JFl{AAsfAYTlu^4yVlN0~aO(MD%F`LTgcbS5J;$mgHRc@Did~?5QSv?@VzhfK>DJx!~NTt#CdNMY0 z>8CS{X-_3vHos`$t&(O&dMM>-wa;J1k8Y!nHwaGH1J(!I@RMkycmpc)eee1$h>w#Y z`&67vAn)JAf9o&XKGl0_O{OUH_a(3>E7cvF?~YXURHV*Zjfwk0=bWS!5s0TP;y)r> z=d4=Cw`6ZrKT|Ihj6I3?tWuT~=&ei^{9=|&Aj}CWp-r?i&CA9RiP6^(w@KVlIs&D) zIxn;U#p|XLXlY!>YrgAPk=}$%eyH+bWs$t8OXbICeypPosLYr_K2*ZAeLyT9+$rTEuT}*7Fc9Iem=h(I##giCXPe zhGgx{c1pTr;2)*$2}Arlcf&27SO!y{_96jA_C!;EVn)%5#G1kDBr?)Ugsm!g#8fMS zq>{POB0D@~-zdD_2357sO)U|j5%2Vf&_ttJX&+_%s@}9z>>E3P9>CP*%NzKD2#Y?< z$bAHUG3@U0L-fEG$Ghxa%^)A0Bhk+FADQP_dOBgI{G3AwT}(-|SanQpKG40? z@cJ#y2`&;>j7q-2=5`g;^8aY|4|+pPbp5KQ3TQ{b$I|iL*7Fw~QDPCRyFEWMGD1x3 z%0&00GM!Aygw~MJ)ipk(tu{|bnT58BwXQ5t6-e=g2TKjDPt`!-fqrE=9Tj@%8+W&b z=|$oE6Yren&=*|o;1^vVc_Gpls(>cdqFq;5xgzfzC21mX#5C|?h7RG&T(T`}pu;VE z_by-X@U%hXwakP1?V#L?&@}fOc_NOXWkgGjU3s_-<{goU2cCCV+ZDM5j1$^CO8YXNDp*J^csnMZ! z7vBQ^*xcJ&AKcwD0%z5MWF?(MioDl*o&|4uolhf%CB5(&M2I98V%z6@sDPuWT+hNR z7AKXZ;&iugH+~9vLQP=teUTNt{^Kn%r>Tp&y`wl)V|f1?$5&YINA9r%cH}w>U`^D4 z^9hT0(_`L+2F+~;j4S975@sbGv`=*;%{|$)FP^h^c9!LOw(@09=0Ti%uW z^;Q;;PE&_66VAb~x--H;C**b-_2 zLmhlh#YbB34$4~AF7s3E1?24))h_zlH^G~9QwpuNDzp`F9fcV^bb8mV`UJS*% zlwQsXH|Va3G)L!tWPMljfbPFpHu$fi%{qVlK(CWXErLXky!r*9%+f#;7R)Yhf7%C`9@C32s{b$lyw2m>iRifH)1&n{7!28 z!zBi2==gnEc<`peu~?*oSB9u;`C|J$#Irfu8vOcq(48Teiu9-Wu-rPN_$#%OTW>n8 zBbAh8G^(!XSO_klWgY%n;x+GOHqMDKGA7SLJxS8@1h0beiJV*0P1Ld0 z@vaq*t7)!C^)7T(S&%9C{!`mgy_SD&VQBouCUJ62!O>eF(eJ+Nl!KYJ%(C~dGd3!~ z)Nxqi%j>O0htXw04bMbXN9zBBRDCmwK&|8T*ca55)#X(J4vVtsuuoj@YImy$*9+26b<=$G4R<|i#C8Qs*QdvhHEk;t~h ze5NS1h9)!d?LWSUmb*lzG+e7U?gt$>S-PVu{j^1EM~*3qKAgWzzeKvW0onHe>WBB$ z-#uVmFm!7E79#O*B=Upm#2?P0Wg-X**h7S?%UKlR|D>Wn`8*HW{)FV9NY9bj2 ziq)juNl|_&_OJ85+XBVli|Tym5Fam;ovVf@WhK$wCGiRCiaSTZdOhpZ*CMB#>-eNP zVLP`+rT&OJBytP5xqV+Z+AcN#yr!TnnKDb|*}HbH(|pqD+CtvZ&BDCffy@SXmLACn zbvX?r!MD0EMr^i?(HT1{5s2`QyV^6zS9VQ9uOH&7EEV^QeF8s{Ih;}0|4=WeA{~gX zH7IF~vN2Nl2;Dxcmeso3Q~hF^c@2Gb7he`=fUycED99}lo#Vfi;OBvm(TCo<@7ctF zAF=*=Y{y}zK0ZS+&5hma(4F|u+=AF|M^;|dmuigMz29Ce8WE(~sYok+O+x(+jPG3i z)+fnw#gH{B#lMhHysacsxF8xPuNBi?R>L($?b?>fNwxGU#=5!e@3{W8dGL<^zJ^D) zNEdap|3K0)7IhCwRm>r*hx)d#dohZ=6c<=p z7xc8^x}ZWRFhC2SaaCTw#W1#~aHyy(&KtZQdR0?>6c`G8dGmYZ)3{*<(+0N;E?GTH ztAADJ_iQeiV^#mR#p>c(l1r6mG$U;#PuxQ7Sc0feWv~vwfRy%!yVL$zWDc_@jeT+@ z839Mf^i?9&7+>StdJf+UL?S?=KPuJMcW ze*>;KeRtH_`yjmAC=`K6AeU!@AEv{9>bi8f&cS(GZ9hsJt^3O%v)lq@5{2&ihxC3Gz?UCqW+E(a}a& zlRa=oV)t-Nvy09JU*7uuC;O)j0WX`$)*8kZf(B!Cj-a znq&&QRizcX>d5TQMaJr!4sw<>SuY}I`^J4vEf5LCA8?qe_C!$cU$*=B{zn=v0o=Xa z0~bSEoGx)bz05g1b!M!AN|Zbp6UV@IqfoLIOj-#2WX>8hQ`2r@wOk8(w)vZMB$(w> zZ(X;TkEV5IAK>%wUC4g5&*KT7@>=?y$ACrO1JLwQlP@LKcp(e_S?4@ura@c1`~1cs zrx!Mt1Uu8XBA+ht{}!u~qnYCY1;)n(_2GA_14UC~1v<=Rg-VA;$F7umVq&bg!*VM|=acEY%I3PQ;LyCCS=3rwKcT5lgHc6q9g zLU(*(i|#-RKm(3v4g9yix5GS9Zx-s)9%$!y2ow>P)RAD#!DDAdqc#AbL-jAoC07z9 zNs1#a8mz3*3oAFf#u{GbsKp+x9*i&9x+STZZsb{BRu$b>qmXtQ_s53ZXd>+2QFq5) z=6(ETcV(~zOtm&Z%ieG99+ICn7|y2c8#KvZ^xYl9y~B`wk(M<0Iat26PpaG+T;cNoPOFgs;oyJeWl}Uoe83;GtD>jd4jRj>7R=i zZfjCh#r!1^|A{Gf@I7BxHA=b%{>rPq$=VB{)1Bb@8cA~+Vf_S-*RkG=OjkA2lB5i9 zw)>UM=OhJD;@;qdwBRc0t$c$3X7RY_k=u+1q7TB;@qaDM0Xrte?}_c^HZO2VqqxKH zo8qx%-yplSYc01@Vg-wxW7iSV@-??Nk?(&`wcV8EDzP>pV|9Bcj`w?yD%}-4B$>W& zS>hISQB9&th<-+OoxH9aVSaLvysDrT|#cXbSY7xNtwkh8-e7CgR?3i;a2 z{fj%w1dbvrKlOa&k2OxF|JO!{n%Viuw{>e;JOs5ScNX)^ZcKLlQ(mZ`vRm}Vcd@NH zs-qsA&{eY1ucnY~ZNkYWoHa|xx;~n_8$3y5cfsk>03rX)x{qO=&ci{j3y$i99?eMY zE&mF0+7K+JizDLxsMkUi&CExOP>YtzR9f9LM>nk~{I#{@rO?})H>*0)PT|5kt1~L{ z9Y@-i^eruFyfaGrKuNVif4LlLn(Bf@Lf&80P)=KZ4b?U{j|jaD$|Wr*tscFgtXa;u zYfY*hqqjeR%~Ug&sv=B2SnrCB;-?1$lL)X#EuP?BBJ@U`TI@`Yda323)w&_;vjP3f z;nQ~`zjtM}>6p(f^=SB;&pn0|fXSNQOMd~~xw0{ID!LJ&DKlp(p}k$(FDQvD41D6un3`so(;;-gE#rqpD#lrPZ!#9?J1ghc%JZN zf1!(vQNAW&O1K07Aj~t5x@(n*@+c^D(T~ag<5Mtg7Etv9+xQaG7$)d;{HNJ0c5*e1 zMD+b7>J)A8D2tDZ?;ArFWq^_?S}xhvH6^V*(0aA>*3Rp>VXnmVREK%t_XdsClAVtW zOwKKD=L{Ai5e4Etld7GeWcMfK)&KgRq~qM-(UuqR5=#IhFXwD6-o#Dlk9N?i+xRP6 ziC~Vc%&%4v5yzF48G#3`hQ9Tf#q;U)Z9@j->MauCtmWP0PNI6*WdB6nbe&BIwiR}> zP`?9fC7h+AvfW*&O6L2uaIq>aK*RWKyih6Zk;17@S#KX`{%oi4P%{=#_HXN&&;p(} z*5W~p6PEzqlNs8vVi;$0AL^y++l1!JLWG&ItexwnI^Mc(#qfs{E~WdC?TniK-ozJ+ zx)(LO>FS8?Jb76t*8fiXBq;csKF4jf?Uziv3lYDT)o~W%4a&cLN|=@RVIA1 z&m%c$`{mfpulv)hHV@D(_y-MYem|B(LRO~)w2Fzqw9N!GT(X?Ni<>Q!7C-n`z)dqm zpvN>{cu&;@zU@O=&L#XVzDBb7>9kGrWPP)a972ZhjpZB%N^ar|Vuo?YmBv7g`x1G7C@zRJ=PEKo$$SHoETZc}z3gl~>cN{$ll}t%|2Qh?pJ0dFnYQ z1_YN;Q#B{W%0-yM_4&t`6b@3gqt68XP^=CdMsAR$D@8 zO^jYBcum}!(QKa}*eBY=$rieQeZX+(zXOrHMUk`iL7n?b(y;8x}-T5A% z^?7PIXQl;XpnALlt3=cBO$!=BjjaLGc1{$Wg$NFw_PT@R4%up_Wr*#P{DRt)UehjB z*=$sjW|1`aaKaFzTH^2bo*Ig(*7m+9X=PHlH25<1fQsiNK9gLDdmfn-@TH;;T`MBO zc*qku0J!y@Z_lCVqB2DcijqRwLadOxhox?6Wf72NKAxp2R%zSOqrn1jz%kQ2K3k2q zDzn_jl4>hb;Zv&IrnV)%Yk(q8aEYjrJ zIWyF{QQrXf)ZhTmfxtqO$sY}O?Qq>bL(^{xXYJ(Thg0wtG5i=s^+%fPaPH;Lfs(|( z7-GA_E9P6pJSOd+r|WKYl&O;)5gBKhVdaD5prU7kie5UyG~BMbwVUe zJ!ZL!k*~Zyb{1b@vQkiFFd7v=tUDH{1C*>tZ_Gk$0=3(lG5AEAq!Ie)-Y`g2A|qlf zt{qKtpy(lFY2$m=gPrW(XgZa+eke=wa7Gx$J&XRW211lrbFOA3NTNfD_oIiE@7@N@|T1Zswl&g<^~T|Kfjn;WQr1D_*es%Bc}tsz&x(P7Q1 zI%HPiS$S?xNUiH6%-z!poxb@?LvKtz%_ei$`?fj7ImmBv9mC_!hh3C- zJTJa_$g4!w4kR@7BgqE@E!i%t3;lbqSoZuVJUB`H1l%|>ePe6Vp`fk3@T$1T8q-(vY}ZydI% zep3jeh1C=3DVH-!Q*%94yJPoVtK0AC@Svf1FmiL*wlwncCRf7l2TJA^$%YPt!Q{jdy>_=Gf_}3_m#*vrnzDQwH5O^uA{!Kr~x9ufm);9 zpwk^>y1a)^mIMgb4mL9@c0Z|fi*rO>aZm^2O)2p?p7luK<*@~86b!69 zz0Gq%=`70(iP_MvtSQMmr~qAh^{CLWSAWkU>X=m_%?bB>VW9qvt*QK@GDig$@)w@P zu-770KcRnXZ#94WPM))Aes|8MuRT232`Srdcdq@DYuHd;(?YshaXvGia|f*lpho7$ zWsTdC&aRoc`j5jm+>+ey#>g;qzqLrl?a01N-PR`Y6H%}Er+83pPo0)CYb*C2og)5; z3g$s=-ih}t0&PizTVpP}{P*H?Z^WMek@i+!{eU(~CiWlN%0_AA2~q|NXDe{ZzqzL$ zRF49${A>Oee4%Xf<>d|}3vFHjTAE+WK~Sl7=hVV@(0?x;QcQcEWT+1A9_EZgCRvTxa$A^SFCANyc17-lid zV#dtRKfmib*L7d#-}A>g_qp%S>-E<5b8Tw)*(Kv#Chw;y12Z3StzVN8FFBstB{%Az z>hN(ntdDFu-c?bIwj?FE5cUM)0L_3pKxn^~8N1cmr=A3UTFy_2HH}J{2StMK=9|AR#{6xkC}v>Tvw__%90N7?yLc9b9_~upLoV9(T!#Kccgw~H}?dr2Fm26zcLrJO;C<3bYKfG*3hK=WZe%9he;#+BY?a}^8&;}?YcXiKQ;T(zq*Uu;8loA>n9DWu0a*L$mdOM@Y&b&aLWu) z(%{I^Tgf{O{LT;LJD;4z`U#e}@P=#B&ZOVJ^=3ZeB;pJ}q7UfqB!(|wAsTs?Qxh)y zy;z8vzLVv+A`(dub}&VsLFnY*9XPSBUutVUEws13&}cfMs09cipZ7Qz75tWYM?Sus z@gaz-DyY823^{Br+^deQn$tV1c_rOJLrxhRTdomHhcfR%uWvAvW#7k?5QV4g*q{i% zM8qnZec(Kh(vt6eZ(KWGsBvx6YGd%~f*I3$IehWsyAiv$(m`zXb=6(P@e$eFV)_-_ z^drqun`WLBOQ1ilRtd`4{}pZrxg%Ah@}sl1=G)m^etZi-zh8vUqfw)`zlD%uU7#v5->>-JAb3Ox+1pkCb~8 z5qOv{d>Z#d3VSaiqXOPUTD#Y%NL~+zRc!O1sAE^^g@9*bmaKm?#p&}xvxdd54rz*KCvo-sYHb^R=S~SLOXu?5|gBXME|U+A^Ps8ywhIo-?0I z!8TV-UbfQEsJ;xk+;Q@CMS+Hc+dRCfK-g=!yc$$dX1pURvu>%z<>*=?ewHjfZNY0S zLm#9285AzbYOI4cu*&Vtkg=qz6PWFrb@o73{b0HAH*pHO)UNCSBN?9XR5q$@yB%{Q zJqn&Q#6?8iQrN#NVpdbdO1>A2G>#Y|V_dN|5qFqZA}Z#@TR(vnW`h(wQ*x-cnpBHZ8K1 z_v~4W*KoBIZ|1|G;HCbMXW2K#_M+1YTX}B_AFei{eT?QRJXore9e&$SiT^`4uZyN_ zxAKad*jHS7KS-bMPUA=LiUGFr&oqAizTfH&f16|mpv5_V*a2k~s6qDWh%e%0|uz`Kg z;Y0w1kQovcodvq60&0M6quGa_xR~Jt7q+jz4MU_%2{tZFtC(TGp4v%j2EP9 z99&gj4)+7ART=!LtA+kt_&#$dx~HinI7GHPQPF;ng zt%f;whdap5CcUnC1^=!1@CQF?J<7MO#ITKzD^XnWFs^MgO7Xg=O||ARQ@fn@WnRj& zbX;avz9wiNogKOo3Iv7@>ibAyX3RKahCA@vYJXi!DQVXsdQ`*sFD>UP8D&~iVY1+FIHp)0P7-7WiYZrmrv`l#bPxdTL+$ z*UG>}1n9ADDM;CmS^fLf)7-zaX6C7w=chUJ2UBtG5=cjNS@7+wMbNCSP|8H_Qi<{L_Obdq^@>=|Hqb?5rxbSM- ze_q=Ikvl(9_}ZE~%LphwLSeRF_sLwg#QcV#Mz|(*@uvMr#r=<9f5}68aB8}&g@BEFo774!K6250=c-di z8d_%CRm`!UF}_0XMEni5-8K*TAS&zM0xj|YeNK3R^V@cR`8%;)O$~7y143@5gc;9r zo2Ffj`O7y*V*BS>7M8PCtg-E~e7OPuz8a=!VSBvQadt8ibF#caYB1>c83s&iMItSz z{0dhH8Qwr#sWi+aimX3joDQ~*TTy95J`caZ-98Q%xaDUSamkgEvKr)d2${0a_W6js zvZ^+_np@aMk0$B%#gFZ@V>zM{MY>0H1I6u>gk=T6n4YnWjcJ6;*4K2|+pPJn) zRmrq_QY690aB-t8(c&6^<$pxb_}Bo5qel}0KDyV-J3Wdtl2ikTB3q)C7*_qkx(Ms; zVE=w3?8icSf|6?BL9;Vf(&Qq^M0SXkGoS1yI~rqOtM38+V~k%~`8ARcs;u8AstUa+ z7Q)a=R3@Z<%g{IvAF@Vq_M_Z~Zp!jV4z6vy54>+{ICViq7yp@&LDR;+vR938=(uR$ zalAY>4kRwT&jmIsO4^tAwm#d*z#TTJ>peqe;rbzbpA_&^2(!kYWZwk4}8C zglTL(^4J&Nma!bh1QuFU<#=i0GCgmsO)?&=YpdSz92ymzPA$ME&zdjN=dMD#(Eq{S zvfaBX<%1XY+nbyac9LS8^Q#iSyY0TxJ+zh_`NR@!l)_T+p_Mv@tAf)$#n?e6?avSH z3UVbFNbRy$Ou}r*u4cBKd|>>3grHt_*Yn-sN4@0smv(INRAYmJ>8mK!41t^)m6lHx z8xL!97X3absnAv*1YP?nu#}U&%)FwO3&p! zW?GOJE$674D?vFsWsBNlz}7231L^A;n>WwLhO&+`soU^mbR0~t%i+Ar_e3GW zOI$`<60!T7RA0nJsg)>v=`#OGI4q-5whOWqn1VXyr#@tk02co~teDpEZU>;&4TUYo z%N9Pd-*h`a;IEWjIGK&sikTPPVm3vi=@2noHp)=~abj)HEC@^gi;Bx5?B zP;kp5nR^N}el$8E4E(Xi9LQr0Fg;rml1M|2qr^fyV_h6TzAVzHYrpaK^FQd6fK4v{ zo_H)%;?meoZSz%{nA6)qf{o`ng=@E)x=Avv`7F!$BamB8I!|ESsgvVJng4-CD)@Uc z7Xn`5g4PJHZYZQ{42(p<*ufnnChTv(apG&QAroxD754jM^N-jvg266U@)@x5;>l57 zmPb~aVGpmwNf`wLX!dfxqH3C7&*3Z5C*hd56%KgwPBx@my-RjDf^}VrZ3k9K`6MUA)Uy^z!8=GAw_Ar5u zF@Z&5Z*+OJNHQC;S0~hGvUus{xV3IQvTEn=?N=>V?&^E+m4sTSMtQn)}{?KA16DJ1VW9S^v96&?K}WkL?c0y;@e%Lgd-sudqYG0Sp&hW@cbBXK8SBjBzDR*uUiIMyiG+Mt6j zFel-Q?=_@`h@Vdy0w_}rAGieH^hxg_-4Ez2R|RB|B-_6txaL__N4CLV{-9sn^>kvZ zFqXI_RX;M+wn4wQwXqaddGOK-CyN^l1D&tVBXHCXqxY)EE+K^pAw4)slKK-PyB7gj74 z{Qmibe2{RXrhOpvKW*Q$h3Jyq^eo1%=49DQK(GL_bt9mqfSS5#x1$NlMN=I7V`@CY zrd63#K5P#Z2wE5mXJ+NxcYx9~xgcHF^jgPs-Lsh>R+fG4%zfRpt^KXmlC9Rx#2WO5 z=E}zc^mMr8|6fJCIdBsUCNy!IXX8`VT5%x%@}1H1a~a>uw@!!VRDAwEcC0l}ZnJTG z>Qwm8+=0tWHE(b2xDKv^uyTJj2Fj00t@{D7=-$t3O8e?N0g(zz8tN43x6Cc%N6Sq7 z2eh8@1N`=Zn->h$6sU!SnG?kyZ>yCLe(|F7;&Uk_|2pK3k}QxHLuDaBG9tm`pv}f@ z>Bdt%uDr#nD^>mzXhr`&kD@~nXZ_V$+4Lu)@7wOqTztd5)S}XFI-qLk`kf@CYJr(Kzv8ndrqeK^ zlxfi*5O}Eq-ERNUWX0pwEA~x?MDBDLAt{_UYQ!`1Io?CJ%7Py&fv!Vp%X><=TLqAW zb|rFapa+KgLq(MID8KVa46bbQGSE_KjLNsKP&^%g?a>=TUkw}xGFr{un2|L z+n~!RRdFog9rxY2RbW0jA$a?~~HX-8H zKJ?5Z%bH`#tx#y0O_Up&Xg=kPQnf{OFJ;7xsut+`Ct$9qGaGNhy!#N%TbZWT&fhcI zq!_Mng&7~1^G=LOmsrj$=I_{?XkqfkOuTWhskJ3I*=H4Mm5C}{EM%xa(8sY?np!5R z6xKY#w6D;4r|jm9pO!T^#{nKJ)=w#Ge8McWpH~g^i~^qx3uqwuw2&iM%QK<;*$c%jH%ZV3-1JQ zP*mMdaL^&~HS7>aUsgA_lb@cGw7rzra(Zl)zx-pAPn>z2u7)LG2le$cp697N5|DkQ zxcTWuk2yC~G4yh|K-J{Ykf(m7`6}l?Yo(}D*By z-J%t0#YLZwWl0=v74d-_apzz9-2oy_)J11X)VlaZ`lcoIG&<)3r(;vGU-7t_F?(uX zK=k~9K0v-Ws}U*i$iqH}zhJ!nNVETY@n35{lbplF2c45MbaRK$!B>zM(6vh9@@v>= zRf^B71JZL)1hZ$a(E*P7;0qsz+W17peKTBkPEyGIZ*KuDy~vRo z05aZDLihOZ=J1+Ps)RyOn|4vlX5oUs)al#zN6TiSWi=b8&ga;%C?ag$s#I~SH{T$V z@D!f7##JSrF&@L6Q%F}BiSI%dVi#a^y_Cq(SPv7FNWhkSp$KLZx@k9dy{trh0 zhfH-_B_UhQ+g%sF;4_A3Mt+d@D);bTkv*uJ8|-Z=L_rZd5kC;}WGRKzKx+g1mM71I zOvOeD5)_=Aig89{lg^OUr3KD;&P1iKo$(hhC(~lLIeu4ujdwHSm@~UO0eFX?`zwaR z6;Y_usB`3qExM{n1ZY@To4|`% zFDqFK#msNT{=8oU-p%jxRsnz3$NE+jn8>ly5OLG7{mP6x(M5q2k&V>_#K|T>=0&o8 ztUf5GkMSl;&`aqt4#Df{7!sDfRFvA84C^6n{kT;qU8)%XPGB&Zz^9Uj=IaqPq~ z=Q%ppaxSusJ`xn)CD0l9?qVDMOK2X-bA54goO_EF)&Orgh`d@aY1xR6mkp+C`yE;S zk34%ys7-SiEi=8O|_`=g+tZ3KXpn>D+7dTYP-Yk*ghuAy1zem%d8u7kL|q;g2-Y4%w;ks zb`jg?Zq~fL4(nMNn{0du3?8VaJCr89nF|L5!Ueb=EA>9(rutsh90ss{NeFnoSN>B< zv1cogvorPnt9J74Bd}tzT-vVQexBAv3&T!)PZR!doLvP&m7ACQR}&VHi5^7~l9^NI zFn_k(y26VHn$p4iE^l=M?}z}6e|(Yf;)!%MRAq+T=b6sjQ6)5YMHDhXak{=+;?1(rQWh zhYPdI8S9v^7`MSnTn|2v+C!tQsTFvr(ZVC<5)OMv4eZdi_~KasW|i1Jry6{r-LSUG z{^7#6sRBc%Rjspv^ta--=YL z#dn_UJsIT_LlVsj;u2v^(av)Z=>-yl(6f!qQ@JLUsc(Ld;d@M{TEh1N^U zfi>bs`##@F`fg*2*IL3RG%Jj6+;C1HJ4Ry_MpUwIbtjfmP*od}MJ6LI$k64R{K04~ zOM_*nXWCR9IakwH6ibvvoU=E~VjO-dB-xNsl*OB=NV)y11>L6f!pR~F2kahORDgq(C99lJDqVe&&L7-fdG>Z<#vMG176uQ6?|TqE<4-;`d$Ygv1LeV z_kF*-|Jd$QX*;3EK5$vw6&=>9(XGe~{T%qRW&}6Wj;H*Pmj+kW#J#f}my`utwVWM) zc(TgYajtl6>0iK9L@HhE{_SL5x&{3-C$j8l(n{Csb{~{!6By4V_kz5+r*qRMfL)t( z$h7C@lJ=UlxFDr5F1H(bNy;x8xux!zb?-pA1bNXZ=|w{4#xf>%=@dImSK49CsryjY z(RZHS+LdSqpZPl{Ir(1IZi)Jz;8T$~#vR#~%&CqgOyQXI}gq#H}|e;2>Ny`lZw;9 zHdV*A{QRBY3v~AsiW^dDw!qxXECYWGAFX|7WrSk!UR9yIIQDLer<$F0w4>3^2c6$? z%qMTXZfS19zfSCQ_7uNw781|fd8OA}#)rQfTO*yu5ezZ+$38<|;P6iXwdZ>7cFL6` zrTZu^qZe($WYA}F)hI%7HCs55FX%$pJo(xSKaoOFA=AE|e7`qW#>#59(iP96&mrXZ z10JJ4z*8i)%3Vpi%snmjay{BD9m`(+ioE`$SAN2{V>bA2ytyJfU}9lf%$nj2XW~M; z*A0YQ?Fnrvw8N^Lk|_jKa7^IZh#(5#DLi2bzLX)?VVE-eK;Zkm%<`KvcW@a``0zFL zC7vKBZSbe&6~7AftG}gt(B+yK$}}1K4y(U0f4}k%hyL#KS%eb#pSs^w(*}r~(G1!J z{hop4J(lC%D}KRWxbyGtTWXL!rrk0pyQ5tPONr7jD=nZoxY=-Z&o=XGz@Du0 zE6x81b~JQv<=6Wb!}?DVMrI_NTs%@v1I_j2#I|zPiFAK?b&yj@%;nU@A50ox*wXYHT075;*^|mw`RUuuC?5LrQO-3 z>YkdHO2#I?0H50jweg;aA+5LoNsL>}16FP>CC(d&&lD5(_{TdYAg5upu7N;dzL0Gx znp{50{--H*_w&_eEngI@QrJTpNfZlR{Akbv7k>G2Fn#(*flq*AcpoJuwEV3OUV4q< zMT}xZ38J7yDN;eCEuFA+BP@6e7?tHL+BZ26q}R%Twsm6L_T&QF{ngxqjcNV8w+aLp7u93HVJonzNXG^8(yi{gLQ{(S`|0q^NFC5V^?&4F)w5bRL{=@BfKsvH2M2d0^%G3xp&F}?wDC!pJM2|kpfR#F*SoE~5HZNloei8je9Uy^*A8#IjWCO$Axl+_=uy_Z9`0YIOc z)uvCM;p4|T{jq+>%iVT3gC1zq@GUKmW*_@7Tl6|6I;=6Jn)|;TD9*&E53%1t{{sDn z3F@WC*(!oCIt;#H>tC~lGkApB`&wztn0%d_3G=*`5lMXX2g;UFLSgm|-wUZ4@^Os8r?3=Yl zWSd4~1;8zRImMo0Yzv!;=Q#7P&?*x7>=XT8HV*7aqoOTYRZ6~?Om-F7R_%D!d+uvC z=sZc{AUT|}_tN9~B>2X}^XudPqkxi9E35+=phoe++yazHveen-EMK1~O(O-8>+Z=I z9M?%{&^`MhY{X&G76fc$kDV+gHxeRFQ$?VC`gynieNIN?d z+LH6_(6Q9I3aBFw#{ECl*ugC8*+Db8Lu{Xq)~p(rD|*l&h{B-RUc{y7e(Ud9u_MMq zv^OOlDa`U>_|B1}!XSnw8QcK#rZ!u!K#@IQ#B+gD~Gs}z2_#-lNIWJy(PObvgA8Y0k70{ z<&E5bYp-^>-kBX_eOeiOq!kfQm2Bsgws&YGFV|Gnc)m*undiL(#KlcFwFFFCM&|YU zy{6Weq^0gO%3*GS87^CzptUuCMD{DjVB0PI7CGY9s5wUfUgf zuKUv4o5`*eHHjHOcNCmF|D^c6@aCXS!m1pW*XQ2^+BCuQqa3_;ucoSd+EWqSZ+6>U-RxwY(22GPoepTpN9PkCkXX%}7mfL<;%ss8Y7vuh`Wlp$V8xO?!MJ8ToL zACg|Utl(X{=SnOIVlomNY8 zO;8=gCrN+)7=cks^=*c0T})yP?7t@x%7|n1Um8j7Xb&K1&zr^S*Cn0y4BxOJXU2_q zDv2A-2cQMRe4u0dFP@OHvl59xSQF?rVtRH4-qG5%J&7mV7cMvZ&hJyXBH^x+&-H=o zIhN2$%)q7n41MY2cjM%bWDb$LFU3VC*nmbqpU&lQIA=bme71f_*Q_J?hs%RsyCpvt zO}YPaP?QqvQ6{QF2x4|SR)U0v>JQTC^`UNxiO~_E2ST`mg6)?-y^1SVe|pcloF&KJ z6{}Yzdt=3O7Ml&j;VsqNcM_Mo9VozWiI_c}v-=VHc@f(eP9@f2b(T!d(3&{SNQWmr zTVcD~NA#!%r}9KQ{=vQXD>Ytb&N(IX#Y3m&Qbni{0OAMk)+ZkecIn(0miA_*6hZfK z!Q0Xk^(nKn_4t7fpPsDz5DRWOI(JkBH9yQzspZDg=DSey&Co&^CU*h}3PW}U`U`tw|7|5BmM`a{)mriCg-)PP<79@3H2Ymrj^#1ndOrw%r1w4YeuydWHf1s_a2p91= z-cYC>J_OoXpd=mk6n1$~5TESLvcLu?DfWDWVfY`QI@n0u*`Ax6?QmCMfI`{NF_Pm5M)D8#93u1UwEA4lT<#&4JJI?PYpl-=uAX6L_|EPyx({ zw!5zEXztqhLQK+Mxes^i19rVo7k|NvfN%(Fc4=8+br6V%ky3_;sf6eudyKc($Mm=0 zxmQShxgv$oSM#BO49p>GYuJZg5D{R^cCM=MkuTV1*-Zdbvp+~-^@o_8E~`5$A+Z%w zib#a2qfB{xl!f|RVw!S`i;5%S2tD~D|KdkD3VtUbi56;W?NM+PW2@o;CLQC1Uv^WA zpzi{V9M)@4%qgf}i~ja&DO#vsIXwx6~8H={h_vf@}GirL9<73oZLiYao27lG-w zfx!i%E%YX%w4jdG+D1Laojn)PVi+>~H=Z)Fck_TcgHZ#}iyw~cfLilRH zYA|Q79t)tz&mGf}v`TA4mB%zJ)I2r2>aKBx5YLuRiO5c!8cq-_;xZFv_V%QjT&m6| zYok2uq@nW=g<;GH&_cUM`S3;EfIjab#k^RlE7Ta3G9ap()HME4Q;gUn|12*}3Aw;O z``6di&X2opG&`=l|Ko5j3Cu|iLL-RKho(~74u-`8D&w*13uf8%V?Hr_PEJ=aW%K#h zY0j(dnd^CMXmKdKGn+P2zm+q4rs`j@0O}bR7U4-$rs}jb$QOetp&!vdfco!!#_zxM z2>#Q+s%LHxN0^)KlkBBn4Ar1<$l7mg1*=Gx;2PtcOdKF@wd;W-BwB^_=ZpNBRM!zX%&ss`mF~T6xuvSL|0w{E$l55ZyDYL*e6gpZ_B;;du6qJ0PyD2@C$<@E7PXiJ%U*m~Rj*h#Jlm(DcW}hN zGFfHmIQ;Nz2oT;`@rn0EuiL&s6&k{s@~&tBLJx$eQU>O`e^~rt-urNdoo4P{()vPH z8aq5GMjRC_zeQ8SNlGd;7rUXfbLhkF$NwkR4*H^g9M-4-v7XnOpV!gUnhy!zf=Zej zd9^x&{nErBA7Pbga~lh3#?6c-RpG8**TL5b_v2eOf$L5srx%7A3n9eY^^8aJnN;WH zcj`!pnPqXa*l>GrGq0N4R*JW4N!>5Q<35tuZqhnxeAw-tMlN@Px02 zJJH!A|M+E1ds9oHTt)xv3jEFM8&dR)3@k8C++yUtfv)Bp>6`*#be$HX6MmK)PzdWJLC@K(*nL5n)x=;nUAwp{T0ewW0NLTQT{l>6~t44IuH z=9r4o+UdRCZO1BI3pw-P`7q(K<3Ih&pJhDT^x9R!|4_huE3qs(1e z-o;F{PN;!O-l!)cK#g8Gv7+lMmx#QXc3s95jD`Qq8(d|u38*2Tl~8Urz+S#4IkDsC z&Sr#ObkKZTufcKf&^kZu`z$F_hkxbVbd<1l1bAii(9=-3biM8Ymi;|T%*=z8o5>Qa zN??e`CNm;hX=mlFyKze`*lsn;sh z?|kI+e~1G;SYAomC1pVSc1&cD5xvRw5f5?iKi5a=oM80})I!Oxm7^wJoyfYX zcBfmlGvAH$MKHzh0dzwjtLULK*Sa(J4^KrZ*NUm`9Z$S&8BbKc6LKA?-2^RB;aH-x zsbY{@T!`zLDPiPm=n)QqGU8?(7dNHmRAC(a1OYFb{#Rh8 zAjdd0=CVSk^GaMiII^cd%~Lh~l=sTM`pScvEbF=Fp^Uhku6uk0b$6nblSk~eO;2B& z`>TkI0#|3XknkywnIX7XA=I|9&MZ`xj)^Z<{8KRoq2yPxaH+nlAfd8l4Rl+E31@*gghO zmggy*okt>U!?rE8(Zx{A3YW!88TQmU%lyP8adsx%D;~CZt>`W6`pL7?bE9G)y&_ko zB3Dm)ELgTchA;P-3eM6EtJ=oJ4d{LPp_OGW#>FXy&Fkp{wU_<_37i#Ys#nh!4L8$sd1M{P5-lg0&bd-ETH$gKq8@=r5A=;xq)f2LaC5_?Dwl9nA7z1=Wn zEK3j^(g?8N!&@OfjM+sUri2z1wJ$eoIj?H_~nO8g>OGfKK|0~R2co?v7F6sdKQWVT$oN0*bX+@QNsZY~x zSYb!$H#;1kmxH#ptfis$|Kyeo?cH_Yw!7{X2BUuVyt4hX;n&$~!YT@WbsvfNRN=mT zGTeClRM-eFCJ}!PBCG`9g1igiU#Jy-TEn{|wXz zfo2;bbl6|rfDfv8&=3DBQg&k76kWL{*NH}{6`lmvkUgUAvx7+%<_WgG>PU{Jv0<qPp%r+S>*_1jx-U^zXopUh$KBxs6?i)23d2E zuy!;qgc04GkPjpVaE)M~03oqaq5aY#l;ilLfxJ`{xYHQI6S{E3jg#{cph2Q_u3^_7)e|(cMnLf_-C_vg0RmD%gfq z`rYZ5WjK$3y)!|DwxO^S z$kxVO053US8uG$97x`b(k~gegxGtKey?-12{IdV(sz^;F}kcZ;?ye+Mvk z<>%amDL0i6!+#T(RDAigfhi4?+&Yyr^XTwJQeM;h7&ybM7Xt~t!ZD; za3Rkuj>c?Pt16(cM z!_^NK43XFZENg>)cmKd+|3Cpa02v`&H|VTg*8P3>*9fUXtn3C|=Ky4k6xpC#@56H< zAiuC_8}#S<+xRuV=Xd_e>Ccv05>S?E?6SNCq%I9C_e@NeXQy;Yx~h(8ZudZzq@Ztu zM0PTokE{fi;*w36%!YgwAyf2Dy+aVJZ8APSl^ z{D<0kIEaXDju#3Az3yCRkzHTLvk#WopD--pbT_5pvU}7X*P#Wj?*}7O-PZks{MG75 z)c=BCf@_77S$!Hehr}7DIq1Tk&a>Z>o58yH*ma6RP@la|R8pDij9W;Mp5!HBR6fTL z7ZnZ-2LIa=OsRjLyp|0VNT2 zGh?lP{U#yHezDEC>~Bj!&+=%hvlwI-9btGiVM!gf zHO3I|%<`Nfo55cXo?7STku>vtL1d^=nkTRlH7u5? z)^}bQOMA_dgZWLjy?if%9>C=%w65Qdu1QKu5~3gvwnI)X*wbJGlY>F9nQk`e$i=&f z+k_g!)yzjb*BdYPL5HcsxV#J3b5&rSNjMfB=Q&5z~O6_ z4jV=LdW-LVF7JLrN<<+=5g22nrLPrG6jioOaFD}#c<;s@xWm!l#e4x%j6Yd^U&LKe zviWE>iUohJK-gtXXBUm-pj&_AP1pAhkav!MoFq%g2 z;8az;>JFtwU0J`qyE}v5z@~i{aheK{j4Q#+B2AM%u{;v&0s!D&g*xwR4@VQV<0vrU zJQBNR=N;jfIh!96PsXEHcTY04*B!VyBb}+7Tds_Y?W~31YvRQHq`l)T;XSpUaBvYO zG4NL2taF%XU8A>2d#3ijrgYLP+igBAMdrKMvs-JPf9h;!lh_su9dp42;_xyeGAN7U zH_twUEW`s7da<74GZNkV(`+v+_u;}HUC=->3Eqplk7C5@3TJ~DVN0snEt6c_pd3d$ z^!o(H%UCApePjuOn`?}*aLCIJ^vm?U(N zdN9?b)G}NVNg1D3QU@CbH}-24>}aU%dZh#a!#TKx1)b`{zu(l=Wc(cKPP0%zA4Oj2v@#PrnDItwN2LXIT z<@kYJUYuMM!i=q;=It(hrO*QY_vIyO$-fbwocngKG9Sj?y};3vY~#8UKEMDMLJa!_ z=n15PdJMGQjtq1Sh`4>gH~3GkJUs#KgCP%)Io(?X8N+Y7G-yq}Si&EUoQrxrass;} zD|~Uy=p4LD6d$=ntvwgIPvckbyGzeefrKAKZVC>;w5S`6|s`=gyc$ zaUT*nKFsr>LUrvkon&9fXydlY+12Y~t)2)J#LGt@8uueRJhNifa~qynu@pr;m07Wk zuAP43g)pr{L}Sz-9Tm1>aYG^~Ua6XcS|;Zye!%{HTMwUqVLt7+;&Y$_<)xgFG_rdY zm{G64%&GjWXzvo3-bZ`XG~&RHP7;Y&s(#L*Kit&!@~FWvNVlS95Z}ktoy`)fFUYaX zyZ5FN4e4s9U{3kR8T}A!d)l^khrZOOQcp6nfsIFsX=jw#SMy9?xECBW8#y4)(OxC{UR`RP48gklz$X6tc!xBYb!i}lsRmPzAR)TEwq zeHHRI8`gFExI9&NMtSbJUBRmHyf$OAE+WoZWnVaK;$UxoQcp`i>&Ap&n-q&NK`Sda zR)-Q_Ub|TH5K-sOqN-Z9+B!WbVp*@R+l;T60bK@V=?U$?s~@rVcN&iQutL`EkoV^% z?>FgE7mgLCdh@+W`Y2;LdpcBpGSRZH@HL4wy~lb!H~_y$D5d0W$$z;!mm5J1F`C20 zx7KA0$rOGjk!w~*Lg#AX4@{J;EAxMdO*OuieU(1=Du#5Z%=)$=_+_JV>hD%W?igFP z8A%E&={oZn!1!C4ZaRTJhyUm6eV*?q-0Hoo;2lcMvb9x*&*F=pXa2rlO{&(v(S144 zhMSFgH5GDDzrBQW$pSl#IwKND@Wr8v=H%fSi=O|rV3uzvE0#CVe1jqkT9EKet)q~0 zI8Q8RYUKN^F_X?mUv(#=GkON78vmHPL(z|4|ekrKu<#qN4C1 z9i#?=ih>PLQBkV&PUry=vLXT^O+-PYiKwXb-V=}#dO&&&5FoS=AdsH$vvluX^UzNN4sX5g0@@X+xxEAh z{Ap`@sFeK-%ng1v++)nh#!Sln>l&fM%*OFOU(R$Kk2UiPxPhPDv(xIc*3GRkafH+U z)ECi?0=EM9^uYDQR)(=51NUpH>$fH*)umT-*F3j$Qb&>1Xw#D2(9>Xvu>*T0t#)VI zR3D$@l@Q}Y&9LyKi>Zk|sC47;qlC*iM`oY;yn)_ISxwaazU=A>twl@A_J_JeRmqF4 zW;?$$LK}K3B6-i16n|&B_+;~q+lZ8-eWZL4#(+qvHzFh{3uXnhnGCzsfqNNKxHT{IE$5BSniDwK?6n{mO_~PiA@FbxaiiaWcj@2lkDq$W1y94rrw*nXIpcHt zXiCXJH>HHjTYeB;5Zn0H2{dWQl01$c7C%0>;Pln^x`Nv{VfClEz3)$<%~0UJfbH^$ z+vr=CGnTU(YEGO-tk41TA2jG-S37U|Z?NX-wd#mh_MAva_KFswu*PLltr(cR7ml=| z&dIi;x^mq&=&uwPv|h8alNSmz{}SZ3Uh#!|j2!caMMHkyX^HTe$}gGhXjm9CZs+%Z z`q3AZgKiRSM4G!Qo`E_*DFjmcBo4i?zlPX=$zV7@cTu1#rJAF&p)ANY= z>}+Va>(j++@Jt?9AR{o%=PB@l93r;jUYxPvTXF9u;ucGK+R+N^A2)qf`V`0Kz~KFf zz=R(JFY2eYu`xS>wc}+L)g6^+TaroAUOi8buR(oAzVj*ReREDN#|W7FsXnJH?AS8^ zr1^k_P1Xq3)%7mc*C+zOwX~E<=!;FkF3Q22_Jd{n^dl-$2E)4Y@E?+PF4)Jz)s;_z z;hkY62o>TaJ``J5J2`dE39GoGOG&7N^ilPQll!6AFQ?lO^+ID)wA5ma-qJ#koGz6% zeM=KEYo?zZ_*p^=5Oxj$TO<-cJR8SjfuU#P@18#snNqTVQVqM`fZ1mwKRv;4i+dXYbhJ^wi8#9267IO zPJ#-Yfi*(*scBD58}))O^)N`zgfk*&XkEg9CLgSpu)Iq>Y% z^|t4XQ1gr^48K3D$E7TVXo`152OU71Ka~^vgOr!GA2cfj1=$l)SOzrsNrNV2mf2!~Q_&X4Uyu1aUt5mY>Z>)*g{Et8G-&(&W*b z)$4S;TNBc&P9Ar8UvhakPatDs-pSr4f838Cm5XTayysTv6+82<`L(pib}!#Zg~kK+ zu%E9NNk(SmrbwP#&pBmYS3a!oY&LuT!f0Y6yExUT9K@PMxo zO;&QG$n1~Sj=H)ynza%pa_CX$)sQq_gZl$7SX`j%NY3>c!>eOw+}krU8k(U~Qwc0Ur+E#`eO6CN%VkXk33s1Z({Dl0Cl+-v9VJ&M zk}u`nPCJ3*EwWy`7r`njrt{Cs8~#iol~?{~Ym|Pl-w8#e6P!R18$#*CWEM{nPUe9A z1$NF}g!Kji>EV^|4~)cDNNpe;#-I8KR43|}?r%QJx|zn$7yHdzP>a)P4iwv5D{`tX zelly$sk>ftJ@@Llk+71E$YJWRSgFR<`x%3%sr6#v*LC4$BI>yAql%E=HflTu9?j&00 zTkq4)=UdMiqxScvpT&3qs*+CCuRNdy{Gcg1mEbRXzj)?L|^3=B)E*T;zKgAa5OA)%E%vD(vz z-LvV*nzl?IaMNLzKZjtEwtoVk1D+;Pm0%M7;H8L{X)}{%IRCL8Bi+ApL}kUWQ81Kx zL=eE19e}pCxaJ~S{-1yZneSlqJF;ENk&7QVK#Rf#>_CsQ{bN(A8t?|jietWVsO+!8 zt}If`rsY$)2M0`e=}~k0TL+1&wWrxyUvWagAKpU3sgN;pM3LP7E*=2kn9p$3g|_ZIf+3 z;%0#5AMj|{V*I5Z=mTAOXAld%C$!=6$W@{0BgcblnPME2uV zM)E=iama6_hXwSC5$LK1k!~Y&L2S?Gw94+v3UqD^(xoU`c(8Q7FJ^(y-)ZUO=6dNk z!X?KNs4+{}FwiXgATvw8rQA)Yy)3G&nfYGo9a#~~dB09zDeB61SIVL_D|&YJ4tWrU~*wf|HSG9;bC`bLyB4JUc=6ONLrC(>aRUIihg8zoi}IR#r>0jax# z((gCcp)_T);*z$t??FV;jKpQA>#PDcFN{IWuU{8@mwOu5!b90N*f-n*dlzSJ4_o#) z92#CgiC^;a#8Q(6(u)i?7*TymDwTRKlZNtzWm|x~kUyK6eYQ>luwaTeDg1sHVp$F` zj@xJ6INr%%5{J(*(*lk;aWy@&znFQZEg+=sME^HgyH`$B!uLj>65tcAY0=yDlP@*o z({CU3mUctB)bzVio=PO~nSMwfM&ItGQ&-qIjhwcq{_SHsUe3k^97U}NDX*F~lLVRQ_G-iyMQ%iLp*2_u@-Y&<1 zZeV>ST^sPLW%F*F5=30Zy_rg3!*|Thh_w%Gv<~LxtY?00Fj@BrlVioTAxAq4l*Pac zPgp`7mGj|%xc0`A&Y>dm+x7X?%++o&lGEH4d2qtf@H4opJSNf!_B(x1bJv@g71o=tY!jZbM4L!S$@=Whu9$9ox9V9hh2edA1jW#(p^|h{e z)p(+6h1k_Nd+nh>1Vorn*M;+MDwA}{+@h+9_lX6B)(|{6h707+KsOg*gSzRn$rkK* zgZKoxK^i%DN2q~L(?IpOuL!Hg!7EE`KKZd#%zA?+v>#$8G+GB^EKx(Y^;#e=uu-K( zOG3<-%4}l!{Q|Uf^&pwMyGbb zCq!F;HePI}GHjE|+;G|4*57jZq~R=9zeZy?SMzS8i?|POHlMLzzJi(i}U*9AKov#frPkf?50oG^G(h0xYFKB zq(n0RjP+u>n*TE)f(bQgol6s z^qJyWzbr$}aj~*ZqRMgTJlputDpBX8V>x%%O!%J4NF0aG&}pILSdiosP=7x#C$gl2cRfk)O%B09KKfyE^D?U8oiE zCOF$WmZ~d#AyvK};wh8x2^m=><$I)Rb=gCwPyJS}59;i^tX@cxS{dprM;yL*3P0 zNHgJNDZ66b2+^QRqmQW^UFdx}3O!BEnCIffb3Me3qt^n1K*?)_(l2*Lipf;D<=Gb9 z-MnjH>2!Usfj8csTBwa0Hjm!TDr-Cb0U5$P@_6>ZeivR*qH(Sa=$%nC@%Z?}S0{?X ze#cI6GlCs6&z{RJ4q?JQE6x&~>IbNW;Db`5F;%g=o|FCH2{(k~drW*^tm%TV-CPL< zKE4*}N}C~v6qwu@13*j#``?`~e>%zm}LrefrquSAMYMiZhZ{`oq)J8>y{`9i0lQZ3b+A6ElE0oo}~ zcD`O9SKCE1K!WJfGSfnbFqF9DX`dTP{3kdxVJSzet=w3BMX3cuuXo057+>~w&0=Em zT0DYYyg3htY5uLX71ZSxd}S6GGNXKR`b`bMsF!E`&m9PBuN8Q14%er=##-W3xN9Cz|9u=1B%ub3wq6d|>L!WI*(4V?#w z5*s2_9=V5JoXhf=@)aw;u_tEtZcUa?WN&?t+dDq>277+4HN+S8J-lHfG@_vKpFe;> zzKL9GRAHZ=5M#>rFF8-nH+2HKGrL+^>w--s+8Rvy67>nJW*Moij(z%zniB9@-g8ev!gp- z5)Xv2nVwM8VPJFZKM3jjV(iW~b^{`79*x zJaV}E$xdQ_PA5i>fA>G;JY3%DAEnk#SKME_YQ!|*8>L9Y=LJ-XAtyF~4X$9T$zpUz z_xYv-3~EqON({~gMm=DY?vXeA;c|eu=Be_yTGmb%Rzh70V(wSJ9xlZe;JobbamljB z)L7+zN7w9)cCPt+L{)@nQSD7aju8lGvx#HBOiD;V#>73+aE}A`fm9HVTAbcilepCc zehyu=r*(d_Zfm2U?&NL-31>1J5i3%;Yr`9Nhd4Y9|1>nB0gVgOFU=vw%V%!bMFCU# zbny0zZ{{BfAtj0>kIIWzpR(;bCqIo{{=j&u!Tom=lABc^Di3+PuK@1v$|jF@b!#upP8K2CP|s0d;z zXnDlREVKk@tdfkTzg85+%Tq@FNL&Qn*x-2+<`$+OG<~k$leNmE zr`Nl>kPEwgn`7I9D7Kx}akzQYMb_>}suE3tvXOWL{tRkeOXVl}H~#ArHc+E7r{w^> ztfi1ct&(4P9~ipYX8`J$u=*Tr=IfUwJ1ym~vVbDgvw9|7=g9y`$AiW}9+e|*V&UlZ z%HenPiBj=^OVt0u(T@_8$PF#YRN#s5n?Na;v^9O)y#tO@vBnGbP2%iRSW<*=E}HOP@u|8WBUI=(s~p1QnIDePIZ7FQrN-!-ue?0TIF1!tRofd_zPt6bLEs4n5Q3zcE>&6wNm6=)k?7dT z?%X^TjK;FQ?fK*dFYR!W>dVqB*Jgn;Zf+lKe$1R(+&T#>w+6tuWck<#GbQ2G?;U4# zi-*|HGvz`g2)WB<-_{4{jTc1zNEkDs@Zvh35Gp2-nNg_PGZnKuTZ&?+wEg$9-~l3R z_Cj^&(Sx!1eEwYDr6=OvUTA913Xd+_XRVfqa}t6(8Q!bn8O}e|XV=^Qr&nqpgfqt__#?JWWZnZcdz7 zc9=3DOnVHZ?7~}2>PS}?O#Y%Y>}R1`HhVi~ZCilvltZSmyV>rK&! zoYHpl?3_my0hgE(NGFZ{iVq9pYm(@<{VEuz8&P~EvjB+bH|m`5s8F4T9;z1_ID|v4 zC&TctoO|$;RvTAa<2g0wvUd{Z6@0=0$9x-pDqx7F*MRiugr@CJ&i?PKe(l#FVM&WjB{UJWH0RrrKjhJyyYU7Uy!y9wgxU~?F zwf&BHKwHi!gFc8!aT@%S{BUX=_AC~jUVy3jPLj@AH|J%h4Q-j3fNax zXAxV?M<_;=uX z!~A=W8SeKOyhC(K^1yn@3hgV^8mF#ydeaZQE&YfnzLo7p>Vk224?wP#}dA5Jj* z7C=|Ndtia*A44bMd`iYZIP4&9$$5X==I+4)vpxIpZ7WoBX!G}g@#qnd9wY(12}0=a ztB}(LfmNt}94EFOovX%Zi@ysLOz$Nd>~l)u|ANB7dsLm%45!{g9JTT%2Z;6HxEw4u zDzOcG@3NO`6*nwblJ#>?(5eUQ$=n5|3#;q22Rjk;6TS3Z9T-+wCFzKfRd6EcLb3`z z{lHxmJtV(hN&|%_F)Ud;a!m*4MKlCABpOW38?#i%kg&TS@*#`pdC)6^_RnY1*O-e} zL%zYei+#OjxlPrrIue20oAKGn!y&aLXu2J{@nf4#^4jcX!K!0@4^14EI`!NBID3>J zS#1~_c1;dZY#j1t#*TQ(r8t%7R;8Sj?WqX!0v6tLnobPo!ZdAw$|v~l{?&ipTn$(ZZ(KDqG2ONuqAl(4bC4(^$^D&Vf~e=H@66<^6hbiT<9+w=Fp zMb}kskSca+t3Be8F3f7t&3mntBHgGZuO8_Re5_!O=vg1fDiyO=7N!!{{rqtd#i zA9n&L5-SY)uzw>ir|;~3nyP#}UqeZMmb_j{fnW3CZ><V00QRd5~OGMk9(;lRSa!>tQ3-AW(EyS7YTs$4eK zV?B(ow6hlwe-N>m#fvEvL2M#p19aQ7T|wFaYtCu-rS=Lm$>_46R#V45IyxXC(3hsA zKfJVkD{iN%?h=(K;NxH8V+dVL^8VOsvm)^Vvh}{vmU{EG*OtO>Y(+o56)zDh`Ow3z zUG{}rDCagr*;D5+F1OdVt$NP9JUGOeOs`pQOidr7Mm<{1s*xVJ_SGXnT9m=Vfo5g%$hJ-+O#3I=)v!i`^?1 zI$dO(7|&F|)@2w2#ZK6yBp@xa(X79^q1q0Q@gW3wYxvvldIy0lK-vD|V|Gus5Bn(w&IH2j^x7-iqv8ysjI z@=I^a4w{V<+>)-7wYFqm_N+o@05# zGhV~^e9_|hh^2MA=~W*ewc0rLo^BO$&1YY_#xZjAAnTK8fI_gp`~^ehZrej5#oG)k zNQJa5%is_d8A@8?)y*vf*c8;iV7c@qryn8h<-4xz)@HsoyaM^OySEJU7y0f~JnNhm zX<g2%a$KIreQDYGWIswbnn<+!hP`LTo$v({R5O*$l^fo1= z;TAKVs`-(c-$ee}+~U7_uO7U~{K>SN%@!{(v9BYkWgN7S+$R7sG7G{zD;DuQIX