From 4fc0b22012539c1261949064d1ec3bf3f0819649 Mon Sep 17 00:00:00 2001 From: Jan Iwaszkiewicz Date: Wed, 28 Jun 2023 07:56:29 +0200 Subject: [PATCH 01/25] [PyOV] Force copy of not writable numpy arrays (#18194) --- .../python/src/openvino/runtime/ie_api.py | 8 ++--- .../utils/data_helpers/data_dispatcher.py | 5 ++++ .../tests/test_runtime/test_infer_request.py | 30 +++++++++++++++++++ 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/bindings/python/src/openvino/runtime/ie_api.py b/src/bindings/python/src/openvino/runtime/ie_api.py index 9e0161daebf..56b0b8fa254 100644 --- a/src/bindings/python/src/openvino/runtime/ie_api.py +++ b/src/bindings/python/src/openvino/runtime/ie_api.py @@ -58,7 +58,7 @@ class InferRequest(_InferRequestWrapper): Tensors for every input in form of: * `numpy.ndarray` and all the types that are castable to it, e.g. `torch.Tensor` Data that is going to be copied: - * `numpy.ndarray` which are not C contiguous + * `numpy.ndarray` which are not C contiguous and/or not writable (WRITEABLE flag is set to False) * inputs which data types are mismatched from Infer Request's inputs * inputs that should be in `BF16` data type * scalar inputs (i.e. `np.float_`/`int`/`float`) @@ -118,7 +118,7 @@ class InferRequest(_InferRequestWrapper): Tensors for every input in form of: * `numpy.ndarray` and all the types that are castable to it, e.g. `torch.Tensor` Data that is going to be copied: - * `numpy.ndarray` which are not C contiguous + * `numpy.ndarray` which are not C contiguous and/or not writable (WRITEABLE flag is set to False) * inputs which data types are mismatched from Infer Request's inputs * inputs that should be in `BF16` data type * scalar inputs (i.e. `np.float_`/`int`/`float`) @@ -246,7 +246,7 @@ class CompiledModel(CompiledModelBase): Tensors for every input in form of: * `numpy.ndarray` and all the types that are castable to it, e.g. `torch.Tensor` Data that is going to be copied: - * `numpy.ndarray` which are not C contiguous + * `numpy.ndarray` which are not C contiguous and/or not writable (WRITEABLE flag is set to False) * inputs which data types are mismatched from Infer Request's inputs * inputs that should be in `BF16` data type * scalar inputs (i.e. `np.float_`/`int`/`float`) @@ -340,7 +340,7 @@ class AsyncInferQueue(AsyncInferQueueBase): Tensors for every input in form of: * `numpy.ndarray` and all the types that are castable to it, e.g. `torch.Tensor` Data that is going to be copied: - * `numpy.ndarray` which are not C contiguous + * `numpy.ndarray` which are not C contiguous and/or not writable (WRITEABLE flag is set to False) * inputs which data types are mismatched from Infer Request's inputs * inputs that should be in `BF16` data type * scalar inputs (i.e. `np.float_`/`int`/`float`) diff --git a/src/bindings/python/src/openvino/runtime/utils/data_helpers/data_dispatcher.py b/src/bindings/python/src/openvino/runtime/utils/data_helpers/data_dispatcher.py index 62beadea9d3..683b4bf4efb 100644 --- a/src/bindings/python/src/openvino/runtime/utils/data_helpers/data_dispatcher.py +++ b/src/bindings/python/src/openvino/runtime/utils/data_helpers/data_dispatcher.py @@ -70,6 +70,11 @@ def _( tensor = Tensor(tensor_type, value.shape) tensor.data[:] = value.view(tensor_dtype) return tensor + # WA for "not writeable" edge-case, always copy. + if value.flags["WRITEABLE"] is False: + tensor = Tensor(tensor_type, value.shape) + tensor.data[:] = value.astype(tensor_dtype) if tensor_dtype != value.dtype else value + return tensor # If types are mismatched, convert and always copy. if tensor_dtype != value.dtype: return Tensor(value.astype(tensor_dtype), shared_memory=False) diff --git a/src/bindings/python/tests/test_runtime/test_infer_request.py b/src/bindings/python/tests/test_runtime/test_infer_request.py index 4f730a0bc77..0159b123ad8 100644 --- a/src/bindings/python/tests/test_runtime/test_infer_request.py +++ b/src/bindings/python/tests/test_runtime/test_infer_request.py @@ -1112,3 +1112,33 @@ def test_mixed_dynamic_infer(device, shared_flag, input_data): else: assert not np.shares_memory(input_data[0], input_tensor0.data) assert not np.shares_memory(input_data[1], input_tensor1.data) + + +@pytest.mark.parametrize("shared_flag", [True, False]) +@pytest.mark.parametrize(("input_data", "change_flags"), [ + ({0: np.frombuffer(b"\x01\x02\x03\x04", np.uint8)}, False), + ({0: np.array([1, 2, 3, 4], dtype=np.uint8)}, True), +]) +def test_not_writable_inputs_infer(device, shared_flag, input_data, change_flags): + if change_flags is True: + input_data[0].setflags(write=0) + # identity model + input_shape = [4] + param_node = ops.parameter(input_shape, np.uint8, name="data0") + core = Core() + model = Model(param_node, [param_node]) + compiled = core.compile_model(model, "CPU") + + results = compiled(input_data, shared_memory=shared_flag) + + assert np.array_equal(results[0], input_data[0]) + + request = compiled.create_infer_request() + results = request.infer(input_data, shared_memory=shared_flag) + + assert np.array_equal(results[0], input_data[0]) + + input_tensor = request.get_input_tensor(0) + + # Not writable inputs should always be copied. + assert not np.shares_memory(input_data[0], input_tensor.data) From 1efb9eafae4f9c9742d715b323d5507ea963996c Mon Sep 17 00:00:00 2001 From: Wilson Seok Date: Wed, 28 Jun 2023 15:39:00 +0900 Subject: [PATCH 02/25] [GPU] Add condition check for dynamic shape and onednn_impl in concat_in_place_optimization::match() (#18034) * add dynamic shape support for dgpu in prepare_buffer_fusing * add unit test * add space between test cases * update condition of impl create() for concat dynamic shape * update unit test * add comment and update unit test * add impl_param.is_type() function --- .../intel_gpu/graph/kernel_impl_params.hpp | 7 + .../graph_optimizer/prepare_buffer_fusing.cpp | 35 ++-- .../src/graph/impls/ocl/primitive_base.hpp | 4 +- .../passes/prepare_buffer_fusing_test.cpp | 156 ++++++++++++++++++ 4 files changed, 186 insertions(+), 16 deletions(-) diff --git a/src/plugins/intel_gpu/include/intel_gpu/graph/kernel_impl_params.hpp b/src/plugins/intel_gpu/include/intel_gpu/graph/kernel_impl_params.hpp index 673acfdb92f..321e594dc66 100644 --- a/src/plugins/intel_gpu/include/intel_gpu/graph/kernel_impl_params.hpp +++ b/src/plugins/intel_gpu/include/intel_gpu/graph/kernel_impl_params.hpp @@ -126,6 +126,13 @@ struct kernel_impl_params { template std::shared_ptr typed_desc() const { return std::static_pointer_cast(desc); } + template + bool is_type() const { + return std::static_pointer_cast(desc)->type == PType::type_id(); + } + +virtual primitive_type_id type() const { return desc->type; } + void save(BinaryOutputBuffer& ob) const; void load(BinaryInputBuffer& ib); const program& get_program() const { diff --git a/src/plugins/intel_gpu/src/graph/graph_optimizer/prepare_buffer_fusing.cpp b/src/plugins/intel_gpu/src/graph/graph_optimizer/prepare_buffer_fusing.cpp index f97169a57e4..09654d2265f 100644 --- a/src/plugins/intel_gpu/src/graph/graph_optimizer/prepare_buffer_fusing.cpp +++ b/src/plugins/intel_gpu/src/graph/graph_optimizer/prepare_buffer_fusing.cpp @@ -206,21 +206,26 @@ bool concat_in_place_optimization::match(const program_node& concat_node, layout concat_out_l = concat_params.get_output_layout(); if (!use_usm) return false; - if (concat_out_l.batch() > 1) - return false; - // TODO: cldnn cases should be updated. This logic is working for onednn only. - // white list for support fusing formats. - const std::vector white_list = { - format::bfyx, - format::bfzyx, - format::b_fs_yx_fsv16, - format::b_fs_zyx_fsv16, - format::b_fs_yx_fsv32, - format::b_fs_zyx_fsv32, - format::b_fs_yx_fsv4, - }; - if (std::find_if(white_list.begin(), white_list.end(), [&concat_out_l](format fmt){ return (fmt == concat_out_l.format); }) == std::end(white_list)) - return false; + if (concat_node.is_dynamic() && !is_runtime) { + // Return true in build time, it will be checked again in runtime + return true; + } else { + if (concat_out_l.batch() > 1) + return false; + // TODO: cldnn cases should be updated. This logic is working for onednn only. + // white list for support fusing formats. + const std::vector white_list = { + format::bfyx, + format::bfzyx, + format::b_fs_yx_fsv16, + format::b_fs_zyx_fsv16, + format::b_fs_yx_fsv32, + format::b_fs_zyx_fsv32, + format::b_fs_yx_fsv4, + }; + if (std::find_if(white_list.begin(), white_list.end(), [&concat_out_l](format fmt){ return (fmt == concat_out_l.format); }) == std::end(white_list)) + return false; + } } return true; } diff --git a/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp b/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp index 717cde4bb25..253d003ac22 100644 --- a/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp +++ b/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp @@ -17,6 +17,7 @@ #include "kernel_selector_helper.h" #include "register.hpp" #include "implementation_map.hpp" +#include "concatenation_inst.h" #include #include @@ -86,7 +87,8 @@ struct typed_primitive_impl_ocl : public typed_primitive_impl { template static std::unique_ptr create(const typed_program_node& arg, const kernel_impl_params& impl_param) { - if (impl_param.can_be_optimized()) { + // concat buffer fusing for dynamic shape is adaptively applied at runtime. So we need to build dynamic impl at build time. + if (impl_param.can_be_optimized() && !(impl_param.is_type() && impl_param.is_dynamic())) { return make_unique(kernel_selector::kernel_data{}); } auto kernel_params = ImplType::get_kernel_params(ImplType::static_canonicalize_shapes(impl_param)); diff --git a/src/plugins/intel_gpu/tests/unit/passes/prepare_buffer_fusing_test.cpp b/src/plugins/intel_gpu/tests/unit/passes/prepare_buffer_fusing_test.cpp index 830afbfe4af..9eaa26b303a 100644 --- a/src/plugins/intel_gpu/tests/unit/passes/prepare_buffer_fusing_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/passes/prepare_buffer_fusing_test.cpp @@ -12,6 +12,7 @@ #include "reshape_inst.h" #include "fully_connected_inst.h" #include "permute_inst.h" +#include "reorder_inst.h" #include "intel_gpu/graph/network.hpp" #include "pass_manager.h" #include "to_string_utils.h" @@ -258,6 +259,161 @@ TEST(prepare_buffer_fusing, in_place_concat_dynamic) { } } +TEST(prepare_buffer_fusing, in_place_concat_dynamic_onednn_batch1) { + auto& engine = get_test_engine(); + if (!engine.get_device_info().supports_immad) + return; + auto in_layout1_0 = layout{ ov::PartialShape::dynamic(4), data_types::f16, format::b_fs_yx_fsv16 }; + auto in_layout2_0 = layout{ ov::PartialShape::dynamic(4), data_types::f16, format::b_fs_yx_fsv16 }; + auto in_layout1 = layout{ ov::PartialShape{1, 16, 2, 1}, data_types::f16, format::b_fs_yx_fsv16 }; + auto in_layout2 = layout{ ov::PartialShape{1, 16, 2, 1}, data_types::f16, format::b_fs_yx_fsv16 }; + + topology topology; + topology.add(input_layout("input1", in_layout1)); + topology.add(input_layout("input2", in_layout2)); + topology.add(reorder("reorder1", input_info("input1"), format::bfyx, data_types::f16)); + topology.add(reorder("reorder2", input_info("input2"), format::bfyx, data_types::f16)); + + topology.add(concatenation("concat", { input_info("reorder1"), input_info("reorder2") }, 1)); + topology.add(permute("output", input_info("concat"), {0, 2, 3, 1})); + + ExecutionConfig config; + config.set_property(ov::intel_gpu::optimize_data(true)); + config.set_property(ov::intel_gpu::allow_new_shape_infer(false)); + auto prog = program::build_program(engine, topology, config, false, false); + ASSERT_NE(prog, nullptr); + auto& concat_node_p = prog->get_node("concat"); + ASSERT_TRUE(concat_node_p.can_be_optimized()); + cldnn::network net(prog, 0); + + auto input_memory1 = engine.allocate_memory(in_layout1); + auto input_memory2 = engine.allocate_memory(in_layout2); + set_values(input_memory1, + {FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(11.0f), FLOAT16(22.0f), FLOAT16(33.0f), FLOAT16(44.0f), FLOAT16(55.0f), FLOAT16(66.0f), FLOAT16(77.0f), FLOAT16(88.0f), + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(11.0f), FLOAT16(22.0f), FLOAT16(33.0f), FLOAT16(44.0f), FLOAT16(55.0f), FLOAT16(66.0f), FLOAT16(77.0f), FLOAT16(88.0f)}); + set_values(input_memory2, + {FLOAT16(111.0f), FLOAT16(222.0f), FLOAT16(333.0f), FLOAT16(444.0f), FLOAT16(555.0f), FLOAT16(666.0f), FLOAT16(777.0f), FLOAT16(888.0f), + FLOAT16(1111.0f), FLOAT16(2222.0f), FLOAT16(3333.0f), FLOAT16(4444.0f), FLOAT16(5555.0f), FLOAT16(6666.0f), FLOAT16(7777.0f), FLOAT16(8888.0f), + FLOAT16(111.0f), FLOAT16(222.0f), FLOAT16(333.0f), FLOAT16(444.0f), FLOAT16(555.0f), FLOAT16(666.0f), FLOAT16(777.0f), FLOAT16(888.0f), + FLOAT16(1111.0f), FLOAT16(2222.0f), FLOAT16(3333.0f), FLOAT16(4444.0f), FLOAT16(5555.0f), FLOAT16(6666.0f), FLOAT16(7777.0f), FLOAT16(8888.0f)}); + net.set_input_data("input1", input_memory1); + net.set_input_data("input2", input_memory2); + + std::vector ref_output = { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(11.0f), FLOAT16(22.0f), FLOAT16(33.0f), FLOAT16(44.0f), FLOAT16(55.0f), FLOAT16(66.0f), FLOAT16(77.0f), FLOAT16(88.0f), + FLOAT16(111.0f), FLOAT16(222.0f), FLOAT16(333.0f), FLOAT16(444.0f), FLOAT16(555.0f), FLOAT16(666.0f), FLOAT16(777.0f), FLOAT16(888.0f), + FLOAT16(1111.0f), FLOAT16(2222.0f), FLOAT16(3333.0f), FLOAT16(4444.0f), FLOAT16(5555.0f), FLOAT16(6666.0f), FLOAT16(7777.0f), FLOAT16(8888.0f), + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(11.0f), FLOAT16(22.0f), FLOAT16(33.0f), FLOAT16(44.0f), FLOAT16(55.0f), FLOAT16(66.0f), FLOAT16(77.0f), FLOAT16(88.0f), + FLOAT16(111.0f), FLOAT16(222.0f), FLOAT16(333.0f), FLOAT16(444.0f), FLOAT16(555.0f), FLOAT16(666.0f), FLOAT16(777.0f), FLOAT16(888.0f), + FLOAT16(1111.0f), FLOAT16(2222.0f), FLOAT16(3333.0f), FLOAT16(4444.0f), FLOAT16(5555.0f), FLOAT16(6666.0f), FLOAT16(7777.0f), FLOAT16(8888.0f)}; + + std::map output; + EXPECT_NO_THROW(output = net.execute()); + auto out_l = net.get_output_layout("output"); + auto out_mem = output.at("output").get_memory(); + cldnn::mem_lock output_ptr(out_mem, get_test_stream()); + + cldnn::mem_lock input1_ptr(input_memory1, get_test_stream()); + cldnn::mem_lock input2_ptr(input_memory2, get_test_stream()); + + const auto& concat_inst = net.get_primitive("concat"); + const auto& concat_node_n = concat_inst->get_node(); + auto concat_mem = net.get_primitive("concat")->output_memory_ptr(); + auto reorder1_mem = net.get_primitive("reorder1")->output_memory_ptr(); + auto reorder2_mem = net.get_primitive("reorder2")->output_memory_ptr(); + + ASSERT_EQ(concat_mem.get(), reorder1_mem.get()); + ASSERT_EQ(concat_mem.get(), reorder2_mem.get()); + ASSERT_TRUE(concat_inst->can_be_optimized()); + ASSERT_TRUE(concat_node_n.can_be_optimized()); + + for (size_t x = 0; x < out_l.count(); ++x) { + ASSERT_EQ(ref_output[x], output_ptr[x]); + } +} + +TEST(prepare_buffer_fusing, in_place_concat_dynamic_onednn_batch2) { + // Check no buffer fusing when onednn concat with b=2. It is not supported. + auto& engine = get_test_engine(); + if (!engine.get_device_info().supports_immad) + return; + auto in_layout1_0 = layout{ ov::PartialShape::dynamic(4), data_types::f16, format::b_fs_yx_fsv16 }; + auto in_layout2_0 = layout{ ov::PartialShape::dynamic(4), data_types::f16, format::b_fs_yx_fsv16 }; + auto in_layout1 = layout{ ov::PartialShape{1, 16, 2, 1}, data_types::f16, format::b_fs_yx_fsv16 }; + auto in_layout2 = layout{ ov::PartialShape{1, 16, 2, 1}, data_types::f16, format::b_fs_yx_fsv16 }; + + topology topology; + topology.add(input_layout("input1", in_layout1_0)); + topology.add(input_layout("input2", in_layout2_0)); + topology.add(reorder("reorder1", input_info("input1"), format::bfyx, data_types::f16)); + topology.add(reorder("reorder2", input_info("input2"), format::bfyx, data_types::f16)); + + topology.add(concatenation("concat", { input_info("reorder1"), input_info("reorder2") }, 0)); + topology.add(permute("output", input_info("concat"), {0, 2, 3, 1})); + + ExecutionConfig config; + config.set_property(ov::intel_gpu::optimize_data(true)); + config.set_property(ov::intel_gpu::allow_new_shape_infer(true)); + auto prog = program::build_program(engine, topology, config, false, false); + ASSERT_NE(prog, nullptr); + auto& concat_node_p = prog->get_node("concat"); + ASSERT_TRUE(concat_node_p.can_be_optimized()); + cldnn::network net(prog, 0); + + auto input_memory1 = engine.allocate_memory(in_layout1); + auto input_memory2 = engine.allocate_memory(in_layout2); + set_values(input_memory1, + {FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(11.0f), FLOAT16(22.0f), FLOAT16(33.0f), FLOAT16(44.0f), FLOAT16(55.0f), FLOAT16(66.0f), FLOAT16(77.0f), FLOAT16(88.0f), + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(11.0f), FLOAT16(22.0f), FLOAT16(33.0f), FLOAT16(44.0f), FLOAT16(55.0f), FLOAT16(66.0f), FLOAT16(77.0f), FLOAT16(88.0f)}); + set_values(input_memory2, + {FLOAT16(111.0f), FLOAT16(222.0f), FLOAT16(333.0f), FLOAT16(444.0f), FLOAT16(555.0f), FLOAT16(666.0f), FLOAT16(777.0f), FLOAT16(888.0f), + FLOAT16(1111.0f), FLOAT16(2222.0f), FLOAT16(3333.0f), FLOAT16(4444.0f), FLOAT16(5555.0f), FLOAT16(6666.0f), FLOAT16(7777.0f), FLOAT16(8888.0f), + FLOAT16(111.0f), FLOAT16(222.0f), FLOAT16(333.0f), FLOAT16(444.0f), FLOAT16(555.0f), FLOAT16(666.0f), FLOAT16(777.0f), FLOAT16(888.0f), + FLOAT16(1111.0f), FLOAT16(2222.0f), FLOAT16(3333.0f), FLOAT16(4444.0f), FLOAT16(5555.0f), FLOAT16(6666.0f), FLOAT16(7777.0f), FLOAT16(8888.0f)}); + net.set_input_data("input1", input_memory1); + net.set_input_data("input2", input_memory2); + + std::vector ref_output = { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(11.0f), FLOAT16(22.0f), FLOAT16(33.0f), FLOAT16(44.0f), FLOAT16(55.0f), FLOAT16(66.0f), FLOAT16(77.0f), FLOAT16(88.0f), + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(11.0f), FLOAT16(22.0f), FLOAT16(33.0f), FLOAT16(44.0f), FLOAT16(55.0f), FLOAT16(66.0f), FLOAT16(77.0f), FLOAT16(88.0f), + FLOAT16(111.0f), FLOAT16(222.0f), FLOAT16(333.0f), FLOAT16(444.0f), FLOAT16(555.0f), FLOAT16(666.0f), FLOAT16(777.0f), FLOAT16(888.0f), + FLOAT16(1111.0f), FLOAT16(2222.0f), FLOAT16(3333.0f), FLOAT16(4444.0f), FLOAT16(5555.0f), FLOAT16(6666.0f), FLOAT16(7777.0f), FLOAT16(8888.0f), + FLOAT16(111.0f), FLOAT16(222.0f), FLOAT16(333.0f), FLOAT16(444.0f), FLOAT16(555.0f), FLOAT16(666.0f), FLOAT16(777.0f), FLOAT16(888.0f), + FLOAT16(1111.0f), FLOAT16(2222.0f), FLOAT16(3333.0f), FLOAT16(4444.0f), FLOAT16(5555.0f), FLOAT16(6666.0f), FLOAT16(7777.0f), FLOAT16(8888.0f)}; + + std::map output; + EXPECT_NO_THROW(output = net.execute()); + auto out_l = net.get_output_layout("output"); + auto out_mem = output.at("output").get_memory(); + cldnn::mem_lock output_ptr(out_mem, get_test_stream()); + + cldnn::mem_lock input1_ptr(input_memory1, get_test_stream()); + cldnn::mem_lock input2_ptr(input_memory2, get_test_stream()); + + const auto& concat_inst = net.get_primitive("concat"); + const auto& concat_node_n = concat_inst->get_node(); + auto concat_mem = net.get_primitive("concat")->output_memory_ptr(); + auto reorder1_mem = net.get_primitive("reorder1")->output_memory_ptr(); + auto reorder2_mem = net.get_primitive("reorder2")->output_memory_ptr(); + + ASSERT_NE(concat_mem.get(), reorder1_mem.get()); + ASSERT_NE(concat_mem.get(), reorder2_mem.get()); + ASSERT_FALSE(concat_inst->can_be_optimized()); + ASSERT_TRUE(concat_node_n.can_be_optimized()); + + for (size_t x = 0; x < out_l.count(); ++x) { + ASSERT_EQ(ref_output[x], output_ptr[x]); + } +} + TEST(prepare_buffer_fusing, in_place_concat_dynamic__static_dim_dyn_pad) { auto& engine = get_test_engine(); auto in_layout1_0 = layout{ ov::PartialShape{-1, 2, -1, -1}, data_types::f32, format::bfyx }; // => {-1, -1, -1, 2} From 5941ad6e37570fdd98874d9fcb70c51d9410a906 Mon Sep 17 00:00:00 2001 From: bstankix Date: Wed, 28 Jun 2023 13:19:34 +0200 Subject: [PATCH 03/25] Add sitemap configuration (#18267) --- docs/conf.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index e406912ce6e..7fc6e06dda1 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -28,6 +28,7 @@ copyright = '2023, IntelĀ®' author = 'IntelĀ®' language = 'en' +version_name = 'nightly' # -- General configuration --------------------------------------------------- @@ -48,7 +49,13 @@ extensions = [ html_baseurl = 'https://docs.openvino.ai/canonical/' +# -- Sitemap configuration --------------------------- + sitemap_url_scheme = "{link}" +site_url = f'https://docs.openvino.ai/{version_name}/' + +# ---------------------------------------------------- + html_favicon = '_static/favicon.ico' autodoc_default_flags = ['members'] From 8f8bdc51b0f78697a268a9b6c2bd6bd0fd311bbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Do=C5=82bniak?= Date: Wed, 28 Jun 2023 13:53:07 +0200 Subject: [PATCH 04/25] ScatterElementsUpdate-12 reference implementation (#18231) --- .../openvino/op/scatter_elements_update.hpp | 12 + .../op/util/scatter_elements_update_base.hpp | 9 +- .../reference/scatter_elements_update.hpp | 189 ++++++- src/core/src/op/scatter_elements_update.cpp | 244 +++++++- .../op/util/scatter_elements_update_base.cpp | 175 +----- src/core/tests/eval.cpp | 527 +++++++++++++++++- 6 files changed, 980 insertions(+), 176 deletions(-) diff --git a/src/core/include/openvino/op/scatter_elements_update.hpp b/src/core/include/openvino/op/scatter_elements_update.hpp index ae1b2d080f4..987e676d23d 100644 --- a/src/core/include/openvino/op/scatter_elements_update.hpp +++ b/src/core/include/openvino/op/scatter_elements_update.hpp @@ -31,6 +31,13 @@ public: bool visit_attributes(AttributeVisitor& visitor) override; std::shared_ptr clone_with_new_inputs(const OutputVector& inputs) const override; + + OPENVINO_SUPPRESS_DEPRECATED_START + bool evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const override; + OPENVINO_SUPPRESS_DEPRECATED_END + +private: + bool evaluate_scatter_elements_update(const HostTensorVector& outputs, const HostTensorVector& inputs) const; }; } // namespace v3 namespace v12 { @@ -80,7 +87,12 @@ public: bool has_evaluate() const override; + OPENVINO_SUPPRESS_DEPRECATED_START + bool evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const override; + OPENVINO_SUPPRESS_DEPRECATED_END + private: + bool evaluate_scatter_elements_update(const HostTensorVector& outputs, const HostTensorVector& inputs) const; Reduction m_reduction = Reduction::NONE; bool m_use_init_val = true; }; diff --git a/src/core/include/openvino/op/util/scatter_elements_update_base.hpp b/src/core/include/openvino/op/util/scatter_elements_update_base.hpp index f43da2fb451..87a465af90f 100644 --- a/src/core/include/openvino/op/util/scatter_elements_update_base.hpp +++ b/src/core/include/openvino/op/util/scatter_elements_update_base.hpp @@ -33,12 +33,9 @@ public: bool evaluate_upper(TensorVector& output_values) const override; bool evaluate_label(TensorLabelVector& output_labels) const override; - OPENVINO_SUPPRESS_DEPRECATED_START - bool evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const override; - OPENVINO_SUPPRESS_DEPRECATED_END - -private: - bool evaluate_scatter_element_update(const HostTensorVector& outputs, const HostTensorVector& inputs) const; +protected: + bool is_supported_index_input_element_type() const; + int64_t get_normalized_axis(const HostTensorVector& inputs) const; }; } // namespace util } // namespace op diff --git a/src/core/reference/include/ngraph/runtime/reference/scatter_elements_update.hpp b/src/core/reference/include/ngraph/runtime/reference/scatter_elements_update.hpp index e6e4ab578e2..f5507fb553a 100644 --- a/src/core/reference/include/ngraph/runtime/reference/scatter_elements_update.hpp +++ b/src/core/reference/include/ngraph/runtime/reference/scatter_elements_update.hpp @@ -4,26 +4,57 @@ #pragma once +#include #include +#include #include "ngraph/check.hpp" #include "ngraph/coordinate_transform.hpp" #include "ngraph/shape.hpp" +#include "openvino/op/scatter_elements_update.hpp" namespace ngraph { namespace runtime { namespace reference { +using Reduction = ov::op::v12::ScatterElementsUpdate::Reduction; + +template +void scatter_elem_update_with_reduction(const DataType* input_data, + const IndicesType* indices, + const DataType* updates, + const int64_t axis, + DataType* out_buf, + const Shape& data_shape, + const Shape& indices_shape, + const ov::op::v12::ScatterElementsUpdate::Reduction reduction_type, + const bool use_init_val); + template void scatter_elem_update(const DataType* input_data, const IndicesType* indices, const DataType* updates, - const int64_t& axis, + const int64_t axis, DataType* out_buf, const Shape& data_shape, - const Shape& indices_shape) { + const Shape& indices_shape, + const Reduction reduction_type = Reduction::NONE, + const bool use_init_val = true) { // Copy inputs to out std::memcpy(out_buf, input_data, sizeof(DataType) * shape_size(data_shape)); + if (reduction_type != Reduction::NONE) { + scatter_elem_update_with_reduction(input_data, + indices, + updates, + axis, + out_buf, + data_shape, + indices_shape, + reduction_type, + use_init_val); + return; + } + // 3D example // output[indices[i][j][k]][j][k] = updates[i][j][k] if axis = 0, // output[i][indices[i][j][k]][k] = updates[i][j][k] if axis = 1, @@ -43,6 +74,160 @@ void scatter_elem_update(const DataType* input_data, out_buf[out_idx] = updates[indices_idx]; } } + +template +T reduction_neutral_value(const Reduction reduction_type) { + switch (reduction_type) { + case Reduction::MAX: + return std::numeric_limits::min(); + case Reduction::MIN: + return std::numeric_limits::max(); + case Reduction::PROD: + return T{1}; + case Reduction::SUM: + case Reduction::MEAN: + return T{0}; + default: + OPENVINO_THROW("Neutral value not available for this type of reduction"); + return 0; + } +} + +template +std::function reduction_functor_for(const Reduction reduction_type) { + switch (reduction_type) { + case Reduction::MAX: + return [](const T a, const T b) { + return a > b ? a : b; + }; + case Reduction::MIN: + return [](const T a, const T b) { + return a < b ? a : b; + }; + case Reduction::PROD: + return std::multiplies{}; + case Reduction::SUM: + case Reduction::MEAN: + return std::plus{}; + default: + OPENVINO_THROW("No functor available for this type of reduction"); + return 0; + } +} + +template <> +std::function reduction_functor_for(const Reduction reduction_type) { + switch (reduction_type) { + case Reduction::MAX: + return [](const char a, const char b) { + return a > b ? a : b; + }; + case Reduction::MIN: + return [](const char a, const char b) { + return a < b ? a : b; + }; + case Reduction::PROD: + return [](const char a, const char b) { + return static_cast(a) && static_cast(b); + }; + case Reduction::SUM: + return [](const char a, const char b) { + return static_cast(a) || static_cast(b); + }; + default: + OPENVINO_THROW("No functor available for this type of reduction"); + return 0; + } +} + +template +typename std::enable_if::value || std::is_class::value, T>::type arithmetic_mean( + const T accumulator, + const int32_t N) { + return accumulator / N; +} + +template +typename std::enable_if::value, T>::type arithmetic_mean(const T accumulator, const int32_t N) { + const auto old_mode = std::fegetround(); + std::fesetround(FE_DOWNWARD); + const T value = static_cast(std::nearbyint(static_cast(accumulator) / N)); + std::fesetround(old_mode); + return value; +} + +template +size_t normalize_index(const T idx, const size_t dim_value) { + if (idx < 0) { + return static_cast(idx + dim_value); + } else { + return static_cast(idx); + } +} + +template +void scatter_elem_update_with_reduction(const DataType* input_data, + const IndicesType* indices, + const DataType* updates, + const int64_t axis, + DataType* out_buf, + const Shape& data_shape, + const Shape& indices_shape, + const Reduction reduction_type, + const bool use_init_val) { + CoordinateTransformBasic indices_transform{indices_shape}; + CoordinateTransformBasic data_transform{data_shape}; + const auto indices_strides = row_major_strides(indices_shape); + const auto data_strides = row_major_strides(data_shape); + + struct Offsets { + size_t idx_offset; + size_t out_offset; + }; + + std::vector idx_to_output_element; + idx_to_output_element.reserve(shape_size(indices_shape)); + for (const Coordinate& indices_cord : indices_transform) { + const size_t indices_offset = + std::inner_product(indices_cord.begin(), indices_cord.end(), indices_strides.begin(), uint64_t(0)); + Coordinate out_cord(indices_cord); + out_cord.at(axis) = normalize_index(indices[indices_offset], data_shape[axis]); + const auto out_offset = std::inner_product(out_cord.begin(), out_cord.end(), data_strides.begin(), uint64_t(0)); + + idx_to_output_element.push_back({indices_offset, out_offset}); + } + + // When this is false we need to substitute the copied values at target locations with values that will not affect + // the particular reduction algorithms. Effectively what happens here is setting the initial value + // for the reduction accumulators. + if (!use_init_val) { + const auto value = reduction_neutral_value(reduction_type); + for (const auto& offsets : idx_to_output_element) { + out_buf[offsets.out_offset] = value; + } + } + + // keeps the count of numbers included in the initial sums accumulated in the output tensor (reduction: MEAN) + // the values in this map will later be used to divide the sums and calculate the final means + // the key is the output tensor's element index and the value is the count + std::unordered_map mean_reduction_counters; + + const auto reduce = reduction_functor_for(reduction_type); + for (const auto& offsets : idx_to_output_element) { + out_buf[offsets.out_offset] = reduce(out_buf[offsets.out_offset], updates[offsets.idx_offset]); + if (reduction_type == Reduction::MEAN) { + mean_reduction_counters[offsets.out_offset] += 1; + } + } + + if (reduction_type == Reduction::MEAN) { + for (const auto& counter : mean_reduction_counters) { + // include the initial value in the arithmetic mean divisor (if needed) + const auto N = counter.second + static_cast(use_init_val); + out_buf[counter.first] = arithmetic_mean(out_buf[counter.first], N); + } + } +} } // namespace reference } // namespace runtime } // namespace ngraph diff --git a/src/core/src/op/scatter_elements_update.cpp b/src/core/src/op/scatter_elements_update.cpp index cf79c9c908e..5533a6119ba 100644 --- a/src/core/src/op/scatter_elements_update.cpp +++ b/src/core/src/op/scatter_elements_update.cpp @@ -7,6 +7,7 @@ #include #include "itt.hpp" +#include "ngraph/runtime/reference/scatter_elements_update.hpp" #include "openvino/core/validation_util.hpp" using namespace std; @@ -86,11 +87,246 @@ shared_ptr op::v12::ScatterElementsUpdate::clone_with_new_inputs(const Out } bool op::v12::ScatterElementsUpdate::has_evaluate() const { - if (m_reduction != Reduction::NONE) { - return false; - } else { - return ScatterElementsUpdateBase::has_evaluate(); + return ScatterElementsUpdateBase::has_evaluate() || + (get_output_element_type(0) == element::boolean && is_supported_index_input_element_type()); +} + +namespace scatter_elements_update { +namespace { +template +bool evaluate(const HostTensorPtr& data, + const HostTensorPtr& indices, + const HostTensorPtr& updates, + const HostTensorPtr& axis, + const HostTensorPtr& out, + const int64_t normalized_axis, + const op::v12::ScatterElementsUpdate::Reduction reduction_type, + const bool use_init_value) { + using DataType = typename element_type_traits
::value_type; + using IndicesType = typename element_type_traits::value_type; + + out->set_shape(data->get_shape()); + + ngraph::runtime::reference::scatter_elem_update(data->get_data_ptr
(), + indices->get_data_ptr(), + updates->get_data_ptr
(), + normalized_axis, + out->get_data_ptr
(), + data->get_shape(), + indices->get_shape(), + reduction_type, + use_init_value); + + return true; +} + +#define TYPE_AXS_CASE(a, ...) \ + case element::Type_t::a: { \ + OV_OP_SCOPE(OV_PP_CAT3(scatter_element_update_axs, _, a)); \ + rc = evaluate(__VA_ARGS__); \ + } break; + +template +bool evaluate(const HostTensorPtr& arg0, + const HostTensorPtr& arg1, + const HostTensorPtr& arg2, + const HostTensorPtr& arg3, + const HostTensorPtr& out, + const int64_t normalized_axis, + const op::v12::ScatterElementsUpdate::Reduction reduction_type, + const bool use_init_value) { + auto axis_type = arg3->get_element_type(); + + // Dispatch specialization based on axis data type. + bool rc = true; + + switch (axis_type) { + TYPE_AXS_CASE(i8, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_AXS_CASE(i16, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_AXS_CASE(i32, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_AXS_CASE(i64, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_AXS_CASE(u8, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_AXS_CASE(u16, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_AXS_CASE(u32, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_AXS_CASE(u64, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + default: + rc = false; + break; } + return rc; +} + +#define TYPE_IND_CASE(a, ...) \ + case element::Type_t::a: { \ + OV_OP_SCOPE(OV_PP_CAT3(scatter_element_update_ind, _, a)); \ + rc = evaluate(__VA_ARGS__); \ + } break; + +template +bool evaluate(const HostTensorPtr& arg0, + const HostTensorPtr& arg1, + const HostTensorPtr& arg2, + const HostTensorPtr& arg3, + const HostTensorPtr& out, + const int64_t normalized_axis, + const op::v12::ScatterElementsUpdate::Reduction reduction_type, + const bool use_init_value) { + auto indices_type = arg1->get_element_type(); + + // Dispatch specialization based on indicies data type. + bool rc = true; + + switch (indices_type) { + TYPE_IND_CASE(i8, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_IND_CASE(i16, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_IND_CASE(i32, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_IND_CASE(i64, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_IND_CASE(u8, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_IND_CASE(u16, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_IND_CASE(u32, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + TYPE_IND_CASE(u64, arg0, arg1, arg2, arg3, out, normalized_axis, reduction_type, use_init_value); + default: + rc = false; + break; + } + return rc; +} + +bool evaluate_scatter_elements_update( + const HostTensorPtr& arg0, + const HostTensorPtr& arg1, + const HostTensorPtr& arg2, + const HostTensorPtr& arg3, + const HostTensorPtr& out, + const int64_t normalized_axis, + const op::v12::ScatterElementsUpdate::Reduction reduction_type = op::v12::ScatterElementsUpdate::Reduction::NONE, + const bool use_init_value = false) { + bool rc = true; + + switch (out->get_element_type()) { + NGRAPH_TYPE_CASE(evaluate_scatter_element_update, + i16, + arg0, + arg1, + arg2, + arg3, + out, + normalized_axis, + reduction_type, + use_init_value); + NGRAPH_TYPE_CASE(evaluate_scatter_element_update, + i32, + arg0, + arg1, + arg2, + arg3, + out, + normalized_axis, + reduction_type, + use_init_value); + NGRAPH_TYPE_CASE(evaluate_scatter_element_update, + i64, + arg0, + arg1, + arg2, + arg3, + out, + normalized_axis, + reduction_type, + use_init_value); + NGRAPH_TYPE_CASE(evaluate_scatter_element_update, + u32, + arg0, + arg1, + arg2, + arg3, + out, + normalized_axis, + reduction_type, + use_init_value); + NGRAPH_TYPE_CASE(evaluate_scatter_element_update, + u64, + arg0, + arg1, + arg2, + arg3, + out, + normalized_axis, + reduction_type, + use_init_value); + NGRAPH_TYPE_CASE(evaluate_scatter_element_update, + f16, + arg0, + arg1, + arg2, + arg3, + out, + normalized_axis, + reduction_type, + use_init_value); + NGRAPH_TYPE_CASE(evaluate_scatter_element_update, + f32, + arg0, + arg1, + arg2, + arg3, + out, + normalized_axis, + reduction_type, + use_init_value); + NGRAPH_TYPE_CASE(evaluate_scatter_element_update, + boolean, + arg0, + arg1, + arg2, + arg3, + out, + normalized_axis, + reduction_type, + use_init_value); + default: + rc = false; + break; + } + return rc; +} +} // namespace +} // namespace scatter_elements_update + +bool op::v3::ScatterElementsUpdate::evaluate_scatter_elements_update(const HostTensorVector& outputs, + const HostTensorVector& inputs) const { + const auto normalized_axis = get_normalized_axis(inputs); + + return scatter_elements_update::evaluate_scatter_elements_update(inputs[0], + inputs[1], + inputs[2], + inputs[3], + outputs[0], + normalized_axis); +} + +bool op::v12::ScatterElementsUpdate::evaluate_scatter_elements_update(const HostTensorVector& outputs, + const HostTensorVector& inputs) const { + const auto normalized_axis = get_normalized_axis(inputs); + + return scatter_elements_update::evaluate_scatter_elements_update(inputs[0], + inputs[1], + inputs[2], + inputs[3], + outputs[0], + normalized_axis, + m_reduction, + m_use_init_val); +} + +bool op::v3::ScatterElementsUpdate::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { + OV_OP_SCOPE(v3_ScatterElementsUpdate_evaluate); + return evaluate_scatter_elements_update(outputs, inputs); +} + +bool op::v12::ScatterElementsUpdate::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { + OV_OP_SCOPE(v12_ScatterElementsUpdate_evaluate); + return evaluate_scatter_elements_update(outputs, inputs); } template <> diff --git a/src/core/src/op/util/scatter_elements_update_base.cpp b/src/core/src/op/util/scatter_elements_update_base.cpp index 6fb0a937492..991ba896944 100644 --- a/src/core/src/op/util/scatter_elements_update_base.cpp +++ b/src/core/src/op/util/scatter_elements_update_base.cpp @@ -8,7 +8,6 @@ #include "bound_evaluate.hpp" #include "itt.hpp" -#include "ngraph/runtime/reference/scatter_elements_update.hpp" #include "openvino/core/validation_util.hpp" namespace ov { @@ -59,31 +58,35 @@ bool op::util::ScatterElementsUpdateBase::has_evaluate() const { OV_OP_SCOPE(util_ScatterElementsUpdateBase_has_evaluate); switch (get_output_element_type(0)) { - case ngraph::element::i16: - case ngraph::element::i32: - case ngraph::element::i64: - case ngraph::element::u32: - case ngraph::element::u64: - case ngraph::element::f16: - case ngraph::element::f32: + case element::i16: + case element::i32: + case element::i64: + case element::u32: + case element::u64: + case element::f16: + case element::f32: break; default: return false; } + + return is_supported_index_input_element_type(); +} + +bool op::util::ScatterElementsUpdateBase::is_supported_index_input_element_type() const { switch (get_input_element_type(1)) { - case ngraph::element::i8: - case ngraph::element::i16: - case ngraph::element::i32: - case ngraph::element::i64: - case ngraph::element::u8: - case ngraph::element::u16: - case ngraph::element::u32: - case ngraph::element::u64: - break; + case element::i8: + case element::i16: + case element::i32: + case element::i64: + case element::u8: + case element::u16: + case element::u32: + case element::u64: + return true; default: return false; } - return true; } bool op::util::ScatterElementsUpdateBase::evaluate_lower(ov::TensorVector& output_values) const { @@ -104,126 +107,7 @@ bool op::util::ScatterElementsUpdateBase::evaluate_label(TensorLabelVector& outp OPENVINO_SUPPRESS_DEPRECATED_END } -namespace scatter_element_update { -namespace { -template -bool evaluate(const HostTensorPtr& data, - const HostTensorPtr& indices, - const HostTensorPtr& updates, - const HostTensorPtr& axis, - const HostTensorPtr& out, - const int64_t normalized_axis) { - using DataType = typename element_type_traits
::value_type; - using IndicesType = typename element_type_traits::value_type; - - out->set_shape(data->get_shape()); - - ngraph::runtime::reference::scatter_elem_update(data->get_data_ptr
(), - indices->get_data_ptr(), - updates->get_data_ptr
(), - normalized_axis, - out->get_data_ptr
(), - data->get_shape(), - indices->get_shape()); - - return true; -} - -#define TYPE_AXS_CASE(a, ...) \ - case element::Type_t::a: { \ - OV_OP_SCOPE(OV_PP_CAT3(scatter_element_update_axs, _, a)); \ - rc = evaluate(__VA_ARGS__); \ - } break; - -template -bool evaluate(const HostTensorPtr& arg0, - const HostTensorPtr& arg1, - const HostTensorPtr& arg2, - const HostTensorPtr& arg3, - const HostTensorPtr& out, - const int64_t normalized_axis) { - auto axis_type = arg3->get_element_type(); - - // Dispatch specialization based on axis data type. - bool rc = true; - - switch (axis_type) { - TYPE_AXS_CASE(i8, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_AXS_CASE(i16, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_AXS_CASE(i32, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_AXS_CASE(i64, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_AXS_CASE(u8, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_AXS_CASE(u16, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_AXS_CASE(u32, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_AXS_CASE(u64, arg0, arg1, arg2, arg3, out, normalized_axis); - default: - rc = false; - break; - } - return rc; -} - -#define TYPE_IND_CASE(a, ...) \ - case element::Type_t::a: { \ - OV_OP_SCOPE(OV_PP_CAT3(scatter_element_update_ind, _, a)); \ - rc = evaluate(__VA_ARGS__); \ - } break; - -template -bool evaluate(const HostTensorPtr& arg0, - const HostTensorPtr& arg1, - const HostTensorPtr& arg2, - const HostTensorPtr& arg3, - const HostTensorPtr& out, - const int64_t normalized_axis) { - auto indices_type = arg1->get_element_type(); - - // Dispatch specialization based on indicies data type. - bool rc = true; - - switch (indices_type) { - TYPE_IND_CASE(i8, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_IND_CASE(i16, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_IND_CASE(i32, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_IND_CASE(i64, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_IND_CASE(u8, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_IND_CASE(u16, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_IND_CASE(u32, arg0, arg1, arg2, arg3, out, normalized_axis); - TYPE_IND_CASE(u64, arg0, arg1, arg2, arg3, out, normalized_axis); - default: - rc = false; - break; - } - return rc; -} - -bool evaluate_scatter_element_update(const HostTensorPtr& arg0, - const HostTensorPtr& arg1, - const HostTensorPtr& arg2, - const HostTensorPtr& arg3, - const HostTensorPtr& out, - const int64_t normalized_axis) { - bool rc = true; - - switch (out->get_element_type()) { - NGRAPH_TYPE_CASE(evaluate_scatter_element_update, i16, arg0, arg1, arg2, arg3, out, normalized_axis); - NGRAPH_TYPE_CASE(evaluate_scatter_element_update, i32, arg0, arg1, arg2, arg3, out, normalized_axis); - NGRAPH_TYPE_CASE(evaluate_scatter_element_update, i64, arg0, arg1, arg2, arg3, out, normalized_axis); - NGRAPH_TYPE_CASE(evaluate_scatter_element_update, u32, arg0, arg1, arg2, arg3, out, normalized_axis); - NGRAPH_TYPE_CASE(evaluate_scatter_element_update, u64, arg0, arg1, arg2, arg3, out, normalized_axis); - NGRAPH_TYPE_CASE(evaluate_scatter_element_update, f16, arg0, arg1, arg2, arg3, out, normalized_axis); - NGRAPH_TYPE_CASE(evaluate_scatter_element_update, f32, arg0, arg1, arg2, arg3, out, normalized_axis); - default: - rc = false; - break; - } - return rc; -} -} // namespace -} // namespace scatter_element_update - -bool op::util::ScatterElementsUpdateBase::evaluate_scatter_element_update(const HostTensorVector& outputs, - const HostTensorVector& inputs) const { +int64_t op::util::ScatterElementsUpdateBase::get_normalized_axis(const HostTensorVector& inputs) const { NGRAPH_CHECK(inputs[3]->get_element_type().is_integral_number(), "axis element type is not integral data type"); OPENVINO_SUPPRESS_DEPRECATED_START @@ -243,20 +127,7 @@ bool op::util::ScatterElementsUpdateBase::evaluate_scatter_element_update(const OPENVINO_SUPPRESS_DEPRECATED_END } } - - return scatter_element_update::evaluate_scatter_element_update(inputs[0], - inputs[1], - inputs[2], - inputs[3], - outputs[0], - normalized_axis); + return normalized_axis; } - -bool op::util::ScatterElementsUpdateBase::evaluate(const HostTensorVector& outputs, - const HostTensorVector& inputs) const { - OV_OP_SCOPE(util_ScatterElementsUpdate_evaluate); - return evaluate_scatter_element_update(outputs, inputs); -} - } // namespace op } // namespace ov diff --git a/src/core/tests/eval.cpp b/src/core/tests/eval.cpp index 4961d7cdb39..41dccab36db 100644 --- a/src/core/tests/eval.cpp +++ b/src/core/tests/eval.cpp @@ -1218,14 +1218,18 @@ TEST(eval, max_pool_v1_dynamic) { vector out{1, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 0}; } -TEST(eval, evaluate_static_scatter_elements_update_basic) { +template +class ScatterElementsUpdateEvalTest : public ::testing::Test {}; +TYPED_TEST_SUITE_P(ScatterElementsUpdateEvalTest); + +TYPED_TEST_P(ScatterElementsUpdateEvalTest, evaluate_static_scatter_elements_update_basic) { const Shape data_shape{3, 3}; const Shape indices_shape{2, 3}; auto arg1 = make_shared(element::f32, data_shape); auto arg2 = make_shared(element::i32, indices_shape); auto arg3 = make_shared(element::f32, indices_shape); auto arg4 = make_shared(element::i64, Shape{}); - auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); + auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); auto result_tensor = make_shared(); ASSERT_TRUE(fun->evaluate( @@ -1241,7 +1245,7 @@ TEST(eval, evaluate_static_scatter_elements_update_basic) { ASSERT_EQ(cval, out); } -TEST(eval, evaluate_dynamic_scatter_elements_update_basic) { +TYPED_TEST_P(ScatterElementsUpdateEvalTest, evaluate_dynamic_scatter_elements_update_basic) { const Shape data_shape{3, 3}; const Shape indices_shape{2, 3}; @@ -1250,7 +1254,7 @@ TEST(eval, evaluate_dynamic_scatter_elements_update_basic) { auto arg3 = make_shared(element::f32, PartialShape::dynamic()); auto arg4 = make_shared(element::i64, PartialShape::dynamic()); - auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); + auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); auto result_tensor = make_shared(); ASSERT_TRUE(fun->evaluate( @@ -1267,7 +1271,7 @@ TEST(eval, evaluate_dynamic_scatter_elements_update_basic) { ASSERT_EQ(cval, out); } -TEST(eval, evaluate_dynamic_scatter_elements_update_negative_axis) { +TYPED_TEST_P(ScatterElementsUpdateEvalTest, evaluate_dynamic_scatter_elements_update_negative_axis) { const Shape data_shape{3, 3}; const Shape indices_shape{2, 3}; const Shape axis_shape{}; @@ -1277,7 +1281,7 @@ TEST(eval, evaluate_dynamic_scatter_elements_update_negative_axis) { auto arg3 = make_shared(element::f32, PartialShape::dynamic()); auto arg4 = make_shared(element::i64, PartialShape::dynamic()); - auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); + auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); auto result_tensor = make_shared(); ASSERT_TRUE(fun->evaluate( @@ -1294,7 +1298,7 @@ TEST(eval, evaluate_dynamic_scatter_elements_update_negative_axis) { ASSERT_EQ(cval, out); } -TEST(eval, evaluate_dynamic_scatter_elements_update_1d_axis) { +TYPED_TEST_P(ScatterElementsUpdateEvalTest, evaluate_dynamic_scatter_elements_update_1d_axis) { const Shape data_shape{3, 3}; const Shape indices_shape{2, 3}; @@ -1303,7 +1307,7 @@ TEST(eval, evaluate_dynamic_scatter_elements_update_1d_axis) { auto arg3 = make_shared(element::f32, PartialShape::dynamic()); auto arg4 = make_shared(element::i64, PartialShape::dynamic()); - auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); + auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); auto result_tensor = make_shared(); ASSERT_TRUE(fun->evaluate( @@ -1321,7 +1325,7 @@ TEST(eval, evaluate_dynamic_scatter_elements_update_1d_axis) { } // Disabled test for disabled reference implementation -TEST(eval, DISABLED_evaluate_dynamic_scatter_elements_update_3d_i16) { +TYPED_TEST_P(ScatterElementsUpdateEvalTest, DISABLED_evaluate_dynamic_scatter_elements_update_3d_i16) { const Shape data_shape{3, 3, 3}; const Shape indices_shape{2, 2, 3}; @@ -1330,7 +1334,7 @@ TEST(eval, DISABLED_evaluate_dynamic_scatter_elements_update_3d_i16) { auto arg3 = make_shared(element::i16, PartialShape::dynamic()); auto arg4 = make_shared(element::i64, PartialShape::dynamic()); - auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); + auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); auto result_tensor = make_shared(); ASSERT_TRUE( @@ -1348,7 +1352,7 @@ TEST(eval, DISABLED_evaluate_dynamic_scatter_elements_update_3d_i16) { ASSERT_EQ(cval, out); } -TEST(eval, evaluate_dynamic_scatter_elements_update_one_elem_i32) { +TYPED_TEST_P(ScatterElementsUpdateEvalTest, evaluate_dynamic_scatter_elements_update_one_elem_i32) { const Shape data_shape{3, 3, 3}; const Shape indices_shape{1, 1, 1}; @@ -1357,7 +1361,7 @@ TEST(eval, evaluate_dynamic_scatter_elements_update_one_elem_i32) { auto arg3 = make_shared(element::i32, PartialShape::dynamic()); auto arg4 = make_shared(element::i64, PartialShape::dynamic()); - auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); + auto scatter_elements_update = make_shared(arg1, arg2, arg3, arg4); auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); auto result_tensor = make_shared(); ASSERT_TRUE( @@ -1375,6 +1379,505 @@ TEST(eval, evaluate_dynamic_scatter_elements_update_one_elem_i32) { ASSERT_EQ(cval, out); } +REGISTER_TYPED_TEST_SUITE_P(ScatterElementsUpdateEvalTest, + evaluate_dynamic_scatter_elements_update_one_elem_i32, + DISABLED_evaluate_dynamic_scatter_elements_update_3d_i16, + evaluate_dynamic_scatter_elements_update_1d_axis, + evaluate_dynamic_scatter_elements_update_negative_axis, + evaluate_dynamic_scatter_elements_update_basic, + evaluate_static_scatter_elements_update_basic); + +using OpVersions = ::testing::Types; +INSTANTIATE_TYPED_TEST_SUITE_P(eval, ScatterElementsUpdateEvalTest, OpVersions); + +TEST(eval, evaluate_static_scatter_elements_update_reduction_sum) { + const Shape data_shape{10}; + const Shape indices_shape{4}; + auto arg1 = make_shared(element::f32, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::f32, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::SUM); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate( + {result_tensor}, + {make_host_tensor(data_shape, + {0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f}), + make_host_tensor(indices_shape, {5, 0, 7, 5}), + make_host_tensor(indices_shape, {5.0f, 6.0f, 1.5f, -5.0f}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::f32); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{6.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 8.5f, 8.0f, 9.0f}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_reduction_prod_exclusive) { + const Shape data_shape{10}; + const Shape indices_shape{4}; + auto arg1 = make_shared(element::f32, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::f32, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::PROD, + false); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate( + {result_tensor}, + {make_host_tensor(data_shape, + {0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f}), + make_host_tensor(indices_shape, {1, 9, 4, 9}), + make_host_tensor(indices_shape, {5.0f, 6.0f, 1.5f, -2.0f}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::f32); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{0.0f, 5.0f, 2.0f, 3.0f, 1.5f, 5.0f, 6.0f, 7.0f, 8.0f, -12.0f}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_reduction_mean) { + const Shape data_shape{3, 3}; + const Shape indices_shape{2, 2}; + auto arg1 = make_shared(element::f32, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::f32, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::MEAN, + true); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate( + {result_tensor}, + {make_host_tensor(data_shape, {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f}), + make_host_tensor(indices_shape, {2, 2, 0, 1}), + make_host_tensor(indices_shape, {10.f, 21.f, 25.f, 38.f}), + make_host_tensor({}, {1})})); + EXPECT_EQ(result_tensor->get_element_type(), element::f32); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{1.0f, 2.0f, 11.33333f, 14.5f, 21.5f, 6.0f, 7.0f, 8.0f, 9.0f}; + for (size_t i = 0; i < cval.size(); ++i) + EXPECT_NEAR(cval[i], out[i], 1e-5f); +} + +TEST(eval, evaluate_static_scatter_elements_update_reduction_mean_exclusive) { + const Shape data_shape{3, 3}; + const Shape indices_shape{2, 2}; + auto arg1 = make_shared(element::f32, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::f32, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::MEAN, + false); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate( + {result_tensor}, + {make_host_tensor(data_shape, {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f}), + make_host_tensor(indices_shape, {2, 2, 0, 1}), + make_host_tensor(indices_shape, {10.f, 21.f, 25.f, 38.f}), + make_host_tensor({}, {1})})); + EXPECT_EQ(result_tensor->get_element_type(), element::f32); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{1.0f, 2.0f, 15.5f, 25.f, 38.f, 6.0f, 7.0f, 8.0f, 9.0f}; + for (size_t i = 0; i < cval.size(); ++i) + EXPECT_NEAR(cval[i], out[i], 1e-5f); +} + +TEST(eval, DISABLED_evaluate_static_scatter_elements_update_reduction_mean_ints) { + // on MAC rounding towards -infinity doesn't work as expected, to be investigated + const Shape data_shape{3, 3}; + const Shape indices_shape{2, 2}; + auto arg1 = make_shared(element::i32, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::i32, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::MEAN, + true); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {1, 2, 3, 4, -5, 6, 7, 8, 9}), + make_host_tensor(indices_shape, {0, 1, 2, 1}), + make_host_tensor(indices_shape, {-6, -2, 600, -120}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::i32); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{-3, 2, 3, 4, -43, 6, 303, 8, 9}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_reduction_min) { + const Shape data_shape{9}; + const Shape indices_shape{9}; + auto arg1 = make_shared(element::i32, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::i32, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::MIN, + true); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE( + fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {-1000, 2, 3, 4, -5, 6, 7, -2, 8}), + make_host_tensor(indices_shape, {0, 1, 2, 3, 4, 5, 6, 7, 0}), + make_host_tensor(indices_shape, {-999, 1, 3, 5, -4, 6, 8, 9, -1001}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::i32); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{-1001, 1, 3, 4, -5, 6, 7, -2, 8}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_reduction_max) { + const Shape data_shape{9}; + const Shape indices_shape{9}; + auto arg1 = make_shared(element::i32, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::i32, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::MAX, + true); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE( + fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {-1000, 2, 3, 4, -5, 6, 7, -2, 8}), + make_host_tensor(indices_shape, {0, 1, 2, 3, 4, 5, 6, 7, 0}), + make_host_tensor(indices_shape, {-999, 1, 3, 5, -4, 6, 8, 9, -1001}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::i32); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{-999, 2, 3, 5, -4, 6, 8, 9, 8}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_reduction_max_exclusive) { + const Shape data_shape{9}; + const Shape indices_shape{9}; + auto arg1 = make_shared(element::i32, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::i32, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::MAX, + false); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE( + fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {1000, 2, 3, 4, -5, 6, 7, -2, 8}), + make_host_tensor(indices_shape, {0, 2, 1, 3, 7, 5, 6, 7, 0}), + make_host_tensor(indices_shape, {999, 10, 20, 30, -40, 6, 8, 9, 555}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::i32); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{999, 20, 10, 30, -5, 6, 8, 9, 8}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_boolean_sum) { + const Shape data_shape{5}; + const Shape indices_shape{6}; + auto arg1 = make_shared(element::boolean, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::boolean, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::SUM, + true); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {1, 0, 0, 1, 0}), + make_host_tensor(indices_shape, {0, 1, 2, 3, 4, 1}), + make_host_tensor(indices_shape, {0, 0, 0, 1, 1, 1}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::boolean); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{1, 1, 0, 1, 1}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_boolean_sum_exclusive) { + const Shape data_shape{5}; + const Shape indices_shape{6}; + auto arg1 = make_shared(element::boolean, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::boolean, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::SUM, + false); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {1, 0, 1, 1, 0}), + make_host_tensor(indices_shape, {0, 1, 2, 4, 4, 0}), + make_host_tensor(indices_shape, {0, 1, 0, 1, 1, 1}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::boolean); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{1, 1, 0, 1, 1}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_boolean_prod) { + const Shape data_shape{5}; + const Shape indices_shape{6}; + auto arg1 = make_shared(element::boolean, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::boolean, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::PROD, + true); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {1, 0, 0, 1, 1}), + make_host_tensor(indices_shape, {0, 1, 2, 3, 4, 1}), + make_host_tensor(indices_shape, {0, 0, 1, 1, 0, 1}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::boolean); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{0, 0, 0, 1, 0}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_boolean_prod_exclusive) { + const Shape data_shape{5}; + const Shape indices_shape{6}; + auto arg1 = make_shared(element::boolean, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::boolean, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::PROD, + false); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {1, 0, 1, 1, 0}), + make_host_tensor(indices_shape, {0, 1, 2, 4, 4, 0}), + make_host_tensor(indices_shape, {0, 0, 1, 1, 1, 1}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::boolean); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{0, 0, 1, 1, 1}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_boolean_min) { + const Shape data_shape{6}; + const Shape indices_shape{8}; + auto arg1 = make_shared(element::boolean, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::boolean, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::MIN, + true); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {1, 0, 0, 1, 1, 0}), + make_host_tensor(indices_shape, {0, 1, 2, 3, 4, 4, 5, 5}), + make_host_tensor(indices_shape, {0, 0, 0, 1, 0, 1, 1, 0}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::boolean); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{0, 0, 0, 1, 0, 0}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_boolean_min_exclusive) { + const Shape data_shape{6}; + const Shape indices_shape{8}; + auto arg1 = make_shared(element::boolean, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::boolean, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::MIN, + false); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {1, 0, 1, 0, 1, 0}), + make_host_tensor(indices_shape, {0, 1, 2, 3, 4, 4, 5, 5}), + make_host_tensor(indices_shape, {0, 0, 1, 1, 0, 1, 1, 1}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::boolean); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{0, 0, 1, 1, 0, 1}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_boolean_max) { + const Shape data_shape{6}; + const Shape indices_shape{8}; + auto arg1 = make_shared(element::boolean, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::boolean, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::MAX, + true); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {1, 0, 0, 1, 1, 0}), + make_host_tensor(indices_shape, {0, 1, 2, 3, 4, 4, 5, 5}), + make_host_tensor(indices_shape, {0, 1, 0, 1, 0, 1, 0, 0}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::boolean); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{1, 1, 0, 1, 1, 0}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_boolean_max_exclusive) { + const Shape data_shape{6}; + const Shape indices_shape{8}; + auto arg1 = make_shared(element::boolean, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::boolean, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::MAX, + false); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate({result_tensor}, + {make_host_tensor(data_shape, {1, 0, 1, 0, 1, 0}), + make_host_tensor(indices_shape, {0, 1, 2, 3, 4, 4, 5, 5}), + make_host_tensor(indices_shape, {0, 1, 1, 0, 0, 1, 0, 0}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::boolean); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{0, 1, 1, 0, 1, 0}; + ASSERT_EQ(cval, out); +} + +TEST(eval, evaluate_static_scatter_elements_update_reduction_sum_negative_idx) { + const Shape data_shape{10}; + const Shape indices_shape{4}; + auto arg1 = make_shared(element::f32, data_shape); + auto arg2 = make_shared(element::i32, indices_shape); + auto arg3 = make_shared(element::f32, indices_shape); + auto arg4 = make_shared(element::i64, Shape{}); + auto scatter_elements_update = + make_shared(arg1, + arg2, + arg3, + arg4, + ov::op::v12::ScatterElementsUpdate::Reduction::SUM); + auto fun = make_shared(OutputVector{scatter_elements_update}, ParameterVector{arg1, arg2, arg3, arg4}); + auto result_tensor = make_shared(); + ASSERT_TRUE(fun->evaluate( + {result_tensor}, + {make_host_tensor(data_shape, + {0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f}), + make_host_tensor(indices_shape, {-5, 0, -3, -5}), + make_host_tensor(indices_shape, {5.0f, 6.0f, 1.5f, -5.0f}), + make_host_tensor({}, {0})})); + EXPECT_EQ(result_tensor->get_element_type(), element::f32); + EXPECT_EQ(result_tensor->get_shape(), data_shape); + const auto cval = read_vector(result_tensor); + const vector out{6.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 8.5f, 8.0f, 9.0f}; + ASSERT_EQ(cval, out); +} + TEST(eval, topk_v1) { Shape shape{2, 3, 2}; Shape rshape{2, 2, 2}; From 2582f04c9c2be9aa2186c0cebf2f228308275eba Mon Sep 17 00:00:00 2001 From: hyunback kim Date: Wed, 28 Jun 2023 20:57:10 +0900 Subject: [PATCH 05/25] [GPU] Optimize stable diffusion perf igpu (#18200) * [GPU] Optimize stable_diffusion performance in iGPU. Change the existing heuristic shape condition to permute and no transpose gemm in case of transpose gemm. Signed-off-by: hyunback --- .../intel_gpu/src/plugin/ops/matmul.cpp | 20 ++++++++++++------- .../single_layer_tests/dynamic/matmul.cpp | 5 +++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/plugins/intel_gpu/src/plugin/ops/matmul.cpp b/src/plugins/intel_gpu/src/plugin/ops/matmul.cpp index 39c0cd1ba13..6a8f9f8f6ef 100644 --- a/src/plugins/intel_gpu/src/plugin/ops/matmul.cpp +++ b/src/plugins/intel_gpu/src/plugin/ops/matmul.cpp @@ -177,12 +177,12 @@ static void CreateMatMulOp(Program& p, const std::shared_ptrget_input_partial_shape(1) }; - auto canTransposeInputs = [] (const std::array& shapes, bool transA, bool transB) -> bool { + auto canTransposeInputs = [] (const std::array& shapes, bool transA, bool transB, ov::element::Type type) -> bool { if (!transA && !transB) return false; // dynamic shapes and 1D tensors are not transposed - if (shapes[0].rank().is_dynamic() || shapes[1].rank().is_dynamic() || + if (shapes[0].is_dynamic() || shapes[1].is_dynamic() || shapes[0].size() < 2 || shapes[1].size() < 2) return false; @@ -194,10 +194,16 @@ static void CreateMatMulOp(Program& p, const std::shared_ptr= 64; }) && - std::all_of(shapes[1].rbegin(), shapes[1].rbegin() + 2, - [] (const ngraph::Dimension& dim) { return dim.is_static() && dim.get_length() >= 64; }); + // Heuristic condition for permute and tiled_opt kernel perform better than ref kernel. + auto is_u8_i8 = (type == ov::element::Type_t::i8 || type == ov::element::Type_t::u8); + bool in0_large = std::all_of(shapes[0].rbegin(), shapes[0].rbegin() + 2, + [] (const ngraph::Dimension& dim) { return dim.is_static() && dim.get_length() >= 64; }); + bool in1_large = std::all_of(shapes[1].rbegin(), shapes[1].rbegin() + 2, + [] (const ngraph::Dimension& dim) { return dim.is_static() && dim.get_length() >= 64; }); + bool in0_very_large = tensor_from_dims(shapes[0].to_shape()).count() > 100000; + bool in1_very_large = tensor_from_dims(shapes[0].to_shape()).count() > 100000; + + return (in0_large && in1_large) || ((in0_very_large || in1_very_large) && !is_u8_i8); }; auto transposeInput = [] (Program& p, const std::shared_ptr& op, const ngraph::PartialShape& shape, @@ -214,7 +220,7 @@ static void CreateMatMulOp(Program& p, const std::shared_ptrget_input_element_type(0))) { if (transA) { inputs[0] = transposeInput(p, op, inputShapes[0], "/transpose_a", inputs[0].pid); transA = false; diff --git a/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/matmul.cpp b/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/matmul.cpp index bbe59796e26..8b84ad97bb6 100644 --- a/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/matmul.cpp +++ b/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/matmul.cpp @@ -379,6 +379,11 @@ const std::vector IS = { {static_shapes_to_test_representation({{1, 2, 32, 120}, {120, 5}}), {false, true}}, {static_shapes_to_test_representation({{1, 2, 32, 120}, {120, 5}}), {true, true}}, + {static_shapes_to_test_representation({{1, 2, 100010, 120}, {120, 5}}), {true, true}}, + {static_shapes_to_test_representation({{1, 2, 200010, 120}, {120, 5}}), {false, true}}, + {static_shapes_to_test_representation({{1, 2, 30, 120}, {120, 100010}}), {true, true}}, + {static_shapes_to_test_representation({{1, 2, 30, 120}, {120, 100010}}), {true, false}}, + {static_shapes_to_test_representation({{7, 32, 120}, {3, 7, 120, 50}}), {false, false}}, {static_shapes_to_test_representation({{7, 32, 120}, {3, 7, 120, 50}}), {true, false}}, {static_shapes_to_test_representation({{7, 32, 120}, {3, 7, 120, 50}}), {false, true}}, From 258d476cbd3c99530d7703f8b96fbadf9d2bb9ba Mon Sep 17 00:00:00 2001 From: Karol Blaszczak Date: Wed, 28 Jun 2023 14:14:35 +0200 Subject: [PATCH 06/25] [DOCS] top bar fixes fixes in top bar styling FAQ for pot gets drop-downs Homepage css improvement --- docs/_static/css/custom.css | 1 + docs/_static/css/homepage_style.css | 10 +- docs/home.rst | 17 +- docs/index.rst | 2 +- tools/pot/docs/FrequentlyAskedQuestions.md | 185 +++++++++------------ 5 files changed, 88 insertions(+), 127 deletions(-) diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css index fe017816f7a..485675cc712 100644 --- a/docs/_static/css/custom.css +++ b/docs/_static/css/custom.css @@ -70,6 +70,7 @@ ul#navbar-main-elements li:first-of-type { ul#navbar-main-elements > li:hover { text-decoration: underline; + color: #fff; } diff --git a/docs/_static/css/homepage_style.css b/docs/_static/css/homepage_style.css index ab6d3583746..6b9e81c3f3b 100644 --- a/docs/_static/css/homepage_style.css +++ b/docs/_static/css/homepage_style.css @@ -3,13 +3,13 @@ #openvino-documentation > h1 { display: none; } -img { - cursor: default; -} h1 { - font-size: var(--pst-font-size-h2); - margin-bottom: 3rem; + /*font-size: var(--pst-font-size-h2);*/ + /*margin-bottom: 3rem;*/ + display: none!important; } + + #ov-homepage-banner, .openvino-diagram, .ov-homepage-higlight-grid { margin-bottom: 90px!important; } diff --git a/docs/home.rst b/docs/home.rst index 8d948dff891..90aefbc4648 100644 --- a/docs/home.rst +++ b/docs/home.rst @@ -1,7 +1,6 @@ -.. OpenVINO Toolkit documentation master file, created by - sphinx-quickstart on Wed Jul 7 10:46:56 2021. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. +============================ +OpenVINO 2023.0 +============================ .. meta:: :google-site-verification: _YqumYQ98cmXUTwtzM_0WIIadtDc6r_TMYGbmGgNvrk @@ -34,8 +33,6 @@ :align: center - - .. grid:: 2 2 3 3 :class-container: ov-homepage-higlight-grid @@ -75,11 +72,8 @@ Reach for performance with post-training and training-time compression with NNCF - - - Feature Overview -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +############################## .. grid:: 1 2 2 2 :class-container: ov-homepage-feature-grid @@ -109,9 +103,6 @@ Feature Overview - - - .. toctree:: :maxdepth: 2 :hidden: diff --git a/docs/index.rst b/docs/index.rst index da662dc3125..f002146d31e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -7,5 +7,5 @@ OpenVINOā„¢ Documentation Install Blog Forum - Training + Support GitHub diff --git a/tools/pot/docs/FrequentlyAskedQuestions.md b/tools/pot/docs/FrequentlyAskedQuestions.md index 48f2a00ca86..601fddc1e8e 100644 --- a/tools/pot/docs/FrequentlyAskedQuestions.md +++ b/tools/pot/docs/FrequentlyAskedQuestions.md @@ -2,147 +2,116 @@ @sphinxdirective -.. note:: Post-training Optimization Tool is deprecated since OpenVINO 2023.0. :doc:`Neural Network Compression Framework (NNCF) ` is recommended for the post-training quantization instead. +.. note:: + + Post-training Optimization Tool has been deprecated since OpenVINO 2023.0. + :doc:`Neural Network Compression Framework (NNCF) ` is recommended for post-training quantization instead. + If your question is not covered below, use the `OpenVINOā„¢ Community Forum page `__, where you can participate freely. -- :ref:`Is the Post-training Optimization Tool open-sourced? ` -- :ref:`Can I quantize my model without a dataset? ` -- :ref:`Can a model in any framework be quantized by the POT? ` -- :ref:`What is a tradeoff when you go to low precision? ` -- :ref:`I'd like to quantize a model and I've converted it to IR but I don't have the Accuracy Checker config. What can I do? ` -- :ref:`I tried all recommendations from "Post-Training Optimization Best Practices" but either have a high accuracy drop or bad performance after quantization. What else can I do? ` -- :ref:`I get ā€œRuntimeError: Cannot get memoryā€ and ā€œRuntimeError: Output data was not allocatedā€ when I quantize my model by the POT. ` -- :ref:`I have successfully quantized my model with a low accuracy drop and improved performance but the output video generated from the low precision model is much worse than from the full precision model. What could be the root cause? ` -- :ref:`The quantization process of my model takes a lot of time. Can it be decreased somehow? ` -- :ref:`When I execute POT CLI, I get "File "/workspace/venv/lib/python3.7/site-packages/nevergrad/optimization/base.py", line 35... SyntaxError: invalid syntax". What is wrong? ` -- :ref:`What does a message "ModuleNotFoundError: No module named 'some\_module\_name'" mean? ` -- :ref:`Is there a way to collect an intermediate IR when the AccuracyAware mechanism fails? ` -- :ref:`What do the messages "Output name: result_operation_name not found" or "Output node with result_operation_name is not found in the graph" mean? ` -.. _opensourced-pot-faq: +.. dropdown:: Is the Post-training Optimization Tool (POT) open-sourced? -Is the Post-training Optimization Tool (POT) open-sourced? -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Yes, POT is developed on GitHub as a part of `openvinotoolkit/openvino `__ under Apache-2.0 License. -Yes, POT is developed on GitHub as a part of `openvinotoolkit/openvino `__ under Apache-2.0 License. +.. dropdown:: Can I quantize my model without a dataset? -.. _dataset-pot-faq: + In general, you should have a dataset. The dataset should be annotated if you want to validate the accuracy. + If your dataset is not annotated, you can use :doc:`Default Quantization ` + to quantize the model or command-line interface with :doc:`Simplified mode `. -Can I quantize my model without a dataset? -++++++++++++++++++++++++++++++++++++++++++ +.. dropdown:: Can a model in any framework be quantized by the POT? -In general, you should have a dataset. The dataset should be annotated if you want to validate the accuracy. -If your dataset is not annotated, you can use :doc:`Default Quantization ` to quantize the model or command-line interface with :doc:`Simplified mode `. + The POT accepts models in the OpenVINO™ Intermediate Representation (IR) format only. For that you need to convert your model to the IR format using + :doc:`model conversion API `. -.. _framework-pot-faq: -Can a model in any framework be quantized by the POT? -+++++++++++++++++++++++++++++++++++++++++++++++++++++ +.. dropdown:: I'd like to quantize a model and I've converted it to IR but I don't have the Accuracy Checker config. What can I do? -The POT accepts models in the OpenVINO™ Intermediate Representation (IR) format only. For that you need to convert your model to the IR format using -:doc:`model conversion API `. + 1. Try quantization using Python API of the Post-training Optimization Tool. For more details see :doc:`Default Quantization `. + 2. If you consider command-line usage only refer to :doc:`Accuracy Checker documentation ` to create the Accuracy Checker configuration file, + and try to find the configuration file for your model among the ones available in the Accuracy Checker examples. + 3. An alternative way is to quantize the model in the :doc:`Simplified mode ` but you will not be able to measure the accuracy. -.. _noac-pot-faq: +.. dropdown:: What is a tradeoff when you go to low precision? -I'd like to quantize a model and I've converted it to IR but I don't have the Accuracy Checker config. What can I do? -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + The tradeoff is between the accuracy drop and performance. When a model is in low precision, it is usually performed + compared to the same model in full precision but the accuracy might be worse. You can find some benchmarking results in + :doc:`INT8 vs FP32 Comparison on Select Networks and Platforms `. + The other benefit of having a model in low precision is its smaller size. -1. Try quantization using Python API of the Post-training Optimization Tool. For more details see :doc:`Default Quantization `. -2. If you consider command-line usage only refer to :doc:`Accuracy Checker documentation ` to create the Accuracy Checker configuration file, and try to find the configuration file for your model among the ones available in the Accuracy Checker examples. -3. An alternative way is to quantize the model in the :doc:`Simplified mode ` but you will not be able to measure the accuracy. +.. dropdown:: I tried all recommendations from "Post-Training Optimization Best Practices" but either have a high accuracy drop or bad performance after quantization. What else can I do? -.. _tradeoff-pot-faq: + First of all, you should validate the POT compression pipeline you are running, which can be done with the following steps: -What is a tradeoff when you go to low precision? -++++++++++++++++++++++++++++++++++++++++++++++++ + 1. Make sure the accuracy of the original uncompressed model has the value you expect. Run your POT pipeline with an empty compression config and evaluate the resulting model metric. + Compare this uncompressed model accuracy metric value with your reference. + 2. Run your compression pipeline with a single compression algorithm (:doc:`Default Quantization ` or :doc:`Accuracy-aware Quantization `) + without any parameter values specified in the config (except for ``preset`` and ``stat_subset_size``). Make sure you get the desirable accuracy drop/performance gain in this case. -The tradeoff is between the accuracy drop and performance. When a model is in low precision, it is usually performed -compared to the same model in full precision but the accuracy might be worse. You can find some benchmarking results in -:doc:`INT8 vs FP32 Comparison on Select Networks and Platforms `. -The other benefit of having a model in low precision is its smaller size. + Finally, if you have done the steps above and the problem persists, you could try to compress your model using the + `Neural Network Compression Framework (NNCF) `__. Note that NNCF usage requires you to have a + PyTorch or TensorFlow 2 based training pipeline of your model to perform Quantization-aware Training. + See :doc:`Model Optimization Guide ` for more details. -.. _nncf-pot-faq: +.. dropdown:: I get ā€œRuntimeError: Cannot get memoryā€ and ā€œRuntimeError: Output data was not allocatedā€ when I quantize my model by the POT. -I tried all recommendations from "Post-Training Optimization Best Practices" but either have a high accuracy drop or bad performance after quantization. What else can I do? -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + These issues happen due to insufficient available amount of memory for statistics collection during the quantization process of a huge model or + due to a very high resolution of input images in the quantization dataset. If you do not have a possibility to increase your RAM size, one of the following options can help: -First of all, you should validate the POT compression pipeline you are running, which can be done with the following steps: + - Set ``inplace_statistics`` parameters to ``True``. In that case, the POT will change the method to collect statistics and use less memory. + Note that such change might increase the time required for quantization. + - Set ``eval_requests_number`` and ``stat_requests_number`` parameters to 1. In that case, the POT will limit the number of infer requests by 1 and use less memory. + Note that such change might increase the time required for quantization. + - Set ``use_fast_bias`` parameter to ``false``. In that case, the POT will switch from the FastBiasCorrection algorithm to the full BiasCorrection algorithm + which is usually more accurate and takes more time but requires less memory. See :doc:`Post-Training Optimization Best Practices ` for more details. + - Reshape your model to a lower resolution and resize the size of images in the dataset. Note that such change might impact the accuracy. -1. Make sure the accuracy of the original uncompressed model has the value you expect. Run your POT pipeline with an empty compression config and evaluate the resulting model metric. Compare this uncompressed model accuracy metric value with your reference. -2. Run your compression pipeline with a single compression algorithm (:doc:`Default Quantization ` or :doc:`Accuracy-aware Quantization `) without any parameter values specified in the config (except for ``preset`` and ``stat_subset_size``). Make sure you get the desirable accuracy drop/performance gain in this case. +.. dropdown:: I have successfully quantized my model with a low accuracy drop and improved performance but the output video generated from the low precision model is much worse than from the full precision model. What could be the root cause? -Finally, if you have done the steps above and the problem persists, you could try to compress your model using the `Neural Network Compression Framework (NNCF) `__. -Note that NNCF usage requires you to have a PyTorch or TensorFlow 2 based training pipeline of your model to perform Quantization-aware Training. See :doc:`Model Optimization Guide ` for more details. + It can happen due to the following reasons: + + - A wrong or not representative dataset was used during the quantization and accuracy validation. + Please make sure that your data and labels are correct and they sufficiently reflect the use case. + - If the command-line interface was used for quantization, a wrong Accuracy Checker configuration file could lead to this problem. + Refer to :doc:`Accuracy Checker documentation ` for more information. + - If :doc:`Default Quantization ` was used for quantization you can also try + :doc:`Accuracy-aware Quantization ` method that allows controlling maximum accuracy deviation. -.. _memory-pot-faq: +.. dropdown:: The quantization process of my model takes a lot of time. Can it be decreased somehow? -I get ā€œRuntimeError: Cannot get memoryā€ and ā€œRuntimeError: Output data was not allocatedā€ when I quantize my model by the POT. -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Quantization time depends on multiple factors such as the size of the model and the dataset. It also depends on the algorithm: + the :doc:`Default Quantization ` algorithm takes less time than the :doc:`Accuracy-aware Quantization ` algorithm. + The following configuration parameters also impact the quantization time duration + (see details in :doc:`Post-Training Optimization Best Practices `): + + - ``use_fast_bias``: when set to ``false``, it increases the quantization time + - ``stat_subset_size``: the higher the value of this parameter, the more time will be required for the quantization + - ``tune_hyperparams``: if set to ``true`` when the AccuracyAwareQuantization algorithm is used, it increases the quantization time + - ``stat_requests_number``: the lower number, the more time might be required for the quantization + - ``eval_requests_number``: the lower number, the more time might be required for the quantization -These issues happen due to insufficient available amount of memory for statistics collection during the quantization process of a huge model or -due to a very high resolution of input images in the quantization dataset. If you do not have a possibility to increase your RAM size, one of the following options can help: + Note that higher values of ``stat_requests_number`` and ``eval_requests_number`` increase memory consumption by POT. -- Set ``inplace_statistics`` parameters to ``True``. In that case, the POT will change the method to collect statistics and use less memory. Note that such change might increase the time required for quantization. -- Set ``eval_requests_number`` and ``stat_requests_number`` parameters to 1. In that case, the POT will limit the number of infer requests by 1 and use less memory. -Note that such change might increase the time required for quantization. -- Set ``use_fast_bias`` parameter to ``false``. In that case, the POT will switch from the FastBiasCorrection algorithm to the full BiasCorrection algorithm -which is usually more accurate and takes more time but requires less memory. See :doc:`Post-Training Optimization Best Practices ` for more details. -- Reshape your model to a lower resolution and resize the size of images in the dataset. Note that such change might impact the accuracy. +.. dropdown:: When I execute POT CLI, I get "File "/workspace/venv/lib/python3.7/site-packages/nevergrad/optimization/base.py", line 35... SyntaxError: invalid syntax". What is wrong? -.. _quality-pot-faq: + This error is reported when you have a Python version older than 3.7 in your environment. Upgrade your Python version. -I have successfully quantized my model with a low accuracy drop and improved performance but the output video generated from the low precision model is much worse than from the full precision model. What could be the root cause? -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +.. dropdown:: What does the message "ModuleNotFoundError: No module named 'some\_module\_name'" mean? -It can happen due to the following reasons: + It means that some required python module is not installed in your environment. To install it, run ``pip install some_module_name``. -- A wrong or not representative dataset was used during the quantization and accuracy validation. Please make sure that your data and labels are correct and they sufficiently reflect the use case. -- If the command-line interface was used for quantization, a wrong Accuracy Checker configuration file could lead to this problem. Refer to :doc:`Accuracy Checker documentation ` for more information. -- If :doc:`Default Quantization ` was used for quantization you can also try :doc:`Accuracy-aware Quantization ` method that allows controlling maximum accuracy deviation. +.. dropdown:: Is there a way to collect an intermediate IR when the AccuracyAware mechanism fails? -.. _longtime-pot-faq: + You can add ``"dump_intermediate_model": true`` to the POT configuration file and it will drop an intermediate IR to ``accuracy_aware_intermediate`` folder. -The quantization process of my model takes a lot of time. Can it be decreased somehow? -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +.. dropdown:: What do the messages "Output name: result_operation_name not found" or "Output node with result_operation_name is not found in graph" mean? -Quantization time depends on multiple factors such as the size of the model and the dataset. It also depends on the algorithm: -the :doc:`Default Quantization ` algorithm takes less time than the :doc:`Accuracy-aware Quantization ` algorithm. -The following configuration parameters also impact the quantization time duration -(see details in :doc:`Post-Training Optimization Best Practices `): -- ``use_fast_bias``: when set to ``false``, it increases the quantization time -- ``stat_subset_size``: the higher the value of this parameter, the more time will be required for the quantization -- ``tune_hyperparams``: if set to ``true`` when the AccuracyAwareQuantization algorithm is used, it increases the quantization time -- ``stat_requests_number``: the lower number, the more time might be required for the quantization -- ``eval_requests_number``: the lower number, the more time might be required for the quantization -Note that higher values of ``stat_requests_number`` and ``eval_requests_number`` increase memory consumption by POT. - -.. _python-pot-faq: - -When I execute POT CLI, I get "File "/workspace/venv/lib/python3.7/site-packages/nevergrad/optimization/base.py", line 35... SyntaxError: invalid syntax". What is wrong? -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -This error is reported when you have a Python version older than 3.7 in your environment. Upgrade your Python version. - -.. _nomodule-pot-faq: - -What does the message "ModuleNotFoundError: No module named 'some\_module\_name'" mean? -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -It means that some required python module is not installed in your environment. To install it, run ``pip install some_module_name``. - -.. _dump-pot-faq: - -Is there a way to collect an intermediate IR when the AccuracyAware mechanism fails? -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -You can add ``"dump_intermediate_model": true`` to the POT configuration file and it will drop an intermediate IR to ``accuracy_aware_intermediate`` folder. - -.. _outputs-pot-faq: - -What do the messages "Output name: result_operation_name not found" or "Output node with result_operation_name is not found in graph" mean? -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Errors are caused by missing output nodes names in a graph when using the POT tool for model quantization. It might appear for some models only for IRs converted from ONNX models using the new frontend (which is the default conversion path starting from 2022.1 release). To avoid such errors, use the legacy MO frontend to convert a model to IR by passing the ``--use_legacy_frontend`` option. Then, use the produced IR for quantization. + Errors are caused by missing output nodes names in a graph when using the POT tool for model quantization. + It might appear for some models only for IRs converted from ONNX models using the new frontend (which is the default + conversion path starting from 2022.1 release). To avoid such errors, use the legacy MO frontend to convert a model + to IR by passing the ``--use_legacy_frontend`` option. Then, use the produced IR for quantization. @endsphinxdirective + From 3bc8065ca3cc0a9e70b3782a3bbc4d37eb8bb169 Mon Sep 17 00:00:00 2001 From: Karol Blaszczak Date: Wed, 28 Jun 2023 17:46:38 +0200 Subject: [PATCH 07/25] [DOCS] reset the pre-release notes pages (#18177) a new place and content --- docs/home.rst | 3 ++- ...installing-openvino-from-archive-windows.md | 2 +- docs/resources/prerelease_information.md | 14 +++++++++++--- docs/resources/release_notes.md | 18 ++++++++++++++++++ docs/resources/resources.md | 1 - 5 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 docs/resources/release_notes.md diff --git a/docs/home.rst b/docs/home.rst index 90aefbc4648..59eb41cbf55 100644 --- a/docs/home.rst +++ b/docs/home.rst @@ -113,4 +113,5 @@ Feature Overview DOCUMENTATION MODEL ZOO RESOURCES - RELEASE NOTES \ No newline at end of file + RELEASE NOTES + diff --git a/docs/install_guides/installing-openvino-from-archive-windows.md b/docs/install_guides/installing-openvino-from-archive-windows.md index ce877cbb204..dfb92a2d531 100644 --- a/docs/install_guides/installing-openvino-from-archive-windows.md +++ b/docs/install_guides/installing-openvino-from-archive-windows.md @@ -75,7 +75,7 @@ Step 1: Download and Install OpenVINO Core Components ``C:\Program Files (x86)\Intel`` is the recommended folder. You may also use a different path if desired or if you don't have administrator privileges on your computer. -2. Download the `OpenVINO Runtime archive file for Windows `__ to your local ``Downloads`` folder. +2. Download the `OpenVINO Runtime archive file for Windows `__ to your local ``Downloads`` folder. If you prefer using command-lines, run the following commands in the command prompt window you opened: diff --git a/docs/resources/prerelease_information.md b/docs/resources/prerelease_information.md index 72c4962e0c4..2b8039007b2 100644 --- a/docs/resources/prerelease_information.md +++ b/docs/resources/prerelease_information.md @@ -17,13 +17,21 @@ Please file a github Issue on these with the label ā€œpre-releaseā€ so we can g * NOT subject to official support. * Subject to change in the future. * Introduced to allow early testing and get early feedback from the community. - -.. dropdown:: OpenVINO Toolkit 2023.0.0.dev20230427 - :open: + + +.. dropdown:: OpenVINO Toolkit 2023.0.0.dev20230407 :animate: fade-in-slide-down :color: primary + The first pre-release for OpenVINO 2023.1 focused on fixing bugs and performance issues. + + + +.. dropdown:: OpenVINO Toolkit 2023.0.0.dev20230407 + :animate: fade-in-slide-down + :color: secondary + Note that a new distribution channel has been introduced for C++ developers: `Conda Forge `__ (the 2022.3.0 release is available there now). diff --git a/docs/resources/release_notes.md b/docs/resources/release_notes.md new file mode 100644 index 00000000000..b7f23b85ce6 --- /dev/null +++ b/docs/resources/release_notes.md @@ -0,0 +1,18 @@ +# Release Notes {#release_notes} + +@sphinxdirective + +.. raw:: html + + + + +.. toctree:: + :hidden: + + prerelease_information + +The official OpenVINO Release Notes are published at `intel.com `__ + + +@endsphinxdirective \ No newline at end of file diff --git a/docs/resources/resources.md b/docs/resources/resources.md index 8a1ea77a81e..bc660ab6ce4 100644 --- a/docs/resources/resources.md +++ b/docs/resources/resources.md @@ -8,7 +8,6 @@ :hidden: openvino_docs_performance_benchmarks - prerelease_information .. toctree:: :maxdepth: 1 From 18e737493c30b1d67a4db58caa4cc590b10aa0e0 Mon Sep 17 00:00:00 2001 From: Vladislav Golubev Date: Wed, 28 Jun 2023 19:31:44 +0200 Subject: [PATCH 08/25] [Snippets] MatMul: blocking by M dimension at the LIR stage (#18169) * [Snippets] MatMul: blocking by M dim at LIR level * Alexandra's comments applied * Ivan's comments applied * Fix warning --- .../include/snippets/lowered/loop_manager.hpp | 14 ++- .../snippets/lowered/pass/fuse_loops.hpp | 6 + .../snippets/lowered/pass/split_loops.hpp | 46 ++++++++ .../snippets/include/snippets/op/subgraph.hpp | 6 +- .../snippets/src/lowered/loop_manager.cpp | 24 ++-- .../snippets/src/lowered/pass/fuse_loops.cpp | 21 +++- .../snippets/src/lowered/pass/init_loops.cpp | 7 +- .../src/lowered/pass/insert_buffers.cpp | 60 +++++++++- .../snippets/src/lowered/pass/split_loops.cpp | 96 ++++++++++++++++ src/common/snippets/src/op/subgraph.cpp | 15 ++- .../snippets/tests/src/lowering_utils.cpp | 3 +- .../emitters/x64/jit_snippets_emitters.cpp | 103 ++++++++---------- .../emitters/x64/jit_snippets_emitters.hpp | 5 +- src/plugins/intel_cpu/src/nodes/subgraph.cpp | 5 + .../x64/pass/lowered/brgemm_blocking.cpp | 80 ++++++++++++++ .../x64/pass/lowered/brgemm_blocking.hpp | 28 +++++ .../lowered/fuse_load_store_and_convert.hpp | 2 +- 17 files changed, 434 insertions(+), 87 deletions(-) create mode 100644 src/common/snippets/include/snippets/lowered/pass/split_loops.hpp create mode 100644 src/common/snippets/src/lowered/pass/split_loops.cpp create mode 100644 src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/brgemm_blocking.cpp create mode 100644 src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/brgemm_blocking.hpp diff --git a/src/common/snippets/include/snippets/lowered/loop_manager.hpp b/src/common/snippets/include/snippets/lowered/loop_manager.hpp index efac74243bc..cf3d11dfeca 100644 --- a/src/common/snippets/include/snippets/lowered/loop_manager.hpp +++ b/src/common/snippets/include/snippets/lowered/loop_manager.hpp @@ -76,11 +76,19 @@ public: LinearIR::constExprIt loop_end_pos, size_t loop_depth, size_t vector_size); // Return Loop ID + template size_t mark_loop(LinearIR::constExprIt loop_begin_pos, LinearIR::constExprIt loop_end_pos, size_t work_amount, size_t work_amount_increment, size_t dim_idx, - const std::vector& entries, - const std::vector& exits); + const std::vector& entries, + const std::vector& exits) { + const auto loop_info = std::make_shared(work_amount, work_amount_increment, dim_idx, entries, exits); + const auto loop_id = this->add_loop_info(loop_info); + for (auto expr_it = loop_begin_pos; expr_it != loop_end_pos; ++expr_it) { + insert_loop_id(*expr_it, loop_id); + } + return loop_id; + } void fuse_loops(const LinearIR& linear_ir, size_t loop_id_upper, size_t loop_id_lower, bool fuse_into_upper = true); void fuse_loops(LinearIR::constExprIt loop_begin_target, LinearIR::constExprIt loop_end_target, @@ -123,6 +131,8 @@ public: LinearIR::constExprIt& loop_end_pos, size_t loop_id, bool loop_ops_inserted = false); + LoopPort get_loop_port_by_expr_port(const ExpressionPort& expr_port, const size_t loop_id); + private: static void get_io_loop_ports(LinearIR::constExprIt loop_begin_pos, LinearIR::constExprIt loop_end_pos, diff --git a/src/common/snippets/include/snippets/lowered/pass/fuse_loops.hpp b/src/common/snippets/include/snippets/lowered/pass/fuse_loops.hpp index a0831c350fc..64b3a758a0a 100644 --- a/src/common/snippets/include/snippets/lowered/pass/fuse_loops.hpp +++ b/src/common/snippets/include/snippets/lowered/pass/fuse_loops.hpp @@ -42,6 +42,12 @@ public: FuseLoops(); bool run(LinearIR& linear_ir) override; + // This method checks that all ports which connect lower and upper loops are incremented. + // This helps to avoid fusing for the ports with incompleted data + static bool loop_ports_are_compatible(const LinearIR::LoopManagerPtr& loop_manager, + const size_t loop_lower_id, + const size_t loop_upper_id); + private: static bool can_be_fused(const LinearIR::LoopManager::LoopInfoPtr& loop_current, const LinearIR::LoopManager::LoopInfoPtr& loop_target); diff --git a/src/common/snippets/include/snippets/lowered/pass/split_loops.hpp b/src/common/snippets/include/snippets/lowered/pass/split_loops.hpp new file mode 100644 index 00000000000..bb74529cfbf --- /dev/null +++ b/src/common/snippets/include/snippets/lowered/pass/split_loops.hpp @@ -0,0 +1,46 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "pass.hpp" +#include "snippets/lowered/loop_manager.hpp" + +namespace ov { +namespace snippets { +namespace lowered { +namespace pass { + +/** + * @interface SplitLoops + * @brief If loop_1 has larger increment but the same works amount of loop_2, that follows loop_1, then split loop_2 + * into two loops so the outermost of the split loops could be fused with the loop_1 using the pass `FuseLoops`. + * Example: + * Loop_1_begin Loop_1_begin Loop_1_begin + * ... ... ... + * Loop_1_end (wa = 128, inc = 32) Loop_1_end (wa = 128, inc = 32) Split_loop_2_begin + * ... Splitting ... Fusing ... + * Loop_2_begin => Split_loop_1_begin => Split_loop_2_end (wa = 32, inc = 1) + * ... Split_loop_2_begin ... + * Loop_2_end (wa = 128, inc = 1) ... Loop_1_end (wa = 128, inc = 32) + * Split_loop_2_end (wa = 32, inc = 1) + * Split_loop_1_end (wa = 128, inc = 32) + * @ingroup snippets + */ + +class SplitLoops : public Pass { +public: + OPENVINO_RTTI("SplitLoops", "Pass") + SplitLoops(); + bool run(LinearIR& linear_ir) override; + +private: + static bool can_be_split(const LinearIR::LoopManager::LoopInfoPtr& current, + const LinearIR::LoopManager::LoopInfoPtr& target); +}; + +} // namespace pass +} // namespace lowered +} // namespace snippets +} // namespace ov \ No newline at end of file diff --git a/src/common/snippets/include/snippets/op/subgraph.hpp b/src/common/snippets/include/snippets/op/subgraph.hpp index 615facf773f..5c329502cb3 100644 --- a/src/common/snippets/include/snippets/op/subgraph.hpp +++ b/src/common/snippets/include/snippets/op/subgraph.hpp @@ -104,12 +104,14 @@ public: ov::pass::Manager& pre_common, ov::pass::Manager& post_common, ov::pass::Manager& post_precision, + lowered::pass::PassPipeline& target_lowered_markup_pipeline, lowered::pass::PassPipeline& target_lowered_pipeline, const void* compile_params = nullptr); snippets::Schedule generate(const BlockedShapeVector& output_shapes, const BlockedShapeVector& input_shapes, const void* compile_params = nullptr); snippets::Schedule generate(ov::pass::Manager& pre_common, ov::pass::Manager& post_common, ov::pass::Manager& post_precision, + lowered::pass::PassPipeline& target_lowered_markup_pipeline, lowered::pass::PassPipeline& target_lowered_pipeline, const void* compile_params = nullptr); snippets::Schedule generate(const void* compile_params = nullptr); @@ -144,7 +146,9 @@ public: private: void align_element_types(const BlockedShapeVector& outputShapes, const BlockedShapeVector& inputShapes); void data_flow_transformations(ov::pass::Manager& pre_common, ov::pass::Manager& post_common, ov::pass::Manager& post_precision); - void control_flow_transformations(lowered::LinearIR& linear_ir, lowered::pass::PassPipeline& target_pipeline); + void control_flow_transformations(lowered::LinearIR& linear_ir, + lowered::pass::PassPipeline& target_markup_pipeline, + lowered::pass::PassPipeline& target_pipeline); void init_config(); // Count of Subgraph virtual ports: // - Potential non-scalar Constants that will be created after some transformations (At the moment it's relevant only for FakeQuantize decomposition) diff --git a/src/common/snippets/src/lowered/loop_manager.cpp b/src/common/snippets/src/lowered/loop_manager.cpp index ff90cde5ae9..928b846742f 100644 --- a/src/common/snippets/src/lowered/loop_manager.cpp +++ b/src/common/snippets/src/lowered/loop_manager.cpp @@ -113,6 +113,18 @@ void LinearIR::LoopManager::get_loop_bounds(const LinearIR &linear_ir, } } +LinearIR::LoopManager::LoopPort LinearIR::LoopManager::get_loop_port_by_expr_port(const ExpressionPort& expr_port, const size_t loop_id) { + auto get_loop_port = [&](const std::vector& ports) { + auto it = std::find_if(ports.cbegin(), ports.cend(), [&](const LinearIR::LoopManager::LoopPort& p) { return *p.expr_port == expr_port; }); + if (it == ports.cend()) + OPENVINO_THROW("Expression has not been found among loop ports. Loop id: " + std::to_string(loop_id)); + return *it; + }; + const auto& loop_info = get_loop_info(loop_id); + return expr_port.get_type() == ExpressionPort::Input ? get_loop_port(loop_info->entry_points) + : get_loop_port(loop_info->exit_points); +} + void LinearIR::LoopManager::get_io_loop_ports(LinearIR::constExprIt loop_begin_pos, LinearIR::constExprIt loop_end_pos, std::vector &entries, @@ -211,18 +223,6 @@ void LinearIR::LoopManager::mark_loop(LinearIR::constExprIt loop_begin_pos, } } -size_t LinearIR::LoopManager::mark_loop(LinearIR::constExprIt loop_begin_pos, - LinearIR::constExprIt loop_end_pos, - size_t work_amount, size_t work_amount_increment, size_t dim_idx, - const std::vector& entries, - const std::vector& exits) { - const auto loop_info = std::make_shared(work_amount, work_amount_increment, dim_idx, entries, exits); - const auto loop_id = this->add_loop_info(loop_info); - for (auto expr_it = loop_begin_pos; expr_it != loop_end_pos; ++expr_it) { - insert_loop_id(*expr_it, loop_id); - } - return loop_id; -} void LinearIR::LoopManager::fuse_loops(const LinearIR& linear_ir, size_t loop_id_upper, size_t loop_id_lower, bool fuse_into_upper) { LinearIR::constExprIt loop_begin_target, loop_end_target; get_loop_bounds(linear_ir, fuse_into_upper ? loop_id_lower : loop_id_upper, loop_begin_target, loop_end_target); diff --git a/src/common/snippets/src/lowered/pass/fuse_loops.cpp b/src/common/snippets/src/lowered/pass/fuse_loops.cpp index 54cecc7797c..39fe42c49dd 100644 --- a/src/common/snippets/src/lowered/pass/fuse_loops.cpp +++ b/src/common/snippets/src/lowered/pass/fuse_loops.cpp @@ -24,6 +24,23 @@ using LoopInfoPtr = LoopManager::LoopInfoPtr; FuseLoops::FuseLoops() : Pass() {} +bool FuseLoops::loop_ports_are_compatible(const LinearIR::LoopManagerPtr& loop_manager, + const size_t loop_lower_id, + const size_t loop_upper_id) { + const auto loop_lower = loop_manager->get_loop_info(loop_lower_id); + for (const auto& entry : loop_lower->entry_points) { + const auto& src_port = entry.expr_port->get_port_connector_ptr()->get_source(); + if (is_loop_id_found(src_port.get_expr()->get_loop_ids(), loop_upper_id)) { + if (!entry.is_incremented) + return false; + auto src_loop_port = loop_manager->get_loop_port_by_expr_port(src_port, loop_upper_id); + if (!src_loop_port.is_incremented) + return false; + } + } + return true; +} + bool FuseLoops::can_be_fused(const LoopInfoPtr& loop_current, const LoopInfoPtr& loop_target) { auto current_work_amount = loop_current->work_amount; auto target_work_amount = loop_target->work_amount; @@ -79,7 +96,7 @@ bool FuseLoops::fuse_upper_into_current(LinearIR& linear_ir, const LinearIR::Loo LinearIR::constExprIt& current_loop_begin_pos, LinearIR::constExprIt& current_loop_end_pos) { const auto& loop_current = loop_manager->get_loop_info(current_loop_id); const auto& loop_target = loop_manager->get_loop_info(target_loop_id); - if (!can_be_fused(loop_current, loop_target)) + if (!can_be_fused(loop_current, loop_target) || !loop_ports_are_compatible(loop_manager, current_loop_id, target_loop_id)) return false; // We can fuse Loop_up to Loop_down only in cases when other consumers of Loop_up are after Loop_down @@ -129,7 +146,7 @@ bool FuseLoops::fuse_lower_into_current(LinearIR& linear_ir, const LinearIR::Loo LinearIR::constExprIt& current_loop_begin_pos, LinearIR::constExprIt& current_loop_end_pos) { const auto& loop_current = loop_manager->get_loop_info(current_loop_id); const auto& loop_target = loop_manager->get_loop_info(target_loop_id); - if (!can_be_fused(loop_current, loop_target)) + if (!can_be_fused(loop_current, loop_target) || !loop_ports_are_compatible(loop_manager, target_loop_id, current_loop_id)) return false; // We can fuse Loop_down to Loop_up only in cases when other parents of Loop_down are before Loop_up diff --git a/src/common/snippets/src/lowered/pass/init_loops.cpp b/src/common/snippets/src/lowered/pass/init_loops.cpp index 4812ab69063..9d016af4429 100644 --- a/src/common/snippets/src/lowered/pass/init_loops.cpp +++ b/src/common/snippets/src/lowered/pass/init_loops.cpp @@ -51,10 +51,15 @@ void InitLoops::init_ptr_increments(std::vector& loop_inputs, std::vec const auto& layout = port->get_descriptor_ptr()->get_layout(); const auto& shape = port->get_descriptor_ptr()->get_shape(); const auto& dim = *(layout.rbegin() + dim_idx); + // Ticket: 113106 + // WA: the current logic doesn't support the case with transposed output shape for brgemm layer + // but for all existing cases planar layout can be used + std::vector planar(layout.size()); + std::iota(planar.begin(), planar.end(), 0); loop_output.ptr_increment = 0; // If relevant dim is not broadcasted, then ptr_increment is the dim stride in the new layout if (loop_output.is_incremented && !(shape[dim] == 1 && work_amount != 1)) { - loop_output.ptr_increment = get_dim_stride(dim, layout, shape); + loop_output.ptr_increment = get_dim_stride(dim, planar, shape); } } } diff --git a/src/common/snippets/src/lowered/pass/insert_buffers.cpp b/src/common/snippets/src/lowered/pass/insert_buffers.cpp index 7404f56582f..0eb75a33749 100644 --- a/src/common/snippets/src/lowered/pass/insert_buffers.cpp +++ b/src/common/snippets/src/lowered/pass/insert_buffers.cpp @@ -4,9 +4,10 @@ #include "snippets/lowered/pass/insert_buffers.hpp" +#include "snippets/itt.hpp" #include "snippets/lowered/linear_ir.hpp" #include "snippets/snippets_isa.hpp" -#include "snippets/itt.hpp" +#include "snippets/utils.hpp" namespace ov { @@ -28,6 +29,49 @@ std::vector get_buffer_loop_ids(const std::vector& lhs, const st } return buffer_loop_ids; } + +// Ticket: 113744 +// TODO: This logic covers only several specific cases so it should be generalized. +ov::Shape compute_allocation_shape(const LinearIR::LoopManagerPtr& loop_manager, + const std::vector& buffer_loop_ids, + const std::vector& parent_loop_ids, + const ov::Output& parent_output, + const int allocation_rank) { + const size_t rank = allocation_rank >= 0 ? allocation_rank : parent_output.get_shape().size(); + ov::Shape allocation_shape(rank); + const auto port = lowered::PortDescriptorUtils::get_port_descriptor_ptr(parent_output); + const auto planar_shape = utils::get_reordered_planar_shape(ov::Shape{port->get_shape()}, port->get_layout()); + for (size_t i = 0; i < rank; ++i) { + *(allocation_shape.rbegin() + i) = (planar_shape.rbegin() + i)->get_length(); + } + + if (buffer_loop_ids.empty() || parent_loop_ids.empty()) { + return allocation_shape; + } + + auto set_rest_dims_to_ones = [&](const int filled_dims_count) { + for (int i = 0; i < static_cast(allocation_shape.size()) - filled_dims_count; ++i) { + allocation_shape[i] = 1; + } + }; + + // In some cases it's possible to allocate less shape + // 1. Buffer and its parent are in the same loop: allocation size for the outer dimension can be extracted from loop increment + // 2. Buffer is outside the parent's loops: allocation size can be extracted from the corresponding loop work amount + // TODO: Use general logic with the help of memory counts for allocation shape computation + if (buffer_loop_ids.back() == parent_loop_ids.back()) { + const auto buffer_loop = loop_manager->get_loop_info(buffer_loop_ids.back()); + *(allocation_shape.rbegin() + 1) = buffer_loop->increment; + set_rest_dims_to_ones(2); + } else { + for (size_t i = 0; i < std::min(rank, parent_loop_ids.size()); ++i) { + const auto loop = loop_manager->get_loop_info(*(parent_loop_ids.rbegin() + i)); + *(allocation_shape.rbegin() + i) = loop->work_amount; + } + set_rest_dims_to_ones(static_cast(parent_loop_ids.size())); + } + return allocation_shape; +} } // namespace InsertBuffers::InsertBuffers(int32_t buffer_allocation_rank) @@ -110,7 +154,12 @@ void InsertBuffers::insertion(LinearIR& linear_ir, const LinearIR::LoopManagerPt // Current expr Loop identifies: 3, 4, 6 // Need to insert between 2nd and 4th Loops - after 2nd Loop const auto pos = insertion_position(linear_ir, loop_manager, parent_expr, expr); - const auto buffer = std::make_shared(parent->output(parent_port), m_buffer_allocation_rank); + const auto allocation_shape = compute_allocation_shape(loop_manager, + buffer_loop_ids, + parent_loops, + parent->output(parent_port), + m_buffer_allocation_rank); + const auto buffer = std::make_shared(parent->output(parent_port), allocation_shape); PortDescriptorUtils::set_port_descriptor_ptr(buffer->output(0), parent_expr_output.get_descriptor_ptr()->clone()); // Output connector is automatically filled from PortDescriptor const auto buffer_expr = linear_ir.create_expression(buffer, {input_connector}); @@ -183,7 +232,12 @@ void InsertBuffers::insertion(LinearIR& linear_ir, const LinearIR::LoopManagerPt // Note: All potential consumers must have the same count of first equal Loop identifies and the same count of different last identifies const auto pos = insertion_position(linear_ir, loop_manager, expr, (*potential_consumers.begin()).get_expr()); - auto buffer = std::make_shared(node->output(port), m_buffer_allocation_rank); + const auto allocation_shape = compute_allocation_shape(loop_manager, + buffer_loop_ids, + current_loops, + node->output(port), + m_buffer_allocation_rank); + auto buffer = std::make_shared(node->output(port), allocation_shape); PortDescriptorUtils::set_port_descriptor_ptr(buffer->output(0), exit_port->get_descriptor_ptr()->clone()); // We cannot insert Node output connector on Buffer output because not all consumers of Node needs Buffer // Example: diff --git a/src/common/snippets/src/lowered/pass/split_loops.cpp b/src/common/snippets/src/lowered/pass/split_loops.cpp new file mode 100644 index 00000000000..af5a4d9cced --- /dev/null +++ b/src/common/snippets/src/lowered/pass/split_loops.cpp @@ -0,0 +1,96 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/lowered/pass/split_loops.hpp" + +#include "snippets/lowered/pass/fuse_loops.hpp" +#include "snippets/lowered/linear_ir.hpp" +#include "snippets/lowered/loop_manager.hpp" +#include "snippets/snippets_isa.hpp" +#include "snippets/itt.hpp" + +namespace ov { +namespace snippets { +namespace lowered { +namespace pass { +using LoopManager = LinearIR::LoopManager; +using LoopInfoPtr = LoopManager::LoopInfoPtr; + +SplitLoops::SplitLoops() : Pass() {} + +bool SplitLoops::can_be_split(const LoopInfoPtr& current, const LoopInfoPtr& parent) { + return current->work_amount == parent->work_amount && current->dim_idx == parent->dim_idx && + current->increment != parent->increment; +} + +bool SplitLoops::run(LinearIR& linear_ir) { + OV_ITT_SCOPED_TASK(ov::pass::itt::domains::SnippetsTransform, "Snippets::SplitLoops") + if (linear_ir.empty()) + return false; + + const auto& loop_manager = linear_ir.get_loop_manager(); + bool loop_was_split = false; + for (const auto& expr : linear_ir) { + const auto& loop_ids = expr->get_loop_ids(); + if (loop_ids.empty()) + continue; + + // Ticket: 113755 + // Note: we currently consider only the outermost loops for splitting + // Splitting could also be done in a more general case, but the splitted loop and its parent must always + // be in the same set of outer loops. Otherwise they won't be fused. + const auto& loop_id = loop_ids.front(); + const auto loop = loop_manager->get_loop_info(loop_id); + for (const auto& entry_point : loop->entry_points) { + const auto& parent_port = entry_point.expr_port->get_port_connector_ptr()->get_source(); + const auto& parent_expr = parent_port.get_expr(); + const auto parent_loop_ids = parent_expr->get_loop_ids(); + if (parent_loop_ids.empty()) + continue; + + const auto& parent_loop_id = parent_loop_ids.front(); + const auto parent_loop_port = loop_manager->get_loop_port_by_expr_port(parent_port, parent_loop_id); + // We don't split loop which are not compatible with parent loop because such loops will not be fused + if (!FuseLoops::loop_ports_are_compatible(loop_manager, loop_id, parent_loop_id)) + continue; + + const auto parent_loop = loop_manager->get_loop_info(parent_loop_id); + if (can_be_split(loop, parent_loop)) { + loop_was_split = true; + const bool split_parent = parent_loop->increment < loop->increment; + const auto& loop_to_split = split_parent ? parent_loop : loop; + const auto& loop_to_split_id = split_parent ? parent_loop_id : loop_id; + const auto& loop_to_fuse = !split_parent ? parent_loop : loop; + loop_to_split->work_amount = loop_to_fuse->increment; + + LinearIR::constExprIt loop_begin_pos, loop_end_pos; + LoopManager::get_loop_bounds(linear_ir, + loop_to_split->entry_points, + loop_to_split->exit_points, + loop_begin_pos, + loop_end_pos, + loop_to_split_id); + const auto split_loop_id = loop_manager->mark_loop(loop_begin_pos, + loop_end_pos, + loop_to_fuse->work_amount, + loop_to_fuse->increment, + loop_to_split->dim_idx, + loop_to_split->entry_points, + loop_to_split->exit_points); + loop_manager->get_loop_info(split_loop_id)->outer_splited_loop = true; + break; + } + } + } + // Ticket: 113666 + // FuseLoops pass is explicitly run here in order to avoid unnecessary computations + // in case if loops are not split but FuseLoops is registered in pass manager after SplitLoops + if (loop_was_split) + FuseLoops().run(linear_ir); + return loop_was_split; +} +} // namespace pass +} // namespace lowered +} // namespace snippets +} // namespace ov \ No newline at end of file diff --git a/src/common/snippets/src/op/subgraph.cpp b/src/common/snippets/src/op/subgraph.cpp index 5f07f581633..52f8a324fd4 100644 --- a/src/common/snippets/src/op/subgraph.cpp +++ b/src/common/snippets/src/op/subgraph.cpp @@ -24,6 +24,7 @@ #include "snippets/lowered/linear_ir.hpp" #include "snippets/lowered/pass/assign_registers.hpp" #include "snippets/lowered/pass/mark_loops.hpp" +#include "snippets/lowered/pass/split_loops.hpp" #include "snippets/lowered/pass/fuse_loops.hpp" #include "snippets/lowered/pass/init_loops.hpp" #include "snippets/lowered/pass/insert_buffers.hpp" @@ -507,6 +508,7 @@ void snippets::op::Subgraph::data_flow_transformations(ov::pass::Manager& pre_co } void snippets::op::Subgraph::control_flow_transformations(lowered::LinearIR& linear_ir, + lowered::pass::PassPipeline& target_markup_pipeline, lowered::pass::PassPipeline& target_pipeline) { INTERNAL_OP_SCOPE(Subgraph); OV_ITT_SCOPED_TASK(ov::pass::itt::domains::SnippetsTransform, "Snippets::op::control_flow_transformations") @@ -514,10 +516,15 @@ void snippets::op::Subgraph::control_flow_transformations(lowered::LinearIR& lin const size_t vector_size = get_generator()->get_target_machine()->get_lanes(); const int32_t buffer_allocation_rank = static_cast(linear_ir.get_config().m_loop_depth); + // Ticket: 113666 + // TODO: Make pass pipeline with backend passes more flexible + target_markup_pipeline.run(linear_ir); + lowered::pass::PassPipeline common_pipeline; common_pipeline.register_pass(vector_size); common_pipeline.register_pass(vector_size); common_pipeline.register_pass(); + common_pipeline.register_pass(); common_pipeline.register_pass(); common_pipeline.register_pass(buffer_allocation_rank); common_pipeline.register_pass(vector_size); @@ -557,22 +564,24 @@ snippets::Schedule snippets::op::Subgraph::generate(const BlockedShapeVector& ou ov::pass::Manager& pre_common, ov::pass::Manager& post_common, ov::pass::Manager& post_precision, + lowered::pass::PassPipeline& target_lowered_markup_pipeline, lowered::pass::PassPipeline& target_lowered_pipeline, const void* compile_params) { canonicalize(output_shapes, input_shapes); - return generate(pre_common, post_common, post_precision, target_lowered_pipeline, compile_params); + return generate(pre_common, post_common, post_precision, target_lowered_markup_pipeline, target_lowered_pipeline, compile_params); } snippets::Schedule snippets::op::Subgraph::generate(const void* compile_params) { auto mngr = ov::pass::Manager(); auto lowered = lowered::pass::PassPipeline(); - return generate(mngr, mngr, mngr, lowered, compile_params); + return generate(mngr, mngr, mngr, lowered, lowered, compile_params); } snippets::Schedule snippets::op::Subgraph::generate( ov::pass::Manager& pre_common, ov::pass::Manager& post_common, ov::pass::Manager& post_precision, + lowered::pass::PassPipeline& target_lowered_markup_pipeline, lowered::pass::PassPipeline& target_lowered_pipeline, const void* compile_params) { INTERNAL_OP_SCOPE(Subgraph); @@ -587,7 +596,7 @@ snippets::Schedule snippets::op::Subgraph::generate( lowering_config.m_loop_depth = tileRank; lowered::LinearIR linear_ir = lowered::LinearIR(body_ptr(), lowering_config); - control_flow_transformations(linear_ir, target_lowered_pipeline); + control_flow_transformations(linear_ir, target_lowered_markup_pipeline, target_lowered_pipeline); // actual code emission const auto& lowering_result = m_generator->generate(linear_ir, lowering_config, compile_params); diff --git a/src/common/snippets/tests/src/lowering_utils.cpp b/src/common/snippets/tests/src/lowering_utils.cpp index 2fc7868b901..22e24986264 100644 --- a/src/common/snippets/tests/src/lowering_utils.cpp +++ b/src/common/snippets/tests/src/lowering_utils.cpp @@ -126,7 +126,8 @@ std::shared_ptr LoweringTests::getLoweredSubgraph(co } body_rt_info["PluginShapesOverride"] = new_shapes; subgraph->set_tile_rank(2); - subgraph->generate(pre_dialect, post_precision, post_precision, lowered_pipeline); + ov::snippets::lowered::pass::PassPipeline empty_pipeline; + subgraph->generate(pre_dialect, post_precision, post_precision, empty_pipeline, lowered_pipeline); return subgraph; } diff --git a/src/plugins/intel_cpu/src/emitters/x64/jit_snippets_emitters.cpp b/src/plugins/intel_cpu/src/emitters/x64/jit_snippets_emitters.cpp index 09bdf0efd29..b793fb10998 100644 --- a/src/plugins/intel_cpu/src/emitters/x64/jit_snippets_emitters.cpp +++ b/src/plugins/intel_cpu/src/emitters/x64/jit_snippets_emitters.cpp @@ -701,8 +701,8 @@ void StoreConvertEmitter::emit_isa(const std::vector &in, const std::vec void StoreConvertEmitter::emit_data() const { store_emitter->emit_data(); } -size_t BrgemmEmitter::getBrgIdx(size_t mIdx, size_t kIdx, size_t nIdx) const { - return mIdx * 4 + kIdx * 2 + nIdx; +size_t BrgemmEmitter::getBrgIdx(size_t kIdx, size_t nIdx) const { + return kIdx * 2 + nIdx; } BrgemmEmitter::BrgemmEmitter(dnnl::impl::cpu::x64::jit_generator* h, dnnl::impl::cpu::x64::cpu_isa_t isa, const std::shared_ptr& node) : jit_emitter(h, isa, node) { @@ -758,10 +758,8 @@ BrgemmEmitter::BrgemmEmitter(dnnl::impl::cpu::x64::jit_generator* h, dnnl::impl: return std::distance(layout.begin(), std::find(layout.begin(), layout.end(), idx)); }; - m_M = C_shape[get_ordered_idx(C_layout, C_layout.size() - 2)]; m_K = A_shape[get_ordered_idx(A_layout, A_layout.size() - 1)]; - m_M_blk = matmulOptimalM; - m_M_tail = m_M % m_M_blk; + m_M = brgemm_node->get_input_count(0); m_N = C_shape[get_ordered_idx(C_layout, C_layout.size() - 1)]; auto brg0Prc = InferenceEngine::details::convertPrecision(brgemm_node->get_input_element_type(0)); @@ -780,34 +778,28 @@ BrgemmEmitter::BrgemmEmitter(dnnl::impl::cpu::x64::jit_generator* h, dnnl::impl: : m_K; m_K_tail = m_K % m_K_blk; - size_t brg0BaseIdx = std::numeric_limits::max(); - for (size_t m = 0; m < 2; m++) { - for (size_t k = 0; k < 2; k++) { - for (size_t n = 0; n < 2; n++) { - auto& brgemmCtx = m_brgCtxs0[getBrgIdx(m, k, n)]; + for (size_t k = 0; k < 2; k++) { + for (size_t n = 0; n < 2; n++) { + auto& brgemmCtx = m_brgCtxs0[getBrgIdx(k, n)]; - auto M_ = m ? m_M_tail - : m_M < m_M_blk ? 0 : m_M_blk; - auto N_ = n ? m_N_tail : m_N - m_N_tail; - auto K_ = k ? m_K_tail : m_K - m_K_tail; - auto beta = k && m_brgCtxs0[getBrgIdx(m, 0, n)].K != 0 ? 1.0f : 0.0f; + auto M_ = m_M; + auto N_ = n ? m_N_tail : m_N - m_N_tail; + auto K_ = k ? m_K_tail : m_K - m_K_tail; + auto beta = k && m_brgCtxs0[getBrgIdx(0, n)].K != 0 ? 1.0f : 0.0f; - brgemmCtx.M = M_; - brgemmCtx.N = N_; - brgemmCtx.K = K_; - brgemmCtx.LDA = leading_dimensions[0]; - brgemmCtx.LDB = brgemm_node->is_with_data_repacking() ? rnd_up(m_N, m_N_blk) : leading_dimensions[1]; - brgemmCtx.LDC = leading_dimensions[2]; - brgemmCtx.dt_in0 = static_cast(DnnlExtensionUtils::IEPrecisionToDataType(brg0Prc)); - brgemmCtx.dt_in1 = static_cast(DnnlExtensionUtils::IEPrecisionToDataType(brg1Prc)); - brgemmCtx.beta = beta; + brgemmCtx.M = M_; + brgemmCtx.N = N_; + brgemmCtx.K = K_; + brgemmCtx.LDA = leading_dimensions[0]; + brgemmCtx.LDB = brgemm_node->is_with_data_repacking() ? rnd_up(m_N, m_N_blk) : leading_dimensions[1]; + brgemmCtx.LDC = leading_dimensions[2]; + brgemmCtx.dt_in0 = static_cast(DnnlExtensionUtils::IEPrecisionToDataType(brg0Prc)); + brgemmCtx.dt_in1 = static_cast(DnnlExtensionUtils::IEPrecisionToDataType(brg1Prc)); + brgemmCtx.beta = beta; - // don't create brgemm kernels for empty tiles - if (M_ != 0 && K_ != 0 && N_ != 0) { - if (brg0BaseIdx == std::numeric_limits::max()) - brg0BaseIdx = getBrgIdx(m, k, n); - initBrgemm(brgemmCtx, m_brgKernels0[getBrgIdx(m, k, n)], brgWithAMX); - } + // don't create brgemm kernels for empty tiles + if (M_ != 0 && K_ != 0 && N_ != 0) { + initBrgemm(brgemmCtx, m_brgKernels0[getBrgIdx(k, n)], brgWithAMX); } } } @@ -878,36 +870,31 @@ void BrgemmEmitter::emit_impl(const std::vector& in, } Xbyak::Reg64 output_0(static_cast(out[0])); - for (size_t mb = 0; mb < div_up(m_M, m_M_blk); mb++) { - const bool is_M_tail = (m_M - mb * m_M_blk < m_M_blk); + size_t brgIdx0 = getBrgIdx(0, 0); + size_t K0_step0 = m_brgCtxs0[brgIdx0].K; + size_t K0_step1 = m_brgCtxs0[brgIdx0].K * m_brgCtxs0[brgIdx0].LDB; + size_t N0_step0 = m_brgCtxs0[brgIdx0].N * m_brg0VnniFactor; + size_t N0_step1 = m_brgCtxs0[brgIdx0].N; + for (size_t n = 0; n < 2; n++) { + for (size_t k = 0; k < 2; k++) { + auto& brgemmCtx = m_brgCtxs0[getBrgIdx(k, n)]; - size_t brgIdx0 = getBrgIdx(0, 0, 0); - size_t K0_step0 = m_brgCtxs0[brgIdx0].K; - size_t K0_step1 = m_brgCtxs0[brgIdx0].K * m_brgCtxs0[brgIdx0].LDB; - size_t N0_step0 = m_brgCtxs0[brgIdx0].N * m_brg0VnniFactor; - size_t N0_step1 = m_brgCtxs0[brgIdx0].N; - for (size_t n = 0; n < 2; n++) { - for (size_t k = 0; k < 2; k++) { - size_t mIdx = is_M_tail ? 1 : 0; - auto& brgemmCtx = m_brgCtxs0[getBrgIdx(mIdx, k, n)]; + if (brgemmCtx.K != 0 && brgemmCtx.N != 0) { + const size_t in0_offset = m_load_offset_a + k * K0_step0 * io_data_size[0]; + const size_t in1_offset = m_load_offset_b + (k * K0_step1 + n * N0_step0) * io_data_size[1]; + const size_t in2_offset = m_load_offset_scratch + (m_with_comp ? n * N0_step1 * sizeof(int32_t) : 0); + const size_t out0_offset = m_store_offset_c + n * N0_step1 * io_data_size[2]; - if (brgemmCtx.K != 0 && brgemmCtx.N != 0) { - const size_t in0_offset = m_load_offset_a + (k * K0_step0 + mb * m_M_blk * brgemmCtx.LDA) * io_data_size[0]; - const size_t in1_offset = m_load_offset_b + (k * K0_step1 + n * N0_step0) * io_data_size[1]; - const size_t in2_offset = m_load_offset_scratch + (m_with_comp ? n * N0_step1 * sizeof(int32_t) : 0); - const size_t out0_offset = m_store_offset_c + (n * N0_step1 + mb * m_M_blk * brgemmCtx.LDC) * io_data_size[2]; - - emit_brgemm_kernel_call(m_brgKernels0[getBrgIdx(mIdx, k, n)].get(), - brgemmCtx, - input_0, - input_1, - input_2, - output_0, - in0_offset, - in1_offset, - in2_offset, - out0_offset); - } + emit_brgemm_kernel_call(m_brgKernels0[getBrgIdx(k, n)].get(), + brgemmCtx, + input_0, + input_1, + input_2, + output_0, + in0_offset, + in1_offset, + in2_offset, + out0_offset); } } } diff --git a/src/plugins/intel_cpu/src/emitters/x64/jit_snippets_emitters.hpp b/src/plugins/intel_cpu/src/emitters/x64/jit_snippets_emitters.hpp index a4c3e1f835e..82f89bd0849 100644 --- a/src/plugins/intel_cpu/src/emitters/x64/jit_snippets_emitters.hpp +++ b/src/plugins/intel_cpu/src/emitters/x64/jit_snippets_emitters.hpp @@ -353,7 +353,7 @@ private: float beta; }; void initBrgemm(brgemmCtx& ctx, std::unique_ptr& brgKernel, bool use_amx) const; - size_t getBrgIdx(size_t mIdx, size_t kIdx, size_t nIdx) const; + size_t getBrgIdx(size_t kIdx, size_t nIdx) const; void emit_brgemm_kernel_call(const dnnl::impl::cpu::x64::brgemm_kernel_t* brg_kernel, const brgemmCtx& ctx, Xbyak::Reg64 addr_A, Xbyak::Reg64 addr_B, Xbyak::Reg64 scratch, Xbyak::Reg64 addr_C, @@ -362,11 +362,10 @@ private: static void kernel_execute(const dnnl::impl::cpu::x64::brgemm_kernel_t *brg_kernel, const void *A, const void *B, void *C, void *scratch, int with_comp); static constexpr size_t BRGEMM_KERNELS_NUM = 8; - static constexpr size_t matmulOptimalM = 32; brgemmCtx m_brgCtxs0[BRGEMM_KERNELS_NUM]; std::unique_ptr m_brgKernels0[BRGEMM_KERNELS_NUM]; - size_t m_M, m_M_blk, m_M_tail; + size_t m_M; size_t m_K, m_K_blk, m_K_tail; size_t m_N, m_N_blk, m_N_tail; size_t m_brg0VnniFactor; diff --git a/src/plugins/intel_cpu/src/nodes/subgraph.cpp b/src/plugins/intel_cpu/src/nodes/subgraph.cpp index c193992cd80..c2a50bfa05e 100644 --- a/src/plugins/intel_cpu/src/nodes/subgraph.cpp +++ b/src/plugins/intel_cpu/src/nodes/subgraph.cpp @@ -25,6 +25,7 @@ #include "utils/cpu_utils.hpp" #include "emitters/x64/cpu_generator.hpp" #include "transformations/snippets/x64/pass/lowered/fuse_load_store_and_convert.hpp" +#include "transformations/snippets/x64/pass/lowered/brgemm_blocking.hpp" #include "transformations/snippets/x64/pass/mul_add_to_fma.hpp" #include "transformations/snippets/x64/pass/brgemm_to_brgemm_cpu.hpp" #include "transformations/snippets/x64/pass/remove_converts.hpp" @@ -564,6 +565,9 @@ void Snippet::generate(const jit_snippets_compile_args* jcp) { CPU_REGISTER_PASS_X64(post_precision, ov::intel_cpu::pass::RemoveConverts); CPU_REGISTER_PASS_X64(post_precision, ov::intel_cpu::pass::MulAddToFMA); + ov::snippets::lowered::pass::PassPipeline control_flow_markup_pipeline; + CPU_REGISTER_PASS_X64(control_flow_markup_pipeline, ov::intel_cpu::pass::BrgemmBlocking); + ov::snippets::lowered::pass::PassPipeline control_flow_pipeline; CPU_REGISTER_PASS_X64(control_flow_pipeline, ov::intel_cpu::pass::FuseLoadStoreConvert); @@ -571,6 +575,7 @@ void Snippet::generate(const jit_snippets_compile_args* jcp) { pre_dialect, post_dialect, post_precision, + control_flow_markup_pipeline, control_flow_pipeline, reinterpret_cast(jcp)); } diff --git a/src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/brgemm_blocking.cpp b/src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/brgemm_blocking.cpp new file mode 100644 index 00000000000..81ca9daeeb3 --- /dev/null +++ b/src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/brgemm_blocking.cpp @@ -0,0 +1,80 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "brgemm_blocking.hpp" + +#include "openvino/pass/pattern/matcher.hpp" +#include "openvino/pass/pattern/op/wrap_type.hpp" +#include "snippets/itt.hpp" +#include "snippets/lowered/linear_ir.hpp" +#include "snippets/lowered/loop_manager.hpp" +#include "snippets/snippets_isa.hpp" +#include "transformations/snippets/x64/op/brgemm_cpu.hpp" + + +namespace ov { +namespace intel_cpu { +namespace pass { +using LoopManager = snippets::lowered::LinearIR::LoopManager; +using LoopInfoPtr = LoopManager::LoopInfoPtr; +using LoopPort = LoopManager::LoopPort; + +BrgemmBlocking::BrgemmBlocking() : Pass() {} + +bool BrgemmBlocking::run(snippets::lowered::LinearIR& linear_ir) { + OV_ITT_SCOPED_TASK(ov::pass::itt::domains::SnippetsTransform, "Snippets::BrgemmBlocking") + if (linear_ir.empty()) + return false; + + // Ticket: 113745 + // TODO: make the block size configurable + const auto block_size = 32; + const auto dim_idx = 1; + + const auto& loop_manager = linear_ir.get_loop_manager(); + + auto blocking_loop_exists = [&](const ov::snippets::lowered::ExpressionPtr& expr, + const std::shared_ptr& brgemm) { + const auto& loop_ids = expr->get_loop_ids(); + for (const auto& id : loop_ids) { + const auto loop = loop_manager->get_loop_info(id); + if (loop->dim_idx == dim_idx) { + OPENVINO_ASSERT(brgemm->get_input_count(0) == loop->increment, + "Brgemm ", brgemm, " has input count (", brgemm->get_input_count(0), + ") which doesn't match the increment(", loop->increment, ") of loop by M"); + return true; + } + } + return false; + }; + + bool modified = false; + for (auto expr_it = linear_ir.begin(); expr_it != linear_ir.end(); expr_it++) { + const auto& expr = *expr_it; + const auto brgemm = ov::as_type_ptr(expr->get_node()); + if (!brgemm || blocking_loop_exists(expr, brgemm)) + continue; + + const auto& input_shape_0 = expr->get_input_port_descriptor(0)->get_shape(); + const auto& input_layout_0 = expr->get_input_port_descriptor(0)->get_layout(); + const auto& dim = *(input_layout_0.rbegin() + dim_idx); + const auto& m = input_shape_0[dim]; + + brgemm->set_input_count(block_size); + + const auto work_amount = m; + const auto increment = block_size; + + std::vector entries{LoopPort(expr->get_input_port(0), true), LoopPort(expr->get_input_port(1), false)}; + if (brgemm->is_with_scratchpad()) + entries.emplace_back(expr->get_input_port(2), false); + std::vector exits{LoopPort(expr->get_output_port(0), true)}; + loop_manager->mark_loop(expr_it, std::next(expr_it), work_amount, increment, dim_idx, entries, exits); + } + + return modified; +} +} // namespace pass +} // namespace intel_cpu +} // namespace ov \ No newline at end of file diff --git a/src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/brgemm_blocking.hpp b/src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/brgemm_blocking.hpp new file mode 100644 index 00000000000..9023060ffdf --- /dev/null +++ b/src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/brgemm_blocking.hpp @@ -0,0 +1,28 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "snippets/lowered/pass/pass.hpp" + +namespace ov { +namespace intel_cpu { +namespace pass { + +/** + * @interface BrgemmBlocking + * @brief Covers BrgemmCPU with blocking loop by M + * @ingroup snippets + */ + +class BrgemmBlocking : public snippets::lowered::pass::Pass { +public: + OPENVINO_RTTI("BrgemmBlocking", "Pass") + BrgemmBlocking(); + bool run(snippets::lowered::LinearIR& linear_ir) override; +}; + +} // namespace pass +} // namespace intel_cpu +} // namespace ov \ No newline at end of file diff --git a/src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/fuse_load_store_and_convert.hpp b/src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/fuse_load_store_and_convert.hpp index ed31897b77c..0ff16116fa9 100644 --- a/src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/fuse_load_store_and_convert.hpp +++ b/src/plugins/intel_cpu/src/transformations/snippets/x64/pass/lowered/fuse_load_store_and_convert.hpp @@ -21,7 +21,7 @@ namespace pass { class FuseLoadStoreConvert: public snippets::lowered::pass::Pass { public: FuseLoadStoreConvert() = default; - OPENVINO_RTTI("FuseLoadStoreConvert", "LinearIRTransformation"); + OPENVINO_RTTI("FuseLoadStoreConvert", "Pass"); bool run(snippets::lowered::LinearIR& linear_ir) override; private: From 7ae8826b528091c4ce2133cc98ba13d0c640d497 Mon Sep 17 00:00:00 2001 From: Evgeny Kotov Date: Wed, 28 Jun 2023 19:55:34 +0200 Subject: [PATCH 09/25] [GNA] NCHW to NHWC layout transformations (#18120) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Squashed commit of the following: GNAConv+ MaxPool commit 51e7254eab13c9f94e1ddea1142d3060e1f55528 Author: Mikhail Ryzhov Date: Tue Apr 18 18:09:46 2023 +0200 reset json schema commit 6d87c4070399036bc09d8622b6789f286dc1c877 Author: Mikhail Ryzhov Date: Tue Apr 18 18:02:53 2023 +0200 Exclude wrong changes commit 30dd9aef8662458b991e4db92f1cc2c19af0beb7 Author: Mikhail Ryzhov Date: Tue Apr 18 17:56:54 2023 +0200 clang format commit dad7151b37c3119165359ac093c28c6396f337af Author: Mikhail Ryzhov Date: Tue Apr 18 17:47:17 2023 +0200 Init commit * Squashed commit of the following: GatherSinking binary elementwise commit 960f7ebaed00341c40a65cc9a2e74094820efa50 Author: Evgeny Kotov Date: Tue Feb 21 13:36:35 2023 +0100 fix year commit 860ae33f385e2f767cf2d70298f44f099194b830 Author: Evgeny Kotov Date: Tue Feb 21 13:29:05 2023 +0100 add docs commit bd35e57c60713e617edac4118b04a7fbdf9df4ed Author: Evgeny Kotov Date: Mon Feb 20 18:58:55 2023 +0100 cleanup commit 3fed498f0336782c82bd45d9fe0a4813f0f95183 Author: Evgeny Kotov Date: Mon Feb 20 18:52:49 2023 +0100 clang fixes + remove unneeded functions commit 4417a13bad0ea72f9072f7b64d8f990227f7043b Author: Evgeny Kotov Date: Mon Feb 20 18:50:03 2023 +0100 fix unit tests execution commit 48f20927af737cac694b26050f502b509fa27b31 Author: Evgeny Kotov Date: Mon Feb 20 18:33:03 2023 +0100 initial * Squashed commit of the following: common debug merge commit 9cdddb337972c2ebecb3ed81f2613b96ae034538 Author: Mikhail Ryzhov Date: Fri May 12 14:05:34 2023 +0200 clnag format commit f093baa7708bd9e9527277337e52104b4e82744d Author: Evgeny Kotov Date: Wed Apr 19 15:27:58 2023 +0200 fix ts_concat ts_split commit 1c8baba5bb4c1533f4470505fe5a0dce6e4bc45e Author: Evgeny Kotov Date: Wed Apr 19 13:26:30 2023 +0200 fix ts_split commit 043af9aad51b218c8e27150516e3824cea682ca3 Author: Evgeny Kotov Date: Tue Apr 18 19:39:15 2023 +0200 remove debug commit 7c03af67f018d5eea2c39d01bf2d68b815cde390 Author: Evgeny Kotov Date: Tue Apr 18 19:37:34 2023 +0200 fix ts_concat commit dc2f00a1e77427b0ae243f5ef7606eac4cdf8051 Author: Evgeny Kotov Date: Tue Apr 18 13:15:50 2023 +0200 implemented ts_split through gather commit 311045f78d357b4f1129a4545da9092435313664 Merge: 06fee24288 7ca64ec9f7 Author: Evgeny Kotov Date: Mon Apr 17 19:19:05 2023 +0200 Merge branch 'gna_layout_debug_fix' into gna_layout_debug commit 7ca64ec9f704c2228808212e267fb387c08e4921 Author: Evgeny Kotov Date: Mon Apr 17 19:06:44 2023 +0200 fix commit 81c6217c68fe6f945ab83ae8b6ed64d23415a62e Author: Evgeny Kotov Date: Mon Apr 17 18:29:32 2023 +0200 fix commit 06fee24288be846209e87fbd40aab7cad2775559 Author: Evgeny Kotov Date: Mon Apr 17 16:03:34 2023 +0200 fix RemoveOutputsProcessing name to emplace commit 83344b2723b4db919862e7519369593710d06de9 Author: Evgeny Kotov Date: Mon Apr 17 10:35:59 2023 +0200 fix commit cc7d6bdea26df1d2e3195bf82e62193442723995 Merge: d916fa40f9 83d51b5fe4 Author: Evgeny Kotov Date: Thu Apr 13 13:32:44 2023 +0200 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit d916fa40f98d5d253e445929319f06b638d2f430 Author: Evgeny Kotov Date: Thu Apr 13 13:32:02 2023 +0200 remove debug commit f8b1fac6f94577059f729ac7c31594b4f93ba4ae Author: Evgeny Kotov Date: Thu Apr 13 13:31:12 2023 +0200 fix + remove debug commit 710d004eda3063374b99c3a78a37f7af2b84d1e8 Author: Evgeny Kotov Date: Thu Apr 13 11:54:36 2023 +0200 fix commit 83d51b5fe485d96c76bc77ace671491c5bfb1223 Author: Mikhail Ryzhov Date: Wed Apr 12 19:06:15 2023 +0200 Pattern Reshape-Transpose commit 3e33e51edff7762112f00d29281a59a6cb16ea83 Merge: a5042ebce7 74c68cbf4f Author: Mikhail Ryzhov Date: Wed Apr 12 16:56:24 2023 +0200 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit a5042ebce79b0fc6a5db749166a4784aec9f0d2a Author: Mikhail Ryzhov Date: Wed Apr 12 16:56:00 2023 +0200 Reverted check of concat with interleaved inputs commit 74c68cbf4fd1206d5e67326a4cf0dc290fbeb574 Author: Evgeny Kotov Date: Wed Apr 12 16:53:17 2023 +0200 use ts_fuse instead of general after all commit 49ac734247ef6f73ce2ca096f1bd03c027f3c338 Merge: 79d23d893f 1dbea2cb3c Author: Mikhail Ryzhov Date: Wed Apr 12 15:02:35 2023 +0200 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 79d23d893fd585f253eec8d3e10198e5b75ed2da Author: Mikhail Ryzhov Date: Wed Apr 12 15:02:08 2023 +0200 Fixed ConvertMatmulToPointwiseConvWithFqNeg commit 1dbea2cb3c948d2703a2e97957b25ebd2bd30db6 Author: Evgeny Kotov Date: Wed Apr 12 14:29:22 2023 +0200 fix pipeline commit d73effb2c1905754a9f8636e0a762885224ca44f Merge: e2b5440ad1 d5b7a7c984 Author: Evgeny Kotov Date: Wed Apr 12 14:01:28 2023 +0200 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit e2b5440ad11eea5aa456146fa12a5f07223c2f43 Author: Evgeny Kotov Date: Wed Apr 12 14:01:25 2023 +0200 fix ts_split bug when we some split outputs are not connected commit d5b7a7c98477df74fd6e1a8481c8bc513854001b Author: Mikhail Ryzhov Date: Wed Apr 12 13:57:25 2023 +0200 Corrected limit conditions commit 7de41f2072420f3d1cb1f933991853ba787a8f42 Author: Evgeny Kotov Date: Wed Apr 12 13:04:42 2023 +0200 remove debug commit ad2584aa23265c3cdb6370d1b87a8c0af89c17ad Author: Evgeny Kotov Date: Tue Apr 11 18:48:49 2023 +0200 use TSConcatForward TSSplitBackward commit 7c9fabb239415e3f1af01058aaca8b9bc63d6c26 Author: Evgeny Kotov Date: Tue Apr 11 18:33:03 2023 +0200 fix ts_split commit da1488d21ccb649e75d0e61d424bf8e8f5d9e8f2 Author: Evgeny Kotov Date: Tue Apr 11 14:19:26 2023 +0200 fixed ts_concat commit 2014b727ed387ca2035de5ec144f1beb67c32dd9 Author: Evgeny Kotov Date: Thu Apr 6 11:42:17 2023 +0200 add ts_split commit 7316a17131a6cb0a8c25061a6b12afdee004661d Author: Evgeny Kotov Date: Thu Apr 6 11:42:00 2023 +0200 remove debug commit 05c9b9524781f2017d6c5f88b793c210dfd2ab16 Author: Evgeny Kotov Date: Thu Apr 6 11:41:10 2023 +0200 remove debug, turn off new transformations commit 8962424b907f7fec2ddfe32912f8da77c13461e4 Merge: f98adb6dc4 99090c2090 Author: Evgeny Kotov Date: Wed Apr 5 16:50:41 2023 +0200 Merge branch 'gna_layout_debug' into gna_layout_debug_concat_split commit f98adb6dc40b4e368e97b58cc28ad3554fb54923 Author: Evgeny Kotov Date: Wed Apr 5 16:50:17 2023 +0200 remove debug commit 9dddf3ada89b65da3191f647bf2f17af6d8a092a Author: Evgeny Kotov Date: Wed Apr 5 16:44:34 2023 +0200 fix ts_concat sigsegv commit 190010f4dfca82bb4b5a3e045e6015b8d1db8491 Author: Evgeny Kotov Date: Wed Apr 5 13:15:53 2023 +0200 fix problem with transpose backward sinking after gna::ts_concat commit 99090c2090e3a121241a54a5b8da290ba5272b11 Author: Evgeny Kotov Date: Wed Apr 5 12:52:13 2023 +0200 fix bug GatherSinkingTransposeReshapeForward map:at exception commit a6f65aae2d94a63f60440d9fcdeeb31af548b055 Author: Evgeny Kotov Date: Wed Apr 5 12:51:19 2023 +0200 add ts_concat commit d9497eadad5c58ec9218692a08da54c3d7fd3d40 Author: Evgeny Kotov Date: Tue Apr 4 13:40:51 2023 +0200 add code from Misha commit a5fe706b2bf92bcc1f3f8c435663551a0770188c Author: Mikhail Ryzhov Date: Tue Apr 4 13:00:47 2023 +0200 TS concat callback draft commit 8f244188c4d0ceef11850e118fd0ad23fcdac0b8 Merge: 5591091e05 a5fe706b2b Author: Evgeny Kotov Date: Tue Apr 4 12:57:23 2023 +0200 Merge branch 'gna_layout_debug' into gna_layout_debug_concat_split commit 5591091e05a32b8e3566ec70490cbd373f827910 Author: Evgeny Kotov Date: Tue Apr 4 12:56:48 2023 +0200 fix commit 7f9eb3c02c57cbef5b32efa5d61cf7082ca6b621 Merge: a98a353f00 9190b8ccff Author: Evgeny Kotov Date: Tue Apr 4 11:20:26 2023 +0200 merge commit a98a353f00cdb1650edfe0f5f24a10111c0319b7 Author: Evgeny Kotov Date: Tue Apr 4 11:19:43 2023 +0200 fix commit a8ca19419f7b1e16064c8cb53ed836370da8af5e Author: Mikhail Ryzhov Date: Tue Apr 4 11:14:44 2023 +0200 Fixed weights reducer commit 9190b8ccffd1a125cb97d0e339f0820f1c565d3c Merge: 279f76287e 4ce59b6885 Author: Evgeny Kotov Date: Tue Apr 4 10:46:07 2023 +0200 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 279f76287eb7e656c3dd743a228839c16470057a Author: Evgeny Kotov Date: Tue Apr 4 10:46:03 2023 +0200 use transformation_callback in ts_concat commit 3fabc31ed9462f86ae173aba927caf9c9c3fb539 Author: Evgeny Kotov Date: Tue Apr 4 10:44:42 2023 +0200 fix commit d942074be54a99147c893eb78e878cc4428be5ad Author: Evgeny Kotov Date: Mon Apr 3 18:29:02 2023 +0200 debug commit 4ce59b68851f71a049b34d16008a6ed82cc91d2b Author: Mikhail Ryzhov Date: Mon Apr 3 17:49:45 2023 +0200 Skipped supported transposes in Gather transform commit 3d57040037493aa61ffb1d159e76567ca493dd33 Author: Mikhail Ryzhov Date: Mon Apr 3 12:16:58 2023 +0200 Extended FQ detection commit bcc317e80d1f9ed6d6f6aa5c77ff5e58e31e84db Author: Mikhail Ryzhov Date: Mon Apr 3 10:11:48 2023 +0200 Gather sinking with FQ Backward commit b1dc3c44f3cca1035ce4bd3ff05f1f78a7add1ce Author: Mikhail Ryzhov Date: Fri Mar 31 10:48:38 2023 +0200 Fixed typo commit 76b2e162156e20a1ade9afc893e9874b8c66284d Author: Mikhail Ryzhov Date: Tue Mar 28 15:08:24 2023 +0200 FQ fix commit 99df8e6164cad78a25e34ea752da9264c7536188 Merge: 07cdff9a44 8894dfc88b Author: Evgeny Kotov Date: Mon Mar 27 18:03:54 2023 +0200 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 07cdff9a44585026bbd58fc1c33b1e67d47bd225 Author: Evgeny Kotov Date: Mon Mar 27 18:03:51 2023 +0200 add GatherSinkingMatmulBackward commit 8894dfc88b22736b1157cd75e6b48ad14a4a1137 Merge: 0e0dcc6a53 67a4035902 Author: Mikhail Ryzhov Date: Fri Mar 24 14:28:39 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 67a403590274b68a9c8d6ea58b7cb53857df03a3 Author: Evgeny Kotov Date: Fri Mar 24 13:59:20 2023 +0100 remove debug commit 04a715267a68b45b534968a4ae271239a3ca2289 Merge: 7b95c90df8 1163b926ee Author: Evgeny Kotov Date: Fri Mar 24 13:56:05 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 7b95c90df8d9bfb4dfad69859c4e804387cd2ed2 Author: Evgeny Kotov Date: Fri Mar 24 13:54:49 2023 +0100 fix gather_sinking_matmul commit 0e0dcc6a53ce660b10c27d7e1d48de260e87e127 Author: Mikhail Ryzhov Date: Fri Mar 24 10:43:07 2023 +0100 Disabled ReshapeTransposeSubstitute commit daaeeecfac3ca7b1763279e62455d007245bcdf8 Author: Mikhail Ryzhov Date: Fri Mar 24 10:41:56 2023 +0100 Fixed squeeze helper commit 1163b926ee18bf7358944d5b578b155862bccc12 Author: Mikhail Ryzhov Date: Thu Mar 23 16:09:59 2023 +0100 Corrected Concat checks commit 06d6fbf0e806763ffba7c649052d22673268dae4 Author: Evgeny Kotov Date: Thu Mar 23 15:28:00 2023 +0100 initial commit 1ca78f643e858f2dfe4c9adc3e99c5056e341608 Author: Evgeny Kotov Date: Thu Mar 23 15:27:21 2023 +0100 debug commit 3c5aa8c53dac6e80c99292d47760849a29acfaa2 Merge: 01de25e3c6 aaba7740d4 Author: Mikhail Ryzhov Date: Thu Mar 23 15:13:02 2023 +0100 Merge branch 'itikhono/ts/slice' into gna_layout_debug commit 01de25e3c66f3930bfff61dfd81776e5748b6095 Author: Mikhail Ryzhov Date: Thu Mar 23 13:35:35 2023 +0100 detect matmuls commit 45c1f800f3276e9cb1d5b4b82b203867f8390c97 Author: Mikhail Ryzhov Date: Thu Mar 23 12:34:28 2023 +0100 Removed do_rotate flag processing commit aaba7740d47483551a83aca0a6620825adf9fbea Author: Tikhonov Ivan Date: Thu Mar 23 10:01:58 2023 +0000 codestyle commit 979d5cc66976417485ec9f56b3151a7cc56d9e57 Merge: 67c1b9daad a66868b463 Author: Ivan Date: Thu Mar 23 17:48:05 2023 +0400 Merge branch 'itikhono/ts/slice' of https://github.com/itikhono/openvino into itikhono/ts/slice commit 67c1b9daad9b91b3f1c4a39a22f6628e8840b868 Author: Ivan Date: Thu Mar 23 17:47:50 2023 +0400 resolve review comments commit 8b81867d18f652db0e45630937236676b0add4ef Author: Mikhail Ryzhov Date: Thu Mar 23 10:15:42 2023 +0100 Reverted GetConvData helpers commit d78f7e7fc6210853dab912bc13cc70f2e2fcb2d9 Author: Evgeny Kotov Date: Wed Mar 22 17:29:02 2023 +0100 add gather sinking split commit e1ff589d3e6d24a0d994c40a9923f1b0fd1321a6 Author: Evgeny Kotov Date: Wed Mar 22 17:07:12 2023 +0100 ad Reshape to supported gather sinking nodes commit 894defdcc9fe89ea1dae558d964975fc41ff10b8 Merge: 31d7af368e 4fd047deec Author: Evgeny Kotov Date: Wed Mar 22 16:00:51 2023 +0100 Merge branch 'gna_layout_debug' into gather_sinking_reshape commit 31d7af368eb71efdc4cbac85772418aaa5e96733 Author: Evgeny Kotov Date: Wed Mar 22 16:00:00 2023 +0100 add gather_sinking_reshape commit 4fd047deec76db345c8e55f77c1a2a047c8e8155 Author: Mikhail Ryzhov Date: Wed Mar 22 15:29:59 2023 +0100 Fixed squeeze condition commit d105cfcc685c4c8070aa4f34990e8bacd17aebd3 Author: Mikhail Ryzhov Date: Wed Mar 22 14:55:10 2023 +0100 Fixed Gather indexes commit a66868b463a74c8bebcf3cae11b7ad8e815adc8a Merge: bf9bc8628b b70e56d110 Author: Ivan Tikhonov Date: Wed Mar 22 01:53:10 2023 +0400 Merge branch 'master' into itikhono/ts/slice commit bf9bc8628b2a104a8b17cdd7e554d170a07901d9 Merge: 31bd608ac4 3d508c7b36 Author: Tikhonov Ivan Date: Tue Mar 21 21:41:57 2023 +0000 Merge branch 'itikhono/ts/slice' of https://github.com/itikhono/openvino into itikhono/ts/slice commit 31bd608ac48b6817b7d6b97813ca4f1c3458d6e0 Author: Tikhonov Ivan Date: Tue Mar 21 21:41:37 2023 +0000 fix TSSqueeze transformation commit 02abf9b1f0dbbe8036f4221f56e004d4d188f102 Merge: 4481041f86 5c249d98d9 Author: Evgeny Kotov Date: Tue Mar 21 19:48:06 2023 +0100 Merge branch 'transpose_sinking_fakequantize' into gna_layout_debug commit 5c249d98d9abb6f4749b007a21944439f3536fa9 Author: Evgeny Kotov Date: Tue Mar 21 19:47:27 2023 +0100 fix commit cdfd77a415ef445830218215c4c80473b662779e Author: Evgeny Kotov Date: Tue Mar 21 19:43:43 2023 +0100 rebase fixes commit e4207c4d6b6d9befea3a540655ab7e53b86d29ff Author: Ivan Date: Tue Mar 21 20:21:42 2023 +0400 fix unit tests, revert changes for TSSlice transformation commit 4481041f86eedd9564131f3ff0e9b72185d345e4 Merge: eac5d4beb4 b1099c1c40 Author: Evgeny Kotov Date: Tue Mar 21 16:16:56 2023 +0100 Merge branch 'transpose_sinking_fakequantize' into gna_layout_debug commit b1099c1c40daf2623001cb7b5682567329983209 Author: Evgeny Kotov Date: Thu Mar 2 14:38:43 2023 +0100 initial commit 0f17c5f7141e373ff930ce0a2c0fe12dd1208b93 Merge: 981e8ad3c0 db220f11ee Author: Ivan Date: Tue Mar 21 18:24:08 2023 +0400 Merge branch 'itikhono/ts/slice' of https://github.com/itikhono/openvino into itikhono/ts/slice commit 3d508c7b36e07b49b6da0a2ffb0305bf2d588212 Merge: 9720a28fa6 0893efe073 Author: Ivan Tikhonov Date: Tue Mar 21 17:07:42 2023 +0400 Merge branch 'master' into itikhono/ts/slice commit 9720a28fa6b27e8b62709a189d1ce0af2354cd51 Author: Tikhonov Ivan Date: Tue Mar 21 12:35:23 2023 +0000 codestyle commit eac5d4beb4c920dbd767dc4d9271b62259afae42 Merge: faf2f253c6 db220f11ee Author: Mikhail Ryzhov Date: Tue Mar 21 12:45:59 2023 +0100 Merge branch 'itikhono/ts/slice' into gna_layout_debug # Conflicts: # src/common/transformations/src/transformations/transpose_sinking/ts_slice.cpp # src/common/transformations/src/transformations/transpose_sinking/ts_squeeze.cpp # src/common/transformations/src/transformations/transpose_sinking/ts_unsqueeze.cpp commit faf2f253c6cfb609fae07d64c7715961a1612dd1 Author: Mikhail Ryzhov Date: Tue Mar 21 12:12:18 2023 +0100 Squeeze shapes when detect gather commit 7b1bbf77ee61f627bfe83d7b6174c11da2e75f10 Author: Evgeny Kotov Date: Mon Mar 20 19:48:56 2023 +0100 fix /gather_sinking_transpose_reshape commit e6650cfd1c307ee16ddf23099b93a8f5674e0bb9 Author: Mikhail Ryzhov Date: Tue Mar 21 12:06:01 2023 +0100 Corrected Convolution checks commit 83f4428f488b279dcaddc91c5041d6b4375fe55d Author: Mikhail Ryzhov Date: Mon Mar 20 18:01:35 2023 +0100 Corrected reshape paterns commit 0552dfe5373dfb5d6ddc508b42272012d5e2b986 Author: Mikhail Ryzhov Date: Sun Mar 19 18:39:01 2023 +0100 Merged the latest transpose sinking changes commit 56a5e74bf40dfd748bc51cb8e51f60b61fee937e Author: Mikhail Ryzhov Date: Sun Mar 19 18:21:06 2023 +0100 Revert "Squashed commit of the following:" This reverts commit 227274e70696def4a718e65799edb3b50c643c65. commit fd8effeef50b5cdca87bc33749f5b9cbe40fb48c Author: Mikhail Ryzhov Date: Sun Mar 19 18:17:25 2023 +0100 Squashed commit of the following: commit f1b49907a34c94ca91fad643e8949d2ae38b2f44 Author: Mikhail Ryzhov Date: Fri Mar 17 15:44:24 2023 +0100 Removed unnecessary transposes commit e57f26cf775d74a61d6e505f785211bdf2577405 Author: Ilya Lavrenov Date: Thu Mar 9 12:32:02 2023 +0400 Fixed PT FE compilation with clang on macOS (#16173) commit 3461b52d79f7895df554e7ee023ae7a6448e7b42 Author: Mateusz Bencer Date: Thu Mar 9 07:22:06 2023 +0100 [ONNX FE] Improved a method of operators registration (#15990) * initial version of implementation * styles applied * fixed and registration * add more unit tests * fixed and in legacy opset * review remarks * refactor of version name range commit 1044df5afa63a052750647f57202ce8b7da1906b Author: Jade Cho Date: Thu Mar 9 14:35:31 2023 +0900 [GPU] Fix stable diffusion failure (#16052) * [dGPU] Enable stable diffusion + Prevent to fuse swish into oneDNN reorder. + Makes concat explicitly if batch size is greater than 1 and the siblings are oneDNN impl. commit da1c5cb763b301b050f3f52f362e172c1a42758b Author: Andrew Kwangwoong Park Date: Thu Mar 9 08:36:43 2023 +0900 [GPU] Added shape agnostic Pad kernel implementation (#16160) Signed-off-by: Andrew Park commit 03b96e1d3b41ddca01de7f4117836e5708bd0b7f Merge: ca9e0f6d41 c3ecce0a7e Author: Mikhail Ryzhov Date: Fri Mar 17 11:18:09 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit ca9e0f6d41b95e1653d07c03684efb170d856429 Author: Mikhail Ryzhov Date: Fri Mar 17 11:14:36 2023 +0100 Fixed validator of 1D convolution commit c3ecce0a7ea2944b42290c21535b4600a406a1ce Author: Evgeny Kotov Date: Thu Mar 16 19:03:10 2023 +0100 fix conditions on mvn and slice commit a6f920ed468943a1c669fdff8b8b0217281ee302 Author: Evgeny Kotov Date: Thu Mar 16 17:43:35 2023 +0100 fix tests with Slice commit 64b1fa67f5a0ac821d1af5cb132cfd0575041aed Author: Evgeny Kotov Date: Thu Mar 16 17:33:38 2023 +0100 fix debug commit ca122e890e1f1590655e9e776d4c858dc3433890 Author: Evgeny Kotov Date: Wed Mar 15 16:14:49 2023 +0100 move RemovePermutationsNHWCToNCHWPass under is_ngraph_passes_used commit ffa21d987b5f7bc7d374e825ffa6bf4dff7679eb Author: Mikhail Ryzhov Date: Wed Mar 15 13:02:12 2023 +0100 Removed ConvIE code commit 23ca385ba601a06985ea218e53c5a05cdd3b9b87 Merge: 2acd7c4bff 90b37d771b Author: Mikhail Ryzhov Date: Wed Mar 15 11:47:57 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 2acd7c4bff4422c95f6b8fb511287110ceb8e99d Author: Mikhail Ryzhov Date: Wed Mar 15 11:45:46 2023 +0100 Disabled sinking for networks without Convolutions commit 90b37d771b9cb9df8d0e1a5d72cb7acc8d01634f Author: Evgeny Kotov Date: Tue Mar 14 14:30:37 2023 +0100 fix gather_sinking_transpose_reshape - check if flatten/unflatten the last dimension commit 41e1b72ba9d44a8bd1142735a22feef39e816fcc Author: Evgeny Kotov Date: Mon Mar 13 18:26:27 2023 +0100 fix remove output Gather commit 1949dc779a2261686a266bf13fa558078dcce83c Merge: 30db0ee2ce b6fe16e051 Author: Evgeny Kotov Date: Mon Mar 13 18:13:29 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 30db0ee2ceacf6fb5692421c5647e9ef27794dfb Author: Evgeny Kotov Date: Mon Mar 13 18:12:55 2023 +0100 fix: add GatherSinkingTransposeReshape commit b6fe16e051c62cf1b8a1ddf511b2a791587578fc Author: Mikhail Ryzhov Date: Mon Mar 13 17:23:54 2023 +0100 Reverted C++17 code commit fee42e07f7b6861894541cf1d552f82727837a5d Merge: 95330967fc 98ead2d3bc Author: Evgeny Kotov Date: Mon Mar 13 16:36:36 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 95330967fc0c39377e33973adeef8c441bb4c905 Author: Evgeny Kotov Date: Mon Mar 13 16:36:33 2023 +0100 add ReshapeTransposeSubstitute commit 98ead2d3bcc971585d74532ae1263cd7eba8f5b4 Author: Mikhail Ryzhov Date: Mon Mar 13 16:33:40 2023 +0100 Fixed FQ connected to Transpose and Inputs commit 6cddb6389e2522c5d9abe262d0a580c01cab4bf8 Author: Mikhail Ryzhov Date: Mon Mar 13 16:33:00 2023 +0100 Added add with convolution fusion commit dc705e330f8f23ead78d2e4026eff118028d3dc3 Author: Ivan Date: Fri Mar 10 19:54:19 2023 +0400 TransposeSinking: add support for Slice op commit aba59904c9d95334d6dbea1bdc61971556236d75 Merge: 3dd79763a4 9844f33807 Author: Evgeny Kotov Date: Fri Mar 10 15:35:00 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 9844f33807c0927b813f90a784a77ee7bd725b57 Author: Mikhail Ryzhov Date: Thu Mar 9 14:03:12 2023 +0100 Removed debug commit 3dd79763a4ddc31f7a1838070acf341b610c75ea Merge: cf3154b4f5 8e010d2cba Author: Evgeny Kotov Date: Wed Mar 8 18:27:05 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 8e010d2cbab5c338ef877e82641b1e813c88bea0 Author: Mikhail Ryzhov Date: Wed Mar 8 18:26:04 2023 +0100 Corrected condition of unsupported permute commit cf3154b4f5b0d1f793d1b96e97dec6e440b4fd93 Merge: 7c0b042e97 95dcc37315 Author: Evgeny Kotov Date: Wed Mar 8 18:07:37 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 95dcc3731577db62e42df1c71f2d97068809223e Author: Mikhail Ryzhov Date: Wed Mar 8 18:07:15 2023 +0100 Removed legacy TransposeWeightsFromNCHWToNHWCPass commit 7c0b042e9763a7382b9ba2706be00681a81f49f6 Author: Evgeny Kotov Date: Wed Mar 8 17:58:02 2023 +0100 remove debug commit 06730afd016185154fbf6751e00da3673b9ce46b Author: Mikhail Ryzhov Date: Wed Mar 8 17:57:57 2023 +0100 Removed debug code p.2 commit 37660a9721d103144d88d2429ad0f399d20aef32 Author: Mikhail Ryzhov Date: Wed Mar 8 17:51:36 2023 +0100 Removed debug code commit aa8d2abe3a5e169fe9ebb48fe94845bb4aa1b9f1 Merge: 02974d7a12 87194dab68 Author: Mikhail Ryzhov Date: Wed Mar 8 17:50:28 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 02974d7a127caf86a4d46701734cb00fa36439ff Author: Mikhail Ryzhov Date: Wed Mar 8 17:50:20 2023 +0100 Removed legacy parts commit 87194dab685aa31fe40624381cecfb40f604a6c8 Merge: 225e39d499 235a14301d Author: Evgeny Kotov Date: Wed Mar 8 17:31:21 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 225e39d499ed34b7fcd5097c2bfdc86d0d56dc86 Author: Evgeny Kotov Date: Wed Mar 8 17:31:19 2023 +0100 fix convert_function_to_cnn_network.cpp not using friendly names; fix transpose_nchw update last node name commit 235a14301d1be714e7e0ca074a74ed30120cd327 Author: Mikhail Ryzhov Date: Wed Mar 8 17:17:23 2023 +0100 Fixed validation of gna convolution commit dafd9191f52d61b713bb4eec95d63f0a8b0dacfb Merge: cf0e43734b 3a63cb5ad8 Author: Evgeny Kotov Date: Tue Mar 7 16:27:18 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit cf0e43734ba76a7324a1f0975077b798767f6445 Author: Evgeny Kotov Date: Tue Mar 7 16:26:45 2023 +0100 fix transpose_nchw friendly names set commit 3a63cb5ad8ac449c909d38743650ef5c514d46c4 Author: Mikhail Ryzhov Date: Tue Mar 7 15:41:17 2023 +0100 Extended unsupported transpose condition commit 8b3171c2e60bbdb2ada1765d12e67e8039e17005 Merge: 3385605a9e 69f8479260 Author: Evgeny Kotov Date: Mon Mar 6 19:53:01 2023 +0100 Merge branch 'gna_layout_debug' of https://github.com/evkotov/openvino into gna_layout_debug commit 3385605a9e08fc32ab0cbd5de702cb736229d43a Merge: 8d4fa609a6 d3493c48ae Author: Evgeny Kotov Date: Mon Mar 6 19:43:08 2023 +0100 Merge branch 'gna_convolution_maxpool' into gna_layout_debug commit 8d4fa609a67230c89c758dc3aebf22859dcc9498 Merge: 506128f16c 52b9332306 Author: Evgeny Kotov Date: Mon Mar 6 19:42:53 2023 +0100 fix merge commit 52b93323062f5d5938af2bf8341a44092380b81b Author: Evgeny Kotov Date: Mon Mar 6 19:41:52 2023 +0100 fix build commit 0e2629313690bb97dde765b10d075cba2cf6278a Author: Evgeny Kotov Date: Thu Mar 2 14:59:07 2023 +0100 add binary and gather_fuse commit 0ec73f0239e21d25233cd676818f2e873fdf2f81 Author: Evgeny Kotov Date: Wed Feb 22 13:45:19 2023 +0100 clang commit 28b168c2b4357365bad64983b6f59202726c0a9e Author: Evgeny Kotov Date: Wed Feb 22 13:43:36 2023 +0100 remove debug commit fa2a06fb15b5288746deb3b8947b99cdbba4bba7 Author: Evgeny Kotov Date: Wed Feb 22 13:41:39 2023 +0100 add descrition commit a09bb7f84befe432e7b3563bb213104a69e4f47e Author: Evgeny Kotov Date: Wed Feb 22 13:25:54 2023 +0100 fix transformations restrictions commit e723ac91ad3b3821248f2b00008d1ef91678a8dc Author: Evgeny Kotov Date: Wed Feb 22 12:23:14 2023 +0100 refactor commit 1cba14e6ed2eb25c62a3987516d3cbdb989b4966 Author: Evgeny Kotov Date: Wed Feb 22 11:10:31 2023 +0100 rewrite backward commit d127fe60a7af3f3f99c5cca9b4f293e29fa39483 Author: Evgeny Kotov Date: Tue Feb 21 19:30:51 2023 +0100 forward sinking - added support 3d commit de447274aa81cd594b36842bff7838fd3d0131c8 Author: Evgeny Kotov Date: Tue Feb 21 17:07:16 2023 +0100 fix build errors unit tests commit b09cf32ccfbc1706c3107273819557adfe3adcef Author: Evgeny Kotov Date: Tue Feb 14 14:29:01 2023 +0100 cleanup tests commit 8bb808756cc8d7f0571c35ccd78bda964d37f3c9 Author: Evgeny Kotov Date: Tue Feb 14 14:16:15 2023 +0100 wrote unit tests draft commit b47571a3cd8a815ac4a84bb140d28304eed9629b Author: Evgeny Kotov Date: Mon Feb 13 19:52:32 2023 +0100 implement transformation for 2d case commit 9a5fcd38b0162bbae73f49c482d1c125fdfe3181 Author: Evgeny Kotov Date: Thu Feb 9 20:40:45 2023 +0100 added inital transformation commit 5e812990b9c8eaafa2b25a55607f8b1fb41f4eff Author: Evgeny Kotov Date: Wed Mar 1 19:47:05 2023 +0100 add unit tests; fix commit 01dc4766ead37a455808a7b3b42a849c850144a5 Author: Evgeny Kotov Date: Wed Mar 1 13:57:34 2023 +0100 initial commit 2c24d97729d93dfc79d26d442e3e4f592ad0614c Author: Evgeny Kotov Date: Tue Feb 21 13:36:35 2023 +0100 fix year commit 879f9e3d0ab115ef1a27e709c0aad4a5ce883f30 Author: Evgeny Kotov Date: Tue Feb 21 13:29:05 2023 +0100 add docs commit 030b2e4fdba826160fa45d16f9ba295c9bebc5ed Author: Evgeny Kotov Date: Mon Feb 20 18:58:55 2023 +0100 cleanup commit 97ed5403ea2854064c5817edca11266106b06b95 Author: Evgeny Kotov Date: Mon Feb 20 18:52:49 2023 +0100 clang fixes + remove unneeded functions commit 4411e6ffbad5f63ce592025785127dda277fe70d Author: Evgeny Kotov Date: Mon Feb 20 18:50:03 2023 +0100 fix unit tests execution commit 0483be0d6a31f18dfddfa1bca41ea75a833c0f03 Author: Evgeny Kotov Date: Mon Feb 20 18:33:03 2023 +0100 initial commit 114314b2a31112bc871b6f0c37568e4f177e9448 Author: Evgeny Kotov Date: Tue Feb 28 13:52:00 2023 +0100 initial commit d3493c48ae56723dead05d7135d177b9863b3229 Author: Evgeny Kotov Date: Mon Mar 6 19:38:35 2023 +0100 fix errors after rebase commit 141a77b3934beb912bcfc1aa19d2018cb11dab8f Author: Evgeny Kotov Date: Tue Feb 28 13:27:52 2023 +0100 initial commit 69f8479260960c8d9e431ac1d4261264e205fc43 Author: Mikhail Ryzhov Date: Mon Mar 6 17:42:13 2023 +0100 Removed debug switch commit a4c43c40ee42c0a025eb9bef7a5ae933245f7c96 Author: Mikhail Ryzhov Date: Mon Mar 6 16:47:38 2023 +0100 Fixed unit tests build commit 506128f16c96d2fffe586e6095a98bb87033cf18 Merge: 4f2b13f34f 451772350c Author: Mikhail Ryzhov Date: Mon Mar 6 16:41:01 2023 +0100 Merge branch 'feature/extract_gather_transpose' Enabled transformations to remove Transpose/Extract layers commit 4f2b13f34f8ff723226c82f9f8d13e389e989301 Merge: 8e5ca732de ba77c7d15b Author: Mikhail Ryzhov Date: Mon Mar 6 16:38:17 2023 +0100 Merge branch 'tests/bacward_compatibility' import/export tests commit 8e5ca732dec3b14a87976e8108e587e4acce0da2 Merge: cab1b42e38 919a7b67bf Author: Mikhail Ryzhov Date: Mon Mar 6 16:35:35 2023 +0100 Merge branch 'cpu_execution' Preprocessing on CPU using ngraph commit ba77c7d15bc2711f22c6668a49028ccfccaeb008 Merge: 86e1b68d84 cf8dccaedb Author: Mikhail Ryzhov Date: Mon Mar 6 16:27:46 2023 +0100 Merge branch 'master' into tests/bacward_compatibility commit 451772350c439561dfc4909b22fbafcd47f66011 Merge: c7cfb95728 cf8dccaedb Author: Mikhail Ryzhov Date: Mon Mar 6 16:22:20 2023 +0100 Merge branch 'master' of https://github.com/mryzhov/openvino into feature/extract_gather_transpose commit cab1b42e38868c5ded27c76c3530917cea7dbae5 Author: Evgeny Kotov Date: Mon Mar 6 15:39:12 2023 +0100 fix utils StridedSlice to be sinkable commit 849f651f455ae8d75069b058de2f2419c30c9918 Author: Evgeny Kotov Date: Mon Mar 6 15:24:10 2023 +0100 Ivan implementation commit 9fa205e9e60a8de36edba5b2e4ef05d48c56846a Author: Evgeny Kotov Date: Fri Mar 3 18:54:10 2023 +0100 initial commit e40497e9c100e3d0e11b6f03d928a8326fb1626b Author: Evgeny Kotov Date: Fri Mar 3 15:18:20 2023 +0100 add new transformations to pipeline commit c39c76bc19a1564816d8d9d1c586b3fdc09a8294 Author: Evgeny Kotov Date: Thu Mar 2 14:59:07 2023 +0100 add binary and gather_fuse commit ac37d4aa73f5491f9054c0e5228d01c477a980bc Author: Evgeny Kotov Date: Thu Mar 2 14:38:43 2023 +0100 initial commit 2d5383d415346d2c6ef460b502e2e53aed6be5f8 Author: Evgeny Kotov Date: Wed Mar 1 19:47:05 2023 +0100 add unit tests; fix commit 668da966b36d044fb53d29588f3aca3b63907e17 Author: Evgeny Kotov Date: Wed Mar 1 13:57:34 2023 +0100 initial commit 3e881d1284f5fbf22219b0e2e935a0b72eaec886 Author: Evgeny Kotov Date: Tue Feb 28 13:52:00 2023 +0100 initial commit c067aec546a4997d7ad84fc4689796aad30d62a9 Author: Evgeny Kotov Date: Wed Feb 22 13:45:19 2023 +0100 clang commit 4fb2f54fd0b86cc972396958019237f48cf19178 Author: Evgeny Kotov Date: Wed Feb 22 13:43:36 2023 +0100 remove debug commit 31776582f9e9934bdcfa3cd24381d90719ce6e10 Author: Evgeny Kotov Date: Wed Feb 22 13:41:39 2023 +0100 add descrition commit 20e390859b9757d1b35c7d3f16b06814a39248ce Author: Evgeny Kotov Date: Wed Feb 22 13:25:54 2023 +0100 fix transformations restrictions commit b1cd65d75ff061f9e4ad69ea174fe37e321073d2 Author: Evgeny Kotov Date: Wed Feb 22 12:23:14 2023 +0100 refactor commit dab693e2b2c859c53ea99364b1721354729185f1 Author: Evgeny Kotov Date: Wed Feb 22 11:10:31 2023 +0100 rewrite backward commit d33eafcce3ccdf72c46d33216ef1e80645e6a12e Author: Evgeny Kotov Date: Tue Feb 21 19:30:51 2023 +0100 forward sinking - added support 3d commit 8676c2a9ce707d370892d1514f1eb8309ee67da6 Author: Evgeny Kotov Date: Tue Feb 21 17:07:16 2023 +0100 fix build errors unit tests commit 030dab30945018ef6c91879d6c0a034a6e5d3783 Author: Evgeny Kotov Date: Tue Feb 14 14:29:01 2023 +0100 cleanup tests commit 5dfba630ac973a96b27aa294dc0e090d8fce8b4c Author: Evgeny Kotov Date: Tue Feb 14 14:16:15 2023 +0100 wrote unit tests draft commit ae63a5aacc9467de3d74801dd61a26262998f686 Author: Evgeny Kotov Date: Mon Feb 13 19:52:32 2023 +0100 implement transformation for 2d case commit 23c19be01ea230f8e8ff655e58c6c0b9b8ac70ea Author: Evgeny Kotov Date: Thu Feb 9 20:40:45 2023 +0100 added inital transformation commit d69e88c2d2e8354bb3f3e11c24d1ab586eb12401 Author: Evgeny Kotov Date: Tue Feb 28 13:27:52 2023 +0100 initial commit 82e3f0ed4d0421aec686005a7a4e46de6f2499ac Author: Evgeny Kotov Date: Tue Feb 21 13:36:35 2023 +0100 fix year commit b4eb780e588ff12f98277586f5c1da2a22597f55 Author: Evgeny Kotov Date: Tue Feb 21 13:29:05 2023 +0100 add docs commit fd987b0652856af50463ed5952eec24478bb772b Author: Evgeny Kotov Date: Mon Feb 20 18:58:55 2023 +0100 cleanup commit c852d051946312becae279e25bf4b972be6b1556 Author: Evgeny Kotov Date: Mon Feb 20 18:52:49 2023 +0100 clang fixes + remove unneeded functions commit aa3cc35161104fe568a3301cfe6bd7922f3e5294 Author: Evgeny Kotov Date: Mon Feb 20 18:50:03 2023 +0100 fix unit tests execution commit c4dd7246e13c154e6e1b3da72768cf794c54df9f Author: Evgeny Kotov Date: Mon Feb 20 18:33:03 2023 +0100 initial commit 919a7b67bfb43ff9716fde454cc7fa64308de8af Merge: 8df3c54eb8 cf8dccaedb Author: Mikhail Ryzhov Date: Mon Mar 6 16:16:12 2023 +0100 Merge branch 'master' of https://github.com/mryzhov/openvino into cpu_execution commit c7cfb957280e39f3a13c93a0015cd912e594e98e Author: Mikhail Ryzhov Date: Mon Mar 6 16:14:29 2023 +0100 clang formatted commit 6a9b1974992053318d122ddf7b2541069486a36e Author: Mikhail Ryzhov Date: Mon Mar 6 15:53:44 2023 +0100 clang fixes commit 60cbd4d41267c9f2146bb1e13a56c05586e623dd Author: Mikhail Ryzhov Date: Mon Mar 6 15:51:29 2023 +0100 Excluded gna supported trasposes commit b23bbc10a65ebcebcc0acc7298c124c7ddfb5a97 Merge: 084f147210 716f020956 Author: Mikhail Ryzhov Date: Mon Mar 6 11:47:34 2023 +0100 Merge branch 'feature/extract_gather_transpose' of https://github.com/mryzhov/openvino into feature/extract_gather_transpose commit 084f1472104e8a767483646856a54b50af4af408 Author: Mikhail Ryzhov Date: Mon Mar 6 11:47:29 2023 +0100 Fixed double transposition commit 716f020956fe249672b0aea6c3bd30a081cfca6d Merge: 86ea8cb7dc 07f287e362 Author: Mikhail Ryzhov Date: Tue Feb 28 16:55:55 2023 +0100 Merge branch 'master' into feature/extract_gather_transpose commit 86ea8cb7dc2e88ffb40cf17dfa8de28af4144814 Author: Mikhail Ryzhov Date: Tue Feb 28 16:12:15 2023 +0100 clang fixes commit 38e69687943634430b77ebf2059771c1b13f5d96 Author: Mikhail Ryzhov Date: Tue Feb 28 12:23:07 2023 +0100 Added tests commit b5bda65d1b67c9d5a3d2a81cc6c8a0e3e108bc87 Author: Mikhail Ryzhov Date: Tue Feb 28 12:22:47 2023 +0100 fixed compile error commit 7815caa8e45d7498d9c56bcb2443a6ef6762da86 Author: Mikhail Ryzhov Date: Tue Feb 28 11:06:39 2023 +0100 Init commit 4e4da5b0097ecb055e1faf118931a148842a07e4 Author: Mikhail Ryzhov Date: Thu Feb 23 10:24:57 2023 +0100 Gather transformation commit 8df3c54eb8a132f99e7a579269db57478ff738e3 Merge: e0e80f9dd8 98392a043b Author: Mikhail Ryzhov Date: Wed Feb 22 17:04:55 2023 +0100 Merge branch 'master' into cpu_execution commit e0e80f9dd886204768a129eb426b1c6ec1a114c3 Author: Mikhail Ryzhov Date: Wed Feb 22 14:56:49 2023 +0100 WA I16->F16 commit 1d6319c257bd7d6d99e952286b86c3d8e05bcf00 Author: Mikhail Ryzhov Date: Tue Feb 21 15:50:29 2023 +0100 Reverted test commit 86e1b68d8421fbf0196e80f33a65a03a79d2b626 Merge: 9871d61042 94b64fed79 Author: Mikhail Ryzhov Date: Tue Feb 21 12:28:11 2023 +0100 Merge branch 'master' into tests/bacward_compatibility commit cd2c75cbd35975a8b3c93b8001dc38f6fab38f46 Author: Mikhail Ryzhov Date: Tue Feb 21 12:23:52 2023 +0100 fixed static build commit 290b592f4ace79d3bbff2906186481bfd5e267a0 Merge: d63cfcf774 94b64fed79 Author: Mikhail Ryzhov Date: Tue Feb 21 12:01:38 2023 +0100 Merge branch 'master' into cpu_execution commit d63cfcf7745652cfdfd38211ae3565153860a018 Author: Mikhail Ryzhov Date: Tue Feb 21 10:55:52 2023 +0100 clang format commit 71fedeef5d9c12b6bfe95e8ec3d2d6686d1619c6 Author: Mikhail Ryzhov Date: Tue Feb 21 10:30:25 2023 +0100 Revert "backward tests" This reverts commit 05dacd1a51a8756880e49523138af9b14245e262. commit 036fb95e79307c90e2f07add88683f47e5d0a857 Author: Mikhail Ryzhov Date: Mon Feb 20 16:07:52 2023 +0100 backward tests commit ed6b8d5b0da6f4dde4489681775cc5a26af0bc13 Author: Mikhail Ryzhov Date: Mon Feb 20 11:38:38 2023 +0100 reset gather_transformation.cpp to master commit 64c7f4e963e439151252d7d339baadd7d2722581 Author: Mikhail Ryzhov Date: Mon Feb 20 11:36:26 2023 +0100 reverted commit 9af3771cc31d61aa1eb09053c56625aa7e7c5927 Author: Mikhail Ryzhov Date: Mon Feb 20 11:31:59 2023 +0100 removed changes in gather commit d0a23572b5fad9176e58b816b0ab2ca0697119ff Author: Mikhail Ryzhov Date: Mon Feb 20 11:28:48 2023 +0100 Revert "Added backward compatibility tests" This reverts commit afdd7afe72df88c96593f9f5b9bbfaaf222cec63. commit a504e700fcda8ada2a4753b71dd25b517951a47a Author: Mikhail Ryzhov Date: Mon Feb 20 11:25:00 2023 +0100 Added trasposition check commit 560df30526beb7e5da57f8f2c42dbc4e63029da4 Author: Mikhail Ryzhov Date: Thu Feb 16 18:32:25 2023 +0100 Removed Gather transformation commit 2c5b99d224df8acf39330483065e828de46af03b Author: Mikhail Ryzhov Date: Thu Feb 16 15:30:32 2023 +0100 Added backward compatibility tests commit e4935d02f5850b2f526412b0c30ee650f8175343 Author: Mikhail Ryzhov Date: Mon Feb 13 21:14:29 2023 +0100 compile warnings commit 86a36411027aa7aba97784c261ffcb64dd2ff92f Author: Mikhail Ryzhov Date: Mon Feb 13 18:14:21 2023 +0100 clang formatting commit 308b239302c6ce0186cb95bfc31ccfd5122b1613 Author: Mikhail Ryzhov Date: Mon Feb 13 17:24:51 2023 +0100 Fixed merge issues commit 94818a4de96c068241b285858bb9317d20c13c94 Author: Mikhail Ryzhov Date: Thu Feb 9 16:39:47 2023 +0100 passed all the tests commit fa5e3740e2d3f961ade7b6b894d11d23c549a4d6 Author: Mikhail Ryzhov Date: Tue Feb 7 13:02:21 2023 +0100 Fixed precison in gather transformation commit f0a70f054b251999d36b3291cd90a2c9e63e5f17 Author: Mikhail Ryzhov Date: Tue Feb 7 13:01:43 2023 +0100 Added the new export version commit cef818c7a2e0a22fdfd215576f60975070debebd Author: Mikhail Ryzhov Date: Tue Feb 7 12:58:00 2023 +0100 Support of legacy transposes commit e71e476dd5c2feb2f699987d1dbade1271a45e88 Author: Mikhail Ryzhov Date: Thu Jan 26 16:47:41 2023 +0100 Pre_post_process init commit e1d297092c952fa9ee218b056632964a8941d2ec Author: Evgeny Kotov Date: Thu Jan 19 14:52:02 2023 +0100 fix after rebase commit 45ab28de3aa6d6de42c9378a2952a1dbc23d3ba9 Author: Evgeny Kotov Date: Wed Nov 23 19:10:24 2022 +0100 remove GatherIESubstitute transformation as not needed commit 4cb2b0aa3301ee68a0204cf3723a6465951626e1 Author: Evgeny Kotov Date: Wed Nov 23 19:08:57 2022 +0100 fix funcitional test commit 981d086f7f327f7b6665b6076da4d5aaff36be2e Author: Evgeny Kotov Date: Tue Nov 22 14:23:47 2022 +0100 fix precision; left bug output EXACT commit 3cf71e0de1a47ac771d5611014d8e7e109168043 Author: Evgeny Kotov Date: Fri Nov 18 18:45:12 2022 +0100 fixes commit c69d57f1f3b52dfbf6c68279353e4ca95eb26648 Author: Evgeny Kotov Date: Fri Nov 18 17:55:35 2022 +0100 fix functional test commit 1b540338910e2ad17f21ba7d71c098877dadfa03 Author: Evgeny Kotov Date: Mon Nov 14 17:51:20 2022 +0100 add gather remove commit d7bff1ffa868b41f340cd17e66548d630b0822c2 Author: Evgeny Kotov Date: Mon Nov 14 16:11:44 2022 +0100 initial commit 9871d610423568a0ec6887195251f9bfc00c53d8 Author: Mikhail Ryzhov Date: Tue Feb 21 11:10:38 2023 +0100 Fixed build of deprecated tests commit cbf5246c1ada391d786d88956e0629d7fb08aeac Author: Mikhail Ryzhov Date: Tue Feb 21 10:46:15 2023 +0100 clang format commit c34f81b899989bb96a8c59bcaff8df0186a84208 Author: Mikhail Ryzhov Date: Tue Feb 21 10:28:33 2023 +0100 Migrated the deprecated backward compatibility tests to the new infra commit bc1dd9d3020ed33dc0c6ae999bced96de5f95390 Author: Mikhail Ryzhov Date: Sun Mar 19 18:15:21 2023 +0100 Squashed commit of the following: commit a56a0768f10b0e9f0b042d01884d1b531fb4d416 Author: Tikhonov Ivan Date: Fri Mar 17 15:48:23 2023 +0000 remove TransposeSinking from MOC commit 430bdbec35d9f0cc7720f598465573bcbd8d84a3 Author: Tikhonov Ivan Date: Fri Mar 17 15:39:22 2023 +0000 delete debug serialize commit a40658e3697cff4601f325f1d6b8fd6640a8e08d Merge: 346796af9c cf70ced2a9 Author: Tikhonov Ivan Date: Fri Mar 17 15:33:46 2023 +0000 Merge branch 'itikhono/ts/slice' of https://github.com/itikhono/openvino into itikhono/ts/slice commit 346796af9ca99b6a29c084b55687bc05a1953762 Author: Tikhonov Ivan Date: Fri Mar 17 15:33:27 2023 +0000 fix TSSqueeze/TSUnsqueeze transformations commit cf70ced2a9e4b1cef0abbf9f5c50ce5553ed7ca5 Merge: 7a6988a4a6 a9bd5f741d Author: Ivan Tikhonov Date: Fri Mar 17 13:12:18 2023 +0400 Merge branch 'master' into itikhono/ts/slice commit 7a6988a4a665615e58910f3080ae2a4f8085067d Author: Tikhonov Ivan Date: Fri Mar 17 08:50:15 2023 +0000 codestyle commit 849dc7076343fc03809df1485f1a0ea7ff297edf Author: Ivan Date: Fri Mar 17 16:32:45 2023 +0400 refactoring commit 958f000e0210f0932c2b66dd30958db5436b8d2b Author: Ivan Date: Fri Mar 17 16:20:06 2023 +0400 Added TSSlice transformation to TSGeneral, created TransposeSinkingGeneral alias in ov::pass namespace commit 83ab2cc5f691655a90e795513b101cddff6eb3cc Merge: 1f8fdfb353 88ddbb2437 Author: Ivan Date: Fri Mar 17 16:09:35 2023 +0400 Merge branch 'itikhono/ts/slice' of https://github.com/itikhono/openvino into itikhono/ts/slice commit 1f8fdfb353464989aa0ecf779ec7a03afd61ac32 Author: Ivan Date: Fri Mar 17 16:06:15 2023 +0400 fix warnings commit 66d16ae45e7a242938226d4743148fdafa76b9c7 Author: Ivan Date: Fri Mar 17 00:07:44 2023 +0400 fix minor mistakes commit 1ac7690d42894219201e097ed232e1ed70572d8e Merge: f1dc3702f1 6ffa8da922 Author: Ivan Date: Fri Mar 17 00:02:39 2023 +0400 Merge remote-tracking branch 'upstream/master' into itikhono/ts/slice commit f1dc3702f14e377af2e20a3452fe0063f08d4c89 Author: Ivan Date: Thu Mar 16 23:48:10 2023 +0400 TSReduction refactoring, move Unsqueeze/Squeeze transformations to separate files, added limited support for Reshape op + tests commit 88ddbb24373151f8f956f4266da2996d254e928d Author: Tikhonov Ivan Date: Thu Mar 16 16:16:59 2023 +0000 codestyle commit 2bc1334f65d6eb60da7ba121fb19e142035a78d2 Merge: ce84ce24ec 4b9e048e18 Author: Ivan Date: Wed Mar 15 17:10:30 2023 +0400 Merge branch 'itikhono/ts/refactoring' into itikhono/ts/slice commit ce84ce24ecc2f208b1f8f814683284792eb1c797 Merge: 6e6361f83a 36c18e29a8 Author: Ivan Date: Wed Mar 15 16:25:41 2023 +0400 Merge remote-tracking branch 'upstream/master' into itikhono/ts/slice commit 4b9e048e189655d2b2c0fb9e881e889e70605b74 Author: Ivan Date: Tue Mar 14 22:54:33 2023 +0400 resolve merge conflicts commit 169a72221248c13cefb2ae96e1e0b2eb9f8bf990 Merge: ee42aaf13b 596036a2db Author: Ivan Date: Tue Mar 14 22:48:22 2023 +0400 Merge remote-tracking branch 'upstream/master' into itikhono/ts/refactoring commit ee42aaf13b8059985109bb158ee12f78198ecc4c Author: Tikhonov Ivan Date: Tue Mar 14 14:43:50 2023 +0000 codestyle commit b3342f7c4691e503287bb3c578dcd2938d2e3c5c Author: Ivan Date: Tue Mar 14 22:30:09 2023 +0400 TransposeSinking refactoring: class names, namespaces commit e7759e1fa08dccaecd65435636580a35c329736d Author: Ivan Date: Tue Mar 14 21:59:28 2023 +0400 TransposeSinking Rafactoring part2: move the transformations to a separate folder, align namespaces commit 7b91ac1e6b5309b3b870517e950f57ab4f656667 Author: Ivan Date: Tue Mar 14 17:59:12 2023 +0400 fix a warning commit d284ac1b7a07f712ce5ff72e9a97e6e12b18de22 Author: Ivan Date: Tue Mar 14 17:48:46 2023 +0400 Add descriptions to the transformations, add additional checks commit 6e6361f83a4a7320dd992191521414986b20b95b Merge: 54bf0444e4 3a96e06d4c Author: Ivan Date: Tue Mar 14 16:20:34 2023 +0400 Merge remote-tracking branch 'upstream/master' into itikhono/ts/slice commit 54bf0444e41f2bbc9df7a8770df04bf730f54aff Author: Ivan Date: Fri Mar 10 19:54:19 2023 +0400 TransposeSinking: add support for Slice op commit a47a18cf55ef2bf65996c5057f4c4531a9ec5e8b Author: Ivan Date: Thu Mar 9 22:29:37 2023 +0400 Add new tests for Unsqueeze/Squeeze; refactoring; remove debug code commit e13d0e589fa58ce19e242cae525579196f21caf7 Merge: fa8e81f0f1 3d52fc843a Author: Ivan Tikhonov Date: Thu Mar 9 01:43:47 2023 +0400 Merge branch 'master' into itikhono/ts/fix_performance_issues commit fa8e81f0f1c2a82b65e3b8e97e0238aab5477e68 Author: Ivan Date: Thu Mar 9 04:20:08 2023 +0400 Fix warning as error on Windows commit c77e98caf63b8ef3c168b9ba221ae84ed1f98e8d Merge: 99192feb02 3eeaf7f9bd Author: Ivan Date: Thu Mar 9 02:42:47 2023 +0400 Merge branch 'itikhono/ts/fix_performance_issues' of https://github.com/itikhono/openvino into itikhono/ts/fix_performance_issues commit 99192feb0265e49eb565757ccce308eb0a621215 Author: Ivan Date: Thu Mar 9 02:42:37 2023 +0400 fix unary tests commit 11b500953dc6b168363ce2c04460feb660f6c41f Merge: b60015f90d 3b924ca206 Author: Ivan Date: Thu Mar 9 01:33:57 2023 +0400 Merge branch 'itikhono/ts/fix_performance_issues' of https://github.com/itikhono/openvino into itikhono/ts/fix_performance_issues commit b60015f90dd6380508cfae3dce6f6651d43311af Author: Ivan Date: Thu Mar 9 01:33:46 2023 +0400 Add tests for TS backward transformations, update TransposeSinkingFuse transformation, delete StridedSlice transformation prototype + tests refactoring commit 3eeaf7f9bd773361f1cf24ea627ba76547a29eac Author: Tikhonov Ivan Date: Wed Mar 8 17:42:25 2023 +0000 codestyle commit db09fe49658e2ec74ec29e909b8f33007f2292ce Author: Ivan Date: Tue Mar 7 16:55:40 2023 +0400 fix build commit 3b924ca2065137f75aa4794eef32fc93fdbe8fdb Merge: 54b4061282 db09fe4965 Author: Tikhonov Ivan Date: Tue Mar 7 08:56:32 2023 +0000 Merge branch 'itikhono/ts/fix_performance_issues' of https://github.com/itikhono/openvino into itikhono/ts/fix_performance_issues commit 54b40612824b43916d1e2f22a1f1b75bfbd9a3f7 Author: Tikhonov Ivan Date: Tue Mar 7 08:51:48 2023 +0000 TransposeReduction: skip the case when 2nd input for Squeeze is not provided commit 176686318f51a776b4d47aec76ab4fd973c0c2a7 Author: Tikhonov Ivan Date: Tue Mar 7 07:34:40 2023 +0000 codestye commit 3c5f62c013bca98b728e6961191895a6fdbbed5a Merge: ef0e89551d 0dad7749b5 Author: Tikhonov Ivan Date: Tue Mar 7 07:33:09 2023 +0000 Merge remote-tracking branch 'upstream/master' into itikhono/ts/fix_performance_issues commit ef0e89551d2a9199d3c2de54267e5ef7519a3174 Author: Ivan Date: Tue Mar 7 15:30:22 2023 +0400 Transpose sinking tests refactoring: part 3. + Revert changes in MOC. commit d71949fd09371fa4c35bce19aa64afa1bff4bdb8 Author: Ivan Date: Mon Mar 6 18:23:40 2023 +0400 Add limited support for StridedSlice op commit 3565ff2181b87511fba2e460868055470c494c9b Author: Ivan Date: Mon Mar 6 17:45:52 2023 +0400 TransposeSinking tests refactoring: part2 commit 34c89eb962965b752b3528ee10a40015388bcc70 Author: Ivan Date: Fri Mar 3 04:34:48 2023 +0400 TransposeSinking tests refactoring: part1 commit c5991f0b0647f8f1a1d9a4dd584519f073bd8fa8 Merge: 6de1336894 caea77c132 Author: Tikhonov Ivan Date: Thu Mar 2 17:21:17 2023 +0000 Merge branch 'itikhono/ts/fix_performance_issues' of https://github.com/itikhono/openvino into itikhono/ts/fix_performance_issues commit caea77c13291240ef73b849ec889dfe7edabcf18 Merge: 199114a4c6 873d15ce1a Author: Ivan Date: Thu Mar 2 21:39:57 2023 +0400 Merge branch 'itikhono/ts/fix_performance_issues' of https://github.com/itikhono/openvino into itikhono/ts/fix_performance_issues commit 199114a4c62857718ba5c0b88068de2e091e0eb6 Author: Ivan Date: Thu Mar 2 21:39:12 2023 +0400 add include commit 6de13368944cf4baedc001018b052c63429c34b0 Author: Tikhonov Ivan Date: Thu Mar 2 17:21:02 2023 +0000 add the missed line commit 123835c86d6498abe302a7274872da864fb4ab5d Author: Ivan Date: Thu Mar 2 19:09:36 2023 +0400 Support TS for Interpolate, VariadicSplit, IsInf, IsNan, IsFinite + refactoring commit 873d15ce1a0dd05465c46378f991ffa50e3aa0e8 Author: Tikhonov Ivan Date: Thu Mar 2 13:33:40 2023 +0000 fix gna build commit 13f17d254b71dc8edd66a89cfbf30441c43566f9 Author: Tikhonov Ivan Date: Thu Mar 2 12:24:12 2023 +0000 fix TS for Interpolate + codestyle commit b769d219127883d3ca9e4a0e684f80bc67a48ac2 Author: Tikhonov Ivan Date: Thu Feb 23 17:14:30 2023 +0000 Add SpaceToBatch/BatchToSpace commit 9d8016d1e687c7e64842bab90bb3ff24ccf84c76 Author: Tikhonov Ivan Date: Thu Feb 23 17:12:54 2023 +0000 Fix validate for split, revert changes for concat, add BatchToSpace/SpaceToBatch commit 20579455b7879f33d9839155e42983e007370b53 Merge: 3baf0c7900 d9fc5bac80 Author: Tikhonov Ivan Date: Thu Feb 23 10:32:14 2023 +0000 Merge remote-tracking branch 'upstream/master' into itikhono/ts/fix_performance_issues commit 3baf0c7900116d9d1cefbd75934a62cf3c18764f Author: Tikhonov Ivan Date: Thu Feb 23 10:31:56 2023 +0000 fix node validation commit fa9fe34c16b868a32f0ba3eb35f5740616e07f4f Merge: ef6e141082 eaf368a5f5 Author: Tikhonov Ivan Date: Wed Feb 22 15:33:52 2023 +0000 Merge remote-tracking branch 'upstream/master' into itikhono/ts/fix_performance_issues commit ef6e14108232d932696a3c7798b9f11c02b58927 Author: Tikhonov Ivan Date: Tue Feb 21 14:34:26 2023 +0000 Add additional validations commit 81b9e6eece9c44c2952c4325cbb05ed9405e1c44 Author: Tikhonov Ivan Date: Mon Feb 20 13:54:27 2023 +0000 delete debug print commit 9333c1cac5fa10f3125f37b92b06f5d5219fff14 Merge: aa1aadd3c4 08293d39e1 Author: Tikhonov Ivan Date: Mon Feb 20 13:51:45 2023 +0000 Merge branch 'itikhono/ts/fix_performance_issues' of https://github.com/itikhono/openvino into itikhono/ts/fix_performance_issues commit aa1aadd3c4d7338a41df453a0a570c3898860800 Author: Tikhonov Ivan Date: Mon Feb 20 13:50:42 2023 +0000 Fix TransposeReduction, fix TransposeSinkingSplit, add unsqueeze support commit 20168b251a6cf53fea0d415fbcf15c3729422058 Author: Tikhonov Ivan Date: Fri Feb 17 07:46:12 2023 +0000 fix TransposeReduce transformations commit 08293d39e11a64afe584439a9ed8d71c45a13f2c Merge: 43ef82320f 5cc1c2c5e5 Author: Ivan Tikhonov Date: Tue Feb 14 18:11:20 2023 +0400 Merge branch 'master' into itikhono/ts/fix_performance_issues commit 43ef82320ff62048592a9c85e32d0d3bc7565a8c Author: Tikhonov Ivan Date: Tue Feb 14 14:09:25 2023 +0000 fix the issue in TransposeFuse transformation commit 6e3fcf74e2f322977c8a4ca523b15a15a353a293 Author: Tikhonov Ivan Date: Tue Feb 14 08:09:25 2023 +0000 Fix TransposeReduceBackward commit a34e3ced9ee17c1aba246f2fceb31a4de06ad3b2 Author: Tikhonov Ivan Date: Mon Feb 13 17:08:19 2023 +0000 fix ts for Concat and Reduce commit 8598d64174e0a8938481da6567523e7c243538d5 Merge: d9ea97bf4b f5bff5c087 Author: Tikhonov Ivan Date: Mon Feb 13 07:46:32 2023 +0000 Merge branch 'itikhono/ts/fix_performance_issues' of https://github.com/itikhono/openvino into itikhono/ts/fix_performance_issues commit d9ea97bf4baee13b758bbb303b71d23141b9efbb Author: Tikhonov Ivan Date: Mon Feb 13 07:45:54 2023 +0000 fix warning as error, fix tests failures commit f5bff5c087874e3d69b4326aec851a08172a2988 Merge: 1de806f9f7 b300df1be6 Author: Ivan Tikhonov Date: Sun Feb 12 21:51:00 2023 +0400 Merge branch 'master' into itikhono/ts/fix_performance_issues commit 1de806f9f788173b6012f85259605c0a4929f52c Author: Tikhonov Ivan Date: Sun Feb 12 17:48:05 2023 +0000 codestyle commit 2c48d6c5834d6c0c28a9e11a25e4475e1bfe0eef Author: Tikhonov Ivan Date: Sun Feb 12 17:47:32 2023 +0000 Resolve the performance issues in TransposeSinking transformation commit db220f11eefa677b03ace604d794639325c88463 Author: Tikhonov Ivan Date: Tue Mar 21 09:42:42 2023 +0000 delete debug code commit 8f8f0e821bd43c942fcc955ecd43edd0f3c87554 Author: Tikhonov Ivan Date: Tue Mar 21 09:41:48 2023 +0000 fix TSSqueeze/TSUnsqueeze transformations in case of Reshape op commit 981e8ad3c08e9afddfcd38f5e7fc8c1a3e46adbb Merge: a56a0768f1 c5f65eea73 Author: Ivan Date: Mon Mar 20 19:47:18 2023 +0400 Merge remote-tracking branch 'upstream/master' into itikhono/ts/slice commit a56a0768f10b0e9f0b042d01884d1b531fb4d416 Author: Tikhonov Ivan Date: Fri Mar 17 15:48:23 2023 +0000 remove TransposeSinking from MOC commit 430bdbec35d9f0cc7720f598465573bcbd8d84a3 Author: Tikhonov Ivan Date: Fri Mar 17 15:39:22 2023 +0000 delete debug serialize commit a40658e3697cff4601f325f1d6b8fd6640a8e08d Merge: 346796af9c cf70ced2a9 Author: Tikhonov Ivan Date: Fri Mar 17 15:33:46 2023 +0000 Merge branch 'itikhono/ts/slice' of https://github.com/itikhono/openvino into itikhono/ts/slice commit 346796af9ca99b6a29c084b55687bc05a1953762 Author: Tikhonov Ivan Date: Fri Mar 17 15:33:27 2023 +0000 fix TSSqueeze/TSUnsqueeze transformations commit cf70ced2a9e4b1cef0abbf9f5c50ce5553ed7ca5 Merge: 7a6988a4a6 a9bd5f741d Author: Ivan Tikhonov Date: Fri Mar 17 13:12:18 2023 +0400 Merge branch 'master' into itikhono/ts/slice commit 7a6988a4a665615e58910f3080ae2a4f8085067d Author: Tikhonov Ivan Date: Fri Mar 17 08:50:15 2023 +0000 codestyle commit 849dc7076343fc03809df1485f1a0ea7ff297edf Author: Ivan Date: Fri Mar 17 16:32:45 2023 +0400 refactoring commit 958f000e0210f0932c2b66dd30958db5436b8d2b Author: Ivan Date: Fri Mar 17 16:20:06 2023 +0400 Added TSSlice transformation to TSG… * Merge fixes * clang fixes * fix Reshape is unsupported; Transpose backward sinking case * fix functional test params * fix bug : duplicated source code in GNAGraphCompiler::PoolingPrimitive after rebase * remove legacy transformations * Fixed out of range issue * aligned memory for convolution with padding # Conflicts: # src/plugins/intel_gna/tests/functional/shared_tests_instances/subgraph_tests/const_conv_concat.cpp * clang fixes * [GNA] Limitations refactoring (#16957) * Limitations refactoring * fix CI builds/tests * changes after review * Move GraphCompiler initialization to constructor * resolve conflicts after rebase * update after review * resolve problem with double initialization for Limitations # Conflicts: # src/plugins/intel_gna/src/backend/gna_limitations.cpp # src/plugins/intel_gna/src/backend/gna_limitations.hpp # src/plugins/intel_gna/src/gna_transformations_pipeline.cpp * Rebase fixes * Removed duplicate of is_transpose_supported * Rebase fix 2 * Reduced code duplication * Clang code style * fix unit tests * Removed legacy failed tests * add gather_sinking_test * Corrected tests to produce unsupported transposes * Reverted unnecessary fix * hide deprecated warnings * clang fix * fixed concat-gather transformation * revert back ts_squeeze bugfix * remove workaround * fix build * remove concat_transpose.cpp * remove backward_compatibility.cpp test * remove debug * fix std::equal * Revert "remove debug" This reverts commit 574a3a04f34459e8b4b507bf637cad11e6230225. * remove debug * return concat_transpose with fix * rotates convolution inputs * fix after rebase * cleanup after rebase * fixes after rebase * fixes after rebase * fix after rebase GatherSinkingGeneralBackward - return back GatherSinkingSplitBackward * fix after rebase GatherSinkingGeneralBackward - return back * clang fix * windows build fix; fix rebase issue * code review fixes * clang fixes * code review fixes * code review fixes * code review fixes - rename ts_split and ts_concat files * code review fixes : move auxilary functions from pipeline to transformation helper * code review fixes -> move has_one_consumer to graph_utils * fix comparing * cleanup * code review fix - graph_compiler remove unneeded copying * code review fixes - remove unneeded code * code review fix gna_layer_info * code review fix - remove unneeded code from LoadNetwork * cleanup * update modules * code review fixes * code review fixes * code review fixes * Revert "code review fixes -> move has_one_consumer to graph_utils" This reverts commit f1a24041083b0da3c5ca34417e1789fd54e24dab. * Revert "code review fixes" This reverts commit d01b58a5b1a7a70bf16eec6f86b8dc1e50bf65c7. * revert commits * code review fixes * code review fixes - remove unneeded * code review fixes * code review fix --------- Co-authored-by: Mikhail Ryzhov Co-authored-by: Tomasz Adamowicz --- .../intel_gna/src/backend/gna_limitations.cpp | 180 ++++++++++---- .../intel_gna/src/backend/gna_limitations.hpp | 29 ++- .../intel_gna/src/common/graph_utils.hpp | 19 +- .../intel_gna/src/descriptions/gna_desc.hpp | 4 + .../src/frontend/layer_quantizer.cpp | 2 +- .../src/frontend/scale_factor_calc.cpp | 2 +- .../intel_gna/src/gna_graph_compiler.cpp | 126 +++++----- .../intel_gna/src/gna_graph_compiler.hpp | 4 + .../intel_gna/src/gna_graph_patterns.hpp | 26 -- src/plugins/intel_gna/src/gna_graph_tools.hpp | 34 +++ src/plugins/intel_gna/src/gna_plugin.cpp | 70 +----- src/plugins/intel_gna/src/gna_plugin.hpp | 17 +- .../src/gna_transformations_pipeline.cpp | 121 ++++++++- .../src/layers/gna_convolution_layer.cpp | 6 +- .../intel_gna/src/layers/gna_layer_info.hpp | 10 +- .../intel_gna/src/ops/gna_convolution.hpp | 3 + .../src/optimizer/gna_pass_manager.cpp | 230 ------------------ .../src/optimizer/gna_pass_manager.hpp | 8 - .../src/transformations/decompose_mvn.cpp | 10 +- .../fuse_conv_bias_activation.cpp | 2 +- .../src/transformations/gather_sinking.cpp | 7 + .../handle_transposes_around_matmul.cpp | 4 +- .../markup_fusable_transpose.cpp | 2 +- .../replace_gna_nhwc_layers.cpp | 2 +- .../reshape_transpose_substitute.cpp | 162 ++++++++++++ .../reshape_transpose_substitute.hpp | 34 +++ .../src/transformations/rotate_inputs.cpp | 79 ++++++ .../src/transformations/rotate_inputs.hpp | 41 ++++ .../{ts_concat.cpp => ts_concat_forward.cpp} | 4 +- .../{ts_concat.hpp => ts_concat_forward.hpp} | 0 .../{ts_split.cpp => ts_split_backward.cpp} | 2 +- .../{ts_split.hpp => ts_split_backward.hpp} | 0 .../utils/transformation_helper.cpp | 94 ++++++- .../utils/transformation_helper.hpp | 44 +++- .../engines/gna/i16_quantisation_test.cpp | 26 -- .../pass_tests/concat_transpose.cpp | 137 +++++++++++ .../single_layer_tests/convolution.cpp | 2 +- .../tests/unit/gna_memory_compact_test.cpp | 12 +- .../transformations/gather_sinking_test.cpp | 130 ++++++++++ .../gather_sinking_ts_split_test.cpp | 2 +- .../src/single_layer/convolution.cpp | 2 +- .../src/subgraph/input_conv.cpp | 2 +- 42 files changed, 1149 insertions(+), 542 deletions(-) create mode 100644 src/plugins/intel_gna/src/transformations/reshape_transpose_substitute.cpp create mode 100644 src/plugins/intel_gna/src/transformations/reshape_transpose_substitute.hpp create mode 100644 src/plugins/intel_gna/src/transformations/rotate_inputs.cpp create mode 100644 src/plugins/intel_gna/src/transformations/rotate_inputs.hpp rename src/plugins/intel_gna/src/transformations/{ts_concat.cpp => ts_concat_forward.cpp} (98%) rename src/plugins/intel_gna/src/transformations/{ts_concat.hpp => ts_concat_forward.hpp} (100%) rename src/plugins/intel_gna/src/transformations/{ts_split.cpp => ts_split_backward.cpp} (99%) rename src/plugins/intel_gna/src/transformations/{ts_split.hpp => ts_split_backward.hpp} (100%) create mode 100644 src/plugins/intel_gna/tests/functional/pass_tests/concat_transpose.cpp create mode 100644 src/plugins/intel_gna/tests/unit/transformations/gather_sinking_test.cpp diff --git a/src/plugins/intel_gna/src/backend/gna_limitations.cpp b/src/plugins/intel_gna/src/backend/gna_limitations.cpp index 884f522d0f8..7455997ad40 100644 --- a/src/plugins/intel_gna/src/backend/gna_limitations.cpp +++ b/src/plugins/intel_gna/src/backend/gna_limitations.cpp @@ -18,6 +18,7 @@ #include "gna_lib_ver_selector.hpp" #include "ie_ngraph_utils.hpp" #include "log/log.hpp" +#include "openvino/opsets/opset12.hpp" namespace std { inline std::ostream& operator<<(std::ostream& os, const std::set& t) { @@ -35,6 +36,7 @@ inline std::ostream& operator<<(std::ostream& os, const std::set(new Limitations(compile_target)); } -bool Limitations::is_transpose_2d(const std::vector& shape) { - return std::count_if(std::begin(shape), std::end(shape), [](size_t dim) { - return dim != 1; - }) == 2; -} - -bool Limitations::is_transpose_supported(const std::vector& shape) { - if (!is_transpose_2d(shape)) - return false; - auto shape_no_1 = shape; - shape_no_1.erase(std::remove(shape_no_1.begin(), shape_no_1.end(), 1), shape_no_1.end()); - size_t min, max; - std::tie(min, max) = std::minmax(shape_no_1[0], shape_no_1[1]); - return min <= 8 && max % 8 == 0 && max >= 8 && max <= kTransposeMaxSize; -} - size_t Limitations::get_min_batch_to_fit_in_buffer(InferenceEngine::DataPtr input) { auto total_size = InferenceEngine::details::product(std::begin(input->getDims()), std::end(input->getDims())); return total_size / kBufferMaxSize + 1; @@ -753,31 +739,38 @@ bool SupportedElementTypes::IsConstantTypeSupported(ov::element::Type elem_type, return true; } -bool Limitations::is_transpose_supported(const std::shared_ptr& node) { - OPENVINO_ASSERT(node, "Transpose node is empty!"); - const ov::Shape squeezed_shape = graph_utils::squeeze_shape(node->get_input_shape(0)); - const size_t min_input_dim = std::min(squeezed_shape[0], squeezed_shape[1]); - const size_t max_input_dim = std::max(squeezed_shape[0], squeezed_shape[1]); +bool Limitations::is_transpose_supported(const ov::Shape& shape) { + const ov::Shape squeezed_shape = graph_utils::squeeze_shape(shape); // GNA transpose limitations: // - supports 2d transposes only // - smaller dimension should be less or equal to 8 - // - bigger dimension should be a multiple of Limitations::kNoOfInputsDivisor - if (squeezed_shape.size() == 2 && min_input_dim <= 8 && ALIGN(max_input_dim, kNoOfInputsDivisor) == max_input_dim) { - return true; + // - bigger dimension should be a multiple of limitations::noOfInputsDivisor + if (squeezed_shape.size() == 2) { + const size_t min_input_dim = std::min(squeezed_shape[0], squeezed_shape[1]); + const size_t max_input_dim = std::max(squeezed_shape[0], squeezed_shape[1]); + if (min_input_dim <= 8 && max_input_dim % Limitations::kNoOfInputsDivisor == 0 && + max_input_dim <= kTransposeMaxSize) { + return true; + } } return false; } -bool Limitations::is_conv_supported(const std::shared_ptr& conv_ie, +bool Limitations::is_transpose_supported(const std::shared_ptr& node) { + OPENVINO_ASSERT(node, "Transpose node is empty!"); + return is_transpose_supported(node->get_input_shape(0)); +} + +bool Limitations::is_conv_supported(const std::shared_ptr& conv_gna, const InferenceEngine::Precision gna_precision, bool is_exception_allowed) { - OPENVINO_ASSERT(conv_ie, "ConvolutionIE node is empty!"); - size_t batch_size = conv_ie->input_value(0).get_shape()[0]; + OPENVINO_ASSERT(conv_gna, "GNAConvolution node is empty!"); + size_t batch_size = conv_gna->input_value(0).get_shape()[0]; if (batch_size != 1) { if (is_exception_allowed) { - THROW_GNA_EXCEPTION << "topology with layer: " + conv_ie->get_friendly_name() + - ", type: " + conv_ie->get_type_name() + ", and batch size(" + + THROW_GNA_EXCEPTION << "topology with layer: " + conv_gna->get_friendly_name() + + ", type: " + conv_gna->get_type_name() + ", and batch size(" + std::to_string(batch_size) + ") != 1 not supported"; } return false; @@ -789,15 +782,15 @@ bool Limitations::is_conv_supported(const std::shared_ptr(filter_stride_width)); return cnn2d::AbstractValidator::ValidationSuccesful(is_exception_allowed, error, - conv_ie->get_friendly_name(), - conv_ie->get_type_name()); + conv_gna->get_friendly_name(), + conv_gna->get_type_name()); }; - auto input_shape = conv_ie->input_value(0).get_shape(); - auto filter_shape = conv_ie->input_value(1).get_shape(); - if ((4 == filter_shape.size() && filter_shape[2] > 1 && filter_shape[3] > 1) || - (4 == input_shape.size() && input_shape[2] > 1 && input_shape[3] > 1)) { + auto input_shape = conv_gna->input_value(0).get_shape(); + auto filter_shape = conv_gna->input_value(1).get_shape(); + if ((4 == filter_shape.size() && filter_shape[1] > 1 && filter_shape[2] > 1) || + (4 == input_shape.size() && input_shape[1] > 1 && input_shape[2] > 1)) { pass::helper::ConvData conv_data; - pass::helper::GetConvData(conv_ie, conv_data); + pass::helper::GetConvData(conv_gna, conv_data); if (gna_convolution_layer::isMappableFrom2DTo1D(static_cast(conv_data.input_height), static_cast(conv_data.input_width), static_cast(conv_data.input_channel_count), @@ -809,7 +802,7 @@ bool Limitations::is_conv_supported(const std::shared_ptrValidateCnn2D(conv_ie->get_friendly_name(), + return m_cnn_validator->ValidateCnn2D(conv_gna->get_friendly_name(), static_cast(conv_data.input_height), static_cast(conv_data.input_width), static_cast(conv_data.input_channel_count), @@ -824,10 +817,12 @@ bool Limitations::is_conv_supported(const std::shared_ptrget_dilations()[0], conv_ie->get_dilations()[1]); + + return check_dilation(conv_gna->get_dilations()[0], + conv_gna->get_dilations()[conv_gna->get_dilations().size() - 1]); } -bool Limitations::is_pooling_supported(const std::shared_ptr max_pool, +bool Limitations::is_pooling_supported(const std::shared_ptr max_pool, bool is_exception_allowed) { OPENVINO_ASSERT(max_pool, "MaxPool node is empty!"); auto kernels = max_pool->get_kernel(); @@ -869,6 +864,100 @@ bool Limitations::is_split_supported(const std::shared_ptr& node, bool return is_aligned; } +bool Limitations::is_concat_supported(const std::shared_ptr& node) { + OPENVINO_ASSERT(node, "Concat node is empty!"); + auto concat_node = std::dynamic_pointer_cast(node); + const ov::Shape& output_shape = concat_node->get_output_shape(0); + auto axis = concat_node->get_axis(); + + return graph_utils::get_first_valuable_dim_id(output_shape) == axis; +} + +bool Limitations::is_forward_transposed_concat_supported(const std::shared_ptr& node, + const AxisVector& order) { + auto concat_node = std::dynamic_pointer_cast(node); + if (!concat_node) { + log::debug() << "Concat node is empty!" << std::endl; + return false; + } + + const ov::Shape& output_shape = concat_node->get_output_shape(0); + auto axis = concat_node->get_axis(); + + const ov::Shape& transposed_shape = + graph_utils::transpose_shape(output_shape, pass::helper::reverse_transpose_order(order)); + const size_t transposed_concat_axis = order[axis]; + + return graph_utils::get_first_valuable_dim_id(transposed_shape) == static_cast(transposed_concat_axis); +} + +bool Limitations::is_backward_transposed_concat_supported(const std::shared_ptr& node, + const AxisVector& order) { + auto concat_node = std::dynamic_pointer_cast(node); + if (!concat_node) { + log::debug() << "Concat node is empty!" << std::endl; + return false; + } + + const ov::Shape& output_shape = concat_node->get_output_shape(0); + auto axis = concat_node->get_axis(); + + const ov::Shape& transposed_shape = graph_utils::transpose_shape(output_shape, order); + const size_t transposed_concat_axis = order[axis]; + + return graph_utils::get_first_valuable_dim_id(transposed_shape) == static_cast(transposed_concat_axis); +} + +bool Limitations::is_forward_transposed_split_supported(const std::shared_ptr& node, + const AxisVector& order) { + std::shared_ptr split_node = nullptr; + if (std::dynamic_pointer_cast(node)) { + split_node = std::dynamic_pointer_cast(node); + } else if (std::dynamic_pointer_cast(node)) { + split_node = std::dynamic_pointer_cast(node); + } else { + log::debug() << "Split node is empty!" << std::endl; + return false; + } + + const ov::Shape& output_shape = split_node->get_output_shape(0); + auto constant_node = as_type_ptr(split_node->input_value(1).get_node_shared_ptr()); + if (!constant_node) + return false; + auto axis = constant_node->get_axis_vector_val()[0]; + + const ov::Shape& transposed_shape = + graph_utils::transpose_shape(output_shape, pass::helper::reverse_transpose_order(order)); + const size_t transposed_concat_axis = order[axis]; + + return graph_utils::get_first_valuable_dim_id(transposed_shape) == static_cast(transposed_concat_axis); +} + +bool Limitations::is_backward_transposed_split_supported(const std::shared_ptr& node, + const AxisVector& order) { + std::shared_ptr split_node = nullptr; + if (std::dynamic_pointer_cast(node)) { + split_node = std::dynamic_pointer_cast(node); + } else if (std::dynamic_pointer_cast(node)) { + split_node = std::dynamic_pointer_cast(node); + } else { + log::debug() << "Split node is empty!" << std::endl; + return false; + } + + const ov::Shape& output_shape = split_node->get_output_shape(0); + auto constant_node = as_type_ptr(split_node->input_value(1).get_node_shared_ptr()); + if (!constant_node) + return false; + auto axis = constant_node->get_axis_vector_val()[0]; + + const ov::Shape& transposed_shape = + graph_utils::transpose_shape(output_shape, pass::helper::reverse_transpose_order(order)); + const int64_t transposed_concat_axis = order[axis]; + + return graph_utils::get_first_valuable_dim_id(transposed_shape) == transposed_concat_axis; +} + bool Limitations::is_op_supported(const std::shared_ptr& node, const InferenceEngine::Precision gna_precision, bool is_exception_allowed) { @@ -876,12 +965,13 @@ bool Limitations::is_op_supported(const std::shared_ptr& node, return SupportedElementTypes::IsParameterTypeSupported(node->get_element_type(), is_exception_allowed); } else if (ov::op::util::is_constant(node)) { return SupportedElementTypes::IsConstantTypeSupported(node->get_element_type(), is_exception_allowed); - } else if (auto conv_ie = std::dynamic_pointer_cast(node)) { - return is_conv_supported(conv_ie, gna_precision, is_exception_allowed); + } else if (auto conv = std::dynamic_pointer_cast(node)) { + return is_conv_supported(conv, gna_precision, is_exception_allowed); } else if (auto fully_connected = std::dynamic_pointer_cast(node)) { return is_fc_supported(fully_connected, is_exception_allowed); } else if (ov::intel_gna::graph_utils::is_pooling(node)) { - return is_pooling_supported(std::dynamic_pointer_cast(node), is_exception_allowed); + return is_pooling_supported(std::dynamic_pointer_cast(node), + is_exception_allowed); } else if (ov::op::util::is_output(node) || ov::op::util::is_sink(node) || ov::intel_gna::graph_utils::is_eltwise_add(node) || ov::intel_gna::graph_utils::is_eltwise_mul(node) || ov::intel_gna::graph_utils::is_crop_affined(node) || @@ -891,11 +981,11 @@ bool Limitations::is_op_supported(const std::shared_ptr& node, (std::dynamic_pointer_cast(node) != nullptr) || (std::dynamic_pointer_cast(node) != nullptr) || (std::dynamic_pointer_cast(node) != nullptr) || - (std::dynamic_pointer_cast(node) != nullptr)) { + (std::dynamic_pointer_cast(node) != nullptr)) { return true; } else if (ov::intel_gna::graph_utils::is_gna_precision_agnostic(node)) { - if ((std::dynamic_pointer_cast(node) != nullptr) || - (std::dynamic_pointer_cast(node) != nullptr)) { + if ((std::dynamic_pointer_cast(node) != nullptr) || + (std::dynamic_pointer_cast(node) != nullptr)) { return is_split_supported(node, is_exception_allowed); } // TODO check concat are aligned when transformation will be moved to ngraph diff --git a/src/plugins/intel_gna/src/backend/gna_limitations.hpp b/src/plugins/intel_gna/src/backend/gna_limitations.hpp index 91cfc8cc55d..0a6bc11073d 100644 --- a/src/plugins/intel_gna/src/backend/gna_limitations.hpp +++ b/src/plugins/intel_gna/src/backend/gna_limitations.hpp @@ -20,6 +20,8 @@ #include "legacy/ngraph_ops/fully_connected.hpp" #include "ngraph/opsets/opset7.hpp" #include "ngraph/opsets/opset9.hpp" +#include "ops/gna_convolution.hpp" +#include "ops/gna_max_pool.hpp" namespace ov { namespace intel_gna { @@ -173,8 +175,6 @@ public: */ static inline std::shared_ptr get_instance(); - static bool is_transpose_2d(const std::vector& shape); - static bool is_transpose_supported(const std::vector& shape); static size_t get_min_batch_to_fit_in_buffer(InferenceEngine::DataPtr input); /** @@ -202,6 +202,13 @@ public: * @return true if supported */ static bool is_split_supported(const std::shared_ptr& node, bool is_exception_allowed = false); + + /** + * @brief Validates if transpose is supported by GNA + * @param shape transpose + * @return true if supported + */ + static bool is_transpose_supported(const ov::Shape& shape); /** * @brief Validates if transpose is supported by GNA * @param node transpose @@ -209,13 +216,13 @@ public: */ static bool is_transpose_supported(const std::shared_ptr& node); /** - * @brief Validates if legacy convolution is supported by GNA - * @param conv_ie convolution + * @brief Validates if convolution is supported by GNA + * @param conv_gna GNA convolution * @param gna_precision GNA inference precision * @param is_exception_allowed flag specifies whether exception is allowed * @return true if supported */ - bool is_conv_supported(const std::shared_ptr& conv_ie, + bool is_conv_supported(const std::shared_ptr& conv_gna, const InferenceEngine::Precision gna_precision, bool is_exception_allowed = false); /** @@ -224,9 +231,19 @@ public: * @param is_exception_allowed flag specifies whether exception is allowed * @return true if precision is found in supported */ - bool is_pooling_supported(const std::shared_ptr max_pool, + bool is_pooling_supported(const std::shared_ptr max_pool, bool is_exception_allowed = false); + static bool is_concat_supported(const std::shared_ptr& node); + static bool is_forward_transposed_concat_supported(const std::shared_ptr& node, + const AxisVector& order); + static bool is_backward_transposed_concat_supported(const std::shared_ptr& node, + const AxisVector& order); + static bool is_forward_transposed_split_supported(const std::shared_ptr& node, + const AxisVector& order); + static bool is_backward_transposed_split_supported(const std::shared_ptr& node, + const AxisVector& order); + /** * @brief Validates if operation is supported by GNA * @param node operation diff --git a/src/plugins/intel_gna/src/common/graph_utils.hpp b/src/plugins/intel_gna/src/common/graph_utils.hpp index 0f9c04d3aed..46cdac8f70f 100644 --- a/src/plugins/intel_gna/src/common/graph_utils.hpp +++ b/src/plugins/intel_gna/src/common/graph_utils.hpp @@ -198,7 +198,8 @@ inline bool is_eltwise_add(const std::shared_ptr& node) { } inline bool is_pooling(const std::shared_ptr& node) { - return (std::dynamic_pointer_cast(node) != nullptr); + return ((std::dynamic_pointer_cast(node) != nullptr) || + std::dynamic_pointer_cast(node) != nullptr); } template @@ -268,7 +269,7 @@ inline bool has_32bit_output(const std::shared_ptr& node) { return ((std::dynamic_pointer_cast(node) != nullptr) || (std::dynamic_pointer_cast(node) != nullptr) || (std::dynamic_pointer_cast(node) != nullptr) || - (std::dynamic_pointer_cast(node) != nullptr) || + (std::dynamic_pointer_cast(node) != nullptr) || (std::dynamic_pointer_cast(node) != nullptr) || (std::dynamic_pointer_cast(node) != nullptr) || (std::dynamic_pointer_cast(node) != nullptr) || @@ -625,6 +626,20 @@ bool has_child_node(std::shared_ptr node) { return false; } +/** + * @brief Checks if shape without dimensions == 1 is 2D + */ +inline bool is_shape_2d(const ov::Shape& shape) { + return graph_utils::squeeze_shape(shape).size() == 2; +} + +/** + * @brief Checks if node has N consumers + */ +inline bool has_n_consumers(const std::shared_ptr& node, size_t n_consumers) { + return node->output(0).get_target_inputs().size() == n_consumers; +} + } // namespace graph_utils } // namespace intel_gna } // namespace ov diff --git a/src/plugins/intel_gna/src/descriptions/gna_desc.hpp b/src/plugins/intel_gna/src/descriptions/gna_desc.hpp index 9dd257fd69d..3b1e1414c59 100644 --- a/src/plugins/intel_gna/src/descriptions/gna_desc.hpp +++ b/src/plugins/intel_gna/src/descriptions/gna_desc.hpp @@ -74,9 +74,11 @@ struct GnaDesc { } InferenceEngine::DataPtr to_ie_data() { + OPENVINO_SUPPRESS_DEPRECATED_START return std::make_shared( name, InferenceEngine::TensorDesc(model_precision, dims, model_layout)); + OPENVINO_SUPPRESS_DEPRECATED_END } }; @@ -98,9 +100,11 @@ struct InputDesc : GnaDesc { } InferenceEngine::InputInfo::Ptr ToIEInputInfo() { + OPENVINO_SUPPRESS_DEPRECATED_START InferenceEngine::InputInfo::Ptr input_info = std::make_shared(); input_info->setInputData(this->to_ie_data()); return input_info; + OPENVINO_SUPPRESS_DEPRECATED_END } }; diff --git a/src/plugins/intel_gna/src/frontend/layer_quantizer.cpp b/src/plugins/intel_gna/src/frontend/layer_quantizer.cpp index 941ce0c2237..d4423f14af8 100644 --- a/src/plugins/intel_gna/src/frontend/layer_quantizer.cpp +++ b/src/plugins/intel_gna/src/frontend/layer_quantizer.cpp @@ -90,7 +90,7 @@ size_t LayerQuantizer::GetBiasSizeForLayer(InferenceEngine::WeightableLayer& wl) return wl._biases->size(); } else if (LayerInfo(wl).isConvolution()) { // Calculating biases len using outdata dims: biases number should be equal to output channels number - return InferenceEngine::GetDataDimByName(wl.outData.front(), InferenceEngine::DataDimName::C); + return InferenceEngine::GetDataDimSizeNHWC(wl.outData.front(), InferenceEngine::DataDimName::C); } else { // Calculating biases size using outData dimensions return wl.outData.front()->getDims().back(); diff --git a/src/plugins/intel_gna/src/frontend/scale_factor_calc.cpp b/src/plugins/intel_gna/src/frontend/scale_factor_calc.cpp index 0b057f0bfe8..5995d2c95ae 100644 --- a/src/plugins/intel_gna/src/frontend/scale_factor_calc.cpp +++ b/src/plugins/intel_gna/src/frontend/scale_factor_calc.cpp @@ -1265,7 +1265,7 @@ bool ScaleFactorCalculator::ScaleFactorPerLayerWeightable(InferenceEngine::Weigh double weights_reducer = 1.0; auto conv = dynamic_cast(wl); if (conv && !LayerInfo(conv).isConvolutionFilter()) { - const auto inDepth = GetDataDimByName(conv->insData.front().lock(), InferenceEngine::DataDimName::C); + const auto inDepth = GetDataDimSizeNHWC(conv->insData.front().lock(), InferenceEngine::DataDimName::C); weights_reducer = gna_convolution_layer::getWeightsReducer(*conv); weights_reducer *= MAX_VAL_2B_FEAT * scaleRange * inDepth / std::numeric_limits::max(); weights_reducer = std::max(1.0, weights_reducer); diff --git a/src/plugins/intel_gna/src/gna_graph_compiler.cpp b/src/plugins/intel_gna/src/gna_graph_compiler.cpp index c5e723d108d..cb86a83d38f 100644 --- a/src/plugins/intel_gna/src/gna_graph_compiler.cpp +++ b/src/plugins/intel_gna/src/gna_graph_compiler.cpp @@ -307,12 +307,26 @@ void GNAGraphCompiler::ConstPrimitive(InferenceEngine::CNNLayerPtr constLayer) { void GNAGraphCompiler::assertConvolutionLayoutProper(const InferenceEngine::DataPtr& data) { if (data->getLayout() != InferenceEngine::Layout::NHWC && data->getLayout() != InferenceEngine::Layout::NCHW && - data->getLayout() != InferenceEngine::Layout::NC) { + data->getLayout() != InferenceEngine::Layout::NC && data->getLayout() != InferenceEngine::Layout::CHW) { THROW_GNA_EXCEPTION << "layer: \"Convolution\" with layout " << data->getLayout() << " isn't currently supported on GNA"; } } +namespace { + +template +PropertyVector property_vector_append(PropertyVector properties, T value) { + std::vector new_values; + for (size_t i = 0; i < properties.size(); ++i) + new_values.push_back(properties[i]); + new_values.push_back(value); + + return PropertyVector(new_values); +} + +} // namespace + /** * Create AMIntelDNN Convolutional1DComponent from ConvolutionLayer * @@ -338,15 +352,24 @@ void GNAGraphCompiler::ConvolutionPrimitive(InferenceEngine::CNNLayerPtr layer) const auto outputs = layer->outData.front(); assertConvolutionLayoutProper(inputs); - const auto in_batch = InferenceEngine::GetDataDimByName(inputs, InferenceEngine::DataDimName::N); - const auto in_channels = InferenceEngine::GetDataDimByName(inputs, InferenceEngine::DataDimName::C); - auto in_height = InferenceEngine::GetDataDimByName(inputs, InferenceEngine::DataDimName::H); - auto in_width = InferenceEngine::GetDataDimByName(inputs, InferenceEngine::DataDimName::W); + const auto in_batch = GetDataDimSizeNHWC(inputs, InferenceEngine::DataDimName::N); + const auto in_channels = GetDataDimSizeNHWC(inputs, InferenceEngine::DataDimName::C); + auto in_height = GetDataDimSizeNHWC(inputs, InferenceEngine::DataDimName::H); + auto in_width = GetDataDimSizeNHWC(inputs, InferenceEngine::DataDimName::W); + const auto out_batch = GetDataDimSizeNHWC(outputs, InferenceEngine::DataDimName::N); + const auto out_channels = GetDataDimSizeNHWC(outputs, InferenceEngine::DataDimName::C); + auto out_height = GetDataDimSizeNHWC(outputs, InferenceEngine::DataDimName::H); + auto out_width = GetDataDimSizeNHWC(outputs, InferenceEngine::DataDimName::W); - const auto out_batch = InferenceEngine::GetDataDimByName(outputs, InferenceEngine::DataDimName::N); - const auto out_channels = InferenceEngine::GetDataDimByName(outputs, InferenceEngine::DataDimName::C); - auto out_height = InferenceEngine::GetDataDimByName(outputs, InferenceEngine::DataDimName::H); - auto out_width = InferenceEngine::GetDataDimByName(outputs, InferenceEngine::DataDimName::W); + if (inputs->getLayout() == InferenceEngine::Layout::CHW) { + // convolution is ngraph-3D here. Make some fixes to work with it as it's ngraph-4D + convolution._kernel_y = 1; + convolution._dilation_y = 1; + convolution._stride_y = 1; + + convolution._padding = property_vector_append(convolution._padding, 0); + convolution._pads_end = property_vector_append(convolution._pads_end, 0); + } if (in_height > 1 && in_width == 1 && !ShouldUseOnlyConv2DGnaIface()) { std::swap(in_height, in_width); @@ -589,42 +612,12 @@ void GNAGraphCompiler::finalizeConvolution1DPrimitive(InferenceEngine::CNNLayerP }); } - // TODO: convolution might be not the first layer in sorted order but connected via split for example - dont know - // how kaldi will handle that - if (!dnn->do_rotate_input) { - if ((inputs->getLayout() != InferenceEngine::Layout::NHWC || transpose_h_w) && - LayerInfo(connectedInputLayer).isInput()) { - // Kaldi features are opposite orientation - dnn->do_rotate_input = true; - dnn->num_rotate_rows = effectiveStride; - dnn->num_rotate_columns = num_inputs / effectiveStride; - } else { - dnn->do_rotate_input = false; - } - } - connectOutput(layer, ptr_outputs, num_data_bytes_out); - // Transpose H with W or C with HW - auto A = transpose_h_w ? in_kernel_h : in_channels; - auto B = transpose_h_w ? in_kernel_w : convolution._kernel[X_AXIS]; - - std::vector transposedWeights; - for (uint32_t k = 0; k < num_filters; k++) { - uint8_t* ptr_filt_current = - convolution._weights->cbuffer().as() + k * A * B * convolution.precision.size(); - auto transposedPart = transposeMatrix(ptr_filt_current, convolution.precision.size(), A, B); - transposedWeights.insert(transposedWeights.end(), transposedPart.begin(), transposedPart.end()); - } - if (transposedWeights.size() != convolution._weights->byteSize()) { - THROW_GNA_LAYER_EXCEPTION(&convolution) << "weights was transposed incorrectly. " << transposedWeights.size() - << ' ' << convolution._weights->byteSize(); - } - if (num_conv_kernel_padding == 0) { gnamem->getQueue(REGION_RO)->push_local_ptr(layer, ptr_weights, - transposedWeights.data(), + convolution._weights->cbuffer(), convolution._weights->byteSize()); } else { auto paddedWeights = num_filter_coefficients * num_filters; @@ -636,7 +629,7 @@ void GNAGraphCompiler::finalizeConvolution1DPrimitive(InferenceEngine::CNNLayerP layerName, num_conv_kernel_padding, cpSize, - transposedWeights, + convolution, num_filters, single_conv_kernel_size](void* data, std::size_t size) { if (paddedWeightsSize > size) { @@ -648,7 +641,7 @@ void GNAGraphCompiler::finalizeConvolution1DPrimitive(InferenceEngine::CNNLayerP for (uint32_t i = 0; i < num_filters; i++) { ie_memcpy(dstPtr + offset, size - offset, - transposedWeights.data() + single_conv_kernel_size * i * cpSize, + convolution._weights->cbuffer().as() + single_conv_kernel_size * i * cpSize, single_conv_kernel_size * cpSize); offset += single_conv_kernel_size * cpSize; ie_memcpy(dstPtr + offset, size - offset, &padding_zeros[0], padding_zeros.size()); @@ -783,22 +776,6 @@ void GNAGraphCompiler::finalizeConvolution2DPrimitive(InferenceEngine::CNNLayerP auto connectedInputLayer = connectInput(layer, ptr_inputs, num_data_bytes_in).input; - // TODO: convolution might be not the first layer in sorted order but connected via split for example - dont know - // how kaldi will handle that - if (!dnn->do_rotate_input && inputs->getLayout() != InferenceEngine::Layout::NHWC && - LayerInfo(connectedInputLayer).isInput()) { - // Kaldi features are opposite orientation - dnn->do_rotate_input = true; - dnn->num_rotate_rows = in_channels; - if (in_height != 1) { - dnn->num_rotate_rows *= convolution._stride_y; - } - if (in_width != 1) { - dnn->num_rotate_rows *= convolution._stride_x; - } - dnn->num_rotate_columns = num_inputs / dnn->num_rotate_rows; - } - connectOutput(layer, ptr_outputs, num_data_bytes_out); const auto convolution_precision = convolution.precision.size(); @@ -815,7 +792,7 @@ void GNAGraphCompiler::finalizeConvolution2DPrimitive(InferenceEngine::CNNLayerP ALIGN(effective_single_kernel_size, Limitations::kConvEachKernelByteAlignment) - effective_single_kernel_size; for (uint32_t k = 0; k < convolution._out_depth; k++) { uint8_t* ptr_filt_current = convolution._weights->cbuffer().as() + k * single_kernel_size; - auto transposed_part = transposeMatrix(ptr_filt_current, convolution_precision, in_channels, kernelHW); + auto transposed_part = copy_matrix(ptr_filt_current, convolution.precision.size(), in_channels, kernelHW); transposed_weights.insert(transposed_weights.end(), transposed_part.begin(), transposed_part.end()); transposed_weights.resize(transposed_weights.size() + effective_single_kernel_size - single_kernel_size + kernel_pad); @@ -997,13 +974,19 @@ void GNAGraphCompiler::PoolingPrimitive(InferenceEngine::CNNLayerPtr layer) { auto inputs = layer->insData.begin()->lock(); auto outputs = *layer->outData.begin(); - uint32_t w_dim_in = InferenceEngine::GetDataDimByName(inputs, InferenceEngine::DataDimName::W); - uint32_t h_dim_in = InferenceEngine::GetDataDimByName(inputs, InferenceEngine::DataDimName::H); - const uint32_t c_dim_in = InferenceEngine::GetDataDimByName(inputs, InferenceEngine::DataDimName::C); + uint32_t w_dim_in = GetDataDimSizeNHWC(inputs, InferenceEngine::DataDimName::W); + uint32_t h_dim_in = GetDataDimSizeNHWC(inputs, InferenceEngine::DataDimName::H); + const uint32_t c_dim_in = GetDataDimSizeNHWC(inputs, InferenceEngine::DataDimName::C); - uint32_t w_dim_out = InferenceEngine::GetDataDimByName(outputs, InferenceEngine::DataDimName::W); - uint32_t h_dim_out = InferenceEngine::GetDataDimByName(outputs, InferenceEngine::DataDimName::H); - const uint32_t c_dim_out = InferenceEngine::GetDataDimByName(outputs, InferenceEngine::DataDimName::C); + uint32_t w_dim_out = GetDataDimSizeNHWC(outputs, InferenceEngine::DataDimName::W); + uint32_t h_dim_out = GetDataDimSizeNHWC(outputs, InferenceEngine::DataDimName::H); + const uint32_t c_dim_out = GetDataDimSizeNHWC(outputs, InferenceEngine::DataDimName::C); + + if (inputs->getLayout() == InferenceEngine::Layout::CHW) { + // Pooling is ngraph-3D here. Make some fixes to work with it as it's ngraph-4D + pooling._kernel = property_vector_append(pooling._kernel, 1); + pooling._stride = property_vector_append(pooling._stride, 1); + } void* ptr_inputs = nullptr; void* ptr_outputs = nullptr; @@ -2590,7 +2573,8 @@ void GNAGraphCompiler::connectOutput(InferenceEngine::CNNLayerPtr layer, void* p if (layer->params.find("output_offset") != layer->params.end()) { output_offset = layer->GetParamAsInt("output_offset"); } - gnamem->getQueue(REGION_AUTO)->bind_ptr(layer, ptr, &concatLayerInfoItem.gna_ptr, output_offset); + gnamem->getQueue(REGION_AUTO) + ->bind_ptr(layer, ptr, &concatLayerInfoItem.gna_ptr, output_offset, num_data_bytes_out); } return; } @@ -2859,5 +2843,15 @@ std::vector GNAGraphCompiler::transposeMatrix(uint8_t* ptr_matrix, return temp_buffer; } +std::vector GNAGraphCompiler::copy_matrix(uint8_t* ptr_matrix, + size_t element_size, + uint32_t num_rows, + uint32_t num_cols) { + const size_t dest_size = num_rows * num_cols * element_size; + std::vector temp_buffer(dest_size); + ::memcpy(temp_buffer.data(), ptr_matrix, dest_size); + return temp_buffer; +} + } // namespace intel_gna } // namespace ov diff --git a/src/plugins/intel_gna/src/gna_graph_compiler.hpp b/src/plugins/intel_gna/src/gna_graph_compiler.hpp index b67a786bfff..72fca25ab7d 100644 --- a/src/plugins/intel_gna/src/gna_graph_compiler.hpp +++ b/src/plugins/intel_gna/src/gna_graph_compiler.hpp @@ -53,6 +53,10 @@ private: size_t element_size, uint32_t num_rows, uint32_t num_cols); + std::vector static copy_matrix(uint8_t* ptr_matrix, + size_t element_size, + uint32_t num_rows, + uint32_t num_cols); bool ShouldUseOnlyConv2DGnaIface() const; diff --git a/src/plugins/intel_gna/src/gna_graph_patterns.hpp b/src/plugins/intel_gna/src/gna_graph_patterns.hpp index 98a25145874..06d6a6da8e9 100644 --- a/src/plugins/intel_gna/src/gna_graph_patterns.hpp +++ b/src/plugins/intel_gna/src/gna_graph_patterns.hpp @@ -237,32 +237,6 @@ inline InferenceEngine::CNNLayerPtr FindPermutationAfterConvolutionInKaldiModel( return next; } -/** - * @brief identifies if a model must be converted to NHWC, it must not be neither NHWC, nor Kaldi - * @param layers model sorted layers - */ -inline bool MustBeConvertedFromNCHWToNHWC(const std::vector& layers) { - for (auto& l : layers) { - if (!LayerInfo(l).isConvolution()) - continue; - - InferenceEngine::CNNLayerPtr next; - std::tie(std::ignore, next) = FindPermutationsAroundConvolutionInNHWCModel(l); - if (next != nullptr) - return false; - // If a convolution has only 1-dimension input and output we should skip it - auto in_dims = l->insData.begin()->lock()->getDims(); - auto out_dims = l->outData.front()->getDims(); - - if (ov::intel_gna::graph_utils::is_one_dim_shapes(in_dims, out_dims)) { - continue; - } - - return FindPermutationAfterConvolutionInKaldiModel(l) == nullptr; - } - return false; -} - /** * @brief returns transposition information for a layer based on the previous convolution or pooling dimensions order * @param layer layer from which transposition info search must be started diff --git a/src/plugins/intel_gna/src/gna_graph_tools.hpp b/src/plugins/intel_gna/src/gna_graph_tools.hpp index e40c775f910..67f15c81ba7 100644 --- a/src/plugins/intel_gna/src/gna_graph_tools.hpp +++ b/src/plugins/intel_gna/src/gna_graph_tools.hpp @@ -924,4 +924,38 @@ inline uint32_t GetDataDimByName(InferenceEngine::DataPtr data, DataDimName dimN return GetDimFromBack(dims, backOffsets[dimIxInNCHW]); } +/** + * @brief returns a size of a specified data dimension depending on the layout + * NHWC specialization + * @param data a pointer to the data + * @param dimName dimension name + */ +inline uint32_t GetDataDimSizeNHWC(InferenceEngine::DataPtr data, DataDimName dimName) { + uint32_t dimIxInNCHW = static_cast(dimName); + IE_ASSERT(dimIxInNCHW <= 3); + + std::vector backOffsets; + switch (data->getLayout()) { + case Layout::C: + case Layout::NC: + // 1 will be returned for offsets > 2 + backOffsets = std::vector{2, 1, 3, 4}; + break; + case Layout::HWC: + // 1 will be returned for offset 4 + case Layout::NHWC: + backOffsets = std::vector{4, 3, 2, 1}; + break; + case Layout::CHW: + // 1 will be returned for offset 4 + case Layout::NCHW: + backOffsets = std::vector{4, 1, 3, 2}; + break; + default: + THROW_GNA_EXCEPTION << data->getName() << " Unexpected layout " << data->getLayout(); + } + auto dims = data->getDims(); + return GetDimFromBack(dims, backOffsets[dimIxInNCHW]); +} + } // namespace InferenceEngine diff --git a/src/plugins/intel_gna/src/gna_plugin.cpp b/src/plugins/intel_gna/src/gna_plugin.cpp index de55b0cc557..115a0d4959b 100644 --- a/src/plugins/intel_gna/src/gna_plugin.cpp +++ b/src/plugins/intel_gna/src/gna_plugin.cpp @@ -344,13 +344,13 @@ void GNAPlugin::PrePostProcess(InferenceEngine::Blob::Ptr input_blob, std::shared_ptr model) { const ov::element::Type input_type = details::convertPrecision(input_blob->getTensorDesc().getPrecision()); const ov::element::Type output_type = details::convertPrecision(output_blob->getTensorDesc().getPrecision()); - const ov::Shape& input_shape = model->get_parameters().front()->get_shape(); - const ov::Shape& output_shape = model->get_results().front()->get_shape(); + const ov::Shape& output_shape = output_blob->getTensorDesc().getDims(); for (const auto& param : model->get_parameters()) { param->set_element_type(input_type); } model->validate_nodes_and_infer_types(); + const ov::Shape& input_shape = model->get_parameters()[0]->get_output_shape(0); ov::TensorVector inputs = {ov::Tensor(input_type, input_shape, input_blob->cbuffer().as())}; ov::TensorVector results = {ov::Tensor(output_type, output_shape, output_blob->buffer().as())}; @@ -611,52 +611,6 @@ bool GNAPlugin::TryToInitOutput(const std::string& portName, InferenceEngine::CN return false; } -void GNAPlugin::FillInputsAndOutputsTranspositionInfo(const InferenceEngine::CNNNetwork& net) { - OV_ITT_SCOPED_TASK(itt::domains::GNA_LT, "FillInputsAndOutputsTranspositionInfo"); - auto printTranspositionInfo = [](const std::vector& transpositionInfo) { - for (const auto& transpositionInfoPart : transpositionInfo) { - log::debug() << "transpose=" << transpositionInfoPart.transpose - << " rows_num=" << transpositionInfoPart.num_transpose_rows - << " columns_num=" << transpositionInfoPart.num_transpose_columns << "\n"; - } - }; - - auto inputLayers = CNNNetGetAllInputLayers(net); - for (const auto& inputLayer : inputLayers) { - // Collect information for inputs transposition - if (!LayerInfo(inputLayer).isInput()) - continue; - auto transpositionInfo = FindTranspositionInfoFromNextLayers(inputLayer); - if (transpositionInfo.empty()) - continue; - - transpose_inputs_info.insert({inputLayer->name, transpositionInfo}); - log::debug() << "Input " << inputLayer->name << " transposition info: \n"; - printTranspositionInfo(transpositionInfo); - } - - auto outputsMap = net.getOutputsInfo(); - for (const auto& outPort : outputsMap) { - auto outLayer = getCreatorLayer(outPort.second).lock(); - // Collect information for outputs transposition - if (!LayerInfo(outLayer).isOutput()) - continue; - auto transpositionInfo = FindTranspositionInfoFromPrevLayers(outLayer); - if (transpositionInfo.empty()) - continue; - - // Swap transposition info rows and columns since we need to transpose output back from NHWC to NCHW - for (auto&& transpositionInfoPart : transpositionInfo) { - if (transpositionInfoPart.transpose) { - std::swap(transpositionInfoPart.num_transpose_rows, transpositionInfoPart.num_transpose_columns); - } - } - transpose_outputs_info.insert({outLayer->name, transpositionInfo}); - log::debug() << "Output " << outLayer->name << " transposition info: \n"; - printTranspositionInfo(transpositionInfo); - } -} - #ifdef PLOT void GNAPlugin::AddDebugProperties(const InferenceEngine::CNNLayerPtr layer, InferenceEngine::ordered_properties& printed_properties, @@ -751,10 +705,6 @@ void GNAPlugin::LoadNetwork(const CNNNetwork& _network) { UpdateInputScaleFromNetwork(network); } - if (MustBeConvertedFromNCHWToNHWC(CNNNetSortTopologically(network))) { - FillInputsAndOutputsTranspositionInfo(network); - } - InferenceEngine::CNNNetwork newNet; if (gnaFlags->sw_fp32) { @@ -995,22 +945,6 @@ void GNAPlugin::LoadNetwork(const CNNNetwork& _network) { } } - if (dnn->do_rotate_input && transpose_inputs_info.empty()) { - for (auto& inputLayer : inputLayers) { - transpose_inputs_info.insert( - {inputLayer->name, - {TranspositionInfo{dnn->do_rotate_input, dnn->num_rotate_rows, dnn->num_rotate_columns}}}); - } - } - - // TODO: Need to remove this conversion when ngraph NCHW->NHWC transformation is enabled - if (!transpose_inputs_info.empty()) { - ConvertTransposeMapToModel(transpose_inputs_info, inputs_ptr_->Get()); - } - if (!transpose_outputs_info.empty()) { - ConvertTransposeMapToModel(transpose_outputs_info, outputs_.Get()); - } - DumpXNNToFile(); #ifdef PLOT diff --git a/src/plugins/intel_gna/src/gna_plugin.hpp b/src/plugins/intel_gna/src/gna_plugin.hpp index 900936afc57..3f98a69da68 100644 --- a/src/plugins/intel_gna/src/gna_plugin.hpp +++ b/src/plugins/intel_gna/src/gna_plugin.hpp @@ -37,6 +37,8 @@ class WorkerPool; class Worker; } // namespace request +using namespace ov::intel_gna::pre_post_processing; + class GNAPlugin : public InferenceEngine::IInferencePlugin { protected: std::string _pluginName = "GNA"; @@ -204,6 +206,13 @@ protected: InferenceEngine::Blob::Ptr output_blob, std::shared_ptr model); + /** + * Run ngraph model on CPU to modify inputs/outputs + */ + void pre_post_process(InferenceEngine::Blob::Ptr input_blob, + InferenceEngine::Blob::Ptr output_blob, + std::shared_ptr model); + void ImportFrames(void* ptr_dst, const void* ptr_src, InferenceEngine::Precision input_precision, @@ -246,14 +255,6 @@ protected: * @return true if the output is initiated, false otherwise */ bool TryToInitOutput(const std::string& portName, InferenceEngine::CNNLayerPtr layer); - - /** - * @brief Fills inputs and outputs transposition info for model convertion from NCHW to NHWC. - * Information for transposition is found from convolution/pooling input or output dimensions. - * @param layers model sorted layers - */ - void FillInputsAndOutputsTranspositionInfo(const InferenceEngine::CNNNetwork& net); - bool isFP32ModeActive() const; std::shared_ptr createModelWrapperForLoadNetwork(bool trivial); std::shared_ptr createModelWrapperForImportNetwork(uint32_t numberOfOperations); diff --git a/src/plugins/intel_gna/src/gna_transformations_pipeline.cpp b/src/plugins/intel_gna/src/gna_transformations_pipeline.cpp index 209a756eac1..a643a80feb4 100644 --- a/src/plugins/intel_gna/src/gna_transformations_pipeline.cpp +++ b/src/plugins/intel_gna/src/gna_transformations_pipeline.cpp @@ -7,6 +7,8 @@ #include "gna_itt.hpp" #include "legacy/net_pass.h" #include "legacy/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.hpp" +#include "legacy/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.hpp" +#include "ngraph/opsets/opset2.hpp" #include "ngraph/opsets/opset7.hpp" #include "openvino/pass/manager.hpp" #include "optimizer/gna_pass_manager.hpp" @@ -18,7 +20,9 @@ #include "transformations/common_optimizations/fq_reshape_fusion.hpp" #include "transformations/common_optimizations/pull_transpose_through_fq.hpp" #include "transformations/common_optimizations/relu_fake_quantize_fusion.hpp" +#include "transformations/common_optimizations/reshape_sequence_fusion.hpp" #include "transformations/common_optimizations/transpose_sinking.hpp" +#include "transformations/common_optimizations/transpose_to_reshape.hpp" #include "transformations/control_flow/unroll_tensor_iterator.hpp" #include "transformations/convert_dwsc_to_scaleshifts.hpp" #include "transformations/convert_matmul_to_pointwise_convolution.hpp" @@ -28,6 +32,8 @@ #include "transformations/decompose_mvn.hpp" #include "transformations/fp16_compression/convert_compression_only_to_legacy.hpp" #include "transformations/fp16_compression/mark_decompression_convert_constant_folding.hpp" +#include "transformations/fuse_conv_bias_activation.hpp" +#include "transformations/gather_sinking.hpp" #include "transformations/handle_transposes_around_matmul.hpp" #include "transformations/init_node_info.hpp" #include "transformations/insert_copy_layer.hpp" @@ -37,6 +43,7 @@ #include "transformations/markup_fusable_transpose.hpp" #include "transformations/op_conversions/convert_mvn1_to_mvn6.hpp" #include "transformations/op_conversions/convert_sequences_to_tensor_iterator.hpp" +#include "transformations/op_conversions/convert_slice_to_strided_slice.hpp" #include "transformations/op_conversions/gru_cell_decomposition.hpp" #include "transformations/op_conversions/lstm_cell_decomposition.hpp" #include "transformations/op_conversions/softsign_decomposition.hpp" @@ -48,13 +55,28 @@ #include "transformations/remove_in_out_processing.hpp" #include "transformations/remove_single_input_concat.hpp" #include "transformations/reorder_activation_and_pooling.hpp" +#include "transformations/replace_gna_nhwc_layers.hpp" +#include "transformations/reshape_transpose_substitute.hpp" +#include "transformations/rotate_inputs.hpp" #include "transformations/split_convolution_with_large_buffer_size.hpp" #include "transformations/split_eltwise.hpp" #include "transformations/substitute_softsign.hpp" #include "transformations/swap_input_matmul_gna.hpp" +#include "transformations/transpose_sinking/ts_concat.hpp" +#include "transformations/transpose_sinking/ts_fuse.hpp" +#include "transformations/transpose_sinking/ts_general.hpp" +#include "transformations/transpose_sinking/ts_split.hpp" +#include "transformations/ts_concat_forward.hpp" +#include "transformations/ts_split_backward.hpp" #include "transformations/unfuse_reshape_and_transpose.hpp" +#include "transformations/utils/transformation_helper.hpp" #include "transformations/utils/utils.hpp" +using namespace ov; +using namespace ov::opset8; +using namespace ov::intel_gna::limitations; +using namespace ov::intel_gna::pass::helper; + namespace ov { namespace intel_gna { @@ -64,12 +86,13 @@ void TransformationsPipeline::apply(const std::shared_ptr& model, fake_quantized = ov::op::util::has_op_with_type(model); const bool has_convolution = ov::op::util::has_op_with_type(model); + const bool has_maxpool = ov::op::util::has_op_with_type(model); + const bool has_slice = ov::op::util::has_op_with_type(model); const bool has_matmul = ov::op::util::has_op_with_type(model); - const bool has_mvn = ov::op::util::has_op_with_type(model) || + const bool has_mvn = ov::op::util::has_op_with_type(model) || ov::op::util::has_op_with_type(model); ov::pass::Manager manager; manager.register_pass(); - // In OV API 2.0(IRv10) default convertion to fp32 (inputs, outputs and weights) is disabled // and we need to run the ConvertPrecision transformation to support old networks. manager.register_pass(precisions_map{{ngraph::element::f16, ngraph::element::f32}}); @@ -104,7 +127,6 @@ void TransformationsPipeline::apply(const std::shared_ptr& model, manager.register_pass(); manager.register_pass(); manager.register_pass(); - manager.register_pass(); manager.register_pass(); manager.register_pass(); manager.register_pass(); @@ -112,11 +134,21 @@ void TransformationsPipeline::apply(const std::shared_ptr& model, manager.register_pass(); manager.register_pass(); manager.register_pass(); - if (!has_convolution && !has_matmul && !has_mvn) { - // TODO: Remove this condition when the legacy layout transformation (NCHW->NHWC) is disabled - manager.register_pass(input_output_subgraphs); - manager.register_pass(input_output_subgraphs); + // TODO enable this transformation for networks without convolutions + if (has_convolution || has_maxpool || has_mvn || has_matmul) { + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); } + manager.register_pass(input_output_subgraphs); + manager.register_pass(input_output_subgraphs); manager.register_pass(); manager.register_pass(); manager.register_pass(); @@ -160,6 +192,62 @@ void TransformationsPipeline::apply(const std::shared_ptr& model, {ov::element::u32, ov::element::i32}}); const auto& pass_config = manager.get_pass_config(); + pass_config->set_callback( + [](const std::shared_ptr& node) -> bool { + const TransposeInfo transpose_info = get_first_input_transpose(node); + if (transpose_info.isEmpty()) + return false; + const bool is_supported = Limitations::is_forward_transposed_concat_supported( + node, + transpose_info.transpose_const->get_axis_vector_val()); + if (!is_supported) + mark_input_transposes_as_nosinking(node); + return !is_supported; + }); + + pass_config->set_callback( + [](const std::shared_ptr& node) -> bool { + const TransposeInfo transpose_info = get_first_output_transpose(node); + if (transpose_info.isEmpty()) + return false; + return !Limitations::is_backward_transposed_concat_supported( + node, + transpose_info.transpose_const->get_axis_vector_val()); + }); + + pass_config->set_callback( + [](const std::shared_ptr& node) -> bool { + const TransposeInfo transpose_info = get_first_input_transpose(node); + if (transpose_info.isEmpty()) + return false; + const bool is_supported = Limitations::is_forward_transposed_split_supported( + node, + transpose_info.transpose_const->get_axis_vector_val()); + if (!is_supported) + mark_input_transposes_as_nosinking(node); + return !is_supported; + }); + + pass_config->set_callback( + [](const std::shared_ptr& node) -> bool { + const TransposeInfo transpose_info = get_first_output_transpose(node); + if (transpose_info.isEmpty()) + return false; + return !Limitations::is_backward_transposed_split_supported( + node, + transpose_info.transpose_const->get_axis_vector_val()); + }); + + /** + * TransposeSinking doesn't currently support StridedSlice. We disable SliceToStridedSlice + * transformation to prevent convert Slice to StridedSlice. This allows us to work with + * networks, that initialy have Slice. + * That could be removed after StridedSlice implementation in TransposeSinking + */ + if (has_slice && (has_convolution || has_maxpool || has_mvn)) { + pass_config->disable(); + } + // Allowing FP16 Converts to be folded and FP16 constants to upgrade to FP32 data type pass_config->disable(); pass_config->disable(); @@ -177,8 +265,23 @@ void TransformationsPipeline::apply(const std::shared_ptr& model, // Operations Max and Min aren't supported pass_config->disable(); + pass_config->disable(); manager.run_passes(model); + /** + * As we disabled SliceToStridedSlice, we have after all transformations + * Slice, that is not supported natively in our plugin. Here we convert + * Slice -> StridedSlice -> CropIE + * That could be removed after StridedSlice implementation in TransposeSinking + */ + if (has_slice && (has_convolution || has_maxpool || has_mvn)) { + ov::pass::Manager manager; + manager.register_pass(); + manager.register_pass(true); + manager.register_pass(); + manager.run_passes(model); + } + is_ngraph_passes_used = true; } @@ -204,8 +307,6 @@ void TransformationsPipeline::apply_legacy(const InferenceEngine::CNNNetwork& ne passes->registerPass(); passes->registerPass(); - passes->registerPass(); - passes->registerPass(); if (!is_ngraph_passes_used) { @@ -221,7 +322,7 @@ void TransformationsPipeline::apply_legacy(const InferenceEngine::CNNNetwork& ne passes->registerPass(); passes->registerPass(); passes->registerPass(); - passes->registerPass(); + // Keep legacy inserting of Identity layer here // because concat and split aliging passes are not moved to ngraph yet passes->registerPass(); diff --git a/src/plugins/intel_gna/src/layers/gna_convolution_layer.cpp b/src/plugins/intel_gna/src/layers/gna_convolution_layer.cpp index e529f671628..2cf83de19f5 100644 --- a/src/plugins/intel_gna/src/layers/gna_convolution_layer.cpp +++ b/src/plugins/intel_gna/src/layers/gna_convolution_layer.cpp @@ -59,11 +59,11 @@ double getWeightsReducer(InferenceEngine::ConvolutionLayer& conv) { const std::vector reducers{{49, 3.0}, {36, 2.6}, {21, 2.3}, {14, 1.7}, {9, 1.3}, {7, 1.2}}; auto reducer = 1.0; const auto inDepth = - InferenceEngine::GetDataDimByName(conv.insData.front().lock(), InferenceEngine::DataDimName::C); + InferenceEngine::GetDataDimSizeNHWC(conv.insData.front().lock(), InferenceEngine::DataDimName::C); const auto inHeight = - InferenceEngine::GetDataDimByName(conv.insData.front().lock(), InferenceEngine::DataDimName::H); + InferenceEngine::GetDataDimSizeNHWC(conv.insData.front().lock(), InferenceEngine::DataDimName::H); const auto inWidth = - InferenceEngine::GetDataDimByName(conv.insData.front().lock(), InferenceEngine::DataDimName::W); + InferenceEngine::GetDataDimSizeNHWC(conv.insData.front().lock(), InferenceEngine::DataDimName::W); if (is3DInputOr2DKernel(inHeight, inWidth, inDepth, conv._kernel_y, conv._kernel_x) && !isMappableFrom2DTo1D(inHeight, inWidth, diff --git a/src/plugins/intel_gna/src/layers/gna_layer_info.hpp b/src/plugins/intel_gna/src/layers/gna_layer_info.hpp index f44f7d4e2e8..c17a18037ad 100644 --- a/src/plugins/intel_gna/src/layers/gna_layer_info.hpp +++ b/src/plugins/intel_gna/src/layers/gna_layer_info.hpp @@ -297,7 +297,7 @@ public: return isOfType("FakeQuantize"); } bool isNonFunctional() const { - return isOfType("reshape") || isOfType("squeeze") || isOfType("unsqueeze") || isTrivialPermute(); + return isOfType("reshape") || isOfType("squeeze") || isOfType("unsqueeze") || isTrivialPermute() || is_gather(); } bool isReshape() const noexcept { return isOfType("reshape"); @@ -305,6 +305,9 @@ public: bool isPermute() const noexcept { return isOfType("permute"); } + bool is_gather() const noexcept { + return isOfType("gather"); + } bool isPermuteFusable() const noexcept { return isPermute() && (layer->params.count(ov::intel_gna::rt_info::GNATransposeFusable::get_type_info_static()) > 0); @@ -349,11 +352,8 @@ public: bool isNonValuesChangable() const { return isNonFunctional() || isSplit() || isSlice() || isConcat(); } - bool is_gather() const noexcept { - return isOfType("gather"); - } bool is_fq_non_sensitive() const { - return isPermute() || is_gather() || isNonFunctional(); + return isPermute() || isNonFunctional(); } bool isPooling() const noexcept { return isOfType("pooling"); diff --git a/src/plugins/intel_gna/src/ops/gna_convolution.hpp b/src/plugins/intel_gna/src/ops/gna_convolution.hpp index f7ab08e1589..2fe021bc86d 100644 --- a/src/plugins/intel_gna/src/ops/gna_convolution.hpp +++ b/src/plugins/intel_gna/src/ops/gna_convolution.hpp @@ -133,6 +133,9 @@ public: void set_auto_pad(const ov::op::PadType& auto_pad) { m_auto_pad = auto_pad; } + bool has_add_node() const { + return m_has_add_node; + } bool has_bias() const { return m_has_add_node; } diff --git a/src/plugins/intel_gna/src/optimizer/gna_pass_manager.cpp b/src/plugins/intel_gna/src/optimizer/gna_pass_manager.cpp index c4efb51ce48..16542afeeb4 100644 --- a/src/plugins/intel_gna/src/optimizer/gna_pass_manager.cpp +++ b/src/plugins/intel_gna/src/optimizer/gna_pass_manager.cpp @@ -110,17 +110,6 @@ static void SumBlobs(Blob::Ptr& src_blob, Blob::Ptr& dst_blob) { } } -static Blob::Ptr convertToRWBlob(const Blob::Ptr& readOnlyBlob, const std::string& name = {}) { - auto blob = Blob::CreateFromData(std::make_shared(name, readOnlyBlob->getTensorDesc())); - blob->allocate(); - const auto ret = ie_memcpy(blob->buffer().as(), - blob->size() * blob->getTensorDesc().getPrecision().size(), - readOnlyBlob->buffer().as(), - readOnlyBlob->size() * readOnlyBlob->getTensorDesc().getPrecision().size()); - IE_ASSERT(ret == 0); - return blob; -} - // indexes stored in pass manager static const char identityLayersCounterName[] = "identityLayerCounter"; static const char diagonalLayersCounterName[] = "diagonalLayerCounter"; @@ -2419,225 +2408,6 @@ void MoveFakeQuantizeLayerIntoQuantParamsPass ::run() { } } -void TransposeWeightsFromNCHWToNHWCPass::run() { - OV_ITT_SCOPED_TASK(itt::domains::GNA_LT, "TransposeWeightsFromNCHWToNHWCPass"); - if (!MustBeConvertedFromNCHWToNHWC(*pLayers)) - return; - - auto printTranspositionInfo = [](const std::vector& transpositionInfo) { - for (const auto& transpositionInfoPart : transpositionInfo) { - log::debug() << "transpose=" << transpositionInfoPart.transpose - << " rows_num=" << transpositionInfoPart.num_transpose_rows - << " columns_num=" << transpositionInfoPart.num_transpose_columns << "\n"; - } - }; - - auto transpInfoMatchWeightsSize = - [](const std::vector& transpositionInfo, size_t weightsSize, const std::string& layerName) { - size_t totalElements = 0; - for (auto&& transpositionInfoPart : transpositionInfo) { - totalElements += transpositionInfoPart.num_transpose_rows * transpositionInfoPart.num_transpose_columns; - } - if (totalElements != weightsSize) { - THROW_GNA_EXCEPTION << layerName << " weights elements from transposition info (" << totalElements - << ") don't match input dimensions (" << weightsSize << ")"; - } - }; - - for (auto&& l : *pLayers) { - if (LayerInfo(l).isScaleShift()) { - std::vector transpositionInfo; - // Try to find a convolution in previous layers - if (InferenceEngine::CNNNetHasPrevLayer(l.get())) { - transpositionInfo = FindTranspositionInfoFromPrevLayers(InferenceEngine::CNNNetPrevLayer(l)); - // If no convolutions are found try to find them in next layers - if (!FoundPartToTranspose(transpositionInfo) && !l->outData.empty() && - !getInputTo(l->outData[0]).empty()) { - transpositionInfo = FindTranspositionInfoFromNextLayers(getInputTo(l->outData[0]).begin()->second); - } - } - if (FoundPartToTranspose(transpositionInfo)) { - if (l->input()->getDims().front() > 1) { - THROW_GNA_EXCEPTION << l->name - << " Weights transposition is not supported for a layer with batch size > 1"; - } - auto weightable = dynamic_cast(l.get()); - IE_ASSERT(weightable != nullptr); - - size_t totalWeights = weightable->_weights->size(); - transpInfoMatchWeightsSize(transpositionInfo, totalWeights, l->name); - - ConvertTensorFromNCHWToNHWC(weightable->precision.size(), - 1, - weightable->_weights->size(), - weightable->_weights->cbuffer().as(), - true, - transpositionInfo); - if (weightable->_biases) { - ConvertTensorFromNCHWToNHWC(weightable->precision.size(), - 1, - weightable->_biases->size(), - weightable->_biases->cbuffer().as(), - true, - transpositionInfo); - } - log::debug() << l->name << " weights and biases rows transposition info:\n"; - printTranspositionInfo(transpositionInfo); - } - } - - if (LayerInfo(l).isFullyConnected()) { - auto weightable = dynamic_cast(l.get()); - IE_ASSERT(weightable != nullptr); - IE_ASSERT(weightable->_weights != nullptr); - auto precision = weightable->precision.size(); - auto out_dims = l->outData[0]->getDims(); - auto in_dims = l->input()->getDims(); - auto weightsRows = InferenceEngine::details::product(std::begin(out_dims) + 1, std::end(out_dims)); - auto weightsColumns = InferenceEngine::details::product(std::begin(in_dims) + 1, std::end(in_dims)); - // Find a convolution in previous layers to rotate weights rows - if (InferenceEngine::CNNNetHasPrevLayer(l.get())) { - std::vector transpositionInfo; - auto prevLayer = InferenceEngine::CNNNetPrevLayer(l); - transpositionInfo = FindTranspositionInfoFromPrevLayers(prevLayer); - if (FoundPartToTranspose(transpositionInfo)) { - if (l->input()->getDims().front() > 1) { - THROW_GNA_EXCEPTION - << l->name << " Weights transposition is not supported for a layer with batch size > 1"; - } - if (LayerInfo(prevLayer).isSplit()) { - // If we found a split it's not possible to rotate data - THROW_GNA_EXCEPTION << l->name << " won't be transposed due to a split before it"; - } - - transpInfoMatchWeightsSize(transpositionInfo, weightsColumns, l->name); - - weightable->_weights = convertToRWBlob(weightable->_weights); - - ConvertTensorFromNCHWToNHWC(precision, - weightsRows, - weightsColumns, - weightable->_weights->buffer().as(), - true, - transpositionInfo); - log::debug() << l->name << " weights rows transposition info:\n"; - printTranspositionInfo(transpositionInfo); - } - } - // Find a convolution in next layers to rotate weights columns - if (!l->outData.empty() && !getInputTo(l->outData[0]).empty()) { - std::vector transpositionInfo; - auto nextLayer = getInputTo(l->outData[0]).begin()->second; - transpositionInfo = FindTranspositionInfoFromNextLayers(nextLayer); - if (FoundPartToTranspose(transpositionInfo)) { - if (l->outData[0]->getDims().front() > 1) { - THROW_GNA_EXCEPTION - << l->name << " Weights transposition is not supported for a layer with batch size > 1"; - } - if (LayerInfo(nextLayer).isConcat()) { - // If we found a concat it's not possible to rotate data - THROW_GNA_EXCEPTION << l->name << " won't be transposed due to a concat after it"; - } - - transpInfoMatchWeightsSize(transpositionInfo, weightsRows, l->name); - - weightable->_weights = convertToRWBlob(weightable->_weights); - - ConvertTensorFromNCHWToNHWC(precision, - weightsRows, - weightsColumns, - weightable->_weights->cbuffer().as(), - false, - transpositionInfo); - log::debug() << l->name << " weights columns transposition info:\n"; - printTranspositionInfo(transpositionInfo); - } - } - } - - if (LayerInfo(l).isEltwise()) { - // We need to transpose a constant which is an eltwise input - auto firstInput = InferenceEngine::CNNNetPrevLayer(l, 0); - auto secondInput = InferenceEngine::CNNNetPrevLayer(l, 1); - if (!LayerInfo(firstInput).isConst() && !LayerInfo(secondInput).isConst()) { - continue; - } - // Let a constant to be the second input - if (LayerInfo(firstInput).isConst()) { - std::swap(firstInput, secondInput); - } - // Find a convolution in previous or next layers - auto transpositionInfo = FindTranspositionInfoFromPrevLayers(firstInput); - if (!FoundPartToTranspose(transpositionInfo) && !l->outData.empty() && !getInputTo(l->outData[0]).empty()) { - transpositionInfo = FindTranspositionInfoFromNextLayers(getInputTo(l->outData[0]).begin()->second); - } - if (FoundPartToTranspose(transpositionInfo)) { - auto blob = secondInput->blobs["custom"]; - ConvertTensorFromNCHWToNHWC(blob->getTensorDesc().getPrecision().size(), - 1, - blob->size(), - blob->buffer().as(), - true, - transpositionInfo); - log::debug() << secondInput->name << " data transposition info:\n"; - printTranspositionInfo(transpositionInfo); - } - } - - if (LayerInfo(l).isConcat()) { - auto concatLayer = LayerInfo(l).as(); - IE_ASSERT(concatLayer != nullptr); - // If concatenation is along channel axis constant input transposition isn't required - if (concatLayer->_axis <= 1) - continue; - - std::vector constInputs; - bool transpose = false; - int nonConstInputIx = 0; - // Check if non-const inputs are transposed - for (int i = 0; InferenceEngine::CNNNetHasPrevLayer(l.get(), i); ++i) { - auto input = InferenceEngine::CNNNetPrevLayer(l, i); - if (LayerInfo(input).isConst()) { - constInputs.push_back(input); - continue; - } - auto transpositionInfo = FindTranspositionInfoFromPrevLayers(input); - bool transposeInput = FoundPartToTranspose(transpositionInfo); - if (nonConstInputIx == 0) { - transpose = transposeInput; - } else if (transposeInput != transpose) { - THROW_GNA_EXCEPTION << "Concat layer " << l->name << " inputs have different layouts"; - } - ++nonConstInputIx; - } - if (!transpose) - continue; - - // Transpose all constant inputs - for (auto&& input : constInputs) { - auto rows = GetDataDimByName(input->outData[0], DataDimName::C); - auto columns = GetDataDimByName(input->outData[0], DataDimName::H) * - GetDataDimByName(input->outData[0], DataDimName::W); - - auto blob = convertToRWBlob(input->blobs["custom"]); - input->blobs["custom"] = blob; - - // A constant should have the same number of channels since concatenation will be in height/weight - // dimension - TranspositionInfo concatTranspositionInfo{true, rows, columns}; - ConvertTensorFromNCHWToNHWC(blob->getTensorDesc().getPrecision().size(), - 1, - blob->size(), - blob->buffer().as(), - true, - {concatTranspositionInfo}); - log::debug() << input->name << " data transposition info:\n"; - printTranspositionInfo({concatTranspositionInfo}); - } - } - } -} - void FuseFullyConnectedWithEltwisePass::run() { // This legacy pass removes the Eltwise (only if it performs SUM op) from between FC and Any. // The blob data of Const layer attached to Eltwise is added to biases blob data of FC layer. diff --git a/src/plugins/intel_gna/src/optimizer/gna_pass_manager.hpp b/src/plugins/intel_gna/src/optimizer/gna_pass_manager.hpp index b84ece077da..e3a8e2f7a2f 100644 --- a/src/plugins/intel_gna/src/optimizer/gna_pass_manager.hpp +++ b/src/plugins/intel_gna/src/optimizer/gna_pass_manager.hpp @@ -214,14 +214,6 @@ DECL_PASS(FuseFQIntoWeights); */ DECL_PASS(MoveFakeQuantizeLayerIntoQuantParams); -/** - * @brief convert FullyConnected, ScaleShift and Eltwise layers weights order from NCHW to NHWC. - * Information for transposition is found from convolution/pooling input or output dimensions. - * Convolution weights are transposed in finalizeConvolution1DPrimitive() method (gna_graph_compiler.cpp). - * They are transposed for the both, NCHW and NHWC models since MO always stores them in NCHW layout. - */ -DECL_PASS(TransposeWeightsFromNCHWToNHWC); - /** * @brief fuse FullyConnected and Eltwise layers, also in case there is a Reshape between them having input with only * one dimension > 1 diff --git a/src/plugins/intel_gna/src/transformations/decompose_mvn.cpp b/src/plugins/intel_gna/src/transformations/decompose_mvn.cpp index f9f4a01068c..de7fc6a5075 100644 --- a/src/plugins/intel_gna/src/transformations/decompose_mvn.cpp +++ b/src/plugins/intel_gna/src/transformations/decompose_mvn.cpp @@ -26,7 +26,7 @@ struct MVNData { size_t W; size_t num_parts; float eps; - op::MVNEpsMode eps_mode; + ov::op::MVNEpsMode eps_mode; bool normalize_variance; element::Type element_type; std::string name; @@ -138,7 +138,7 @@ static std::shared_ptr NormalizeVariance(const std::shared_ptrset_friendly_name(mvn_data.name + "_Avg3"); auto avg_conv_3 = std::make_shared(transposed_avg_conv_3, @@ -156,7 +156,7 @@ static std::shared_ptr NormalizeVariance(const std::shared_ptrset_friendly_name(mvn_data.name + "_Avg4"); auto avg_conv_4 = std::make_shared(transposed_avg_conv_4, @@ -243,7 +243,7 @@ static void Decompose(const std::shared_ptr mvn, const MVNData& mvn CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}, - op::PadType::VALID); + ov::op::PadType::VALID); transposed_avg_conv_1->set_friendly_name(mvn_data.name + "_Avg1"); auto avg_conv_1 = std::make_shared(transposed_avg_conv_1, @@ -261,7 +261,7 @@ static void Decompose(const std::shared_ptr mvn, const MVNData& mvn CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}, - op::PadType::VALID); + ov::op::PadType::VALID); transposed_avg_conv_2->set_friendly_name(mvn_data.name + "_Avg2"); auto avg_conv_2 = std::make_shared(transposed_avg_conv_2, diff --git a/src/plugins/intel_gna/src/transformations/fuse_conv_bias_activation.cpp b/src/plugins/intel_gna/src/transformations/fuse_conv_bias_activation.cpp index 8b580ffb8f7..fbf3cdaf315 100644 --- a/src/plugins/intel_gna/src/transformations/fuse_conv_bias_activation.cpp +++ b/src/plugins/intel_gna/src/transformations/fuse_conv_bias_activation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2023 Intel Corporation +// Copyright (C) 2023 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "fuse_conv_bias_activation.hpp" diff --git a/src/plugins/intel_gna/src/transformations/gather_sinking.cpp b/src/plugins/intel_gna/src/transformations/gather_sinking.cpp index eac0ec42ed8..30e13146fa4 100644 --- a/src/plugins/intel_gna/src/transformations/gather_sinking.cpp +++ b/src/plugins/intel_gna/src/transformations/gather_sinking.cpp @@ -12,6 +12,9 @@ #include "openvino/pass/pattern/op/wrap_type.hpp" #include "transformations/gather_sinking_binary.hpp" #include "transformations/gather_sinking_fuse.hpp" +#include "transformations/gather_sinking_matmul.hpp" +#include "transformations/gather_sinking_reshape.hpp" +#include "transformations/gather_sinking_split.hpp" #include "transformations/gather_sinking_transpose_reshape.hpp" #include "transformations/gather_sinking_unary.hpp" @@ -25,6 +28,7 @@ GatherSinkingGeneralForward::GatherSinkingGeneralForward() { add_matcher(); add_matcher(); add_matcher(); + add_matcher(); add_matcher(); } @@ -33,6 +37,9 @@ GatherSinkingGeneralBackward::GatherSinkingGeneralBackward() { add_matcher(); add_matcher(); add_matcher(); + add_matcher(); + add_matcher(); + add_matcher(); add_matcher(); } diff --git a/src/plugins/intel_gna/src/transformations/handle_transposes_around_matmul.cpp b/src/plugins/intel_gna/src/transformations/handle_transposes_around_matmul.cpp index 4d4e364dae0..498f973ba03 100644 --- a/src/plugins/intel_gna/src/transformations/handle_transposes_around_matmul.cpp +++ b/src/plugins/intel_gna/src/transformations/handle_transposes_around_matmul.cpp @@ -14,9 +14,11 @@ #include #include "backend/gna_limitations.hpp" +#include "common/graph_utils.hpp" using namespace ov::intel_gna::pass; using namespace ov::intel_gna::limitations; +using namespace ov::intel_gna::graph_utils; namespace { @@ -171,7 +173,7 @@ HandleTransposeBeforeMatMul::HandleTransposeBeforeMatMul() { auto iter = pattern_map.find(fq); if (iter != pattern_map.end() || (iter = pattern_map.find(constant)) != pattern_map.end()) { auto prev_node = iter->second.get_node_shared_ptr(); - if (Limitations::is_transpose_2d(prev_node->get_output_shape(0))) { + if (is_shape_2d(prev_node->get_output_shape(0))) { InsertTranspose(prev_node, prev_node->get_friendly_name(), true); } } diff --git a/src/plugins/intel_gna/src/transformations/markup_fusable_transpose.cpp b/src/plugins/intel_gna/src/transformations/markup_fusable_transpose.cpp index d01ca140af8..78e6e7def5a 100644 --- a/src/plugins/intel_gna/src/transformations/markup_fusable_transpose.cpp +++ b/src/plugins/intel_gna/src/transformations/markup_fusable_transpose.cpp @@ -34,7 +34,7 @@ bool MarkupFusableTranspose::run_on_model(const std::shared_ptrget_ordered_ops()) { if (!std::dynamic_pointer_cast(node) && - !std::dynamic_pointer_cast(node)) { + !std::dynamic_pointer_cast(node)) { continue; } auto in_dims = node->input(0).get_shape(); diff --git a/src/plugins/intel_gna/src/transformations/replace_gna_nhwc_layers.cpp b/src/plugins/intel_gna/src/transformations/replace_gna_nhwc_layers.cpp index df4c1fe8fc2..7f8fac2c58d 100644 --- a/src/plugins/intel_gna/src/transformations/replace_gna_nhwc_layers.cpp +++ b/src/plugins/intel_gna/src/transformations/replace_gna_nhwc_layers.cpp @@ -47,7 +47,7 @@ ov::Shape make_transpose_order_nchw2nhwc(size_t shape_size) { ov::Shape shape(shape_size); std::iota(shape.begin(), shape.end(), 0); - for (int i = 1; i < shape.size() - 1; ++i) + for (size_t i = 1; i < shape.size() - 1; ++i) shape[i] = shape[i + 1]; *(shape.end() - 1) = 1; diff --git a/src/plugins/intel_gna/src/transformations/reshape_transpose_substitute.cpp b/src/plugins/intel_gna/src/transformations/reshape_transpose_substitute.cpp new file mode 100644 index 00000000000..5b9b5579a53 --- /dev/null +++ b/src/plugins/intel_gna/src/transformations/reshape_transpose_substitute.cpp @@ -0,0 +1,162 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/reshape_transpose_substitute.hpp" + +#include +#include +#include + +#include "openvino/opsets/opset12.hpp" +#include "openvino/pass/pattern/op/wrap_type.hpp" + +using namespace ov; +using namespace ov::opset12; +using namespace ov::pass::pattern; +using namespace ov::op::util; +using namespace ov::intel_gna::pass; + +namespace { + +/** + * @brief Checks if output_shape is just permutation of input_shape dimensions + */ +bool is_shape_permutation(const Shape& input_shape, const Shape& output_shape) { + std::unordered_map values_count; + for (const auto& dim : input_shape) { + auto it = values_count.find(dim); + if (it != values_count.end()) { + ++it->second; + continue; + } + values_count[dim] = 1; + } + for (const auto& dim : output_shape) { + auto it = values_count.find(dim); + if (it != values_count.end()) { + --it->second; + if (!it->second) { + values_count.erase(it); + } + continue; + } + return false; + } + return values_count.empty(); +} + +/** + * @brief Checks if all shape dimensions have different values + */ +bool are_dims_unique(const Shape& shape) { + std::unordered_set dims; + for (const auto& dim : shape) { + if (dims.find(dim) != dims.end()) + return false; + dims.insert(dim); + } + return true; +} + +AxisVector get_unique_shapes_transpose_order(const Shape& input_shape, const Shape& output_shape) { + std::unordered_map input_shape_items; + for (size_t i = 0; i < input_shape.size(); ++i) { + input_shape_items[input_shape[i]] = i; + } + + AxisVector order; + order.reserve(output_shape.size()); + for (const auto& output_dim : output_shape) { + order.push_back(input_shape_items.find(output_dim)->second); + } + + return order; +} + +/** + * @brief Changes shape according to specified order + */ +Shape apply_permutation(const Shape& shape, const AxisVector& order) { + Shape transposed_shape; + transposed_shape.reserve(shape.size()); + for (const auto& position : order) { + transposed_shape.push_back(shape[position]); + } + return transposed_shape; +} + +AxisVector find_suitable_transpose_order(const Shape& input_shape, + const Shape& output_shape, + const std::vector& orders) { + for (const auto& order : orders) { + const Shape transposed_shape = apply_permutation(input_shape, order); + if ((transposed_shape.size() == output_shape.size()) && + std::equal(transposed_shape.begin(), transposed_shape.end(), output_shape.begin())) + return order; + } + + return {}; +} + +AxisVector find_suitable_transpose_order(const Shape& input_shape, const Shape& output_shape) { + static std::vector orders_4d = {AxisVector{0, 2, 3, 1}, AxisVector{0, 3, 1, 2}}; + static std::vector orders_3d = {AxisVector{1, 2, 0}, AxisVector{2, 0, 1}}; + + switch (input_shape.size()) { + case 4: + return find_suitable_transpose_order(input_shape, output_shape, orders_4d); + case 3: + return find_suitable_transpose_order(input_shape, output_shape, orders_3d); + case 2: + return AxisVector{1, 0}; + default: + return {}; + } + return {}; +} + +/** + * @brief Finds applicable transpose order to get output_shape from input_shape if + * it is possible + * Returns empty AxisVector on unsupported case + */ +AxisVector get_transpose_order(const Shape& input_shape, const Shape& output_shape) { + if (are_dims_unique(input_shape)) + return get_unique_shapes_transpose_order(input_shape, output_shape); + return find_suitable_transpose_order(input_shape, output_shape); +} + +} // namespace + +ReshapeTransposeSubstitute::ReshapeTransposeSubstitute() { + MATCHER_SCOPE(ReshapeTransposeSubstitute); + + auto reshape_label = wrap_type({any_input(), any_input()}, [](const Output& output) { + if (!has_static_shape()(output)) + return false; + const Node* node = output.get_node(); + return is_shape_permutation(node->get_input_shape(0), node->get_output_shape(0)); + }); + + ov::matcher_pass_callback matcher_pass_callback = [=](Matcher& m) { + const auto& pattern_to_output = m.get_pattern_value_map(); + auto reshape = as_type_ptr(pattern_to_output.at(reshape_label).get_node_shared_ptr()); + + const AxisVector transpose_order = + get_transpose_order(reshape->get_input_shape(0), reshape->get_output_shape(0)); + if (transpose_order.empty()) + return false; + + auto new_transpose_const = + std::make_shared(element::i64, Shape{transpose_order.size()}, transpose_order); + auto new_transpose = std::make_shared(reshape->input_value(0), new_transpose_const); + + replace_node_update_name(reshape, new_transpose); + + return true; + }; + + auto m = std::make_shared(reshape_label, matcher_name); + register_matcher(m, matcher_pass_callback); +} diff --git a/src/plugins/intel_gna/src/transformations/reshape_transpose_substitute.hpp b/src/plugins/intel_gna/src/transformations/reshape_transpose_substitute.hpp new file mode 100644 index 00000000000..b883e719d6b --- /dev/null +++ b/src/plugins/intel_gna/src/transformations/reshape_transpose_substitute.hpp @@ -0,0 +1,34 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "openvino/pass/graph_rewrite.hpp" +#include "transformations_visibility.hpp" + +namespace ov { +namespace intel_gna { +namespace pass { + +/** + * @brief Substitute Reshape with Transpose if it possible. + * It is usefull with Tranpose/Gather sinking transformations to simplify Transpose movement. + * TransposeSinking is not possible to use with Reshapes (except some cases when Reshape is Squeeze/Unsqueeze). + * GatherSinking is much harder to implement for all existed layer types. + * + * any layer any layer + * | | + * Reshape => Transpose + * | | + * any layer any layer + */ +class ReshapeTransposeSubstitute : public ov::pass::MatcherPass { +public: + OPENVINO_RTTI("ReshapeTransposeSubstitute", "0"); + ReshapeTransposeSubstitute(); +}; + +} // namespace pass +} // namespace intel_gna +} // namespace ov diff --git a/src/plugins/intel_gna/src/transformations/rotate_inputs.cpp b/src/plugins/intel_gna/src/transformations/rotate_inputs.cpp new file mode 100644 index 00000000000..7a3c661fff8 --- /dev/null +++ b/src/plugins/intel_gna/src/transformations/rotate_inputs.cpp @@ -0,0 +1,79 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/rotate_inputs.hpp" + +#include "common/graph_utils.hpp" +#include "openvino/cc/ngraph/itt.hpp" +#include "openvino/opsets/opset11.hpp" +#include "openvino/pass/pattern/op/wrap_type.hpp" +#include "ops/gna_convolution.hpp" + +using namespace ov::opset11; +using namespace ov::pass; +using namespace ov::intel_gna::pass; +using namespace ov::intel_gna::graph_utils; + +namespace { +inline bool is_skip_operation(const std::shared_ptr& node) { + return (std::dynamic_pointer_cast(node) != nullptr || + std::dynamic_pointer_cast(node) != nullptr || + std::dynamic_pointer_cast(node) != nullptr || + std::dynamic_pointer_cast(node) != nullptr || + std::dynamic_pointer_cast(node) != nullptr) && + has_n_consumers(node, 1); +} +} // namespace + +InsertConvolutionTransposeHW::InsertConvolutionTransposeHW() { + MATCHER_SCOPE(InsertConvolutionTransposeHW); + + const auto conv_pattern = pattern::wrap_type( + {pattern::any_input(), pattern::any_input()}, + [](const ov::Output& node) { + std::shared_ptr conv = + std::dynamic_pointer_cast(node.get_node_shared_ptr()); + helper::ConvData conv_data; + helper::GetConvData(conv, conv_data); + return gna_convolution_layer::should_transpose_h_w(static_cast(conv_data.input_height), + static_cast(conv_data.filter_height), + static_cast(conv_data.input_channel_count), + static_cast(conv_data.filter_stride_height)); + }); + + ov::matcher_pass_callback callback = [=](pattern::Matcher& m) { + const auto& pattern_map = m.get_pattern_value_map(); + + // auto param_node = pattern_map.at(param_pattern).get_node_shared_ptr(); + auto conv_node = pattern_map.at(conv_pattern).get_node_shared_ptr(); + + std::shared_ptr target_node = + graph_utils::get_prev_node_skipping_certain(conv_node->get_input_node_shared_ptr(0), is_skip_operation); + std::shared_ptr param_node = std::dynamic_pointer_cast(target_node); + + if (!param_node) { + return false; + } + + // transpose all convolution inputs + for (const auto& conv_input : conv_node->inputs()) { + // Transpose H and W (NHWC -> NWHC) + ov::AxisVector tr_axis = {0, 2, 1, 3}; + auto transpose_const = std::make_shared(ov::element::i8, ov::Shape{tr_axis.size()}, tr_axis); + auto transpose = std::make_shared(conv_input.get_source_output(), transpose_const); + + // Reshape out + ov::Shape shape_out = conv_input.get_shape(); + auto reshape_out_const = + std::make_shared(ov::element::i32, ov::Shape{shape_out.size()}, shape_out); + auto reshape_out = std::make_shared(transpose, reshape_out_const, false); + + conv_input.replace_source_output(reshape_out); + } + return true; + }; + + auto m = std::make_shared(conv_pattern, matcher_name); + this->register_matcher(m, callback); +} diff --git a/src/plugins/intel_gna/src/transformations/rotate_inputs.hpp b/src/plugins/intel_gna/src/transformations/rotate_inputs.hpp new file mode 100644 index 00000000000..fc84b4f4065 --- /dev/null +++ b/src/plugins/intel_gna/src/transformations/rotate_inputs.hpp @@ -0,0 +1,41 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "openvino/pass/graph_rewrite.hpp" + +namespace ov { +namespace intel_gna { +namespace pass { + +/** + * @brief Transpose convolution inputs (HW->WH) + * when it is directly connected to network inputs + * + * Searches for next pattern + * Any input layer + * | + * Reshape/FQ/Squeeze/Usqueeze + * | + * Convolution + * + * And transforms to + * Any input layer + * | + * Transpose + * | + * Reshape/FQ/Squeeze/Usqueeze + * | + * Convolution + */ +class InsertConvolutionTransposeHW : public ov::pass::MatcherPass { +public: + OPENVINO_RTTI("InsertConvolutionTransposeHW", "0"); + InsertConvolutionTransposeHW(); +}; + +} // namespace pass +} // namespace intel_gna +} // namespace ov diff --git a/src/plugins/intel_gna/src/transformations/ts_concat.cpp b/src/plugins/intel_gna/src/transformations/ts_concat_forward.cpp similarity index 98% rename from src/plugins/intel_gna/src/transformations/ts_concat.cpp rename to src/plugins/intel_gna/src/transformations/ts_concat_forward.cpp index 078898c162e..73119b4df4b 100644 --- a/src/plugins/intel_gna/src/transformations/ts_concat.cpp +++ b/src/plugins/intel_gna/src/transformations/ts_concat_forward.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "transformations/ts_concat.hpp" +#include "transformations/ts_concat_forward.hpp" #include @@ -23,7 +23,6 @@ using namespace ov::intel_gna::pass::helper; using namespace ov::intel_gna::limitations; namespace { - bool is_concat_sinked(const Output& output) { auto concat_node = ov::as_type_ptr(output.get_node_shared_ptr()); @@ -41,7 +40,6 @@ bool is_concat_sinked(const Output& output) { return false; } - } // namespace TSConcatForward::TSConcatForward() { diff --git a/src/plugins/intel_gna/src/transformations/ts_concat.hpp b/src/plugins/intel_gna/src/transformations/ts_concat_forward.hpp similarity index 100% rename from src/plugins/intel_gna/src/transformations/ts_concat.hpp rename to src/plugins/intel_gna/src/transformations/ts_concat_forward.hpp diff --git a/src/plugins/intel_gna/src/transformations/ts_split.cpp b/src/plugins/intel_gna/src/transformations/ts_split_backward.cpp similarity index 99% rename from src/plugins/intel_gna/src/transformations/ts_split.cpp rename to src/plugins/intel_gna/src/transformations/ts_split_backward.cpp index c0843978366..aa62b88d85b 100644 --- a/src/plugins/intel_gna/src/transformations/ts_split.cpp +++ b/src/plugins/intel_gna/src/transformations/ts_split_backward.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "transformations/ts_split.hpp" +#include "transformations/ts_split_backward.hpp" #include diff --git a/src/plugins/intel_gna/src/transformations/ts_split.hpp b/src/plugins/intel_gna/src/transformations/ts_split_backward.hpp similarity index 100% rename from src/plugins/intel_gna/src/transformations/ts_split.hpp rename to src/plugins/intel_gna/src/transformations/ts_split_backward.hpp diff --git a/src/plugins/intel_gna/src/transformations/utils/transformation_helper.cpp b/src/plugins/intel_gna/src/transformations/utils/transformation_helper.cpp index b16e18cb793..0d36cba1de8 100644 --- a/src/plugins/intel_gna/src/transformations/utils/transformation_helper.cpp +++ b/src/plugins/intel_gna/src/transformations/utils/transformation_helper.cpp @@ -6,17 +6,20 @@ #include "log/debug.hpp" #include "openvino/core/rt_info.hpp" -#include "openvino/opsets/opset10.hpp" +#include "openvino/opsets/opset12.hpp" #include "openvino/pass/pattern/op/wrap_type.hpp" +#include "ops/gna_convolution.hpp" +#include "ops/gna_max_pool.hpp" +#include "transformations/rt_info/transpose_sinking_attr.hpp" + +using namespace ov::opset12; namespace ov { namespace intel_gna { namespace pass { namespace helper { -using namespace ov::opset10; - -void GetConvData(std::shared_ptr conv, ConvData& conv_data) { +void GetConvData(std::shared_ptr conv, ConvData& conv_data) { OPENVINO_ASSERT(conv); conv_data.output_height = conv->get_output_shape(0)[2]; conv_data.output_width = conv->get_output_shape(0)[3]; @@ -40,17 +43,17 @@ void GetConvData(std::shared_ptr conv, ConvData& conv conv_data.element_type = conv->get_element_type(); } -void GetConvData(std::shared_ptr conv, ConvData& conv_data) { +void GetConvData(std::shared_ptr conv, ConvData& conv_data) { OPENVINO_ASSERT(conv); conv_data.output_height = conv->get_output_shape(0)[2]; conv_data.output_width = conv->get_output_shape(0)[3]; - conv_data.input_channel_count = conv->input_value(0).get_shape()[1]; - conv_data.input_height = conv->input_value(0).get_shape()[2]; - conv_data.input_width = conv->input_value(0).get_shape()[3]; + conv_data.input_channel_count = conv->input_value(0).get_shape()[3]; + conv_data.input_height = conv->input_value(0).get_shape()[1]; + conv_data.input_width = conv->input_value(0).get_shape()[2]; conv_data.filter_count = conv->input_value(1).get_shape()[0]; - conv_data.filter_channel_count = conv->input_value(1).get_shape()[1]; - conv_data.filter_height = conv->input_value(1).get_shape()[2]; - conv_data.filter_width = conv->input_value(1).get_shape()[3]; + conv_data.filter_channel_count = conv->input_value(1).get_shape()[3]; + conv_data.filter_height = conv->input_value(1).get_shape()[1]; + conv_data.filter_width = conv->input_value(1).get_shape()[2]; conv_data.filter_dilation_height = conv->get_dilations()[0]; conv_data.filter_dilation_width = conv->get_dilations()[1]; conv_data.filter_stride_height = conv->get_strides()[0]; @@ -180,6 +183,75 @@ void swap_names(std::shared_ptr node1, std::shared_ptr node2 swap_output_names(node1->output(0), node2->output(0)); } +ov::AxisVector reverse_transpose_order(const ov::AxisVector& axis_order) { + ov::AxisVector out(axis_order.size()); + for (size_t i = 0; i < axis_order.size(); i++) { + out.at(axis_order[i]) = i; + } + return out; +} + +ov::NodeVector find_input_transposes(const std::shared_ptr& node) { + ov::NodeVector transposes; + for (size_t input_idx = 0; input_idx < node->get_input_size(); ++input_idx) { + auto input_node = node->get_input_node_shared_ptr(input_idx); + auto transpose_node = ov::as_type_ptr(input_node); + if (transpose_node) + transposes.push_back(transpose_node); + } + + return transposes; +} + +void mark_input_transposes_as_nosinking(std::shared_ptr node) { + for (const auto& input : find_input_transposes(node)) + ov::mark_as_no_sinking_node(input); +} + +TransposeInfo get_first_input_transpose(const std::shared_ptr& node) { + for (size_t input_idx = 0; input_idx < node->get_input_size(); ++input_idx) { + std::shared_ptr input_node = node->get_input_node_shared_ptr(input_idx); + auto transpose_node = as_type_ptr(input_node); + if (!transpose_node) + continue; + auto constant_node = as_type_ptr(transpose_node->input_value(1).get_node_shared_ptr()); + if (!constant_node) + continue; + { + TransposeInfo input_info; + input_info.transpose = transpose_node; + input_info.transpose_const = constant_node; + return input_info; + } + } + + return {}; +} + +TransposeInfo get_first_output_transpose(const std::shared_ptr& node) { + for (size_t i = 0; i < node->get_output_size(); ++i) { + for (const auto& input : node->output(i).get_target_inputs()) { + Node* node = input.get_node(); + if (!dynamic_cast(node)) + continue; + auto transpose_node = as_type_ptr(node->shared_from_this()); + if (!transpose_node) + continue; + auto constant_node = as_type_ptr(transpose_node->input_value(1).get_node_shared_ptr()); + if (!constant_node) + continue; + { + TransposeInfo input_info; + input_info.transpose = transpose_node; + input_info.transpose_const = constant_node; + return input_info; + } + } + } + + return {}; +} + } // namespace helper } // namespace pass } // namespace intel_gna diff --git a/src/plugins/intel_gna/src/transformations/utils/transformation_helper.hpp b/src/plugins/intel_gna/src/transformations/utils/transformation_helper.hpp index cc6c4626658..2b9d4cc67d6 100644 --- a/src/plugins/intel_gna/src/transformations/utils/transformation_helper.hpp +++ b/src/plugins/intel_gna/src/transformations/utils/transformation_helper.hpp @@ -7,6 +7,9 @@ #include #include +#include "openvino/opsets/opset12.hpp" +#include "ops/gna_convolution.hpp" + namespace ov { namespace intel_gna { namespace pass { @@ -44,12 +47,12 @@ struct ConvData { void GetConvData(std::shared_ptr conv, ConvData& conv_data); /** - * @brief gets all legacy convolution related data into a struct for further processing - * @param conv legacy convolution node to get data of + * @brief gets all convolution related data into a struct for further processing + * @param conv GNA custom convolution node to get data of * @param conv_data convolution data structure to put data into * @return void */ -void GetConvData(std::shared_ptr conv, ConvData& conv_data); +void GetConvData(std::shared_ptr conv, ConvData& conv_data); /** * @brief ngraph matcher predicate fusing existing predicates for consumers count and rank of a layer @@ -116,6 +119,41 @@ void swap_friendly_names(std::shared_ptr, std::shared_ptr); */ void swap_names(std::shared_ptr, std::shared_ptr); +/** + * @brief Reverses axis order. Final result will be such an order, that together + * with initial order will be {0, 1, 2, ...} + */ +ov::AxisVector reverse_transpose_order(const ov::AxisVector& axis_order); + +/** + * @brief Finds all input node transposes + */ +ov::NodeVector find_input_transposes(const std::shared_ptr& node); + +/** + * @brief Marks all input transposes with flag NoSinking + */ +void mark_input_transposes_as_nosinking(std::shared_ptr node); + +struct TransposeInfo { + std::shared_ptr transpose; + std::shared_ptr transpose_const; + + bool isEmpty() const { + return !transpose || !transpose_const; + } +}; + +/** + * @brief Finds first input node transpose + */ +TransposeInfo get_first_input_transpose(const std::shared_ptr& node); + +/** + * @brief Finds first output node transpose + */ +TransposeInfo get_first_output_transpose(const std::shared_ptr& node); + } // namespace helper } // namespace pass } // namespace intel_gna diff --git a/src/plugins/intel_gna/tests/deprecated/unit/engines/gna/i16_quantisation_test.cpp b/src/plugins/intel_gna/tests/deprecated/unit/engines/gna/i16_quantisation_test.cpp index 31ba21b6dfe..3187b27fba4 100644 --- a/src/plugins/intel_gna/tests/deprecated/unit/engines/gna/i16_quantisation_test.cpp +++ b/src/plugins/intel_gna/tests/deprecated/unit/engines/gna/i16_quantisation_test.cpp @@ -273,32 +273,6 @@ TEST_F(I16QuantisationTest, EltwiseSumm_onlyOneIdentityInsertion) { .once(); } -TEST_F(I16QuantisationTest, canDetectLeakyRelu) { - assert_that() - .onInferModel(TFLeakyReluModel()) - .inNotCompactMode() - .withGNAConfig(GNA_CONFIG_KEY(SCALE_FACTOR), 1.0f) - .gna() - .propagate_forward() - .called_with() - .pwl_inserted_into_nnet(); -} - -TEST_F(I16QuantisationTest, MaxPool_followedAfterActivation) { - assert_that() - .onInferModel(maxpoolAfterRelu()) - .inNotCompactMode() - .withGNAConfig(GNA_CONFIG_KEY(SCALE_FACTOR), 1.0f) - .gna() - .propagate_forward() - .called_with() - .convolution_inserted_into_nnet() - .And() - .pwl_inserted_into_nnet() - .And() - .max_pooling_inserted_into_nnet(); -} - TEST_F(I16QuantisationTest, EltwiseMull_willInsertTwoIdentities) { assert_that() .onInferModel(eltwiseMulModel()) diff --git a/src/plugins/intel_gna/tests/functional/pass_tests/concat_transpose.cpp b/src/plugins/intel_gna/tests/functional/pass_tests/concat_transpose.cpp new file mode 100644 index 00000000000..c977efd2d4d --- /dev/null +++ b/src/plugins/intel_gna/tests/functional/pass_tests/concat_transpose.cpp @@ -0,0 +1,137 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// +#include +#include +#include +#include +#include + +#include "common_test_utils/common_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "openvino/opsets/opset12.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "shared_test_classes/base/ov_subgraph.hpp" + +using namespace ov::opset12; +using namespace ov::test; + +namespace TransposesConcatTests { + +typedef std::tuple, // Configuration + std::map // Additional Configuration + > + TransposesConcatTestParamsSet; + +class TransposesConcatTest : public testing::WithParamInterface, + virtual public SubgraphBaseTest { +public: + static std::string get_test_case_name(const testing::TestParamInfo& obj) { + ov::element::Type net_type, in_type, out_type; + std::string target_device; + std::map conf, conf_ext; + + std::tie(net_type, target_device, conf, conf_ext) = obj.param; + for (auto& conf_item : conf_ext) { + conf[conf_item.first] = conf_item.second; + } + + std::ostringstream result; + result << "netPRC=" << net_type << "_"; + result << "trgDev=" << target_device; + for (auto const& conf_i : conf) { + result << "_configItem=" << conf_i.first.c_str() << "_" << conf_i.second.c_str(); + } + return result.str(); + } + +protected: + void SetUp() override { + abs_threshold = std::numeric_limits::max(); + rel_threshold = std::numeric_limits::max(); + std::map conf, conf_ext; + std::tie(m_net_type, targetDevice, conf, conf_ext) = this->GetParam(); + + std::vector input_shapes = static_shapes_to_test_representation({{10, 1}}); + configuration.insert(conf.begin(), conf.end()); + for (auto& conf_item : conf_ext) { + configuration[conf_item.first] = conf_item.second; + } + init_input_shapes(input_shapes); + } + + void init_test_model() { + std::vector> input_shapes = {{10, 1}}; + + auto params = ngraph::builder::makeParams(m_net_type, input_shapes); + + std::vector shape_1 = {10, 128}; + std::vector shape_2 = {10, 192}; + std::vector shape_3 = {10, 256}; + + std::shared_ptr input_node = params[0]; + + std::vector mulConstWeights(1 * 576); + std::iota(mulConstWeights.begin(), mulConstWeights.end(), 0.1f); + auto constMul1 = ngraph::builder::makeConstant(m_net_type, ov::Shape{1, 576}, mulConstWeights); + auto matmul1 = std::make_shared(input_node, constMul1, false, false); + + auto split_axis = std::make_shared(ov::element::u8, ov::Shape{1}, std::vector{1}); + auto split_slices = + std::make_shared(ov::element::u32, ov::Shape{3}, std::vector{128, 192, 256}); + auto split_node = std::make_shared(matmul1, split_axis, split_slices); + + std::vector transpose_order = {1, 0}; + auto transpose_const_1 = + std::make_shared(ov::element::u8, ov::Shape{transpose_order.size()}, transpose_order); + auto transpose_const_2 = + std::make_shared(ov::element::u8, ov::Shape{transpose_order.size()}, transpose_order); + auto transpose_const_3 = + std::make_shared(ov::element::u8, ov::Shape{transpose_order.size()}, transpose_order); + + auto transpose_node_1 = std::make_shared(split_node->output(0), transpose_const_1); + auto transpose_node_2 = std::make_shared(split_node->output(1), transpose_const_2); + auto transpose_node_3 = std::make_shared(split_node->output(2), transpose_const_3); + + const int axis = 0; + auto concat_node = + std::make_shared(ov::OutputVector{transpose_node_1, transpose_node_2, transpose_node_3}, axis); + + std::vector reshape_pattern = {1, 2, 5, 576}; + auto reshape_const = + std::make_shared(ov::element::u16, ov::Shape{reshape_pattern.size()}, reshape_pattern); + auto reshape_node = std::make_shared(concat_node, reshape_const, false); + + ov::ResultVector results{std::make_shared(reshape_node)}; + function = std::make_shared(results, params, "concat"); + } + + ov::element::Type m_net_type; + std::vector m_input_shape; +}; + +TEST_P(TransposesConcatTest, CompareWithRefs) { + init_test_model(); + run(); +} + +std::vector> configs = {{{"GNA_DEVICE_MODE", "GNA_SW_EXACT"}}}; + +std::vector> target_configs = {{{"GNA_DEVICE_MODE", "GNA_SW_FP32"}}, + {{"GNA_EXEC_TARGET", "GNA_TARGET_2_0"}}, + {{"GNA_EXEC_TARGET", "GNA_TARGET_3_0"}}, + {{"GNA_EXEC_TARGET", "GNA_TARGET_3_5"}}}; + +const ov::element::TypeVector input_precisions = {ov::element::f32}; + +INSTANTIATE_TEST_SUITE_P(smoke_transposes_concat, + TransposesConcatTest, + ::testing::Combine(::testing::ValuesIn(input_precisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(configs), + ::testing::ValuesIn(target_configs)), + TransposesConcatTest::get_test_case_name); + +} // namespace TransposesConcatTests diff --git a/src/plugins/intel_gna/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp b/src/plugins/intel_gna/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp index d84182c4a1a..462ebd73855 100644 --- a/src/plugins/intel_gna/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp +++ b/src/plugins/intel_gna/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp @@ -108,7 +108,7 @@ void ConvolutionLayerTestFixture::SetUp() { auto filter_size = std::accumulate(std::begin(kernel), std::end(kernel), 1, std::multiplies()); filter_weights = - CommonTestUtils::generate_float_numbers(convOutChannels * inputShape[1] * filter_size, -0.5f, 0.5f); + CommonTestUtils::generate_float_numbers(convOutChannels * inputShape[1] * filter_size, -0.1f, 0.1f); auto conv = std::dynamic_pointer_cast(ngraph::builder::makeConvolution(paramOuts[0], ngPrc, diff --git a/src/plugins/intel_gna/tests/unit/gna_memory_compact_test.cpp b/src/plugins/intel_gna/tests/unit/gna_memory_compact_test.cpp index b59d5287b6d..b86274cbd6e 100644 --- a/src/plugins/intel_gna/tests/unit/gna_memory_compact_test.cpp +++ b/src/plugins/intel_gna/tests/unit/gna_memory_compact_test.cpp @@ -310,11 +310,11 @@ class GNAMemoryOrderTest : public ::testing::Test {}; TEST_F(GNAMemoryOrderTest, orderingFusedLayersActivation) { auto plugin = GNAPluginTested(); - ov::Shape input_shape = {1, 8, 20, 16}; + ov::Shape input_shape = {1, 16, 20, 16}; ov::Strides strides = {1, 1}; ov::Strides dilations = {1, 1}; ov::CoordinateDiff pad_begin(0, 0), pad_end(0, 0); - auto weights = ngraph::builder::makeConstant(ov::element::f32, {8, 8, 1, 1}, {1.f}); + auto weights = ngraph::builder::makeConstant(ov::element::f32, {8, 16, 1, 1}, {1.f}); auto input = std::make_shared(ov::element::f32, input_shape); auto conv = std::make_shared(input, weights, strides, pad_begin, pad_end, dilations); @@ -332,11 +332,11 @@ TEST_F(GNAMemoryOrderTest, orderingFusedLayersActivation) { TEST_F(GNAMemoryOrderTest, orderingFusedLayersMaxPool) { auto plugin = GNAPluginTested(); - ov::Shape input_shape = {1, 8, 20, 16}; + ov::Shape input_shape = {1, 16, 20, 16}; ov::Strides strides = {1, 1}; ov::Strides dilations = {1, 1}; ov::CoordinateDiff pad_begin(0, 0), pad_end(0, 0); - auto weights = ngraph::builder::makeConstant(ov::element::f32, {8, 8, 1, 1}, {1.f}); + auto weights = ngraph::builder::makeConstant(ov::element::f32, {8, 16, 1, 1}, {1.f}); auto input = std::make_shared(ov::element::f32, input_shape); auto conv = std::make_shared(input, weights, strides, pad_begin, pad_end, dilations); @@ -361,11 +361,11 @@ TEST_F(GNAMemoryOrderTest, orderingFusedLayersMaxPool) { TEST_F(GNAMemoryOrderTest, orderingFusedLayersActivationMaxPool) { auto plugin = GNAPluginTested(); - ov::Shape input_shape = {1, 8, 20, 16}; + ov::Shape input_shape = {1, 16, 20, 16}; ov::Strides strides = {1, 1}; ov::Strides dilations = {1, 1}; ov::CoordinateDiff pad_begin(0, 0), pad_end(0, 0); - auto weights = ngraph::builder::makeConstant(ov::element::f32, {8, 8, 1, 1}, {1.f}); + auto weights = ngraph::builder::makeConstant(ov::element::f32, {8, 16, 1, 1}, {1.f}); auto input = std::make_shared(ov::element::f32, input_shape); auto conv = std::make_shared(input, weights, strides, pad_begin, pad_end, dilations); diff --git a/src/plugins/intel_gna/tests/unit/transformations/gather_sinking_test.cpp b/src/plugins/intel_gna/tests/unit/transformations/gather_sinking_test.cpp new file mode 100644 index 00000000000..a0cb85812d7 --- /dev/null +++ b/src/plugins/intel_gna/tests/unit/transformations/gather_sinking_test.cpp @@ -0,0 +1,130 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/gather_sinking.hpp" + +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" +#include "gtest/gtest.h" +#include "transformations/gather_sinking_matmul.hpp" +#include "transformations/gather_sinking_reshape.hpp" +#include "transformations/gather_sinking_split.hpp" +#include "transformations/replace_gna_nhwc_layers.hpp" + +using namespace ov; +using namespace ov::opset10; + +TEST(TransposeNCHW, Convolution) { + std::shared_ptr function; + { + auto input_params = std::make_shared(element::Type_t::f32, Shape{1, 1, 41, 1}); + auto kernel = Constant::create(ov::element::f32, {4, 1, 3, 1}, {1}); + + auto convolution = std::make_shared(input_params, + kernel, + Strides{2, 1}, + CoordinateDiff{0, 0}, + CoordinateDiff{0, 0}, + Strides{1, 1}); + + const auto result = std::make_shared(convolution); + function = std::make_shared(OutputVector{result}, ParameterVector{input_params}); + } + + std::shared_ptr orig_function = function->clone(); + ov::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(function); + ASSERT_NO_THROW(check_rt_info(function)); + + std::shared_ptr reference_function; + { + auto input_params = std::make_shared(element::Type_t::f32, Shape{1, 1, 41, 1}); + + auto transpose_before_const = Constant::create(element::i32, Shape{4}, {0, 2, 3, 1}); + + auto transpose_before = std::make_shared(input_params, transpose_before_const); + + auto kernel = Constant::create(ov::element::f32, {4, 1, 3, 1}, {1}); + + auto transpose_conv_const = Constant::create(element::i32, Shape{4}, {0, 2, 3, 1}); + + auto transpose_conv_before = std::make_shared(input_params, transpose_conv_const); + + auto transpose_conv_constant = std::make_shared(kernel, transpose_conv_const); + + auto convolution = std::make_shared(transpose_before, + transpose_conv_constant, + Strides{2, 1}, + CoordinateDiff{0, 0}, + CoordinateDiff{0, 0}, + Strides{1, 1}); + + auto transpose_after_const = Constant::create(element::i32, Shape{4}, {0, 3, 1, 2}); + + auto transpose_after = std::make_shared(convolution, transpose_after_const); + + const auto result = std::make_shared(transpose_after); + reference_function = std::make_shared(OutputVector{result}, ParameterVector{input_params}); + } + + const FunctionsComparator func_comparator = + FunctionsComparator::with_default().enable(FunctionsComparator::ATTRIBUTES); + const FunctionsComparator::Result result = func_comparator(function, reference_function); + ASSERT_TRUE(result.valid) << result.message; +} + +TEST(TransposeNCHW, MaxPool) { + std::shared_ptr function; + { + auto input_params = std::make_shared(element::Type_t::f32, Shape{1, 1, 41, 1}); + + auto max_pool = + std::make_shared(input_params, Strides{2, 1}, Shape{0, 0}, Shape{0, 0}, Shape{4, 1}); + + const auto result = std::make_shared(max_pool); + function = std::make_shared(OutputVector{result}, ParameterVector{input_params}); + } + + std::shared_ptr orig_function = function->clone(); + ov::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(function); + ASSERT_NO_THROW(check_rt_info(function)); + + std::shared_ptr reference_function; + { + auto input_params = std::make_shared(element::Type_t::f32, Shape{1, 1, 41, 1}); + + auto transpose_before_const = Constant::create(element::i32, Shape{4}, {0, 2, 3, 1}); + + auto transpose_before = std::make_shared(input_params, transpose_before_const); + + auto max_pool = std::make_shared(transpose_before, + Strides{2, 1}, + Shape{0, 0}, + Shape{0, 0}, + Shape{4, 1}); + + auto transpose_after_const = Constant::create(element::i32, Shape{4}, {0, 3, 1, 2}); + + auto transpose_after = std::make_shared(max_pool, transpose_after_const); + + const auto result = std::make_shared(transpose_after); + reference_function = std::make_shared(OutputVector{result}, ParameterVector{input_params}); + } + + const FunctionsComparator func_comparator = + FunctionsComparator::with_default().enable(FunctionsComparator::ATTRIBUTES); + const FunctionsComparator::Result result = func_comparator(function, reference_function); + ASSERT_TRUE(result.valid) << result.message; +} diff --git a/src/plugins/intel_gna/tests/unit/transformations/gather_sinking_ts_split_test.cpp b/src/plugins/intel_gna/tests/unit/transformations/gather_sinking_ts_split_test.cpp index 2ee1c225f2b..712a9413c31 100644 --- a/src/plugins/intel_gna/tests/unit/transformations/gather_sinking_ts_split_test.cpp +++ b/src/plugins/intel_gna/tests/unit/transformations/gather_sinking_ts_split_test.cpp @@ -8,7 +8,7 @@ #include "openvino/opsets/opset12.hpp" #include "openvino/pass/manager.hpp" #include "transformations/init_node_info.hpp" -#include "transformations/ts_split.hpp" +#include "transformations/ts_split_backward.hpp" using namespace ov; using namespace ov::opset12; diff --git a/src/tests/functional/shared_test_classes/src/single_layer/convolution.cpp b/src/tests/functional/shared_test_classes/src/single_layer/convolution.cpp index 7a9242a3fc3..879ca0ed728 100644 --- a/src/tests/functional/shared_test_classes/src/single_layer/convolution.cpp +++ b/src/tests/functional/shared_test_classes/src/single_layer/convolution.cpp @@ -58,7 +58,7 @@ void ConvolutionLayerTest::SetUp() { if (targetDevice == CommonTestUtils::DEVICE_GNA) { auto filter_size = std::accumulate(std::begin(kernel), std::end(kernel), 1, std::multiplies()); filter_weights = CommonTestUtils::generate_float_numbers(convOutChannels * inputShape[1] * filter_size, - -0.5f, 0.5f); + -0.1f, 0.1f); } auto conv = std::dynamic_pointer_cast( ngraph::builder::makeConvolution(paramOuts[0], ngPrc, kernel, stride, padBegin, diff --git a/src/tests/functional/shared_test_classes/src/subgraph/input_conv.cpp b/src/tests/functional/shared_test_classes/src/subgraph/input_conv.cpp index b7deaae49c4..bd983a62d59 100644 --- a/src/tests/functional/shared_test_classes/src/subgraph/input_conv.cpp +++ b/src/tests/functional/shared_test_classes/src/subgraph/input_conv.cpp @@ -56,7 +56,7 @@ void InputConvTest::SetUp() { std::vector res; for (std::size_t i = 0; i < out_channels; ++i) { for (std::size_t j = 0; j < kernel_size; ++j) { - j == 0 ? res.emplace_back(1.0f) : res.emplace_back(0.0f); + j == 0 ? res.emplace_back(0.2f) : res.emplace_back(0.0f); } } From 88fa4b040e0d3fa0f590b27044d4f75be760faa8 Mon Sep 17 00:00:00 2001 From: Artyom Anokhov Date: Wed, 28 Jun 2023 22:29:43 +0200 Subject: [PATCH 10/25] Update apt/yum conflict version (#18280) --- cmake/packaging/debian.cmake | 2 +- cmake/packaging/rpm.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/packaging/debian.cmake b/cmake/packaging/debian.cmake index c5684c0df00..baf82cdeb10 100644 --- a/cmake/packaging/debian.cmake +++ b/cmake/packaging/debian.cmake @@ -87,7 +87,7 @@ macro(ov_cpack_settings) # - 2022.1.1, 2022.2 do not have debian packages enabled, distributed only as archives # - 2022.3 is the first release where Debian updated packages are introduced, others 2022.3.X are LTS 2022.3.0 2022.3.1 2022.3.2 2022.3.3 2022.3.4 2022.3.5 - 2023.0.0 + 2023.0.0 2023.0.1 ) # diff --git a/cmake/packaging/rpm.cmake b/cmake/packaging/rpm.cmake index 8155aac88b1..83dfb397c5d 100644 --- a/cmake/packaging/rpm.cmake +++ b/cmake/packaging/rpm.cmake @@ -73,7 +73,7 @@ macro(ov_cpack_settings) # - 2022.1.1, 2022.2 do not have rpm packages enabled, distributed only as archives # - 2022.3 is the first release where RPM updated packages are introduced, others 2022.3.X are LTS 2022.3.0 2022.3.1 2022.3.2 2022.3.3 2022.3.4 2022.3.5 - 2023.0.0 + 2023.0.0 2023.0.1 ) find_host_program(rpmlint_PROGRAM NAMES rpmlint DOC "Path to rpmlint") From 504f1d82376d86739f96de90416bd520e0e87204 Mon Sep 17 00:00:00 2001 From: Wilson Seok Date: Thu, 29 Jun 2023 09:44:38 +0900 Subject: [PATCH 11/25] [GPU] fix pr18171 regression (#18272) --- .../prepare_primitive_fusing.cpp | 5 --- .../intel_gpu/src/graph/program_node.cpp | 7 +++- .../passes/prepare_primitive_fusing_test.cpp | 35 ------------------- 3 files changed, 6 insertions(+), 41 deletions(-) diff --git a/src/plugins/intel_gpu/src/graph/graph_optimizer/prepare_primitive_fusing.cpp b/src/plugins/intel_gpu/src/graph/graph_optimizer/prepare_primitive_fusing.cpp index 4dd48947e69..6ca6a654d6a 100644 --- a/src/plugins/intel_gpu/src/graph/graph_optimizer/prepare_primitive_fusing.cpp +++ b/src/plugins/intel_gpu/src/graph/graph_optimizer/prepare_primitive_fusing.cpp @@ -1063,11 +1063,6 @@ void prepare_primitive_fusing::fuse_simple_primitives(program &p) { auto eltw_in_size = peer_node->get_output_layout(); if (eltw_in_size.is_dynamic()) return; - // When input rank > 4, fused eltwise to gemm should be converted to 4 dim in init_onednn_primitive_attribute() - // But current init_onednn_primitive_attribute() cannot handle dynamic shape case. - auto eltw_in_rank = fused_node->get_output_layout().get_rank(); - if ((fused_node->is_type()) && (eltw_in_rank > 4)) - return; } if (parent1.first->is_type() && !conv_supports_fusings(parent1.first->as())) return; diff --git a/src/plugins/intel_gpu/src/graph/program_node.cpp b/src/plugins/intel_gpu/src/graph/program_node.cpp index 162d8563b89..a6c0c7b5f97 100644 --- a/src/plugins/intel_gpu/src/graph/program_node.cpp +++ b/src/plugins/intel_gpu/src/graph/program_node.cpp @@ -962,10 +962,15 @@ void program_node::init_onednn_primitive_attributes() { auto& desc = cldnn_post_ops[idx]; if (desc.is_type()) { auto fused_desc = desc.typed_desc(); + bool allow_new_shape_infer = get_program().get_config().get_property(ov::intel_gpu::allow_new_shape_infer); if (fused_desc->activation_function == cldnn::activation_func::relu_negative_slope && !fused_desc->additional_params_input.empty()) { auto dep_idx = cldnn_post_ops[idx].outer_dep_start_idx; - auto oc_dim = static_cast(desc.output_layout.get_partial_shape()[1].get_max_length()); + int oc_dim = 1; + if (allow_new_shape_infer) + oc_dim = static_cast(desc.output_layout.get_partial_shape()[1].get_max_length()); + else + oc_dim = static_cast(desc.output_layout.get_tensor().feature.size()); post_ops.append_prelu(1 << oc_dim); update_onednn_post_op_list(onednn_post_op_type::binary_relu, dep_idx); } else if (fused_desc->activation_function == cldnn::activation_func::hard_sigmoid) { diff --git a/src/plugins/intel_gpu/tests/unit/passes/prepare_primitive_fusing_test.cpp b/src/plugins/intel_gpu/tests/unit/passes/prepare_primitive_fusing_test.cpp index 52a139027c6..3030f4a2d96 100644 --- a/src/plugins/intel_gpu/tests/unit/passes/prepare_primitive_fusing_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/passes/prepare_primitive_fusing_test.cpp @@ -515,38 +515,3 @@ TEST(prepare_primitive_fusing, eltwise_fusing_residual_connection) { net.execute(); ASSERT_TRUE(conv_inst->has_unfused_subgraph()); } - -TEST(prepare_primitive_fusing, dont_fuse_eltwise_to_onednn_gemm_dyn_rank5) { - auto& engine = get_test_engine(); - if (!engine.get_device_info().supports_immad) - return; - ov::Shape input1_shape = { 2, 2, 2, 2, 2}; - ov::Shape input2_shape = { 2, 2, 2, 2, 2}; - auto input1_layout = layout{ov::PartialShape::dynamic(input1_shape.size()), data_types::f32, format::bfzyx}; - auto input2_layout = layout{ov::PartialShape::dynamic(input2_shape.size()), data_types::f32, format::bfzyx}; - auto input1 = engine.allocate_memory(layout{ov::PartialShape(input1_shape), data_types::f32, format::bfzyx}); - auto input2 = engine.allocate_memory(layout{ov::PartialShape(input2_shape), data_types::f32, format::bfzyx}); - auto const_layout = layout{ ov::PartialShape{2, 2, 2, 2, 2}, data_types::f32, format::bfzyx }; - auto const_mem = engine.allocate_memory(const_layout); - - topology topology; - topology.add(input_layout("input1", input1_layout)); - topology.add(input_layout("input2", input2_layout)); - topology.add(data("const", const_mem)); - topology.add(gemm("gemm", { input_info("input1"), input_info("input2") }, data_types::f32)); - topology.add(eltwise("add", { input_info("gemm"), input_info("const") }, eltwise_mode::sum)); - topology.add(reorder("reorder", input_info("add"), format::bfzyx, data_types::f16)); - - ExecutionConfig config = get_test_default_config(engine); - config.set_property(ov::intel_gpu::optimize_data(true)); - config.set_property(ov::intel_gpu::allow_new_shape_infer(true)); - auto prog = program::build_program(engine, topology, config, false, true); - - layout_optimizer lo(true); - lo.set_optimization_attribute(layout_optimizer::optimization_attributes_type::use_onednn_impls, true); - - program_wrapper::apply_opt_pass(*prog, lo); - - ASSERT_NE(prog, nullptr); - ASSERT_TRUE(has_node(*prog, "add")); -} From e43ce5a6f1d69e99b8020ecd5c8bf17574541294 Mon Sep 17 00:00:00 2001 From: Karol Blaszczak Date: Thu, 29 Jun 2023 08:16:10 +0200 Subject: [PATCH 12/25] Update prerelease_information.md (#18277) [DOCS]-pre-rel-quick-fix --- docs/resources/prerelease_information.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/resources/prerelease_information.md b/docs/resources/prerelease_information.md index 2b8039007b2..e706f456b35 100644 --- a/docs/resources/prerelease_information.md +++ b/docs/resources/prerelease_information.md @@ -20,13 +20,15 @@ Please file a github Issue on these with the label ā€œpre-releaseā€ so we can g -.. dropdown:: OpenVINO Toolkit 2023.0.0.dev20230407 +.. dropdown:: OpenVINO Toolkit 2023.1.0.dev20230623 + :open: :animate: fade-in-slide-down :color: primary - The first pre-release for OpenVINO 2023.1 focused on fixing bugs and performance issues. - + The first pre-release for OpenVINO 2023.1, focused on fixing bugs and performance issues. + `Check on GitHub `__ + .. dropdown:: OpenVINO Toolkit 2023.0.0.dev20230407 :animate: fade-in-slide-down From a4a734473260d79b24f35cec783272bcdf06a6ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Do=C5=82bniak?= Date: Thu, 29 Jun 2023 09:46:38 +0200 Subject: [PATCH 13/25] The code (#18270) --- .../convert_pad12_downgrade.hpp | 23 +++++ .../common_optimizations.cpp | 2 + .../convert_pad12_downgrade.cpp | 50 +++++++++++ .../convert_pad12_downgrade_test.cpp | 86 +++++++++++++++++++ 4 files changed, 161 insertions(+) create mode 100644 src/common/transformations/include/transformations/op_conversions/convert_pad12_downgrade.hpp create mode 100644 src/common/transformations/src/transformations/op_conversions/convert_pad12_downgrade.cpp create mode 100644 src/common/transformations/tests/op_conversions/convert_pad12_downgrade_test.cpp diff --git a/src/common/transformations/include/transformations/op_conversions/convert_pad12_downgrade.hpp b/src/common/transformations/include/transformations/op_conversions/convert_pad12_downgrade.hpp new file mode 100644 index 00000000000..e00626a4b71 --- /dev/null +++ b/src/common/transformations/include/transformations/op_conversions/convert_pad12_downgrade.hpp @@ -0,0 +1,23 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ov { +namespace pass { +/** + * @ingroup ie_transformation_common_api + * @brief Converts Pad v12 to Pad v1 + */ +class TRANSFORMATIONS_API ConvertPad12ToPad1 : public MatcherPass { +public: + OPENVINO_RTTI("ConvertPad12ToPad1", "0"); + ConvertPad12ToPad1(); +}; + +} // namespace pass +} // namespace ov diff --git a/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp b/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp index 941427fa404..a9e5d971b94 100644 --- a/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp +++ b/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp @@ -83,6 +83,7 @@ #include "transformations/op_conversions/convert_minimum_to_power_and_max.hpp" #include "transformations/op_conversions/convert_mod.hpp" #include "transformations/op_conversions/convert_multiclass_nms_upgrade.hpp" +#include "transformations/op_conversions/convert_pad12_downgrade.hpp" #include "transformations/op_conversions/convert_pad_to_group_conv.hpp" #include "transformations/op_conversions/convert_prior_box_v8_to_v0.hpp" #include "transformations/op_conversions/convert_reduce_to_pooling.hpp" @@ -213,6 +214,7 @@ bool ov::pass::CommonOptimizations::run_on_model(const std::shared_ptr(); ADD_MATCHER(fq_fusions, FakeQuantizeMulFusion) diff --git a/src/common/transformations/src/transformations/op_conversions/convert_pad12_downgrade.cpp b/src/common/transformations/src/transformations/op_conversions/convert_pad12_downgrade.cpp new file mode 100644 index 00000000000..b37c247be42 --- /dev/null +++ b/src/common/transformations/src/transformations/op_conversions/convert_pad12_downgrade.cpp @@ -0,0 +1,50 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/op_conversions/convert_pad12_downgrade.hpp" + +#include +#include +#include + +#include "itt.hpp" + +ov::pass::ConvertPad12ToPad1::ConvertPad12ToPad1() { + MATCHER_SCOPE(ConvertPad12ToPad1); + + const auto pad_v12_pattern = pattern::wrap_type(); + + const matcher_pass_callback callback = [=](pattern::Matcher& m) { + const auto pad_v12 = std::dynamic_pointer_cast(m.get_match_root()); + if (!pad_v12 || transformation_callback(pad_v12)) { + return false; + } + + std::shared_ptr pad_v1; + if (pad_v12->get_input_size() == 4) { + pad_v1 = std::make_shared(pad_v12->input_value(0), + pad_v12->input_value(1), + pad_v12->input_value(2), + pad_v12->input_value(3), + pad_v12->get_pad_mode()); + } else { + const auto pad_value = + ov::op::v0::Constant::create(pad_v12->input_value(0).get_element_type(), ov::Shape{}, {0}); + + pad_v1 = std::make_shared(pad_v12->input_value(0), + pad_v12->input_value(1), + pad_v12->input_value(2), + pad_value, + pad_v12->get_pad_mode()); + } + pad_v1->set_friendly_name(pad_v12->get_friendly_name()); + copy_runtime_info(pad_v12, pad_v1); + replace_node(pad_v12, pad_v1); + + return true; + }; + + auto m = std::make_shared(pad_v12_pattern, matcher_name); + register_matcher(m, callback); +} diff --git a/src/common/transformations/tests/op_conversions/convert_pad12_downgrade_test.cpp b/src/common/transformations/tests/op_conversions/convert_pad12_downgrade_test.cpp new file mode 100644 index 00000000000..813f3cf2ca6 --- /dev/null +++ b/src/common/transformations/tests/op_conversions/convert_pad12_downgrade_test.cpp @@ -0,0 +1,86 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; + +namespace { +std::shared_ptr create_v12_model(const ov::op::PadMode pad_mode, const int16_t pad_v = -1) { + const auto input = std::make_shared(ov::element::i16, ov::Shape{1, 3, 100, 100}); + const auto pads_begin = + std::make_shared(ov::element::i64, ov::Shape{4}, std::vector{0, 2, 1, 0}); + const auto pads_end = + std::make_shared(ov::element::i64, ov::Shape{4}, std::vector{0, 1, 1, 0}); + + std::shared_ptr pad; + if (pad_v != -1) { + const auto pad_value = + std::make_shared(ov::element::i16, ov::Shape{}, std::vector{pad_v}); + pad = std::make_shared(input, pads_begin, pads_end, pad_value, pad_mode); + } else { + pad = std::make_shared(input, pads_begin, pads_end, pad_mode); + } + pad->set_friendly_name("pad12"); + + return std::make_shared(pad->outputs(), ov::ParameterVector{input}); +} + +std::shared_ptr create_v1_model(const ov::op::PadMode pad_mode, const int16_t pad_v) { + const auto input = std::make_shared(ov::element::i16, ov::Shape{1, 3, 100, 100}); + const auto pads_begin = + std::make_shared(ov::element::i64, ov::Shape{4}, std::vector{0, 2, 1, 0}); + const auto pads_end = + std::make_shared(ov::element::i64, ov::Shape{4}, std::vector{0, 1, 1, 0}); + const auto pad_value = + std::make_shared(ov::element::i16, ov::Shape{}, std::vector{pad_v}); + + const auto pad = std::make_shared(input, pads_begin, pads_end, pad_value, pad_mode); + pad->set_friendly_name("pad1"); + + return std::make_shared(pad->outputs(), ov::ParameterVector{input}); +} + +} // namespace + +TEST_F(TransformationTestsF, ConvertPad12ToPad1) { + manager.register_pass(); + function = create_v12_model(ov::op::PadMode::CONSTANT); + function_ref = create_v1_model(ov::op::PadMode::CONSTANT, 0); + comparator.enable(FunctionsComparator::CmpValues::CONST_VALUES); + comparator.enable(FunctionsComparator::CmpValues::ATTRIBUTES); +} + +TEST_F(TransformationTestsF, ConvertPad12ToPad1_explicit_pad_value) { + manager.register_pass(); + function = create_v12_model(ov::op::PadMode::CONSTANT, 5); + function_ref = create_v1_model(ov::op::PadMode::CONSTANT, 5); + comparator.enable(FunctionsComparator::CmpValues::CONST_VALUES); + comparator.enable(FunctionsComparator::CmpValues::ATTRIBUTES); +} + +TEST_F(TransformationTestsF, ConvertPad12ToPad1_symmetric) { + manager.register_pass(); + function = create_v12_model(ov::op::PadMode::SYMMETRIC); + function_ref = create_v1_model(ov::op::PadMode::SYMMETRIC, 0); + comparator.enable(FunctionsComparator::CmpValues::CONST_VALUES); + comparator.enable(FunctionsComparator::CmpValues::ATTRIBUTES); +} + +TEST_F(TransformationTestsF, ConvertPad12ToPad1_symmetric_explicit_pad_value) { + manager.register_pass(); + function = create_v12_model(ov::op::PadMode::SYMMETRIC, 5); + function_ref = create_v1_model(ov::op::PadMode::SYMMETRIC, 5); + comparator.enable(FunctionsComparator::CmpValues::CONST_VALUES); + comparator.enable(FunctionsComparator::CmpValues::ATTRIBUTES); +} From e3a2d3d14a84bc581f2abac3bee557eaa80d2275 Mon Sep 17 00:00:00 2001 From: Artyom Anokhov Date: Thu, 29 Jun 2023 11:47:39 +0200 Subject: [PATCH 14/25] Updated 3lvl domain for RPMs from fedoraproject.org (#18288) --- .../install_openvino_dependencies.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/install_dependencies/install_openvino_dependencies.sh b/scripts/install_dependencies/install_openvino_dependencies.sh index d805bad1cd9..79c987535e2 100755 --- a/scripts/install_dependencies/install_openvino_dependencies.sh +++ b/scripts/install_dependencies/install_openvino_dependencies.sh @@ -202,25 +202,25 @@ elif [ "$os" == "centos7" ] || [ "$os" == "centos8" ] || elif [ "$os" == "centos8" ] || [ "$os" == "rhel8" ] || [ "$os" == "almalinux8.7" ] ; then pkgs_core+=( "https://vault.centos.org/centos/8/AppStream/$arch/os/Packages/tbb-2018.2-9.el8.$arch.rpm" - "https://download-ib01.fedoraproject.org/pub/epel/8/Everything/$arch/Packages/p/pugixml-1.13-1.el8.$arch.rpm" + "https://dl.fedoraproject.org/pub/epel/8/Everything/$arch/Packages/p/pugixml-1.13-1.el8.$arch.rpm" "https://vault.centos.org/centos/8/PowerTools/$arch/os/Packages/gflags-2.1.2-6.el8.$arch.rpm" ) pkgs_gpu+=("http://mirror.centos.org/centos/8-stream/AppStream/$arch/os/Packages/ocl-icd-2.2.12-1.el8.$arch.rpm") pkgs_python+=(python38 python38-pip) pkgs_dev+=( "https://vault.centos.org/centos/8/PowerTools/$arch/os/Packages/gflags-devel-2.1.2-6.el8.$arch.rpm" - "https://download-ib01.fedoraproject.org/pub/epel/8/Everything/$arch/Packages/j/json-devel-3.6.1-2.el8.$arch.rpm" + "https://dl.fedoraproject.org/pub/epel/8/Everything/$arch/Packages/j/json-devel-3.6.1-2.el8.$arch.rpm" ) extra_repos+=("https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm") elif [ "$os" == "rhel9.1" ] ; then pkgs_core=( "http://mirror.stream.centos.org/9-stream/AppStream/$arch/os/Packages/tbb-2020.3-8.el9.$arch.rpm" - "https://download-ib01.fedoraproject.org/pub/epel/9/Everything/$arch/Packages/p/pugixml-1.13-1.el9.$arch.rpm" - "https://download-ib01.fedoraproject.org/pub/epel/9/Everything/$arch/Packages/g/gflags-2.2.2-9.el9.$arch.rpm" + "https://dl.fedoraproject.org/pub/epel/9/Everything/$arch/Packages/p/pugixml-1.13-1.el9.$arch.rpm" + "https://dl.fedoraproject.org/pub/epel/9/Everything/$arch/Packages/g/gflags-2.2.2-9.el9.$arch.rpm" ) pkgs_gpu+=("https://mirror.stream.centos.org/9-stream/AppStream/$arch/os/Packages/ocl-icd-2.2.13-4.el9.$arch.rpm") pkgs_python=(python3 python3-pip) - pkgs_dev+=("https://download-ib01.fedoraproject.org/pub/epel/9/Everything/$arch/Packages/g/gflags-devel-2.2.2-9.el9.$arch.rpm") + pkgs_dev+=("https://dl.fedoraproject.org/pub/epel/9/Everything/$arch/Packages/g/gflags-devel-2.2.2-9.el9.$arch.rpm") extra_repos+=("https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm") fi elif [ "$os" == "opensuse-leap15.3" ] ; then From 07f098d1b7d6be582d032bdf36602b0a4152f473 Mon Sep 17 00:00:00 2001 From: Alexander Suvorov Date: Thu, 29 Jun 2023 12:27:51 +0200 Subject: [PATCH 15/25] [Docs] Enable analytics in selector tool --- .../selector-tool/assets/index-89e3365b.js | 1 - .../selector-tool/assets/index-f34d1fad.js | 1 + ...ector-363359f4.js => selector-860516f5.js} | 30 +++++++++---------- ...tor-0290a24.html => selector-8db148d.html} | 11 +++---- .../installing-openvino-overview.md | 4 +-- 5 files changed, 22 insertions(+), 25 deletions(-) delete mode 100644 docs/_static/selector-tool/assets/index-89e3365b.js create mode 100644 docs/_static/selector-tool/assets/index-f34d1fad.js rename docs/_static/selector-tool/assets/{selector-363359f4.js => selector-860516f5.js} (52%) rename docs/_static/selector-tool/{selector-0290a24.html => selector-8db148d.html} (76%) diff --git a/docs/_static/selector-tool/assets/index-89e3365b.js b/docs/_static/selector-tool/assets/index-89e3365b.js deleted file mode 100644 index 5975202d92e..00000000000 --- a/docs/_static/selector-tool/assets/index-89e3365b.js +++ /dev/null @@ -1 +0,0 @@ -const e=document.getElementById("selector");if(!e)throw new Error("cannot find selector document");window.addEventListener("message",i=>{e.style.height=i.data.height+"px"});var o,n;const t=(n=(o=e.contentDocument)==null?void 0:o.body)==null?void 0:n.offsetHeight;t&&(e.style.height=`${t}px`); diff --git a/docs/_static/selector-tool/assets/index-f34d1fad.js b/docs/_static/selector-tool/assets/index-f34d1fad.js new file mode 100644 index 00000000000..8ab3fe52f27 --- /dev/null +++ b/docs/_static/selector-tool/assets/index-f34d1fad.js @@ -0,0 +1 @@ +const e=document.getElementById("selector");if(!e)throw new Error("cannot find selector document");window.addEventListener("message",t=>{t.origin===window.origin&&(t.data.type!=="size"||!t.data.height||(e.style.height=t.data.height+"px"))});var n,o;const i=(o=(n=e.contentDocument)==null?void 0:n.body)==null?void 0:o.offsetHeight;i&&(e.style.height=`${i}px`); diff --git a/docs/_static/selector-tool/assets/selector-363359f4.js b/docs/_static/selector-tool/assets/selector-860516f5.js similarity index 52% rename from docs/_static/selector-tool/assets/selector-363359f4.js rename to docs/_static/selector-tool/assets/selector-860516f5.js index f05c2f4242d..a1d51b7eb8c 100644 --- a/docs/_static/selector-tool/assets/selector-363359f4.js +++ b/docs/_static/selector-tool/assets/selector-860516f5.js @@ -1,4 +1,4 @@ -var pf=Object.defineProperty;var ff=(e,t,n)=>t in e?pf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ht=(e,t,n)=>(ff(e,typeof t!="symbol"?t+"":t,n),n);function mf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Hr={},hf={get exports(){return Hr},set exports(e){Hr=e}},Vi={},U={},gf={get exports(){return U},set exports(e){U=e}},j={};/** +var hf=Object.defineProperty;var gf=(e,t,n)=>t in e?hf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ae=(e,t,n)=>(gf(e,typeof t!="symbol"?t+"":t,n),n);function vf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Kr={},yf={get exports(){return Kr},set exports(e){Kr=e}},Di={},U={},_f={get exports(){return U},set exports(e){U=e}},j={};/** * @license React * react.production.min.js * @@ -6,7 +6,7 @@ var pf=Object.defineProperty;var ff=(e,t,n)=>t in e?pf(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var ao=Symbol.for("react.element"),vf=Symbol.for("react.portal"),yf=Symbol.for("react.fragment"),_f=Symbol.for("react.strict_mode"),kf=Symbol.for("react.profiler"),wf=Symbol.for("react.provider"),Sf=Symbol.for("react.context"),Of=Symbol.for("react.forward_ref"),Ef=Symbol.for("react.suspense"),Nf=Symbol.for("react.memo"),Pf=Symbol.for("react.lazy"),Ya=Symbol.iterator;function Rf(e){return e===null||typeof e!="object"?null:(e=Ya&&e[Ya]||e["@@iterator"],typeof e=="function"?e:null)}var Ic={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},bc=Object.assign,Vc={};function ur(e,t,n){this.props=e,this.context=t,this.refs=Vc,this.updater=n||Ic}ur.prototype.isReactComponent={};ur.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};ur.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Dc(){}Dc.prototype=ur.prototype;function Bl(e,t,n){this.props=e,this.context=t,this.refs=Vc,this.updater=n||Ic}var Hl=Bl.prototype=new Dc;Hl.constructor=Bl;bc(Hl,ur.prototype);Hl.isPureReactComponent=!0;var qa=Array.isArray,Fc=Object.prototype.hasOwnProperty,Kl={current:null},Uc={key:!0,ref:!0,__self:!0,__source:!0};function jc(e,t,n){var r,o={},i=null,s=null;if(t!=null)for(r in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(i=""+t.key),t)Fc.call(t,r)&&!Uc.hasOwnProperty(r)&&(o[r]=t[r]);var l=arguments.length-2;if(l===1)o.children=n;else if(1t in e?pf(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var bf=U,Vf=Symbol.for("react.element"),Df=Symbol.for("react.fragment"),Ff=Object.prototype.hasOwnProperty,Uf=bf.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,jf={key:!0,ref:!0,__self:!0,__source:!0};function Mc(e,t,n){var r,o={},i=null,s=null;n!==void 0&&(i=""+n),t.key!==void 0&&(i=""+t.key),t.ref!==void 0&&(s=t.ref);for(r in t)Ff.call(t,r)&&!jf.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)o[r]===void 0&&(o[r]=t[r]);return{$$typeof:Vf,type:e,key:i,ref:s,props:o,_owner:Uf.current}}Vi.Fragment=Df;Vi.jsx=Mc;Vi.jsxs=Mc;(function(e){e.exports=Vi})(hf);const si=Hr.Fragment,_=Hr.jsx,b=Hr.jsxs;document.body.style.cssText+=` + */var Ff=U,Uf=Symbol.for("react.element"),jf=Symbol.for("react.fragment"),Mf=Object.prototype.hasOwnProperty,Af=Ff.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,zf={key:!0,ref:!0,__self:!0,__source:!0};function zc(e,t,n){var r,o={},i=null,s=null;n!==void 0&&(i=""+n),t.key!==void 0&&(i=""+t.key),t.ref!==void 0&&(s=t.ref);for(r in t)Mf.call(t,r)&&!zf.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)o[r]===void 0&&(o[r]=t[r]);return{$$typeof:Uf,type:e,key:i,ref:s,props:o,_owner:Af.current}}Di.Fragment=jf;Di.jsx=zc;Di.jsxs=zc;(function(e){e.exports=Di})(yf);const li=Kr.Fragment,_=Kr.jsx,b=Kr.jsxs;document.body.style.cssText+=` overflow: hidden; -`;const Mf=()=>{const e={type:"size",height:document.body.offsetHeight};window.parent.postMessage(e)};new ResizeObserver(Mf).observe(document.body);function ve(e){return ve=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ve(e)}function ct(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Af(e,t){if(ve(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(ve(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ac(e){var t=Af(e,"string");return ve(t)==="symbol"?t:String(t)}function Qa(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&arguments[1]!==void 0?arguments[1]:{};ct(this,e),this.init(t,n)}return dt(e,[{key:"init",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=r.prefix||"i18next:",this.logger=n||Bf,this.options=r,this.debug=r.debug}},{key:"setDebug",value:function(n){this.debug=n}},{key:"log",value:function(){for(var n=arguments.length,r=new Array(n),o=0;o1?r-1:0),i=1;i-1?l.replace(/###/g,"."):l}function o(){return!e||typeof e=="string"}for(var i=typeof t!="string"?[].concat(t):t.split(".");i.length>1;){if(o())return{};var s=r(i.shift());!e[s]&&n&&(e[s]=new n),Object.prototype.hasOwnProperty.call(e,s)?e=e[s]:e={}}return o()?{}:{obj:e,k:r(i.shift())}}function tu(e,t,n){var r=Yl(e,t,Object),o=r.obj,i=r.k;o[i]=n}function Wf(e,t,n,r){var o=Yl(e,t,Object),i=o.obj,s=o.k;i[s]=i[s]||[],r&&(i[s]=i[s].concat(n)),r||i[s].push(n)}function li(e,t){var n=Yl(e,t),r=n.obj,o=n.k;if(r)return r[o]}function nu(e,t,n){var r=li(e,n);return r!==void 0?r:li(t,n)}function Hc(e,t,n){for(var r in t)r!=="__proto__"&&r!=="constructor"&&(r in e?typeof e[r]=="string"||e[r]instanceof String||typeof t[r]=="string"||t[r]instanceof String?n&&(e[r]=t[r]):Hc(e[r],t[r],n):e[r]=t[r]);return e}function Ln(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var Yf={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function qf(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,function(t){return Yf[t]}):e}var Fi=typeof window<"u"&&window.navigator&&typeof window.navigator.userAgentData>"u"&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,Gf=[" ",",","?","!",";"];function Qf(e,t,n){t=t||"",n=n||"";var r=Gf.filter(function(l){return t.indexOf(l)<0&&n.indexOf(l)<0});if(r.length===0)return!0;var o=new RegExp("(".concat(r.map(function(l){return l==="?"?"\\?":l}).join("|"),")")),i=!o.test(e);if(!i){var s=e.indexOf(n);s>0&&!o.test(e.substring(0,s))&&(i=!0)}return i}function ru(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function vo(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Kc(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(e){if(e[t])return e[t];for(var r=t.split(n),o=e,i=0;ii+s;)s++,l=r.slice(i,i+s).join(n),a=o[l];if(a===void 0)return;if(a===null)return null;if(t.endsWith(l)){if(typeof a=="string")return a;if(l&&typeof a[l]=="string")return a[l]}var u=r.slice(i+s).join(n);return u?Kc(a,u,n):void 0}o=o[r[i]]}return o}}var Zf=function(e){Di(n,e);var t=Xf(n);function n(r){var o,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};return ct(this,n),o=t.call(this),Fi&&on.call(Gt(o)),o.data=r||{},o.options=i,o.options.keySeparator===void 0&&(o.options.keySeparator="."),o.options.ignoreJSONStructure===void 0&&(o.options.ignoreJSONStructure=!0),o}return dt(n,[{key:"addNamespaces",value:function(o){this.options.ns.indexOf(o)<0&&this.options.ns.push(o)}},{key:"removeNamespaces",value:function(o){var i=this.options.ns.indexOf(o);i>-1&&this.options.ns.splice(i,1)}},{key:"getResource",value:function(o,i,s){var l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},a=l.keySeparator!==void 0?l.keySeparator:this.options.keySeparator,u=l.ignoreJSONStructure!==void 0?l.ignoreJSONStructure:this.options.ignoreJSONStructure,f=[o,i];s&&typeof s!="string"&&(f=f.concat(s)),s&&typeof s=="string"&&(f=f.concat(a?s.split(a):s)),o.indexOf(".")>-1&&(f=o.split("."));var d=li(this.data,f);return d||!u||typeof s!="string"?d:Kc(this.data&&this.data[o]&&this.data[o][i],s,a)}},{key:"addResource",value:function(o,i,s,l){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1},u=this.options.keySeparator;u===void 0&&(u=".");var f=[o,i];s&&(f=f.concat(u?s.split(u):s)),o.indexOf(".")>-1&&(f=o.split("."),l=i,i=f[1]),this.addNamespaces(i),tu(this.data,f,l),a.silent||this.emit("added",o,i,s,l)}},{key:"addResources",value:function(o,i,s){var l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(var a in s)(typeof s[a]=="string"||Object.prototype.toString.apply(s[a])==="[object Array]")&&this.addResource(o,i,a,s[a],{silent:!0});l.silent||this.emit("added",o,i,s)}},{key:"addResourceBundle",value:function(o,i,s,l,a){var u=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1},f=[o,i];o.indexOf(".")>-1&&(f=o.split("."),l=s,s=i,i=f[1]),this.addNamespaces(i);var d=li(this.data,f)||{};l?Hc(d,s,a):d=vo(vo({},d),s),tu(this.data,f,d),u.silent||this.emit("added",o,i,s)}},{key:"removeResourceBundle",value:function(o,i){this.hasResourceBundle(o,i)&&delete this.data[o][i],this.removeNamespaces(i),this.emit("removed",o,i)}},{key:"hasResourceBundle",value:function(o,i){return this.getResource(o,i)!==void 0}},{key:"getResourceBundle",value:function(o,i){return i||(i=this.options.defaultNS),this.options.compatibilityAPI==="v1"?vo(vo({},{}),this.getResource(o,i)):this.getResource(o,i)}},{key:"getDataByLanguage",value:function(o){return this.data[o]}},{key:"hasLanguageSomeTranslations",value:function(o){var i=this.getDataByLanguage(o),s=i&&Object.keys(i)||[];return!!s.find(function(l){return i[l]&&Object.keys(i[l]).length>0})}},{key:"toJSON",value:function(){return this.data}}]),n}(on),Wc={processors:{},addPostProcessor:function(t){this.processors[t.name]=t},handle:function(t,n,r,o,i){var s=this;return t.forEach(function(l){s.processors[l]&&(n=s.processors[l].process(n,r,o,i))}),n}};function ou(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Ne(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var iu={},su=function(e){Di(n,e);var t=em(n);function n(r){var o,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return ct(this,n),o=t.call(this),Fi&&on.call(Gt(o)),Kf(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],r,Gt(o)),o.options=i,o.options.keySeparator===void 0&&(o.options.keySeparator="."),o.logger=kt.create("translator"),o}return dt(n,[{key:"changeLanguage",value:function(o){o&&(this.language=o)}},{key:"exists",value:function(o){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(o==null)return!1;var s=this.resolve(o,i);return s&&s.res!==void 0}},{key:"extractFromKey",value:function(o,i){var s=i.nsSeparator!==void 0?i.nsSeparator:this.options.nsSeparator;s===void 0&&(s=":");var l=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,a=i.ns||this.options.defaultNS||[],u=s&&o.indexOf(s)>-1,f=!this.options.userDefinedKeySeparator&&!i.keySeparator&&!this.options.userDefinedNsSeparator&&!i.nsSeparator&&!Qf(o,s,l);if(u&&!f){var d=o.match(this.interpolator.nestingRegexp);if(d&&d.length>0)return{key:o,namespaces:a};var m=o.split(s);(s!==l||s===l&&this.options.ns.indexOf(m[0])>-1)&&(a=m.shift()),o=m.join(l)}return typeof a=="string"&&(a=[a]),{key:o,namespaces:a}}},{key:"translate",value:function(o,i,s){var l=this;if(ve(i)!=="object"&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),i||(i={}),o==null)return"";Array.isArray(o)||(o=[String(o)]);var a=i.returnDetails!==void 0?i.returnDetails:this.options.returnDetails,u=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,f=this.extractFromKey(o[o.length-1],i),d=f.key,m=f.namespaces,g=m[m.length-1],v=i.lng||this.language,k=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(v&&v.toLowerCase()==="cimode"){if(k){var O=i.nsSeparator||this.options.nsSeparator;return a?{res:"".concat(g).concat(O).concat(d),usedKey:d,exactUsedKey:d,usedLng:v,usedNS:g}:"".concat(g).concat(O).concat(d)}return a?{res:d,usedKey:d,exactUsedKey:d,usedLng:v,usedNS:g}:d}var p=this.resolve(o,i),c=p&&p.res,h=p&&p.usedKey||d,y=p&&p.exactUsedKey||d,S=Object.prototype.toString.apply(c),w=["[object Number]","[object Function]","[object RegExp]"],P=i.joinArrays!==void 0?i.joinArrays:this.options.joinArrays,R=!this.i18nFormat||this.i18nFormat.handleAsObject,D=typeof c!="string"&&typeof c!="boolean"&&typeof c!="number";if(R&&c&&D&&w.indexOf(S)<0&&!(typeof P=="string"&&S==="[object Array]")){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var x=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,c,Ne(Ne({},i),{},{ns:m})):"key '".concat(d," (").concat(this.language,")' returned an object instead of string.");return a?(p.res=x,p):x}if(u){var K=S==="[object Array]",Te=K?[]:{},Rt=K?y:h;for(var et in c)if(Object.prototype.hasOwnProperty.call(c,et)){var xn="".concat(Rt).concat(u).concat(et);Te[et]=this.translate(xn,Ne(Ne({},i),{joinArrays:!1,ns:m})),Te[et]===xn&&(Te[et]=c[et])}c=Te}}else if(R&&typeof P=="string"&&S==="[object Array]")c=c.join(P),c&&(c=this.extendTranslation(c,o,i,s));else{var mt=!1,tt=!1,C=i.count!==void 0&&typeof i.count!="string",V=n.hasDefaultValue(i),F=C?this.pluralResolver.getSuffix(v,i.count,i):"",A=i["defaultValue".concat(F)]||i.defaultValue;!this.isValidLookup(c)&&V&&(mt=!0,c=A),this.isValidLookup(c)||(tt=!0,c=d);var X=i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey,xt=X&&tt?void 0:c,je=V&&A!==c&&this.options.updateMissing;if(tt||mt||je){if(this.logger.log(je?"updateKey":"missingKey",v,g,d,je?A:c),u){var Cn=this.resolve(d,Ne(Ne({},i),{},{keySeparator:!1}));Cn&&Cn.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var Me=[],Ct=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Ct&&Ct[0])for(var Ji=0;Ji1&&arguments[1]!==void 0?arguments[1]:{},l,a,u,f,d;return typeof o=="string"&&(o=[o]),o.forEach(function(m){if(!i.isValidLookup(l)){var g=i.extractFromKey(m,s),v=g.key;a=v;var k=g.namespaces;i.options.fallbackNS&&(k=k.concat(i.options.fallbackNS));var O=s.count!==void 0&&typeof s.count!="string",p=O&&!s.ordinal&&s.count===0&&i.pluralResolver.shouldUseIntlApi(),c=s.context!==void 0&&(typeof s.context=="string"||typeof s.context=="number")&&s.context!=="",h=s.lngs?s.lngs:i.languageUtils.toResolveHierarchy(s.lng||i.language,s.fallbackLng);k.forEach(function(y){i.isValidLookup(l)||(d=y,!iu["".concat(h[0],"-").concat(y)]&&i.utils&&i.utils.hasLoadedNamespace&&!i.utils.hasLoadedNamespace(d)&&(iu["".concat(h[0],"-").concat(y)]=!0,i.logger.warn('key "'.concat(a,'" for languages "').concat(h.join(", "),`" won't get resolved as namespace "`).concat(d,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),h.forEach(function(S){if(!i.isValidLookup(l)){f=S;var w=[v];if(i.i18nFormat&&i.i18nFormat.addLookupKeys)i.i18nFormat.addLookupKeys(w,v,S,y,s);else{var P;O&&(P=i.pluralResolver.getSuffix(S,s.count,s));var R="".concat(i.options.pluralSeparator,"zero");if(O&&(w.push(v+P),p&&w.push(v+R)),c){var D="".concat(v).concat(i.options.contextSeparator).concat(s.context);w.push(D),O&&(w.push(D+P),p&&w.push(D+R))}}for(var x;x=w.pop();)i.isValidLookup(l)||(u=x,l=i.getResource(S,y,x,s))}}))})}}),{res:l,usedKey:a,exactUsedKey:u,usedLng:f,usedNS:d}}},{key:"isValidLookup",value:function(o){return o!==void 0&&!(!this.options.returnNull&&o===null)&&!(!this.options.returnEmptyString&&o==="")}},{key:"getResource",value:function(o,i,s){var l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(o,i,s,l):this.resourceStore.getResource(o,i,s,l)}}],[{key:"hasDefaultValue",value:function(o){var i="defaultValue";for(var s in o)if(Object.prototype.hasOwnProperty.call(o,s)&&i===s.substring(0,i.length)&&o[s]!==void 0)return!0;return!1}}]),n}(on);function ns(e){return e.charAt(0).toUpperCase()+e.slice(1)}var lu=function(){function e(t){ct(this,e),this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=kt.create("languageUtils")}return dt(e,[{key:"getScriptPartFromCode",value:function(n){if(!n||n.indexOf("-")<0)return null;var r=n.split("-");return r.length===2||(r.pop(),r[r.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(r.join("-"))}},{key:"getLanguagePartFromCode",value:function(n){if(!n||n.indexOf("-")<0)return n;var r=n.split("-");return this.formatLanguageCode(r[0])}},{key:"formatLanguageCode",value:function(n){if(typeof n=="string"&&n.indexOf("-")>-1){var r=["hans","hant","latn","cyrl","cans","mong","arab"],o=n.split("-");return this.options.lowerCaseLng?o=o.map(function(i){return i.toLowerCase()}):o.length===2?(o[0]=o[0].toLowerCase(),o[1]=o[1].toUpperCase(),r.indexOf(o[1].toLowerCase())>-1&&(o[1]=ns(o[1].toLowerCase()))):o.length===3&&(o[0]=o[0].toLowerCase(),o[1].length===2&&(o[1]=o[1].toUpperCase()),o[0]!=="sgn"&&o[2].length===2&&(o[2]=o[2].toUpperCase()),r.indexOf(o[1].toLowerCase())>-1&&(o[1]=ns(o[1].toLowerCase())),r.indexOf(o[2].toLowerCase())>-1&&(o[2]=ns(o[2].toLowerCase()))),o.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?n.toLowerCase():n}},{key:"isSupportedCode",value:function(n){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(n=this.getLanguagePartFromCode(n)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(n)>-1}},{key:"getBestMatchFromCodes",value:function(n){var r=this;if(!n)return null;var o;return n.forEach(function(i){if(!o){var s=r.formatLanguageCode(i);(!r.options.supportedLngs||r.isSupportedCode(s))&&(o=s)}}),!o&&this.options.supportedLngs&&n.forEach(function(i){if(!o){var s=r.getLanguagePartFromCode(i);if(r.isSupportedCode(s))return o=s;o=r.options.supportedLngs.find(function(l){if(l.indexOf(s)===0)return l})}}),o||(o=this.getFallbackCodes(this.options.fallbackLng)[0]),o}},{key:"getFallbackCodes",value:function(n,r){if(!n)return[];if(typeof n=="function"&&(n=n(r)),typeof n=="string"&&(n=[n]),Object.prototype.toString.apply(n)==="[object Array]")return n;if(!r)return n.default||[];var o=n[r];return o||(o=n[this.getScriptPartFromCode(r)]),o||(o=n[this.formatLanguageCode(r)]),o||(o=n[this.getLanguagePartFromCode(r)]),o||(o=n.default),o||[]}},{key:"toResolveHierarchy",value:function(n,r){var o=this,i=this.getFallbackCodes(r||this.options.fallbackLng||[],n),s=[],l=function(u){u&&(o.isSupportedCode(u)?s.push(u):o.logger.warn("rejecting language code not found in supportedLngs: ".concat(u)))};return typeof n=="string"&&n.indexOf("-")>-1?(this.options.load!=="languageOnly"&&l(this.formatLanguageCode(n)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&l(this.getScriptPartFromCode(n)),this.options.load!=="currentOnly"&&l(this.getLanguagePartFromCode(n))):typeof n=="string"&&l(this.formatLanguageCode(n)),i.forEach(function(a){s.indexOf(a)<0&&l(o.formatLanguageCode(a))}),s}}]),e}(),nm=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],rm={1:function(t){return+(t>1)},2:function(t){return+(t!=1)},3:function(t){return 0},4:function(t){return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2},5:function(t){return t==0?0:t==1?1:t==2?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},6:function(t){return t==1?0:t>=2&&t<=4?1:2},7:function(t){return t==1?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2},8:function(t){return t==1?0:t==2?1:t!=8&&t!=11?2:3},9:function(t){return+(t>=2)},10:function(t){return t==1?0:t==2?1:t<7?2:t<11?3:4},11:function(t){return t==1||t==11?0:t==2||t==12?1:t>2&&t<20?2:3},12:function(t){return+(t%10!=1||t%100==11)},13:function(t){return+(t!==0)},14:function(t){return t==1?0:t==2?1:t==3?2:3},15:function(t){return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2},16:function(t){return t%10==1&&t%100!=11?0:t!==0?1:2},17:function(t){return t==1||t%10==1&&t%100!=11?0:1},18:function(t){return t==0?0:t==1?1:2},19:function(t){return t==1?0:t==0||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3},20:function(t){return t==1?0:t==0||t%100>0&&t%100<20?1:2},21:function(t){return t%100==1?1:t%100==2?2:t%100==3||t%100==4?3:0},22:function(t){return t==1?0:t==2?1:(t<0||t>10)&&t%10==0?2:3}},om=["v1","v2","v3"],au={zero:0,one:1,two:2,few:3,many:4,other:5};function im(){var e={};return nm.forEach(function(t){t.lngs.forEach(function(n){e[n]={numbers:t.nr,plurals:rm[t.fc]}})}),e}var sm=function(){function e(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};ct(this,e),this.languageUtils=t,this.options=n,this.logger=kt.create("pluralResolver"),(!this.options.compatibilityJSON||this.options.compatibilityJSON==="v4")&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=im()}return dt(e,[{key:"addRule",value:function(n,r){this.rules[n]=r}},{key:"getRule",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(n,{type:r.ordinal?"ordinal":"cardinal"})}catch{return}return this.rules[n]||this.rules[this.languageUtils.getLanguagePartFromCode(n)]}},{key:"needsPlural",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=this.getRule(n,r);return this.shouldUseIntlApi()?o&&o.resolvedOptions().pluralCategories.length>1:o&&o.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(n,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(n,o).map(function(i){return"".concat(r).concat(i)})}},{key:"getSuffixes",value:function(n){var r=this,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=this.getRule(n,o);return i?this.shouldUseIntlApi()?i.resolvedOptions().pluralCategories.sort(function(s,l){return au[s]-au[l]}).map(function(s){return"".concat(r.options.prepend).concat(s)}):i.numbers.map(function(s){return r.getSuffix(n,s,o)}):[]}},{key:"getSuffix",value:function(n,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=this.getRule(n,o);return i?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(i.select(r)):this.getSuffixRetroCompatible(i,r):(this.logger.warn("no plural rule found for: ".concat(n)),"")}},{key:"getSuffixRetroCompatible",value:function(n,r){var o=this,i=n.noAbs?n.plurals(r):n.plurals(Math.abs(r)),s=n.numbers[i];this.options.simplifyPluralSuffix&&n.numbers.length===2&&n.numbers[0]===1&&(s===2?s="plural":s===1&&(s=""));var l=function(){return o.options.prepend&&s.toString()?o.options.prepend+s.toString():s.toString()};return this.options.compatibilityJSON==="v1"?s===1?"":typeof s=="number"?"_plural_".concat(s.toString()):l():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&n.numbers.length===2&&n.numbers[0]===1?l():this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString()}},{key:"shouldUseIntlApi",value:function(){return!om.includes(this.options.compatibilityJSON)}}]),e}();function uu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function nt(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:{};ct(this,e),this.logger=kt.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(n){return n},this.init(t)}return dt(e,[{key:"init",value:function(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};n.interpolation||(n.interpolation={escapeValue:!0});var r=n.interpolation;this.escape=r.escape!==void 0?r.escape:qf,this.escapeValue=r.escapeValue!==void 0?r.escapeValue:!0,this.useRawValueToEscape=r.useRawValueToEscape!==void 0?r.useRawValueToEscape:!1,this.prefix=r.prefix?Ln(r.prefix):r.prefixEscaped||"{{",this.suffix=r.suffix?Ln(r.suffix):r.suffixEscaped||"}}",this.formatSeparator=r.formatSeparator?r.formatSeparator:r.formatSeparator||",",this.unescapePrefix=r.unescapeSuffix?"":r.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":r.unescapeSuffix||"",this.nestingPrefix=r.nestingPrefix?Ln(r.nestingPrefix):r.nestingPrefixEscaped||Ln("$t("),this.nestingSuffix=r.nestingSuffix?Ln(r.nestingSuffix):r.nestingSuffixEscaped||Ln(")"),this.nestingOptionsSeparator=r.nestingOptionsSeparator?r.nestingOptionsSeparator:r.nestingOptionsSeparator||",",this.maxReplaces=r.maxReplaces?r.maxReplaces:1e3,this.alwaysFormat=r.alwaysFormat!==void 0?r.alwaysFormat:!1,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var n="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(n,"g");var r="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(r,"g");var o="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(o,"g")}},{key:"interpolate",value:function(n,r,o,i){var s=this,l,a,u,f=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function d(O){return O.replace(/\$/g,"$$$$")}var m=function(p){if(p.indexOf(s.formatSeparator)<0){var c=nu(r,f,p);return s.alwaysFormat?s.format(c,void 0,o,nt(nt(nt({},i),r),{},{interpolationkey:p})):c}var h=p.split(s.formatSeparator),y=h.shift().trim(),S=h.join(s.formatSeparator).trim();return s.format(nu(r,f,y),S,o,nt(nt(nt({},i),r),{},{interpolationkey:y}))};this.resetRegExp();var g=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,v=i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables,k=[{regex:this.regexpUnescape,safeValue:function(p){return d(p)}},{regex:this.regexp,safeValue:function(p){return s.escapeValue?d(s.escape(p)):d(p)}}];return k.forEach(function(O){for(u=0;l=O.regex.exec(n);){var p=l[1].trim();if(a=m(p),a===void 0)if(typeof g=="function"){var c=g(n,l,i);a=typeof c=="string"?c:""}else if(i&&Object.prototype.hasOwnProperty.call(i,p))a="";else if(v){a=l[0];continue}else s.logger.warn("missed to pass in variable ".concat(p," for interpolating ").concat(n)),a="";else typeof a!="string"&&!s.useRawValueToEscape&&(a=eu(a));var h=O.safeValue(a);if(n=n.replace(l[0],h),v?(O.regex.lastIndex+=a.length,O.regex.lastIndex-=l[0].length):O.regex.lastIndex=0,u++,u>=s.maxReplaces)break}}),n}},{key:"nest",value:function(n,r){var o=this,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},s,l,a;function u(g,v){var k=this.nestingOptionsSeparator;if(g.indexOf(k)<0)return g;var O=g.split(new RegExp("".concat(k,"[ ]*{"))),p="{".concat(O[1]);g=O[0],p=this.interpolate(p,a);var c=p.match(/'/g),h=p.match(/"/g);(c&&c.length%2===0&&!h||h.length%2!==0)&&(p=p.replace(/'/g,'"'));try{a=JSON.parse(p),v&&(a=nt(nt({},v),a))}catch(y){return this.logger.warn("failed parsing options string in nesting for key ".concat(g),y),"".concat(g).concat(k).concat(p)}return delete a.defaultValue,g}for(;s=this.nestingRegexp.exec(n);){var f=[];a=nt({},i),a=a.replace&&typeof a.replace!="string"?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;var d=!1;if(s[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(s[1])){var m=s[1].split(this.formatSeparator).map(function(g){return g.trim()});s[1]=m.shift(),f=m,d=!0}if(l=r(u.call(this,s[1].trim(),a),a),l&&s[0]===n&&typeof l!="string")return l;typeof l!="string"&&(l=eu(l)),l||(this.logger.warn("missed to resolve ".concat(s[1]," for nesting ").concat(n)),l=""),d&&(l=f.reduce(function(g,v){return o.format(g,v,i.lng,nt(nt({},i),{},{interpolationkey:s[1].trim()}))},l.trim())),n=n.replace(s[0],l),this.regexp.lastIndex=0}return n}}]),e}();function cu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Tt(e){for(var t=1;t-1){var r=e.split("(");t=r[0].toLowerCase().trim();var o=r[1].substring(0,r[1].length-1);if(t==="currency"&&o.indexOf(":")<0)n.currency||(n.currency=o.trim());else if(t==="relativetime"&&o.indexOf(":")<0)n.range||(n.range=o.trim());else{var i=o.split(";");i.forEach(function(s){if(s){var l=s.split(":"),a=zf(l),u=a[0],f=a.slice(1),d=f.join(":").trim().replace(/^'+|'+$/g,"");n[u.trim()]||(n[u.trim()]=d),d==="false"&&(n[u.trim()]=!1),d==="true"&&(n[u.trim()]=!0),isNaN(d)||(n[u.trim()]=parseInt(d,10))}})}}return{formatName:t,formatOptions:n}}function In(e){var t={};return function(r,o,i){var s=o+JSON.stringify(i),l=t[s];return l||(l=e(o,i),t[s]=l),l(r)}}var um=function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ct(this,e),this.logger=kt.create("formatter"),this.options=t,this.formats={number:In(function(n,r){var o=new Intl.NumberFormat(n,Tt({},r));return function(i){return o.format(i)}}),currency:In(function(n,r){var o=new Intl.NumberFormat(n,Tt(Tt({},r),{},{style:"currency"}));return function(i){return o.format(i)}}),datetime:In(function(n,r){var o=new Intl.DateTimeFormat(n,Tt({},r));return function(i){return o.format(i)}}),relativetime:In(function(n,r){var o=new Intl.RelativeTimeFormat(n,Tt({},r));return function(i){return o.format(i,r.range||"day")}}),list:In(function(n,r){var o=new Intl.ListFormat(n,Tt({},r));return function(i){return o.format(i)}})},this.init(t)}return dt(e,[{key:"init",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}},o=r.interpolation;this.formatSeparator=o.formatSeparator?o.formatSeparator:o.formatSeparator||","}},{key:"add",value:function(n,r){this.formats[n.toLowerCase().trim()]=r}},{key:"addCached",value:function(n,r){this.formats[n.toLowerCase().trim()]=In(r)}},{key:"format",value:function(n,r,o){var i=this,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},l=r.split(this.formatSeparator),a=l.reduce(function(u,f){var d=am(f),m=d.formatName,g=d.formatOptions;if(i.formats[m]){var v=u;try{var k=s&&s.formatParams&&s.formatParams[s.interpolationkey]||{},O=k.locale||k.lng||s.locale||s.lng||o;v=i.formats[m](u,O,Tt(Tt(Tt({},g),s),k))}catch(p){i.logger.warn(p)}return v}else i.logger.warn("there was no format function for ".concat(m));return u},n);return a}}]),e}();function du(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function pu(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function pm(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}var fm=function(e){Di(n,e);var t=cm(n);function n(r,o,i){var s,l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return ct(this,n),s=t.call(this),Fi&&on.call(Gt(s)),s.backend=r,s.store=o,s.services=i,s.languageUtils=i.languageUtils,s.options=l,s.logger=kt.create("backendConnector"),s.waitingReads=[],s.maxParallelReads=l.maxParallelReads||10,s.readingCalls=0,s.maxRetries=l.maxRetries>=0?l.maxRetries:5,s.retryTimeout=l.retryTimeout>=1?l.retryTimeout:350,s.state={},s.queue=[],s.backend&&s.backend.init&&s.backend.init(i,l.backend,l),s}return dt(n,[{key:"queueLoad",value:function(o,i,s,l){var a=this,u={},f={},d={},m={};return o.forEach(function(g){var v=!0;i.forEach(function(k){var O="".concat(g,"|").concat(k);!s.reload&&a.store.hasResourceBundle(g,k)?a.state[O]=2:a.state[O]<0||(a.state[O]===1?f[O]===void 0&&(f[O]=!0):(a.state[O]=1,v=!1,f[O]===void 0&&(f[O]=!0),u[O]===void 0&&(u[O]=!0),m[k]===void 0&&(m[k]=!0)))}),v||(d[g]=!0)}),(Object.keys(u).length||Object.keys(f).length)&&this.queue.push({pending:f,pendingCount:Object.keys(f).length,loaded:{},errors:[],callback:l}),{toLoad:Object.keys(u),pending:Object.keys(f),toLoadLanguages:Object.keys(d),toLoadNamespaces:Object.keys(m)}}},{key:"loaded",value:function(o,i,s){var l=o.split("|"),a=l[0],u=l[1];i&&this.emit("failedLoading",a,u,i),s&&this.store.addResourceBundle(a,u,s),this.state[o]=i?-1:2;var f={};this.queue.forEach(function(d){Wf(d.loaded,[a],u),pm(d,o),i&&d.errors.push(i),d.pendingCount===0&&!d.done&&(Object.keys(d.loaded).forEach(function(m){f[m]||(f[m]={});var g=d.loaded[m];g.length&&g.forEach(function(v){f[m][v]===void 0&&(f[m][v]=!0)})}),d.done=!0,d.errors.length?d.callback(d.errors):d.callback())}),this.emit("loaded",f),this.queue=this.queue.filter(function(d){return!d.done})}},{key:"read",value:function(o,i,s){var l=this,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,u=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,f=arguments.length>5?arguments[5]:void 0;if(!o.length)return f(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:o,ns:i,fcName:s,tried:a,wait:u,callback:f});return}this.readingCalls++;var d=function(k,O){if(l.readingCalls--,l.waitingReads.length>0){var p=l.waitingReads.shift();l.read(p.lng,p.ns,p.fcName,p.tried,p.wait,p.callback)}if(k&&O&&a2&&arguments[2]!==void 0?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),a&&a();typeof o=="string"&&(o=this.languageUtils.toResolveHierarchy(o)),typeof i=="string"&&(i=[i]);var u=this.queueLoad(o,i,l,a);if(!u.toLoad.length)return u.pending.length||a(),null;u.toLoad.forEach(function(f){s.loadOne(f)})}},{key:"load",value:function(o,i,s){this.prepareLoading(o,i,{},s)}},{key:"reload",value:function(o,i,s){this.prepareLoading(o,i,{reload:!0},s)}},{key:"loadOne",value:function(o){var i=this,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",l=o.split("|"),a=l[0],u=l[1];this.read(a,u,"read",void 0,void 0,function(f,d){f&&i.logger.warn("".concat(s,"loading namespace ").concat(u," for language ").concat(a," failed"),f),!f&&d&&i.logger.log("".concat(s,"loaded namespace ").concat(u," for language ").concat(a),d),i.loaded(o,f,d)})}},{key:"saveMissing",value:function(o,i,s,l,a){var u=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},f=arguments.length>6&&arguments[6]!==void 0?arguments[6]:function(){};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(i)){this.logger.warn('did not save key "'.concat(s,'" as the namespace "').concat(i,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(s==null||s==="")){if(this.backend&&this.backend.create){var d=pu(pu({},u),{},{isUpdate:a}),m=this.backend.create.bind(this.backend);if(m.length<6)try{var g;m.length===5?g=m(o,i,s,l,d):g=m(o,i,s,l),g&&typeof g.then=="function"?g.then(function(v){return f(null,v)}).catch(f):f(null,g)}catch(v){f(v)}else m(o,i,s,l,f,d)}!o||!o[0]||this.store.addResource(o[0],i,s,l)}}}]),n}(on);function fu(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){var n={};if(ve(t[1])==="object"&&(n=t[1]),typeof t[1]=="string"&&(n.defaultValue=t[1]),typeof t[2]=="string"&&(n.tDescription=t[2]),ve(t[2])==="object"||ve(t[3])==="object"){var r=t[3]||t[2];Object.keys(r).forEach(function(o){n[o]=r[o]})}return n},interpolation:{escapeValue:!0,format:function(t,n,r,o){return t},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function mu(e){return typeof e.ns=="string"&&(e.ns=[e.ns]),typeof e.fallbackLng=="string"&&(e.fallbackLng=[e.fallbackLng]),typeof e.fallbackNS=="string"&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function hu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function gt(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function yo(){}function gm(e){var t=Object.getOwnPropertyNames(Object.getPrototypeOf(e));t.forEach(function(n){typeof e[n]=="function"&&(e[n]=e[n].bind(e))})}var ai=function(e){Di(n,e);var t=mm(n);function n(){var r,o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0;if(ct(this,n),r=t.call(this),Fi&&on.call(Gt(r)),r.options=mu(o),r.services={},r.logger=kt,r.modules={external:[]},gm(Gt(r)),i&&!r.isInitialized&&!o.isClone){if(!r.options.initImmediate)return r.init(o,i),uo(r,Gt(r));setTimeout(function(){r.init(o,i)},0)}return r}return dt(n,[{key:"init",value:function(){var o=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},s=arguments.length>1?arguments[1]:void 0;typeof i=="function"&&(s=i,i={}),!i.defaultNS&&i.defaultNS!==!1&&i.ns&&(typeof i.ns=="string"?i.defaultNS=i.ns:i.ns.indexOf("translation")<0&&(i.defaultNS=i.ns[0]));var l=fu();this.options=gt(gt(gt({},l),this.options),mu(i)),this.options.compatibilityAPI!=="v1"&&(this.options.interpolation=gt(gt({},l.interpolation),this.options.interpolation)),i.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=i.keySeparator),i.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=i.nsSeparator);function a(p){return p?typeof p=="function"?new p:p:null}if(!this.options.isClone){this.modules.logger?kt.init(a(this.modules.logger),this.options):kt.init(null,this.options);var u;this.modules.formatter?u=this.modules.formatter:typeof Intl<"u"&&(u=um);var f=new lu(this.options);this.store=new Zf(this.options.resources,this.options);var d=this.services;d.logger=kt,d.resourceStore=this.store,d.languageUtils=f,d.pluralResolver=new sm(f,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),u&&(!this.options.interpolation.format||this.options.interpolation.format===l.interpolation.format)&&(d.formatter=a(u),d.formatter.init(d,this.options),this.options.interpolation.format=d.formatter.format.bind(d.formatter)),d.interpolator=new lm(this.options),d.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},d.backendConnector=new fm(a(this.modules.backend),d.resourceStore,d,this.options),d.backendConnector.on("*",function(p){for(var c=arguments.length,h=new Array(c>1?c-1:0),y=1;y1?c-1:0),y=1;y0&&m[0]!=="dev"&&(this.options.lng=m[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined");var g=["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"];g.forEach(function(p){o[p]=function(){var c;return(c=o.store)[p].apply(c,arguments)}});var v=["addResource","addResources","addResourceBundle","removeResourceBundle"];v.forEach(function(p){o[p]=function(){var c;return(c=o.store)[p].apply(c,arguments),o}});var k=vr(),O=function(){var c=function(y,S){o.isInitialized&&!o.initializedStoreOnce&&o.logger.warn("init: i18next is already initialized. You should call init just once!"),o.isInitialized=!0,o.options.isClone||o.logger.log("initialized",o.options),o.emit("initialized",o.options),k.resolve(S),s(y,S)};if(o.languages&&o.options.compatibilityAPI!=="v1"&&!o.isInitialized)return c(null,o.t.bind(o));o.changeLanguage(o.options.lng,c)};return this.options.resources||!this.options.initImmediate?O():setTimeout(O,0),k}},{key:"loadResources",value:function(o){var i=this,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yo,l=s,a=typeof o=="string"?o:this.language;if(typeof o=="function"&&(l=o),!this.options.resources||this.options.partialBundledLanguages){if(a&&a.toLowerCase()==="cimode")return l();var u=[],f=function(g){if(g){var v=i.services.languageUtils.toResolveHierarchy(g);v.forEach(function(k){u.indexOf(k)<0&&u.push(k)})}};if(a)f(a);else{var d=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);d.forEach(function(m){return f(m)})}this.options.preload&&this.options.preload.forEach(function(m){return f(m)}),this.services.backendConnector.load(u,this.options.ns,function(m){!m&&!i.resolvedLanguage&&i.language&&i.setResolvedLanguage(i.language),l(m)})}else l(null)}},{key:"reloadResources",value:function(o,i,s){var l=vr();return o||(o=this.languages),i||(i=this.options.ns),s||(s=yo),this.services.backendConnector.reload(o,i,function(a){l.resolve(),s(a)}),l}},{key:"use",value:function(o){if(!o)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!o.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return o.type==="backend"&&(this.modules.backend=o),(o.type==="logger"||o.log&&o.warn&&o.error)&&(this.modules.logger=o),o.type==="languageDetector"&&(this.modules.languageDetector=o),o.type==="i18nFormat"&&(this.modules.i18nFormat=o),o.type==="postProcessor"&&Wc.addPostProcessor(o),o.type==="formatter"&&(this.modules.formatter=o),o.type==="3rdParty"&&this.modules.external.push(o),this}},{key:"setResolvedLanguage",value:function(o){if(!(!o||!this.languages)&&!(["cimode","dev"].indexOf(o)>-1))for(var i=0;i-1)&&this.store.hasLanguageSomeTranslations(s)){this.resolvedLanguage=s;break}}}},{key:"changeLanguage",value:function(o,i){var s=this;this.isLanguageChangingTo=o;var l=vr();this.emit("languageChanging",o);var a=function(m){s.language=m,s.languages=s.services.languageUtils.toResolveHierarchy(m),s.resolvedLanguage=void 0,s.setResolvedLanguage(m)},u=function(m,g){g?(a(g),s.translator.changeLanguage(g),s.isLanguageChangingTo=void 0,s.emit("languageChanged",g),s.logger.log("languageChanged",g)):s.isLanguageChangingTo=void 0,l.resolve(function(){return s.t.apply(s,arguments)}),i&&i(m,function(){return s.t.apply(s,arguments)})},f=function(m){!o&&!m&&s.services.languageDetector&&(m=[]);var g=typeof m=="string"?m:s.services.languageUtils.getBestMatchFromCodes(m);g&&(s.language||a(g),s.translator.language||s.translator.changeLanguage(g),s.services.languageDetector&&s.services.languageDetector.cacheUserLanguage&&s.services.languageDetector.cacheUserLanguage(g)),s.loadResources(g,function(v){u(v,g)})};return!o&&this.services.languageDetector&&!this.services.languageDetector.async?f(this.services.languageDetector.detect()):!o&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(f):this.services.languageDetector.detect(f):f(o),l}},{key:"getFixedT",value:function(o,i,s){var l=this,a=function u(f,d){var m;if(ve(d)!=="object"){for(var g=arguments.length,v=new Array(g>2?g-2:0),k=2;k1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var l=this.resolvedLanguage||this.languages[0],a=this.options?this.options.fallbackLng:!1,u=this.languages[this.languages.length-1];if(l.toLowerCase()==="cimode")return!0;var f=function(g,v){var k=i.services.backendConnector.state["".concat(g,"|").concat(v)];return k===-1||k===2};if(s.precheck){var d=s.precheck(this,f);if(d!==void 0)return d}return!!(this.hasResourceBundle(l,o)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||f(l,o)&&(!a||f(u,o)))}},{key:"loadNamespaces",value:function(o,i){var s=this,l=vr();return this.options.ns?(typeof o=="string"&&(o=[o]),o.forEach(function(a){s.options.ns.indexOf(a)<0&&s.options.ns.push(a)}),this.loadResources(function(a){l.resolve(),i&&i(a)}),l):(i&&i(),Promise.resolve())}},{key:"loadLanguages",value:function(o,i){var s=vr();typeof o=="string"&&(o=[o]);var l=this.options.preload||[],a=o.filter(function(u){return l.indexOf(u)<0});return a.length?(this.options.preload=l.concat(a),this.loadResources(function(u){s.resolve(),i&&i(u)}),s):(i&&i(),Promise.resolve())}},{key:"dir",value:function(o){if(o||(o=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!o)return"rtl";var i=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],s=this.services&&this.services.languageUtils||new lu(fu());return i.indexOf(s.getLanguagePartFromCode(o))>-1||o.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var o=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yo,l=gt(gt(gt({},this.options),i),{isClone:!0}),a=new n(l);(i.debug!==void 0||i.prefix!==void 0)&&(a.logger=a.logger.clone(i));var u=["store","services","language"];return u.forEach(function(f){a[f]=o[f]}),a.services=gt({},this.services),a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a.translator=new su(a.services,a.options),a.translator.on("*",function(f){for(var d=arguments.length,m=new Array(d>1?d-1:0),g=1;g0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return new ai(e,t)});var fe=ai.createInstance();fe.createInstance=ai.createInstance;fe.createInstance;fe.dir;fe.init;fe.loadResources;fe.reloadResources;fe.use;fe.changeLanguage;fe.getFixedT;fe.t;fe.exists;fe.setDefaultNamespace;fe.hasLoadedNamespace;fe.loadNamespaces;fe.loadLanguages;function vm(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i=0)&&(n[o]=e[o]);return n}function ql(e,t){if(e==null)return{};var n=vm(e,t),r,o;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var ym={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},_m=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function gu(e){var t={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(ym[n[1]]||e.charAt(e.length-2)==="/")&&(t.voidElement=!0),t.name.startsWith("!--"))){var r=e.indexOf("-->");return{type:"comment",comment:r!==-1?e.slice(4,r):""}}for(var o=new RegExp(_m),i=null;(i=o.exec(e))!==null;)if(i[0].trim())if(i[1]){var s=i[1].trim(),l=[s,""];s.indexOf("=")>-1&&(l=s.split("=")),t.attrs[l[0]]=l[1],o.lastIndex--}else i[2]&&(t.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return t}var km=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,wm=/^\s*$/,Sm=Object.create(null);function Yc(e,t){switch(t.type){case"text":return e+t.content;case"tag":return e+="<"+t.name+(t.attrs?function(n){var r=[];for(var o in n)r.push(o+'="'+n[o]+'"');return r.length?" "+r.join(" "):""}(t.attrs):"")+(t.voidElement?"/>":">"),t.voidElement?e:e+t.children.reduce(Yc,"")+"";case"comment":return e+""}}var Om={parse:function(e,t){t||(t={}),t.components||(t.components=Sm);var n,r=[],o=[],i=-1,s=!1;if(e.indexOf("<")!==0){var l=e.indexOf("<");r.push({type:"text",content:l===-1?e:e.substring(0,l)})}return e.replace(km,function(a,u){if(s){if(a!=="")return;s=!1}var f,d=a.charAt(1)!=="/",m=a.startsWith("");return{type:"comment",comment:r!==-1?e.slice(4,r):""}}for(var o=new RegExp(Sm),i=null;(i=o.exec(e))!==null;)if(i[0].trim())if(i[1]){var s=i[1].trim(),l=[s,""];s.indexOf("=")>-1&&(l=s.split("=")),t.attrs[l[0]]=l[1],o.lastIndex--}else i[2]&&(t.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return t}var Om=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,Em=/^\s*$/,Nm=Object.create(null);function Gc(e,t){switch(t.type){case"text":return e+t.content;case"tag":return e+="<"+t.name+(t.attrs?function(n){var r=[];for(var o in n)r.push(o+'="'+n[o]+'"');return r.length?" "+r.join(" "):""}(t.attrs):"")+(t.voidElement?"/>":">"),t.voidElement?e:e+t.children.reduce(Gc,"")+"";case"comment":return e+""}}var Pm={parse:function(e,t){t||(t={}),t.components||(t.components=Nm);var n,r=[],o=[],i=-1,s=!1;if(e.indexOf("<")!==0){var l=e.indexOf("<");r.push({type:"text",content:l===-1?e:e.substring(0,l)})}return e.replace(Om,function(a,u){if(s){if(a!=="")return;s=!1}var f,d=a.charAt(1)!=="/",m=a.startsWith("4BWoL#N}w*hRYXcnq}6hI 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 z%0D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ⅅ{H%$3x`1$NAb#vIkNjfG&z@XwpqL|Dzhl*D(+^0QLo#u!4ZX!)XjZastLBr*CFaXYMw>6ygv58)6Enl8D z_+0Lao~^`Po@^^$o-xy3cCEGjzPPi~-sXKe*>Ii+VXf;r-~R2Rvvq;kI}~3@;)Wix zGBbP>dqPp>O@^x?{XaaybnO zvl@EiBpy?e+jO4AukgNnvHZi`YjBj&(aYpFufwT3rJI-9D5IShCz5gZ{CZqVMI@4O zar&#qtbfeOiCMn#`nhcVOv=wPWV?Lp4#oX-qS;oxl(Ez3sF{?QT9Mqf=yDPAwdmsu zETPqk;!jVV%c=@^M@N>bC-k%uC!vnIb}#dK?8>STycHu$79MV8T9CxM+ud?L&Swo5 zlPTWUsV)t;JdNMPyFy)hp)Wl4KWU*oFrW)qpEiPDS9kW6%+VLbz-+0w( z$F4h<-TZOxYztLfBNb;pO1TmT`rWxsR-JV(LcagThf@hIA|Fewy5iW~ z&?tE%wd0Bd;ZBH>W*ThZ%K0(y`a=Qxxy5nT%u@5g0CmN59NJLk#h2$!cB&!?nORu< zPB+6f4hvJ8ekG`hMXPd4m3ZJljEBw06eDpyi+@ozr&5f(_F2sBfWrTSJPH%Tl|wsN z`7qKU)8Dc`;@OIhWP@9MRmE|US81EwA^mF3-6pC>Y?oWgO6nJ}>1eSJU{`gp!V7LT zMVhhq`0acakA9a$*I|`_30NR-&jd5>9uzZ%c);nQVkQa{!~9?c6GjD!#PlntuW0K| z@%8Z?^3s$?98_-9V?9AyiU_F8L=p`+nbG^7v@_zONF!v^k0oDGDS2WndZ96=ue7_X zQ{>K(Yn*6Yek0GFyH%QFr9&7TJc|R7WDcI?Yalq0<-WIun^R2qtMz2#Wj;;ZjL5`7 z`RQ$E4VnYVPF4MH2}soGgV`s1GtaRjQuU>V3f|vEwRTH3re7WH4PakV)sXN>B-XZ(!U}lwM9L}NvcywdBBPJR+1VP(6;-~UtMa5 z38WFl9OA>%S7QDsjunX=D3xJ;gT+IvxF0DVp|OPzf0ubhqXAKpzH-tW{2zx=@?PwN zF}lSvb#5Mde+H={nNAzVTio~k6>=b{z!zf6^yw?LX51T*H$IC8DlgNcNH<&fU}T4{ zh%~4W{44#E8E`s(F_^fV=#fY?DdREaV(9;YfeD49i6olB7pMym#y0WIQ6ZHd##I}yR|VTz%zq#qbY#4*SE!EN7#eIvQ|Pe z55wT!R{DL0J){KRNXHtC_>6c+J$oaW%$&Na9^fP;_eL6GHrR#(zPSZ13(xhf+3ZVD z0Cn5HmofNP%7W)U%S>7Dy&$*e_LUFNKQlhjI3^e}Q&9xvq-8YJRYwTpIU}h)tHv5C zW_RkLu-Op3kziaVIXrh?_*kYgky;Gt9@>6Jd-ZKVqq!;>aCObubyN^~C?MJKycVL| ztEv8iFzYLoT1@yJ_WtsM4RcQu>pk6!;Z)q52jvrAOl@K)_s}3G5Wsa2_!X8QY0Kjk z^f7%Md>o>9a`V2_iue_WqkQK-HF0NuFEz*yM_2H>rg{fqR`fl!m>BTLhQcr{=##T; zIOp5moEP6Uy9CRnnE)6j*6`~Ggz5*tbGfCfNJF3bNcI;x+$35={<-QWz*r&!_;f?!^5a_W@`afk-Un}xh6>il106!bTQ#URCH zKr#nXtoI0tMkAP^Nvym7{#l3vV9+r0uFwVEr3YXcz|$$n2Rt2Am5)E#C51cWj1=c{<5}&rR|~w4bYXf_}6x zc$IuiPfEi@G3R2b{?;V;b2E|JB8dJ#>b)FNxfo(DHa7nkM8jUsjQwrTPL@fI@=8@b z8FsmXZ&AscwH&e6jZZc+@0t@OtB!2Qx>Wul(ZJ8#D@B+(0h0!9 zvNjI@F|?=#ocN93aRQ`__g!5rco>2*26-Qay_pJ zp-41aE31_1*KfI0N-)WR7mZP>0Kz8}_-8K<3@*jM^%28`TWKdOPagtGpXD%2@gn4A zAO-#HKmHFR*Cl1z2-UOG&)oa>Jy*awy${p-1jL01u^)Vd{kh>u2t~Mke$f7)7Sk8n zIH0^zzGD`fPSvL%SQ&)TzPTJzJA=DFMVqEiT)5U$AA{R#%85e5QmoD*0yqqPVPJOh*gcOO_+|i`x6PMjJamqtqI781gWx zfEEQ50VjQ%xa0Qz;33Nw+NNLE;US0<|1WpV$b`jXy@jVPC_#}Ih+gr}!sF;G;y!UA zAtSzc)W98pHnP#3FF}k=XxiGbl$R6hp1NyiS|6R>G*<>N_NkJezxD3s=nw=9XBFlQ z90Ah{U&x7n26&a%eNhc;YFBQ8c#n`i`9eE%)h^08BS1140@2mZpFe}EEuk*auje`zWurAWh0;{)d21oyj z?+`0n@Sv-sM(TpKdH37-t~ygj%sR`*_T*oy_jPypR|bcV3vV5Q#}XuwZ^4_j={OWg zgj!2SYX#U~HVL3kWHzxGjAQ%L2x^Wr^zxnfd~Bl+_#gN3xj8sF{%?Ev|2u+)m-oN! z<@fYHta@Eb*$<%d3d9{hiD-Y(w)>(Rk_^sZ(VTtVk_y6-5c#!nFLLCuS6*_Mt&^dP zV|56AR6MyjuaM=0TS42lm1S;(!O`Uof1hkK_3|F$hAK4pHFZSE*{#bVt1uZ#&unU< zycthn+Z~RJ;U1dgh}T7Kb`b;Ts$SjSmVP-a`ItqFjMetGxlvu%Hm>0l<2$Ek&f@W|$tT$fk>>u{0Jn;!BuRFfmKg)m4^h(B(&BbIwL_F*w zDY}k~U2`{kQT0PW9js~f;_jLw$?wItJm)K(F*XQWqy4bo#+=xfpkO(2&O>|0WF#dW z@#Mf?NuJL~hsK<09b1B>S*se;mE^#`?D5cOHKr-gfxp)3eBLza9Ju{Ea^bK-@;qQb@l4cO5uh$Ho%)u$D-AFClg(4xvD?9ic_V|AlS zA3Umwwyo^OSC=FTWqpgvENW9)1ei3RiQgT!86|vsHdEt+=inZ*qc@wy8=@f+|sAmKzuR5u0`S zZMA23S_*>HNLdpTwqMlId)c&kT@Bh%Vr=Sw3z=II}C^eR`>XA*IB|IN>i^(AChs(o$g5(^h>J`c!8`i)#KW z>*a&Kfnw1o5zfb?ZuQlL{8N>zm;R2(E#fvaWEr&meDQ_qoNw7vrN~nwb60lvz?I05 zbTCC3>5i~HH>sE6`oC~m=~DO-Vl56y zAHCZ=3^@xHILA&+j$0=6_!ZpH=r5%LWCU@cUK>7a!x zM{RT7(?ydXCn88^?6=+phR4<$Uk5SAh#^B5H#re;JZ^EeE;9)^!$O+oD%UO{LqEI? z^KLLO&{tEK8fr|`GyN@Gtd1mB$Zz#Jq>4Bvvd|P*d3qi3X39X`rC~Jz8*v=tO?+lFt;n-A@+uj#==tbZXU(yMws)e z2ro4?QLA^`Q&t{{yKYa(PC*v$99h8|F$0ss`Iml)M($621&V}TSEM?^sEOtX*X5?3 zoKLL3v0P89)-7tkreQeTEBuj>oW|I6u9#5MZ)KZ(?Dv*7&H8*uaFe&?E-8Ny3pFfJ zh296<6d;09(ZS{)46BAB0#|`Dt0quyu<*^Vsdo@pycZdUp>jbhT2YZajeF~1_(O$n zXl?d3i2RQ~XL%okD< zn9orlMc<6CTq2G1)p4_&Qg(mJUD67M_tnWvR1Ikfj#($@;!|o0N5}3ZwpaMnMB#dz znunw~6+gm)rCHLF-+LFFl_sH}Ys}z-)O1dZdvs$0NcUrf8V^HeA?_CwOmM z?}^~tZWkn{2*)a^jJJCz_V`*{HHRXpc_xQl@$QcVoH9yLjlU|n^4)GvaMGmn%eTH@GSn7vyWOtSY&dstYV_*9fVGkjI^}#oq8n_CgJ!Cw zNsl}75qq(v2)xffaX(-H=Z?^BK)A7H!qiQZ81|kv6)*=lxDSM=DqrK9x^o=}CGsth zePT-~o*e;X6kk?{g-$N4{ZIxX{HJ@3wMw_B$gQxmUe{jJTEDIQY^zaxC*yi)^lp%V zl@hK6k;U6NV+?_B7Ehg%J`aYsUB{tN{9vrfyWodWaA>jKq@KC`T=l6GMIUt%r($>d zRw+(2BULu-O)7T53@;&|=f>#<=zg$L%Y1%O4+G_k zc``9?ZqlBnNa7F1sso6V*9pBpwrPx!*YH`Jvf_Gwq>)%0Zl?$LW_+ZfFP5;M>9%6E z5Aqh0sNlGLGbcvyt|V1v)FW**R@GnIDZak3 zdfHI3WpUP|XJdyZ};Ue2YZ^=VXJU+d3j6jWrojy{mHC3Z;gb(b2^{jw5uyQ(_8^h!d`K+ES6V*tNikHVo(a z9AV^cWi-M687lGq_=L@n z+#(tv(;&mV#c;t+(#OW?vC zrtzOY?;jvxsKC9eL-n>@dW?H8iHdy6u#irRP114YSD;nQ2gA#gNutrXn6`yOkO;rg zHtTh|ZSQluGD&lB(r|g0;&Z+%dcG$*3v%JlR{IT)D%vV&E+~D{&l6|QR#QGBIL7n# ziDqr^-3TTYb0BHF;S;mcWj9A$L;8>nm)>hby8StmMRs9!`Pr`#Q^EiVA<^d~xp6|h z)_}#8e8bs#I6fU`O&9WbL_MRRLN)Xm;&vI8eFk%b=1|V^WR8B?sulC1od&TYL`FUL zcX~O0fp5EcaJ%WO(M3k1e?M z%ol{jAJPoOJ6Y!s%tm8E(3!go1%@G3RF_dlVQ9{u>$ZLB0`wYNyL-C2%SdFE;pdQm zY>Q@+*IV7C&dj_?2?V;|o48Dyzmz&#|6$n3>Bb?EBv+28Ml}ZXeL={}M5Ew1a4Q|b zgvWry5F4jSV+JTT0u|*22!xHz+QdZlL6`h1_J)>NE&_g7!`Ghw2Oi4#Wb*bR5qk4EWAkZrKP1V7@4)A!?gH=AhHm`+_}Ig>OW= z0i-2#dcYfZ?%th>#Ld_mP%M($xY;-0_*5bpk!{rM0Oegr$Mq2>Kx$31ZH>Zi^UTeW zssxsQO25M8fH)yRAcO%^1!83*`;yEZ;7Q;iSwBH3Q%_iW2xSmyiL>EQjF;jr{=Wy5 z?DYr=#RJO9rQ0Gx2=XkNsb9b987pG8L+I#wd~Xtf4=zcWcEn~7%d`Tw# zk9uQC;4AM;gmahq^n^}DITC@evjGVBV*wE02?R3Vo1P3Iv&M?7d8uyUR)i5KTIX5Y z-9w>5Ogv^|3S5P9GKXa=Ou!LByy~N@uDv)?+Mi(U z{`gG^Wz~Rv;lOgFI+W$X4?B%C#D2`gjo-E5U@uJ0PKv5NoVm1Yl@iD4f)^gb;MMGV z(}xr|{^$6K0zzowH(IUf50{}jheI>}TWj#^KlO%L2as?$1H2%iaZhd7$_r?IP(~aN z&hAI*WR`ymxLUPx5p!{_s(FK&Kq0LcB}6K^-WV;fF8t(uIZ|J9H|#(N?KiA)+Ntnr zEleQDpvczYvV%bGK(rKxuj+pm)u%(hU5Z?L|95$@whLbkHxPq(+v%W+n3Af*makF< zfx@PBU?R!RvJdCXJdz>i!)G&FW6g7uKE3DbsxbAkT5I#O0=tPmk1A-veKtsP{EzK9 zs^K7e+{!DqJOPOW_azXBqQ;-@fTAEL%ywW^{Ob-7 zmY_H$9$10pZ9s9?m<$k8|5y#T8vNVXKAqjPIZvNe1LoF;_mhf;oztMME_@u6NQJWu zX+n5Zokt|Yp`bFYw~yEHVQXN{#s#sfFKQ4#oZS1{SfJr#+Fx&3*~q^{)h;Dfk>W1< z8FU{G;K?ln&3NP0UC__}X-PBQ+&|y0@VO{#@Nz9bf1!wHU6H+=iDmmVB_*sxH23t* zWXj%o$5hJGwYRIDpJ;u94jAoxOirVVMcrl|jygXTeX)Fzxv4yHk@;Ks05+OcY+Bf_ zdcb)4dy?OU>9RQQZG^t>o2fFz8rvUJvs=lhT>*|M^1XG70(^;|HgcAgJANDH&WQTf z_~<$sPR{cAM|h2Ijm?_Q7)DNI7kZew+O*#LFuQ-|W*B~P^!suLg6cSni3ny(w=X zQ|$Md*7Y0ettvj0>aG3BCbP@CmYmbKyo0Cj;Z+1|LTa*a8?Dx)-a_6YVlowPrPiYf(jm`#$N|6xDktsi*FpZ;h!E}xUz6{Bhvle3pIKe|69xN#_{C_%p-3Fw55JsN7i_Fm zm#+y=%+OZo{~mCuli_NqJz33`?6v^_8!3NTJK68GpCXO49>QWip?D-c+^L8p=(%;(s5QY`}py_8Tqsh!&CuW`zdU_s!fzdeD(25yG!9%`eRi|F@Yv5vo z`wvl{?a}c}lRDWM_Lu3;4;;kF+iATi1yYvD%+C^_B|djW?ICOmP-_5=L@xv@IuD?1 zuJnAm(j%9$YSWC;oR)P)%7pqG&BD^j`gog~(u|G459RVg zpVwUa=o4}tHj%Iw-g}=gasPS$9=$Ri><|z5+aF7DcDvNq&9PrSCwJvR6iLw>9(aOS z9h8av_y{9MMSY0=;S-}KQZWeaN}~VOrzttP8+eS9S`Otlg0`bhV+AWk`a|1E^6Wp- zW!a4kgzoT^r9W30jnHmH6;&B|0-A_J{ln&agNH|7*aQVU8O&BwMDcPoa&zn1ir!(X zt2i4QoqTIVjf$wM`s8R+d8mLbspDAvYMFkw@u|)HGN6;JCKkMNv&qVWM5eM*6$4S) zACj9}KnXAFur|Hh7cCv2Te6E!NO&Nw&oKx@^6Lq-;zQVU!T@;$%q$>X`Nwb% zR3mEYUgrIDBnsjqv3@ImT0!|fMQxmQwn)F;_|#Gj)UCJmd19;2QFuX$;^PRb4;4ID zi3N@l3I29czNLx*w@c2qql8R|2d+?9*8jE!o7 zNoUG(pYK*RFPjfWzwzGPUG>p11<}IElN^HO9Nzv8gy%zk?CS}vw}AGgR5?ZGz$-!y zcw`P0{Fhq*7v~1N0AIn7y!#)&;E%gB1#S2fOp0=p>lXp18|#9AZ^-4KThfnDV3qQ( z<_DCV8qV8#K&M@M7>o~dvEc`$zl%NvCrWRia!mn#Jj&K*iZ%6|FqHJ*V|6{J_Fwy1 zZx`w38rP_0{KoLDXW==y(5a;HcdNN*S zywEjrtVO>h6!>BrqM^D`jX~mxIyS0>!(s%c)TtKEC6T}kHU0m*anH-i{eRoI|KFK4 z9Gw4cE zYUE{9)q)!iS|dSE*w2xY)kB#x27x~$Z0JUC%8RZN1OhV zG@h?1*~$ua`=VB-@AJj|SoN&j#^x~NI9At! zjemM7iw05HZG0c2b<1tDk!;!ny>%~svk}(Zhuy%FvKDD*-b103llk2x;{nAwcC_}6 z+zS~q@6tNC+;#JAt=x_XLdnlaxBCks3jtM!-<6DRU?p z&4)^40VgchkkHtnwJq?%6Pbk3O4tf9+<;ziZH?^;6@0Kd8jy}6mA(^MHsZB=_TeqP zN;D0RWcTmqdKxVe3@D+IcK;@N^R5uTag9rA;%sH29pyw8IYo~AI|F?wQ6^}h(ny2+n$VL({vsmqSlf=cb!?ngG(Xl|xMT zYfzazFeb{R*)62Zo}~e;WaVkgL`AG&(#vXAMrIPxXMJ0l&lppj9{argYq!1iqi1uG|Tw32}1^_|`x4ay^Z~9&FDGGD@PSx#=Fr zM~LxTL%Pou*5k&-+o_+Pauv@C)S>q^?TT`cGa1J5r4|cdHp;$b@(AdC)RIZv3=1*hg;LTZjr6oa8Q=C=aN#%wleOp`+McP<#*|w0-ZVCmS9S;U)@i5@p|UBT zNuaWZAi;O8vx)Mq!Jz;Rtpl)6BfOX)_68U7K?bzZq4sOXM^AP*4t^fH8Bs4TI3!q$ z&h{vosI^SsjorJO%j`)Yot<36{H>&;2w54H$qK={@*}a>0F`2Ni0MhD&JGKNl`{is z^!_UsbGMTS83ePdi?RrJIY5<1?2WyzBdiy9VFHVz&X40EO_&a++p*tAP#m($+gPs_ zeE{f=ZH{-x+_MqMl@8=EG?N}dt9A`?WJjHz|8Wf*yOJ#IKaxiQldKW$0i7Q`=K|eI zHm%b>!FK&fl|YY%Zv)#Py;<4VaP*#iS*g~W4w2*^3CmD?{?z0>no0OMfQ>T%YSv97)Exi734n(v$-{sv?MHq-) zu-o*e&qV+bh$>ATM0^*oB?C^09tll9!OQDUpQw<%1@5nN+%FZAzbQx~rloh`t`i1y zMGJ3T5JmNQ3*?5!1ysF?yl>WUH@(${LNAZoe$q`SzE*r!sO#I!^B)gJDDi_@dvDtd zzou_&Xc5rZLH9`{C$vW^l@p=O$Is@Q^I|^sO(_occEddAl9g(AoO>YA?!7W{&5iJ< zL=ERDz2U9&U}+KB$N0f~a|G_(t48NtL;~IMHBOnS*s%c~hZbJh>XMCaIv0=R4?9 z3oTIUP@)T%KOatboVMFz5fvVso?`tANz-jV8%KlBBtBWiM`BN!ASHay@so*$Z|kMG zW2W|i=BYH_@rgA!Dl!vWI7IUFihZ6&CD(@%X@mEHIv`3(7B8lhiy5k`+ZGFOp^40@S7M<1Zdt& zhQ4wSScxb;>+Z+g3?D;-i>q2##`jfKwqI<4RQZB7*yvgXjnBpQT13Oy8ja8C_Oj2# z?B(U5=;dC6&*^Ez=4|aHTK40473-}w>`mmOnKBdUvvx}|p=Hd0+CH~34(Ool4OfZ#bl4&pE`fsF z(1*d68u3~~AYq4Eb&_5s(Lz0BZwr+r&z-0Sa>F#5vUZ{R@@p2Sij9ePToX3qYjE#` zgPgVy?#kr+GA15d9Rl^trj5)XMK_z#nS=)fBIz!R2z?KmD>XY4WffVdw5(3uQ$JAm z^|LB*;>jNYfM&`!O6=@6CUs8_ko9$CzgzXKxA=36Gn*EEA|!I>`=Ky80%}Gcs!rYD z10sq&0qEQJyxNMLZzO|3b%cBHgo>3KjzPSzg@7|L9jRaYkI4pKsA zpb3ifgUwtZ`_Y;=7S##xBJz}rKt;vGf#&24bW+!jk2kI9ELhbc(+_7ig{xzv)5n7z zqHBY`DpxA^j zY30nfPw0Y=EQcT0I{%8p%aukM?$!eiqQ-6>A<Gc5WMG96%`zLY)p_Hse67*u-uB-6Tmj0v&rmP{3%9kR!;` zY$maOC7f#vnVBf9C`UOTM9$F61ZwEuwY(b$lp^>JvY9gIs=eZsE%2BC^b0UI*2=r8 z>&oox?Iv|650K|*$HK6=uo}%~YU@{`ZZ=xbu`-H-=K-g(1T{Ozg1Ryp3QsVMAOsIk zR&o|j=z3%Z%M7R0?*CN@@)2u|f1$z>L}UF%iT%H#(OFc?8&&EUrF)CtZA}HrPY5Lg zV(z@kj9^*C2bAIJZfnCcf`1HG+Cb3#%kWz$N1+TiMnw`Zysf;exX$^dee$I4^1lpM z%$tA5J*G4Rl_U5oLajP=6+PD8fp=KosEGXVkKHnv!HgQ8jDm7@flkyQ6Wb;PgQo?5 zd=8ytwe!fcvoG5~92_94XlNU*=IA^=_ZtIT`{X#4W;bh|q<_VX!i26RDrO$mIx}n_ zxcZxMLDb87tl@+3gKr_--ZZoS2}!5F(#iXZ`Z#3IL831o<0khsmn#ti|AMDVvsi$o z$eT5dSS&6Zo>ElIClp^Y6N||9yQ)lcLa5ngRROOKH#t@K-1P6g`DINO&C&GatwtUPOQ()Ig;hE|$sJ z_kdkxOpQgv34z3iRZwvcWE1n@3xKV16p&)G1TbL!!(^HZ1N+Axph*@&Zh7zoST*#4 z43CnbO29GL+y5&2FI|f6HdnejYyapcFJrMEu_tr5YP49k!MGjOC<;LmHv(#B-q~9E zo}A^ew0RZmWF!1N-aBBgn&VGf^{LXkd9}{Zue6gpKeE3!sO$L0d}k|ru$2#N{=aF* zvdqt8aL`!bUhdF^jC>!4+!25SN()7IA?SJ_fS1HJ=4H1GU>kDm7x6Rdf~b!^caUh%fSyUaWc z877H7Dvm&51qtn{;nB$l=9~~7V~`!Iv0#>+?4$rugw4b;$)H>kTe0dD|0i5fE2f6M zlQiU%b9|ma;!g;H#Q{8u_#Z)csE7qC-M?qs*uVRM8X4Sn1}M+j!cB+FS(_rC z7IB2;C0d{ucx7Oi-%IM;#rqtS6m<<&vEReuInca(6C`TrCd!k73oB`!Nd zf!Y9?D{U;Cx34a_op~S@aQCH^RZQ*o3+JBylb+6pFJ1>yyNPO@*${~veCYN{Q`Xg% zo74)gTES|B%cFFmPgAD@9?toEc#cX?ACqkpb$h5%R)K@k^(U@S-MP9F0|5=P-t{vj zAnI?@vp0~>jIqnNQLJX=mc)TpHAqrz6VLx#*Fta546Hi za{*X}sZq=p?W3jeCwJU!1Vmiw49LB{x*}gm;9jCx<)1dDU0zgFly4yHJZvUsCR|Ka z^X6$jM$>_`?joQjQz=!B=dpPBkk+t~H>yi$%BU`Zt1@Vf8RZ9XH?)GF&p}Q61M?js zEV;jK0<--3Dk^pSC&Fvee0FA{qT*l!;pMS57A}Pd@{v{jz&$wET(59ZChh00()>Jt zNND9~l-5)OObc-0pMjN+{`XMiV*Pa=A3mx%FxZ*1>@lbgfrU!2Tp!#kI)Zz}8NrH* z-f8V&=nQf^gNi@&xMUA^mV`a|;x)KwI<-ln#8i2Ac=+1v&}wPEm{!s?aa zdgj6`?g!QVdWC;E#-2!iSd54!^=h)qT@C*mn?ZZBKO*Xa^yn(8lxqQ@@MZZd7AW(Z zz4E!r1N;nFgTKE$%s=mnYp*z~rFcep@$5+Zf7~AD;o#)?zip5I?~EG0|Aut$`tZ2s z^%Uin=pIedk3=l2C-{`?b3HAwE zE!EOJQ1t>8R|`ig*E5b2#zP`TlRUEx3L%IicSMWpmU?xy*Qfr}?>C@lpu_Zt~vS^lOx5ST=2vx41hB{8+jGWuP|J-|F*YK^7B z1h8wG*|qAU1Wbz9=f>UN_Qp&hmiC!jbOdiawqep!fzN-yA=S?(8i})*p;&-ahd-ov zQ61hT_N2KL8&kLSXZ9VduO%e>*^k#i0{d#ddAfBR2Ubr`+%ZuLl#{Ld06yM&S3)mz z-+@q@x0+TGAsta=r0CsQP~MrK`qt!cG!CwV|3H$ z%AC~)FY5;tb+kvPv9-@|HT(j#ZixEQ7(280mGBVg9A%rlGD5G7v^oA35nk7w`8qg5 zC&+T*d49~UQ9oC_sL~1NS8_+4Qxz8oGOTwmPxt-7D(@)g#R`?J_QD9)vJ%c0cLPn6 zx@r!g=ILozvg40@6eY%;#TGB?mHnPk>(oXvbvLL(DH!heD?_)Z5jNhh;xdRwPVAKE zR`n`@_fzA|h!|}QEb>eP(;?|{*$?;0-AcS*tr;5S*j!KzLX%cW>R6FwZZfeSMU2`@ z*a}$#9YbO9PlMdhxxB+HHYCQa4I0;}^J?{Zk)^j)BJy5bZ(i;+n zo)~Y|{_5_pZwJN{-Eulc1x-I}yN@h+cQG0*DJ7c~K2O*Bl8c^la>v|T!oKOKw99RA zsHf43AKWXYY{zI;*cS-x z#BI~ltn=bY+55EmkRmY~OW55jJUv6OQ>&0zF|V$t;Z+StqwD>T^|gv0gf4M*WX-6p z7(IK%Mkf?Zv}6=8SK%b?Zsn4&gulnHUv`^Vw3&Q~uoTyVPY>DOb3b&SaQDQ7a_&V! zzH7oP>0}Xq#11G9sLcTvp%9NQUP-Ve&$^$EVNPcX{bDx69ni?mM73x#_GpiQQ9waX zrs=3?Sc+>%4{3nx|CQoUJR_2?ZCcr(8MgnyyydZonz)=v-CBuBzOkyrBR4C81zkV> z#>|kr-K8<)T}GU5;&ncK|0Px4WQ%Vd^8thN8x;;ZclRw!3xe3*XODcxJKkd~f6GiN zDttF%hTV*za6_&m-&K>Pm4bo(3wx*O$8pY9w=j~)(D%5}xAIdbukFUf`U9H53v7ZW zn40zt3;J}C)%1o?2B+Kb<0nqfQ&%nI`q zsR}rK-=xG|48y)b(3aSBTg}DlaySFme4!?Wl{a&;4q7xZ7!F%LVPqYCDZ;sPhGC6% zFN{L(zENv2Ssdm&$;YkxVr5d#=Kax%+e3%e~#QRrz&3?te2$jLln zQ-bDiQ$}?G^OTsqi$ugZuU*0G0cY*ko@End3~RF(!*<#U!Azt-XH zBpvNLz_7`AXz~S`|7jyoGTJjIDN);U0?(?MQ$z#WL9s*v?cfx7m4-Jo_3X)u)?m3< z-B!c=#Ny`-xWsg5(V6C@{vy$(+M$C<2dtldkV>I3Ab-SdqYsLGoy05u(Wg0H($Y}p z%X8_x>xXw}1Jk7#cqzi2KK>z{H+|akQGV0GUA?zIorsw4;^1|f{dQn8J}vB2l&L;$ zoR%yR)-JPa>%rY*jM`{s=A&L&0yR=Q4oqToBb;{A?(`g(CdF#Mq@X#eb1Wu(=dznt zjH65a?7#@cp2;Yd)l8$%en&CdgavEG&B4($YIQE9$=XJT`vvzHh*9qJ;C3s*mPo?z zo~3OYJDi$%lnTCg*)_gx2h(K$Haa1VCOZUcHp;Ze%_uizgP`nhTAd%^Kg-`nxAV8w zOPQLT@oa4W#txX`MQFStbCynRQzez}YmR+82WTAeO0lxGjc@gQnsL6hvD9ovP~P+% ziIqjbTww`d0#Q6UIMQ$R>`7gNTX9*lima3lo_&!O;m*M!>1r|f#T^F;GSHZebu4~2 z0=Cw#NkqT2J|d6&=-JpCw^V}asc|vRWSXfB?hp>~scOQ|jCozTa@)&DhGQ|Qwv(Dk zyqq+0njDGogP3reOWVo7*70b&4Vs1 ze%xoLf;VXt9fqDXY-}EA$1Z~QD-e4q_BVn`VFx`8J!@n7R;LwV9)8`gau1pIG+-}O zw&L6)aypB0h|!nY|op(3)S^m zkoankUJXJwERiTFv6+M*{07%c5fyo9UO=;H?ZJh1b6I31p#RVMH;139#UFRy1ToChwer~L0UlSp+S)DR2l*4ZX`rny3@NJ#P^)@zvtd@ zzcIcs-gk_(_lCJ?;sd`PbDUSybnteDIM-}K~Gz)Y}fa_$0waD|(bQb)&zVs&27=YpA zu~;dL>fUp333YTs&>!F7veA}6Xe1{9jELa22*w7^3?7qXFJtQ|C2~CP~JZDZk3dAbPj`y~Mh6!T!ZaU4FMaZmoDe@xXGKTbdaOQq~ZuiN+ z0*mFFJm5CUMZ`v1zsXIcG^)jy9cD4cbEEoW&Flh>51O+5t=HtkqAcZki4mfsF@|xd zX)G2~aF)wlG;C1DUjus0^Y3#ey2YulFSa`5o_qgZ`F*tnATt|}gz)s2_ajgw17F12&NFN+^q9=l{c_sIGpDl;cag60Grxv(0clJCw^ z=yp+fvW~!EF>+=#k|CcjYBeWn^)%1x^!({%`63xnZtKy@rdH4*k9||6L z=b0)U9zcYx1QJPm#yp@TRb&XHvc%7lBYBhUG-oOZRptDrO&gwRB`UUNkCwO-UOZB^ z@$}-TSmX>^H@6MVGXx*CU(2L#bSBZt{}lKHs#aQwV!3w!5mm8Vzn#bjrgZj~0zMkP9jpxO`PxgzORlPepV9@$;U5K?t;NVeoX==|gt~ZA*k@<7F zbBXVAXWpzw(TCnGCYM$}k2tq#P%}4ajGiZK(_Cn7aSnMa9z}l!wU5TXXf`g5b+>8Q zwrNbBo1aU}$t`=A&C0ooIud>9wWxO6U-<=()yp z|9I?*r>aWegR7n&x96vK;Vt+s+UzbodUu>mzj0MjIG=BvRy^z;KHB97zI0l9!twZR ze4jQks8>Y#HrH;6rX&_^V}$jV&Pd{ta~UUINi+(uXc8V||CIj?su1Pp7-Z!7&vhNc z3P+95&nFyQEe%pV-1`g8=*CA{87e2Ydiy6IW@{_--y0^H&V^)Q6>b|o&3Y-d)f+|Q z&5~ok8l_eKGgl8o^I?v$!ro72K(f({673vr#8=*>P0HkzZq)G3aXGQ|bZp-|SQ=;9 zr#fVI%lN{%lq}Ju$B3K8^Ugi*{Lz3Ona{g5dyIUENe=wv=uT~)~1-Ts*y0L~+ z%iS@Ozc21EB)q2#xg!%SE`dYmL67h6jUzedu)cF)yS=k;vKl(Q7Ba3t=QpXKd$pI5 zk}dJ>@#{fFUmk#)86nbn;>X>o4-;;C3oB zqX5*$%^+2HxURa!CWUN^M1Ytq*^bxCPP3rjvn;cYTMUky84(khRG4K>>s!TpDC3Vy zCgw)w13oY~$R1H@#s`d&*R5;0`hd7%j){fch_3lC61sD_TrKoGIQtwurw)5{c81rJ zOMqw5`RoUrV&mGSm1(9Ka~Js)f6CsN_?`UV>}G|CPjyeslm;u-9A3&H8ObjVXGdW2 zKMaMVXQISM;q%SD|fE#=-Ow;SY+W5eKpAqTufu1_(qjx@c@-ZSe|T8 zSE%)86)>8 zG`knBCzw=s0DcPKPJD&-l_7B4$yVm*vwrM<(^vQGW4F>Qfyi){u&u;>%apx7@jG$B z*;1mz%XBtydQH?|g&T;xWGa{d?g$a~rEO;hc{wDCfsAmBU;){}Wy96NJgf{efse$^XCru(Y$^=nCurV3-JufKPr;a(Gy20b&Mz?pk_Q^S?`X1q2u_z9l9F zb|%R?PT}8nK2!_CF-N0xZx9Rfs?PMre7JGJi>jm9cSjU1^?te^i{Qcqi^t9sdpM zsD^K8GxDx8An!n%_dYzkqf(1x^3Ck?pJV~tneLlpF)q1DmdIwX=;6t7MDqANJp26F z?%dyHQ=z`X&Ul@NDvB=$B``ti+z(3Yg3>C94m-LH5oPAt@*FZB>ZV||=M3eaRl76G z-8E8vD1VqM^qG$eLt(U3Xb|vg_C7*HFKIt+Rm44;#J-J96Q0=jExFH?KSnbCsoZO| z2TCgLFHwhxp33>CeSAybn9fL`JiJ6_`=-ldReQu8DSJv(4URqI=z`H7BP!DYG1JA@hIk;i9d1c1o#|q8|GyIFIE2i zFNaD(cLK>uky4c`0p;Yg_jM1lm~&9Ow?G)?7@%?FqQn9UCty zj`ff3jFil;;4f54ooG71+orp&Ty`^#qFavb=B2Ve;<_1%n+ldH1ot><7&^O^foDRC zC4Fd zTlnp-+)vGe4<%)mURJE4QOWsd=G(v|-Cmbtq9>-De@IUs(``=2 z{YCLM_eLst|2M$vGiFV*~9Gs}zWY#DT2C#W4JCe0i3{=2UKtalH(4=##6@kYY6WH+c9~*S8 zDMgwtH8a%=n~ho}-2cj>7;#-mrH~>uD7{+7ns(67CHBfy&7|xoDp-Raof|56r3I4a z5hE3IE12QH!uGrvzC{EV!d+tooQNBMmjrQ@06zy`1Buz2Qn5#5k0$@gBX;?hAg)@m zFv$cn9uso6Tp6a%B%gAVg0ca#MmI$vG;d1-dX|#)lZp`JESy;u|UODxmuQ$T}G`54otv7R1!FVHCWNPt^KiJ9EhER zTaX`GIN1$k9%suJO{S2>ZeX#8;VDJ@VB~+>lSfk zaqxFEU&lx2th-uzQTHpFR6_{cuV-SJRS zO#@fwm5ecSN3NLKvSSR#;Nf?v)88vZmt-pmbR7TvAwDN7=l|P7{Qql>J2%I(|5@YS z9nMsH{SbfTKS1-aRvSN zRhhCf%J%!UHk}OqQp3;zgY(kRX`H9YzSJ6h;ZTm6jCZcK)6TB38iTjFcKxm$ACGlo zN73Nru3K-92lVsu&n$O6)l*j{wa+$3(83Bws#yf|&9JYkgtlVG=L54n-VgixI#mbE%GT97Vzv_t(=1N6 zydPdkBosFJ5?~KYs`b4soR8JEZq(H0utDlqb+H%oh-kc(l6dN67V-TpM=_uE?6ZMc z{JP-ZoowYXzDLUk`54kB44FE&_VXXciaCbnQyxDfR!E7*`XcEZ(VDyz1nnqq;}3uG zp~E6N@@XA*IBoAl7o(cni;#(!$P4-uFTW717>x^h+teLH^|qPC;i9vzkJ59hJ!WvC zzAaiv(;U}4NliJ)_)=NZVFh~261M1U?3@qi?*IIHFR#O8#w;TJ?b}!U4U4AUSdD1f z5!*FHjQjabhbQ44+M5lR^jB-UB+nFiOd5mHK=j zN44X~JhNV^7(GTk^fpKi-xqly(UIqM!S9_SwwtuKl8{UGM!kFx_wTy>RP)`~B}rNs z<`2K+7_mK1-1vRb%+b|T%=!`Gf(qq~Yh6IXb5B)_3*7$lhdq}IyCiqpa)yh4Xhbky zVRm1v-->YcT!>l-Cy75_3}Pnc&GsPP_vG7c>usG`j9=LgVve$y-LmUhJ9WkMPZ417 zaWr^8i}r0jhz!<|sdr=FPem(e#zZR?ww`7152jceu-?M;mgubK zYDR)^%Ph<6iucT*a{6#z&dS>5dLufu`wK)qfqa=0_ACv%6Y)9j;MwN0 zd%Z88M@z-XEeo?_3n)hX(7Zsd+K^2S!dWgiHSB98p2a_V&yPrL$}gS0Cmb>_x!m-% zPVPNk$te8|$4 zdIBW|JMJ71y<0vNM3!s|va@HBC;ep4BJU|Hqlc-!-(ExPy5~EkXG47^oLVBj9KIZI8za z{A3Wzcv8F_F{qq?W7PmZqyMIWEXgl_xiapFtpiX9-x`e_y$M_45q*m~e|oFWXRS88 zPU;fS&SeTPE|Cw?pPvdoZB`tzSp^e(qf$qnjX1JPU*fQyQQ;dOxbmp3@j5N3Qk9uQF$2a$k@hiTyi$9L7-=MsA zF>Q0}&BN?~NWlU~yJ%jCq#DtuT#jRc+!ok*XoVsFIc6BO!;m-w=M45oGzz0uNjm>8bYe|*}reN;_aoK%VTi5e1fN$UFk!=FFUitq zJ%1VDE=0({YB0M|E6}M;`fKKHEtWRUh`$dvv+qy{yF^kk?lFI1+wW^Gu5S%dJpSeo z*sM)`M=LG<*`hZ&ONbrf`MlCpO=j9}GkXRHYysqh9@zm#cCTRls+9}r`!jE?upjjV zT=;NLunkChQ=+nDtt}uI?$9B~WgI5ni#C(pb=2YFNgd*xMCr4Ow~W&bn5^yI z<4c?=;xQq#WxX44`8Gsf_6WnEt1XV!bSA2n@=39o^U)*a$R`qSAX~GZxv$dDEa&*t zMJr6PdhlwP-ei=0U&uB1g~(CqP<|IT9x{nys4-2UpSP!dWV1a9d8H`Qw#eGedU=o z94?1pty+!dijR{d@l5R2+9hUhI$dtpG@B8UEpDLbd9)gn)yVsHI_GLbCJ{Qbq6x~x zu&K{{mJrXoYbQ(hGP!}haoR)WC?VQIk!BYR1Ma)}ky1PvZCfR8*PF>L9`ASpX45Iw z9qQ?&qkGh61GQpyj`!sEIwlYv5})=tccud$EOYj>$hDDQ*0T!}uCi=xMX) z`=*~bzn1TU;aIQl?w(_}{Io|btQ;kyz8amPKVQTT1NCNb9Ibhz ze#G7~%?z5k>b3E{*mC>rs&@^Re|~uxk$QFU{Q2*b*3_%x-&dD%zjr!Pe{Xa=zhs*; z<(%DN9*>y2Tv7RcwQ2MF$VMOq`J7Mg_f~%36R&26S0lOdGMQuB8HNEJIrH*CQw?FT zhtR>C%jp~r(Iv^_#kDz$?eu zU05Jgf|AFE5Y6Zpy*M0mfG%%WsFIltm=C6TJc;&z0@0P7S57D92})=u9a9SXN2Vql zaBWwf8f~d+;^h20`vkY@Vm+n$I~k-g@KAHQ#@Fc4|YK@vB@x(vC@rP z=GtFUS{*}Ur4>$$RwNtC>0GW*PR9Ev{n1sjZ2|jD0bqzrB%4*J1VA@jpp>`*a6kb2 zCPl$SyRvHR9RTBJSByGx0+J4>cTbdlr4$CNIg738ql$Ad-_V}oiL2_%Dy*{RY-`S* zED(c1076(P6cfWWKPSo>o{Fth&3Wo<$QVW{~PNiW3 z8QzN83cmB>vhbAOU~cg9QAWi}iw6_|oi(*Rs6`aeBvcCv2f` z>3@KDjlWW{+k3!6MY%b2O6|LWzKuHwK3(v{O*GNQtjFpu$ zw^33R$_K_0vZ`Wv;oc6mh@H~hf=A$m)+Yf2S{L{Vj*&TglRk6prvH*UfR-|IA0;lj zDlac6H=nwT#LkwxG#ylMpR3L2WoEwv-&;s(g^Y|v!QIqVBWcA%_oI~psxp-a+Wdj? zVT8OcYOfY~P#yb7er{+?MRh-NllQiZ>@SE_|0cWw-4b4b4v)c24SEnXNg!SH3J|ZZ z*)Fd}vMVb8@@nk~Fo$faJmPO)OzrD7k~H`p31+JNLy>_;093g5<-9b{2i^g7yy#%h0bt-D zI4#FZN=r?nSFCFL&J1^HYXyHb_;BF>zJYBIzc;&akEHVA0V>B{@z7W<9O=T7`DbUl z_Cqj$9{s`ARH)pj{Kxmga1>5MR$+d@GR3qD!dB9R!Bon$KdL*Zp9ccjH$N8UK@CAQ zI?gDU*9**xeDI~gAC3(8%m_|_0y^so#@LO*#gizUroKd1koh}9q)hfrAV8je?t%*Z z&ut!5Z%==E(rn2As>4CBuN_438;!H#;~xvC(+gv7C_8yI)Hhh17h0RPE%*NTf9+;; z7G5<)pMU!8DA|XX#yP%fL`7%2al^e*b-bv)2vbPM zt0=$U>aey@pn7zr>TE_eb^58Gw%1mEzgPXj#>SG6-g#6*ET32Dn!4}V3Ek;c%=*>s znJcSafvU!_p!rHHq9c!<%V6W}hNBj1i+0%#W{OnjCv$SwuXwrdUUU$jepvWCYeIK) zlJ8b3S4wXETconPI3ImOFDnF4VPZW^)s0*zXAiS~J~;=kiPJAt&n!rTzk%K*2zlMoieJ574de=%;AOqL z3Qv>CihRl{asPL+kP0cu%BrU31W#qT%8`MTpH+<4gl4_EQc}L0kD~DBFT~U^IITwD zmgN17DkrByaQOt|?Qx($WKRO^UcJJq};e$sfsiQj(Hi{lw&zSVkXGQ5gcI6_s@475^v= zcs1}-t6I>{y0A%}v~raNgY%`Kyq%Im-9BlS?S&E=L)~HMx?a&c!OQ%IXzbvKa+R$8 zUfNj>0NJpa6=YxaVj>Zif=(CVxvz&_`icTg!$wCM@yP`(z_bG&aU>o^0ZdMRnoaIn z2g7E}3h%MAz%P8O#?4Y;#28BTMpND2w}Ml$>8OQ%TZbTA!rY$wi_V5g3_M5A6l^q| zRTDJgI4tg?9Vph=K^iD9%(D<*A7?y4yPldD>5K!t0U-|u-pU00z{7!OBaXef$^S9Q zDCG&q{uzzW0Xq|*r(BAk!>2%=WdekgQ}}`2Z53!pUIaCX*ddj=mqhR`05n#l6K0~ zRAi;J`}-+yJWW|79*CoIUHx`-5g`D~T%V)>%o@;wg$lF;S%sgPQyl($r|c<5p_I(D z;&9bSMPXv1q3&gR7%7VlZ?3r-We$U=``5ZnVL!l>d5XVwBilXlT1=aATnIql^aBtK zyitn!&RzO&jEmMcAYRwOor)Da%F6c2HP?eq#leo8_T_u>8%tQomq}Gz?xdn>P6|`{W4^i6LKuj<$2w zI+CW`8XRm^TEhpArb(sP^s(YP?)2+FE{|iq~Q-) zFnGEQFdLoyrm*B?`>)UIIaye_|9^O1&&Bq?F=_hOndXC!UL=GTXXhjOoFKGqaQK@u(C@T;8P(gBl%T z*g1V>#$eIZoiO*&+5&~;(TaJ!Gpg^r8(E{g{ZgM?s$N^KG9GhSZ`T#2uQDFO+L&W3 zuzZ5G^G~y!3r7c5)oL#Tgf|1wklzPs?dLDjR~p{^QmXiPYFBPaHUnw59g z4zG?{VQ;asG^yyCyGm{STt%#0;^il(NTb2x+5r&s6u-^1F?_lh&w@^rz>p=!d(?KN ziMACI+g~YTs)L@1fj+odZl$A1=gn-$lxmasuIiQ5teSzB1bjQQ| zBduh7lPOo73uxmMR$*xdX6mka4Q~ynXQIGjH^kYMslw_swAj5fyjZ5xvYp9jIEBOG z&ZM%|epD||KdZbAQggn`-eWzgP2}O+BWOY9kb%bk3cq z9S00}8>F7rvn=9GOL>h!Yr}qGURv^0`hBV#k>YO{rA<@3$h#a{w6H7@QMrUxj~ytC zW$9ex6+Voxsq|TI3LOWM^cEv3v-LPIB5Xulx2B7o3too)I3S(1nR*S2@I!xRQ>ikO zc&2h**ik*jQ$@6se?%5h%xs(NJ<8+ZnP0di05C2&;M&>N@GIimhbLpuMjZiAkY?0R zs9Ikf41I(wZdT}yN!Bp6lliofethRdH8JW*Td}i+6B$y}0-LqP>t83DD}!F`R>=`0 zdLB(Io_|K)dJhPyIrxtY2o|!7(X=eGh1$dj#`aF8U@2GXqof8~@R7`AUeIWGabYGM zn3Kw(V|?rsV13XRXLc){1OoeOzE92Ua`Yw)znVdS92ZPZr8dy#VSct=$t}FBT(qdJ z3f>k%d z4b$})`}N!c=rp|4keq{e+rs^gl}g+fE)^?n3-?efowzSN8djVIYYJ7P%3I60HszXI zBr8Z^k5b(?OzgKKbp@4DFOVuoHiGUWXE%PwA73f?UW1}Xx!GQWUT2k!l;zqagE07O zR%k{H4~E#gM)Hd^7^Pn0V?k{lVp4mn^^m!Y5GAbewFUW3@7CPJ_d3J@=ha7|tLr3? zA~|ygAd0O}e}>x&GUMOTI0<8>hRzzKqaw3w9ddpd<$b{3?5n!qqW)^k(%KKdXQatJ z&jnJk&S#d5GDbXmJ77)P42goaWoZ7;NsfM|;S2|gxhPxmnPbL(IGrQ(%U9lsyS=9a zmOlz6>;1pKbP!-iZ{*--%zjj5bBhf2y<(G!k1-o-><$^M*C(MSusv+hP|J6jAX1 z8#IdwagvoFzF#(IRt2Lw6z>9&h!7{Er@W4Rk;Zu1N#@-*Y65!$!|h(}W8oX@ryI>s z%{FfdJtO;tGImfB51SzEIMt7^lEDr!58Sj$!bVI?UN#_@*t8VTC(8U`K!EQemnT!k z5qI2H^S#zuxwP>8zJcM)f;JftW^e|8SST~C%ZOvylTj{aW;|rl62UeMg+WZ?%ZL?U z59eS3W6#KtMa@X@azy8%(cZ3kL<(_y<^jYKul?J3gMkhtXv3fbD52NQDT{JuZ1e}F zTx54NS+};v-dz^$3#CyZ5|LP_{_;!4man}nQu?~mE>Mo%*%3tJ(IRxexg_0D;I49O z#cRuBj+i@Sck)=;cd%*zght;g9Av~+^XcP(D7Q!3X=Z-d2uulWIwYE`$=C=ni918# z)8*V9AJHC|o{{6`v_G)bNrMcZK9g>(fTWFnAh=Fp_gJhr2A2VAP1iHC=5|%M<|U@s*P9w4)|G)o`E{V zs+B&J<|*ygR)n`2eJH-M1#1S^lHz0IFWl8Z%B*=pV#@132DZ6RA`jE3lx`o3P#+bH z-5IyShW7TNByw5EZa=;X_i28xcr?xH$exVtJY2POP(r%}B8zC{u71H}w12yp;CQd( z#G`!~QJ1~vQT@vfk9TtPx*WmGtj%9U&HJ3{EI;(3)LA{SD_V5Qv=o^4YOToF{GQH{ zjP1Hug0w;cYn<1I)H&e$)*}vZk|7Ud2b$cn+HY3wJE|nbYc1_9lFOqD|6$ zO^1Gv?8t6|`!g{R>3UUA^{H79YR-X%y$4$$Q4V?o1MUX|BIOMp ze|%x^nVI!1G(PuKACU|_30od>dfWqr$iNbig^*_p3WNGl6S373Gu_nFARr?&S--X- zFcBnT4@9Mt;+b_$c=~jOZ5izLKkxu4+xjTs1xLGm(fOmWUX+}G1eizqn`16 zIY;v$7JQ)yH#_H6yWIPIRsM7(YI88(Wz`Ie%u)ka??*upvv6Oa^{_d!%w4HxOe`*l zWTDGuSljZ2wWlQz1on}uhl^()ojn9CoVP>l#16rp+83zHvi0D4dDk1xjKcS5JAsL# zd*C(#dtKL}pG`HUJ=;7Gyx**gQ5Y1LJ9oL&VRO#5>~*=&LH7FMXi@I>ejIo>zo_?n zqw)79C<+H)n|`w27tBX!7scSw{M9AS_Tf3Gm!I?UR$X3s1#0UX55F`tMqNEQsg!tx zxY>vX#g!FgKq6_xn0g^^My`qtUqH>nTc9xK& zb@^#th!=5*Pm|7!{mTcj5Z~DID;4Eh)Vv4bn%)F4A}WMpg^i)~7%}#_Gn;V=1PO1V za%c9sb665}3r3ysj6LvvYSi1S7AK7|eA;hE-BQoRiRB&Ae&^&j zKsSu4qhFr9%Me9N%A|j}Nz4(|N*vSfWDmY1b{G+n=Y6FVbN~_A43$YP&lPqDK=7pk z_a6K5%O~@#K{V3+J^a|X{B&xqIOewf1(j?ZzqB!>J~s0!wf5CjI@mBpB7e&9ciWhs z)g5%?_=O-7&j5r=&iA z^Bw6C$k2SG+lDcetCkR;RK&6aqTM!r&T3L%_9-M(%Wf5dkHvwyF&-9SaA~ujxe@`V zg>K!@Qu80VZolkFZIU~*R(8kS>YS4MLdOQ>Bj@S|bU#?(q{KJjP#thqaGbSEa?0G<7W27JbizN>oSMks>Geu6{~ zhPR1DFb{T+=))L}$M9Ac(BX4X2m}+Z8iZ>SBtl!V1+n$gycY{ovkpuChs$50vg5zb z`KD%J0{s?&7kr2C0vF2O_*HB7RpJAVfqCLe78|P>Ex_O*j%lm3vjGeq2j%6$3(s_M zxLHQH&-H2Hp*Rbx9&->^>VMK3=z~p@0^w&n=99MVXc?6!$FxqUMpJsZ0HuvYu9n7p z>y~c|!~ksna$!ro3I&Loxpr;!wU_qCe!dZ+;FngIM13hEi_Z>bJ!G(nF^aRVQwgu` z+EwMAbr*R2nv~jIu_%Dhyu@@iPZ~2OKV6itAc2s6Uv+6V51uN?ZWb$G1l-D4lU6_YXP+)E) z5MqHN4~qzPE|42MHE@)TgEFDoRv|y!Ep8U}Ed&2j+8y|1U2T>pTqk_7aM5*x3k<7M zu)n1S2Bmz+H;7<&HJ#;2AnX&yq`*u`Ae3D$jE2)@xI}b%v>qLg-G}G(kIyx5?hM>T zo!~XXb%slV*A+LSBXs%}3-?_&cxFG}h(4Wm3H|xv>|-Qy@mH;BnURw3+L&S=n;8^Z zopEifo&mAuw&9X>mEUKy0LF&f+m}E%BPw;*LzBd1BqO=m2*)jxG zSG^c1c~}&{HZY$mpLt3(JB4;U2Cjr_f=gZXPRQ;j2q01HZIXRS8wA1SDBJ)7ct*Bo z1L^RqheS4)jD>-l*tf}K`3&4mx7_0A!`<426MT`YVQvgk31)mI83ls=uU}v;$NiLc z{ml0#&G*OJ>zzb^dP6n#HahSC_Gm@p20UCd2=0=_*R*fBw?tSkc-f^Tr`Y=+(pM#F z2}Mz5Wms)YG;n2V2t^5GpQnrNch{-ZREw^Oa_6zysB9G~Gz_9EGGqnrHuN`E1416jy0MQGw-14uHJg!kuC+WkI~I&U3;9d=&c8^=l~(cHGk*E<0h6r zXfUo_2lkgPiTu<5*u7?0uKgYT;j7kL6PdgJ>HIQr1w>45U&%TZ`r|R$xz#_LQrR^M{sYP9~EPQ6U*`BkE^0ohVHAzNx14{gOpgxDR>&a^I7^@ z!>%7)8?2-MF~OspP?^7h0C%QnRfM+pn{B=5|xAAnt)po_ARTm!r!r3WzEx zKwY>whzc+HEZy=ifx2i@ zN-0jF55?G^mawIq8VUlTp+jw;f&2G>ip0Pv;mx>7-nEoe z1HK+YWjaw`!lMKBV}5gv8w+mC5qON=J$f$%^iLqB=>&qhVSf+k*Y4(bQ~pcbl2Zco zI>zvO?eze@d)|Y)^4A+7uvftS2X;^QA?S?(H`aIx;>G6wjlt;uDIi%nC$IVMD#TnH z1=cf;+CLMz=3n~@oNS@~YZSQYO5{fZFM&z;oe~a4OosMvYiJY&>=gtNE^(QIKx>S> z`FkKC2K@JL^7d{5FS*zSPiC;Z>r}voL_0?-Ww>%U&7G?{=MN^@1jL|IB>jF>uZj+!L;& zGv}J0QbBlQ0}Lm(pATCol*A6 z&Mj&G5%>RM#{i`Td6(S~NZ+yoRGBjB3}Twz|Bq&XMa~3w;8{%d|IrLHh4AQq%(y=I z#|)919rd&HwUp~!_U}1R5r30hU_TG}*CK&?=ugCfyZTX#O==0d%BeL!EPez*2KR}- z2UH{`z<1*&(3?dRqp>|OZuN7xFfY|J(t=rIDgp`h$|PLlHl>@ zFC&F;rT%qRr&x|baCZs;RqUz~pWqYz%M2$F{c9I#XoCy`E~z z(TU=I#eaWf&iViP$ov_zsJW%1i9NHZrGcY~u!)h4u?e%ZiS;W-v&Wne7PkMb#Jyn2D!9LC}cM$~fic zQNO2#G3fS{%Lzk{j&YntpiNz>QFp~nq!z1taXi4lvH;2JxkZp3NbQ`CY-TYU_JS{hc97KVyJyfIRgI?QAucHM(sQQoHhfI*DPNTe-*TK=j-05 zMs(3$5E5$|*+EEB(+bU994D<8W`jlyI*mLd7nL_B!T4sECSar|4IZc9SPhf{~W&UVeA0@GaWINaQF`Y}b{%&gDk--@`!USHQawZB2HH5Dj zMu4#;-1?xMwiMwFt2>$5qkW8nyx6wmdfqjf?1i#b|_nIO#?5y zlB7$fEC#|#Fz~ztAkwX9(}9nP@pJ_bTPN8^kQe}K#zrjUXtG<<^>+Dm-wt~=VYbZ- zi>~u%O=jagt~$h4^U4mAnrb^$498Je8-#?J;#2cyeeP+$Y=UN^d%Z2_{H`Hp@tw;o z6RQ=qNQB>h-DTEqaYvQQgqYH8H~l(d;|rVId^BnJSp9OZ#$R}1LV#;h%RuX%_FcOw zY%E(G_JZ5p69VirVy?FlmqoXTZJA&#u-iXB2FflwVKeK?`Wv;5;(xOLfOqVJ9>JCr zrrShZhra)rc>G~CfsFlmlQ6v)l?n!pLAC#;@ZFYQmJbXYeW)iDX*96|xd!n$Awi}K zI5e=zTc((@pYRPcZ#}hkfSI8dWy~tBddy0Bt+F%pl2)e&*e8b`_?O*&kr~A4^9c*K zDq@a8(wj27KGMCxgM(&|!O z8#|&YAG)6D8nm2u6fnG~{v&&mTcGKp;S<}aSB$C%tHiz0)Cui1csW8R?QMdX?azvk zq4ENm_p?zT7I%lL``pFeAgiIqEC%HljN=oIO$Mmb;+yif{CYS26h=wXCn3xn^qps% zqSO*1Z0$>3Y7);6k>Cp;h{%%SLcbp%A-P`Kj3h(r)4Xzbj$x{s@C9O%3PkKpyFQV) zDn!GEk;t+HQxuuJ%}_>pk#lVR=i@8od4?*C-qwo8=maaK%tkX^3TJL1;+X_}6+cL%s*`+#tgr4hE7VvhAhoD_t7^1<LhK>u z9_5qfOpdNH-J%&D6fA1Q!A?S1);FD;!h8_>5RaO-7>oC@2jmI{BW%${=lRGl1AjMKMBs(gn<8kq@(#^#3ym1g^qUaD&?tzQyAcDfv9RkL^- z)0e>7+_IGfTf6S%+f1L~P}ljRjITv4+m|9=5k0+QC)BuHaF<9&CY(noy0BpPH)dQv z@RHVK(v}i9So3$0V9zLhn0U|qjBF_!Ws6?YvMXsi!oH*Rv8H8D648764n(e7FYv4h zW|n7m?|G!ElN;Vg*e6wnU^ol2bV3kT2+rA1TAM;$n`~d8QH+Ig%4>(I(IvX6C}D-=&ZIRx62U5?rj?57x=zJvKQ`%gBNlMfq~{F;rQE zQhjy&il~lg`t@@;ayw%7gN>zFtAU7|;O=Qe2V8n@;oDWdySJjve$F*}5lV+5OJ}f% z8z2-+R`=-aae-@9~u2Eo{54@mUxpfW++O0L7bLDd{}mA zSxX`9vmS^MvwKNdw3#;T5BfoT>>5e-y_0$S+ZK_8GGdrvUd<{a(_A_J8)WemT^Y0O zy*xd#!@3)7c-~BEOp36h zS8EF!@!j&{aIHZS@6rckURiq$N(=@YSEqi4uBDg; zs9&Gi6&!17hoIs2z5}0<2!|nkgDi%l^z|yV0#SBA)E%M>TEPll(r;8oZ?wKqfs17` zCAR1qMl=4B0W1OBMJenQW1SG^4nz$^dR(L*wIF{q5S>JPMcID%I^bsDAt3|N_Nc0M z3O*o`@1+U?ff)FY_lefLEigDvi!%6?Vr-20oE(S&%4;A>5+jA00x7Ni@0?ge=XRTF zQ7eNH%>3te1)ush3EviA{Ick){ex-d#nWA&n0+4&su|lxJ+N$%r4vn~weu9RSlf5s z1l$0Sp2pwDo=^vziUEC5KKpi}4)UhHoFyoXP>@qG83?DYx!|L)hn z&lZngU#0%O1Vs4ORPRghJpG`b)<-t2sj<%cVy{DO32|WV@~Hat`7=8gK3R{s%P*;O zVJt$o35^J^IJZ2^wTI*1E(&e*vn-l}W!>HXI9+zqtHW~R`BhyZsChYz${8;ek!e59 zL#s3&*|Qock`EN+Zw!NVDDqv#=8U^2Y&?;tVGgN2ssv8`2oKs zAE(mPvqsDc4RmttJ+Y0*%g9|b%OfD$QrI_hhiGl*R%Uo1%?Af9Wpmi)vq^+}F>Qs} z+0L0;s98>M5RHZUpNC_985%39tTZLAgEv_PCFh~o$Kcy@O)ZP|K&_GV3Mb19I{0M4 z*`-0*@M~n|7OD1=pQ?^>3%#HgsZ%_r3y}`C#0HHlzqcB%7MY*>TX{Bg!eDb2%=pg= zTUYmkdl{~%aRl&c!yI&T_azh6+UpFr8D^}%izcWQJ-hsHwxzMQ-xaTR;kCp!tJdeB zn_v;WE_cqj8tSpFU-6(#sjiXiBV2r&c|AkV=>*Q8|NjF4f_5d^RL2s$$#l z>UAM(+OwTP<*iv_27J7PbXcQQN?7+ zS@qIDl623;2#xedY08iE&6P*<3H;Jx}J#Mo>a#+dMqXA>b5d9{FkHN8T zoXLF92uMV_%p|yWZi9wukvy6>IG(rY-#9)X5l2Pe5|Vo;{t4qFn*kusq>8V_hpf6J z6;EjGmUvdQTOCqufNpba2D5h76^=>4cjP4eUbTRZUgd)iDY<0nvcUniU<^!GQKml> zsX8rgZ;fj7phw*nJ8$G*$oE6(JgG9$P!=McQ8WK44U}gY@0etT;YgK_k*v^8%d3-z zUSg*w{&*_aT!k_x!m}^bt(XK=H7h$2H#OAl7?io?&wemvtU*x`C_F=b)$Zp3n(#R} zxSr??WFzESrPz2Affjtp*lF#2X+-;z-{Z04W(71CtInd}7#riBX=muv161oich+Sq zUK~qFnP+1B1p8Z{TF=?bI=*xsuYw`f*~=1)NR@NV<9wCb@Miq;1lL*LL&03|26Fz7kKKp`l^lq z_%{ZIMIugsZY?B(6eU2H13&d#aoEk3Z8>r#ent1+BuDGF*HtMgDN&k5-O&O=3LzyZ zR8a;D;f6mQtuSG%K~jm>3Y6lo`XhOL-!Jys$x#9jv%iun&cgQ}dN7d2MvT=IHW-tP z(&!NEpNYyO6esviJ&`Ce>DeH{sd)K5jpRmldbYFpABk_}Hs3?1;BEj7{=AF_z{oF; z0&!RjnI9fPF(}XPorV7y!V;Pu3zN)j)jOz~k(3j-%a;hSu%gF842m)y@bq{Ko1z=7 zpn-=`ZhP|sbP5*_q~FNML8OqJI!H-0N-z=p+!^R-cv1fGe@nkeNO3YRM?I)9RE~^< zY{QeAIV+n-$(XX|{1zxFlzl*O?F~7nlyBdzb59vmEyDA0{ae#PWHbESwd|K-iEc!k z`<#}`RuetbC8z2q-{T50&*a{-E*J7%mv)AK`xallC0+u`Lg~mUjAr>k5o7WbLwNK? zhdqW-$*;W)uVO3-MLJHSe}53^3xa}jDK4{;`ea&qq9mcjfX$%Qv?ZXoqh%X7KZeqb zV81FE2D(@BaDTl{#9yEy)%t(2_SSJxeO=qQNJ$GyNGjdk2nL^VleAR6)Pwu`>QLhW|Ut zASgztvgp-y7T!!s)GKc{qx%o8LqR@!VcQGMpl5w{5+vGB305^#dt){BXmz>^w;pUt z^3%@bvX_1MRW!%I@JSLuqU{G&kB-FgfcpwT!Z*(+vZ(Kn?rJ=U8%;SmAUq*`#lf7I ziu_Un?qp+=1oEF+{p|(Ebi9KchpD1pziQ30UgD@9Bw|CXC{TcE8|pedsVXV234g#h z`C7=+*^yo zZspYo_1*;HAk{Tchkni1C-BYe7Vrwu(`cZs0_x?mW?L!(of#d$jjGpiRydLmL22=4 z;(ZcRde=&m^`9Fs)QQI*Ygd^i!j|0%fSyg8+kkYpOMFWf^HNb9ZIi7-KS?kUrf>jn zeN?FcNtm88RnR4N&?WGGh6d}?(m`4s8n${VP1dKCgFud?x<;+RUJEikiWIJ?QFTcF z8fBCRsUPrVeHs$?BfSW zTe6|#X9PFmgX324|9J26KX?ycwgBFve-hbK>fukg@?P_VdS(m61qeJ9gV9k%x-?O%;BIM88mDlCag6Seu4N~Cf%}p4RNlr^(K44}*e_-K zJ4K$gJFn}pB`_ud@%CZeOYXcl##@pPNxz;iNr0lysOPU?WIv8{oEnglmmOJseXpCv zJMcW9cHrNi@SZ*qqGDE5*|%bngvh$f_})~?0S|Uw#A?1Tl(L`>s+!>$sL+>bvn#3r zIrkO4OEqALRPqt16E0?^P#F%S*l&fLE+qXEDq}6~tx=?SO^upEi56swlaoZ?Td!4R z!5wVJxuV-9^0(kHf_TgPGWg^vz~#|pSF{GWfcpJPOp07UuqETTD`|-l+8OEtj;7uU zVQc_B49`dP#R$ZR!NEa``ww5AIP7RaE;u<41isz!zp`Llb~_WNPs6QLM$rYiAr&1AR=cvt!9OcY$(P3+UIH%anwMr<=g9fQfO=%0#Y-m zqVj${E6G#h`L)r7B^J=FAZLC}V(LC{=K!uRh>gja_1Yo|taGp9DS zAbw!PzNUtPo$g|Fov!FgO?2f$Q827z8r+ z>^}{TE)oYA=Ru4HkvUH&P)#(1xEbsD>qV7=KZf?IVRv>ouIZ_8ij>4c(!0G8^I;jw zq8-oP9NUvVy|sUA83uE5nrz}=X&K~H&#TQ)Yym@(T_W4+wgE7JT-CEn*;aQ{`^tFg z6CuVk5IUgl*E05Y8C6h01~UKOnfvp%nA&gbpqpBB|KmEp2%iAo{|~A0Vj^PyeVw24 zkCe?3O3DW4(PQ8NJ$h3?iFUjPSaV7Aa-R!Qf%)k+qU&`RY)4eZqMBb(r)&10L0 zeh%^H?l`|2ChjjiXy-oeO0zefw$N#OCN=E#^a8Euu+-g5X0nu9KgcMn{aulfYB`xi z+Z$e+Mgv-k8$Px)$nv6OHI8k}y7#r)?7ZGpu~}SLSVg(5-NekV3dFojB(sJ3#~C34afRh^xTQ?+Et1J}rH6R&c$u~3Hw}f{&Yb^b~cfH9myY=Y=UcUP7ckZJ)gi%S1cb5l& z{%ol`V{C^9UwYpXg?i2DDu*OAy9?wiM>@9jM1wvy^L;WF$)u@f9E`%(K_S{~pXotx3C%zbq6v$>9>?_`vUtRS}z02&Y&cz$fK2h6ootmeAwWO7& zSfep4)j%;Qx&nG543H)7*a;FHAL4R!vcyUCT zSg`(LcE3a1VB|ibJnF+WyOgd)weMA!6nHfGXVfBjTZDWz*!f;G0}A6i;y16UK&T?{ zO}LE6+2+3WVZJN1#%Y`gl7-o#5v;qT+niPE3#6D4HU?Of+uXult)zNmz0ZBa?UUzr z$fFT@!h!;sJSxmy>Ti#qB+8^$jUR?=)TsbqR&dluTy&Kd4E-0pXhW~Xi38v`WurEV+v7mhq%A3cDkn~`O4 zHJS}q`(|w?nVBvA%9=TQxX3f|=@ZT4hQsXgP%E>F%a1$S&u<_~IKpxJtkTW!j|Z?f zUs~xdjLVK3pv`@Hes7u}Y}I#|Oqh?1>^a$HI#IgK?5E){_cdvjsq*p{IkP}tT-k_> zOdUg5a#j01hYEM)^|+7LT`n}g>GD_F7iz)Ald0~+qQ2BCR#QUIGaC<3SoLw#Hr8&y zu5Yr;7FnWVHK;s06cTJjvNI4mK${bQbv!Shy?dA)C-mH_(2~LeCpluZoQgNZ>`c9zDVLu!!H}Pm zj=jP1sQ3BZsdOSsu^WlAAN~6a!3w8+tnhnJebw6hnOd;ySP;jcCs&B9JT{x}SvU5it;-sq&21+b+rj)AUq|C4q`w>Pv zPVU7vTC=G^#k&(~lLSq5lN1Vfi}-}taV*_B>*LsUMf6-#O3kDgbc$`I7)pw}(~94R z*CfX$R97aRp%Ih|6(jHbSRUsWw67?$T*L}6&9rHIeBJEO#@Mkbdt#Z-!G4tU+TEMm zlqrTa&PDUESyLZBZsTHSm=l`H_6HtIG}UOc3C{Xwt@%tU3{#IwO*LhLki!@TAMEiH zzTzcCEuP(Mv%Y&XxgVB2FEjRP(gt>MdN+3cN%D5Kd3I!vJWjD~bmUiReJ5%jI_7#_ z8*}_GR?!|e3Bu&!ZAKn{3B@nRy?6R9pq_%)`_*s!>zCG2M+Ce6rm&(%cPCoGZ<2{o z=IItvSWrK+Pkqu2`1Sl1LKmEpdZywm+--ZFX#0bx5oAfBlL_JO@RZtO^Ytr?e zR&HJ|E%7bYBZ$L;sIHqZLrVhffcg3_^-bk^9Ynm?{cW)UJmrh4k3+Qw4Y3|o8{?#f z2~z<5f4=Hz&&eRkyNhVp`I36IeSF1M{ewKrHvPO<_^|%LYpdnf>)HDa=n_97R=<6@ ziMhSFcX^-ANil@?R{y~Mfspi)1MeB<%$J3k3x*mBPQehIIqPTJX8Ps07wKSG6F(yI z&73X2P`#q`^ZnSIw$O$hm2#Phl$Oa-jY1Z!Mf#wUxyI%fQP06^5QXr`LE+b;tT353jFHge;7KpJyS{|tJ3jjD8TW?v zKH$m&shS6_O@^rvWeKL{_z`q@>otJ@`Wsj z;_YP~eb(yfh-HdybLWsebQ|eN*Z=A}{~|U@oEqE6w7h)OCN4@`9Q%QQ{=}_Mf*b2$ zlF2V#45GR7j=;?DyK9Rl1V2@C;ffIR#{O)*n61m){eeHewC4Eo{G|86%Zru0-xphT z4=zE{{Ey6+7fYEhFEbr~AC&oOdF_Y1^zpseXr)UilY05V$jxW*JENH; zFMm1P`7HiE>^_Nq#loVN9KAMR*_0wIIkH$Yow8SgoFd&EgbT(uDkhUl?G!*Ak_WE+n#{#_hR7 z`o(IYsHd$kCoT3@1xS*4J85}#SDS!&dtSAhtwRYdb{F^$E(wX;1h^=1o*Gm%fEo=8 z56Re4`;7#Xu^Zays-Q^${z)`~aE~LAH8pMy4n|KL{JcR#Qo*{wrW3D8EvV$`_!a|! z`s+I$V$CGG-1igBag5Qtw|CWOvcS-yX3)&O4G+vso z>D`_J1QUZx3naF78ut2vRPHfB%AZ4IZS97prX&doHHwCjARbqwsMjqinY|iHAU``O zDHW-qgMvjJ0%75TaQ7mSl{Gcb9ZDdOA9%}amTANy{UNhU3$B#kN|5;z<+j4xwAkZs z2vUcU`2Z6{yS36Kr;%c`w^B27z z$n*d_*{Kh=skr+?03K<@qUO|xY5)|(pp86ifUgWseYg+MWet1tYTUf8=*R`|4^DZ3 z{*-p$t&kNEEU9Whx9HkxTr~|jTyw5w#Nxlafb$(fa?=* zkjd7;h!DFqfW5kgv81FIMLbjoxI>9h3^G9Beh0)+qX?HWyO!jC=YQf$g8dDW?^Bpl z29@URoRc>Z#5vx-z`2#9y5DE?G;}bf*)$>9I;eStOB3>F1vF6lGg)szWAZ&{=$goZ z|LQZ9w=6FdKgQo;QR#Ah#y{}JZ4Be&dPXR{11P8}tEc+v=&^QJYYz0&uRGU+VfP86 zH4|0Y_O<2P~mPZ5B_1uT18LLYIIVwpL zX9<8E3Rkw>8lKt&8ZZHfZ-7VM$8wIS#WfcEKk>4P2NF707U^uaxQo23|0VJdX!(8@ z@`!201bwxAQ)K|OdEh{L##2a*2mav15tOVvd6J;09TQ{$)@_de8bM8xe%sDpdppw*sGsj9{J$zaWI zjWoO8K2+n}E3NJc-)r!0j+8nmHQLkfi1^yJ-dDJ2VBFz)GG`C-$U68{=apenm_f8K zP$#rD@vGtq2Hi#ZVpG@sGKGPW@yQ9Ae$kE7_Adoh&1Wm~K!T@LJm6(%Y!W_?W>-eI zUu&D6L(QGurIT@J(jG*aP~l#F6`9GC;1yNA`EN#0GyP$Au!3_(+L1#N(G^P5y}6#C7@et*dA8N5sj$M|AqIcu_xClYFDfA!;_s&?h801a0~oy+|G6HXgJ4U^?L8qW7Z@)MT)kGp0!-D z>zI|{L5jY4n7KUk93Nq+O`gmcgDyRoZI0Mdj*|z48m`1`?vsI19`u-FOtg5QXocd2 zRB6#ged(@u%ms zrFNnxC#WQmj1_zZqof-2fg}dh^hi*6^fat1@ZP#+*lq3+KQ+A{Vn(yUv~CYtkVfko z9@+9n;aDRk-ulcJmc zcLLCd4{zU#gYH?!DlGClTqL+pv$#4WxmO!a4Y}LOPv_BaajcGkA}3~ZiReNOKvP6& zxsdR%<(2mwDdWV^ohNR|KM2&b^Hs@XwPP@)2XjygH;66}e;||cSX1&U{-{DH6`;^b z7_8QBVe}-{a9W7QVf;n4(a4aysyqjXQsyk2_ApUFHG=+;(Szapt6ao5x{m@?lVSv8 zyez;b@dxksURPtV`7L%8Kq0`+G`ZlPK{)@I1wISxxfSG;vb(fU8zDBuy=rp-uiG(? zt~J4{%TLz(-5j;b=NK_s%|c}7d1{>zb=t!d1=U92J>Rh8>JBju zA@H6&^2J~8joNODX#hcwn>Yaa)Y}c-J*uq7s*T(PDTLtq+}!aS zPq;T?)`nuOyPqX54T`lWks*CTycRS-pA#d-L61DS`2eU@FV1yKBvo#O=fw~GH{tAJ=iR6>T)BopHd|?5>|F>0q-v5tmeIXIC|1L<6;A)Ib zqdKQU(xt^AlzK3hVhKVr3`-^LyhoEWs@o`h7Fs=Ipo;eE@!95OVI@9F${IcRvZEFS zh`K{xnzFfp^AC={Uiu^qPu82{=?QP^e2s|ug;=#Q?AmI=``uwOK6J`+>?UN9+qCPQ zqj9k%Oz64zlF+?{x05FQqF3p~bDphjUy!)9ZqMW4-uZo{-fLUR=`pt1ex_)RsDVkI zZU)mpLuCAiGCeUIO6{Jz&PV=Z4Cb$F$2GsPehWey+UzPq3Pg(=bZXpGe$5x1sMj1Vs`c{(>U?`? zwo~K$7=h1eK;ihhRHS-$J#@eLv&K)PxIACv8cPhN)2tY7hlkh(>Cke0jQZ)$xOX5BeO=^W+WGMh=dPhGH+g@Fe77W8 zd8((h6f6djo@HHI(Qvo-Yb}%)I^66B)#wM&KTpE<%{5-6ozk4`kS-mQ$p=uK?Tigp zisH_EaeNT4NGpFiM&C+Kz&a>UKnPot;d8Fzslg37M)*-$}M!aSl`O`donwYrD z(tepd&Vq?P8qHpYz;51L$CR&W8$ZK*XZj1z<7ax`Z`;kw`R`}C#}|m^CPn?ECq*)R z)4vctz&lTt{ai8NuuOiBFXoL!I{3Qy1;B%y5DQ^UcOgE)PAKnpT$4J85Q<_11Ma>| zZa1~J!1j2Jp;cdgj{e)}6FT6_4_e}`+rG=>TQgkr(GO3*@CX)A%fF^xU!ibr-;@_1 z!*Vf+rZnt0mlueOypymL`2wWL2~Ix>YyG0P{2KaIh6+o5Bo|%#?2R^qj*ZKsT*YdI zS{j)uN}4yq!#mV%DQFyvG+bEiV(;`>LUabmu-n7lk%);Dy9!E*58BXg>Dq+qg%OIR z_DRg*y_3q7eiolnrz9w@w}y-LiP(~nQtVa}CsU;(wmfeHVRiWp#3QP~rd*!Rl3*2K zI69@|xp>rGBw;7BqUjf2mNr85H=03MAtTaN^4RBAH`{Esj!)JfR%ZpK%WTDx8DAT{ zi|%#JHLBW>+5>}heI-)Ia`2jj&IhbNrIt>F^gdkQPZ_oKV-1e+J#Q9;pW`2U99;ebUOIPUEaXJ&<}&obHn9W zL3yp70Uot>)2>gv>v%ytUvsw&+Xe&Hc07QW+=dOufRWKWHwG#@^}>4s!-1}k1x~LW zv;H8pZNnJCmwNc1$4}lM(k6%~ilJH|!g+>Rdr2%()|z@eaI4dm!k5=rj;77c1`qVa zvbdVW(8Ji70Ib~CQrZTzWC2eT7d{Dy8#=pnw!xY7FNe@<9KN@Se(J9l)ya*@(lj&R z9$KtI0EL6=)cwH5;JiGOzyIbASJEgxJT^deS~60O0&qNYjfFDHfK z6!VJT77ilP7Sq>#u~1K}UGV8M=?xfl5>^27*L$Z6+EH()VbrJw0V|_~x)~=5N4;`g zeUgzb&EPs|7-5q?0Sa(ST>M&pAdy-^`?&=+A_V0UCs~S?P^8{to5XsG=oadvZ^K@y zk@>;RE{3hS=mTv*L<2Qpcjd9ug0KNpAkN8RPe%}u8dqDGOz0=;2(7gnpv)CwkpZqv z5hL4qlXQ*g0jx=!NQ!sJ=4AaNF&3!GsYaO74MO+P@Lp>y87n@lEi{$QQnbRfpmi|-29HzKbXg9st{cZ(o6MC2$^^Wd?~?b6p)vbJ`n$f<1eqE2ab=?W@?cq7c0E@UF`1+fNK#0`<}LqvEFv)ODES=>SKxYp2a^O$=Yk)Ztq+=kT}t*av965jM28 zk6@dMQVS+tU)_&f4TZjiKR7jQx`!2XRz~r|Qhlgt!hWdkP?yM1zN*4@C~0X<@5RE6 zogqR{Y{hCtex6ep(t&!ew-rOfGkhqTm5q|G;!N2@Pecw07Ny zk78i)8-07LuCSM%kM`W#I3gQkdjk|0I*huGW@yp+aMd)yqpYdwQT*CX@=ARY9%feY zn^C?WTS=mNu~oBX)9$HtO>7SZhTPn@;<%b=Ff#Yb2;&{tI&Z0tqU!D;uNWE*a$3@C>l7gAHccgVL61h zHi%6JXWAFVP|YEb`kWgD205I^K$TaCy1{gyfIwT7RC7JoxqN z>+iEJx?fxEhI)-L`R61wS5qtI&+UFXL z=33*Z7RZitLHfW}OfTpczI|3237>(f2y2yuFpVs<%m;Q0s8DTs1D$e~&(sWsC=H9DB5%h^WSB{${grV5NsHcI@wi&PzJ zHcEsgQin~aL7DHi+CyDE=(+)c9cXGv>&)tjkR~ZypEUKPKgizK^*9g z+arLJ>Sv)GZ0x^_rE^f9Uw(l&OyxasJl-ggY91@7J8wMn;h$8gp+w3AorO}l)Ew~K z!a(S@!)(5jk8-v=COGquArTr{z=nTPb2E(_Oj#RQ@_ifXb8 zllJEe47G!*TAo`zwp_J5*SXb-1xvn^bXy9HK|Pr%`&wB?ifY(}iVX<9$^^A$G4GcE z{P%`A%#=T`>3DL?vnY(JfVUCY%XECUQZ^Q8!Li@C8YsVIB}r2U2vYeaLFU)DlD)i| ziGLf;qQwN;?+u4Yt-{5^vF|;Cr!%0@bUZreZAA&*ftd5Qb!-Ob<{(%uFNeWFRG{V% z^E~f3P?0i^_is}#MOmiv+7jD2NSpIkb8OD9GaiAgp)dcitW1FlHSrU)xX*cW2sPDE z8mC~HNC-70)Xhyn%2a}WzHkiCtPL$rfG;h#&vs!OjE&I?g3T1>Zfnl3ccnwzSw1BdrC66)Nq z;33+_#jPHHEv=ON1=a4z@23h$1U8Qu934iur;m`r%{5OPcmBnDdlU`pV4Bh+&R%KJmd=CS;` z0qie(R|5+GPtxl?XiCqc2-@L=we0_A*%?yC+BA(GcHt0cg1l7|l(BAcr|#{hUxx5^o>*W7xpn1j8^*-_{@& z65nl&7#k!ZsQs|7Tcku#q${l~c!~!lGszCot*JA}X#+W~bs19-u90>wgg4Uh!;5Tv zl*d<5N5xvF!uBwv?SJ9pi`|>{E3zC0PbdlDDR?F)+QrI7c+$$0Ssmrl-1355}X>v4j7G0R`GV+RveYk1c zb6#M1xmcP^@u z;yHnI|0b%2-*QP+F({NN`>`V|A)mBCD8)WslfX`Q$-3NNioQByuQUH5^+1lJRj#~893bi} z5hyaCz(^mr{6%fj+3VE?PD=vD z?|GZ#|6k(2-@p_9)i1?&w|CjqggKMwtMd zIeqJR;=$;S>)aA5az2<<6GsiqpDuvBddMGafcWgP^oP|y;R3VfRp72>O%$iW-B!F8 z`cE%_iJ7GCHFQh88p_flW+)i(M!yt89o2t&=05BUdiF2T`3E{dubD^d>e9NJKfi27 zxx*_GUWQOkpDJJ7)~-nVZ$ZoV_Zopu+V>||FzYo468>-3v z%e;ZIfk)|G6OITw{T>RSuwKfleghk8-`eT_(}+`;Oh1^U0mDGQ6q`XR{0wBNor45C zQg9(W+i%jj$D$^5jsMkz7XKd;*P~_n1wE_c)qJhwv!ITun;O3z&%qFgU;xD9QL$hz18fsOjW(hQB*lw@gCG^2K-%}`)uR#Wk?x{eIdu*? z0&%!{V7v;I9_Py6P?_}HhEoak{TYlftt=%+$tzs&K$q|&47RaISOW*?<9od?u3{Bj zM|K&qsDc_VTw&6Gn&5UJwKH5$*Yd*(_Aj?k5S;M6(w;E`8Q?m%E_jkN6qeZd%wmg) zI6;De#zA~X=KS}Lus7ALi{L-I3Sl$Ig#Ra8pCR+gb`}5Sp7FjDr*+!Xj#%f`{w&CY zw{e=>et&D;nhZV#x$4K&mHr1ya*GGV>hSkC)g@Jf<)!@pxE?Ob_y4*c{(n)g5&Umi z?FcRjmo%!ML|a5^8(fb@&@F=6;*~wVMq>LLdJlJYR%2iOi2h;_C(_^j#k{P$*=sZV z?YnG+!fH*Q{5X?wyZm7j$;00}3B&LCOl+sp_j~Fkw7AQfJd5)6R1-Rn5kX%;wrgA-b^M^Tlt{pBG# z&zm(%-RoM_pOFo#AHuf9w3`VzteU<{WlC!lay3SH_*k*oI8k=*UiWyBILrY{-{E#z zvt+A})vamVNhpiR%VIj)bSJ-zuN=$!1Z$EQ=9u>j-tErYZwS~e3d@Vcx0`TfEh7a$ z)8=gGE63Iz7aTFYN>9s+3xpNgiIu=G~a39*3lm!lWM}&Q6Rhfsnl`Pt+Yu~3L*;%XIy?KMKuV*RZ)muyn&7_abVeT5bldo`9 zGMX%namVquXYWwz9(dPilavJ{+Fvg|f~L3)c-E78KVYdOFAW|uDOr6~)b_!7|GB`- z>w^#3*-sr9TVgflD16ax+r&%0<5Qn9^hK|Bh!FgGXK7KX7|(Es$At_1M!%KO!l2q( zn*l}Wm{LZW@p?)m^U-4yYtQm=%j5P&w{puD&m1Eh-yLiUuZtRAlxKYQ+|4~Cz+acD zY7X#-nq-s~v3?c_cQz`f!=lIH+zND-Qo-lPt|)xesX)hhTQ{^upC2KiBp}#iH~e;J z-Hah7U2^3@Bni=RJO(PHt)xq2CR;1NX!@15#QqZ;=1@VUCT|Pj@uP7 zx|;^)qzM=pX2)K2yi_Zq`=!-~hk;nN6)v~(L0=I%6m&fLBm&p+o1{8jTY!Jz^mox- zR-2{7_;%Mg*lqCvxx7WEf^m`;8iRjcgiY3x(kf=;sjNZPJN(|JYa*r44BFeDIzHrb8v~9ie@}|pXG~8<^gnU+ zIPgE<+~hhYNqA*rJb53Dq@XCdksPqM|!dY6gVK{)8{ zRL<*nD%G+)q@#3;cOib*s^>T#@Zx(gs|L4ED0?s=J2i6gN}9X}_a-`wEpQSHG;w+Eh;2)nYWO2DKIHxeHf@I}R$jp9|ZDQ{dtkLRq|xhOqf1Mf4P z90FXG#oJjbu4HT1thkGKl=W9RPpNeTp-xbBt%`B+eycKPdM6_9RGhbWd9hV-A1)eR zdturydIz3hARW+AoL6a`MmQ>0vxt{mo?In*51xM>ED#8-{8}GCp^u-;l>D6>AAPV7 z9uRONeoFH$N%A)eA*?k9;is%lwE4o3yz2z8+Zlma=9`bjELegz-q9YQGp{|wq{j4P zld`(mZ+=ajI3F{BKg?R=RU5f=-FYQO1p2zwKv*Q@TQZecZl977LFhvsUZEUZQiR;v zeM=V=vvT!NR&3roor^5VN3^BZ1LY)ka={x32HJ3@*~gEw6JJE&fCWG<*4t3UI=DKs za(THrobrwC3FTHfTrL5D7CR6e7)VqRrN=##j@jjNFN>8}4| zm2k!LlWR&3F)aGwl)`wQ$2!fNn*o)eVNsY~@K>8^Hq7 zP7?1LZ2jGJU5YK{zsgoI*dCc{c3(~J2SVG0FV==+8o_?G9r?ym=Y z?ZmdhVJ=@KD-|E^$L8jXE8(0-PwuCrqf{=h!6bi}++k4QvJqfr^R?0t@>Yji3Vf@S zJ&vn~J&A5(6@8qvo6I`R_LHDg7TXQWRWj~J2mRP@3Gy2-4Fc~(@1sd$fo3iZc@&Z1 zZ_8BX$6RJ}>EW>tB0S?weH@Lh{BsNS;e^CfZd!4N-h`hmMTAq*il@ z9zA~_%^ATbxmLG8*^IF0j*?BS!I~!dT&-I0CsXgt?MbzG!!F6> z&QM+bQm#p=2ag1oq>DJm$#zQ02|GhOD}a1{G`(#ckzuu2lBQw{z z+637lW-0j%!HA(fHB3fbTx!cG#1PjF*9zPbu!y~08|bK=?0*=57;+$(hx1;pqIX%> z>D+(jtZzX97PM!P`%wnNj$pMtq-2?@#uBKp_n2jyJeYgu zc7_gAH0TqmjGEn{6R)w1vLw3Me>zym)XN;3Zcqu%SV2NhK2{P*=uW)04T|Krmb~mO zPvk`M_1Ucl*PX+J&iF8y&jzz8^-ZmOvW6Mycyoigv$3j140S1nysNO^Sox#Y*l&YQMw5{&Tn)5r%Xa5 z5zXawaHYYe`K6rh;e#_}80h>DQ|Ve~OxVlD_xykU0;}w(pM&|*=zWn<8 zdx6RCLsU)IR=O$l-v{UWy>uoN6Xh>2rduyle@qW%UF?|npYSJI4*2jv_2AOE1CF_B ztVa>Q0;&}H0-^R$XynSEJcallnSwpa%%LF=7?WH zNRyyr@QrD>YPNe6tTl@LQd|gnCcH@kSFI`>-OCZ~$R{f=^rISkHWD;s@Z)W!F@l1T8C4S)%nZump@mYl?Tl~dpZpN zF@x91wZ+@nQaPu0+Pxus(4u*gP+NB7XSK_*-*HFUx}%+x69I9)FhkgqA7m* z`W}p{U)LIdKYO!r?4Xyd8H%jq3ntv}GE@qs-j8?`?_v|DT(u0JM;|PH$P^LB@RH~u zX;j>M4VR-mH28vssN5mph+`t%CXEy|UAn)7!#*YZF^^bI@BH+}BiOrZ)-*CSW0%)A zkDim^CRat~bjQwO1L2%i&UTvvL6CbT)z2Tz`~<^7omjyYDRZC=4#}{`DNJg$-K_Q{ zQ98_!Y4!52_c(R(eQ~~1-C+m6-L}o<7-nv(K@ax;FP=9sk+kIm7S5e^XB>29vBSvj zs8$sO-m?M1H2g5@Cm_d>RJDjXt^lO-(QA%f8MtJH?J_-|yLjQa`!7z*^7`~Za%~I} zZftU80uxa(<%Kqs+ozsAR6z)vsiT}xEs%_MR=vTKmVt}1RBL+peL5>#LGrZa%xLhJ zhTtq+*1=qskL%v|#nbhpY1@c#_2$VXHpiG8TRnP;?PJfLX$InLb{G~!@{h0X&5rAZ zrZ>djJqeu?K0MlfM4_4dEwVdW?a}vLj5nwukRPBI(eJZkwt5 zq>&HL@U+OQ4f$chC~#uch&dh`R8RsHWF094!Lh-ZoQ*jHzr&wS{~C;u6;{WFKpO+@ zdx1=f#P-n#{%CIAA~?jHigF{Xtb6DHNjVO@rO$qPP5Vp`n4%#CdNet|O5Ho1ZpQN!@& zeH}jd>>hlI|4pdvB$~^b!@Kl44fi>@NiQm^mt_8RSG-ygg4XtH=24a#0ciL@`fQG09~CClpqhFCOa8Z2*9hOb%8y(s{}lNT zLMG7H-(NA(5Y$m5xbLA7;N8=Bow%62DBGAHmfsscN1^k2#CwD8*f@i*6aJ~_c(`@5 z`TjldR>;E=@A11v86=(Xa24-q(7GK0htA)nEt1$-Q9Y6V*dDf&KjK=zXRMq@lHWTt z4+~5-(D9Zg7^dQu2bwqDmmJmQ%y+Z_Wxu0q6YJRF@>@}hMQV&a`w4SH^sTHff}?sx zbN3aD4S@bi2XnK}+omRz4OuQE%j!U8i zuW%T>_N?B$pZwwLkoT?cPT%S`j%I8l$A=#hND`E4*z0r?>aa*K@~~~-A;w$TYjtTL z&Gd_i1(%LguV*B z)umdnre@KU2o*ZgjE6>;7xj3-#n% zt_4KD$b4(CV(d!q=BlMk0bZYA`6cdVf6N~OL@_21B4lw%{9v87LUE6ik>?p|wZFoR zrK@Su|Awci^UMqHUBON}Tc@6&f;NG0pm&pl^^D0YMd`|SwwpSciSL@KuR^nV7#Ei$ z0+7yhGLzpmeg1RsGI-gF5NNvCf1_h~3(ugHgYV?J#%~V97GBJ}_xm}s`q_D8qhW-i zEYEXB_Gaf8@Dy(rX`=5Z*Lm1h-7AR5YH zct=g}d}v5Sl}V<00iTH{42y(!1an6ObL8rTCkPWk#8E> zrpy?w@jzUma3?aQmPm67yW#oYr>=biuwmM33}pgg;>y{mezTm% zOW0MsziKKO^J_#RT8>5hl0m<&j#6&(dTz*|7!*i@#gqAW5C*FKGKQrbyj=g`r)Eir zF^N_Lp*ECVB4=a!&9W6=&HCN6{9y)|lm?p@o9q=~E6!ue^IPCeJ0>QS5zG%GyiXw7?5yxO@JxI*@!FBdv&XDi4zqRa)#v- z=_(mpgCLMXj=Pn*mAL?s>VDSdkj zzx6>$D~=ZWPj4BAXvGkAZ-76xMiS$aP#evkk)<&ZCF2&<9;BY%oaPBi zh6b28CX~KvvI}p}glw-+b-?Lp8b&<~ROjWncOHz?{3lXl= z@9&KF`@=D&Yje*z*PPc{dylo|eNBGIzdz{b=H&U$3g6lPuflgeUf%z8&|hTohrVW* z{BS-6?Vc6^he1~RotAR!XcO(oP?tIPoX_} z=ZhZQdXrf$mm;f@FCR$MlhvpSmr8OsC?8~%%TfugFYgRXl3wQtYMC8OlG~nV9nTpP z9I&(aa*<_yeJvKg8MVnymy)GXa7{1NJzm!>Sz9Y&P0(+ES}3f{ay{v1x`}8k|M|@G zSPF8cQeK!^e|RWWxXV!c(zYx?k1RAWASnM`c)hbh#I}MzJE!MbQ{qrMVhhYTPO^bT zxb@4yRxb8QcJqmZ&yvn~msCmjY{9P4L9T`N1J7m?N7CzZA;+#wQ(4XJWp=V8yN{$r z9W7Uae(e07;EaEJ4K0GtJKMr~dt-uZ`IrbrPkH|Yn?Y3y<9vpeUlf}}Lf>(}6os<62NWUZ{R00hbJH;6uCh7NOo&FHbD&jRr=P z51br+^>ZS?Qb`6byKk79Z~J2zqO?U7Xa4O|BT~a0;Lkpwp+TBTSJx!d|Ke1)q2TY( z{#cc>)|2EN0i2E|q!=BqJF$Dnzd~gD)bZKavH}KE6l?4gQ{PF0*Ir3Y6GFFSG-VeH zfPyC7&5Lky{g1G=utL_JoK`jFh5l<+%y;M@&aQDW93s?n@KASxRR4?RH{No81h_;c zv+ck;031ryc8FT^hjY_N)}9W5{skDlr7L8T>l0g$FW%oYkf$w$ll&{7ZeG!d+(LjB zXX_nnPJD^*r9;*lE;om>W3KU8i%G=1dE&&ccdcnGQTsm>4PAW^;=F!2q-}nZ_w~Q3 zy`d#RSb<)%TrBUu>0o!~T50t$-+MeB7~)BLY~4K-+VOb_Azf3G?OWqB!-MyI;?mMX z`ggSUGZdJv<2sjFos)kJjEk94o0&Ck_o6BLbsTZ%vgM1hJ^0Lc_HA>F)4=R_ZooY3 zJD0D&@$Tu+o+e|5en!b_loHWSh6}*0!PjI-#SCkFPal$ilPVOq&6+XmB~YQr>V4Mz z-G`WyXaaLc#Ss5k1{T;sCP?^xiEV;_wta4mt#p&3h78{w!^cQi_CAs<4u(-$*eVh} zsvM5YXJJn;rpDOX62SJ^QQ%P=LTrI0_wiKX+=Fa{A#fO{pSQ*~(UOW&ba7&}fbt1Y z*DSLRwR~p=)HVK-`m8wNP`qugjPtQ2!+GvcGiQo5Za>NJ?aNT|N^+x2da$vGntk($FAlDukmd&oz2*bUKy>jhy>3<3TW82Dk!z2=A9p}3}RMqm!@cu`nCYq&x_ zo;x!DJmBm@bru}t5!PQ-0t_87({LnMKwsQM@dGb5N3>&>>*uQteFq5CsIi9ZWo`Dk zM1*Fil$>QK*ChQX_W(GZHHYedgoFSat2A6@#pSTqOC)!e8j$!zSw^JfN2F`^&Z z8}WJ$nt##+9t2Bs^`TOA`SV;M9}4`+mk3U3_!;p9;klu?N#YvZ8Rrew5>)Uf))ZZ5 zh=gVy!USWqqoIxOErEkN3sZz}w@MtL5m(5WuZ0O-Vf&{&RN>-uW8`}}PkzSos)c{( z=TEj#@88t-iG`i<-pY|9q5Y_CpnXK2^g2TN5ijYIHcu(8Te?4^L2X|@mU|qZWrIpz zxAY3V>FqCS;|EEvy8BkDAp z2|60Q_T)UCdXTc$A6@$myy^5Kl|=TqY3r`+vCMvO2YaG9qr$@uuYEy}rg#!oB9q=& zS{&XEv9|=~4YCg`_;^rPYI3QcQ`Gk7Z}yCw+v|q%Pb?>dtU9}+jZs9SxD8l~|X5>Ba?{ zxVl$aYo4WDQP7{9iJJ*=meX3#Y@?0XCRqFMBt+kY{`N0q!$_c}ifmb0*?cK(j8EKw zDo_*NWP$PZ0pemiF1vtzW=B0aw>l30V2UATd^^@I>3QLF)PjEGiow@zA8o_0-DK`2 zfgL_Ixgi}Y^nJ=~R|J!MW!>!dbV#ulap=aiD^@{GnjCWpT~8v+oD2@I zEud{PJvSAgVzH43UbCl> zI}ER90E8}U1UPcth-+QZ(T4mAU2RTw+bw}FSk|Vii4>r0LV#~Zz72)VlMM&|71D(h zH&qKoRUP3u@`H=Bj6o7WIMak+Ka-1+I9<+p!uigIgpd%0j_qB7^@Ev3fJ|NnhdMx5 z1J}}wL?)XlhXbf$>_gu4jt9d1JJ=tlXfd#YYgw60Ar#4#vT^k_Y0mn&oc=1VdoKo3 zg0KvNPXL%8TIH;1Xz;8TF$8&l5cLVOpGgqh*@>SPt;~aNUa-pw?=)0_)Ug z!5Gt$n{1wxlr}K_Cs7+Is_Z*|#DK!Kqb6(tPtGi9?(d?@qA|vt?)bD5_Ye^uFvx#x zVltufIYx4_HwjHgS1ZFEW0ZAzix4|#D3}|_9xHY~auC7b_}N+$#%6+mmq_e)E@+!i zzIU6kn)DJ<;$>YZnvo#p!-&wupbbMJ$zU=Ec?#m_ZP(71qh;w{$8OlJZ&ezpz? zUhJl9XM#t0_U#?L<4B(u-5M{BhpyOHj!w^}$Q!Q?w-Oq!`if_-PsbWBcYH68KugyR zU+;@m-%lhr8;es4z8(g93l+0B*E=`c6WBwwQ&;;TeMG$%#)Ii1&>qshuSb39RlPF- z654H=!9rNPi++k)V|OT*yS_g3(H4Vi+6FXTw;wR;Sga730F(QTxF}ccZH4NPDd7 z#3VCGU1$imLOY2ZkcseSx`s~Jj#^bf+IaGfhjk{?T_PzlW9}2p=PiNHc66cg-QO0#MnK- zd<%0vMlFDB9uU#uqNW4d3BV)5x6r}~3)|?QOol6Fv?UF(2|L|=%df^QmnugCK3vzH zoJ`Pp_qov6azk^H|3l@wqkUBpK?w1Ow}GqD+POw8`4c7LB!UWmk%-X1eI8UFn$)5c z7R*czE3mX>#wAY!)+V2%fFZ!aQzpj!0yyt2qrDo_Ra5T5Vq5XKu(Et)v@3^qoC~ga zE2Ho-S^8}!G)Zb0{I4na(n1+fs}{oD4yxQA(hVirn~7`&fFvLm_RKHgqHV{wgeE|PDgd53bU#yeO|K-0>iQ$jt3vOzyLbX!E5u0%; z>>@huFE6zLGY*-ll<^W-0F^a zixZW%9&AWrME?ieD9!cVOSb244dWp9`HjJ~RJ?$^RA^dlVAE6I-bgtyP+Fd%a{V^QLBU zMXDQg?vH?Bi4gD>0hE{zPFf)VJdT)Oaa!6|_~GaS_8ER09!z{Vif+SyEA3cpI9YDl z%%W908HHGS+9}W`=bMRP@Ve&&R`z}wXS3!m_X`xsK)LP-z%m~NIstMR%Uu9@2tGU% ztq^P53V1@FYp>1+H^WyNj5s(SO3?WTeEjcl8E>Om^fnN>q}c^4UkI^|MTEaU^ESoBCQbzJN~tDyJEV^$}5;` z3uUx7ZWEwdL8PJ~7Y8(Xz}Z~bK}B$=)kk441yHX3Roa$WseS+h5EZ2ikKzH=6F=C( zBru#e^Beh(3GpKdb5)lXwj(UD(Dg{YXJB{GfV0v3V?TpAB;TSRW@WSv3&k7Z^?nw4 zSpY|9B>XA0N&fOm3Aic%ArdX^ERU?maB^(o;6Fyoq-WXU;6?#PUE)Uszk1Wn^@ft> zY}E)QS>z;RWfA4_$xp&yv^hn|^h%LKsKZT-z|=O>0X6T>3Xm@>yqyVS5nw)71wA;y zX6N0anCX$l39B_s1i=C`Va)(2D)_SUKlh&hTD$-7e&p8Y+pQ=4_w9zJDCa#21+cn} z&!@s1D8b8HTR&-scra;TJRS%~%(l9wkiLIFs3othqbRU48J5fjO4c)pa&hwfeL=1F z7JLGKKr|Bbm)b{T*%c7DD!|$p~lEk#9f*pHlP|yYWV3It+uaPy-Y{Y z;?)8aN2^l0&KFEx&2}(uY>>J9q8@XRRvTNLb@47&AIq;VLK4+BwzKZGjjSnTuY#;p zwoL=J8zLutxnt9%&@Bq~c!Ca{Np zkK+SB67n4_G_qfKHC!7c6kZ5uBU4n4))XS%*M4X@`|H^in?g-4nNmUg*1-AYHtp|_ zQAbIks6>Bg<2TfETWfC|6a6+-!R!rLWpN*K#Yc*|W-*k<0)ei`j9=+r9J-;XS!RdJ zD*y16?Ekd?yINvw^!sRGYGE0UHl9tvX3OYyYwd!LH&Pts;IC!20ZP)aJ4eWhVVWm5 zqEtJKD8nZr44J<;^J0{A4Pq#<1pzP3`gzR5=s8?x#wR1oGz><~oOv&^#ayI+1eo_% zWjotm+Ukx?z)ngkL@U*H3^!~HRoIIg&O2}qdSgGxzX%AKjCuQdHT14r^xUU%YNHv> zJmn!VQ~1-0kA}nyZ-vh}A+<4Yk^3?jqp?kCa52c9U1^}tXy$Ba+HIuus(%XETHIhf zEOFWA2~QgHMHiJjbXqw|XHx7M_O%uDBkR2LE+g8_81InW@qWg#(~37Tm%7SL>OJIh zK8yxLm=Wyh%g$A%Q$&lfkzwEE=l(vu0mXhW@xdeNWhZ+bS#NzRj)24z z)RSdE{K&L#wR=Nk@>7Ckm~_9dwK#aFj$9OJXC?9ORj%yA->cmh=oVjcu4Nd|x!@rQ z%V(isz{N-tHHI9`zQ)af+{TGoS4x=*UohYU&#-f0e(I{giL3A?foenWCN~^g@HzRm{fGd;Sa+zKomn%I)_^hcvons|I+NOq6q)6 z;d72Dn#n6Gtq;i`K$n+%OI=ot*1B_Z9;+XqIdqO%bVd=mCGNrK12k?x>Ef0BqT3U2 z4#5f}wQe(@qANH^3Df}1C&}^a zST#VovPB2k3cKqvFBP6xl`d7%PW@Ztcg{1a6(P7PQ>t54VfjTwYapAVA<8P=rv0~b z5g*h*5dwC8Yg>@M)N$dc?9khkIoZA-$U$=G*zqvuqu zU>Fh}KkCfkL_K=hl1%O>YV0G+lyEg5O8?MIl~>2X%Q94Y*O3X5DkHb5JXAC6T$GS& zq<4iuOl71eke?4&dOlOa#psMy;P-m|-+l*yQK0iJgKvzgzXX#zqFjRFPaCwk&&~8N1f;#`SV`l36jO! zFX~~gHN0qCwjB&WMH5?eKM4V&;SRtghPYW%0IMH5MD85)hy&=%dr9qW%7z4z5%x6j zfWy1!pLl7^XGdC*JIlync#1dN`h?S91_!`CD4AB5m;(tg(g0?s!Ou@P;WGe{$4r7p zJ{%q&wtqz)zjTi9kQDL{-Iw?WH+T9_)j$2)<9t4LPQL%_IRF3TvEk+XUu^U}Fj@h} zY2r)lSz>4DmsibfPl+*Sbhf*D-Az%THf&~fyHf&G&Z=DQ9MtDFMG)Qdhcu@2nJ{M# zAr->(RZf+)bgio!t@G^R0e9hibFNOh$6{2z`-v9A3i)VQ7vn?yzsaqUB9HTHGT232 z?3?y1QSRQn@MSab7OqFkEbo&dC^_FnPA#}`E_1rb&Mk90BKGL7$A&_VchciHeflq1 z4(3MAq+9R&+Hc=U)9~gPwa@Jlw)~~}bY`94GoJ*fo=XHbU)W8hhThSh#47ze0gQ7O za;SX7V7h`2=2b1L!ppk#jaVXyz4YaeuSe=yU4D~x{Vdpu-I}K#(vH+W?VZGS;FduvTVX;@a ze}8XfX=Jk-A*2koQ+Ywn{J~-h>9phg$Vy?e(n@>S-ufxQ;>N}{^A~sdzIJslp$LhU z<)uZ3kun@;_Q&>B<0YNr6s|TNI&vt!-q9>a1D{CxxvHKEC1(Sf64XUcuGjGgkNLsq z(#U>(1hlsSb#s1Xy|7K`vI=qli)vSM(sQ@YOjoFI-Q{}RZtC@wRg*MT>UxzZ;8wkI>HUS(fTH7PHpAG6gCqAo1KO1E0{c|Tye82}`$20CDzTXx$x@Owv)Y^6TTwsSCk51}E z)V;jV1H%%$)1w~g>;H(ZS!n2M4=YwMdstMxvsS9!BY?9Vw(04ix<5?E3;tFiNtqjN!I~Fn$w8*BdkI_?W7Vhn9L1r(Uw$P{D zX%wEoo;GN1N~E37q(5yS$cW8tI9Uy2wKKMF_1@_N_G=FXbsT4Z&xpSXzu7sYX7bo8 z+?Hz_e@rE0kb6@QzSC0i6gz>;?%n>g1uQR@&zX~70k2FTDI22L7UD|JbqUh8e=|!% z{vaoZz#JLDc8ni)B&lDU-{aX+JE}<1IeN_34usFcNxi0j#M7fmwA3qeZ1z8!U5J^J z`%&+HM~FHIsG`#6XtQm@MtS^VGrX@eC6d%0C&H)W8F3)cbo!W_y+$Wf%)c}mp=e@8 zHi;Cot^LK(uBTI3any!$tAYGvoOIxV_H0Tj&=jg@u+dOF-n{c97QMAf$Fb-u@Xv%E zrM$U>pkE4==Ppz}xb-F${Y+6OyRM^z;G;V;tm_5iw6vx?G(fEtnJT^&^(N|@s}X8M z$?2WG6PZl|ix?dHt3d*ML9)13)N>zm&0Rl5eDb+VQ#K}dar$r^VGUmn1I^uM2G&Y@ z;s(>2$WeDu&JN99#CkO$`8{&1H+<8Int%dzb=~zWX$^T764hDaEbRRrhtwj~aP674 z*Y9V~8VFT!BXGwLQd#o41Gi%JQJCh47ceTtlY5VcX`6UQ2!)1a+f*q8+Cuf#u zQ{1axE}j1v8d*S6%`$cTl{6=}+nhmE_23YQ1j3@D5*GSUO$R27oy`7M23w#P zTV9(~5-ET3T%affg=zZcQD5;=pdl371`T>Hgt_0GLDRx7z&lAnj;Y1L*n-GRxD+V5 zEMcyhL1fI#_|VKgmQb}t4l_{HkoL?#G4hPdbr%;dVF?#_4DI+w(avnTcbaKtuuYH8 zICB+!?Thluh(TZAUUY%bWI1hQ_)s!Of5)(rYP|zUFK$HzN zcgv#j$#*LeTEz}T0eUV_OptEE9L6#iBB=`Hf;F(s0Yj94q?Q)}f!q5HBq}E0;^`t+ z&9=(kAJ?)7@p0brbcBSCeeNzfW!rXM3bYR8A^Z@^Q_vdXj~ii_MBv5@dm16)XB<0% zy69?OFIoXa`UC$Lz5&^~aQ+ z-iap;HT1WNr~p(xrQC$7#t$7y(K+$SGl*J#y3luPdihyJNEC?~wk;qXul&ZucxVQ9 zr_BJk69^cZbQ$h{Kw(aTyK@Gz>u}a=LisLf=ljf3E}=c?@1(w{nL`K5{+S>5mc#aDdgM+2TabbX(5e*ksTd*(j0Atnl9APSH4o^*9uLf6XM{?9} z*5`8`PC*VG$mGez;XDEY26y+HYrwq@Y6~6h?x!;v-(z3+4#7*%?_mblRd~mif~gSf zIJ@m)(B3xeU>tQF)mgm;_aJZLYJAeILO@a_87pt$}fT>oaQFKYIhl$^hQjQr;G#J9?Kw87_i)%Sd= zaZz$`Hc4`R(>D(HFPCS!LU<&0YU`asX|1!T`*s<{%8&bx0XRaLbI^P=ykDSdq&uk%tN`;EEkiyYdHxHKvBzC896 zmgDtFP1Xs0#DA8Expn8g!~VirZR6dHnOkbAcUPh~{jOY=w-t#-1DFGyIiRy<3G&ZfP$AS4FX?u+r$Dsn4qnM3)b&${W6G z?h7$drCxjGKn{5@+^tap&da}a@kwGcgs12h(nO=rZyLMycXxDLq zA1mDqTm91$d2qa{-hyYrc16iDebP~(X#pq8z}R)uMAk+g~9liC8>2I zaYV`LV&Pol@>Uj|+H#%+FNnM(0Hp??E*Wg0f}Ibh7aXgH!&6zOmd;9jD~)I45X8W9 z075@mDKj-=HKlFqY5i-aR)oS=4(>ZpSe;e}sCsO)u$TwuJd|5<>MAUu6;go!9NH9Nv`_t)_7);b zdy&`H8dl?gc1SAlLK^Ga{wUxtlDKt!vZ87fp0{;vUoyaM1lPJ;81f+a)@11#pv;Gd z%BM^FqOz-@z5)u}n$m7R9=$?1vj!)I6-1R%f$bgeH$(DAN?s5N%3JZqSIKV`f@yF9 z`jY(mid*zKqypBPf9b}D!>9z!(f|)K*z&*%mk#ssHy4|4AE&fek4J0jUF@L0$lo{8 zf;)u*LkzBJK~yMnlw!+1$uL|0T)JY`(W4nHGC)N02Q|wBGm}WbMHuvo#uB;(M+iEU z8O(s}7BxfjZ$6=Vxci@zLa!#ZSf~ESdey@6%xI<|t*fB^9Q>-l5QpoOZrH&4>+Wbw zMb$AJH9=J$zSLJp!WWQ3&!n~|dd^4!p6ko zQCxUbUT@65F$72i3zq*QTLgS*&F+tuZI#(TfB7!ow1)D??sV3JyBrV27OB9kr9wv2 z%-?aLTvS+rQK?r?h6VI1;3>GU0 z5B=Ehh+Eif$ivQzE@YY#9zYXk;yvM4IR%DsbE=aa+G?ZXd?s?@gz_SvBsL1*n2a2Z zWC3f58z^rWAOxkethyf7@Ahv8*B=CvEE5Am+-rYH05)z~J&*rq(3P>A;uclUZ?zA+ zdcfD|aE=Di)Q^TVFF*hwZgKOZ9wK=LJY_5r`+urWRcb|RX|?-h3DLLlMLTs|z#97I zxC1U+tsoJOA3FtK7j!1m^IKC&^8Mw$%S&hv@ERH5lHpdrq^fEry3*Fb3=!OIbST98 z`}-`fEDXSuGz7XKbn?_b18a7>Jejq!@vax&UhtZ3joU5iCHUlzN$N&aN8hY{2_;$P zy#kv}@y}!fKF&}gi(O>EiX=0seX9zb!`DOLnjXzqoxgc)-pYE<@M?4U^7W zrC|ju9dWla0o*tL^nVztW?Gi2Zv2fgb_*t3S->$-)M;{oRF=g{f!7{l8Uax`TvI^EvzgOI)M>Wj(CXSpCr4& zvW;OZv1_%mx0wSxNq<{vRU0$?Gn@TUuwmZLaNL>K@GU%mv#>4`fxya*t{>)Wp#C6>D%+u);ZMTAxbWz z;_n{v-hYHTzeD;48ZL?_2~`{WDrDij9kfF1aJax(WH)wX!Z_rm$}; zDqyoN=p4!WlZ7MIgnZbSP}ptkR2AZ#VX!XM@Z-_{k#Y>xM;d?6qf;A)4)YdjMqsZ7 z6XMVEDF8|>Awc~(E`?^)Bhb)`hN%Q z&&CH|Hh(rg0KOybnc5+%^`b6SH{G1t4UQ4`gm8Z9!!ODIb1VPxG;X8hk_5MRg1Q8A zgseZYru^4jhQ&t3!H)P>tp3aEkw18nP@6sfYpG!T`EI_AWvO&JTO3^af6PT~*$M*CTkGy(71Go8-Uv0z`29g~5*S1|NOLGe&2Vn5!U(5e5-QZjLruZoh__0AZ zd|U`J{%>-B`$Y{i40ZfCna`pER=b?JTpU0gKrt6UF<6hc>L1NaI_u`({aGv5U>AtL zorb$L*lPdSw;B9Px_VbtnW{eIs+&`}!BGKHvsEi=>-)@(Q6md17rbTO3KiWPuqKmx z!8PtX6#=zDOBjm^Sbn$O1GbyLZL0liO7Ou4!NB@oUr)DwGy?a)?)cw~jG0?Btw_oBRJLgy&}C`QMB; zMa%-qAF1}>j5lYtGKFLm@82hu*LnsM>{c5M-g}cQdLx9pRyNjP&!IDEZSQh0%xFH| z+b#92?yJ@Cu-=&UFo_;y|7Psz8~G>o&#Uwop60y#RJTx)zW+2{_EWuMN&5Oz9&Uv_ zH9TL&vGAMu+&!zuI}Cdxj427b>jT>z#WP#EheSy|GTuQOWwYqnFOffINe=kfz9&+f z3%URGik||DQS?NN@z~luh~!J4MM}yQy0@vKOiytWIfbY`#;~&g6zmtOx6ov<#gsq= z*Kgva#>$OH#o=070jgUX-3o7q2iZg|WEmQbWQPZd%y!E3pJp2oSftp-us1vOY7oCi z*$E8z*%9ziuTJ%>4Df%?j7ZswJ30!%srQ^j&MMQaoJud?|Bk)@amU!uP-+$?2ukRPCY&Ce< zT0(&kX!hoA1h>OLB_YdnuCrKp6KN1L-oiZksL``B!tW(kQZ~`|y%Egb#Nmb{c}uUU zJ@76xoU|@e%GrOOUFMr8&Rc3}_m)d5$Fyylt*5CZ&&oc&lcBk|f9!#F)9wgj@ssS0 zlB72mO=&g=_L}Wl!y24@c9=#7o53mURGZ|%L8T?EiM?iT`tM9c;1XpC@nk-UaY#*e zka_y6zkl>M!i^6kye{~+olqI_$C4vEWBPOEE=hDDXUeFix4rY9tUCL5k^KLMVKMW+jNRkxpP15KXPQ}x>W2&$KN!w z6t4=}wm`A`u%ak1kr};G`vM0_7=1SY{1ig=b!hMW66q)fPlr8ER2?|0v zffSVx`|H*&io|*&h=Il1(8~3D`1iRB-Nh=I@bt6R+NpaoJ zcRLp~BIhUkEJo$H+?vMTBWc{*D~^-)MBEI${`VKs?)%DY#{NVU*hs;_4|_Ca3mKBE zpYd6I7#_qOx*q}|?rx`k{O0kGPT4682ph3jww^Mz_;K?>h7;QRw`kGczq1p2Upyl+ zV=6-2e-ZO(>=~D_1L=D)j=7fu5kX0<1l^Eo!JqkBoWFY}bOOWuKN5ze7WnIwL9&8h zR<7ybm=rNnOd17v4b@Qo#9xc}`ra~H^rfFgo0T}{3aY2Uvf=RTJh`(l@XcsxcEHy} z$q9?si$3(nkm$qvJrKVKVax>lIrk`~@9NwweeYHM(w}#n6BAip?)*th$am^{(cTn8 zSVaWSO9k&>XGx*22U>hU<9DZ4l|d#Q4YFvXw5E7bN;nw z9B@yTC6g4%5zkX1xVaYliZr69^97~&;U~w^JJA*&@KI{Awe$#_1B#lPtw>U&ydnc554GXGROy$6Ii*`sEv%d~3!ZHDOUE&567FJSJEQkBHSnA(Jxj-gv@Z4?RP&v7+E+aP!R@|%xw0>7}YWXBk`8T`g7K^gtM)Zs7R{`Bs* zDkU3NB>Y~DY%1&$l>AA%-}iGxD7Y8ndzj)euGesMD)d{s1KvI3^37{KMgW~?b3`6m zC0=XiyUAObl6PC8^57ZrGiTyuo(0;{*jxlHQ@=PswWAGaoti76lJ%W)r5uM@k2e^f zBYnimObQZ+V!QI6iZJ*V-s~-rc&!K=dmQ*JjEydSD(cy>zf^rCJMpyNn>Cz!+9s?A zE_R{|ho~he;s-9{>}_i}Z{^;a;b$yno*`A=m7(Co2u2*ZM9{&@+C#E=IdJLknPDOG zBD0;B&ZPwBLk6onrHRvVvwUKL-t=dOMbmK7_n1rk#bP`kt`0mhr&nF<`i#=X2IAw2 zUe~J>9q{uw@lCqO@+=7#w&3Eb`6#2)jH1Mf{UnYgw~VRMWOF~xnN z)Bl<>hx^lHBV3zAK6OpJ&gg-;%x8?$03A8=rE8988VbqIO4)Bs?3(HiH-tSNJ&{ix zZiy!@R`DfO5jl^o=?(dqH#@5Fc#Qjf$`PMZBQlN2I-!#{+JSM3nyd&fJ$~?$<(D-K7|g2=K0w??ZSvalB`Zgwh!@Ac)dWz$1_BjpKG$Ao#Qh#HdV`wzr9GWA~H4{ zH$kpF_sp(xEbTnsT=pQqw4^dLha4BHCPiMt32Wj!Vj>(e3BxyeR-=`U;kLz)EYG31 z>=DahFKVtrcNAyfP4&wFmG6kBv!y83-s-7}$c1s&RJiu*pFM}M=`i+-R>}MCZBu=s zKM~eB)74To9yg?PH&yjhlUR zTFE4L>JlB(hr&K;`Y$fI^6MQ#P-zKG4*9F!I3M1)raBLAB%TkX_mVy>R%v8zV`Z7n zvOT0%XW`X^my_^CA?H`j@$rl?O{ug{pr%*3nGQo99M>5V%kj}h6E*VdSg(?Kaf&cF4Zhx^PGViitL?{uf+T#LTe zOs6{H33u2G*PC{M%TxTPl+w9f`1J3enocDfJwALnUq;Y8ioyX=v5RAts4kN~e*1px zZ2GBI1luc`?H8M5zi}pvNWKyMj8%BA_CzDxL0C9Ir?4;dT>ImBelFovh)LfFQyWrx zA~K7DFP!`)1xFl^-}qk6x0Bx-gMa(_fOWnl{pP~=`l!$MBv=1>v0dbn3i`WlK3z}5 z=VXT!6Kx;rdokwgQYCR?zA=0Ch21q={u>n|3Zr6{MB%K296H2$_}KQg3GCLage?n9 z$gp1fW@ZmPg#q0ZZ3{m~!G?1yX)16}g8xt|WUQ#T0Z`XpXtDTf1&GUy;f^HD;ytn& z%$uLed-VxFlBh8fwyBjYAvY_b)~#C3^Z8PD7*>~0RtH+La>91xa57zjM~{!U{HEwC zla9N$n%${JY!U^ri@FZ#EegZ13d~xT9CnFEQuNcYwzB0iJxIJHND(X6rjrFhQ7yOW zSdNqRF{lNHIRYN%I3ak&Gt_Dl-b2=WILgslcg@k`!nJAZ!IZ4$%CSLRv=w(Z8ETb^ z-BuXZH?x*a2YZ21Lyek>jp<||P=pMdo^-M6A%mC0>wfDk1pQ+NaFQ z$6*)rd+p03UmmR-G}W)ED4w3wu-kfCb?kDm%Qt=vn{T^Jxw!<)|Cp6gp7Fohbv#8A z%dtPrmN&PDsodLmsim=Bt2`E8Srl=BUbU|B7CzD`C-P~A3d38M@FbpK`zd?TQ){vN zV_H-!MB&!Kr>MyPcUxX7zR?E(H)YH2v*VmnN zy^AcN-uO;q%MW{^zSwWcO^MuerTd)K%n#L@oe~jpL={H-x`qlex9wMZd-WLI6jv71u-~DUvrzOC33{ZL5*F57`*d*9&_F!U+C~( zIVi=~U0hkOv^YEtvds{(_N4FS4b)NLDIVE(r4v4DH$_w_%DccFN}0-Jqrr)U8l#gf zq*pSKIsODZHyjpm+F$2NW(m1akQwXgc@IzSsMaXO**zq=_PoP*`I{ii_Ve0QSJj5C z?>P75L1p^_mg>H~y;K6ul*@aG7k)}~N+B+de*9lkRPp6F!cjt8$^Bql$tFZtWTluzTcQIi$T1OA$qu>RVDWfg(^HrkpR3j}1Jv#xFQDti$cSc4LbhZ1oCq1g2|8jb< z#W1S9ZYxeMg|fNj6Q39g5V!T|6Fc0t)D4skj{nQ>H*Xp`@aVi9PnvQ3y^|I&^mGy5vtr*BoM~HHB8>a&3|yqR~nRj2O>2Q#NOp zS;kD1d%#OIC%8Inv~I(kvhEnY4yr)83T$AvD&au<%gPmfN|A_6?f-P028}!F^#MbQ z*^7W$)$G^ZDGJn@s@x;-l%PQ&XI^Jcts-c82t4E-aREah+?_c<-R%(E>E!?B^gD0B zD5_R9pz%vW--Xy)2*06y;jnsLM07u~Dy_^?jXKX-9P~Oo5)T0H&FE5s4vX;2!k&tQ zW`_XiD!LSdU=9J?@p4Deq9^cBfvCe<6!vA1n+_eB|MY%jbEsA_pwTR$kNlT@EY%o; zlf5Iisj?o94?)g)0?*>qnZ zdaGF-s^t%8e3sA$&HeuP?=FQ$LU!;@g_|_&ZU}WVXi^A@O%*3p6Yw$rtS0Ovxe&Mk zLzRYKGX5Z&h@=TWbHvCAG2xDXj}8{*0KE^>L`6Dt3f`<9A8dI}kyl0@*KL)$BZ0nz zBrBw2Pg1behS{8zTI>@~F!DIR!C;1WljK^K6?c$Sqva+0eTO~y1W)g%y@LD(;1VX^Nxw2r-CD`x6OT)5OB@BK0QZJU>sjR-P=HFfANERD6K|_Ah$ha9rQ|` z#l_)s$=eThpodnIAYKQo_Y}{4$2C>PN@!`qQGB6Jx~IsnH~{XHCLn9dNnMNZx2ImK zk(1pmW`dJp(0Y5^ud9W#_#NfnxEnUMwL40beg-xFX7}SH7@Zj(=-1qKG5uB ztop%hC50Nb5kXAdgZp)p*{pfJm$1x`0cX1-^dLamF+B++Mj$bM;|3O$Z!NAr2$~y# zQ|8QMM?DPCU~-mFGe=*w&{bovs)C|U3zznko7>^Et(6ve-O~#i{GB@udr2P5;(bpq z6od!rqh_}SVsZqh+PRgG#o*Bi0nusgCv?f1hT-4`Xu$b#UdIZ*x~JFE4;mjhZZN*9 zsrMF`I}WwY5pwcmn~{PLdj!2S{^(c$^CJjxqj?<<2y%S+8xN)s$u=*)`29H2JVhu< z*IPBmpe||;#j*EZ?CqnJ(usORK6lRG>f=kP02Kyr6NtOnEq#BEp z!1dIl+1@?wF;B!pBCJFFvJk7gPp??eULZhEBc}jIEnF2SBEb# z#}#T11jx|G8JIj!m~6e=t724i4)1B!=~?=OiX+~9WKKtrS>-2r&ig{5&rd|ENnmCM zVfXlFRd}84aoUfQylHmpPG_r+D{gAo(M+9mD^-TnyL~n18cj1M;do(ZdxU70PGvqQ zOkelrM`Yx;1~?5Y7h5(GKAvZpH*t`Y%hP=%$~JErtieWoC{H>_HK#E1qkM6T^bR!2 z>)X#MvmI%#sLqXAmg0Nzgu|DU{ZC?E1idI>1?}?^igAjE(2fmhk-s>VsU#m_YOa`E zx#rBp(Fq}a;2woqpv#92QW@;U%v=S|1v%e!S_S#L2t?H)ulQo z#~Hqw&5t^+7)nRDo1FTN-7Na#dQ%TKt&Px6pQV8R%v3+vbTUQMY^-D89g*qtGnF4@ zwMUmn9s*M_zQW6$Q)LGh`OfTN^Qs&`0!GH|L8~AH-+kd+Qs~Ydch9A%7c<sm8~Ss7t!WLK61xUc6059Oau}um_m{F>6<`5Br#gAVa)y zB8Z&ZzlK}lKB7{>O2TN6JHAF(;#}17DMV%W5cBlw$7$DKTLHSN)Yz%s4)4{a2JN?# z(FW;n;*4F-&Ug274fNAgo07RxlMD0_JY$(V`M$fXX*@&DMOh~->Fzj(C^qK@!n6NH zANkQotvrwzI&#pb-2+JQ#8Ar14L>lLK2V}QNj1Fa?J!Gp&ei#KXzsrg^%+PHUjWGb5YRA?i9^YV5V?Z4!$M*P6X z$8V~BoBW-WF!|3ToO9`ur@ja#qA}e6_L6{|jh&0*KdG36kZVA}g*#1eE)6>gT zWBUvBr@$fcbPT;Ro`E|q?=wFel*I|;S4-yaBLfNizwSXB?7Lp~uADS_3xb7+9 zy?&=^b*xb|*ty~H=xTPO^%wD$n$;eD{Y&zh7!BJI?Ms-GR(NOln>uL2+PG{52tR54cmmdezB?(qkNWQSoz{f zdoKQnXXFr#@}%W`N(#dYQ^M~N>}@-ZVXP-73d7mmB?UL56GB`H5)R+Yyq$SQA31Tm zl@;JP)t1ia9pSl^4HbM?Xgdtm3Kp1fIcE$iJ%>5h2zXB(2LJlhGhd%o$H-G9P^1yx zl{)NOKxwBTH>&qbI<%!5~Z!}UK`fTHCMX&Jcq;1@apPc9g~~e+47lf660zZ96cQ#`MnHTKYQuP>Qz};`<20UDc*Isrv}k%)tQ(r^@x+t}=oPB%FuzD?*;=>Z zs=PmzGa28tWpx*V>sFTcOD~saBxKuP*X50Ei9o(y)$1Vk7b(9|hvQee0>4@9??Qfc zz@*g#>k5RMN3x1XkBum+3a(4BCsHzN78x{MTulL8iL*RA4h?`iMb@F)`m@>QQKpuKYW{@K${1IuDR5y-%Jf{)8|uSMfCMz1o4b)ZJ>9o!`KnhY@55MGWjH-(rcljV1gF z#*AIvlvQl?aOcoPir)(B{(MFC#O2By=$lJ_h?bAZX;~Y)K5G;GK8&xXI<__^R_IAV z(NNqy`yQlaM>l0cv*UaA6`UdAvTCP%lua(%tIkRJFA1C^`~)2IaD6@rM#tc`ryVbe zi>Adb87zf8Q28au+>wx1v;H2H-qR>%2G8Qq( zYIvPN2LCn0tnWacp><2Uff1{^uT4F<-)>eS7j1)^Ih*V2w0Zagxy%yF>R%P1Oy9WP z{K^?fkjS{Op&Bu8N~z@MpV&@`u4Rdvs>;ilyT>68OKUb+6CZ(u*&uf)m2VNFXfSYm z7{jUc{{L8e>#(Sv_YD|qNs$r}5D<`V7Fa?=X+-JnknUJgrKBa64nzi(eOAu_!m!zR;Kuk zhpAGD<0XU{v-&T~K5)5?a6viehF*`+=;@@GiI5oP3NV5J(jX>G_4V$yqO$If8VQ26 z0@dxt$=)Juso_D(5R!5`$D7ohmidC~Yjs89%`bT(vpuY)jr|M~#E9a$SPTpeI}6`X zM?NGX<|ul*Fp~ZAcTJ)+iJFtW#ZcQwsQCB1m!CDm=ZW6jcYhxJQ=Y0-HZrZ^b0w8@ z$fNSnPr6uP_qIo?6ESI=ELnK^GzZ;-o)lW|{tV!ib`g_apNM}M`qhYOs!!{ zLSEj@A+4Z>w1jTYL>hnn6|?NZS>S5xVNOI?6aCG4e0UXOn5nbMB>F(k+%1%=^KeRY zAs#kjKsszO$mJ7Mjt$|l>n{3ysQYFZH;0iTv4BY!UhY~WufE(eH0-D5uKSYs`l`Ur?dny&@vxC$Zi5KQe7B2% zk4aj^;b#0*)-BQouAz{GSv>bXrpDz(z9}YsxZQ+FLdc5AJ#zNJIiunwp z9XHGag3X*F-oPA~j94bEpr;TcD(E%7=n>nes=3^5JgPF1664I@zV}ET1_pX8X}{Ue zj(+`XsN3_YL;od1!R=^@a;l)Hu5~0~xZ&;m`({7a9T5E_=Ybjqqyy{j2=8Fe=Db29 zYbTHSgj+uW14#Og-3!Z(~0 z`}5)s8N=Q}Q*B~}InNUPpx0I6I=@3s2vy3de##Bi+79A?Elq2GD8EQvs!PV$?3FV= z{H5Zh*qEEbTHM>i;T}ge`wMbf^P(?U#XC$*G+!G`fgEl5J4EQU2Pi)|oB_8wHWGwGtkgt{|)J6L*r1$Ua| z^kgRrZoc<@zVQ2rBK+{8LQNxeS{qt&x~so|cWz7)D;Ug)1y6zSg27bNEBBz;$totL9#oMX{hs%Q(9yo^cg|D_@^XcSU zOd~G2_D813H2;WS<%jh5J=JTS10L{@uL+)U)%NY`?vZZZ(VS-_jQRzcfPt{~WPY8u zNPm67L=qO#ChKOBy77@_zEI?Fxp`{g1r}*o2$APQR_suKK>7$^;i9le8#XN5xm{-- z>Z~BZCP~gW^0x(B>FUX_-AHU+VsNXUPcMjNi2SwiWvXuZJZ2 z1YU*jS%}661j=dSNZ|TmPxbyHdlk20RLrlT*OQ56P$vl<14VuRCmjZ3IKuFlz3*yY z>(rrVisr75&3+bKM7c;(58BK#hbT5-3zjl{){skoxLI+|1^tqdicHIp52Gn8Z{W7; zpF%L0+wbKFmrkV+qqGZ!H_9#2RP7J+C_1cVC7G@aDY(591^YHmebkimI;^%9u9=(M z-#_`st9mYuhpoNNIxjD#!3*9gF89{Fyuhn^3O%~(YHQE;bPhZ+*lDlXX&vhSZf~xDf4>ZYc ztH^??BTm`q^l#y4axa7^cXCHL19~(2*bT;V>2(hCXq_bzuJ;?u9#>hL+CP&eSB*69 z7`|QqI`a0=LVUy$I-BPFd+tg^8Vn7K8)or=@eeTmZQ}H_%G=2)rgl0Q&}iDQ^mYT& z9o2Y&A$7IIG-#~@^z_iH2_x806;3)V*r}mWSOcWRHJK_F?N&+Vq*<|U+WsS%!Za3O(5+#0P znS`kAQjeE+O^Rw-(d&&w6G(Kt(0gdBAIp{%SX0hKZ|~n_>ocsL^{Xc_O-5_tW>JmQ z5R0d)mx$c(B)Mji2D^skoijIMMq)~iHXO!v+*3}6p8V1M`GQ)p$^Dc!=>{z&qa3wm zTicc#mCwg=V|g@MhIQWcw~NJFOxya@ljx+NQ3F?Ro`WC{>u(Ilexof%h5LmTABW|t zHMfXoXXdV2(6<1cPQKwnwR1Pz&K%|yOc-EnI_v(LQk)=8_h#v#$g~E9aVq|kaNgT67}sZx@=ugcNH|ie)11& z$v=WwO8N&{lV z;;uxw0g$r~opaj-QIMJK2|?k>C>>$tcQ;GO{T;YkbmKvKy9ba@{6q|GLHXq2l_b~c zb;9y!ajzsPckF8Mmn7Z(AxQv5{$NUOAb`8_iXm>8J$s)*p8%R)LuuuM6?%|RFGRZm z{W{R%l`QQ|cU;Fk!WhUn5#8ZC`&C_%oG_}fl5CMXi97ofKWVijB3ByY1>|dm(8S_p zh=&%!QNgMkRDGijLp3Fwwtq?AFb$OrZ*zNg4j|m?-a+A!GRfAyHTW|DZFDb^|0zrA zd2v-~v;vrL;IrO3V9*?l=^@MbTX| z4n5gqlq5xEX>;2-QLIa!r`Km7QziYelFLD?!E@U<^g5kyDR7Gz_nD-o7t zGrXt{6v0r?y z#x6=y^Fer%BA$RBOr7A@>gSHv&f;hbIuOu*?^1pxlBTmHd7X(|k$ROFvv!11n7y@V zCXv`3N`aRXcdxz5se1*$Fb52!P}c0jzpX0=S9N+evq5;k!g<%w+$Q$)z&BG=9BP|;$6AA5h|{(ot~ z75Yz|6~d6&k&@q`Ku;_A zo%>T6$=g2@>5L;kYHy!eUtVPBL}pefteBI}+)pdt>!sM)l(o%z>aOx`uW9$FC}&-- zIQM)rdre&RY(ElL_hzF$%?X;*Gu2Gdjq)Z>mGj-E-HH=`;dgoWi2S15(J)2L2yqco z-#pLr^2XcC%xuR}-=oUxX47e{ymMZ|3j3`UgDobB$iwQ>Jc<(;~nPB2QjBn zQS`Vr+b7R&vd}AS+R{boYOX8D=L1~Z(yV>S${n;rQ9SM8a7!)mG9~x^WRF9JTGN~( zglt>?kyH*sK(L%afKtaw%0oUmS)(@bBkM+i+T)3+jPeS1O0p%{FLE95+ZAs;U<%8T zc8lmNeR@+-U`u(}yP&y1h>{S!3i*s@X44wBhz4=EGndfzcJ2tLe{W_H`+R3^{5Dri z5{|uydwT*^N^nNqjIq7eJ)NB;2FCdne9g3`U}^WK^Bwq_$l9Y2ix%L9aD{FD8bwFN z&JE%g!u+i-!HjY?!u@*MTL&&$B0CHfv-|l$Dh=2LA4u~*Wk7~iN#yJ&SJ+hAViGiR zQTPaZY)2RS0QmMEI*SMyt-DA(Dr8L^&2dpwpwG!#(gm3pJFaU!P^l=&NC&Mrjl zW$azs30KMLCZp&L6toA|^<6R@-O{Lxab{@eRX(y$XW;#D@5 zHB%Jg+JjZ~Z=0N`++IFnA9r>k)B_=0m7%!q4)*{9cVNG6Dq(gT&F z+OH;>un!=yohMV7x%v;)nz@Q}6xFcCPv z2}v^l9`k__0QaM0_-&>!Df}<(lyjmudCAXoRBM0|KIS~ev~zG2@C&4=HhmPWBu1SR zEH(tGG=l$ZbB$ys+~K;Q=A>RU9b07+sr~*EiZXX-M95mWfw_W8XN953RUaBAUi~dm zX%{yB8E5`9bo;u>g|Le$2hIO5f55}V`G1=~_}})`<>upq{FnKIP)F#iBcoy49$ zi5_NtOb}Ga`6EU>BnkcU-u0zd*|-7_XL*BO`AvCugjXyH9dE9DiX-!gWmZy zl$aEeJd{L+R%*45g@q#lan>#BHf+K8vBc$!@guE*Jt?Z7@;X$I4|-IdoJjV2w76Jd z;XPU`l>6(-`r|-1M<+J(FPKZOm~j!6Buz2w=G|mUQJd?!*A8aapFLxv?0P_Ox~WmXZG-2PsVYk&KMBfi)h zt-&iE`a1S!64~4K2R%55#UHG1@!xVLK!4nK*=*4j$*#OU7+X;6ox;fneH{{)NY<4W zmqg}ZPGoW$gEOeu8>ee^{h6LIh!0|7?{tr+7z+InF^WPPcrAkO@!ntw=PaQZHmxfX zQR&ThostdnfvFE@>fomZ@VzHc=)0J8V5IRvUt?$W;8f8Jjy6n0Ev-L$n8pYFedC(d z<}>LRbhSM1d1Qt~CaF2A*;U^)9c0D3Cy~GTF?X+PZ_GoX~(D#w}>|_iJ zOLxr6S*Pr>5Vn3~R0w-QcANH6Lbew}3(1_=Zo>YUgw&vFLOfi7bBy+dm~6bY8MB_c zx`wU)zJu8lT5R*uEGJ{0X)Z}x+o`?CGk)t18_y(&5!On*yFyk+JIwn|gU52-FR3rQ z*74MKwo`20?3js=^SGRC9_|Y}`>Ck(iIAEshGcH;)#bpP_;jI6varCcE<@X?k_@#( zNRrAA&vI{T_ySVI_=nS!;twgOsmEMZQf$)>YOe!#5f)LaNYgDT$0PAmt;x3H^t)igamtT5I}uWP%a?oF!QnC15-As^JzmVdqYxJ{catx6zkKChv=$7LQ=76R!^QMHSeHM-S4Tgv09FBK_`Y|Lf_=)O?0IZ=s2JY& zL3ahM4^QK*vkmSE7iT3K^d+E7(&8-Fo7-&DQ6wMVkCvQEa{3Z0G2AFRRM~LoY?8NV z-vo(6FxI^-=>lZ3B6zK{r5|t=f93ZRVVfqvOGCk-u_y3P|Gc{^>vqGW8^Lh@Sr;UU z{^%tDrWuT8N_C~ls{r9KF$cLaHo+7eNO}^o{biPA9c2)^h$YaonNHD=z59uC83cvLa#*&QD?{!P%V;HwsR&kd1FS3)2`P8e%4!a|t zwH7h&mE;|GoTj-|t*`E_DnB{>h^+b`HV$k0xUit{w87d~Hg$}=Hi={Uvw<3ZSZNRt z)-NUH!ZIEk%Fjy)n;nmBfC9NXf2N)mEx6JD3{iX7ld#zpv4!C3T;NKAOeWAw%LQ2V zL;%%6J8Qq*pG-FO&kONHA93%;j=zW~brg;TXQfiQcOf=^+7*_D6ulQT_$$U28>d53 zpAFtZty2#?>}gUjj#giSx&x`h%n^5fRHZjfY-J^~TbVU>OLs__RyEL6113sZVPmff zHP;xtZ#fg48ixbQ_zA>VR{YI~e3ozh9+N#k%69yk!^g^Nl>3w@#yUuaR8FHue=0)} zpCmbH$0psqL-h_#ay}DJr3!XKJ{vGJ*4xh!N$gCdq(bj`SbeE@TY;n}onPu?o zGUs@VyL`!W+tKbS&pohQgFAe;C+pErKCMk{a_B4DjUKG!wN^XF1Ea*!h2zv`1J&lS zz-?dcFB?d`DErQ4i{}M)j0MNHYMxhD%DPGD=Dg6FrZ(WSe)c`E0hVJ{2etmVFyXhW zJa}O0c#Vs!(-|sN%{7r~6rEqRc8_@_?d>%MWFNqKXSBlb`213hg^gfh?h5 z7vbs~^6?mykIZD3tT-QLZVCylo?HlG9LkR1Xc9y zX|hGvLK|zdOo&h9D&@=>$UrizFB;TR%Oh-pJll zQ?>{80{h$J$NDejkn;&>=WJ5}mN+-K%_b}{|yCJ^_$NDWBafH~W>+d@e z^pHAWLHU=ls}$uOr`RxVVmj>RWu9*$2}}Ev%2N;gca;ZHW|5Ss-y-a%0#6JW7l1qr)cF0n&c|ypjsuQb@1qN-ib(s z*uElPO?{Zj(mcA1yI?$i*wUkEn`+t(;gLLhSiAh3*Wc|+g(mA_FsWVlo_tK<4PyG= z*JniD)7{1y+_@GT`rC!i=4p({O!!kaY-Xl(Av8oG_gf3SMh~(b1QTtnTt#=KD2P}0xfoFUUHXx=#m1hpFNq2 z(tvIoovphq^0o?w((bj`Tf++t@aKa9*E{|BV7XXO<@tT|U-ROh0uXq@bvX}5wFK@j^ zr})6A*o~=6q!wBVn}7SLFqX-dcnl#C0ikQ-AQ8e!Kinc+QcLV zwA;7XCr~R?t@8COlP0fp=E&mHM7Z%{N3q>q!qaQ9e=HPAsO_R!rB5~tU8a~rm{5`i z#m+;`Gu0>X*WA7JdzuUS3#dg?#@KM$u{AIODziim8O)kdWrf|ip<}@_RiOZu7A2sDpD2G}yGM2;P z;~gCyMvMDhr#V16l{Q1K3s2b@of#67Fio%tt0{c#f8+|dDChr4FR;K)CPE&*Jz^0z%(|rcqNws-vk~Y+wd8`0 zu@`Qz+|glgv{+eG^f&xE7jX|cL)oL^qSvzoEQx|ZsCP4zZ?x3!0Vj)|qkDVXkqM zx;c3z3T~p`$k#8zOWk~d{-~(i$DTGBE}k|5sb^yB{a(EDQE~ScNb-^z>;=G0R8vm& zpAW~&TEb?-&TraoLmfUU&OPIvJ-{0ICp@YFc=QKd8My*i>a>4>Qm20Pk6a)`@^JlW z(8EyHpA@hNFoyjj1zrD0f$=}W-|Z-b87(TQv8xz0Yr+Zb1$Qr2l^5I=8~H?=^ILN@ zvut)E;9S5KpH1UtEZ)f#5WPx5CCa)=!i0-*GD`oX-5nr)lI*3Mf8xjbBO*SIrPd=GxydF-UK!hw)3IWHYyHy%d(rKyA>!Ec zsrKEVA4|N(M(Rio+-62S!ZF;LPnPlU+r1rn^ds18-5uU0i{FUW0sq@+YJC2sy2SO7 z#zvk35l!mfNKw7aS)KeHQDlPAE|62!^_2u+;d}~i$%)zW3hjgI}Rpoek{0T#Qc~eoc-fzeo^{) zkcyAaD*TG~c=&Oi_FwdL73}|szq{k_ymD0>ZA)BnCX5`FR!)k{O{g)PT&GzxW>tf@ zwYx5z59YNwYa=6?___GBH)#IRhy|DP2$WN2w?Fy;qA6FoYS7Aq-Rc@tR?%g)4(|UC zQhKsx#j57))?PI(Jv6CZlnleni^u!R&D8%lH$Y`z)O+$rP>#IhcToxuMvh;#rW&+n zgXS-1u1m}%W@3M2wBSyHOf{Za%kv1Zd{Nqj>#CI^(IjMTU8 z|6KoGUk5!h*P>tzm}c7O{p?GC$V{Sjj95b>x7j;4aTIqkzzqgyS2pM<7wc99TmN}^ z20c#P@$JDyRFk4{Gvfiy1B^#c59C1irb;}BAVGZ~WNYs@ARdNAlU0&n+HXQ z8gH%=V2ZkwqI`kdBs&ehvOI9PR<>efJcPqfPj2PJ|Ag+qGDMq&CO6V!Ruuj<5fR$| zzchj(P$iYWWG{L1pijya1KcKMi=N(nR3ux>@lQHXJp#qDOlvIA*jLop>Qt`cirY&4 zhIxdL4V%SNK>n{b>}c{i<>v~hC?{Xt@DGG=92aTHJqnRZtM&G z`}K5{i&dNc4Ox6mdyL%T_du0(%kQY0NQWxVc5T-#kY|>wP&+#UrZ<$Xa?9WH$2Ay) zt83Onet^@#?Ir4(fpVf!5AG@Vw3he&^R5r@Q%tN$f#6`&E{t(dn2{*#Upb+1Bj!a1 zN`hbYfvcPc{3GX5SJZ)&&lz>{V{-zjpIKb?005cR@-je-of3)4b@hPsIS1ge<#hr;_&%HSggaN`ycv$ zPiK(ZOSamWOSm{53=YN>`zbPnP|9xf_3)MNq|tSH9nTuybhT?&ekez7n0`S3do2}} z96z$Uq)@4@1yf&9?vNuj_8k*Fsf}7~YR~=j?03n1!I}#A*`6u(=i{#RtxyvubM($$ z#SNoq|GpBQ2MnWYnk9up7(-6Z=6+6T%Eis{Z!)-j7DL3WWYk4Q;~RIZ2fAbR?TT9* zj@$cBp9n)W?5koQZHBYN_G?kG#w-Y}JbCFXMIqO|NocCrz8M{!EI+~OA(UQaAQqnL zW^A}$LJ|p)vY!q0cZsJHvq0%Lp=u|foDFUv;(2=aDK~+h$z^|(8rm-&5-=E9% zB@TSQ>6q!9Hj)Bf2tQYq!R=P|(Lg;x8%jaKQw}9Z@5dpu6){+Q-M(Tv1;h3oqSJVj zYWKP<^+7^h?nqkZSH|XxPp4lDqvzOkS0JWcX0`%ppD>taHLFCTc3wN)iK88Ol-hQE z;aP~EhNNt^Mly}D&LM|k{jnYezvxsj`y zK&SbN-nm!a2CfRnmSWP#Rb_^i=EGu=uC!a98zXx$!n za3!sSIASNSznO}i)Sy*l_y2k~uWRKkhuX3OS4d!#Ht*twvsIRTWWVE2lBkZ;GsXDB zqt`rAgUJP}Sp!Vu=JL=er1plwp=(@JK+texbjEOJu5=BoW-fGnKM*>yM(C_upfYh> zrl67h2m)<&W?Xh|F|G7)ePWaYOHna?JGwUbYS-x@yZpZEx#Uz&>WhYj{lKY7^*0ln z6-1;>wn1|^t<372I+}&l$hCbfrJwp4+0jvFLaYbUdId2D1lE#-#&5*Fon$-3mn+~I zvAEPQFvFlq;YLC*kN%=^h3Sa52d>QVik;Hi zC)taKFrJV@*JJv=g?-V^^?inmg^ehBW?{c!X*UKpsHAQ6JOf;1_(UoY`bb4kvo$Ek z2{E4yQQuLOZ?-)4@H87WQ1#6r^wMT7UuDl-i&L&is?vYkZJ?^cMHQwkSEaxGV2E3G z*H>}yrR;9HVyTj>vu2*@q^+aYV{>-vu(7z%94gu(6ZWr|$ts80`Ig$VIS&gJr^iNw6VvRuY8i)@E2vyg^;IrNc5nU>b*a?EPvDHKFl*ia zhEpmm80}MQ$b2NkDi?_3dj6wGSlE$LMZnJyy}5ZjOISxOw<^lrv2fMh%eQbfeqKpT zV-DH(Ht^ESK&jTX`R7n{0lzX?sS0_*&V9KcnxL*t`(k?5eJ-T-RK&{WzJ6WI!hV|3 zj%(p%wxI&Kn^Dn0nd7i}_6^4YJ!5sL|nhI0G&T39{i+XB!i+YEF zM{RGA#~aClVOf!b7a7o_{sUBH^(wzWd{w_OGZPMV5RPyN?_B za=X;YtrToW=dxGo0-gA)vy-f(a}h``zdVA3osrnG$L1Z#n)sTJD6JI+5xN%jF z^2^OVOBR=d>p7WZ{JjWsSvyAlPp6PdW+N+ZDEVXR;s%1-?n#Pt$ zSq~F7`?z9ra}P33yAMqJ&k+d)bJFX^(9(6!{tcD(O~_;pe9p5UTa_M|d2kSAZ3OoF zQ`tlF^ulq1iMfeB2W#3+h2pGnF|{7Gam3gbIIpC=uX~IKJd&=Hwd{4MyUW@>)NoEK zKx=fE;3By&c~0B)*l3ru-91Lu_tbKgXh4N5$^q95D^Y1Xow00~dX`bGn9)4T;_Yaq zQ8pP*{^zsMbsnIjUDZ{8w z?DW&M{0dZQa#z8O9@C1mr8uc3s=8G6NNQl%$v+BgBRUllIJUI}(V~T~MkIGQdv8)Ca z?lEP@>Vl~u=Rusp(!6XBr@D3-f-<{0rBdMuYo+n|H4QVf>EZH$fgV6bP8)4IpaL)r>dHciaBwpqYuN@DgV@S zIJ-t9Pfj{|4g?-}Dtl~p^vWlyz%P#>ovET}KyB=^Q&iSoLfln^Bf0>p@Ap0>eOSn* zr-JswrgMY<4+1zbl>tXaWH!O91ZU-RRI9O59legM4r7FeVV`AD^iAh6t41e&dC)aC zj>Pe`)Fg2yK`4=+kS>BdKu@s2zjAYtPoyKPj7otFa*3l>mXELn;pn0 zaA>8kui2x%v&@843}G(qQg;IC=|yFfzIr+vbcFJ3C%@CY?DJXAoU!B;&zzG6w#w;j zPj;ClNVFFm4*EI>ZqgFNioUGujl*awZL!)w=!S#gd+Gye`?|YfcMYnh2y@OiP|oBaSU znCID&FvZH}D6jLiy7Pp6p_;ABr5Np)GGA7fnYyrdB-fm=CTh{h@44vfo~*t1eS^+s zgw>^kMtnz;-RAOIg~*JkO$h5d5u4H0gTwP_F?N0OaZX+Tg;4Nhb^Pj~`R&a;ESMRdt$dSOzN?A0Y^IRly;{TxC^neOr8Kaf`7!<)4pm-! z$Z>F!O>r?)snRbOc8lC5__p#QQ4#oAtGM{yJI6N{h7J}m&&-%nnrowZWp#L%TIgg? z#4sGDcNk>ts9IySja>+J5SgItRlV4D^oi)Fg)!+NbIxD}b zCFTCITvkEVaaRBJnhD8YX2<5=|78L3RVi?xyBwxz$icl>7Rjt{Ea-_3{M# zKSY#(VXJY0m6m9r%~^Kl;wWfXXn;82rKB+Z0xJ?X;7N*J)2INRg&&vvh3iNnC6jU{ zt1hFD@5w;zJDNL~g8{YgHoyW+0xxt-Q3lY*!k-}(EX2=ozLSx>lY%R_0Y#xk-P4lucFe-D|UYZ*!!T{#8w3MZQ&*p@%OBJMc|?l z$a>#5N_vWmpJ-TZ^i-4Ren%WbcAVKZk4C7=JSyA>4@l&VaOkT%5zl$O85cSN7a@Mi_aYB#1@`&GS61$HuV1iQBnG9BS>2ktmuCAn#AuX!>fx-eb;ZH&ifCs%X!6 z(l?sFzi7D#Z6Tv@`(B3YTtH>vKBn|M8SxbZA1pZ>L7CJ#_klSC%v!K;Pv*71bQ_$w z!o~dyPRu99-U=+oSlho~1OFJO={N;>j%wmjzR@@Z%)3ziasO%+y%b8F=ua8PnN3*7 z_fzcPz-)`bI^MBqBiz{|Ib7z<*QswNo&ChfYBPJ}be7Ju(18h7sGZxmpWI{#&hb2Y zb$W9%h94;u2zTUBJL#LS0CWDpV zCobBw3#RVh2A?M?%4{AN7c5>gYoD0`B)n2-3G)Vv z08^Y^e}_XVrdMpV#M`Xbx86={7m8b)+8i>ha|$&ExquCaaE7lP7d@*@`&~|SRVJxrkhYjd zI}XrQ8*lf~$2xXx{TppD*sE->e$Rda$X{^g&&Y95?GIxe&;v%W^nU}av-@Lzx*KFNI@l9R!fb?(P(sFpXPK!Y2X0oxX52%GK_zMQfDqPnS94Vc*n?} zKUl%lwXGl3c3ZLDJAXwzi)Xh;;`|JSPW?B!fzKawFVDqO{8Q*dXZLlyaiNJCj8m** zJ0AhT(5n@xhRJw9jysEBNvl0ftgYWuGaq~^2+uJ4=?yzEb$J_aUbZ-3tn6HSAZgnqPR{4+4lXtZ zm?^LYg8NH1e>>|>D3kX=(f^v-tN~NArRSdvBc7M#i*x&_(QbS)ig;d?FFxjDN}Knb zuZMnN4P07U_dnGUM1boTxj|xm)bk;M>yXU0qXlYzdJRZDTgC66;yCtYR`2Qt7U1D~ zJ^yi;B%uv1bs{i|wdk`clEmR`@w|ppgRK|!e%uVX2Z zP`q1UvtPUQ;1;nEdb{505ccnwY~=mODUxrZcCBsXB^zMQG;_oKanGm1O>Tvv%5bG#nh`T%5i+z}mXYbF&u#gCmpr2tI(-ZyrhMDxn%D6xxqJK0#8&vE|! zuLOVVkL7I|;NaJ8ddbG@`)b(6H`oKo8lbC!ZTwmumBySWe-kI)zH#rnw z>bfu!&ze`-#clyMS|3bz!kc`qyn=ZMws}+sKuxO199N-V$ir2hjR5qvNi zjOq$gFV<4?_YYl!P!qpysHu0ZSDNj52P72MtNO8(jlA|W{wpT#NcjN0RgC$ZD!W)P zvmC4#x2>hcCj+LITMU9h54l#2=2z~xjbi6|HP9+*Ds30#LBU8{?G(PUX;E=nWFua`1%3?F7U%d> zf~kks@a=7hyY^rn3jCJ~%uFnSNn9XS5zz!I^M_H>dmm@N}Pt3-W(@y3g^yZw|ouUpEKHw&1f%B0a-B z#m%1ze22K*a?6|UrDJ#SZBK&al0x%<)8%xEkY&9b%c$7if+YXyF@4_1Q$gQRvHh&CW0?YZs-LD(#Ja^cR=U5YnWR|_ z|B7p#hNei0ic<>?oY$P$6k&7i5^-v)^J8n=7n;la3qmM zSM-lkw!cp#t9(5&iid##g-#^LCz3^T%k;ZQhrD%iQip#j zrp|##73)%Ae>IlQ;3mPrrNvV(b$IdAaLvu-bTbmOu`r!lib_`q67VA;o!Xaf zhDhXB#M9`|%$7$zp-;OKdqTTxUYUp!7)KOSXS27DhI=KfueWKZfo9%(W9Rfj`Y9Be zN)y%op}piubUL;A^P)qh*cX}oeRzYPYS!=&Prriii8PJk`F@#Q|7iBZ!O3t6{K+DV zkjg~dSOP#zJ#lh+p~uSyjUX^F5ijwvFV{__(F{zdj$C{$RK9Iv31acQfL}OV#H5TDq0R6Pl-s`N?KB9GW+7f zD$y14H?pE7UHQ^81KF){{5;VToKhYxkB*1Ag6aA?WSc&w=Gr3IU#iWMRt0lYaO6uk zWmiQkB0dI$Fc&pTi4m(Awkx*M!eFXaYSdA4yMwubYE)_^#);wQ=A3=VJ8t{D4=bUT z%|0Wr-4my&F0+hXV-}H~1aX_GbqrGLwA11z%d#b6E&cjKR^;ZDS!~f=22?_s61&D369DW5fiAtqyfZmEwE6vaLM{65$gc!Cx4@L(}t8=E&iq#Pp10z!za8j!uBU+9&wnn!F zq{$A`gk1@HfrVk*acF#CX&3I?t`)wBsCsfpNhDs-M&`SS!0IIPZVh+;e##6Pq}ev_ z1nb`uhwT)!?&FqDD7GRdsZEB?g)+8VPNw-nAPRM+)x6{Ri7m;&gfSaKK1v0KjBY3v zb#k8Ky$s`Y1UU=E$J^n}H2|xfC0{hoWrntkl}{+f7<#K)Wg8R~G9ijYnqd8-Ke?t< z2Lsx`N@J>VZhhK7bG(JBIgV5JeRAPA(&BvHQ}1v=^gHO$39I){oAB0N5j^Y6JO28i z`3+elW^_W&hjYpRZpKZp9v+7rwXRuiS$01VQ0m%@$mdYj%;Cb$n4e`|j25P`51}fh z>$5@_Q1&InbwngaquZM%vqnlCoESz+|q=vt=iDy5W-~k+RlqFs&=?k#kwMBvSzJf zZKQBLAn1{~nb3mjNf-Rsm*)5mo?p7076+`UPrPLA&^)(S>*N-xv{3UFR;)98 z)TF7J@;y+vrCoJ?+&&TX|D9oz5Nk7?y`DV9aS=PMImpYd7G!X>&hYZM=9%kY;W9np z)3Evt4+xb(E1WPUCzNqaN!@KR%Qk+VC`4FME|38ke7^s3e$6{3lso0vwdVgJ?Y-lg zTH1DDJBXBR0YoWVDJr2z@1P=}(xe6{0YpH0?@d%dDPc>I4$`G1^cuQ^4g%79?=AFx zW(D{2?&mr0d%p8K-#?2xYbDp*bI(1KFmuf{*dieUDii8$VLxnddQZ+&SMclubp}1$ zVvu}$tYJ67=0ve#4yV1QLQrSMq_2HrpH&{#2&uv2-m4x2-dzuBIGQhw4U&&L-cMOy zUdeyU*wD9OdTUf!0UJr?5}P2QpS04;823d)zT+;H5bAB%5K_RrOa7+sBvC@kRA?$d z%b+6+SSd)NyBx5BUcIF)cB#`UN1pkx6x&-*M`J>b6E4H@NqxDMKyTC<78=XNsY%tv7I5>cD3$1Nh?&3G5B+s$#ey-SqkHDtX87TXI5CS|!d z14+{>s>O`VC}jq(7%O&Ty8Rb!R&J*(TysD(c5`shmB*@tIXVJ&)>+)OCgn49-JF94 z4`+I#+%H5Nmd@1Hq61S?lnf-q>f-3TJe8eq4k>^aN^Sbj%dxv7bi>Y$&cl6bAsR}@o7Rj>gye=o0x)v}QvneJS z%ml=M_~Sh33#Fb^xiem3qdQ#`I0Di>>s1q>gFrb4gN-kS7~S4=JfwBx=`&Q02@|D# zO%>zYq)@l_8ECX ze=R(#n-~bpz``K<@&&C3ODjO?W`Cz^b(IZu4baxsd{Dw+_51(Cj^?IlyT;5*qZRSZ z^4h8C6&w%avY)=j3>FD&^|2^TyoV+&eWB9dBPpwXhJpj`A>Ll?#A{7W9_3d0YK`3XZX z3cwY&7b&&&s(F=TS@<$%QGp+3JMF7g;st2k#9Ae<;dowpEsuF$s0JWFk6qF#8J}1< z4UlnhG2nDlR?(GOYtd?i!Fs2g>`JUPP(wXJx0IK>z4Ckjrye!*&61Y|kj9t5o)uE9 z5Eqwv5!t6C@$p;N?WgesZpixvh`^2a{tdKA0PnpMTVPCcC`cYw zc*=CsBG+m!2t3u5Sz>aRnE8(y5%HFs6m3+@ymY@a6V&Q7Gx1z;Ns~+xE2w$tA2Log zfq8=n$mzrhFpGmPY*!qlWDZElFxbXmsJ0*2FVRJGFTgAKZe5D4wf>7|{10@;lc2Pe zGBsp~4#|Njou=gjJ$MR~faA9emzr)s40>yQFrV@g+5nObamB&Ciw}iq1uUj}y$6MK z!lqDP%JJjC{hjxCc)OJA=F{iA@^nt|p|nqWuN85(uHvjDO6Fo2Cq(@R%1y7~GfCx+jiPpD*__Xd!vT3VK%2} zLq@`YXRAViC&ZWKcZDwS*9|bx+yn$`)9F&-LN+*pl_FoAo}On3 zFl@c+yaJ_+`vAA}Fdl{$P3`^n5$8tRt?l>@{!&g;#GN6GVy$RC)Mc}syn6U%JZ|&j z5m3VMc-Tu|u>6S9tVIBl=UmgSW0H3{nD)pnUR!@g;sU72`7yUegNWSrR`uN1aQe1=7+7g7_JFxy%}J5sa8%ilrP( zu@Gxff#`s`T)Ig?DN38B%MKC6QJDQ`#6MdXYJgf%?uo>IgU-(K*n(Y}*$UV@!>_z_ zMQ5rh`gcih0|a#8q%L5N<_nDLH|#@Zw%@@zbJ_*A1j_BJ*c!FyT{?LET+};~tTtYd z9Q4NH-E)4mCz9gk9Px8Ex`46YUPr=8mu3{Yh$ z+^p#7Dbg7bd}^^sjLHgJ8{EH;okjM?zVq>%39VaeBHC$_C$M6sV@KOgZR4g1tzN5M z<_E7F(J<;oy?~Nf-Nrt+fZE3BRUtg zUJ;>zcxnH@Gpj^;TKi}QRT6b4z?Y9)8b`Or$++A;cZO`s7 zKVJEB2~zh7A=451SVy{bcIjjG&$t1CY=0dqpO+^`*`r$oM}$|Tje)w4w6Wby?@Kwy za@6QVX~eQ1#`Yb&jFdfedbMrXJ(?4f95+5VQugN%W|YSLXxH6QT;8znFQfO_FVlB- zYOjSb4^f7Qe+Fxretv`Rt-pVvEGC(#Nob0Hh8U|!uaSK$pxk&xQ%!Z21Y-_&q*22e zcaH0iVj^uFhp9OpdtrSL0wHtV^*2^@ywyLqW30b-+~%8zj8~hWM^pQ5US#9e8Tunc zJQ-6}w|Iqy-$xNFAG7qiH=iB%R(Gl?(Dr{+>{EGk2-H-VFtpr`G0M1wwsE(~qm?!% zn_@%qw!O7pr`jDF%|3VC^W(I~#A8%^Q@7@lkL(F*NNo2n@tvnDth^g&c|HqM6184GCoSbjOq2|Jei^3Uu8q@3LQBH6Gf^fty0u)5yS*7vH+Jg;;$= zG`}HeBj25iIrhD6rS%RmV9|eO=+@jOIoq1R_9-m z6yW?dbhWx`XY=XC+^1?+V+u_?;FGAp^4C$dA{mx#yRNWb^Uj;&L|ZsZ4Echs$b!C? zs4M?4k=?%k;5V|#k+@qBs;2hPzLIzrh`*@6kcT>ipN+Ddl)qAdJGUcFhiXj^Yif6d!(j+1U(i!&*BnL4PzF7#9SAdBnc?FA6>P2Hi*t|tJp zZqZNd3n>7i+<$1kXB4j*YekR=b8YE>9v=PlIk4`oa4lx1TWR(=z>VjOaD0=S)Xp%9 zmkUfJBl{j!JeukwD1vkr0N&ci(JpLKIXt1m4vUKX0*j@^6~+CjKI))3-EPv^Z@vU; z;JRAlT}WC`sTChl;jbCU=~}(LHBHe&^KyJ!P9r^1QUG9}sLV@tt3-J+J7?OhASl?n zcZXg=i@s!&ym8RyL8#|y>7i2QYIiYuAJv_(60sBzl=opABva%pb>@41x9f?ED12@=~2h$%>1LQJlYANU}RZfmqqaK zQ?*oa4*rnu3R?PLar1XvoJyG4LAVDoi+bq38OwI&NUmeuNUC{TxqEbNRP*}SED^5G zdG_L~y;L9-RXJ+{Kq^x1Sz-gg{ifSM2wWZ}8y~T@C-D3cAt;(!X8E0J<5s zXX)-?wW)PbcFVzSiF}ZH<&~EWR=d;JRxm7>Z1&vNwVlnDXFxE>Ta%uytvK0GQqav) z0|W<2O9Z)(VmF_QhkORNHc0WeddNjrzd^UeHpVr-W>gHCjC2?O?R*o>$qf=OL9Ia1 zp>K!@16m@xQrfNDv*jTkUZOJba@u2{QL}_MKd2sy{qTA6?7yG==j7n#|NlSx&m+Lk z|G#tlS%s{l!R-GQLF$XWzb?oInm%;2o?nSrZ{UvY(~)uc=`p&eCS`Xi=FYes!R?$j z1eM}5-@nrBXWRyAorin7XiM1jE!Ohm_7uuuuf{dn@U*q>CJ2co`f-aUI$1Th?=uP~ zB!{`XTOiW+`iq^9V@2U~>k$$+qvJYwRu40^xDFDmMI4&RmOlu&Bpx}(epJ|Mn@Js6 zy?~3`oc|*6?c)M3wUatGoyp9q{Q*z%VMylQo|fMrqgVmqWNb&i$L(W{o_tXm-*K`7 z0mE-wP6dMvIQhZuSg8b~rHjrsf*SMzOs{MVvJZ^k4DF>3htpC$Ml;E)!b$9dXaL!-L;`8~UEkf^Qb5bN7Qsj00bn-N8o;su;HZ3njQ5Fc5a{2Js zuz71f<)CbJenP#(?I(9_X_ve2&-;-TyzgV|H8e@={UiLGv%5?aj4lX~KBez7YIo}( zwvY5mqFUmP;;i^UL%;btYX5C6kBjZ>9Sx6=YIBpexwbC$nXgxWMOGsN=3bBcKV<9C zsUPSewrBZKC(@VmIoBXt??g-ZeN4~P1c1?a9Stks(by|d)KD@(67#Y*l5{VP{%Ew+ z$uS6A>8rW^!hSBNJb393?YoVnUwDFP=q0)PbEvJ=2~YU()tu>8Ob`v6 z@`XKdg-x#B{%b$>QoVHD5Qz)7ReRsmZ+7% zP$(i?O@k}?Xz_^qb9-6TdBYovtu$g;BIUze$UCFd3|~I`6ntQG7M4>d7opYua1R$( zbV*_A_S#DIjlI$mmzNTOlgKe&+WHuItnE;LqD2a8pxxcqkxQ>!Bu8Bri)ADZ*6kls z7;L?KDT#VDlh(o4b*-!H&j8n7209&l+N?9F9ei{#{dzxaTX}>&S48Zp2|3cQetxC6 z89?pe|LHkWNMN6WzI@exzQa7ALP78`cCTc#T*QOZV0o9p$xp!&M^Qd8#R|@q<=eI} z!eK{XvLjC-TyR+AU~tjg_+S3>_cuOQNXQ!mhF8d$EcrvhjX#IsoWDXp_siiiC6$(+zAjh)NwQJ zcLbuQIPXPc1h{G%qZ+@`41x!b7@WAqbHz1qyfj7kEGjsY>z_Z&{8cEi*-BGY5y>Ia zM(n^C%phdXWYHER3dC@uz-3j`toruB)yI0h8VB3Q*0E!9P3&|J}Msv$)kcXWKgVyX1k^g6`y~@$I)WYJuJ}(ipYa=^Dfr_;6#UT9iJI5kP|r zN;)`*uQ#U=#9#+p7Q-V9f7q5s24VJ!mcG++xb?Qvrc!Ko^SiW%(;9x{s$Vx~n`*Uf zVGwq@Ug_&xW9JxnsrqU7To8Z}T7z(Un+ePH2`(xQeU78(<&3!6wW?oelxX43ktZ9Xiym` z;uM3kL64>-Shx$AIK{uNjOl*|-Xdb+lx$64Y9+K@sC|f2taBG{4t`{_^)}77XWQj2 zC=~77WRxKhtz!u%SRE_QA4z1tMJz^CVWDK z1}Nfi-i#@F?tM-PX6p}D)m{tE`1pO=+im3;%G+c8*(&xr5>ev0^H$8gEcuhsm*Izr z7J-xLZ)5_yY7?i|cb)nsQgg zR7@x#Gq}pe0EP$-$`7CV4;NY+qvk^`di({-X$)`Y^7xafsc~5OUh^c@){pk<D#rn$^PIa}#UxEbf}+UHrV zBgnh}vHfh58~QSViQ^sa_i~loaWjHFF8Gh8&x9!mEkJ-G>?RX}yepsw7){x=%E#M3 zmH~)?Uoj=f09T?JQuBMm0N41(<)(oyxAs`RO(HRaNx6}iK2Jh81#9rvzCI=v$JpY8X+C|wOyvA@PSWb<(Qb&apQVH!3RFE`B$qC^yDn+`z6hO*{23b87u@=n_mvx zR`MNI|G?)UZ$e-(02+Qc-^oJ~*8^Egj>gLomr|G z^%6#@K}$N{R6pY~?0{9FLKm!Tr_g`iieGpDS=rN87A1yExJS1-@U_r>WH3+B!7xw&Pfd^PsIP{4d zosAnkSzdK>^Ivdr(F}g^&LqLtau)hm`dUrQ4rQ_CDQ@dkXUzMy*duEc#TkdcuS#!mcAb;X)SdUGZGbAJ5 z^Uh?kM7mn|%yFmxL2l2`nbjcI-UcBfcE8o^rpMwPt}BXJ^*sRu%B^Qrx=7nx#)8b= z)?Xi32Olpdi2WIOZ*y{%O#;Z4x2=El2KdIbXT+sq9j!zltG143eZu)gH-sKsZ{3$8 z?8GJ?+Z;TLn<}Z``11N7@eTjni<~2;`y)-qVN8TKugoev*k-S~ICxyoLU^+b2VPwU z)37IcRD_yoKn6WlZ>dQ>Ig+4?%v#?AbnEqvD7Z?T^R^@2zKU8T)*ySIx&RT;x5 z4^D2Nc|s`D`seNOOmNIsicwxD9YgeSy&7S$ito`C%SK)Rt3gbt`C$93r8sKIL-CTQ zG;q}02F#}xDe?e$ch~_P_VE~Gj!zgz)v2Vl}U~~cX{RNqp}r~ zZCR+8W3FFT@$t+!S(bP~;f9*6BLLto3w>rqi*lzIr=Gtd^M|z)J~Mm*O(pWD92RZ(m7O{X1KnvtcI5 zefZSFo8Zt0OC;S=lRA``*7^e&+72iQ$0z=_{+o16UnPMMWzA-retokn46wwb*V&7s zWJt=a(Kik*+$`bbS!ybWf+AcG7KG9wU3A`~Fis+!`0VsE*>Fw@gAyhN=D|Buc7B9$ z5B0^N6G1Vm8~OoT(=T0@k_EedL$2o3w7do_=?zKOjhyE?weUF(7WV)$0hkr%LrY1X zri&RO&>u>sN)QTK>E=+l!Nsf=BJ~LJd?2aht+GX9m?@m7Y}#MSDf8-1bS}u2PLrm_ZeMxVCtGRPTBZnUV-m{!p0EvI|S`s*~R-8-_l7ZD#N^%k2RI(hLn!t^Ny*sI6~ z?>jLP>HqCG*;11}8$gQHn`_EyxhQld_Gjq&;uqDK_n^c&FYUm5PRgYVyV7uklia^| zBx>#(ZK^Zz9YY{2h&$1k&L-h}?RV0JUtlgOtc04(+Z5pzQ%$boaC3YCk$M&Jup$Ty zH1uRIJyh6Pkd=QI1_h`6--Dy_0ow@60#r`J*``w}XFey{GUb@BSqSD@9XRPIx$hoW zRo(MM4K-j zbaYPhboC^x1jHXdoB<0;d9aQWamD@|SUstvHNsa)Q*(Fg8O)|y4vfJ1|67C>gyaxL z`n0z;dP4t+o)ZuRPvCxVfsOnC8n*P{Y!JXYHQpe7r~8;4ipQL|`f=g3^HD=vhC0E4iYv11F$Ps1{Mvv>QnQnu5ri(l|1v!Q-lr@8u%5Sst@Zxwz;z-P=JbKr_gU{Z&Ev8<7o)a31>8mdMRoW_;)*VTpSI+xYoL!~OYx z6>^5y#N{$-xf`Ff{Pm|blmlP8%`;oiPTRfrw*>~f<|dne6amWHYSGZ?@gKt{Yhz(y z*uUx$Y_`YfSx|oAU%}DW96W7t=qmxA&e?@wrij20d_G%&aSv~4m*V~(%Q*WmbD8mP z|HrBSDP>B58#q0$sc`YdIMt*6$arl}R8{69Wk4-V9R0X!(BAGnJ=`PZmOh<`jHUxC^-1c!dE~X4#q~j z6USwKixzpDYg_-rd_FJF!~d)Ke6IiFA-)f}c>i-gzqN_A%qoTe2SoUh$0`@GAI9F@ z32xqsxkzR@JMsBLfYl{;mtJ{``C5Sj2F&$h3c+%d&=<)Czp~J!HdF!H^P$ro^WCYu z#$hK0W?TErSsED_W9FU(w4isvKt`x>)}Ha3%H_#!jXZE-?_HA)6XHBhoC!stsfaO_Wf zGOgn4eGOXYpPiR=Vm(OiLuqKzU-i~_X zz}_XPz>pKiAHpWftMl2-V))KX#?Dd|E>Dys!FPE451z(->rc#-e~Bxvds08?(K7V; z<3v#CBg5u1(mN--*4v0zT29Vr7PMj(Jb{Bq!$O+oiR{Tev)D!4$pd5($0~@`tm9 z$McVvuq2>)Gdz)Z@FzuN;sXcb#Hh3>4)EcWwDZ4Gb|1!>l;!&E_+GSc2eLWAJ4i~# z9hvX%t#OE;6c;9rgo(Gg1`U+8H`2c?yah*#(#X0$ZteK^==)$~+_iJJ+6!JgFs;UP zZkl*KdPb~)R{InBaPccNi;~<*L?)@6oSik5;f_qtS)p2)cycx*lX7);$J8i8{18FT zPiio%rL+b;BK#Pmn(_ysP}co`HCL1h)ArLF=X9-sKMX?Ua95ojnZ!HC&U{9Lu8B!M zVo3f95mkIXqFo?TuC4kg9r@h2p7Q49z^SQd*%z16#CkK_;LM69M!Q?3XS$X~(DwIT zDhKXKOD{gxEZ5%h>OZKXyO>uv)^y@j8T8U#Gd_%^W9K++xn4deIAfBTYQ}&{k2uUN z;)`5lQrM24n3HgC#!*DM_Oi^5QsS31=gNKYmD$>lBj{g2L-My3tcTK{hR_rlpLX6I3fb$xOUF>$J8?nGm_VQ6)Tb=d!l3$52R2`t8+Ufcc=(n@z5fh+4 z{ORSr`tBG>StM*K*u-A5RX~AhC)H@s$}Z*UUo2tDj2Y}t6p`f5amNYEv(5!#kvkbN z^X}=$ZUKz;(VZP75lUU0doGFB)|Kn}Uzir*$wq9ulKcruBj_^ZQZaK~7C&kwT764X zao%FNBsPD!Bq=t3r8h&TXj~vODstvFt&%^lh)=hA)Jkf)9DTd)a3A-m!j~1($kjAc z^3AE@^qvII5ivWL&E2$v#EIgh!IXuPq_SA4L;q~rt?PG#?LAQNgJByreXY*=gYM%s zYSqiDT}QvRMjCCxf6-ZskxN|Y*nefEb@j7d?M%?K(n%-oFWiZ=3Jk-7e5HVovb|E+vO za?mZujwJ@V9}Nuy6M+oh>STL`<_ljAstnq%>JBnkf6XJlqn(=R%6L6Ci&ca($3RJe zVXaB7urlOMB+WF3)sSmf17UH$0`2wlGf~cWPu|*x)E7IM&&}vy#I*M6E7E42dt8Y58*gGz*McQ~MH= zwa0`}R@^AIE9eq7uaRc71GmHTMa*+YrYq_unIit=oUqC}h?uv!?Q60?Z&p_js-}D- zoqP52*S@Pce4}s3uY7PE`dI&Bo8;R^@qvo-A!gqB8TGQN9{~ms$_HpcLt)T6l9sK4 z?>EYRtCw|@8KC7;9J<&3+{&z1q0gehdoRV|O+TmhAzVmiCThg3@yw81Z(+UcYULZT zIs24C5p!n(RoA#y=Q7pE`haC*`(z5AX|l`ECYy}6dBr?y)KE{Ptm@FbRaX@6pr^5h z6`i?m9S`<8OF?al>hrsaMIns?6Y{OMiqbXe75%WX0}_KNubq`tjJu1UYpgyt8wH|S zFA7B7<=4dx1P{J3GZ{)pF_jpy8gRi-BR>J&*7lP@UlSodBiKqUYo@(FNs{)ewHaE) zZbwmFZU$5_KXouCYT|XpW%hZJ+&!ix1`RDG*H@Q1&HG)iqmx8hQ!bU_Qm zD~E|?(ki(B3kZv2=H`r5hI^SsMPvGx?T1maRzCGv4^W~4Yg$V4UG^{19-x;0s`Dt& zE4w%kKUlK5Zg4*#YDS}L_HzFu5G(=>e`rDl+7@rF1&Q9|94!@n_m-AVYc(N$CQ6j` z8VOHS6Z~$}3{a@bE=T1z(jvkwn&9FV5jUil`%t+|)5+DeeA77*!sboVPoxc`oMgWG z?Ezsahh1Q|@Z>KX1&wG&0kNBecylEzqr+E#1S$C_R|J(QZOHDu;QnRGtS#%-lVDaC z(^{WlzhwSozgyI0D5RbVT*B@<0c*;7L)PiJ`JXLFT)3$~E8jF@yc)RUpI#3-4^JRK zH1%yw!G)R{fM>A&{7BhpSm&(SfU2h3!vr;BDGN@!)U56P$rNG9B`YPw#FUj1?c|iz zhR<_aK9@*k$oJf<;4q8&r!Dn)!SJhGkSW}4pjz>I5cWdI$feI*d+&wj{T={#CgnJT z#>M*Xkugw5>s0kH^?4a85~4HI=K7#9&Ei!Y>t%(Ut-L~3bL-KRb}m-)QkP#6dc67) za|zs|Z&Ga6BV@;6THGL0LYd0?Lp-_}ct&$47J_B#6ovNhKOc}-7IWa1ILe99?T&IJ z3GctE+VL1lhlR}kt5+66_L#U5uq}KgiYJr2`kE!qL%yQz85Deb9!7kif2p)?JHBA= z-sT=npBOmC7>5`a9+hlnxZ#RbwtR%mRhIMWv(m+utW5TQJaigj;H(3^7jRo0EuPC1^z{M4f2vi9?+mXxRRQ_U-X@Z1X0Z8TLaNR-#|SogCK!yG=a zcRt!(<{Ne2-R>Ga!EF?c9xkI#b^v>9HqQNc)Z%1obfMWo8$6$s=G0<4m}Up(^Nxsx zDD0DY?04_DN5m0Ki@BfdZ2yJZI|{5`WlXX5DwrD%DlXT6wDz;Kce8;We)R{oak7oU zd2Ir@9U{-$mr#ad_Xog&P5=5iI$Vaw8Dd$Rk#uKjr*8R7 zC6K*)Y(2~}T|r@@?N@-V8|cN+nm7e+U7=IupZiSEI!-nUyQ|rB-nv1DP_v7Q-*;Pv z(9ru66*4HS6R-c|9J7&idY_rsEzJ0*~m!S!dTsN|(9=ID1Z zK|)g7Nz3EzsGlO=ya&Gmw1jrWRZ^03@|7dLGIv430xgS_#8gonR)u)g0^-lXr{>e>eJNUw z>|-y23#3#B=WeFu#x_14gVcRGs24}m9^uU|%!}HWPE7^t`5dAPK&*&3T1;6VajV%v z#a+>Qwjnm3rcNaD50|}TI*;SHN)JlW4Htqqr$Pt65oFS)0j1lGqx^*hlMIW@ijw`^ z;jpeUc{-eMR_Xq}i;h!8KXX?ZI>{mKxVon+Jp-LpVRxd?vz^ScodI(!$gBYGTDYAN zs0vh_)ZKRqa`$`m0t&GmJ^TZ=q_ijJOsL%g646$hJje=c2cI9>%AW_BgIymYS!tc> zNr-70mH)cg(--Hyb0Bs^o!peiu~(YS`Kw_k_S?yZbBo1--;dWbXrjFnk5hf0ZkazQ zI-l+J>PkP!z6kq8kbSY{iJLK96)({DN%J@(^e2l<+WJ`*ximoB@^t*#*R~(?Nr-RT zcA0SHu|yxa`MlxHv>j$bN{iM%D9q>PiEm4ksuEsF^A&^Sea2&6lRf~1FL^eMLdzW~ z#29Cd*~2vJXF-NTm-5o9Gn?*617caeAp02OhWyMbU>D^Wn$}weGE;LUHBl?ty0Cj$ zUgT>CC26*30IW=Z9){*iTYNqYZrJ6Q?}ToQQF8*SUGyj^IlqrG;PEjQPh#+rGczha zPAZV9%hAh^y_b#}k75FZ#J2sHZ>}gv^zG(nd;|(8%+S$!wWw>50?PC|*U#;xFHRLu z2!4%Uvj(`aKx_uk@F5MJ>$55ip@u`3H;gCn1?-5^Ac}fyXcXGE#$KZ|W(=|R#5><> zIK(Sh?#Q<%lFB!P?S_C-L;_s}?q~xUm?yEKlh=Of*6`IpvL`irjE70T<$Y}VMUT!< z&XCi@cDcVhh$lt+ytavvZQE+FLiuR5|907DBkQl!c}O@2Vq)UBY4(ButX$ElAW_Ti z6gT9jaOLh8-bkw5r`$VJ1QdCGB!9&DUTevq02P9c`=d2%x4SRUt6LpR=khO~O|Qx; z3C=%c{1NuCy+Hj(m$qfC8hr(WYi9RdAb8aJ%x8l3v194Z<$jk2QdjBJZQ@7Y z1xhMjPF{fm>d?cu`G;8_?yIMM$w%(R9`J>|o?;##)OA5>GCDkhbsZG%kCNcq7 zhYFcjCZw5P`nde);wygUllF*a1q#c=o|oW|I3!9W=ual(3?i=SIPiEk|5VW?g0xHU ziMzFj;bdE&h@OzQi}HB*`c*_j*Vgx1a-6=GYrl9bN~$9Br4JDGp#_RcMUQFBK^c&K zkEQ$VUyz#3Md%bnK$3*YaPn#wl7t?D(;@dK1MlrP@UHyJ>ybO!$iDz96@Pf+IMJ2UIFkLgQkcKmv-^E*vCy zWGoeKQy72dAtQtiWpi+Sm4&*}b@ktmK)oCaGUd;_<66+VifnB-)ej{gfV zIXezHQB!#93n?IxeuM5QAUH%<#~@4W*SJdN;|!Fysul^l^cKR72NU~7EYTMmeMj5+ zM_06*U<=hcqan~(THmA`y59p{Og51s9RW>s{-NRbT52c@p)QIyI(30a5wI?TD(JY5 zR9}UUjJc=OVwy5zherF0H}u;3kmIx}{00yncUUkfS0<~jrbf+Gd5>xmy@1`IE5F90 z?

\017B\017\277+;\323\276(f\226\003\277\232\366+\277V_\325\275\261\213\214\275;8\252>\014~k>|\264\306\276\375E3?x\376\276>-T\257\276\234\025\245>\305\316W\273A\177;?\300\037\220>W)\331\273>#\334\274IQI=O]\023\277\344^n=|\ri>\227!\025?\020\344\260>\306\301\351>\374#[\276<\207O\275=\272\'\276\312\2539\277\217C\010?\316\246\230=H\215\203>\323\344\366\273\264\365\341;\336aq\275\357\354\214\276p\333 >\246\205\r?\361\247A\276\340\334\n>53\247>}\177L\277m8\022\275\021\224\232\27684\177>\037h\332>\217\254@<1\271\305\276\321L\r>\"\257\023\276\337\234\315\276\235\177\265\275\255z\014=\2046\272>\263c\017\275k\016\331>\333\335\203\275\037\375\254\r\243>\217q\245>\232;\201?\340P\237\274\323\306\322\275\352\337x\275\232m\313>Gu\275\276\331i\273>\254\313\226>\371O\230\275+\303\364\275\3774$\277\200,\337\275(~\031\276v\037\240\276\223@\215?\216 \021\277\024\210\224\276\375\212\362>FI\334\275\0031F\276rM\223>\273,\033>\231#7>\266\233\357\273U\322\354>i\026;?\225\354\223<\r\241\204=\026\177\337\2757\200\305>\243Wf\275\364\212\324\276V\356\247\275\346B\026\276\267\277\257\276\260s8=d\336H\276p\332\n\275\026S\036\276V\372\330=\277CD\276\223\261\367\275F#q=\013\001_>\0320\303=DJ+?\263\026\264>\r\354\311\275\276H-?\257\016\251\274^od>Ow@\276\370%\225\276N\317\242=\\\356\271\276\224\277\201\276\222Y#\275\010l>>\031\201C?\027f\361\276$\300y>\360\223p\274\205<\350\276c\352\304>d?\217\276a\244\204\276\217]G>h\322\235>\0028\033>\264\227\277>\033J$>\000\217\177>\267\341\254\276,s\003\277\214\203\006?\204\207\030>\256X\221>\365\354\014\275\274\341\243\276\306\222\332\276C\357\313>\317\014\021>\005K\030\276\350\221A>?\254\017\276\320w\240\276w.y>\213\204\025>\007\304\320\276\371m\026\276\00044\277o\233O\276#=\020\276c\213/\276\351\033\271\274\336\357/?N\0160\276,\375/=\345\305\306:\016\353\217\274\250\221\231>\213\356.\277t\351\374=\2715K\276k5w\2760\224v\277/9\252\276\355J\264\275l\'\267>i2\r\275\013R\214\276\323\370%?l\253@>\341\2451>R\223\244\276j\374\224\276?\277\304>\342\"J>R\005\010\275U \t\277\324H\030>\005\372\215\275p\024\036\277\"\2334?G.\221\275\300R\372=/p\265\276\314\342\\=\3247\311\275\335k\260>\371\356v=\2651f>\224\246\306>@\212\211>J\341\001>\006\371v\277\337Z\177=\324X=>e\377\241>\253X\237\276\'\321\255\275\213B\221\276\347\367\254<\235I\344\275\253\245\361\2754\027\322\276dP\350\2769i\01396V\306\276\255\263\335>\327\r\t?\036\017\013\275\245\210\t>\254NB>]\317\227\276\334\350\257>\244$\014\276\000\274\002?:B\010?\2213\n?\177\223(\276\241\275\215\276\325\356\252\276{Ao\275E\352\023\277\022@\336\275>\374\326<\273\020\333>X\351^\276\355\277\352\275,*5>\335\t\267>\376\312\237\275G\312\233\276h\212\322=.\246\336\276;\256\010\277\007\236\310=\237^\231=\341\355\331>\317\332=\275\272dp\2761d\346\273\265\300\270>\360\264\375\276\021+i\275\271\201+\276\200M>>M\266j=\310\240\335=\362\347Q\276H\301\020?-V0=L\330\266\276\253@\016\277[\311\300\274r=+\277\327v!>NX\315\276!\306D\276\202\245\001><\256\375=\3553\264\274Vo\275=\315\322\031\276\343\351\231>\022\210h\272\206A\275>\321\321\327>\345>A>(L\357>\260b\302=o*%\277\274\023!\276S\006t\276%\221\202\276\027\035\331\275\367\275\347\274\024\002\242=\006@\000\276]\0272\276\212\3732?\330\232\365\273\021l\255\275H\005e\276\016\323 ?\036rW\276\305\352\240>\3535\347\276\254\026\306=\025\3158\276\347\225N>\321\375)\275\234\303\257\2752u\227>\310\032\260<\261\241`>\320\236J>\017\376,\277\375M\032>Z\322\002?\243\322\303\275gO\000?\036-\350\274#\333\001>3\000\331\276Ibb\276d\363>\274\225\352\255\276_6\020>\330Y\236\276\265FE\273\007zZ\277\001\272\241\276\342\377d>g\0221;Y\030\366>\325u\362=\214\310c)\252\275Ov\233\276\345,I>\026\222\004?\200\232\367\275\242|\262=D\226\254>P\331\332>\240\177g\277\250m%\276\246r\276\276k\265^>\314\204#\275\313\361>>\037\360r>Y\201G=%\274\\>\330\344\217>\260\266\207>(\205\245>\275\233\350=\377\2370?\302Y\247>G\203\226>]\244\010\277\256i%=\017V\370>\370\204\013\277>[U=M\316\215=\234\262\344\275\017\207\n>KU\200>\332\212\r?\305Q\017??\333\245>\364\261\216<\227\301;?*\336\343>\036\273)>\037\3059\277_\260l\276xyB>\002\2230\277Y\316{\276\337\377 ?\213\006\027>\370v\353>Y\302\026?\352\347\215>(kE=^x\331>\201\236\264\276\327L\343\275\010\301\350=[0\305\275\375\313\210<\234\320\032\277\200A\024?X^\244=\000\003\210\275zsz>I\313\274>\303\n\326>%Q\r>h\303\204<\272\346\356\275\332\316\r>\304\336\264>(\370\023?Y\232\305>\273\251\017?}R\374>\311\236Q<\303t\276>\017\335h\276MN\273\275\014\0038=\376\237!>\370#\371\275m\022\014?+7\255\274\236=\334\275Jc\277=\3240N>\302&^>\250\264b;zz\213\273\216\\\226\274\227\013\341>\324\212m\2760\006\002?\331\2010?\257\002\245?\341U\266<\326\312\265\275_\002n>TT\353\275\212\303\273\276\325\277\244>i\217\231>\347r\332\276!Y\264>\350H\301=^\n\023>\021\002\276\276C\270\360\276\343N<=\226\321\r\277vf\365\276\\\004{\276T1\r\277(\0144\276O\227\206>\341\360\232\276\237\312o>\365.\371\275\'B\330=\324\027\336>\326O\220>\010\326\t?\010\341\326=,\244\017\276\215\325\220\276\210;\006\276;\256\036>\310\245:\276\006\230\302>\254\352\010\276w\342\204\276\207\224\265>\033f\274\275\354\330\233\275{\026\346>)\3763\276\316C\226=J\277c\277\321Q\334>\234c\274\274\262\266\r\277\r\222\026?7\314\334\275v@d\275\365H\010=\340\362\274\276\237\260\210\276D<\257x\333\370>Jh\246>\177)\307\276\235\177\030\276G>\315\276\235\177\263=\311\343\317\276\377\315A\276\265\251\242\275\006?:\276B\342\351\275\016\236\024\276\036\266\362,\n\030>\316\311\237\275\304Y\r=\331\330\225\275\340\373\326\275\357\341\314\275\347b7\276\n\344\t?\306\352\001\276\251\035\345\275\302\200\362\276\024\034\207=\004vl\276\312}\'\276\222R\244\327\274~\276\300\232\027?\236\377\t?\251\360\023\276,\215d\276\342\370\235\274\007\3004>\330\206J?\230\036:>\320A\244=)\260A\277g\313\t\276s\377\333\276\257\310\375>d\'H\277%$\"\246\374l?\204\016\310\276.\266\"\276\246\331\205\276`\276\232>\356\333\006\277^\030\033>:\306\017?\300q\260\275\304\021\024\275\214\037 ?\tX\313>(v\016\276\204\245)\277\201Q\333=\363\224\255>\035\273=>\007\374\340\275\355\360S>\004\363\232>\225\366\013?B\372\031?\0165\332\275\250\2521\277\371\247\304>\3512.\277T\321@\277\251I~>/\026\201>\325\200A\276\3578\231>;\342\374=~d\327>\014\253\035?\215\377\020?\232\376\036\275F`#\277\217Sj>\331\205s\276\302\306\361=\005\361*==\322\201>0\025\373>\035\023R\276\\ \376>F\005]=d\023\220\276\313\325\014\275sX\330\276A\344\223?\302W\031\276\241\213\311\276\264W\260>\365\367\'\277\207B\344\276\003\373n>d\0230\276.d\375>`\005o>\372\336O\276\227\325\207\2761\265\213>\252\377\320>J\327B?\234\217F=\206\311Q?{_\307>\321\245\324\265D\005=\201\235\341\276\213\371\222>\222,\347>#\212\033\276\010E9=\223\210B=\010\277\222\276\252:\215>?U\360=\276\207\203>,IR?\310\351\246\275\021x\256\275t\275[>\t\341\372=8\314v\276\350J\271=u@d>\004\t\315>T\211\230>o\263\364>O\224\255\276\3766\017=.\322b\276\3539\323=\r\305=?[\250\037>fK\345\276\377\022\022\276c\037\243>j\322!\273\002\311>?\347 2>\302:\304\274B:\307>\020\337o\276\034\324o\276J.\355>\223\001\036>\206\005\306>\311\000V<\027kw=s\367\004>E\326)>\035>\262\276\256\326\256\276-<\010?\204\267\230=\341\343\260=[\250\366>;M\t\276\315\237\237\275Z\347\356>!P0\277\213f)?\243.|>\376\254d\2763C\302>\365\213\230>\365\277\306>4\007\350>3\366+\276\327\352\'\276\247\311B>\342\225\234\276\352\350\233>Nc\351>\210\220\313>7\023o>2\025\030=De\243\276\177\330?=S\255\220>U\230N\276\216\240{\275l\320\330\274\344~\204>\341\366\306=\273c\277>\177d\371\276\037\264\244>/qM\274\326\322\232:\325\354\216\276\211\022\021>r\275\376<\371\025z>\316t\003>\3317\014\275v\363\223=\236\330#\275t#\024?\206\267\306:$D\334=2+z\276ge\214>w\365\263>\252\177\316\275v\351\010\275\001-\332>\347N\320=\234\007\035\276z\034\r>\240C@>,\351\376>Y-/=8\367K\277l5M?\212\021\323\276`\375\303=P\222\205\275\0318l>N\244\205\276\217\366\245=\004\334\355\276\325\265\031\277u\"\365=\265\304\316>v\226\210\276\370\201\323>\273\376\r\276\310\211\030\276%\250\326\274E\3625>\317\316k=\251\024e>\237\351?\277\365\362\302\276]\237r=z?r\276\350A\311\275\314\034\236>\010\022\030?[\325\227\276\357\"\255=EJ|>(\224\270\276\245pU\276,\310\271\276]v]\275Y\003%\275\336\037?>&\240\270\276\237\0060>\032!U:\025\227\034\275\246\002c\277\323\363\"\277\335\226b\2763\230\213>K\014\372\276f\342@?\204n\3619\035q\023\276\311\341\036?\237\362=>\002\004\033\277\007\367\223\274\315\271i?n\363!?j\337\232\275\346=\032\276\274h]>\263\244\217>z^\244>\270\315X>n\301/?\200\363\351\274c`\257>!\325m?\342<3>5\021\371\2745\242\344\275\'Fx>\204\377\024\276<[\321\276>\352\302=Z@J\275Xq\312\275\023 7>\343)\344\276\270g\341\276\212%\265\276\010bD>\346\273\267\275m\333\255=\365\333\203>\250\345\000\277\300\030\202>$\261M\277V\274\214>\336\\\301\276I\301\304\276\331\373\227>>\"\211>\212\244P\277\232%\343\276\204\266\234\273\300a(?J\020\363>\326%\010>\374\006\325=\263e\267;\316]\\\276\003P\035\277\315k\017\2779\302K\276\263\353#>\375:\352\273R\033\222>\306\224\251<\007Y\210=\225\r\332\275C7@>\2663\261<1\0206?\016^]\274\234\374\232\276\243\267A\276\032T\010>\324\010\336\276\371\225C\274b\227\243;\345\3473=\246\357\246\275\"\210M?_\376\212\276\025?\334\276o\003\214\275\354\020\340>N\357\017?lH\250\276\341C\275\276\202\376\023>\001\363\355=Sy\001\277\323_$>\321\201g\277\247\300\255\275F\206o>1$A\277f\317\362\2768\256Z\276\307pq\276}x^>\3634<\276a\'\022\277\236\037\206>\374o\246\275\330J\226<\334\016\346=A\006@\276\267\"N>\240a\n\276\356(\030\277\203+\030\277y\332\007\277&\327K\276\271\356\220>\027\254\276\276\330\234\031?\200T\377=\354g\202=\203sO\276^M&\277,\317\267\276\303\324\214>;\263\241>\341\252 \276\312%4\276\034\204\330>\205\373\266\275\010}\211\276\367\026\341\276\000\374$\276D\263%?I\035\014\277\252\325\303>0\336\217=_\335!>\344\031y\275-h\354>J\255\212>]]\302>\2366\274\276?\225E?^A7=\021\376\306\275M_k\276\271\002\016\276h\332\013\276\250\211\315\276?\330u>\237\322\255>\374\200^\276\\\317\341\276?\253Y>P\002\\=\005=\240\276\270\232/\2765\204\326\276K\n\234\277\337\3223\277W5i\276\353\322A?MV\220\276J*\352>\215F[\277\r(\200\275\252!\021\277\260\203\202<\254g\351=\301\3562?\2430S\275:\214\372\276\031\177\252>#S8\276\327LE?\232\351\360>\000\\(?gn1=\304+2>F\365\201\276\366\315h>\304\313)\276\177\017\246>i83\275m\224\247\276L+\335=o\337\357>\250a+\277\357\242(\2775!\330\276a\326\245\276\0006\335\276v\217P>\200\250\204\276\t\350U\275\000\231\263>\006\333P\277)\334X\276\000,\264>Jy>>,\300\265\274\007\242\261\276\276j\013\277\377\231o>HAx>\250\227\206>\206\006\210>\307[\231\275\n\276\245<\236O\322>\302=\351\276o\030\237=w\267\306<\t\276U\276\036\333\206>_Mh>\021\\\233\275f\256\220>I$=>[\'g\276\014\241\300=\331zes\324\352=V/.\276&9\205=\265&\226<\377 \246>\302\356\336>nI\355\276\377m\201>t\310\233>a\264U\276\256\266\323>\'\300\347>nqN\277\311oa\275t\363F=\222\331\216\276\361\003\205\275I\362$?\014\226\"\276H\002\232\276\335\212\024\277\275\031\261>t)\241\276n\202\016\277f\375G\275\"\354\n=\221U\333\275p\223A\277\242\254)\277n\014\032>\304V\230\276\335`X\277x=\206>U\250\002>\\g\371\275\250\334\261>\327\033\274\276\332$\222\275!\307A\275Nk\347\276h\277\346>\237\202\026?C\024\215\276p\001+\276\014\017\013\277\003\265\334\275\350\347{>\246(\263>f,K>\324N\271\274#\202\262=\361@H\276\354K\331>M\203\265\276r\222\300\275]\251\027\275\344d5\277\253\301\321=\266p\264;a>\216\276Uh\023=\253^\206\276PV\232\277MbL\276\277v?\275K\025\233>\210\335\354\275T18\277\271\031\210>\314\034\337\2769\3003\277\'Z\334>\026\211\317\276a\220\017\276\246c\001\276\225\262\376<>\322&=\342J\274=a\327\315\275\246\212\316\275\230f\230>SW|=O\256\242>&\225\010\277\245\333B\276%M\202=\266\206-\2512\201\276u\344+>\314\303\217\275\271\324\227\276\270N\375;jVF\277_\320\036?[\345\241=h\233\341\276\364\230\345\276:\002C?^|\314=\243\270\371\274\312\'\235<\022\257\231\276\215\310$\276=\317\211=r\256\357\275\217\220\207>\031*\013;\220\312\'\277\344\036\232=\006~\304\275\022\237\276=\024\'\227\276Sa\200\276\344\262#\277\305\362B\275\362\316l>\311%\315<\254X\212\276j\225\007?\n\300\017>\245\017*\277Z\364\276\275{\225\366\275q#\326\276%\264\036?`\375\210>w\337\376=\326*\013>\302\303\200\275\310\034\224?\370?\204\276\375\226g>\340#A>\273\026\303\276\246\372*\274\342\330\234\277\233`\260=\313\r&\276\002\014\246\276\260\344E?\213\235\311\276[h\303>\340\322\002>\361G\027\276\265\264\231\276$i\'<:PG?\376\321\221\276\017T\200\276\230_\277>\357\333\321>\301p\214\276\201_\355=\000j\032>\362.\264>\227\010]\276\322\022j\276\216I\326\276\246\006\013>\267\005\211>\261\327\022=\233\013\334\275j\251\277>\232(G\276:UF\276\311\023\321\277@\347R\275RzG>\337\327\343>A>^>\025J\036\276\353\'\001>\340\r\314=b\024\204\276\300T\352>h\224\275\275c\215\222\277q\343\021\276GK\216\276\216Sm?\341k\267\276i\303[=S\361\361>5\013\232>\240\316@\277I7\205\275,\327V>F\343\225\276\213p\007?\215\034\270>\201\261 \277\327.\305>\255\310;>1$^>\337:\351\276\341\371\212\277\032[\326>\333\204l\277\226\212\311=\354\263\007\364*>\023\251s>\351\016(\276`S\023>d\262\340\274G\367s>\247A\265\276\305=c\275\252Fc\276\346\005\350\275v\233Z\276x\253\356>5\226\227\275%\266\241\275\210\362\203\274\230~\254<\337\261\251>l^\345\276\034\244\t\276<\256\202>\363x\333\276\036\346\266\276\234\356\274\2756\031\350<\"W\204>\002\036\377\276\306s\277\276<\2552\276-\002\006>5\r\007\277\006\r\275\276}=\355\275\001\212\030?L;\276=1\267{\275\374\262\235>\005\2067\276\230&e>Gh\302\275v\017\n\276\227\t\311>\256\363\225\276\177\303\274\274\022\337\202\273\315Y\001>\276\013\354\2766s\225=<\016]\276\365C\"?\0223\020\275\267\346\376\274\353\246\007\276\006\342E>\265b\006\275?r%>T\272\213\276\360Q8\276\001\026\230\276(\353\311\273\357+\256>\364\372\322=,z\033>7\003\374>\252\245k=\00681>\262(\376\276l+\236\221\362y\276u\356.\275\234\234\274>\311;(=\332\272\211=]\236M>\2629\301>E\327\202=\013\263\257>\001\263\030>mb\341>!J\211\276\036I\036=\244\035$?\031\025n\275\230\007I\277\336\333\236\276\243\310!>v\344{>e$\030\276N\261\313\264\233\246\276\273C\332=\210\375$\277\215\270\t\277\372Au\277\312\273\203\276W\227\320\276\252\000\233\276\355\016\005\276\366;%\276\342\037l?o\347\207=\234\332\201<\226H%\277\363\353*\276\233+r=l{\024?G\305\010?:d\023\275F\371\332\275\027\035\261\276\207G\177?\201!\331>\021<\271\276\271P\024\276\343 \316\275w\036\241\276a\303\244>\322\214=?8\002\220=\0330\270\276\3656\034\276Pk2>\022:\013?\224B\"\276\362\177*\277\t\267\234>LB\360<\353D!\277v\266b?\2244X\276}C\213\275M\214Q>\237\226\243\275P\214\323\274\200\332\345=\203\313\277\276\003\007\023?\221\223\242=\230<0>\275^\272\274\005\312R=q%\215=ZUG\275\211\033\262>\241\205\317>@\332{?*\331-\276\330\211\361>{f]>v\"!=\275\262&?\304}z>s\303\336;\001\304\370>J\247\r\277\037\240\376>Y\r\177>O3\335>\'\031\357\275R>o\277\2271\013\277\263\304\233=Uw\223\276U\204\246=\205\003\300=*\362\036\276\302(\257>[\tD>\374\340\226?\027\271\220\276\370\236\255>\225,\037\276\366\\o\276\006T{\277\342q\210\275\375\013\336\276\303\017{\276\2167\220=\377\322\036?-\226\252=\263\362\006?m|\230=\330j\222:\254\246\022?\032>\037=\340\372a>\341\266r\274\245\033\320>\036\013d\276w9\234\276\245Np=\177M\202>\034\233\370\275\014\240l>\217\276\033\275\021/w>\000\265\207\276F\252F=\363\312\256>\325\020{>\031\031\250>\2220S>\246\307\264=\217h\253\276\232!Y=\327\217\300\275@\006\355>\237\331\200<\250\327\025?+\312*=\302\000\204=Yy\007?\342tN>\373\365\222>\323\365M>\016\306\210<\227\236\360>|\342D\274x\030+?\037\316\364>\231O\247>\270\266\312>N9\247\276\034E\240\274\350w\326\275[\326<>\3529\276>\252O&\276w\301@\2777\204V?\346KX\276a~\021\277|\007\004?\241U\221>\020\200\377=a\211}>\264|\003?d\263\274=E\030\032?y#I=R\003\223>ql\301\275\221\352W\276\203\304P?\227\331\352>/\003\330=\"\373\025?\0226\022\274Q\220\251\275\236\222\257\275\265\344\026>\2555\032\276\023)\306>\206\226Q\276\323\334F=\r\242\314=\214V\355<|\025\302<\207\325)\304\360W\275\306\260)?\221)\021?M\200\234\276\353\377R\276\335\004\330\276\301\345s>\221\263M\277\340\247#\277\2343\336\276\004<\373\221h\300>S\274\030>%\210\327\275\006\2476=p\010\234\006|\215\276\305\346\266\276\211D\220=X\005\206;\346\037\260>k8\360>\312\026\216\276\'^\374\276\201\360.>\010\246\265>\370\347j>\367\324\233>x\361\003\277\212\320\221>\001\336f\277m\'\016?\323l\"=\222\351\210\2767>\200\2763\036\242>\330\313\256\276\200\205\177\276\353-\236\276\252\005\257>gO\317\275\210{\236\276\220F\240<\273\374\201\275\246\261\200>0\224\264\276\331\255T>\274\231N>\275xG\275\264\017\177>>\241\217>\357\213r>s\376:\276\325[\370=J\342E>\340\002f\276\211z\013\276\340lD>09]\277-\222\021\276\322\306\013\277:\275L>\237\013\224\276\277\025\331>\004\001\261>C\312\032\277%\3746\276l\017\361\276\262\000\004\276\233h\241>\003N\177\275\212Z3\276F\006u\276\360\217q\275\253\213\004\274:\230\303\275\251\240\362=1f\230>1\024\263\276\3642&>\362\220)=r\3363\276z\373j>\003\003\227\275\201S\314\276\225\007\275\276KN$>nW\037\276[\345\353\276\337t=\277\203\366\344\276^\220\301>\037eL>\267\320\001?\356Y\247\2764}.\275\207\277\007\277e\272T\277\0027\034\277\327\361\010\276\306\263\034\277\226W\224\275\303\357*?F\262\263>\272\266\"?\37204>{yM>\267e\204\275\036\322\036\276=\245\022>\0260\374\274\003\036\026\277O\214m>\317\034\254\275~\214o=\350\210y\276iL\273\275\357\322\271>/F(\2762d\222\277\010\000\324>\336el\276\377T\365\275\377\273x>\315k\"\275\226\"\034?=\020\251;\352\307\306\275\317d\342=\r\365s= \375&\275\232\\\222>h\252\027=,w\370=\354t\300\215\321\177>\344\334X\275\351\337\260=\352K\006?\244\017\260>#\223\002?W\3259\275\266W*\276\334{\213>!\342u\276<.\276;\221\340\260>\240Nd\276\200\350\301\276\213p\345=\233\0137=\375\237\374\276\342F\006?\273\234a\276\221\202\233=.\345\221>C\032\005?|\007\237\274\t\220<\275\000\227\333;\351\314\220?@\035\276=\004&\325\276\335:O\276\360z\327>1L\240>\026\320\032<\366\267\200>\260_\316\275\030\222K\276\366\255\201\276 \025\335\276\241\306\203\276\361\353X\276\314v4\276Q\354\256=R\202\240\274=\344\026\276\323i\203\276\037\241\226\276e9\215\276\267Ps\276\260@\327;XQ\006>\213\262L=x\253b\276\023\214m\276$|0>R\310\330<\311E:>\251\244/\276]\263\006>W\3000>\273T\347\273\212\272\353>\320}\231>\254XW\276\251\232\253\276\251\342M=x\025\326\276C\363\242\304M\337\276\250\213\257>E\375E\276\000S\020>*\370\225\276\010i\312\275\322F\034?\205\034\272\275\201[\353>\006I\'\276w\342\311=\352\326\034\346=\014>\213\301\246>\247\202A?\200\251`\276\303h1\277k\240!?\204\360R\276N\202\316>\316\302\304\276&\251C>Z\314\026\277\221dl=\324&\203>\242\346D\276\247c`\276\217g\351>\031\242D>\036\252S>\t\3044>s\277\004\275>\340\306=\207\010\021\2763]\363\275\"\331\007?Z]/>09\016\275\347\276\272\276\267m\002?h\263\005>\241U\324>\2668\002?\020\237W:\331\264\313\275\227#-=\030\376!\277UF\201>X\373#\276\346\355w\275\307\326\035\276\232\224\307<\324\214\202>;\261\236>G\355\270\275\357\311\035?\246\307+>\244\252\222\275\201\350y>\302\236\217>\265\266\250=z\230\214\275\377\\\343>\036\t\234=\32262\277\024G\203\275\234\254%\276,\261\010?#\347\007>v\316\265=v{\357>\036\310\271>\031IN\277)\371\200\276\207\366I\276*+\267\276\227\272(\276` |=\253\250\027>z\321\273>O\010\273>\224\267\036\276\234;#>\240\005\301>\320O\005>\250\272\356=;\372e>\341\274\273>\217\367\030=\2045\020>\237.y>=\254h\276\333\322\223>N1\033>>Y\343<\\q\032>\345\217n>M\336N>=\352\213\275HM\036?\214\357\347>\334\023\232>\2401r?v\2067=\277\010\300>%\354\326=\301\251&>\331W8>~\200\346\275\336\304@\276\276|\260>1M\224>\310\205f>SX\355=4S\226>\257Q\262=X\363\333=\206\233\342>\017L\200=\270\023\217>`\004\203=\273\276\303=\326i5>L\0050>\337|N\274\241\227*\276\377U\025\276\\\304\001?\220\221\311\275;\354\242\276\221I\004\277SN\n?6\340\217=+A\212\276)\260O\276\203\377g>\356\\b>\247Uk>\251\261\201\275\223\235\221>A\037#>\177\341\224>\240S\263>l\334M\275\267cb\276\355Z\004\275q\2746?)B\256\276\246W\214>\005\204P=\331o\231\274\027\326(\276m\320\274>\345\351\211\2762N\302\276\0031\017>\301\030\326=FC\261\276\277<\\\277h\210\340>H\252\366\275\033\307\201=\335\023S\276\035\215\373>\335\214\253>\323|\201=\364j\364=\317\301%\276\326\013\002\277\204Q>\276\234\202M\274\017\277\333>\374\013\212\275\276\275\351\276\246hC?d\353\214\275P\202\001\277\205\265\020?\256C\250\276\220\035\003?\347\356\010\276\262\247K=\205\"\320\276O\215\335>G\002%>\033\250\263\274\003\027\206>\242\"\\=\005\332\255>\215\325\203?\303\211\351\276\344\204\353\276\322\337\222gJ\222\276\342\351z>r1\003?6w\005?\001]K>\364w\254>\235\232\312=\'%]=!\2615\275\2166\007?\276G.\276\214\002\200>e!\251=E\362\370>\302\237\265\275\275\313\013\275\374}\206>!\343k\275\251\356#=Tt~\276<\225V>\315:\277>\345!\244=\257\226<\277B\347k>\005F\036>\243?\001?\225V\216\276\003\030\006\274\273\332\217=\366\271D\277=U\226\275\363\344\321>\242\035\010\277\303\240\000>\300vz>\021=\221\276\324]\'\277\337\360\030\276ap0\277\217PP\277\005F\251\274\322g\010\2775\223\245\276\257\274O?m\205o=\265\257&>_\366\323=\316\234/?C<\t>\301M\376\276s\337\224>\372\021\200?\031,\211\276]dE?_\373(\277\037k\202>\216-\334=~\253\n\276s\362\373>\233/\340>\371\332\254\276\353\337\241\274r_c\275\266g\233\276\240\351\357>\250\327\332\276\td8\277\344\373\231\276\223<@\276\014V\006>\026\2627\276\277\340\222>T*\233\276\306\244\306\274\254\221\331\276d\325\016\276\332m\347\276\221a\306\276\317\234\026=bjx\2766\332\213\275\216\334\010\277^F\035\277\254\252\345\276ak\221\276`\306\305<\244!\230\276\004L\321>r\250\371\274`\0143>\244\371/?A\320/\277\211J\337\276\274S8\276l\245J>\016\2072?\236\340\371=\345\240\036\275\256\"=>.\361\326\276\3406\365\275dw6>Wsc\275\364\263\335=)1C\276\351\016\211>Q\013\252\207s\307\275\357#\367\274f)\376\275\005\027:>+6j>\265\030\223\276)j \276\273\336n\275\2352\352>!\310\366=\270N1=`\316\000?\326\305H:\030\243\255>-V\306\276Q\025\201\275\250\362?=u\225\006?+\003i\276\352\224$\276\245\352\002?\2446\260>\322K\002>\251\330S>I\355$\276\206\201\200\276\206[\234>u\225\341\276\265@&\276\227o\302\274\243\305\025?\223>^\2761m\210>\246D\204>/\335\277>O\261\202\276\336.\233\276\252\247q\276\234\307\250\276\376\261\\\274\255\035\001?o\201 \276\272\213\016\277\210\020M\276\177\303\327>\342\254H>\001\000=\276R\347\036\275\014\217\355\276\353c\347\276\364\274\300\276\321\273x>\246<^>\203l\354\276\336\262\225\276~\037\n\276\031\010\r>\211/\303\274\234\270s\276\007\265\377\275\325\024\210\275\300\225+\237\335\276\252\354\237\276\020z\033?\223\213\355=\254O\374>h\245\002>\212\333s\276\241\354\265>h\255\001\277\347\240\016\277\202t\022?\260>-\276\361\007\343>\021&c>\343j\315>\002\020\200\274\030\213\264\276\017\005\014\277\240[\025?\310o/>\357r\034?\005\300\236\276cs\205>\032<\036>r\233\016?WH\376\276\026Zw\2760\226(>\3779#<\344\311\227\275\304\230\2239$\374\246=.n\257\276!\263w\276|\253\020\277,\264\252\275}\323\\=\377^\232\276\222^\372=:9\020\276\007D&\277\234\273\226\273`\247\234>\333w\'\277\202\007b\2733\312N>\351D\t>\252dD\275\225\230\035\277(rm\275\311U\374>}\250\220\276\202)\016>\377\001\227;\321X\023\276E\345\305\276%\005\343=\262\266\027?\273c\226>\325CY\276\006\255\302=]S\r?\374yq\276\274\226\031<\226=)>\357a??w\"\326\275\177\366Q>\3616\251\276 RT?\371s)\277\375s\213<\315\026\236>\021RZ\277\016tt\276\322mQ=w\270j>\372\322\027>Xe\301\274@\244\260\276A^E>\336(\232>\217\271\254\275\325\361\274\275\253C\223>\220D\334>\226\325\364\275\225W\235\275\2157\016?\340\242\373\2744\255\234\275\371j\342>O\225l>j\301&\276T$C>\302]\216\275\322\003\356\276\362\227<\275\273H\300;\350\343\241=\312\r\215=\371\326c>\313f\014\277\r\374\013?\316\364\001\277z\306\337\276\031\234\361=\234\201\037\275\241rz>\341\232\305\275\224!\213\276Jn\257>\213\352\262\276p\260\225\276\020\344\r?\345\363\236\275\246\211\035?\267>\340>\201\364\223\275[\350\033?f]\346\276f\243D\276n\366\300>Gk\204>PJ\021>G\323+=\314\250\214>\370\346\200\276U~9?U2e\276g}\277\275\326\022\224\276\227Q\256>\222\302\237\276WM\342\275\250Q\361\276\026\261\222\275O\021\003\277\362\357\302\2766\327\016\275,<\250>\353\262\033\2775q\014>\204\274\004\274\020\374\204\273\347\215)\277w\235\252\276\255Q[\276\201+\010>\370\367\016\277\002\275\262\276c\2308=t\346\302\274\035\213\213=Mn\010?\355\260B\277%o\205>\352\374=\275\346\023\366\276\341?~\275B\343t\273%C\311\276\321\313\345>[;4>\251\234\252\276W\277\251\276\025o^>\213\354\366\275\033z\327\2758\3304<\325\200\260\276\332\311j>i\302\267\275d\273\261=D\233{\274}7\240\274\006\332\340=\r\217\225>-\032\003\276\234\206\240\273\363\353\263\276\251\371\312>\235!\026>\031\007\352>E\211<\274\330\273\215\276\307 \236\276U\2760>GA6>\302\355\314\276I\322o\276@G%\277\360v\025\277v6<\002\013\202\276|\251\013>\210\004E\276\330\214&\276\246\\\346<{\363q\276\213T\336\276be%\274zp\213\276\351$\314\276\266].=SG\017\277\265\373C>\001\354\022\274\240\315\025\277i\371 \277\240\267$\276i\345\213>$C\331\2760\237\212=\270A@\276\345\253\277>\306\230\274>\376U\334\275\034\317\030\275.\341T<\221?\t\277\250}p\276)\233+>\247\302\021\276KoD>\026\005*>\302\246g\276\254jC\277\370\221<\277r\210\335\276\362\0073=t\312`>\243g\214<\334Xu\275(\235Q\276\336\026\335\275\315\267a>\246\276\016\277|i\233=q\347B\275\240\030\246\276\337\246\266\276\2451\214\275\270\270\020\276B\340\365\276\3250\231=`\215\251>\025\244\030=\341\211\217\276@NY\277\232SZ\277\213\273\006\27772\274>u@\305\276\221\320\313>4\233$\277N\374\277>\336\025\250\275\217p\372\276+p\004?\305\010M\275\301\210\233\274\301e\263\274;\225b\276\031jm\2754\357d=\263\310\203\276\230}\013\277N\210\211\276\010\310K>\310\263\203\277p\232\032\276H\353Y>\202\274\354\275<)\232=\366\"\243\275\371x)\277\242\005\201\273\317,\371\2757r\246\274\224\226\316=\376\246\322>_\324t>\3558\252=\242\014&\276\230\325\202>\240\263d\277W\212\006?u\230\246\276\212\237\232=C]\220\276g\326S\274\313g\255\275\225>\334\275u\026\032?\333\224\024\277\327\363\243>]\227\356\276B:K\277e\245\031\276\214\217\244>\213\226\216>\340\330\033\275\260\031\240>\020\234D\276\315\266\\\276\233\021\215\276\013;\224\276\177\022\334<\230\250\236\276\200\254l\276\"e\352>\031\005\241\275wE(>\212\325\370\275\375\236\344\275\027\317\257\276i\307\000\276K\026\023\276\332\373\205>\364\2432\277\222\357\236\276\321\245\372\276\013\206\211\276\242\305\317\276\246\020\\\275\247\214\215\276\215\234\210\274\242eF\277\304\224\235>U\306\311>t\252,\277\320\221\375\276\3601\243>\370\223:?\214\020\365\275\027\211\325\275\302C\006\277\n\003\342=\034#\212\274\335\346\026\277W\236M?j\337E=\262)\232\274\351\361\354\276\261,^\275\314\347\013\277_\204\254=\224\323>>R1\022?\227\342f\276\336J\205=*z\227=\345G\326>:\242\237\274rLW\276\030zD\276\316a\230\276\212\004\200=\233\201\357>\302\274\030?F\376\273\275i\274\210\275\261L\304<\271.e\276gg\237=\010\037\236>\003\007\225\007GW\275\030s)?\200\207A\277\365\001.\276\0333\245>R\222\377>\n=\265>w\273\225\276\273RD\276\n\207\241\276N\277\332\276[\300\353\27621?\275t4\231>\365\0009>\313\335\371\276v\342\033\277\373F\225>@\224\204>u\345D?\346\317\266>\006D\014?;T%\276\024\020\213\277\247\230N=F\3712>\362\014n\275\017\250\037\276\202\266\235>B\253)?\033<\037\277\250\325\365>i\213\n\276\212l\305\276\'&\355>Z\335*>\223[L>Mb#\277}\022`\275\365a\010?\023\n\216\276\253\014\212\276\340-u\276+\324\001\276\222A\002\275\374\001=;\013\204=\276\210*\333<9\215\355\275c\347\273;\2169\377\276v%~\276m\326S\276h\027\010>\301r\336=\223\345\\\276\0026\206\276\305Q)==\357\010\276j<\202=\347|\033\275\256\371.\275=I\246\2759\202\315\275\252j\025\276)\272(?\026J\000?\217\272\203>\"H\223\275\307\317\207><\252\267\276Q\325\235\276{N\273>\245\207\265\276\335\261\026?\230\203\211>\337&\226>.\265\257\276)\024f<{y&=7;\273\273\355\253{>\344k+?F\025\266=\363\340\212\276\200\221\255>\244\260\020\276\004\177l>ju\n\274q\256\021\276@\237(\2760\016\350<\375\255\014\275\250:\276\276v\003\013\276\004S\224=\035\216|\276\254\035u=\002\2047\277K\333\001\275e2\014>\rZ\254=\250Y\021\275C\3731>\241O\332=CJ\207>\033\260\216=3\014\256:2w\351\276\'1\020?i\302\252\276\323\205\373\274+*)\277k\002\347>*6\236<\377\202\002>\240q\362=Q#\341\276\320\360\322\275\211\352`\275v\252_\276A\234?>\270 \355\275V\225\226>\252\371O\276I\010\271>\223k$>\350\2260>)|b\275\352\020\037\277\260\273\000\276$\354\025\2763p\177\276\227\\X?\301C\377>g\333^\275o\331.?\203\316\001>Bnn=\361\324\315>\361\2424>K1\354<\222\000\035\277\217\020,\274Z\033\333\276,\323H\276x0\025?\204\271A\274\312`\260\276\022\337\t\275\3770\002\276\360&\273\274\371\000\013\277\0162\332\276\257\374\027<\250\367\006?wm\001\276b8\213\276w\017\024>\r\214\035\277\335+6\277\037\274B?\226\224\240=^\364\"\276\264U\003?P\213\202>\317\236#\276;\'l=\247R\220\275t\374\240>J\346\366>\261=+>\213A\021\2755\314\207>\226\r\226>\230v\366\275RLR=\254j\024=-\000\205\276\031O(\276\253\361\226>c}\023>\004\347\245\276\000s\234\275\266\275\027\276B\262:\276c\212\013>\320\304\265\276\206T\352\276\030fi\273V7\001\276\203\033\371<(4F<\275(\316\274\330\347\271\276\253@\330\276,\237%\277\021\0046?5\211\021>e/\367\275\251n\377>\345z$=X_\013\277\353@\217=Q\246->\311\376 =\276t\362\276\360\346\215=\362\263\233\276\227\354\215>\260\272\235\276\005\373\037\275 RM\277\326g*\276\257I\352>\031\027\231\276*V\372\275\276p\013\277\271([>\036\234\362\276X\321v\2764\304\246\276\024\257q>\354=\242\276NU\376\276\2750\r?`\373\227\276\261V\004\277\005\360\265\276\342?\004\276\301\341c>\004\236\212\276\356Q\304\276\204\245T\276\305\030\203\274/5\357\276\243\345\002\277h\366\327\275\021\233\035\277:\240/\2766\0305\276\321\034\001?\010\326\273>t\231\364v)\200\276V:\270\276H\365\035=\3227\344>\014\214\210<\362\244\311\274\264\276\227>id\210>\222\345\202=D\231h>\321\334\214=\217:,>\177\024\251\275\362\t\245\276\260i\036>\317\010\253\276&7\304>\242\215g>Y+\000\277\013\256\315\276~S\207>\243\354\255=l\335\200\276mJ\336=T\324}\277/\350\203=\310\023\311\276&\335\214\277\261\352\317\276>\350\230=\352\226\343=\315\271M\276\274X.\267\031\032\276\260u\r\277\025\235\372\275^ \336\276\2348\231\276\233\344\201\276L\013y=\322a\026=\r]2?*\277.>A\031M\275\335WH>\316\037!\277\020O\345=\207\224]>s\255\214\276\305\024\310\276\347\2646\274\215\215\264=\356\326\342\276d\020}\275\313\023\217\276\251\223\371=\326A\007<\234,\223=\034KU\276c\243L\277,\276\374\276\214\251\222\276\203\255J\276\330\330I>N\342\324\276\230\3552\276\t\306o>6\367V\276t\226\213\276\236?\005\277\010\246N>\314cC>x[l\275\0130\025?5\254l\276C\310\033\2763\302\002=A!\341;5\210\206>\320v\335\276\0131\356>\320\3552\273\007\325\374\275\001\270\315\275\375g\2039\360Q\270\276\356\343=\276\3674\270\276\002v>\2772}{>v\266\354\276\307?\357\276I{_>i\001\246>\357h\006\276\214\215\254\274\325\264\321\276SD^>\261Q\222\276\247(Y\2719\201\271\275I\362\335\276\241\351\250\276 \275\021\274r\375\004\277q\001\307>g\224\217<~*\013=k3H>\242\'\024\276\254\233\212\276\331\302\313\275\320\200\243\276\304p\231>\3701r=\260\263\215>Sw3>U\333\346\276\345\375\033\277\202\220\235\275M\342\'?\366\360\200\276\230O\335\276\031\003\206>#\3344\277 hg\276\0240\271;\340\266\r?!K\214>b9\320\275\3478\250>\302\274\rq*\216>\274\240\236\276\370LX?\361@\014>\2021\230\276>+Y\275\230\351\377>\230\'\347>8l\323\275?\033$>\263\311\340\276\030\231\214>\216\246\271>so\232\276\207\371\223\276\026,`>I\316:=\361E\307\275y\347C>\333<\266\276$r\242>Q?\330>\032\312\326>e\034Y>\237\226\031?\006s\371\275+`\275\276F2}>O*\217>I\234\017\277\235\213\206>\301\246\357>\260\354R?\356\223\235\275\304\310\314;\273\376\317>8T\336>=R$>q\034\337\276s\251\245>80*\275\304\302\351>\274a\332>\021\360m=\250\226r>\324\254\217\2761$S?\264\351{>\326\374\375=!d\230\276\322\310\240\275wnC>Q\302\337>PR\311\276\001\264\213=\362h;\277u\322\003\276;5\026>\030\337\247\276\017\311\265\275<>\322=!\036O\274\363\345V\276*S~>\236Q\210\276}\364\333<\216\252\211?\300\253\002?:\203\337>\230,\204\276v\355\366\275\357p\274\276\336Vm>Ab >\027%\036>\231-\007?>\214\342>\364\354[\276\213\216\002?B\"\316\276\025b\004\277dge>!\3558=?\333\261\276S\035\246>^t\260>\245\3373>\037\243\264=([\220>\326\003j\275\207-D\276\202\033%?\322\233\334\274!\352\021\277\331\263\360>\177[\017>\032v\231>\314%t\276\372\263\271>\263\372\036\277\003:#>\226K:>\330\242`>\206\301\351\276\324?\223\276\275\253\230\276j\273\315;\321\213\271\275\376\227\317\276\217$Z>\241R\246\276\3444\206\276M/\006<\225i\225==\270\271\275\206\347\211\276\300oA?\353\321\216>\034\263\232\276\033\260\252<\345\2228\276\2254\215\276\253\007\374>Lw\211>tX?\276\342p\376\274\241\342,\276\032\'\362\276\356\272*>\004\335\302=e\2302?\025\023A>h9D\275sg\203\276v\037e>\006\336`\27620\327>\314\316z>\360\233\300=G\216\330>\203\223\270=\314!F=\263\343\005?\027\351\032?\312(\r\277\341\220\244\276\022o\375\275\017\347%>\204\000\220\275\356\277\016\274\306\"\311\274\223\027\201=$&H>(\177d>J\267\326=u\230y>\370\2362>o\250\202=\275\034\257>\331f\361\273\017\255\335=\232\217Q\276\270\035<>\"&\002=\373\017\236>=\035\277\275\001f\342=B5P=F\347\236\275\0078\211\275\313\321V>0\277\257\274\220\226\034\277XJw\275\314\370\265>X\364S\276\007\340y\276\240G\302\276x\361\366\276%\203\220\276\270G\337\275\363\356(>Z\000\230;\350\237\025\277\312\260\321\275U\365,\276\222I\r\277!\021<>\217.\347\276\301\220\366<\357\224g\276\366\312v\276\"m-\277\244\265\255\276\207+\'\276i\021}>\350\213X\276\007K\007?_7\247\276Q\373\275\276\222\017\272>w\001\211\276\t\376\370\276\033\247p\276\210\237\235>5\t\376\275\230\251\r?\014N$?\336Mn=78\240\276\315B\026\276\262\265\342=O!\333>\254\303\251\276\334\363\273>f\037O\275q/\305=\256\252\221>\242\225\310\276\331\032\225\276\031)\234>\265&\n\277p\301t\276\246\023\267=\233\205\002=\375\301\220=\342\r\330\276\017\3671>\346\212\205>\036\230\222\277\244\005 \277[{\345\276\355z5>]\261\371\2768\375\336>d\322\266\276\273\312\305\275\310?\233\275\344\347\226>\253K\237\276\233\354\327\275\360>\034\276\321\026\215\275d[\221>\205x\203\276@\366\255>\014\313\301>\230\337 \276\30085=*\237\000?:\325Q>\021\026\240>\244\344\001\277\332\233<\275\021F\210>\335\215\210>\347,\311\276\234\340H>\370P\333=xb\\>+\347\364\276\302\207$\276;\275C\277\256(\037\276{\241\177\276\322\216\177>\032\014\252\275\343\217\377\276\346\277\246>r8\027\276m,\263\275\\H\371\276\030\323\261\276\"\367%\276%\2037\276\330\255\272>\037vD>[_\201\276\305\035\210\276\272\217\010>\217\225\213>\301\027\370\274j\312!\276up\224>0\'\325\2766h\277\275x\315\205<\252\263;\277\325\037\037/\276gN\r\276\237\315\\?M:6\276\317\242\214\275\005\033\341\274\306\370\366\276\303\247\255\276\204f\271\276W\342\374=\363U$>l\010\307>n\240#\276M;\236=\007\270\353>i\376\\\275\272\030\314\276\207MQ>\021k\036\276\206=t\274\016@\360\275\370<\354>C\022\007\276\2371\220<\030\007\222\275\217\373U>\317\2062\277&e\361\276\032\300\320\276\234\263\234\276\343|A>\024\251Z>\026H\220>\254\364\204\277\232j@\275\373\351\323\275I\347\"?\r\334\265\276\274hj\276\207p\002>\2238\255\276S`\244\276\007\210\032\276\327)1>\'\215o\276\374\234\252\276XI\007?\234+\274\276\325\337\230\276\343\365\237=\200\343H>\327\351\026\277\250\3643>;t\315>\266\246\323\276\024mv>\307*\266\275-\025\241>\226IB>\337H\257\276\'\361_\276\3308r>\242\235\351\276\237\227\376\275\354G\244=\\\364\320\2759\262P\276q\034\355<\005;\310;\363\335,\277\326\334\021\277\317\017s>W\033\036?\250\231\245>\274\344\247\276\327!\211=\203\325\n\277\237E\032\276B\020$?:\274w>\002%\264\2761\\\211>#I2>4\340U\277\365L\212\276\023\236\324\276\225I\017?\221\002R;,+J\275\031\262\200\276\177Q>\276\300\220\353\276s\260\226<\0074\213>\341\254\006>\264\216\223>\322+\230<\302Y\312=$\221$\275\352\220F\276O\253\222\275\314\255\216>BqN=\232\375\032\277Q\350\205>0\006l>Bj\217\275\254|\340\276\374\324\340\276^\252\204>\017\365\232\276{\005\304=h\021?\277\252$f>\232\231\211\275\234\306\273\276\250d\020\277\275\034\354\275\316\262\363\276\336\200<>\316~q\274\203\001~>\362g\344\276\274-L\276\330S\210>\034\221\037\276\027\214\017\275\204F\003\277\201\276\336>q=\244\273 \256\367\275\003\271\'\275F}\354=\007\377[\276\206\254\251\276\306\277\204\276\371\200\275\276L\270\004\277o\357Y\276FW\202\275Y\256\020>\326\354\303>\257\236\340>z\177\373=\242\354\204\276+\302a>\325\322\232\2763\231\027\277\024\266\324\276\274\262)?\000i\301\276I\214c\276\320\264\272>^\210f>:m\234>E\023\030\277~\n\027\277i\231#>?O\206?\273\032\256>s\365}>&\243\227>:\345\"\277\032\373\267=S\366\034\276\236$^>\253\207L\275\270\231d\271\2748\277\234A\253>p\225\364>\364\345==\3108\372>\0258J\276\234b\\\276g`\002?#\2124>\313\304\034>Y\221\252>\364\217F?$oX\275Yd%>b\'\334>\217\235\256\274<\365C>\231\203\037?\020w_? \314\224\276\357\223\201>6B\216>\016l=>\002\005f\276\246\010\304\275V\372\277\276\221\376|>\254\310\212\276s\2506\275\206\256\033?D\026X\276\243-K=N\362\253>\272\342\316;>\345\207>\311\030H\276\232\217\352\275/\234\201>\376I\225\276\027IH><\206\000=\002l\312>\317/\003?\203\242\205\276\347b\004=\322|\264>\260>\354\274\211\032\276\274\017\254\336\274B\031w>\007\333\346=\2511\223\276\014\324\303>\253\363!\277\266\265\220>|z3\276\026b@\277l\225\367>D\220f\275\203hp\276\300z\200\275\024a\325\275\274?\321>\206P\254=\300s\307\276\343\243\031\276r\362\377>^\326\203\275\177\\\373\276\321`\374=\3169\002\277\336\272\214\276\355\360*>\342<+\276#\373\013=\235v\010>\374\010\010>\006\023\336>\336(X\276N\350\000\277q6B>0\266\274\276\344\307/,\021F>K\303\2659\312\310=iN\026\277\t\r\314\273\232\000P=W\004y>\211\315\210>#\372\223>a\266\"?\247(\355=9T\026\277\274\226\225>\233\232\014>~`u>\324\251\355>P\177\335\276|!$?m``>Cs\024\275N\363\360>A\251\333<\335\342\255>|\204\312\276j\221\313>Y\367a?3%e>\246G3?\034\360h>UL\206>\226\353\023\275\256\232e\276\371~T\276\32181?\202Jx\276\250\333\337>(\342\215=J\345V\276\373\225\026\277\277\005\204\2765\322\t?\371\231p>x:\364>\037\222\313=&\\\276>\250\251\021?\340\332\200?v\225\340>\2725\357\275\222i\323\276\337\3562?\277\257\271\276\246\343\316>\013\241\370>\2261\271>F_\020=\306T\242>\030\362c>\301\361\222=\213\016\355>\350\256#\275_\274s\276MM\244\275\031YF\277\030\222F?\021F\310>\241\016\t\277n8\250>\365\372,?%\303\017?\353{\216>N\007\376>\214\243\r?\033j\227=\227\221/?_\220\225\276\177N\203\276d)\220=k\340\032\276\202B\014?\241\203\206>\315\026\267>\376\003\204>9\036h>$w\204\275b\243\207\276\323ff\276\006o\367=>\267\021>f\253l>\007<=?\341b9?u\225\245\276\347}\343>\252D\034\277\227\376Q\275\314{z\276_\334\301\276#\352\301<\r\224\275=Jhh\276\246\343\220>\005\3102\272\321@%\2759\201\362\275 !\026\276k\264\034>\373\022\375\276\\\350\021\275\325\221\253=,&\212>\0030\021>\0078I>\016\370^\277\256\341\236\276\201>\256=)*j=H\302\304\274E\2534>\351\031t\276\237\261=\276hz\205\276\016x\217\277\354_\330\276U1\214=\242U\374>\304m\241\276\354\001B\276\302u\234>[,\343=\306R\320=\307\323\322=\r\300\327\275\336G\020?J\314@\277N\246{\274\236\371\330\276\265W<\276\325G@>.\031s\276\337\327Y>J\215[\276@\277\261\276tA\253=A\306z\276\257\027R\2768[\245>\313Q\000\276\221\252\213>|@\275\275\246\037j<\276\310\243>\352\263}\276\343\343\\>\373\347Z\275\303\236\346>\230\216f\276E\002\275\275\327v >\024N\203>\371\211\016>mwb\275\375w`\276\227\016\022\277\024\266\370\276\224?d\274K\370R=N\373\335>\3559\241>\253\346\022\277\336E,\276m7\237=*\3446\276\321%?\276`\025\336\276x\234W\276l\307\246\275\353q{\276\221\263\222\276\204\350&?\001\356\201\276E\020\370>\362SD\275\021\344\301\276}G\001\277\215\nU\276\230\214\345<\331\"\245>F.\271\276\036\301\274>\3107\357=\n\275\004=~SO\276\016q\'=\253W.\326\367\266\276kr\004?\032J&\277N\241\313=B\017&?3\214\363\275\204nY=\370\255{>ZS\305<\016\021\217=\0008\264\274\374Ra;\016?\325>\356\213\262\276\034\336\315>\365\317\215\275\220M\013>)\013\t?\013\010\245\276\332\255\267>N\277\035?*d\031?\264k\271>\247\347\222\276\202\022\203\276\030^\023>\202|\361\276}\252=>\323\006\235>\340w<=,*\274>@\250\013>gy\323=\360\376f\276)\220\266=|\230\303<\362d\215>\245\337\361>\332\200M<\\L\t\275\251\010\315\276R\033\332>\003c\033?_\221\300>s\004\264\276\207&\361;,\016\023\277\rI\364\276\030\240\340\275\322L\036\273Vz\242\276\004\313\374=\320z\230>\347\232\220\276\030o$>hq\326>\344\357K>\177\257\327\276\027\370\241\276?\347G\276E\231\020>!-D\2765\377\003\276V\217a\276i\210\265>\017\022\215\275\325\272\317=\n{.\276\237a\314=\001;\037?\210\377\177\275\037\246\243\276\000\315\017\277=\350#?{\322\363>}x]\276\025%S>\370\356\223?\327y5\277\024\310\214\254\016R?\312\225\327>G\247|\276Hi\320>\374w\034>)x\033\277\314\202,?!!f<\031\2413>\316\377\316\274\374\277\247>\316[-\277\026\262\213>\334j\001\277i(\261;\265\363\247=\277\001\302\275\245\0312? ,\210\2757C\205\275Ne\333\261\377\006\276\352\030\030?\242H\341\276\257\020c\275\246\207@?\004\232\\\275\270\225/\276h\257\247\275I8\305\276\3752S?\264\016G\2752\377|?\246\005\313<\375\306\270\276\311J\014\277}\005\034\276!D\004?\335\363V\276K\312\021=x\n\001?\377\004\321\276O\034>\277G\036V?v\251$\277\217\r\267<\222\356\303=\243\250\371>\022\215\031>\034\353\252\276\354P\303=]F0>\304\343\246>R\370\305\276\361\371z\276\336\311\202>\213\333Q?,\255m>w\037\016\276\361\303\200\2768\223\221>\001\027B?\254\376\266>\272\005\234\276+\322\222\276\257?\245\275\024\314\244\276\034\227\221=\253$Q>\322\272\027\276|\272\336=.v\342\273I^\260>!\371`\276U3\245\276\023c\327\276\355\017\005>\312\207\003\274\360\227\225=}\177\027\277\016A,>E\326\024?\300\247\334\276\n\003\330=\242\305\231\276f\252P>::\221=S\237,><\013\233\276\021\225\300<\014f\360=\212y\271>\373\316L\275\313w\277=\230\265\321\276+c\326\276\021\007\270\275\217H\036\276\230m\223>a\211v>\265\t\235=!WT>\002\365\370=9\242=>\257\310L=\274\232\324\276\203\332\214>\200J\370>\243\344\026>\230\0044?5\354j\277\031\213|?\237i\301>\213\227\002\277\205\350\005<\212c\003\277\026\234\202\276\363\343^\276\363\3265\277\303\306=>\335\236\036=^g\327\276\321\311\014<\013\020\277\275\334(T>\341@\277\276\331~\217;\241\375\221\276t\336\226>\242w)>\r\350d\276\334Z\004?l\236S>\001w\334<\021\212P?np:\276\007\207c\275\361\335\332>\271\355\005\277\310\304j\277\221\240.>\006\302\220\274\361\206\345\276\337\023l\274\311\325\336>]/:\276\223ed>\0258\224>\343\010\\\276^UY\277\216\257F\277\241\n\234\275:\260\014>Z\304\343\276\350\323\026\276gK\313\276\r\352\242>\025\"\231\275\235\262Y\275\3434\351\275zn\230\275\026\300\004>6D\224\276q\343\031\276P\"\003\272\014R\344\276\332\346\343>\314\363:>\355\032\214\275!Zz\275\003n\256\275k\307V>`\016\372>\3511B?\031G\305>\347\274\213\276A\235\213>\025\232\362>I\272\312>\217\324\031\277\314\037\373\276\340\365\222\276\225\243\300>\201L\006>Y\325\206\276\'\027\324=\365\214\217\274}\2066\277=\"<\274\241\326\254>\024\016#\276M:@?|\204->\177\252\">@\225L\276$\001\221>\263[\256>\234\234\347\275\341o\205=p\212\304\275\177uI>\360:\271=\260\351*\277\336.\032>]\243\337>\210\2647>\351z\025\276\203\233\344>\324\261\224\276\214\276\006\277MS\233\275\007\340\035?+\257\231=\211\211\242<\320p\236>\360\267\023\276s\253\337=\357;\n?\311\313\253>\341e\'?\372\232\323\276*\240\277\274z\331\000\275\366\200\005>\005\241\214>\'\317<\276\013XH\276\313\245\262>m\364\214\275\200\213{\276Q\310\342>h2[\275Kp\307>\261E\225>\275{\203\275T\311\006?B\314\207\276]\343\222>u\243\264=\334\000\016>R\204\265;`\004:>I\256\261>\034\350\310=YN(\277&y\263\276\205\005\256\275\345\277\305=\014\275\204>=\250\262\276\211&\002?\002\272\324>`K\003=\332\024\315=\316\322\201\276\221\306y>\264\2035\276J4A\276I\222\"\276<\371\221\276v\302\250>\tS\022\277\020\t8\276*N\005?\301\371\316=\2651q\276\361\353\177\275\240\300\027>\n\275\226\275@\367\240>\254\325\325\276\234\353\222\276\376\022\317>\327\243\302>\006\244\203\276\nYa\2766\262F\276\316\274?\275f2n\276\0052\375>\312\372\223\276\257@\322=\020\2050?)6`>\257\206\255\274 J\234\276pK\031?\226M\314\275\346K\215>\030\210_>\276\020\242\276\375\311#?\210\360\270>ap\262=\332\027\007?y\224j\277\367\000\343\275\330\343\333\276\361\266v?\333\375\334\276)\262\343\275\205M\237\276\354\263-\277#\261\206\276g\275\"?\324#\217\276\007k\234>v\r5\277Mt\217>(J4?\023\270\252\276\247\376n=w\0370\2778\216\264=\270^\326=\034\000\304\274\313\300\010\2767\030$\277f\373\301\276\214\250\307\276\235\201\266<\351\3704\274\275\310\374>\261n\231>Qf(>-\346\331\276\234\227\n\276E\310h>\\\251\303>\340mC\277j\034\213>:;\003>\341\313\227>\377\207\327\276\202\3008\276\311\331\252\276\014\001p\276\276*\355=o+\003\277\010\227\030\271.\204\200\276\271;A\277\332\232\355\276\224\370\252<\240\003\324=\233\374\341\276|\371Y>F:\214\277\240\270\027\343k=`\343\202\277\221(\006?*>\254\275\370\363\366\276\3108\273?5\036\002?\2202u\277\027\025\303=\330\253\366\2762\177\313=^\371E\275\225\202\t\277\226\253R\277\252\241\332\276\363\346\301>\362\204x>\245\020k\277\\\247\216?\323U\005?!\013\363=\243\363\277\275[\265\021\277\177+\231<\343\300G\275d\327\211=\205\320#>r\320\201=\t\207\302\274\035s\"\275M\025\201>\032\263k>\"\265\212>k\035^\2763\207E?\023\365\226\276J>\035?C\260&>\0361@?\rG\221\275\233\223[\276\255\272_>5#\021\276\001\037\032>kn\364\276j\030\356=q\2611>\334\226u\277\201\200\033\276w+\253\276\236,\265\275\315\361\227=\365,-\276>\030(>\014E\272=\265\214\007\274o\235\264\273\0050\277\276\036\025\322\275\317\247\267\276\276\261\033>|D\271\272?l\257\275\310\304\263>w\024\210>\201\0215\276\266\231\205\274>\306J\277\340\302R>W\313`>s\241\017?\034\357\335\275s\026n>5\352r>=\356\327=L\216\371\276\377O\333\276\262\013\274\275\037\232/\275z\342\200>\267e\304\276\222\027\365\276\272\352\303\276\267l\003\275\373H\'=L\256\251\276\006\025$\276?1\005\276\3175\021\275\265\357\200=p\021\367>E;\304>\310\337\372\275S\316Z>>p&\276]\346O>P\353\352>$\314P\277h\361\213>q{\242>\246\353\213>\3507O<\220.\312\276\"\\\n\277\035\007g>\352N\277\276\335\225\222>\306\303\215\276\002\021\">([\200\276\341 \016?\365hI=,I\222>\322\334\221\275/AX\276PP\220=\r\306_\276\313@6\277\274\235\276;x\222\344>79G>\\\223\235\274ai\216=~\321<\276\020w\203\275\004&\375\276\260E\205\274c\264B\276\037\0148\277\366@\016?\225{\372>\021O0\277\"\210\313;_\327\032?\217\310\021\276#\264\225>\276\225u\275u\022\340\275\236\350\022?1x\304>\253`o\276\231\216,=\016\315\313\275F/\"\2760_\006\275\255\r<\276\236%X>\004\036;?\374g\024\276\361\211\020?\037^\341\275\373c\361\276\250\210\274>g\020\261\275\230\252\017\275\270b6>\225+\305\276\351\377\027=Z\257\237\276\251\274\273\275\250\372\n\276;\343(=\243/\032\277\2232\202Q\001\211>\014O\213\276\331\304\367><\227v>P\302\267\276\340v\341:\313\376\200>KeM\275H\375\235\275\221\3121\275C\312h>KN\344\276\333Fv>\177\344I<\232\205]>`E\206\274\247Q6?\225\224\200\275\251\250n\276\312\271\207>\275\260Z>\267\242#?\000\256\256>\252\372\370\274\374\354\267\275f\267Y>\217M\005>\332\343\311;\0341@<\007` \276#\370N=\222k\023?\330^\243\276\217\301q\276T\337\033\276\354]\232\276F\310|>\322\241\366\276\342qq\276\010j\004\277\t\247\226=f\327\\\275\340\221\355>z\235^\276\034\225\200?\347r#>V\006\"\276\316\257\367<.\037\023\277n\375\024\276q\231\320\274\ri\320>^E/\277eLx>UF_\276\264A\240>\320\000\336=\033n\272f\360\004>\305\276\220=Y\270\306>l\202\336\275\3062\213I\027\200>ne4>\372\022\264\273\304\226t>\343\260-\276\271z\222=\320OT>\203o\022?PF\247\276\220\tl>K\246\016\275Y_\264\276\224\212\020?;=\304\275\323\023g>G/\366\276\332\365\372=\023Hu\276\004q\344\276-05>\266\304\206>F\315\342>>Eh\277\013\026\255=k\323\273\275S7\225>\032\333\367=\000\032\255>=\216j>c\377\203\274\273\245\266\276k\035\232\275\315b\347\275\342\234\021\276\311\037\247\276\205f%>\r\371\256\276\rde\276Q|Q\276\030>$>\310\035\336>6\327\031>\354\311\237\276\370\024\000?\353\340\247>\001?\r?}a\026>~K\256\276\320\312m\276\250\351\031\276\360@\314\276\375S\217>Kph\276C\365\005?\026\3419=\3341\017\276 \034\">\n\370\340\276Q\321\302\276#\351\234\276|\306\222>I\354\\=\376\301\223>0\026\014>n~5>\260\331\226\275\232E\346=1\270b=ju\346\274\325\377G>\222\003/\277\231\031\270\276C\213\004\275\002\264\351>7\262s=\343_\265\273\307\344\323>\212\254\177;\254\202T\276\376\325\002\276\231Md\276\324R\341<\217\371\212\277q\241\037\277\363\252.>\026\253\033>\213\217+=QG\266\275\237\274\332=\210\266\302>\314\312\350>w\305\013?\352 \"\275\353tE\276\333\035\246>.\001\304\276G\2563\275\030\013.>\234Ew\277\031\256\221\275\246\037\261\276i\206\203\276\306\231 ?9\207\205=\217\312+\276\'<4\277\177\221\234\276\334\204Z>\311F\267>\377\257C\277\262\333\024\2777\032\306\276\333\322\336=UJ\036>\357[\255\275\022\335v>\321\027\250<\223\002\224\274\341\311\373\276/\312\223>5\224\2422\342\205\275\227\327\336\275\033e\234>\350RT\275\001\204\023\277\374\037J\276B\333\357\274\201\376\023\277i\241_\276{\024J>m\253\226\277-\033\002\277\324`\274\276\275\254\247>d\016\021\277v4\324\274\000\240 \277@53>\240\240G\276\342\022(\277,c\004\277\243\027\271=\222\216?\276\200yL\2760\'\214\275\307_W\277kO\323>r\036\274=\340\234&?\327*\202>\376\201&\277\244I)\276gn\366\276\271\211\343\276\350\004\025\276\377!R>\360\350\321=\256\\\220\276~\367*\276\263\362:>\010\225\024\277\260\315\260>\216yo>(\255Y?\363\242\375>\253k\242=N\366r>\375f\220\275\250\206->\006[\210\276s.\000\276\004\224\024>\034zn>\345\377\225>\236\323%\277\327\253\034\276\347\032\325\276oF\245=\346\345`\276\272T\314=\377\342X\276\037\220\310>\332\262v\275\006\377\313>\003G\260=\203\246T\204>\215\274\232\301\217\276],\274>k~\014\277\340\n\033\277\026H\307\275\313\371\240\276\261\232\"\275\230\253\300\276\033B\327>oz2\276\315\254\"\274\253\243\250\275F\275=\276\034\001\n\2779\t\317\275\264|\277>j:V\277\345\336\346\276\241\022\017?A5\221>\030w\273\275fJ\203\275\003\347:\277}\212\020?\226\243x\276\333P\370>Y\375\267\276\021P\312\276\373\035\250>P\266\330\276\355\317\205\276\027WA\000>\225^+?\010\206\266>\253^E>\020\244\344\275|\271\303\276Iu\017\277\\\233\303\274n_\212\275#\327\337\275\364P\210\276\252\014&?\374\312\346>g\307\325=I\250\367\276\005\373\232\276\364\000\013\277R\300\031\276-?\305>\024\244\200\276\366<\337\275\332M\222\275\367\330\017>\353\0322\276\303y~\276Sr\336\276C\373\033=\367\366\263\276\266\302\021\276\347\376\305>\224Z\032?\312\332\252>\236\351\350=\374\266\202>\243w\013\2771U\002\277<\325*\2764\341\035?=4\210\276\t=\220\276\354q\010\276\020\311\252>\376!\202=\232S\200>\251\360\377\276\274\256(\276:X\257\276\241\344f\276oL\020?b\214\010=b\373\265\276\315~\027\276\'\024o>w\351]\277\373i\237>\'\331k>Fe\303\276)\341\\>\341\374\356>\301|\367=P,\'>\317}]>\357~\376;\254\311\025\277v\340\316=\223\237 \277\223\204\036>{\261A>\256\214\240>\nH4?\033\254\333=\363#\236>n\036\335=&\021\004>\313\'\021?\031\257\016>\260\367\303>\334\034\264=\255H\310>\0033\004=LZ\245\275\231\313M=r\022\207>B\2016>~\277\241>\n\227\003\277\366\224\224\276\031\013v?\201b\225>p\030k\276\333s9\276\302\360\004>.!\350\276\261\237O\276\202\2544\276\233#\205>\3607\213>J\316\343\275/\331\002=\265m)>\013C\276>\203Bp\275C\314J\276\263\257\013\277M\232m?O\200d\275\222\220\025\277{\032Q\276\n\353\254?\233\256\204?BES<\3412S\276\311{7>(\016(=2\235b\275\030\331\350=)\314\260\276$\310\311>\325p#?\3469\005?\206s\033\276\375QG>\233x\320\276^\223\325\275\036I\032>5\364\263=\360\366\220>,\336H>B\334\267>)Q\246=\021\254\316>\226y\014\275R\230\235>\213\030F>\232\026\366>K\367\370\276<\031\270=b\367\306\276\321l\003?\276\006L\274\342\334\321\276\303-\310\276\220X\315>CM\n=\273\001\210=\242&v>/%\235\276S\243$>-F\256\276\306\334\243>\002\350\306\276Q\244C=RQ@>\257\241\354>\357\243@?%\325\013?\360\030r=k\201\027>T\256n>\003;\321\274\301\342\370\275\341J1=\300*\362\273{\340\206>09|\274D\303\342>\332\014\0024J|==\373F<\237e^\276>\340\233=1\t\264\276[:\t\277\355\207\004\277\027G\367\275\304+\370=M6\360=\256\253\372\274\211\244\234>s\337\315\276]\013^\275\231\335\005\275V\003\201\276D?\306=\247=\305\276\0300\313\274>\037\237>\261\256\023?\273\t\200\276\235F\240\276e\332\345>a\211p>m\247\247\274H\225\002?\361\274\300\276\232P\257>^\247\346\276q\253{\276\315\033Z>\312_\027\276 \337\210>\031`\003<\242g\225>\356<\035=\236\343\r\2754U\021\276\213\335c>\353O\017\277\364\243\345\275l\224\217>e\020\034\2765\006\031>m\2263\276p\223\361\275\272\335\274\276H>J\276\372N\002>\306gl>\201\3452>\272\\\211\275;O\003>\250\255\274>\302>2>\030b\233=i\2668>\362\024\375\276\240\241\234>9L4\276M7\230=\3459\275\276;zw>\007s\021\276O;2\276D\260v\275\370S\263>\313\034 \276(\007\025\276d4\005>\001\242e;\347\304\234=\263,L>\224\215\026?\270~\355<\2610\035\276\341R\"\276V\360\272\276o\335m\275R\007A\276\342\222\323\276J\351\202>&\352\006=\251(\000>\321\271v>5\200\243>\317\300\241\276\232x\213\204\023\000\276jo\217=\032\374Z\276\016\350:\274\270Fw\367>\352s\t?fK\233\276\010>Y\276d,\337>a\370K>i\350\023\276\213b\000\277\232\227\254\275K\237a>\314\221+>\255I\201\277m\260\335\276\010\357p\276\347-!>\302\\U=\250\240 ?\002\276k=\2506\300>\017\313\006\277\342\376\003\277\226\020\231\275&\304X\275=\302\032\276 \341\256\2766\234\214?\226L\032\276\323\257\305\276H\306\316\276\255\344\333\276f\n\002\277)\344Y\277@\361\257\275\342#\240\2767\344\257=\206\235\364=\265c\005\277\334\347A\276j\216\201>\t\352\264\276={\253\276\203\331{\276\021\266{\276f\341M\277:\323\262\276\332\034\271\276\376\231\316\275UR\\\276\216\277\253\2760M\221\276\253A\016\276\270\233\254\276\201\352\243\276\365\372\273\274\361\346\214>\221\202\261>\213\317V\275\270\2253>\335~}\276E\316\245=\374\032\245<\027\034\027\277\366\325\t\276\350X\346>\215D<>\013\222\022\276W\272g>\343\206\351\276\365r\221\276\177e\016\276\014\025d\276\314\217B\276\255h\023?\363Q\004\276$\211=\277\2433L\277}\366\332=\335\024t\276\354\037\267\276\323\311\242=\343\337\360>\213\351X\276\356\274:>\206\242\307\275\036\205\370\276ig\207\275\223\311\264=\201\000\374\276\255WB\276O\021u>\031\335$>b@\277\276\267_\303\275}4\252>H\323\315\275z\264K\2765*\327\275\245N\351;T\261\306\275\242I\034\276\202\300T?\004\n\002\277\364\227J\277f\031/\276\270\213\207\277;\334a>\347\247 =\334\372\037?Db\342\276\214_\304\276\035\315\005\274\017\007\312=\334\232\313\276-\345M=\352\344\005\276\365U\004\277\276[\202=^2W\277\202\332\235\275??\320>a\310\363=JT\245\274\374\324u\276\353\"`\276C\345^\276\350`\361=d\326\326\276\3119\376=\340\332%\277D\360\314\276A\226\277\275\334\013=\276\327\035\212\275\261\033!\275m@\277\276\336\243\322>`\323\360\276\341\344\263>\272,\256\276\216v\354>\334\301\260<\213[\237\275\234\\:\276\215\363V\276\276~\320\274\357\226\r\276%\357s>\021,/>\3078\237=\036\202g:\255\340\t\276\326\020\324>5\223\357>,\340n\274)\366\230\276\267\230\325\276\303\307\233\276\236<\n>S\217,\276\227\253\030>\327\261\016\2768\274Q\276\022\324\212=\331&\364\276\307;\007?\025k\200>IKg>\212\371\n;\331\204\366\276\305d\026?\251\242\351\274X\204\367\031\244\276>\014P\010>\232Y\274\276\030%`\276\366O\342\275\335(\216\274\023Q\242\276u\236\356\274S\n3?\322\354\002\277\256\343z\27657\">\031G\235>:\n\013\277\344?K\275p\027\272>\267\331_>J\024\264\276Ei\202\277P\n\311\275\307\341\265=\363\272:=\347h\025\276\376\223/>(6\216\276\017\200%=\202\326\367\276\337\2435>\203\3304=\212\375\031?rN\232=%\343\253<\016\220\207>a\361\247\276\311\204\307\276\311\000\032\277+\323,\276\357\007\334=\t!\331>\330~\203\275\r\376r>\027y\206=\261AP\276\014\t\213\276\312{t\276\250\374H=\220l7\2771\200\247\276wxL\276\310\217\373>\000\256d\277\355\376\366\271G@\330\276\351\207\023\277\204\035h\276O\n\213\276\002\300*\277\220}\327=ov*=\204\302\221\276\362\010\312\275\325 \022>J*W\277X\244\315>\365\023\333\275\004k\036?\211\373\353\276\316x\000?:\372\031\276R\367\032>\034\314\204>\\\r\304=\260\333\261=\002\227\245\276\223\244\326=\347\206\000\276#]1\276v3\013\277\024p\267\275U\276-\276\020p\240>\353Z2\276\321!\027?aV\t?:\350\377\275Y\246\016>\337\271Z\276\2167\373\276\351\222 \275v\367\016\275\037fF>\226\335\200\275d\362\r?\263w\250>4K\204\276\346\'\264\275T\342\014\277\3051\227\277Q\205\204\276\317/\006\277\204-\323\275\235\363l>9\264\r?\316D\207=!\004\023\276\277\2459\275\246\346o=?k\245\276P\"\177>\360\030\216>_\316;\277\232\3576\277\317\327b>=%\227\2754o\005s4\203\276Xp\346=\227\002\267\275\207N\207\277\n\226E>\247@f\275\222\250G?\274\023\205>\324\304\367\2760%\377=(\252\354\276\230[r>\213Y>\276\246P\030\276y\035\365>\020\001\234=\0011\224\275\2053\225>\2641\210>b\241\022\276\376\035\222\276\001*\217>9zT\277s\266x>7\236\007\277\332\351\344\274l\261\236>z]\253\275HP\361\275\177\277\200=\010xU>\235\211\256\276A\366Y=\210Q\371>\220<,=_\036\303\274>=\236>\356\312\200\275\314\232\013>\317\236\262>\005\347\322\275\035\033\354\276\235g\270\276}\035\235>\003u\261\276\276F\345\276\221,\004?2\233\236\274\377\\\302=c\206I\273\311\351\351\275\340\300\322\276\345\324\242\276\242\341\035=\206\212\211=Ry\270>FI\213\2756\026\255>e\224\335>\023\312\367\274\217\327G\276\305\031 >\273\237\310>|_\223=\357@\032\2744=\017\275\030\237\266\276M\372\277>\037\0267\277\255,M\276N\021\006\277#,\017\276*7p>\221\224\320<\264~\033\277\364e\203\276}5\302=&c\341>\034\022\"?\010\006\224\276\214H\217>\303\3149\276k\271\322\2760\311\037=\332D\324>l0)?\303\323o?RQ\027\276\232\3126?\351,\n=\265n\016\277@[l\276n\025\346=b%z\276\267\265\267>y8\276=\352\264\366=\277\255\343\276\357\227\226\275q\001^?[5\006?\273d\256<\245\004\363\276a\366\376=N`\237>^\017\332=\246\347\260\276\325\375;\277gA\017?5`\301\276\317I\264\276\266\213\270>\370b\007>w\235\342\276\375\363y>]\244\t?*\270\307>\214>r=N\232\020>\324k\005\277\233\001\275=\310\215\253>\274\351/\277N\235\231\276\271\373\367\275\t\3709\277Zq6?\253\311c>\231\3602>q\235S?\300\"\202\273\001oj>\032k\256;\214\005%=_\207\263\276\213\025\334>\332\033\026>\014y\010\277\214i\270;\310\212\026\275|2\300>\'\353Y=\020\312\022\276\\R\333>;`6\276\302\201\346\276\306Z\267;-\243C?\204\216\264>\271\277\243\276\024\250\261>K\004:\275\312\213\234\276\337\324\230\276V\331\211\276}\215a\276\272\200\007\277{+S\277\375\203\366<\2059\212=\006F\207<\352H\337>uM\004\276Ec\266\276G\325\274>\3401\240\276H\002Y>\014\302\037D\217>\303\031\313\274}U\324>\262X\256\274e\260\225=\235+K?:8v\276\020w\216\276\310\001\203\274}w\355>\231\225\267\276\316b$?\326\303\376\275\373\363\273\276\016*\000\276i~\365\276\313\2527?\214\242G>\245\256\022>\257\223=?\243\330\313>\216\224\227>,\211\032\276\367\014\246>\266\335\331\276%|\005\276\310|\222>\304Ax\276\"\030\306<\004%\373>\371\245\222\274ss\005\276\374G\216\274 \t\227=\272\373`>\206\0334>B\376\013\276\004\216\211>H}\272>,D\217\276\335\217\231>\357\340\370>~M\257\273\246j\231>\275\026~\275W%\203\274RA\372\276]H\036?\373\344\267>\"C\324=\255\006\003=\212\242\325\275\333\272\265=Z#\257\276\366Q\034<\301\233\232>\206\225\223\276i}\246\225EL\277\\\203\207\275\364\330\204>\311\035\004\2766S)\277%\257\023\2774\276\233=}\236\363\276o\347\004>\010\375\243:e9\340\274\230\003\000\276\345K\227?\261\025\346\275U\261\343\276\367\360\230\2761\217r\276(\226\336\275\212\224\234\275\005\263\013\277\206\320\261>p\245}<\313[\032\277\353\362Y\276H\321\020\277\246\224\373\276Lu3\277\036\304\354<\267$\245=\331$\354>\013\257!>Ql\312=\031\320\232\276\272{\010?\021i\013=#|\207\276\020I\266\275\212\266\356\276\217o-<\216\336\303>_u\304=\205\006\234\276-\276B\276\361X\221>\251P\316\276\371\321\250<\366\363C\277r\213\005\276Z\277\362\273/B/?W\214\361=\247P\254=\207)\254\276\364\344\252\276\274mC>i\327\204<\214L\376\275\267\306\361\230\341\360<\000\246\003>\235Qt=\002\030\305\2765\233\033\277\r{r<:\337D\274%\3026\275\273\032z\276\177\326E>\3523\251\276\315qm>U\376<\276\327p\024\276\370\221\310\276v\306\227\276&\t\025\277-\t\302>\2139{\276\262b\272=IX6?\312$!\275\217\251\030>qY\230\276\361p<\277\030\365\375=#\000\304\274\036]\036>\2624x>\335\200\335\276\314X\216>E\360:\275L\335\023\277e\373\201=.\276\225=\304\036\233\276\223L3>\202\326\210\276\034\205Z\276\316\374~>h:q\276\007\222\357=\354\371t>\226m\305>\240\341t\276\262l[\2768\347\216\276~\345\373\275.\016K\277\374\207)<~\224\367=\206^\t\277c\377k\275JR\202\276\277\354~\276/\030l\277x\360\262\276<\307\372\276\364\024\314\276\323\002\252<\376%h\277TL\301>\006D\022>\342\001\001>P\034\030\277\026\330\214>\246\240\230\276\014w\230>XL\023\277\304H5\277\307\006\203\277%\267\206=\220i\'\276\242G\017=\031\354U>\'\372\377\275V\000\225=8M\304\276\261\224\"=\200\315\355\275X{K\275\270\024\316\276\312A~=\211\311[\276\036X\376=\2022\333;\307\006h\276\037J\022\276\270\231\206>\267LF\277\010\362\034\275\330\230\224\276\315\025\255=\210\311\233\276O\036\362\275}\277->$\020\355>\210\317\322\276\365\232\375\2764\200\006<\036(\223\276\0350\321=\361\026\\\275\373>l>\274O\014\277\220\232\307\276K~\245>\037\274\305\275@-p\276\264\220\321\275\3657\273>\266\267\234>s<\013\276B\247\307=;\212\n\2774@\220\275\226(\022=\325\330\231\276?\r\027>Y%\303>\231N\340>d\036\336\276\375\t\'>=U\226>\256\027f\275\204vn\276\247\270Y\276\242\250\347\274\342 }\275a\362\327:\342\252\250\274o\001\236>\030\322\034\276v\032?>>\373\240\276\243\3015=\006\0305\275U+\210\276\355\253\310=\353>\216>7\316\270b\341\305=\002\261*>\345\256o\276A\315\r?\323\201\033?\312\017\003?\0131\204\276\230<\034\276\240`\005\277\0141\374>\\\335\255=\334\362s>m\332\202?`\233\201>\367 \260>6Q\"?\377\242\341\274\375p\205\274\205\362\221>\n\310\304\275)\265\035\276S\265\240\275\246\261\236>\273\010\244>\017kh\277\250\334\037=\t\251\r\277U\354I=!\232\306=\272\013N\276\263p\\>*c\020\276)>7aoh\276cW\254>\213\352\t?\302\267\356\276\252\327\252=\332L\344>\347`\215\276a\270\337>8\025\014\277\204\235\216\276/\367\375>g\310\377\2761\244\020\277\234g\224\275\0260\006\277\213\234\264\276\\\327\021?\001\271/\276J\266\316\276H^\024\275\251\213\037\276[\276\252\276]\242Z>6\217\273\276p\016\261>\334\034\233\276\224.]\277F\310\222\274\341Ld>\357w\334\275t\375\362\2757\370\004\277\373\002\261\276!\366\271\276\222\265\252\276\013\275\253\276\234J\261\276\325\233}>{\274\r\277\234\243\233\276\351\265\033\276[c[>\252\322\010\277-_\254\2758\371\310>\306\346\342>\261\236\326=5\341\211>\330N\n\276\332*>\276v\346\230\276Fm#\316\262\226>\347\\\022?\tZ\375<\350\177\325=\363\207\327\276~\027q\275\322m\007\276\004\366\016\275r\017\021\277\022hB=*\331\247\276S\207\266\276\327\362\014\277\242-\007?U\372\t\277;\036h\276KA\032\277\342mQ=SZn>\224B\245>)|W=,\223\335\273\031\251\210\277\246F\273\274\316lC\276\021\301O<6\007\240\276\016\256\301>\361\255`\2756i\277\275\241\261\337=YZ\'=\t\236\322>\360\373\203\275gc#\277?\324\021\277&\374\352\276\002\376*\277Iw\227\276\246\004\005?}\347\330\275\260?\345\274W\316\231\275\t\2657>\355k\215\274\326g\177\276\266U\366\275\245\337\325;\034\267\373= \255\201=L\010\020\276\207\300\373<\022f\222=\367\207\310\276\036+\251\276|J\330>\253\t0\275\033\014\240\276\202A9>\020e\t?\000\222\227>\301$\301\275kp$\276\261\247\267>Y\212\316\253\014G<\000\004\256>k#\336>\002\261\366\334x\346\274\314\3522\275\362\3762>\236\006\030\276E5\353>\224\2509=\032\025\016?eQ\211\276r\023W\2765n-\276\267\356\201>oi\304\274\257\334\230\275\323<%>\205\"\016\277\037\362\034>\3276>>nI\001?\345\376 \276r\021\315=O\'];(\314\213\276$\216\325\276\377\263\244>\350\331\342\273F\366\374>\277O2>+\346d>\013\021\031\275(\336\t\275\261T\364\275\2025\235<\341;\000?O\303f\276yY\001\276z8:\276\235\320\212=,_\250\276\311\377 ?\272?9\276\201\365\227=\342[\177\276\"\344\230\234.\276\314\003y>\335\317\362\276\236\342$\277\213\356\217\276~\025\246\276q\t\323\276V!\272>\205\225\274\275\312\310|>\226\214\247\275\361\335\031?\335\021\323\276\177v\334=\2524u=\274\247d\276\2271A\276\362\271%?\3320m>,U\022\277&\340\261>\225n\024?\347\2454?\355\371\234\276C\036&?i\3219\274\354\017\202>\'\371\344\275T\2105<\037\003C>nJp\276F\216I>\016#\374\275\035\304\202=\016\256N?\345{\354>\377\226\007\277\267\324\202>E\335,\277\177\311~>\215\260\'\277\311\244>?\217\026\025\2771\023\343\276#\370\032=\032\351p?|2E>\345\361\242\275\013\251\210\276d\237~>+\023\023?t\343K=\317\272:>\025^\364\276\301s\366\273\270\3218\277\231\'5\276\224K\276>\027\327\r?\237}\355\275L\321L>\360\0363\276)\355@\276A\237\200?\210)\005?n\335\n?\225\374\004>\216P\220>\013\363#=KwG\274J\002\270=\314\332\366\275\204\007Q>E\343\">\361\217\220\276\261\217\234\276\034\345\272\275mE\232\276\013\023`>\263\275\226?\330VS\275}\371\303=\213\251\342;\030\032\340>\377\361\245>\323}\202\275\013\365\r\276\314Zp\276\275\333K\276\254\003\014\275\347 \"?}\202\250=\336Y\206\274\034\222M?!\321\210\276\373u\314=\237\022\022\276\020\354Z\276\277.\004?\343\355\245>+aj>F\031\"\276\262[(>\371X\217>\033\320\005?\322Y6\276\270\271(=\030\261\375\276\033\367[>\"\333\311:g^`\276wvK\275-\316\306=Bq=<\205iU>\377\3653>\357\005\242=\223%+\276\307s\313=\312\2603>\035c\033\276{D/\276\334]\033\276\273\001f\275\372}\014;\301aw>|\316U\276\274\365\257>Ct\370>\272\344\227\276V7\026\277X\272<\275\242\207\343>\035@\324\275\343\276\227=!\203B\276\372]d\276\216\273\233\276\006:\232>\3642\275=G\325\227\2763\350\001?\n\307\017>\275RF<\032e\321\275\253\366\225\276({\362<\nU\3464\025Y>\205\000\030=\213\217\022=\206\306\017?J\237\031=H\022\r\277\310\342\240\275\205@\224\276\3524\244\276gw\364\276\223[!?K4\024=h\007\341>m[\251>\320\215+>\006\253\357\276\212\322\233\276K\200\005>m\336\r>{\242\243>Y\021\213>b\327x\2767<\354\275\004\331\322\276;\320?= ,\361\274\356d\027?w\035\330>\313\224V\277#Q\345\276s3\257\277\263\240\001G\350\257\276\032\014\312\276i\311\212\276\316\0212\273\341\220\020\277k\300\355\275)9h>J\360\201\277PD&\276\304\313\371>\340\277\000\277\255\240\366=\230\006\217>\3675\376\275\032\026t\276\344\213\235\276d>\241\276G3\247\276o\221q\276}\275\332\276\361\264\315\276w\010\034\276L\305\315[\340\032\276n\254<>\326\351T\277\214\202\\\277n\202\315\276\256\rt\276i!)\277D\267\276>c\246\312\275\305\255\234>\371\243\003?\221\364\211\277g\'\322>\314g\216>\205\221\204\276\2257\231>\303\301-\277Y\027\246\276\302QW\276\376X\200>w\325\261>\333\361\n?\331\303\017\277\247H\240>\346\365\036\277\211x\230\276~\273a\276\237\035\037\277\344\361\205=\266\373\031h6\r>7\271\323\276\252\366\237\277\335\023\211\275)\360\217\277\241\225\322>\371~\251\276a\005\255\276\246\273\311\276\214\261\247=t\347!\277\201\300\037\277\333\251\262\275\307mC;T\230\326\276og+\2742Y\205\275:\274\317\276)G\365>\322\032\350=\304\345\'>\242\033\232\275\316\034\013>O\311\020\277\350\201\314\276\330\260\\=X\337\376>H\213\r?\272\245j\276\210p\234>\000\332O\276\330\034\305=\320\177\324<(c\003=\\a\223\276\n\206\211\276UaW\276\273\314\261=\313\300\037=\'j/\276\242\223\n?\221G+\276MMP>P\2318\273u\354\204>\210\177\022?\331\034D\276\002\214p>6\365\270;\313v\334\272\032\010\006\276(\322\301<\352\325\006\277\255\331\024?\201\017\303\276%Y\310>h\037\242>\n\266\326\276\026\353\025\276\0275:\276V\021\304<\223p\233=d\314\214=\001+t> \273j>\241o\271>t\222\326<\033\rD>\t\354h<\333B\203\275\212\254\351\275\224>?>R\217\357\276\325\326!\275\003_\372\276Z\317\351\276\273d\213=\262\226\203>C\227\026?\335\335K\275/x\252=C\246E>\275mB\276\222N\253\276\242\217\257>i\307\275\276\345c\022\274o\340.\275O\320\317<-\003&?\262\261s>r\177z\276\271*\375\274R\367\250\276\220\273\260\276m-\304>~=\203><\361\241\276\300N\332>`;\203\276\362\227\316\276\307C\216>ZXc>\005>\237\276S*O>|0\337=\306\342n\276b\325\270>w\243#\276!\016\277\276\020\203=>4\024b\277\024}\336\276\203F\340=\266(\357\276+Uq\276l8\214<\034\341\001>\013}\022>ef:\277\027\264\003\276\n\342\261=\271\232s\276\177\351W\277\246\214\244=\206?\003\277E\326\221=\205M\'\275\244s\213\276\251H\026\275\357\267R>\234\252\274>Y\205T\275\372\t\350>\\n4\276\240W\326>]\tD?.~\243\276\326\321\t\277\212]\320>\215\343\316>\233\336\354\275\200l\251>\305{\335\275\206]\027;\273\034\346\275i*P\276#\255I=\0139\303\276$\004\341\276R\376F=\217\271U\276\305\223\206>\303\307\021>E\243\020??\2319\276\307f\036=sC\327\275\375\374\027\277\233nG\277\375?\016=C\2376=\366\311\243\276\271b:?\266\252\263\275k\247\324\276\332\341\342\276K\201\302\276\302\303\202\276\344$g=\246FB\275\005\370\356\276\370#\201?\003\313x\276\235J@>V\264\354\274%\254\003\277\033\225\222\275\304+T<\342\344\010\276\367\rA\277\262\342\340\276\227\202\334\276\002\032\246\274>\224\304=\005\211\234\275\210F\035\276h4-;\220\3059=\323\277\330>F\325O=%z\304\276$\202 \275\354~p=\345\311\331=\343\303\222\276\345k\353>\200L\315\275He[\277\237\216\210\277\243Y\205>w[\337=\347\262\254\274{\231\n\276\276\006\327\276\356C\227\276\353?!\277\304\236\214=\224\237$<\207\374@\276\344\030\301\276\035\360Q\276\331\363\251\275\250\260R>\001\266y;\'\256\303>)\024\223\276@\237\274;\0215\205=\t\203q\276\264B,\277\366\230(\277\321!\343\276G\233\207=\251\323\004\277\376\252\375=\327Y\234\276.1\335\276\353\236\303=\222b)>\210\375\255\275\207\304\027\2759\337g<\313\362\271=\365p \277\001mw\276\277\236\006\276pd\252\274\323\247C=?2\251\275P8\373\275R^8>\346\370\266>(s\250>\032I,\276\031\312\315\276\320\217\360>\001\371\262=\377\375\033>\330\320\204\276\022>\211\276\225\326d\274#\225F<\220\233\227\276\267$\275\275\335\227_\276\3002\005\276\225wv\276\265^\230>\234+\376>$mb>\226H\035>j\003\244\275\373\010\317\276\252Y\327>\031\'\242=2\325\213\274\204+\032\276\232\370\\>\002A\361\276\276\305\375=N\264B=;%\200>\244Az\276m6$=\222:\014=\224\313\227>E-U>a\346\356=\023\373*\277^\260\230>^\267\246\275\356\340t>\037\374\373=\202I\022?[\274\273\276 \020\340\276\334,\276=\345\n\025<\345T\233\276K\026c\276-X\311\276\253\374\312\276\332z\037\276\350\342\203\272\370\3649\276\217\013!>Ik\216>\223+\334\274\367$\313\276\343& \276\315\214\200\276\270+\373\276\260\251\375\2768A\037\277\3045\304>\005\345\024\275bCM>\321z\007\277\206Jy\276\376;\233?\202I\200\2769\362\373\276o\206+\277\322/\273\276 r\334\276\346\256\304=\312\277\263\276\"\335$>d\266\016\276\3056\245\276b\214\214\276\342\374`\2762\214o>\237\375#>\355\0302\2773\264\222\276\360\372G\276\241l\374\275\373\304;\273\356\346\034\276kz\210\276\304\026\002?\303\212\034\276\367p\220\276\352X\307=\206[\220\276|X\022>\235P\256\276\203\347\261\276`\271U>\007g\026>T\270\346=\274}\327>S\360\343>D\354\355\276\002\335Q>7\327*\277\226\323\363\275\177\243F\276^Y\341\276\202\256\203\276*\267\246\276\034[l\276\342$\363>\364\222\257\276\257\n\251\276\237\026R>-X\343\275\r$<\277$]\231>\326J\276\276\0201\014=6\300\212\277+\351X>i{\214\276j\212\005>\r\377,\277-,\266>_\026\200\276\270&8?J\032@\276\013\3701\276\347\025\303=m\002Q>R\313\004\277L\003\207\275\267yP\277\213\202W\276F\032F\2777P\236\276\370\326??<[\260\275tP\005?\014\237[\276\365\004\302\276\362\261z\277I\2303\277\000\224&\277)\311\212\2765\202\035>6\352w\275\274\311\262\275QX\376>\3414p=]\230\014?\225t\020\276\030\321\215\276`<\312\275\213Lh\276/\255\267=\031\247t>\274z\003?\001\3325?_\2729\276LHZ\275\303\345\217\276Q]`>\023\303\001>Q\307\">\213\303\332=\306,\022\277\311T\244>\031\3210>o\030\364=\353\241\333\275\246\366[\277\274x\016?\325\362\007\275\311}\332>\356\257\027?\016\375\317\273B\231\221={\245\202<\354q\306\276\321\3221\276\334\001\226>Wu\273=\033\226\n>\233\261\221>\014\037Y\275\302!\242=\0045\030=x\337t>\234J\315>g\244\247\276T\017Avg\237>e\257\217>\260\242E?\222AT\276$2\026=\214\317\204><\360\376\275\265\204[>89\212>\006\212\353\275z\275f\275G\006m\276\261u\003\276F\213\\=\2740>>\250\357\310\276\216\307\014\277C\236\371\275\213\356\343\275\014\260\321>\213#\316\276sIv\275\245\212\205>\2454\336=\375\366\\\273\230>\222\274\037\341/>U\217\014\277\017\271~\276\307\326I>\022m\337\276\340-\371\274\217A\206=\370\300\221\275v`\306\276\3648\255\276W\250\036\276.\355\252\275M\257i\2757\r\340=:#[\275\200\270X\276\205\nn\274+\244p=\223av\276\220*S\276i\373\340>\373\341\266\275\377\363\364\275RP\355\276!\221.?z\371\212\2745\260\025\276\214\246r\2754\213N\277\265\322\021\276\325\240E\276\254v\250\276H\263\240\276\330q\243<>\014\240=Y\214D\275\355P\026\275`\025\201?\274\001\311\276\270M\221>\r\217i\277\236 \363=\264g%\276\220\304\240>5P\211\276&\215\024\277\225\232\341\276\301\277!\276\017\246\367\276ax\303>3M\347\276q\357;\276\253\0070\277|\353?\276_\343\311>,xW>\006] \276\037\016s\276=\253\n=\262\'~\277#lZ\276\375\371\\=j\004R=\024\227\221\276o\205\014\277|\002\271\276\243\367\313\276@\363\273<\260fG>,\225\246>\255Q\200=\007\214\027\277v\266\333\276\212\"\022>O\253T\277^N\020>\220\237\314\273\214\323\372\275*\323\263<~\273\230=\027\0328>wLB\276$\036\274\276\364\365\013>\254u^\276\235N\306>\335O\006\277N)\013?\275\220\205\275\177_\256\275\304/\250\276d^\231>\266A\017?%R\233\275\2611\013\275\t\t\355>\276c\r>\037\303\006\274|\347\266>}\221\312=H\232\026\276\323\345\210\277\2140\007\277f\301\212>\246l\215>\030\024\026=\374o\367\276\302\261%\275lj\n\277\330\353\010\277\333\025\357=9@\006?\024\316b\276\371g\021\277\005\223\023:#\322\315\276m\243;?\355\223\031\277%!\227\276\226\322M>A*o>/d\025>x\020\203\273\213\210\237\276\2515a\276\\\270i>\222\321\'\276\2211\235>\224\322\226\276\272\364\026\276\342\312\017?Xl\340\276\232\206S?WZ\233>u\230\225=\264I*>\305\014V?\205\341\330>\017\223\314=\300\224\337\276M\371\326\276>&4>\207^\361\275\317\200\007\276A\337\251\274rR\003=\034\375\363\276\'\030\271=VuA\275F\366\327>\'#\267>\235\013~=\3678\234\276[\023\312=,R\205=`p\035>\270\230\016>*8\350\276\322\372\234\276%\016\"\277m-]>\322\344\026\276\023\013\212\276\2029O\275.\225\207=\025\022\235>\353F\200\276c\202\025?\366 \372>\256\214\324=\2734[\276\202\207\314>\320\323\301=\356\036X\277TI\276\275\202\022\301>\273$r\276z\335l>\007\313\360>\036\337\304\276U\375f\276\372W\243\275^\025\232\276\215\034 \276\367\210\271\276\367\275\261\276\366\335\235>\326\235\260\274\375\213\216>\331o\365>\334\n\204\2765DV\2753Kc>\244\341\365\275\306\215\007\277\204\035b\276`\334\004?&\306\256>\251*L<\266=\032\277N\376\014>r\256\032=L\232\232\276\220\223\306=>\251\245:\r\245m>M\352P\276\233\006\203>f\327c=`3\343>Eh\224\276$\326>\276\267!\337\275 IW\276\r),\276AM\321>\207\016\234\276\212\032\211\276\223Q\241>\262|2<\275B_?\303\010\035\277\305\237v>?v\303=N\351\365=\027\022\324=|E\001\277\260\325\272\275\253\271Y\276\257\366j\277u\231\033>\377V\237\276`\177\033?Y\001\312\276&\231\257\274\374\224\001>+\364\007?\035\366\340\365\007\"\275\345\3221\277B\277l>\224\367\014?\273-[>5(\263\276\213\351\005=\246\032\023?t\357\351\276}\333\303\275[\252F\276_1\275\275.\020\027\277*\220\212\275\234\3356>\032\267\306>Lh\273=N\274\344=\004\033\244\276^\342\354=\305\tQ\276\247\350\224\276\342A\260\276\035\253u=\353\226\200=\002\240\035>\201#]\274\301\345\337\275\316\306\014\276N\340\276=5\261\205\276\231\211\010\277f\220\254\276\315#\033\277\345\267u=\030-\022\277\363\034L\277\212d\256=PW\341\276\324\347\345=w\025\245>\307\231\250\276\331\016\017?M\356\240\274F\352\023>\250V\021\274\210\266\342\275\225\201x\276\235X\240\276l_D<\347?\332>9w\000?:sY\276I\034\215\276aI\263\275\177\376o\276\373\244\273\276\216\014\327=>\373\026\276\213\347W\276\357\031\222\276\336\\\355>]\340\264>l\360d>2\367\177=\371\276>\276,\032\032\276\023\262/\276\350\200\265>g\t\037\276\212U6>\214\210\034>\361T\020\277\306\204\034?\333\316\213\275\210A\025\277(\n\227>t+\300=EC\213>\230\200\002=\372o\250\276\337^\013=\274\274\000>\221]\263>\367K\254\276\371\322\2729r;~\277\026g*>e\265\250\276\222OS\275D\020\032>\274o\317\276\325UN\276\266bC>\225L\351\276RZ\004\276!\001\036\276G\2232\276\307Y\247\275\033\376\277\276\237B\025>!\370a>\r\037\025\275\014CH>p\017<\276$\037:>\007\216\232>#\242\235\276y\300H=d\363\302>\342\022\354=\025D\'?\275\275\023\276!oG>\003\207$\277V\326\341\275\252;)<\333<\247>\274\334\211>G@\260\276\t\021P\276\271\020\031?\345N)>SK\342\276b\\%\275/\207V>\237\273\224=^y\240>6\235\207<\267z\354\275\203\376\006?\021\366\257\276Y\247\204;\033U(\276/\002o\277Y\221v\276\372I\362>J\224\223mD\034\276\347pT\276\037\032\366\276n@p\276`,\224=\221\272+>\376[\214\275Y\205\223\276r2\n?\360\312\'\277\037@\330\274\213\361\310=\273gB>\306\3304<\033D3\276\2063.\276\251\177\231>|\254H>L5*\276\312\\\032?\021N\311=\\\302\272:\034V\323>^\373\\\275\323\031\352\276\231\275\025\277\344\030\024\275C\017\252\276\247ia\276\351\363\366\274\'\3237>\374\237\326=\032\272\253\275\'\377E?O3K>\223\211\336\276\232\343$\276k\260\313=\261\024\202>\016M*\277\032\036\371\276\227q\337\276}\232\215\276\325\207\024\277f\332\030\277!\222\235\276\314\"\025?\350\007`\276\030r\316=\361\375E\277P\363\017\277\262IG>\016t\236>U4\336\276R@{\2768\313\026>\352*\315\276\202^\307\2763\351\247>\253\277\020\277E\203\022>\'\204\025\276\276:6>)\257\001\277\261\337\205\276e\353\333\275\'\332\'\277\250\201D\277O\035[\276\036Z\236\276x\016\357\275\263\276\214\276Si-\276e\204\347\276\316\005\205=\"\004\370<[\322\204\275w\017\251\276\271\355\"=\333\177\375\276\316\211\006?-X$?\242>H=\302\354h>\0219I?~6\372>\'p\037>\322\004\236>\263\214\314\275\3560\317>\177\340\275\275M\022\371=\230\362\231\276\306\365V=1\351W\277\3238$?\037\306p>\333\255\217\276BZ \277\235_\210\276y\270/\277\265r~>\320\3456>\243\360\276\276o&\252\2761\027\356=\375M\361\276\240\035\351<\242\356\344>\343\211\245\276\021\342->\241x\202\276\255[\312<\2167\221\275\334*>>\r\273\022\276\340-s\276=\016\231\276\215\340\037\325\025\253>9\204\331\276}\000\213\274\346\353\200\276\236K\216\277\024K\030>\326\034J>9\253;\276\310D\037\276\177\365H\276\313\300\001?\272\234n\275\206\342\303\276m\224\343\300\025\037=\267\370\207>\215\025\243\275\ng\331\276\262\206\234\276\032\217\224\276\241\357e<7\224\376<\370\277^\276\347\355\035\276\302\202I\277q\036R>\376\205\226\276#\227X\276`To\275>u6\2770]b>e\001Z\276\375\225\266>~\342\000\277)c\003\277yz\002>GR\256\010\203>\025\352\265\275\314M\305>\177\032\016\277rY\363=\316\325\323\276\357\215\343\275\202\275y>\371(\264=\346E\020\276F\013\274\276\374\303\313\276m\375N=\243\232\227\276(g\200<\013\001\026\277\r\270\231=\266_\303>\211\223H=\373b\371\276f\354.\277\0160\365\273\006\242\332\276\'\305\220\275a:U\276e\031G>\361r\216\276\033\0310\277B\016v=(\344\032\276]\327\343\275\353+\021\276B\262\243\276pJ\230\275\303\323A\275F\2102=\233g`>3?}>\r\331\246=\350>\202>\240\332\336\276U,\331>)\324\334=\007s\274\276\304\2146>\360*\334\276L\336M>\241\223\237\273\360 \325>\343\034N>\031\323<\276\n\372\000\277\215\262\247\276G\354q?\177\320\022?\005s\030=*\301 >\316\336\332>\343\2064=\330\273\027\275L%\364\275\206\214S>\277\371\034?\247\251\212>\177\036\215\276n\001\244\274\021\373\245\"a\377>\276a\003\277\\GG?\350\266\217?\177\337\373\275\245Sh\276\214\376\360\016\035\376>\006\"I?:\367\356>\224A\275=\340&q=K\322\312\275\335] ?\265~\272>\362N\006\277.lH\275\341\313\240>x\322\215\276\321\002\360\276A\264L<\226~\210>x)\027?<\316\330>\3031:\277\035\370\331>\370\006O\277\360\275\002\277_%\201>\'\222\016?]\320\">N_f?\333\013\254>Z\2151\276\004]\225>2\001\206>?Xo>\354\210\244=\272J\017?;e\376\276\013..?%<\211\276\202\210\357>w~7>\274\245n>\303\002\n\277:\363\300=\215\331R>\305\234\223>\262\022\330>\203E9\276\376\212\240\275\265\230\033?\216\303\005?3f\226>\317\306E:M\254\325\276\260\264\016>\306\345\315=h5\255\276\307P\007\313\013\021>jx\010\2760v\323\274\254\350\262\274\320\231/\277>\326\215\276#\000t>%u\211>t\3472\276\204\317\254=\241\232\242>=\371\212=\034\237\216\276\365\027\307>wL\204\275M\246U\276\372r\355=\265$\022>\373\034\200\277\231_J?\'V\033?\243\321-\277G\030U?M?(\276\361\035\264\276\013\204\344>\241\0134\276mS\266>\352\003\221\275\201\321\253\275|)D>T\203\273\275\364\326\002>\3157\274\276\260\365v>\333\314$?\247M\033?\236\205\r\276\177\374\256=\r\010q\276\033\334\255>\311\363\346>\025~\252>\317\010\306\276\276@\356\276\331c\022=\302\306\027<,e\360\275\365\271d>;[\017?\023\223\007\276\352\321\313\275\324U\006>\215\311\364>~\267\202\276sP\t>\211X\033>\037\302\035>\013|t>x\270\351\2757\221\335>V\304\317\275\334\007\222\27549T\276\245q+=q(\365\274M\205\203=\376\264\330\276;\251\200:\026Bv>) \273>\366\n\232=\211\265\"?,\276/\2773Qk\274k2\036\273\024\366<\2761d\037\276\241\335(\276\030\374\014\2777\3653>\307=\261;\275\211\310<\312!!?rR\332-/\221>h\221\251\276\365\373P;|[I\276\226\232\275\273\352\237\301\275\257\275Q\276\222\037\307\273\346\203Z\277\275\232\037\277\217e\347>E\3419\276\275\251+=\354&\217\275\341\270\237\276No\212>\265\356\020>\037\343\002\277E\032\004\277\252\035u\277\242\322x\276\274XQ\277o>\334\276\367\270\022\277\263D\374\273\0223\244\276\231\214\021\275\"Vr\277i\002\360\275\352\311|\277m\251E\277\031:\225\276\353F\004?\257V\275=\303\304\246\276k\2268>_\007\000\277`*\324=\256\013k\276\217\032\263>D1\276\275\370\200\272<\225\311\205\277\300\323C=Q\2268\277\367\017\220\276\343\025{\276\347\013K\276\210X\202\276\261<\025\276\271t8\277^@\211\277F\225\031\276@5~\276#\205\324\276\273\236\366\274\220\276U\277|\247\353\276g\003\010?\200n\363>>\324\231\276.\304\313\276\322i\017<\274C\004\277\327\030\222\276c0\351\276n\322Y\276\275\344l\276\031\006\255\275\223\324=\277\341\260c\277\230Y\255\276\340\205u\276\376P0\276\265:\257\275(Q-\276\275[\"\277\270\241\210>f\022\236\275\356^^=\240\201\001\277?)\303\276\253\305h\276\260\025\347\276\226\037\010>\256\332\350\276`\217l=\227\204/\276nh\025>!Z\223\276Y\360C\275!\251\331\276\317q\r=Z\205\325\273u\r\345\276~\036*>wU\200>C\254\330\276#\231j\276c\326~P\267\220\276\333\2200\276\277k\214=\027\242\201\275\033[\376\276\346\204\250>\205\246\232>\324;\233\276\367\346\206\276\231\241\202\276\211,N>M7$\276hh#\277\021H\205\276]\036\037?\251\330[\275\202\276\255\276?U\014\277\212\257\037\277\304\353\223\274\273?\263:\345\003.\276-\361d\277 \256N=L\006\211\276\373?R>\200\306G>\005\')\277X$\347>q\257\352\275\036|\252\276\352\030 ?L\007\343=\205\317l\276\367s\241\277\265\000H\275\362\037\271\275\034\305\022\277=/\332\276\310m\350\2751\025\007\276W,\276=\207\227\263\276\002\342\010=0OX\276\314\326\326\276\237+i\276\202\333\024\277\342o\006=\365#\343=\276+\201==\314\314\276\237t\360\275i\203c\276;\330\217>F\373\035\277\317v\010\276\025\251I\276r\360\367\276<\373\034\277S\023\345=Ri\273>\240\330\261>\316\240\227<\216\337\212\276&\305c\2777P\035>5>\336\275D\365w\276\351@\264=W\360\'?\322n\232\276<\200\366\274\331\211N\276\2551\322\276\302\374A\277\377q\200=\374\233\345\276:\003\263\275\372!+\275\327\332q\276E\002\223\276|]\261\276\251e\345\275\020c\333;_7\264\276D\363\323<\356\275\362\276\267\273\211\2762H\223\276Z(\216> \202\210\276i4\177;\240\250\275<\373\302\255\276\216#\200=c\351\037\276\326*`\277lf8?\024\211D>\360\244P\277\355\330\347>\326\200G>;xO=<\332\213\276\345v\216\275\222F!\277\n\356S\276bA\253\276\255\360c\277\310lp\277\342\340\363\276\257\332r\275\034\226F>\243Dv\277\223\016\360>\346\223\306\276\301\251\317\276w\265\t\277n\3276\277b\241{>\nh\221\276\305q\361\275\312\034\025\276*\366\213\275\236r\212\276\341\336#?\225\177\204<\246+\253\276\025\344\246\275\216\245\205>:\203 \277E\213\002?\322\337\322>o5\224?\036~\022\276\236\022\356\276N|\373\275\"\'\236\276\225\217%>\214\017!\277\307\206\363:3n{>v\376\030\277\022\231g>\273\t*\277\024\343\355>\026\341\034?\244\361\016\277\023d\262\274\222\026\227=]c\324=\2675\244\276\345\376)\277\263\260\222\276\300s\267>\036\312\232\276\226\201\207>\023J\034\277\266j\216\275P\321b>\3315\317=\327\"\376\276\021\n\313=X\303p>\324\336 \276\242\253t>D\244q\274\323\370\214=\211Iv>`\271\323>\304\363\326>\231\300K>\343R\207>\252\201\030\277\360\364\305\276\250\216\274\276\332\021\021;k?\241=\260\255/\276\r\342\255\276\363\363\003\276U^\351=\263j\217\276&]\324>\020\246\256\275K\001\216>z \336>\370\354\230\276\357\031y\276\002\2657\273\030\031\177\276\r\266\014\276\004\333\223\2760\270\026>o\210(\276d*\252>r\243\t>\272\360t\276\276\002\214>\351u\362\276\227\366\346\275\253\207\311\276F\254J\276W\"\312\276\245\371\275\276\257%\214>\271\026/\276`\361)\276\020\275\017?\260\0246\277\rD(>\346Al>\331\245\312\276\t]\016?C\254\324>[\326<\276^\031\252=,\245B\2767\036I\277\350\004?>\265\2361\277\"w\220>\260\n\364=>%\256>\347wt>>M9>\3162<\275\336\0172\276\027\032\247>G\'\342\275\264\\\305=r\312$=uH@\276\275:\324>$\241y\276\236\220f\276\240\031\244>\202\355:\277\020\324\323\276\3134\223>\226\247\272>\347\005\035>\213/\245\274\233\327j\277S\000\\=^\373\200\275\374>\213\276\017oO?\306_8\276\001@\212\276Z\256!>_\n\262\276\256\363\252\276\3764\222>\023\004z\275\016D\212>\361\312\211\276GgP>\306t\203>\353\305\004?\306\206\013\276>z0\275\216\n\021>F-\244\276^\016\025\277\020XS>\230\347\'\276\276\006\026\275>\364M\277Ej\275>\346\007s\275Su^>\340u\246\276\020\356\202>\323\264.\277\265#\321>4\230\325<\364\017y\275\353\245\225=TT9>FH\"\276\231a\204=\263Ld:\304\330\346\275\025jw\276\373\273\004\27727\007>\206\r\270>\272\276\220\276q: ?i\311\255=\023K\270\274A\177\254>1\201\r=\363\225!?[\226\034?\323\0030\277\324\025\354>\201\302N>q\325->!U\326\276u\241\215=\317\324B?\257W\002>#\017\310>\302\355@\276*\274\024?Bn.>\250\323\"\276\213Y\025>\341@\335>\205\342\221>1}W\275_f\004?LDd>_~\254;\262/>>\362Q\364\276Xw\337>\240D{9\314b4>\237\304\217>\3139\256=tm\034??)\355>\010\244,>\261g\277>\333e<\277W\231\235\276\240h\r=\345\217\016?\3678\202>U\316\266>S:2=\247\"\251=\211\343\016>\371\260\374=\001\200\266=\345\305:>\300\372\237>\310_\031\276\212\277U\276\313\215\373\273[8\367>d\022=>m\355R?\25404>\356\243\213\272]\320\236>\266\t\243\27626\250<\216\027\231\276R\n\316>\214T@=\371h\271>\350\245\230>\336\177\005?\310Lb?@\230o\276\346\367\274>\220\215\303>/\327^?}\271\000?\225\224\025>\366\031s\275\322\272\217>\270\214\254>\361\227\202\275]f->\340\324\006\275`l\354\2768\324\346\275\300\363T=\344\257\036\277\245\355Y?p\324\336>\226a\003?\306&\211?\265> \277\210\037\252>\016\202\316>pc\327=T\363\n>\360\'\027?\261K\244>gI\005?\301\221^\276\'\016\226>\356\030\357=QBB\276W y\276Wt\314=\3754Q\276\353\022H\277\020\236\233>\323\310\361>\365\005\200>\372\204\250=#\263\354\276i\371\223\276\246\337\031>\023\202\223\276^Z\352;\276\342\'\277\250?\030\2765\315\231;\352\250\364\276sv\224>\324\227\315\276*&\027>\203{\227=vT\356=,\0218\273\000\003\261\275\227\271\215>]#\211>=\213\357\275\353\230\311\276\203m\364\276\177\2047>\"\003{>i\033\220>\365\323\343\276\312\r\'\276\331\361\216\275=\"\006\275\337q\335\275\215H\263>\265\276\023\276\220u\233>(\350\002?\267l\004>E8\'>A\254\354=\363^f\275R\242\346=\"\220\017\276\021\217\215<\264\035\030\276\332\006\347=:\203\317\276p\377O\276\327\370x>\277\016v\276|\0340\277\223L\237>KD\026?\355\252Z\276\352R\320\276=\265\212=\3770\226\276GG\366=\242M\177\275\316\257J>\347NC\274\'~\313>\260\210(\275\271V\323\274\343\263\003\275\333\217\271\276\344\336l>l\333N>%\276\373=\214`\3778<`\333\276\'\023\365>\001y\236\276\341\214E\276b9\263\276+\251\351>=\'g>^e\273>\007v\211>a\276\023?zAp\275\354\023\031\277o\"\221\276H\021\240\276\311\3013\277\034\261\373\275\372EB\276\002\205e\276\024\223\265\275\211\237\210\276\026\023|\355\3468=g7D=\033\031\021\274\013t\026?\351\017\003\277\273\267\265>\372\025\001\276\203s\275>\350\227\324=\355w\304=\005\355\'>1\256\364=\214\221b\275O\343\033=\n\nU\276.\303\274>\277\357\t=7\246Q\276=\215\'\274\025>\201\275\252\353#>>\243`\276%\324\032?\016t|>\315[\212\275\3479\335=\267\207\233\275(\351z>\203\251_>\350\273:=\270zt\276\000\004\364>w\236\007?>\203e>\306K,\276\007D\271\276\371\204K:\321I\220\276\225\226t;0>\232>N[\333=\251\365Q<\'\240\375>\335g\t\276\341:O\277\260_\004?\022tH\276\363\215\302\276R\242\231\276\320\275\207>\350\316\205>\311f\276=*):<\333\345\007\277X\367\333>R\177\313=\271\271\200\276\262q\031\277\342\r\321\276\351\036\310>\27682>\262\032\343=&\336\025>\346O\204\276?\265\275\276}\004B?\211\017\371=\270\017\330>\310:*\276\352\266Q\276\321X|\276\033\266C<\022\031\020\277\266\006t>&\317\276\2760\321\355=\275E\200\276\331\202\210\276\227\254\023\2763q@\277\362\177\222>>!\203>(\"\313=\361\263\322\276\261N\t\275\342\345\246\276\377\344\023\277S\032d\275\n\221y\276\220\373\331=s\304\021?\363\366C><\235\n>\341\202\346=\306\354\211=\331\325\327=s\230\251>\304\016\035>@\351\311>\032\010\023>\3661f>\205\277\257>\340x\t?\213j\352>F.9?\027\"\222=\371\306\376\274A\364\243\2760\256.\275\3375\342;hc/=\376\316\236>&\257\253>(\366\t?\275q\260\275{g\337\275\302G\n?\307\236Y=1\346\357>b]0>/\265\215>\224\311\000?1\350\010=Hk\037>\247\323\206\276\270FU>\211NL\276\210+K>\020\013\232=\357\223\\\276\342\256d?mu\013\275Y\214\364>5D\205>\211\007\244\276\352,`=\ny\357=o\310#\276g\2769?Ax\025=\234\316z\276Z\001\245=\316\373X>\200\331u\275\004x\230>\320\312\250>n\315\r=\207N\236\275\344\236\007>%a9\276\327kk=tT\331=;:\017?\2311\007\277\\@:\276\356\335\245<\215)\322\276~8\302=\3325\336\274\037r\273=\2062\247\276J\324\267=_\263r\276Qq\277\276\026BG>\270\227\265\275\275\3423?\316\224\201\275g\310>\276\265\360w\276\r\017;\276%\245\364\275>\260w\276\214\374m\276\236%v>C\375\247>l\032\247=\226\317\245\274M\364s>KY\237=\334\330\354\276\251\353k>\267\007\347\275\236\030\331\276\t\325j\276\3255\224>\373\312\227=\345D\230\276-{e>*\204 \276\321\024\247\276\177c\233\276\334\021q\277S\3715\276\177b\035\275\005\003:>`e\232\276<\263\245\276\314V\270\276\215T \277;\351S\276q\250]?g$\347>nTU\275<\2276>c\212%\277\2152\n=\235\263\022\277\316\275\013\276g{\036\276\300\227\361\276p\nx\276)\276\214\277\246DL\276\316\372\000\277y7\354>P \252\276\023\220\013=\362rw\277\362\233\322\276\237\225\207\276`\227\031\277\270\342\237\276\n\335\001?\020\331\241\2761<\243\276\3506\337<\313\365\336\276;\005\232>\355I\215\276g\304\r\277\026\255\210>g\313$\276\332E\324\276\274x\251>\r9\315\273\r\2322\276\231\332\022\276\020\216\341\276\216\362\353\276\315H\030\277\372h{\276\036\305\261\276\340\027\356\276\276<\177\276|_\314>\274CR\276ps\000\277\272\373\234\276Y\251S\276\252]?\277{\311\252=\t\316D\277\217\3130\274\006\373\215\276\237/\247=\374\274\321\276\342[L?Q\304,\277Z\321\'\277\034z=\277t\251\371=\237u\022\276\343(\232\275\223\257u\276a\351\270\276w\005-\276\361\355\372\276\230\230\376\276*\007\342\276\237ih\276\313\330k\277gS\217>\202\261\027\276@\224\226>\003\211\212\275 \306&=\0213\204\277{\231\367\276uVZ\277\357\235\236=\341\303\r\277\020J\313>\037u\223>I\210\375>b\260\260\276\014\334\354>\014\217\305\276\370\300\277>\235\034h\276\367(\240>\222\343\276>\331N7>q4\274>\354\334G\276\212\310.\277\245Ud\276\225\210\237\2756d;>w\207\002\2759\232\">s\346\304\275\217\243\256\276O\375C\275=\351\250\276\210\305\032=JR\301\276v8\351={f\001\276\354=\356<\356,m\276\021a\003>\303\333W=E\263C>\024\034\202>\023\316y\276\271\255(\277\204+\300\276\270P\233\276\0261\021\276\354\372\214\276:H\014\276Y\022\251\276\305\203\321\276-^0>V\305\373\276\251.\007>\024?!\276B;\037\277\tl\344>3Wh\273\301\260\276\275\007/\240\275\354A\241\276\024x\030\277\344\327\266>\260\374\002\277R`C\276fXy\2762\177\376=\251i\225\276U\302\002\277\306\223-\276|>f>\037\021\003>\002\304\234>\224\t\263\276\\*\303;\003\302\234\276\177\252\325\276\236(\'<\020r\026>T\025\224\276,\025\275\276\036^\013\277h\342\300\275;1V\277\274J\002\277$F\332\275\325\217\336\275Fn:<\"\207\223>\312\261\210\275\177L\306\275\230\345\277\276\025\300\231\275T\036?\277\273\334Q>+9\366\276\207\356`>\341h\026<(^\241=tL->zf/\276\345\255\361\276A\366>\277\241u\221\275=\216~=>^N\277\235#-?Ps\\>\025\273\350>\263\352\304\276Z\005A\276\376\010F?|\r2>\317\025\314\275p0J?oS\244>\277X\320>id\200=!\370%?\277k\341<\030\032\030=In\240\276\242J\000\275\317\312\235\276\345\356\345>\211\030(:H7\236\276\224\204\213?\023\330\330\276\316m\320\275\336\267\311>\0375D\276b\267\002\276s ?\276\'\344\031>(\264E?j\020\246\276r\'.\275\016\324\037>\316A\r?0&\337=\345)E\276\245\253V\277Q\016\272\274\'+\032>\310\353a\276\th8>\330\312\335\276\253,\333>\217\2523?\212\225U=\275\335\274>N\211\300>\246!`>9I\202\277o\364\343\274\234P0\276\353R\217\276Q\236O>J\"D\276;h\232>\016\232\275\276\207\2103?\372\325o>!\025y\277\365\034\377\275h\354 >\32690?b>\032?vo\212?\342\300l\277\035pu>D\250*\277\0271\220\276\260J\035?vZ\022>\365(\025?\333s\242>:_!\276\240&j\276i\337\217>\223w\\\275Z\321\335\275\237\n\005?\2410\204=\223<\257>[\342%>\242\323\013>06\237>\336\t\205\276\337\256/>\242\357\365\273-\014%>\026j\025\2771\271\337\275<\262\231\276\3672o>\001D\030=\214\372b=\014Y\321\276\020\316\317=k\250\202\275v\325#?{\242\255=E\304\251=\003\347J\325\315\235\276\376\231\016=<\256{>7\265\257>K\006A?\212\272\256>8\271\202\276\326\243\215\276-\001u=\355\270\203\276\275kY>\202\335\313=s\315\037>\327\226\275=P=\r\277\274s\221=\226k\306=\221o$\276\t\2639\276\230\314F\276^\212;\275\241F\346;\t\262U\277\350\020\240>\366K\237=[r\234\275\351\220\253\276G\tG\276@\245\243\274\006\202\316\276\210\323\203\276\315\2552\277\271VK\276)\334\016>\241\t\261>\220.>?\356K\226>#\253\332>\370 \223>0\344\253\275\244Bo=\256\224\014\277\223\006\336\276N\356\320>mtl>\235\317\302\276E{o>u\017\213\274\252\347\254>\333\177[>n=\241\276\377@\003?(\201u?Z)\004=s\214\224\276\301\376<\2766\217\237\276GJ\021?\320\231\220>pNf\276Y\205\363>\324h\270=g8 >\215\ns>\371\007\270=B\2656\276\202=\221\275U\340\316<\363\252\321\276\177\253\213\276\357n\205>(E9\275W\251\361\275\035wl=\335\271\247>\343\177\361:q\247\340\274=\267:\276\023WK>7\215[>^\247\251>\222\242B5\347/\276L6\002?\032\010\325>\361T\232\275\205\\\344=ow\205\276D\221r>\224!\357\275\303%\326\275\326\003\264>\237c\003>\232\242\331>\034\270!?\352\215H\274\\v\271>\313<\274> \007\223>\323\013\201=7t\237>\250\214\004\276\244\254#\275_\246\201>\231\214\233\275\250\254\334>E\013\377>\313v\256=-\327_?\337\217\273=\342I\356\275E\312\\>\014\220\302>e\275\371>\2455\004?,;\316>\2407\025?\3402\005?\371\372)\277\013\337u>RHS\277-\213\303>D\234\313\275g\255\253>o\356]>\356\234H>\260V\367>h\035\300>\234\313\205\276\327\007\256>\"}*>4\030\322\275n\315\327>H\013\030\277\362\013\364>MC\343=\030f\252\275\340\017_\276\362\210\t?\350!\021>\003\332\212\274\364Qq>n\205\323>\212S\240=\250&,?\321%\252>m\271\225=\033\'6\276\020UR>\226\234m>-\242\362\275#\330\t?X4\204\276\216\021\275;\353\277\302>r\020;?\030\217q>?\277\\>\210A\347=\373\332\334=\357I{>\200\000\027>\006\242\367\273\177\200\202\276\217\006@\276\260\362\235\275\177,\227>\213y1>\007)\304>\244\177\025\277\275:\262\275\264\351\223>G-\005?[\025\222>_\326\204>@\322\332>\217\357\341=z\341\363>\327\354\025?\016P\033=\203\231\304\275\325JD?^\220\253\276\226\377\000?xZ\362\275\231\2749?\252\023\203\276\260\352\010\276\022\276\373\273\262\t\r>&\005B>$H\367>\332R;>\233\374I?\376\320\037\276!*\027\277\315\007\350>\257\366\217>\335\371\201>\0263\325\276n\250\332=\001\355\225>\267\266\204\276\343d\336\27585\312>~\310x\275!b\014>|\355T\276\240\374&>\213A\001\276}\260\303=\000\245\362\275z\307\274\276I\034+\276\373i\024\277\241\241\010<\270\277\007\275v\357\270>\361Eq\276,q\026\276\272\307T<\3304\221;\204\373\217>\377\253\020>}\367\032\275\032\031\236\276,-`\276oU\216=\330\262\272\276\261xS\275\030\216\312>\023=\314>)\022\311\276:>!\277\221z~>\354\344\253\275\367\3240\276\362\335\">xt<\277\333R\"?\270\254\337>2\367\200\276\273^\364>\334\307\354>\"\227\235\276GR\006\277V\370\225\276\2062\023>\003A\330\276\272k\233>]\034&>\213X\211\276\216|\217\276\246\352\301\275\300e\225\276\'q\301>\360S\037\276\367#T=C\272\006?;p.>\332\375&=\321\216S\275nl1\276\375w\354=I\223\021?jo\n?\273\031\271\276o\034\245\276<\240}\276T\340\200\275\230\216T\276\177*\026?\\\353=?\253O\242>\220\241\002\276\273\347\265>\266\202\352\275S.\026\277\342EO\277A\007>\277e\036H\276\263E\037=\325\377\353>\000\311\036=\254\244\202\274,H\340>U4\211C\0313\276\311\230\255\275\244\031\376\276\356\020\024\275\372=g\276\340\'\224\274\033_\205:\373\313\245\276\007\371g\276+\315\371\276sE\250>\242F\375\273\315\322\311\276\334\236\221>\243\355\320=~\336\">\254yL?\265$\004\277mU\000\277-\356\303>A\205\n?\334\034\026\277\304\'\267\272\271\214V>=\377\343\276,\014\364>\237\371H>\014u\365\276\203\306\374>#\217\365\275\376E]\276223\275\332\340\037\277\272x\314\275\221*\212=\212\221\036>\254\3223=\311\246E\277\177\263\235\276\351\345\330\276W\027\216\274\216\030\360\276\024\311\"\276\303\373\364\276\217_\013>\274\005\274\276\354K\246=\355\033\277\275\004M\003>\316\030\311>:\377^<\325B.=H\020s>\270\233\236>\0341\"?[\263\331<\322\243R<\345\246\027\2756\246\r?\216\3234> {\307>Jo\362>{\244\036\277LA\302><\265@\275d\326\006\277pN\202\276\251\021\177\2762\312\201\276I\277r\277A\326f\276\214\245\343\275\207\r@\277=\007\377\276\000\225\241\276\232\010\250\274\364\2744\277V\001\267\27561\241>:\004\337\276K\373\276;\367\376]\274\371d\246\276\326)?\276\205\352$\2777\000\270\276\364)8\277\274\241O=f\006\205\275bJ\030\277\277A\302>\376\214\256\274`$\237\276\253a\310\275\032\250;>\275o\262>\232\250K\277<3(=\322\200\264>\257\256\214\277\267\002\'>\207\334\242=_\274\017\276~\033\277>\265G=\277\236\337\034>\361q\203\2764\334e\277\252~>\274\007\306[>MQ\320\276j\343\275\275X\277\236>\001\207/=\211\267\265\276\300\275\005\2751)\277\275*)\322>@\037\271>C+@\276\305s\216\275\200\'\253\276\302\373n>Z\n\031\277k7e\276\231h\010>\330\032\212\277SW\342\276\376\224@>\034\372\302>4\"{\275\243w\256\275{\263\311\276_\330}>\311\302z\276R*\362\275\263\320\030\277\220\234\000\276\r\325\210\276!\236Z\276c\225\201\276\207\213\322\2764\314\032\276\242kX>\356{M>\364&\360>\370\370\370\275\2779\262\276\020\341S\276\347\010\300>\366\265\217\275\264]9\276N>\340>\025E\202=\231\235~\276F\000J=\226w\236\276\000\214\353>\\$\273>\035&\216\277\220\375\347=E\213\201>\0054\221>\203S\224>S\240\223\276)c\016\277c\024\033\277\323JC>\272\371\276=\255\276\217\276Q\245t>n\312\374\276\037{\204>\220\266\026?\013\r\247>bh\'>\357E\366>\223w\233\351\305\000\277V\034,\275\316\000\026\275\276\330\355\275\236\'\037\2760\360%\276\250\004\264>\010\271\272\275\3410\177>o\351a\276)_)\276M\351\033?\265\212>\277M\002/>\233\226)>aS\177>\030%\336\276\002,\344>\352\232\370\275\362\311\326>\210\375\246=j\271\374\275\314\221\215\276\277\366D\276ni\245\276\311kN=/\3017>v,\257\274\217xQ\276\350\260\232\276\252\023\217=S\032A\275\214\353\221>\031_\341\276\212\200\221\276\337|\031>\214=\255\276\031\1779>~ZB\273\'\347\017?\"\327\266\275\253o\241=PR?>\346\325\220>\236i\375=\342\241\"\277\210g\341\2762\345=>r\177*\277\017\336f;\017\376\215?\375\240\253\276\325Z\301=\367&\215<\330\321\321>xK%\276\014\313\277\276\366\267O\277Z\031\354>\312Q\303=\2060\271\276#Q*>\212\236\037>&\313\253>\332\240J\277)\300\335>\274\370J>5a\230>\307\354\211\276\243\024\200\276\037\363d\276\352\377\307<\022\223\017\276jm\250=\271[\257\275\336\\}\276.\305\374>\246\324\375<\240P\363>\337\\2>W\t\315\275\214\356\205>\235\347?\276J7\356\276Y\004\206\2751\255\242>\246\003\326=V\026\247\275\352\240\351=US\221\277<\3674>\203\244\032\277_\3105<\007\360\375=\213\003\277\275\322\255G\276S\026Z>\251\247\334\275\004\177\265\276\355\300\216\272\3343\237\275K#\231>\375\253n\274&\032\220\273\243\373\344\276\341hi\277LC\216>\244\375\367>#b\312\276\346\350\370\020E\016\277~v\230\276\306\375\316>\310AT\276C\244\355=7\027\035\277\315Z\204>ox\222\274*,\032>(~\326>\233\266]>axp>\236\377G>2\\\232\276\343\2203\276\216O\234\276&5\320\276\2531\340T\317\024\277\250\267\304>l\246\373:\355\364\223\2751\216\327=\215\237j\276\3451\021>\302t5>f\002\207=\n\202:>\300Uv\276\030\355x>\217\0070\276\265\326\271>#\344\237=:\0337?c\276\270\275\217\360\325\276Tr\200\276l\212\205>\334g\003\276|\246c=\326\227\225>(\357\244\276\214m\254>\227\0133>\256\007`:\035\240|>\2364\345\275\352B\">\374\005-=\354\314)\275\033E\243=\342[\231=\031ck\276&\261\335>\0268\234\275\372C\327\275k\350G\277yYp\276\t\334\261\274\220\2569>\376\312\213=6\337/>\262\023\373>B\217\236>\006$\'\276\010k\214>\321a\245\276\341\353\253>L\347\020\276\360\246\004\276\002\3653>S\351V>n\034\200\276\232[\265>\016W\323>T\210\214\275\226*\330\275\233\225\024\277f\'\231\276\360\303\020\274\345\257\035\274\027Y\201>\"\262\350\276)st=ihX>\177\253\252\276b\222(>\335R\325\275\017p\255>\371\337\327<\370\306\307\276\212\252;\276\356\374\245><\236\n?\r\016)\277H7\253\276p%_?\365\227\317\275\256b\017\275\345r\236\276)\r\031=\004\345\377\275?\366+>\271oo>\317\270\331\276\323i\234=y\317U\276V \010?\271E\212>\266\252\226\276\'.\301=\021q.?\232t\017?\360\241Y\277/\022g\276\254\010\331>n\313\242\276\303\036\273\274i\275-\276\334]\254>\t\220\212>}Z\310\276\275\371\017\277\335\300G?\"\rD= _\034\277\02260>\273\267\265\275;}\315=/\002\217\276\303\2434>\363%\221>]\023\035\276i`\304\276@y\211>\234Z\350;\251\342:=8MY?\3217s=\277\020P\276\017\211=>\240s\\<\242\026\024=}s\030\277Q\365\275>\262\023W\276\023\3607\276\253\330j?\311\244\035>\244\247\207>z\343y\275\261\026\014?:\t\205>\375\212\351\275d\307\263\276\326\t\200\276\005R\201=\014\276\300>3\217.?E\347^=p[6\277gQ\263>\3726m=\033\301\327\275\200\"W;8\010\234;sXQ\275y\346v\274\367u`>\377\346\004\275|\rB\277Wp\025\276\207\001F>\240\330\017>M\037\303\275\341 \217\276^\300\310>\334\376\230>^C\001?c\353\227>\347\236\205=\3106<> \323\374\276>\240\331\275{\276\030\275D\001\360>\347\263\301\275\'7\035>\2240A>\030\347\331=\\@\231\276\224\004\020?\326\020\312\2755\257\321\276\251\004\334>.\335\246>._\023?o\360\263\276\311\276\231\274,\331\223>\213y\013?\305\322f\275B\306D>\205\002\337>\223\307\222\273\260\250\021?\275\357\025>\347\335\255>|\024\262>\277\220\231\276\270?\325;\013\333Y\276\261*\200\276\177\010\230>\265\177\252\2768H\352>\032`\014=\026^\t\277\343\367\263>\373\216~\276\361\247\215>\007CT>\201\210\374\274\230`T>\255Q\004\277\237\366Q=M\217\247\276T\225\271\275\010\027\005>g\266\310;\307\'k\276m\036\035>\344\234\362\275Y\r^\2764Z\344\276\255H\227\276\377T\\=\224\241K?\312P\263\275B\356E\277\022\372\004?\343\376\230\273\273\213\312=O\331`>\356k\013>w\257\265\274q(\215>x6\343\275m\037\033\276\334\036Q>\\\006\226\276\264\316\271=\363\332\026>\"\342\017\277h\334\251>\347\234\265\273\227%r>c[{>\354\343T\2761o\241>\010\271\224>\227\333\351=\256\351\204\275He\203<\355#H>\372\335><\362Eh>\367D\\>\355\244\026\275\367\3019\275OR6?g\375\271\276\335$\253>\301G\311\276\033\005\007\276r\305H?\224\227l?\326\246\253\276H\004\026\276z\370\201>\242\253s>\356I\024>\030\364\357>\202\3540?RS\261<\264\366\344>\022\231\237?rn\304=\346\216\325\276\314\035\301>\222\221\t>\3078\367=\r\355\341\276\376;\353>\337\027\263\276\266=\233>^g\216\277\277`\207>8b\335>\272\027\247\276g(\023\277\244\357x>?f\356\276T\037\020\276y\233\371\276\037\215\022>u\372\337\276\3645\036?\331\210G>E\341f\275\272a$\276\004\365\336\275i\344\223>m\230H\276g\224\237>\016\314&?2gB>\014\2357\277K>\002>cY\352>P\016G\276\331\0029=\013\2075\274\325p\330>\230\264X=\376\203\374\2751\314\351\275l\325\216\276\314\"\345\274\373\037\243>$\214e\276vnf\275u\267\355\276\235\nX\276]IU>\"\270\004\276=\263!=\032\276\017>%!\200=\245\035D?\027jk>\013<\304\274\242l$\276\003\006\371\276\306\304\016\276m\361g>P\245\260\275\024\002\331\276y\350\371\275M\246\344\276\003\305\210=\3051\'=T\355\270=Q\333\r>\021\301\007?\010B\330>\002\323\034\276\352U\r\277\010a\366\275T\265\255\275Pg\231\276M-\306>\320\360e?\260iO?a\032\326\276e\306\301\276\376\365\022>Ct\311>\026D\364\276\242<\312>/@0?\036N6?,\332\320\275O.\321<\352\017\240>\2656%\276\276\003\002\277G\354\215\276t\321&>y\020\365\275\321j\342>\323\2434>\233\250\004\276\273\357)=\037\327\355\275\343G\245>\210}j>\255\036\230\274)6\200\274/)\027?\013\322\027\275\"\313\024?\305\350\000\276p[\243\276\356\305\213\275\267zR?hV\263\276Y\354\217>\325/B\276\343C\304\276\343\002\326>\321\010\323\276H\215\253\275\323$\351>*\265\264\276e\201h>\004\311\007\277\035\373\023;#\221u>\355\003\226\276%\024\233\275\271\007F=\212\276~;\314x-\276\230\263\014\277\032\273Q>N\264\265<1\000e>\340\273?\277\235\274*?\214\316W>\014\214\256>\200g\237>R\276\220=2k\376=v\0269?\301A==\262\362!\276\3408\306>O\316\275\276\2152j\275\000i\323\276\365\215\013=\275Q\016?\273\313\003?\370i,\276^\003F>r\321\341=\236\r\034?\376/\021\275p0\222=\330\344\311\275\342/\030\277l\271\244=\214\251\216\276\0216\357\276t\250[\276\246T\023>\013\315\332>\210\266\006?\316>}>\007\276\247\275\332\034\271\275\272<\036>\216\242U\276o\304a>\255]\214\276]v\"\277\003i\343>\004dv>B\233\210\276D\372\017\276\256#L\275\313^j\276`G*\277\005\273\254\275m\302\264\276\237\255)=\206\3466\276\253\032><\241\365\322=\177\202\315\276u\303\333\276\027\001\024\276k\346\201\274\335\246b\276\345\2105\276\361\231\343>\276\356\024\277\370x\266\276u3\230\277>6\303\276\010\331\224\276X4\202=Fm\324\275X\036\314\276\357f;?A\206\001\277\013\240(\277\342\355\300>\002\225\307>\233\213\204\276O\345\306\275v\217\213\276:\016*:<\215}\275\240\032]=\265n\267\276\031\336\372=\315x0\276W5\202=\21358\276\265n\274>\372i\332=f\030\205\276\234\\\365\276=b<\276\251\224\324#\035\334\2769E\342;\002\252\235\275\363\031\326\275\237\241\013\275\355\307d\275BA:\277\216\337\030\276y\354\004?\276>\222>\372,\270>\036;y\277\314\"\223\276\035\354\022\276\276\001\324>!\004_\276\342\213\241\276\360\302k\277\243\354\036>vq/?g\321\336\275\226c\317>\231\302\037\276qXQ\277\217\272\"\277\364\355\260>\t\333\214\276\245P\224\276@\325\231>i\241!>\265l\252>h\r\323\275\021\307Q\276lk\034=\034\037\024=,*\027=\327jC\277\236\360\001?\332\263\356=\323\304\365\276\354V\"\276|\030\216>~to\276\013\'N\277-P\352\276W\023\276<\223+5\276\273\t\340=\320r\226\276\006D\017\277\272\214\333=\210L\245>\211\351\306>\352Y\242=S\000\375>\312\031w=\360Q><\334#$?\221\307\000=C\'\'?/:\034>P\355Z\277\373a\365>\357\023\013=\206\377\311>\347\262\204<\000nV\276\371\363\352\276\344\025\"?%-J\277\362\355\260>\253\300\325\275\321!\021\275\253\206\210=\324\335\032\277\004\333i>\367\340\310>\216X\346\276\374\221\333\274S.\255\276\250\266\320\276\332\317\277>\005Ud\276\250\022\207\276M\027\353=\355\377{>\302\313\201\2741F\000\277\002\031%\276@\361\256\275rd8=\355p\241\276C\241>=\006\177\306\276U\266\263>\214\'7>c\352\021>\235]\263>\354V\272=\332\274\336\276U9\253\276@\022\326\276\345\376\353\274W)\003=\206\214\273\2761v2\274\327x\004>\240\024\276\273\023\013\203\276mh#>\351x2?\242\214\341>\002\311o\275\234\245\177>\310\324\246>\351\200\002\276\024\233R\276\022,L\274\240\316\303\275\022*\303=\236\343\023\277Fh \276P\243\275>\263\357\236=\310\014\361>\016\022b\276\270\221k\276*\374\265\276\373iH\276\3143~=C\003#>Ag\336\276\326\262\'\277^\223\017?\003\236\007>nJ.\276\274@\205;BO\300>$\300\215\277\236\255\316\276u\305\005>8\271\253>H\005(=\261\304w\276\213#>?<\037\224\276Vq\003=yX\240>\222\243\325=JW\345>\372z\240\276\201\254\377>\021\2442\2768\224\276\275W\031\314\212\351\024>yl\350\276\323#\010\275l\3003?BlL>\363\237\270=\370\223\231><\242l=\2409\306=$\230\305\275\021Wf?\361\214\311=\371U\336\275K\3374?Zs\200\276=/\036\276\341m\225?\255\236\230\244F\004>\206\321@\276\323$c\277%U\004>\027=\260\275\3313\256=\313\242\250=\303\242\203=\',d\276p\250\017\276+0\002\277\377\316\027\276\022|\013=\251c\261\276\3025\253\274\352\005\265\275:\241\302>El\001\275\323\036\026>(\033\331\276\255\306(>j]\241>f\031\236>\014mW=N#\007>\231\313^<\034M\010\277\022\3527\276|@\234>\253d\334>\014\2553?\026\212\020?6\000\211\272\311d^>U\206\224>\301`\313>=\211\002\276\240\300\332\r\177C\275\354xi\273\201\337\325\276`\307\234<\304 /\272\t\302\030?P\320\321>\340\344\251>l\237w>\204kW?\027K\260<\322\t\346<\342\326B\275\336\014Y=\232\316\004>\241\271\317\275!\277\025?\314\250N>VC\004>\006\246?>O\020\026\275\345\016\t\277\351\363\357\275\301\205\226>qP\003>{\001\254;\375q~\276\360/\373\276%ye=]\325\203\276T\230>\276\255C\240>K\203\262=\346c\243\276:\010A\276z\202X=\276\237\014>\233zC>\316\361\226nc)=-y\227>\221\262\221>\021=\374\275M)y>%%J\276.\376\2759g\227v>\225x\203>\016(\371=S\365\242\275\276\241-?\225\304\255>aM\327\276m0\204=\325r\223>\366\234Y=\177lq>\3052\023\277Nu=\277\374EK\276\320\371\210>\303\336\247\275\030\002=>\235J\225\276Q\221G\276\3473\223>\316;\210>\225\032\324\274\367a\263>\255H:\272\375\2576=\037\265\370=D\331\265>\211m\250\276\347|\343\276\352\t!\276\025\\\377=z\002\320>\376\021\224\276\377\243;>Z\303k\276BI\222<\017^J?0C\031=\007X\014?\247\250\261>SI\005>\375A\006?\3742\245=:\006\203=\341\367\242\275\275\256\226>\324\255#\275\311(V>\307\300\024\276L\227^\276t\201w>\247O\310\275\342\273\234>\240<\002>\345\321w>\262\350\217>\025\323\235>\260\242\337\276\275\243\010>\202\342R>\221\255\302\276h\025\277>\215K@\276\232\333\327>>?\020\276\226U\226>\035\2254=\205\302\264\275\030o\206>\320\037\354\276\312\230i\276U\030\"\277\030\242\342\276\241O\336=\243\373[\276Q\232\023>\226\331\252=%\236\321=\317\037\362=\314\006G>)N}\276\216\257\370>\2776/\276\263\036\236\275\272\253]\276u\317.>\013Q\217\275\254NM\277J\271E=,=M\276\207\341f\276/FY\276\332\275\003>\220\' \276\033\022\324\276\273\\P\276B\007\353>\026\210\371=o\037\325>d\334\241>St$?m\036\001\277\327F\230>\210\236\212\276\306\300\256\276\320\204\024>\300\337\344\276~%\243\2759\241\307>m\tt\276A\325\326\276F\251\212\275X9\247\274X\375^\277\374(U\276\267h\030\275-\354\275=2\227\223>\257&\237\276\336\243\t=\324\365\370>x\307\227;\237\336/\277\246J\367\2755S\320\276\364YH?\216\032\216\276\306\370\326<\003\350\234>q\330\235\276\tt\241>\300\243\245\276\024HB\276i\243\r\275\265^f\2767\231\265>cF\253>j\024\221\275\014f\276>\3769\351\276u\351\310>}\244\245\276*\314f\276\212\260\361\276h\t\247\276\220\n\306>q\347\244\275\356\217\220>=\235\265\275\373\210\024\277\022\0257\275\307\352\001>\004\364\226\276\227\331I\276\217\351\321\276;L]>T4\004\277\273\301\001?\371\000\221\275\276G\207=C\350\215\276(\301\342>\251\n+\276AO\241\276\331\340\267\275f\210\373>\325-\245>\033\244\312>!\311}=T\277\356\276\312\256e\276\024\233\023?\253\206b\274\312p%\276\225\220.>\032\027\212\276H\215\267=\001\260\215\276\322\207\233=\262\227\002\277D=\"\276\223K\240\276c\275r>\030\300\022\277\277\020>>\230+O\276f\273n\276\317f\n\277K#\\\2770\265\232\276\2449\026\276~\355\356\276\250/\245=7\246\335\275{v\006\277\264\355\307>\321q\214\276\340\311_\275\221\377#>\352\224\355<\2007c\276*h\n\277\373\356\r?Y\r\363>\022\256\217>\252\202S>\366O\215\276\233%\220\276U\215\211\275H\002\364\275\006\375\233>a\374\003\277\010\244\310=,\365\233\276\311\315\206=\010\026\273\275TM\365>0,\253=m%e\276H\r\201\276\036>\000?4\317\031\275\226\360%\275\345n\001\276\\\220t=^\301\025\277\243\010\225?\177\226\375\275\277\3642\275\205\220\351\275@\272\312={\031\235:\322\347\020?L\033\020\277G\222\266\276\253\266\335\276w5?>\221\253\263>\016\024^>1\r\344>\355\237\242=\326y\271>\216\352P=\275\355\300>\336\224`\276\004\260\263>\265\\\222\276jD4\276!\375\006>\2431\301\2759\020T>\317\202\311\276Z\2560\277\277\005Q>r\321\255\276\022\345\t?N\353\366\276\'\222\372>\372\212\265>p]\003\276\334n\203=\224\347\007>\360\016*=\303A\226=\254\014\026?:l5=r0\220=\025\250\"\277)/!\276\363\301>\276\006\374\026>\003\030\211>e:\255\276\217\241\212\276\200m\371>T\374\\\276R\375q\274\365\002\030?\3031d<(\370\207\276\216s\317\276pj$\276~\223\006\277\346\014\022\276\247\322*;\333e.?\326\376\303=P\200\035\2761y\345\276.\016\220>x\234\266\275\215\260\237\276\310Ql>,\372\217>zm\001?8N\224>\273&y?\001\325A?\304\225\220\276\013\365\036?(\321\355\275w\200/>\360\0045?\257\217W\277S\312I\276O.i\274\330\244\331>W\2160>\t\324\331=\244c\364\275\244R-\277\320\276\270\275\266\232u\276\032%\235\275w.\251\276\205\0047\275\245!\034\274\314\365\212\276\2503G>\352\207\372=\360O_>Y\247\006\276\341\364\337>\236\223\302\275\211\226E\275UZ\240=7^\327\274$G\240\275\253\003\222\346\376R<\n\343\036\276\2167\033\2753\322(>\302\323\300>s\343\277\276\345\264\257\276\304<\323\276\345\361\203\276J\340z> \374\255>\357\361x\276|\373->\356o\036>\322\307\350\276}*\236=P\337_\275D\307\206\276OP\234\276\241Jp\276\304\351\205>\365\025\224=\270\305\313>r\240s\276+-\254>4\2427\275<\266\226>:\301\204\275\254h\367=X\274i\276\032\316\013\277\374N\033\276\003\324\255>\215\332\356=\010}\275>7:F\276\246mu>\215\353{>\322\272\215\276I\227O>\347\307,\275IK\373>\331a)\276\336\010\300<\213\351\">\"\014W\277\363\217\270>\024\n\327>\241\331;?\200\200*?\333~\222>so\230>\214\307S>{1\024?\010\310\206>\235\346\327\275\242F\325>\307\020\245\275\013\204\206=\034\0233>\232\372G\276\301u\005\277`\272\203\275u\030\030\277Z2\027?33&>\030%\323=\263\214\325>t\330\247>\352\232\214>b\217\336\276ZB\217\233>\250!\035?\241\360\t\276\027~\007?\3126%>\214\302P\275\037\353e>\0278\320\276h\341I\275\310\001s<\364\300\314>\"}\252>\262LT>\343\255>>6\364\272\276\312\342u>\332\037\n=R!\244>\013\252\343>\303\201\245<~\220\177\2761<\023?5\3740=\032\3575=\252\356\203\227\025\025\276\221\032\003>r\366\234\276~\304\354>\261g2\276\326\250\340\276\234b\356=\007\376\201\276\277|\263=\230~)\276kF\016\277\270\303o\276\376Zw>U\2134\276\017\224\211\276\376U.\2763\251V\274@*\232\2760\253\035>,\305\310\276\314$\273\276v\034<\274\202\236\276\276\367x\037\2762\215\221\277\302?\006? \323\r\276\016>\027\276N\246o\275\260\332\375\276}\200_\277\021\221m>\356\302\223>\r\202\211\276j[\273\276\3765\224\276\264\225\234\276q\025\355\276\021=\201\275\0068\307>mR9\2770p>\276,\016g\276\3731\201>\312y\241\276\332\375\312=\353\201\001\277\364\341+\276\316\330)\2777\353\250\276-\361r>\325\342\'\277\325Y\222\276\013E\207=\344\2174=v$\311=R\221\362\2745g6>iH\370\276\256i\005\277\263\361^>k}\263\273J\237\326\276\233\365\027\277\301\001\206\276\365@D>Q\n@;\265\336*>`\274l\2770\216\213\276\374\352\234\274\207&\242\276\226{\005\277\202\222\330\276\336s\201\277BLR\277+\310\274\276:Z\t\277)\354\201\274/\242->\230\307\221\276P\341\000\277\244\003\354\276\216g4\275\2761G?\261\tF\277fbr>\213\000H\277\034\307N\276\017\027\221=/\236P\277{\323\'\275\315\022\340=w\353\270\274\345\330\376\276I6\204\274:\334w>\303\316w\276N\265\r>Tk\341\274\311\364\261\275\003\340A\276vST=p\334\242=\274\343\224\276\236\356\225>\203\334\211<\014\265\314\276\257\267 >\361\027I>\314\021\374;\234T\203\276\364d\257\276\314k3>W<&>\206(O>\267\026&\275\250\344z\2765\350`\276Bp\034?\213M{\276W\254\030?\340\314\235>\273\236\001>\256.\375\275mG\231\276\373\276\251<8\3467=\037\306\237\276\352\256\226\276\016\253\260\275\337\203\215=\210\002\202\276\376%\006\277\0014N\275\233\322\010?dy\354=\345\023\006?\001Xs\276\300\211\t\276\006D\205=\303\315\206\276\355.H>*\214m>\203W\004\2751\034\364\274c\214\255>\343S;>\245\223\374\275;f\240=\322\202\274\276\371\\\271\276\353\341\313\276v\272\255=\3744{\2760\034\232\276~\200\025>\027\210\350=e\242\221>\307g\354=D\370\365=\3133b>\255\201n=L\232\021?\200\221P\276\'\3644\274=\240A>(\305\263\276\032\242\025>\260\326*\276\352ke\276\325:\032?\016H\316<\336\350\314>\243\377~=+\305J\275\307>\255\275/)\336\275\213\211\002\277L\3104\275\037\211\212\276\376\265#>w\256\005?\313\216\232\276\255\275\351\275uG\326\274W\232\242\274K\310\266\276\270/\277>M\322$\277\302\036G\276=j\035>7\240\022?hf\201\276s/\376\274\250\3453=U\305\236\274\034\376\007\275\207\200&>^\232\022>\206m\317>\307\232\320\276&\366@\277\002\346\343\276\343\232\010>/\313\217=\366\212\344>\217\027\266>H\227\233>\305\007\002\277\217\030\"\277U\013\030=\271\326\006?\221\3274\276p\313\211>2I4=+fy\276Yir=\212\214\023>\227\262\366=\323\222\371\275\230\274\014\276\t\232\276=\014\303\265>~V6\277L\247]\273k7\232\275^\032N\276\217o\345>\'\222\002>\243\'\357\275A\272G>\235\304&\276\t\242\031?d%\216\274\322wM>tj\025\276\263\276\274\2750\270:\276\340\214\376>\204_.=\342\342\212\276,z\222\276nl\037\276\312`\310\274\004F\200\276c\020\275\276I\224\206=&\213\003??\227\243\276\373w\034\277\037\265#\277\366l\005\277+\321#\276\356\276\314\2766\004\367<\200p\022>?>(?\310\312\376>\3330n>\370\200\314>\257\213|>\207-\275>rRg\276\371nF>v\021\031\276\007T$\277\222\022\265>\026>\211>e\204\242>\002\323\325>V\236R\276}\245\316\276\263\007k=\277\260B>\177[\255\276\255\222\372\245sT>\212\251!\277\366\232\361=}z\014\275\210W\344\275\254\221z\2769D/\276\221\213K\275\313\227[\276\021\014\261\276\013\324\320\276]\330\215>\000D{>\354\212X>\254\2060>\306\243`\277\n{\207=bW\203\277\360\326\374\274\204\265\214\276-\251\347\276sA8\275\201\305@?m\342\034>\034\207\220>\003v\216>\375g\317\276\021\301\t\277\375!\226=\2657\334>W\020\014\276\336\312\t\277:\020g\276x\370\203>3\347\335<\376\357\001\276\334F\017?3c\260>+J\277>i*\276\276\r~m=Z\221\031\276\'\254\320\274\201J=\276Y4n>\265\r\322<\254$\337\275\223Y?\276S\361&=?d\266<\205N\254=\315/\276\276>[r\276\352\231\n?\302\205p\275U\036\367\276\243i\352=\027\277\037\274E\224@>\266\245\004>\357i\363=\2209\242>\332\214\307\274\332&\370>\305\323\351=\324\004\303\276@\246*>\223\244\274\275i\334\363>^2@?\322\343\357>\305s\177=\250:\354<\241\201\316\276\n\256\276\276\033i\324>\256\331\002?\273GR>\375\354\037>\010\244+>c\251\364\275\rqd>)X\004\275\3748\271\275\"\237{\276\030\326\200>P\324I\276%h\220=\222)\201=\330\035\325\276\315n\357\276\371\030_\276As\324>[(\260=\354U\002?\374\235I>/\004\032?\270\357\255\276fE\344\275\310?\313>m#h>t4\016?C&\202>\264\242\370>#\237\t?\022+\274=e\334\217\276\205VJ>\'\020\376\274\363\321\330\276\263YA\276\262\362v=_\232\230\276\305\024;>4S.?\270\301\207\276@\271\300\276%\356\232\276\026UC?g\243#?\034\"\030?N\374\'\276m$l>|\376\021>v\254\332\274\300\236<>5t\204>\277j\227>@\221Q?\212}\233=\016*\362>/\266\361\276p\001\206=mz\225=[\314E?\010\'\n\2764\240\206>4c\221\275+\304\026>\363\215\300\276\230\016$\275*\272\330>\257v+\274b.\326\276~\264`<\001\230\361\276d\331\233>C\322\307=K\372\214\274\326\334\234=\232\234\360\275\375P\221>_!~\276Z\227\220=\234B\351=~&2\276\201hx\276\221-\211>\330\273(?\335\326\317\275\275\373\212\276l\342\240>\007B~?90E?\363\223\362\276\241\t\262=\256\016v\276\002\007\234\276@\253\375=G\336\335\274\306\246\032\276\360i\237\275t>\001\276\240x\215>c\367\356>f\203p=\016.\306\276vz\352=\005\002\216>\244\215\206\274\255\366K?\231\202\351=\373\306\303;I\000r\276\004\004\266=\372Y\344<\243=\254\276\014\177\373\276\341>7\273\016x\026?\331\364\177\274U\332\206=\344 @\276\r\306\212>\356\032\037\276\265W\033\277Wr\267\276\231%(>$\036\204\276)cG=\316(\361=\346\330H?\241V\256\266\276<\0328\367>\3703I=\231\'\303>\213\303\215=\037\340x>\013 r>-;\020>\370\234};d\007\340=\360\345\037\276@\003\211>\274\374\254>\346~\275\275\357\265I\274q\207U\2750\344%\277\023\005&?$;\010?.7\211\275@\352\250>U\270\232\276\034H}\275\271i\361>\315\344\214>\035\024\217:\005\034\322\276?ec\276\336J\354\275\227\271\306>\335m\353\2757\347t>QZ\r?\237\007\030\277n\302a\2741\340\310\276\021g.>\000\340\031?\337\177+>\276-\334\274\245n\272;!\330\341>\255|\337>\224\215\003>-$\252=\305y=\276\036U\233>t@\215>\203\264??\353\021\233\274P\361\377>\272\022\323>\332I\235>\251\377\253=g\346e>\361\032\330=\t\222\237\275U\343:>\310\302\310\275\240\303Y>&(\343\274\244\032D?\007\305&\277\276\214\330>G~?\275\233\351c>4\323\364=,\226\033>\303\255<>\262\236>\276\021C>?M\326p\276\272\010\211>\\\352\023\276@\244-?\204\327\001?\034\315\255>`\317p\275\270\321\375>\257\177\216=\372q*?\371\252\206\275\276\341\340=^\251\325;0%\034\277)\250\003?<\033z\276\211=m>\317%&\277\217\323L>\204\200\345<%Ur>\334\027\222\273_\250\265\276d\202\373\275t\350M\275\245\343\343\275\356K\027\276\232\276\n\277b\363%\276\30158?l\205\266>\026\346\227\276\215\r\221\276\017a\315\275\374\037.>8\227\214\273\217[\030>\372\340\340>*\226\312\274\335\2664\277\260G\246\276\262$v;\212)\037:(\243\214\275\'\256M>)/\361\275\304\307\031?\324#~\276\302\273X<\366\007\307=J\223{\276\247\276K\277}P\265\276(\252\366=\263\3712\277\\\216\t\276\014\340+>1\346\345\274\0319\t?Z\322~=V\031.?\316m\374>\253\260\032?N\000\235?g\017?q\305\311>\370%;?\232\014r>\252\365\242\276\330?M>\351\251\354\276N\342S=\345E?=!\307\224\276\206\024\r\277\036\276~\276=\022\266\274\230\266\007>>^\223>\224>\025?\t\017?>5\036\244=\013\311\210\275\305\370\374{K#\276\353 \315\274\014\265\375>*M\274=D\330n\276\367B[\276\301\333\222=\355\277\352=\274\316\311\275\301\0277\277\301\343\177=\354.\227>\033(\005\276:\344\010=B\007\244>\222\3476?\340\351?\277\2579\236\275\244\351v?\371\000\375=\372\345\035>\304\177w>\365@$?\035a\202=\r9\211\276\250\356\267>\023\242\332=\340\373\355\275joi=\242^\323>M\306#?aH\014>\030\2326<4\202\020\277ftE\276n\200/<\013`\247\276s\307K>\022\214\336=\244n!>\231\326\326>`\026\275>\226\301o\275\230\262\351>\027\212[\276\214\260\217=\261\321\002?\251\246z>\371\213\000>\022\340@>2\025F\276|\254\210>\355\222W\276\n\\i?\216\201\257>\234\014}\275\317\311v\276\202\0027=\231\325Y>8\210l>,\366\336>\266\376\340>i|-\276+\014r>\272}.=\tf\367<#\272E=\372\365\r?\210^\027?t\203;\276\\\010\335\275i\010,\276\253\250\n>\313r!\2767O\340>D\373r\276\321\227\203=\247\253\003>\237S\200\2764\016\244>a^5\276SY3>\004\232\251\2768\260\235\275z\363\373\273`\210\017\277~}#>?\324\201\276\023OA>\364\217\346=\225\261r>\375\242\n>\304&6\276a\344\350>\204\3562?\tv\252>\342}\305\2769T\215>\234\277/\276)\313\261=\341S>\275\217d\361<9R)=\333\247\300\274*\216\010=\343\263\325> /\232\276\034a\236=\343fp>\265\211d\275\210:`\277\013\020/\276\022\236\243=\372\r\035?\336\241\251\275q\364\272>\313\232\033?\252\214\323\275F\376\217=\341\216\016?\022;f\276\214\017\311\276Y\361\221\276\212*=>?\343x=\331\343\025>\266\366}?HH\346\275\226\306\n\276\244?\250>\323\t\013\276\026\t\016?\3042\245\276ua\202\275Pd\352\276\275\305\013\277\010\305\024?^u\244>[\023\352=E5\341\276P\237\025?34U\2767\004\322=\337\2309>C\315\225=\347\025\332\276\254\227\204>\244\215\017>3\342R\276\312\010\263\2769h*\276\254\3269?\307\005g>\350T\350=\3344{\276J\363\323\275U+`\275\323f\257=.k\340\276\223p\351\274\220T\002\276\226w\003?a\355{\276|B\375>\240\217\213\276\330 d\275\377\241\254\275\265m\002\2767<#?n\217\310>t\\\337=e\000\361<\203$\244\27550\362>\251K\327\276Y\035\346\276\365\362\n\276I\221\364>MU\035=\267\301\361\276x\262\232>\036S>>\001\227\350>;\340I>,\372\370>E\214}\277\274R\037=p\274\244>\245\332\357>\332\001\226>\007\202\003=/\316\327>\260\235\245\276\033$H?z\0226>\'\311\373=QH\001\277AVD\275=\344\312\276\267\'\352\275\326\362\234=\331]\216=w\342\325\275]\243=\276\337\312\202>\006\020\266\275\020\212x\276J\203\242\276N0\240\276\256q\263\275O\325L?\343\237\224>\362\244k\276w\274\203\276A\030\210\276t\352v\276~\262\033\277\321\177\027=3>\201\277D\357.?\337\207\277\275\333\346\027\277\366.\344>n\026P\275I\244\277\275\234\206\205\276\241}\014?\277\004j>\311\267\240>\274\010_\276\034\256\303\276f\0361\276\321\305\357>\361\2435=\266\020\235\276\030\212L>\022\341\205\276\342\034\363=`\337\214\272ic\273=PQ\306\276\317\265o\276\331N\023>\3659\245\276\245q7\275\300\254G\276\025q\323\276\272\243\026>\233\212\262\275)\335\000\277c\234\216\276#\321\005\276S ;\276\212\310\270\276\270\2647>\006\353\312\276*Vw>\252\177\230\276\370\037k\275.\320\212\275tl\246\276\266\206\266\276(?\023\276\001\"\271>\374\0346?\341|\325>M\256~\276\301s\305\275\344a=>\267\345\250\276\347\245\030\277\245H\275=\261\344\312\2754\025p\276\304\327t\2766,U\275\271\230\014>\202M\271>$\313\217>\301\213\221>?\364\223\276\023\362\234>K\266\350>DJr>\375\354\234\273;\rP>R\016n\276\212\354\236>9\322\035\277\372k\205\275\000\360\343=\236]\222=\346\007\245\276\022\3413>6q;=\301\317\305=\265\025Z\277\250}\004?\031~\007>&\325\232\276I\254\004?\375\242\020\276\266\330\010\274\256\241\214>\037}\335\276\210\363\223\276\035\373\261>=\357\315\275\2175h?\217x\244\276\273\2135\276\373\342\035\276Tn3>:\263@\277\3647\323\276\246\030\264\276C~\006\275\004Z\272\276\210L\221>\363*b?\276\276\004\273\330]\376=\326\373g>Oe\034?\205K\244>;\347\202>\034\345\017>\215\277\376\276Vg\005?\271\366?>SC\370\275\326\233\005\277(\326\"\276,\325\207>\324\221\230\2767\270\021\276\203\2601?\2263*=\214\245\264>\3463\260\276\251\025N?D\244X\276\225\\B=\317\352\212\276\026\262m?\374f\024\276\317b=\220\3322>^\276\242=\024o\241=Q%\330\276\321\213\037?\033@\235>\003\375\222>\004\363\256\276\237\332N\277\310\347\020=\000\'\023\276\023n,\276\275\242\272\275\322\244\316>\252\007\372\276p\354J>\325}]\2765\322\001?\350\323\375\276\023o\355>\325[\037\275\272\257e?3t#\276\010T\345=\332ri?M\265\206\276\301o\315=\027@\231\2634q?\035\337\341\276r)\302\276\335\237\330\276\316\226\252\276\016t\346<\0109\t>\351\364\246>\374\257\243\2760\266\031?\305\310\027\275\010\247\312>\202p0?.k\027?K\317\205\276\324t\313\275\030\310C?pM_\276\247L\274\2754b\002\277\361\031\361=\020(\034\276\335\326e=\355\253\243\2767\305h=v\235\023\277\334<\022>\254\207\325=>\310\333>\215\364@?5\"y\276C\307-\275\331\010\274>\240\302(\275En\365=q\250\233\275\244\274\303\275D\321\356<\246\371\230>\250f\335\276?\365\253\275\267\325(\277\027\346?\321\262\002\276\242\315(>\263\363\266\276xZ\246>\001\375f\276\002!\022?L\327\007=$\177`=\245\036\221\276\'lG\276\"\356\021?\025,_\276m\361\200\275$k\376\276\317\"h\273LJ#?>\254\t?t\272/?\202\374\253>P\300\031\277 !\331>\0367\332\213\227\275\276\217\332M\277S\251\345\275\254M\'\276\035I\300>ks\216>i\016@\276\016\242(\275\300\034z<\222n{>\017\341\202>e\351\253=Pf\236>\315\346\250\273q\271\006\276\234\370\343\275g\232\334\276\257\246\237=\345\245\242\276\233\215p\276\2539\354=f\177\374=\200\252\301=)\035Z?\276\303\233>\023<\203>0\264{>\022\300\215\276\374?\007\276]\331t\276Z\037\244\274\204\246\342\274s/>?\213\327,==\211\254\274\257\323\374\275D>\217;\343\366r>0\263\\=\004\275\227>\005\035G>/fv>\303\221/=\314K\331\276z\255d\276K\323u\276> \254\276\371\302\332\275\276\372\"?Eh\025\277\316\245k=\013@\246=\031\310N\277,R\235>\347\341\250\275\2647\226\275jn\005\276\260*\217\276\037\340\373=\206F\303\276\355C\221>\305\370\013?\377r\267>G`\032?\035\203\321>\2531\251\276d\254\224>\"%H\276\315\367\025\277\362Ey\276tl\242\276\247\241\343>#x\330\276\025\370\217=\324\377\274\276\311/><\323)\022?d\375<>\222\030\267<0\313$?Q<\323\276H\034\262=)o\235\276\'\201|>b\312O=\030\250h>~\261O\276\200R\023>\247$\025?\334d\232\276E\235\320\276\031h\201=\354\341\232>d\272\241=x7]=\375\355\035?P\025+\276^\303\240\276\271\021r\276U\225\002\277\030\211\016\276 >G>\265\210\366\275\223\032\003>\364\257\317>B\334\013>s\010\245>Q\251\373<\221\207\254\2766\004\310\273\302\226\237>e\273\223>\2613 \275c\334\211>\265\207X\275\346j\013?A\340\212>n\371\364\275\245e\022>\336=\222\274\315\356\027?XtG?A\220\273>\256\337\205>\323\221\345>\016\201\312\276\237N\033\276\214\211\317\2767\372\277>%o\303\276S\273\270>\301\002\303>\333\247\337\276\001\330\t?\231\021\340\275\001G\035?\t\311\363\274\373\371\346\276\014\277O\245\274?\204\200>\213\337\350>\243r]=;s\021=\351v\245\276\235\253\231\275\375\365\203>\376\271\t?~\240w>SG!?oV\365=b0\215\276\027O\254=\211\303\262=\242\236\263\276\361Lv>!\2079\277\245*1\276\210\2229\277|\002\333>\354\013Y\276\275\217\215\276\247\273$3>\340\251\220>\311\226\207>\222\316\203=\332\016\007\277\"\302S\276\205y\301=\313-\223>U\326\213>\006{b\276\322\220\000=Q\221\246\274\236AS>|\222\272\2759\364\226=\360\245\217#\355\360;\255E\252\275gr_>\345\\\233\276w\263x=\341\346\275\276)\232\241>\250\211\303\275\350Y\231\274\001\242\322\276\253~\302\276\3140\025\276\202u)\276a\325\265\276\230\204\002\276\266\204\340\276\021@\277\276\230\205\345>a2\n\276\002=\351=\301m\341\276Q\350\307>\355\304%\276\272(\226\275\005\214]>\024os>\271,\322>\031%#>xB\363\275q\304\374>%\324I\277\335\226\263=\257\262\306\276\n\n\t\275m{\356\276\'\330\377\275\017\334\227>G\351.\276\013\000\021>\333\232m\277\216\276\233\276\332$\226>\360F\307\276\3043\215\275\300\220\225>d^o>\222\266\021\273\007<)<[UN\276(\013\222>\244\355a\276\263 \246\276\3666\261\276\221\375\227>\376(\224>\023C\007>\335\036I?zOZ?\020S\022?\325\020\241>\264\211b\275p\245\r>e\205\324\276?\307t?q,z\276\270\327_>\260?\340>\201\372O?\r\343\'?\372\3568=/J\262\276\363!s\276\217B\265\276`U\251>\006Y]>9\031\304\275\007\tT\276\214.\352\276\010\3135\2771\002\225>\036b!>\360\243\003?\362\017\360\275qC\264>Q\265X<`\266\022\277\262y\204>j\334\241>v\355\026\276aI\356\276P54\276\007~_\277\2519\031?\277\013\211>E\214\351>\361K/\277\344qb\276\226!\327=#\304\261=}\000p\274x\374\225>wq\274\276\006\026C\276>*\324\276F\2602>g\360\027>\274\325\321\276\376\351\250\276S\020X\276\326\322\352>\227->\276\\\353\200?\212L)>zT-\277\376\236\230>\272\262\005\276\022\005p>\211d\323>z\007,>\300M\211=e\035\226>\233\310\r\277\n\r\246\276\324L\024\276\006\221\271>\313\002\331>\177\026\010\277\352\374h\277\247\366\360<\007$+>\240}\272\274\3575\321>\236\360&\276\366\352:\2765\371n\274\301h\030>G\376\230\275\027\221\030\277H\022K\276\220ZV>\\\020Y<`l\323>\232\353\244=\003\233l>*\356P\276\322\340J>46a\276\217\033\271\276\342YO>d\237z\276\303\333\240\276T\013\257\276\375y\311>\231\026\025\277\375\350E>wf/\276\277`\004\276\201Y\244\275\261~\322>\333\316\267\276\204\216h\273\241\323\365\276\317\211\202\276\304\2055\277\301\260!>0Bs\276v\335\331\276q1\365\276\351P\307<\326h)>\353\024\321\275\021\357\267\275#\266\351\276wJ\000=\003\217p\276jTW\275x\002G>\256A\364\275X*?\276C|\032\273\377\031q=_k\005?\353\226j\276\213\307g>(b\332\276\263Re\277\240Y\305=\2137\007\276\203\311\264>h\000 \277H\332\227\2740\326\250>P\342\375\274\2272\221>\276A\230<`\315\325\276M\355\233>\033\310\264>-\024\356\276\260uh\276\307\270&\276\211\351\"\277\265n\245\274R\266}\276\016g\304>R\227\354=\325~\226\276Q\235\303>\005\206\251>\017\216\367>\240\200\243>*L\315\276\2201\021\277\210.J>s\357\214\276\226\277\314\275j{:\270\tw\001\276\376W\r>nO&>\355v6=\335\376\226\275/\203\234\276w|\320\276{\274G\276\002\307z=\317\361\250\276\252\302%\276ig\274>om\224\275\374\360\215\276\313\307\007?~\242Y>\021\303-=\240\302)\275/\333\215>Zq\002\276\313\327g>\261<\237>\272\210i>g\227\253>5%\332=\3222\250\2752F\204>Q\266r>^\234\270\275\020\024\\=\217\022\273>~\243\030>\370\203\0328^\241\304>:\016&a~y?\233\035\016\276\222\003\367<\201\272:=\212\2726\277\000(\023\252p\304>\200\317-\276\342\227\330\276\227\326\017>t\241\256\276\3700\326\276\346\026\020\277B\275\211>\317sw\275\277\373C\276\014\"$\276\361J!\2777\252\217\275\230\236\365\276 !F=\204`\362>\254rq\276\2512\252\275\243\307\036>\253\374\345\276\356HR\276u\013-\276\021%\210\275\360\257\203\275\370\262\013\275\276\354\222=\036\305@\276\321d\375>\2146\307={\031\035>>\340\021\277G\221\375\275\024\232\241?\373\037\357\276rX&\274\215\371\330\276\r\272\006\277\207\002\006\276\240\200\250={\236\234\276u\217\312\276\272\271\263\276\245C\n\277W\375\273=+\245\347\276\354\274C\276\324\221\317\276\257n\230>\374\251e\276\351\0178\276\313\375\267>\023\000\212>We\010\276B\305\037\277\306\254\320\275\257\2231\2769\224\211\276t^\243<\024R\210\276\276\260>\277\\\302\343>\333\366{>\255\004\340>wY,>\242#\002\276\225\3304>\376\010*\274\367mN=s\202q=\223\037]\260>\231\274\257\275\0137e\276*\217\337<\256\247.\276\224\321\241>4\204\310=\270S\257\276\036\311\247\276\305 \262=A\t\n>\316w\233=\217\366W>\263\252\335=:\342\372>Y/\270\276\3325\237\276#\234\264<\337YN\276e\344+\276u\234V\276\344\374\'>4\322\333>[\376\370\276>\006\006\277\316G\364\274\325\014\314>\216\215>\276\357\214\324\276\352\361\037>\334c\034>\235)\270\276\003/c\277\373\273\364>\016C\346\276\2316\276<9Q\036\276\022A\251\276i~f>\314\370\247\274\361/k\276=\300a\276\236\373\354=\373}\207\276\nD\017\277\233\250\021\277t9\002=\\\r\221>_N\251>\300\013\004\276\010I\205>V5\303\276\223\304q>Z\242\261>\035\031\266=\206\031\322<\177Z2>\007\241\014>\1774)>\211,\004\277Q!x\276@!\217\276A\320\234\276\323\204p\275\351$R?\217\005\212>\311\335\311\276\322=\346\276\332\233\016\277\355+z\275\320\340N\276\357\r\374>GZO=\025\024\374>I\361\352\276a6\314\276\r\226\241>\242)\027\277t\306\204>\372\364\232>K\021=\276\355\340\001\276\314\377\200\2752v\027>\237\3445\276\233\\\343\276tm\342\276S\216\027?\321\033l>r\2426?u$h>\365\225\006\277\3548\324\276\034\220\356\276d\331/\274P\037\317\276\375\0047?\367\277\373\274+\221\026\277\304\260\023\277I\004t\277fIF>\215\346\342\276\366\2654\2772\251\377>\016\325\260\276+=\361\276\353\373\002=PU!\276\014\020u>\021\276\202?u\201Q>\215\363?\276.?s>#\376$\277\242\253\377=;\303*>\030/\356\276\221\333\264\273\327U\235\2731\226\021?\271\365\277<*_!=\034\231\232\275r\253\364\276]\341\326=e\370\017?\256\343\r\275\210\340\326>y\267E\276\242\277\367\276\2349W\276\272[\007\277\'f\325\276\377D[\273\305\367A\276\321\004\241>^\271^\276gP\234=\225\325\202\276K\212\353\275R\n\277>\007\264\317\276L\267J\276\375\t6\277XX\023\277U\243\301\274#&\035\276\355\363\210\276\"6*>u\203\023?n\336F=#+J\276*\3169\276I\202(?wq*>\300M\231>\014\235K\277Q[A>\267\304!\276\306\036t\276]\245\207\276\334}g>e\347\244\275J\306\376=\315\2125>+\2004\277\366X\245>\035\204\214\276D\250T\276\277\314\230\275\3606\260\276\265\307\322\274\327\266\363\276\223\257\260\275\013\2304\276)\366\237\276v7\222\276\376\273\340\275\367O\002\277\r9Y\275\031H#>G\033\347=\236E\376>\016),=\312pL\277G\2557\277\231\302l\275\216z\000\277\2724\030\276(\324\246>b\220\364>!\241\252>\316.\276>\233;\323\274\274\375#=]i\343\276U^\373>\003\371\223=I\016~\276\261Q\375\276\tX\003?\177p\016>%PV\276\020]\247<\362\013?\276\337\031s>\\&~>>\004\317\276U\\7>\207\325\034\277\362\\\220\276\007p\021>\334P\351=uB~=M\022\032=\241\'[>\254\3210?Cd\232=g\374\231>\224\353\262>!u\235\275\252K\014\271$}\217\276\231\362\361=u\277\215>\230\203\004\276d\264\302>IX\202>\301\260\312>\267\030\241\276~Q\\=\\%S>\345 \211\276\325n\277>\366\256\264\276\350>\027\275\232\315\266>]\006%\276\321\257Y>\242P\235=`\001\220>\375k\017\277\300T\220>\201\277\214\275\211p\306>\312[.?\200\274\354>\256\264\237>=\335_\276\035oi\276_\213\271=h\rW>\260\213\r>J\256\332\276\001..?r\256\254>*\314\234\276\216[\270>t\362\306\276\037$\343>\241\260x>\331\000~>\356\030t?\026\343F>b\005\313>\320:\241\276E\350+\2754\326\230\276\311\365\013\276\215\270\322=\000\256\340\276\337\"D>Pj\230>\325\324B\273\006\353\207\276\037\325 \275fEK\2764\236Y<\031\205f\275L\343\240>\234\373\005?\216\251\345\276\230\220\364>\216\332\202\276\237\2561\276\235\300\005\277_Y\034?\003Rj?\263\357\034? p>\276\030&\323=#\304\235>\300\342\347>\245\250f?\204\204v><\020\005=\024\301d>\026\260$>3\234\004\274\367Y\032\275\010`;?^\006\206\275\1770\225\276\364\231\200\277Ix\263\276\374\266\351>]\275v>F\305\253\2753\007\027\277\312\334\271=\330\361y\277;\"=\276}\326\346>Z\264\251\276+\353\214=\340\007\005?\261\"\225>\320-\000\275\026\305\246\275\177\200\213>b\243\327>\006\362;\277\033\230\316>j0\260=%:\210\276\263\362\004?\272\022\316\275\247\212\005\276\277r\230>\276\353\216\274{mu?\363\004\002?k0\247=<\351\257=/\352_>\277\316\221\276\235=*\275\007;\251\276\023\242\260>\345`\"?C\277\241\276v\341\234=\251\276\026?\032\304\236>0`\315\275\277\221\252\275\260\334=?\0049\203>\356\326\r\275\247\222\351\275I\374\272=\006=\035\277\346b\007\275*o3?+\366\336\276r\240\370>\312\270n>\365|/\276d\233Z>\371-Z\276M\032\254>z\033\203>\016\245M<\302\"\207>\031\265\025\277\013\204\264>\247\221\301\276\036\351\033\276+F\245>\336\034N?~\327\240=^+b\277\221\365\215\276\3167!?b+\235>\362q\344\276G\325\031>:\310\271\275\355\023Z>\004+\202\275IU\210\276\225\317\"\275\350\316q?EAI`C\237=4\307\266>\342\301}>\240\331\"\276\312\2416\276\262\246\323>\261\352\341\276\315M\036>B8\023?\0272G=\204k:=2\256\003?\336\274\217>\213Y\027?\363\270\251>6\026\216>\025\300\032?v\254m\275B`X\276\022\344\203>[\324\022\277\200i\035?\205\327\342=\234*\014\276+y)\276fx\204\276\316\256\250\276\025:O?\222\364<>N\234\237>\323C\327>\200\027\344\273\367\325\352>\007\315i>\tg,\275\025\021\277<\023+\276>M\243\327>}\261\242\275\216\310\373>\245\267\236\276\216)f>&z\220=/\216B?\365FT?T_\212\276<-\204\2769\233\032?\"\237\303>\201\316\374\276\215 \323>rO\026\276\\|2\276\025\021B\276\351\360\227\276\201G\322=vj.\276K\324\005?\256i\313\276\216\226\343>\247\365s=\255\354\313>j\177\366u\0322=\321\023(=/\204L\276\202\000C<\355fO>ii\306>\260Cn\276ESF\277J\271G>oZ\212\273\274\255\270>\237\0020>\277\207\357\276y\334\355\275\307\316\017?\235\342y\276g\204\031>E\342\224\277,9->*\320\236\276\332\236\274\276\375q\034\274&[\000\275\231\033\031?\333\356\230;\270^\333>p[\242>r\204G\276UQ\035?\222\032.\273\3317\204>I\201\034?\347\306\347=\003\203\372>w\314\312\276\030(s\277\265\333\'>\236P(\275\321\252)?\371\366\221>\250\030F\276\352\n\022?\235\220\2511\t\275z\366\340>s\374\266\276\363\360J?76\256>I\237\367\274\026\006\227\275\027_\215\276\245=\332\276\216\240\241=\'\345l\276\213\261\271\276\321<\365=\316[\325\276\007\211\210\276\324\304\216\276u<\001\276+BA\276\2168;?\217h\017>-3_?M/\277>R\340,\27471\312\276\034\016\250\275\344\201\207\271\331at>\215\263^>rF\244\2764qF=\215\343a\275\342\022\315\274\273\262\262\276\313\257\353\276\323\026@\276\226\226\264>\257\233\307\275\206\225\273>\373u\205\276\rX\267\275\235\315J?g\243\362=\246\210\001=\356\356\341<\237\352\025>\014t\226>\362\243\252\276\346\235Y>K\010\216>F\225=\275A\325\253\276\024\362)\276\r#R\276\037j6?\257+\275\275&0=\276\351u\206>\302#\367>C\026\001?\3646\266\275\216\030\365>R\340\344=\304O\">m\272X?%F\207>{\233j=\0323\314=\243?\222\276\250\311\033\276\251\035\332\275\356A\032\276\233\315\235>\023\316\314\276\325\246o?\315\251\340\276W^%>\332\240\001?\207IK\276\177)\237=J\240)\276\262\3001\277\262\037\321=\332\216\260\275\n%\252>\323\023 >\263\354\257\275\334\\!\275\356\010)?\310\016t>i6\251>\031\300\037\276\346\330\345\276\370$\033\276\346}\330\275X\352G\275\305\013\361=\341\225\271\2759) ?(\212\330=\351\257\321\276\227\324@\276L\357\376>\215\337\212\276\"\355%?@Q\023>(\026Q>5\337\321\275\314\313k\276\307\326S\277\331\004\217\275w\200\245\275\201(\023>\263\000\001\277\013y\037?\352\002\000?HB7\276\257\361U\276sQ\"=\252\n\314\276\253JF\276\025\232\317>\210\233W\276\370\370k>\313\251\354=o\010\320\276\277\233\327<*Z\330\276\211\343\360>A3\027<\341\250\201\273\300\244\017>\343w\242\272\244\346H\276\236\214]>\213\336\313;\231\234\022\274\311\247\247>\220\357G>\253\007\353\276\317\357\366>\207\007l>\"\354\334E\'4>\225Z\202>\n0j=e\3045\277\306e\267\274\021:p>\212\263T\275\212\257\324\276\273w\241>rnX?\007\356\340>\322@\032\276\325C\312\276[WF>7\232\240\276e\314\335\276d\311\362\276\325\201\264>\333\330\306<\n~\230\276\306\016\310>\035\242\225>\005\321]\277\344\210\365\275\205\252\010\276\017\3659>\326\031x>M\372\366>j\034\000\276\372\005\220>i\337#\277\305\254(\277\0241\022\277M\177\341\276\312\246[\275[\356p>\0146\217>\rz\271\276\241\314\016\277\256\237\222\2760l\026\276\210\341\013?Ns\364=\217\365\254\276\323\t\r\277\250\211m>\344\021\257\276\307\215E>\006\205\272=D\352^>\201\320+>\317>O\274\0170\005>q\277\253\2766c\340\275\342\363\203\273\277\013\226>\261d\323=A\023\\\277\263>\253>\213>\300\276X\301\202>\224Cp\276\204\321\'\276\374\002D\276f\364\007?\315\356\014\277\201rO\330\n\276\022\210\007\276v\367z\276\016\224\261>\007\033x\276\341\033/?\347\316K>\257\276\257=d$&\277*\330\273\276KcQ\276\305\303`\276\000\014\"\277\001{p\276\273\362\024?\022\262\307=5\236\204<\365\301\355\275N\271\310>\344\020\350\274\254\207`\275f\347\010\277@\243\201>;ow\277\376\333\324\274W!$<\344\252V\276\311\262\232>@\030\352=\231 \300\275\340\376\255\276\227\206\014\276\303_\236\275R\206v>\337\0340>\272u}>\254?\017?Q-\026\276\237\265\325\275\r\261\006\276:@\253\276\221\326B?\225\006\034\273<\210\371>e\376\210\275\212z\036>\355V\215>,\031\214\2763\327\352>\321\377\273\272S(\030\275\313\315\342K\351\326=\301\273\322>gb\237=\0068k>\376\220\324\276e4\326<\216\022\343\273\347\207j<\020+\352\274g\027\n?\360\241*>8\307#>\201\007\276\276\010,]>\242_}>\374\314\211=K\216\311\275q\367o>\324\007\025\275b\241-?V\233\336=\036[\215>\005\315\032\276\206~\207>c+\243>!w\227>\263\275\022\276\205N.>#\225\306=\352\024\323>\3436t=\342,4>\213\356\020?\252\207|>\232PB\276(z;\275y\301\300=cV\311>\365\036\307\276\305\334\264\276\312\223\001\276\361\260\350\276Y\"\365\276\"\266g=\340\326\033\276\260\311V\276\002j\254>x\240\270\276\037h\325= \261B>\256\306\342<\277\315%?\323:u\276\035\020\356>\226f\210\276U\202[\276\230\327\216\276LH\246>\333|\354\275\177H\331=x\\U=n\304A\276)\000\235>\331\336\245\275\342\240F\276?\014\263>\336\277\202\275\331\003+\276\223\304e>}9=\277\263\223\214>\361\262\n\276\273\357g=\227\3222\275\010W|>\207\343P\276\350^\327\276\316\0304\276[\245\273=\304\212i\276\321w\177\276\002g+\276\001g\341\276`^h\276\2274\004\275Me\340=c\334N\276\235\'9\277\364Y\2534X\005>\255\326yY\335\035?\342\276\302>cZT\277T\365S>@5&\276\212\374\366=\244\233\324>j\352&\2768\016\022\275Fap\276\343\311}\274\212!\262\2758\350\265\276\312\314\017?\362Z\323\276\3036\331\276\000\2175>=\n\210\275,a\245\275\026\237\275=\246\322\232=\350?#?\226\300\245>!\2406>\263|%\277}\233\375>S\312$=$\014\233>:E\321\275\033q\300\275\2600#\275\"G\312\276\256\226\332>\206\335]?\313\003\250\275M\023\200\276\226D\254\274u]\251>\202w\271\274b\264\224\276$\020}>\236\017\226\276i\360\007\277\345\262\217\277\034\345\364\276f\263V\274\363\351=\276\030\030\222\276h\322\302=\"K\222\276\301*\371=\027w \277c\223\301\276\014\372\371\276\005-\221=\330\342\260\276Z\317!\275\325\014\231<\216$\036\277\024\332z>\331rp=l\230\203>!\203Z\275\017\212\322;9O\333\275\035\\!\277s\324I\277\r\245\324\276dV\225\276\024\017s>I5\206\274\324^>\2743V\207>\363\033^>\211\177%>\306E\'\277\225\347L\276?\310\216\2766s\372=\014\303\025?\261l\235=\214\344t\277\363`\263>D\025w\274\244\242\024?\255\3670\276\273B\250\276\346\3438\277\252\314l=\034\2516\277\023J\240=\233\345\247\276\215\244/>\031\260;\277\244\223\250>Z\027\000\276\2324\030?#c\306>\222n\225=\177\325\257;\204)\n\275|\350x>\311g:>\301SD\277\227a{=\343\376\010\277\377\201\022\277]\352\257=[\356\244\276\304>\262\275\307f\027?\017B\204\276\265\253\222>\236\312\207\276:\366\003\275S\t\216\275\351\325\260\276\227X\214\276S\3107>\323\371R\275\234\232\022?F\257j>Z]\304\276\ta\037<=OL>\225\301\263\276\307st\275\341\205\213>H?\302>\246\030\307\273\300\272p>n\243\327=.E\274\275\223)\222> \277;\276\212Z\270\276\030+\225\276?\320(?\016\036\216J\223\230\276\307\243%\276H\030\312<\241\334\345=\355\373\223\275{Ek>M\3149\2775\317\305\276\2304\010?\031\324\'?\266q\234>D\357\207\2761\244\240\275\311\376\315\275\312\030\243\276<\322\217\277f\274a>\033t\261>*\262`>W\261\006\276-\324\234>\177y\352>/\324x\277u~\234\275\321\034s>\300q^\277z|\207>@\272\346>\331c\247\276q\024L=\201_\336\275\000h\227\275\227~$>6\246\303\275\022Pp>\326\006\033=\375\220B\277\032\331\202\2754\367f\276#P\017>\010<\035\277\255\370\'? \2463>9\224\372\276\316N\356\276d!\004?\365%\336>\204\220\241>\306\002h\276~@\177>E\233\247>\352>\030\276\227\372\315\276\236g\210>\265\210\214\276[^\324>\351\271\003\277J\254\312\276\256\003A>\211U\025\277\306\365\035\275xw\004\277\341\370R\2765\337\022>\337\374\300\274d\234*\277R\330\276\276\203y\'>\020\213\267>\362I\234\274\021a\332\276\305h\270=\270\213\263\276\205\265\356=\255m\200>\220z\036?S\253Z\277\226\341\013\277\244\364|\274\r\235\212>\212k\374\276\027\264B=\3128\t\276(\tj\276\035\272)\277\231\010\256>\303\273y\276>\020\260\276\265\312\363\276;9\243\276\313IJ=\013\333\006\277\007\272\234>\340\237L>\244\023\234?\357\244\221>\307\211e\276 \033->\334bS?\211N\235>#BO\275\300Q\252\276\301\271\371=\201\002\271\276\272\002\244\276\271\273\177\276\237\300Q\275\263 #\275\374\311\261>DU\035?\033\214\207>(\230\340\276=\277\221<\365\367\247=\010B&\276Iu\224=+\325\275>\351\363F?\307i\002>\232\025#\277\2733K>\200\223\227=\353\277\023=3iL\277\300O\203\276j\313z;g\033\366>\030\207\376>F\300\254\276\305\r\202\2768\274\272\276V2\022\277\221\033\262\276\032\346\375>\237\256\323\276\007)\203;?\017\252>\\ \003?\362\214\024>\363Wu=Q\224\030\277(T\004>\022A*\274\252U\017?\200\013\332=D\034\337;R\372\034\275\355m\361=\336\315\234=\003\342\312>\010\245D>Z\031\025?%.z\276\237~\364\275\311\303)<\031\253z\275\324B\017?@\245\010\275vk\241<\276\0048\276\242\335\276>(\205\243<}(\331\274*\250\303>Z3\361\276/=\267\274Kq\351\276\020{\227>6\354\246\276\021\272)>\323r+?\355/\003\276\275w\251\275\034\001\373;I\302D\276\310\375\250>\211\231\303=\334\000N\276\373\370,\276-}\370=\371\307\333\276\322\034V>\252\013\344>\005\002=?\334c\001>\'Gg>\374\334\327>\344\342\311=b|\261\275\\\177w\276G\212s\276k\356+\276\316y\270\276\374\241\271>\253\251\313>\034|\274>~\350\231=\2438\233>\254\033<\276\347\321\310>\376g\"\276\353\010\025\276\242\236\223>\305\020\271\276\225\363/\277\227\272\254\276\372\347<>\233\303\344=\022T\n\276\343?S\276\324\241@=?\252\212\276.\264\352=\334\030\363>\303\241\216>\374m:\276\242\217\002>\022\t\"=\210\233\313\276\341\335\230>\317EU\276N\264$?\342\215->9\227>\277\020<_>%o-?\036A\257>*{\223\276\"gq>\362Z,\277\210\332\276\274[\343\252>\314g\320>S&\310\275Ib\036\277\254\tl\275#\233_>\027\032d\276\271U\277\276\007\240*\2777\332\261<;zF> {\\\276\271\"\373=\214s\245\276\022\340c\276`\324v>\n\270\333\276b\304\223\276\0035J>\004\023\202>\252mH?l\025\303>\3648\261>\343B\006\275\007\313\264\276\345\032\r\277\215|\354>\272\327+?!\320.\275k\305$\277\010\326\252>\206L$\276G\\\252\276r\307\034\275!sS?\001\372\324\275Z\355i\273BF\201\277\222\031\314\275r\\\201\2769\033<\322\030k>\206s\313>k\010\222>\366\217\367>q\233<\276\366\013\212>\001UBCW\245>\037~\331\276\226\217L>n\237\361\275\272m\010\277\022+6=\2632\034\274\2206\001?f\304$>Y\321\210>P_\310\276\n\347\363>\371Z{\276\371m\320>f\257\177\276\215\350\277>k\215\022\276\202\020\234=\354,\370\276\314\024\343=W\234S>\267\320\235>\210\034\265>\354~\016\277\375t\007?\210N*\276R6\353>nF-\277Z\255\005=\024c\316=\211Id\276\225W\325<\270\257\336\273\030\327\001?\325>\016\276\010\273\002\276KJ\335<\332\\\313\n\2414=\253\342\200=>J\215\275\036\035\017=\355\352\303\275\205l\330>i\321\007\275\216\274\215\277Wkq\276\305\201u=\317\356\357<\306\203(\276\037\375\366>\343\025\243\275&\231\270\276\302\374\222>\353L\256\2761\201\277>`\331\237=^\327\246=\273\361\340\275l\254\342\272c\340\252\276\245\"\217\273\320\030/\2779\203j>\3134\213>\365\266\'\276+\212\270>]^\245\274x\311I=\302\t\247\275\337\364\311= \213\220=\260C\235=\236Y\017\277\245?\244\273s\333\217>\317n\202>\254\033\236>\214@\264>\222\366\300\276\303\003\376=\206R\214>\027 \370\276\216S\354>\335:\005\277\212UM>\263\027u>\016\354\332\276/\274\\\276\2714\000\277\235#g=$?G>]m\205\275K\327\353=&\001\246=`s \276\367\254\341\273 \376\214\2763\"\362\276x\360w\276\241\371*?\020\020f\276\214\310\374>M\373\177\275\0228&=\306\340%\276t\375)=\234\236\333\276u\307\r>\242ll>\370ma\2769\2073\276\263\352\221>B\233\033?WS\271\276\321\2450>m\271\272>c\270\256\276R_\266\276\264\252\271\275\356u\023\277b\037\301\276\026\022)>\345\206\232>\226d\217>(\354\375;\352\2470?\211\347\026>\2642\326>\342\214\332\2751\214\'<\361\026\322=;z\211\2715\362\037><\344\r\275u7\325>\036H\033\277\243\363&\276~\261y\276\224\214<\276\234a#\276\224z\374=\233\024\211\275\202\256\256>\243?\025?\037\222J>\240\204\006\277P\r<\276\022\326\213\277\201.\217=\215C\334>Ey\037?)3j>k\r\243>\334c\033\276Fu\350>\340\001?>a\017\215\277\266lP?\006\364\203=\373?\000\277h\233^\275\373\022\250>0\335f\275\014T\202\276xN\305\273\005\325\224\276\036 \004\276G\242\005\276\217\260\257\276)**?\351\343\355\276\037\242\273>\253V\214>\321\'\373;|\320\031\277s>N>\020z\010?\272\353\232=D>/>\227\355\311>\237\0078?\360[\315={C\214\276wo\352\275\034R\000?,\203{\276\204\024Q?\037\336\030\276\035\216i>\025\214*=\237\234\346<\177]\231\276%\362\217\275\177\316\365\276h\234L?\264,\214>\006-\327\276\270k!>*\272_>g\307\313\275\014\272\014?\204\240D?\322\352\330>\361\330\200>\320\271v\276~\263\356\275g6\217>B\350\263>\tA\022\276h\265\034\277\273\311\335>\230\"\344\276\371l.\276\0373\273\275\250\374\333>1\340\267>9|\364=\362i\375>\032\217V?!\323q\276\225\262\371\276q3\002\276\037\372\307>\230C\212>)\016\r\277\306\315T>\256\322D?\232X\303=\030]\362=:\264\016\276\021\215\200<\336\223\017\277\255B\211>\243M\"\277\341\327\233\275\n\252\201>c\262\177\274#\351\017\276\236@z>j\330\226\276g\256#?\204\351\376>\242\262w\276P\024\r\276\236$\215=\216U\306>\253\2255>\310\375\304\276tA\n?\312\230|>\307p\300\275\336\226\216\275\220\031w=\340\260\272\275\227\000\357\274\365NV=Ro\371=MW\200>\360\021\242\276\004\021#\277d\006\350>W\246\334\275\3220!=\256t\247\2743\007~\276\310\2135\277\301\000\200\274\214/\220>S\372\256>l,\375<\242\270@\2765\272/>^\021\260\2768\325\246=l\331\202>LM!>a\000\257=\365\005\231>T\207\273>/\352*\276[O\t\2768CN\276\362}\304>\316\264\232>\024\330\234=G`\024>f~\235\276\17730\2762\272\330\276\\\300\250>\026Q\r\274g\177\004?\001\2326\276\331\311\272\276\337M*>\301\352p\276\3275\240>\214\326\\>V\341\213=\251\307\271\275Le\211\275\341\324y\262\236b\276\356-\373<\316\372K\275\212\212\340=\024\206\270\275?\312\253>\031\223:\276MN\260\275B 1?\211\032\014\275-;\243>fz\367\275\026\206#\277\221\376\256\275\274\254\027\276\013B\035\276\023\321\302\276l\030\233=\225\212?\277\342\224\016\276\022R=\275\237,\217\276\261\001[\276\325\316\013<\263\216\233\276\227s#?l\235\352=E\237\n>\312e\323\2751Pq\276\371s\233\276\033\272\365>a\223\314\276\037H5\276\021\\\335\275%\221\030>Y\013\037\276\250\033@\276\007s0>`\221\220\276\033p\242<\276w\002\2763\256\300\276\336\rY\276\216\036Z>$Z\244>r}\327\274\275\2218=1y@>\235k\207\275\321\032\022>\265pA?\251\377\343\276l4\260\275\"O\031>\230\274^>]EU\274\016(Y>@\273\006>\"\324\017>\333\204O>,\254\313>\253\307\323\275I\250:?,\0304?\234\'\302\276\210\224o\277\330\003.\275;\350\343=\260\315\253\276%\335\277\273aV\025?\023Bp>\2354\271\276\\\306L\275\261\227\307\275&\032\273\275\375K\004>9I\207\276\3368\247>\177y\237>KGc\275[\2148\250\320X\276E\024\312=\324p]>x\n\303>d\025\n\276\036\220\240<\274\3262\276\212\212\347=\217f\250\276\343\362\351\276Vr\030?J\007\334\276\305\035\205\275\353\177\223\276\3759\272\275\235\323\243\276u\266\244\276\324)\367\275\255\222\000\277\013\231.\277\222;\377\276\214`\371>\312\006\033\277W\324\341>s\214\013?\177\304\222\274\271\342\300\274\360S)\277\001A\225=97\217\276\235\003\013=\271\t\327>\300\376\355>;\356j>H%\227\276\000\207\317>\247\231D>\370k]>\327c=?\221^\\\277o\\\036=\020(j\276\373\262\004>\226\0165>\226\222\233\276C\237\004?\224\322\307>\027\314\213>S\307\025=\233\005\236\276/\333\t>\362\330&\276\361\271\014>\205CE\275h\320\247>\262s\300=bL\345>\270\206\250\276\266\357\270\276\250\261o\275(\251\222\276\324e\315\276\013\340e>-\333\335>\324 \006>\262F\377\274@\000\242>\375E\363>\247L3\276\205\0240?\312&+\276\344M\203\276r.\264\273\'\254`\276\356\324\236>P\017\304\276\214\310\001>xs-\276I\234\300\275\025\023\307;c\277\376=\303\264\002\276\365\247\001=\201\250\203>V;Y>m\252\024?\267\3002>\240\350.>\245\314\307\276\243\004\321=\212o\241>\267r\010?\000\002\023?\315w\200>\037\nX=\365\350W\276\315\014\002\276\356\346\306\276\320t\327\275\264\230\335\276\323\236\006?+{\350\275\234\245\335\276 \\\352\276\363a\003?\371\223G>SdJ>_.\032\277\257s\270\274(\211\306\274\322\351[>\311\374j\274\362\'\221\276\022\321\305>gj\366\276c\000\037<\034\343X\276y-\234\276\345\220\014\274\234 \216>H\2524>\223\260:>\330R\033\277x\327)>\030I5<\300%f\277\336$\205\276B3\271=\023\377\264\276b\272\225\276<\310\225>\0045\240\275A\210\200\275\223\215\311C66?\333\r\221\276\t\032=\2763w\343>BV\014>\275[\313\276l\027B\276<\016\264\276I_\007\277\205,\021\277\244\343}\276\344L\373\275\325\346\320\275\265I\307>[\311w\276\246\274\325=\020\325\033\276\330\224\n\277\212Y\330\275I\225\376\276\240K#\276X\204~\276\264\230\276\276\023\024\\\276#h\305\274\276F\243>{\225\027\277*\\\331\276\343T)>\263=\304=\212\354\236\2764N7\276\364\234\260\275\0252\033>\0318\262\276\027\355\023\2779\234+\276\346I\351\276\026\360B\277is\215\276K\317\370\276\007\347\207\277\344\234<>\262\246)\276\207~K\277\374+i\277\212\217\245\276\353\210\252\275t*\255\276\371\n\377\276\276\024\013\277\226\315\246\276}\232\002\276M\016\350\276}\334\'?\315\243\220\276C\177\220\276\206\312\005\2767\227\337\276\316k\317\276p.\376=\302\016\016\277\377\335\007?\302\272M=\326,x>\235\271\021\276\257\233\273<1\r\312\276\246\300b\276\316\246X\276\2554\353\276<\216\n?~\353\311\276-\2604>1^\260\276V\274\343\276\332V~\277iU\r\2779i\206\277\345\034\233\276/\221\221\276#3-\276/#\356>\377\007\220>p\330\330>\241\\\251\276\025\262\235=\001N<\277\201!\322\275Y\367\214\276\3143o\276>\276\235>\312\024\">\031\037\177\276a\262\000\277:\331\004\274\351z\273\276\270B!\276\207\243\014?g\357K<\265\014\006\275\030`\025\276\245<\020>\236\014\004\277\257\305g>\247\027\252\2753\334\021\276\022\325[>0\031P\276\225O\317\275v\013+\276\357\251\243\274\273\267\357\276b\213f\277=w\231\276^\365B=1\232\003\277{#\035\277]J\201>\301\026\244\275\202\376\007\276&\216S\276\030\225\022>*\342\257\274u\271\260\276\307\3672=\246w;\276\315\027n>\276\nM\276M\r%\276\324\353\027\277\342\217\326\251\177\013\276i\026=\277\"\316\300\276\200\220\334=,\361\001\277(\243\007\277\374}\322=a\201\213\276\3032\270>K\324\322\275TO\323\274\205n\264\2769\177\020\276C\262~\277\377\030\234\276\030\2509>a\340\277\273\312\367\016\276q\367\242>y\035\312<\tB\274\276lm\007=\274=\322\275D\362)\276\353*E\276\343nE\274:\2574\276h\307\367\275a\001S\276\325?:>\347\303\244=\034\247^\274\275~\236>\252\220\265=\303\302\035\276Ilh\276\366\301\036?\031\265\320\275\233(h\276r\340\253>]T\235=\270\311\367\276\250\334\021\276\260\224\275>\361\035:\277]i8=\033V\330=j\t\017\276\270F\241\275\001\350\226\275x\323\016?X\261\341\274\341\375\253:\006|$??\343\000\275)<#?\206\271\026?\267z\361=^\202\001>\362T^\277\370\304\312\273I\003\334>\222*\364><\">>ej\004?\002 Y>\363\205\002=\266\367v\276\367H\014\275\212\323o\275K\242\356>6\037$\277\361\327\227>\236\317\242\276s\307>>\304\351\205\276a\323\312=]\336\342=\201\330\251\275=pk=\257~\364=}\316\217=\033\266&\276\243\007\262\276\245a\361>\2407\254=\270@\205>Z| ?p\253&?\307\337\242>\242x\016? \266\332\276\251\205\213>D\2560\276#p\376>\020p\304>&H\215>\323\301\330\276\273\324F>\347b\316<\\\244\211=M\316\321\276\032\223%\273\312m\336\276\205z*\277>\347\303=#2\024>\340\266{\275\255\360<\275\263l\211>\244\273\257<\371\342\n>\247\270o>?\264\246>U,\347\274\360\377\205>\235\035\332\275\277\205\245>\201\2512>v+\312>\302]%>\003\273r>\245\326G=\007^r>!6\231\274\257>5\275\251\351\030?\3570\272>X\332H\276\270d\033\277 \365\004?:\203k\277)\030\236\276~\3652\276_\373\224\2765\266\374=\323\254\006\275\237\002\333>\037nI>x\036Z>\3471\313\275\235\004\035?\337H\\\275\301\336\273\276\272\272\342\276A\331\203\276i\307\277>\250\347\226>\247l\245<\213U\210\276\344\335\r?\221\314q\276T\030?\276\355\347\034?\355\271\270\275!\366@\276\340B\372\275/\331\246\275\002\341\202\276/\025\235>\265\343\343=\272\317\215>\315KQ<\336~\254\276\255|\340=\226\202-?\350\022\355>\313\2478\276k\r/\275\014\364\223\276p\372\331\275\326\010\332>\014\331{>\2037\004\277\217`\265=\253+\324>\235BH\276\023nF>=8\353>\323\316*\276s\342\246\276\030\032\234\276\013\303}\276\367P?\276\271;\262>\013\023\024\277\3067\270\275R\3102>F\274T>^\202\034\274\212@\324=\345s\016\276?J\203=\340\2058\277\203\355\202\275\310mJ\276\025\231\021\0026>?..\214\275\2320\206\2751^\t?pI\262\276T\\\354\275\213\255B?\013!\203\276f\324k\276\255+\323=\336\001\235=\367^c\276OQ\000\276\344C\375=\027\207\351\2755\332O\277\354\315J\2762\335\016>\301\253c\276\214\350\242\276>\010\026?_r\274>\375\215E?\341\021\265>S!\301\276?5_\276\262\257\245=E9\313>\001\367e>\233\235\272>\377h\001\277\362\214\200>z\313%\276\237\242N\276L0D?Cw\233\276\321\"\251\276\265n\362\274\324L\324=13\014>\235\031\235<\306$\310\276$\316\032>\014\035\361\276\033}\320\276A\236u\275m$\036?6\362\027\277\235\200E?\212\004\271=XUX>\027G\240\276mQ\354\017\275hO`=B\036W?\340!\304>\235u\244\2760h\270=\335\215\r\277B\342,>\027\321T?d*\322>\311\304\\\276\364\033{\276\2537W\203>>\335\340>/\367\006\277\375;\270>\303\032\036\277\340z4\277\347`E?_\2744\277;\362\306\275o\2079?/\330h\2766\\\216>ihk>Zg;?\351\251\236=\212\334\222\276.m\355=d>\224\276\3572\216\275\253m\242>\240:\200\320\025\362>h#K>\356\021\274>w$\032?\027\007\214\276\307\267\234\275Bh\000?\177ZH>K\343m\274?\233\221>\333V\242\2767t}\276\243\201\316>R\232o\276\001\365\331\274p\267\025?\273\361V>\260\235\006\277\301\356\005\276MR\035\276\273\037\371>uu\322>\313\216!?\205\206\206\275]\224\202>\324@\020>\232\363\303\276\006\354%\277=-G?\241.\222\276\033z\347<\030\341\226=\341\177\242>\306\266\205\276\2763\336>Xt1=\366\341\237\276\026\0220\276Q`\206\275\274C,>2\203.?\276z\177\276\027\nu=\216UG\276\275\326\206\276\266:\217\2765\340\370=\266\327\014>\2007\016>\330%2>\326=\311\27430\356\276\333\376\020?\254\366\t?7\\x\276\234f\223=i\005T\276\210N\365>;z\006>\365\224\004\2773\335\002=Z\204\263\276\363\310Y>\346/\004>\200T\021\276\315d(>q\356\272\276\320%g>\002\376\351>R\207\013\276R\216@\275iX0=\324a\325=\322\215\357\274\310\272\005\277Zz\263\276\320\007\343\276W\026\347>\302\032\327=v~\356=\034\271V\277\303\010.\277\241X;>\215L4>w\210\271\275\3725\200\275{\351\327\275]PY>\344C\n\277*q\017?\362\203\337:\256\005I\275\246sK=%W\215\275\374\356\033\275\316\351\352\276\202>p\275?\3165?\306gW=\354\326\337>\010C\233<\375\014>\2746\'\032>\022v\034\273\247r\206>?}\t\2754Ib\276o\006\236=\253T >\334\2170<\221\202\n>O\356\276>\342\302\212\276\336\r}?z]\032\277\330\373\356\275x\220\347=\337H\355=\231\361\\>\376\251\322>\200\014\365\275I\226\266>\327Y\301>\005\2328=\0058\247>7\001\324\276\000\260\032>\200T\264\276\245\220\226>\321\313\332\2761\370\350>\376T\226\276\324\226\322\276%\357j<\036\331\203\275\351=\302\276{_D\276\266\215\330\274q\216\000\277\234\302\031\276\327:{=\305\312\340> X0\276\033\355\225\276\342R^?\244T\033<\245\031\253\274e\240W\276\300\002y\276!3\264\275\230?~\275\017\364\217\276\272\317\023\277\026\261\017\276\2425\223\277W}a>N\250{>\313\364\000?I\210\324=\223.\373\274\361j#>4<\226\276\301\275\237\275nW\002>\232T\014\276Q\240\371\276\270`\322>\007\360\242>\270\224\344\276\270\302z>*~\220\276Kr\216>\036\034\342\276\2509\204\276\024_\260\276Q\316\277\276\210\231\202\274wU\262>\001K\024\274/\000#\277\327\213`\276\255o\n?\3030G\277~/\006\276\337\203q\275\217\314\026>`\315\024\274%\372\316\274\275\002\336\275\247P\035=\206\250\215>\271\265\226\276\240\341\r\277z\303\321\275?1\033>\362~f=A\017I\276T\331\256>\232\002H>\032\343\'\277>\340k\276\265\004\303>\346\352\327\276\203\315\376>o\273\275\274\376\232\354=\035\016\355\275x\254\367=b\237K\276\202\200\317=8o\335>j\251(>\3749\216\276k\\-\277\250\244\203=\241\200l=\236\220\344\275\367\376Z\276\362\303\231\276\360\317R\277\266\3278\277\367\225`\276\377?\374>Cb5>\321\000\237>\0027\273=\232D\275>\035W^\275\323\221\220>j\004\255\276\273\310E\2766\013\374>\226\251\365>\024oA<<,\206\276=\275\\\2761\037f\2768C\032?\347\277\003?\034#\226\276at\350\276\304v\373\276\360\315%>w)\271>\273\210\310\276\275)\016\277\215eA\276\353`==\023\256\033?\255H/=\332x\363=\324\346\237\276 J#\276\006\212\305>E\224u\274JJ\265>_\301\260<\325\325 \277\356\037\032\277%\344p=\255-\313>\230\310\325\276i\213\005\276Cq\004?\332>\251=\"q\207>!|\177\276M@\315>I\207\263\276+\204\365\276\357\030\007\275\025\230\326\276`\236\235\275\247,c>\320\333i\276\377\303\353\276T\307\355>\341\353\003\277R\002\024=\024\272.\277\355U/\277\223\025\322>\307\000\013\277cR<\276\211\326\016\277aX\207\273\005\261\207=:\352$?7BA\276\211O\277\276\t\305\272\275\344\353i\275Q)\266\2761\240\330=\220\037\023\276BI\354\273!S\221\276\312\027\024?\277\223\265\275S\357\336=\261#1\277M\212/?\247\262Y>\231\204\376\276j\237\000\276\021\205\324\276\030\344 >\213\002/>r\200\036=\005\311\020?b\330\366=\244\340_\276D\003\306\276\374\252>=\001\006\200>\031/?\277\255\000\034>\256Z\207\275QZ\004\277\031\335(>\221}<\274\321\343\033?U\0266=\221\354T\2746\322\003\277q\343\361=r !?\225\322\363>,\307\255\276\262\025\354\276\256\211\215\276!E\305<\307\336\241>:\003Q\276:\3060?\207\375,\277\304\032@=J\261O\277r\354\236>j\361\0249K\370\024>\005\225\327\276\033t\202>\023x\257>\324\365\222\275\201\276&\277\236K\352=\035Ik\276\316\030\016?\347X8\276$\335\252\276\223\005\351=JZ\322\276\311\243\001?F<\262\276\346\360*\276\216\363\244>\241\030?>\3256\326\276\030]$\277|1*?\360\364J\277:\317\227>\0322\234\2752\263\376>Z\374f\276\260\210{?\3319\272>\327\350\241=\265&\346\276q\036&\276sd\001\277|!K>\333b\233\276\034(\244>U\221\256\276\206\276\021\276v\030\201\27622,\276\342\025\361>\362!\252>\206\337\003\276w}t>k\347\305=1\230\233\276\315,\006>\213\022<\276\030P\n?\333S\354>\211\302\r>\000\006\373>\035|\260\275N\271\332=\300\364@?\005i!>\300qb\276\030p1<\332\014\255\275\233\n\006\277\351S\214\274a\276\271?\311\3777\277\325jr>\226\270\035>V+\211\274\013\271\010?\260\336\337\274AM\347\276\321\033\007\276\330\347\330=\232E\255>Js\360>\371\3013>\211\257\006=\\^.\276\013F\330\275\216Kl\276/29\277!\251\230\275Z\214\307=9\253c=T\345\314\276\353\361L>r\205\316>T\037\347=\234\010\021?\264\203\200>@wo>Aak>u%\014\277\005\312\247>\214\'\024=W\022\002?W[\310>\235m\263\276\251\213+>1\240\362=o\037\013\277?\0372=\"\260&?\227G\205\275\267\335\005\2764&^\276\331\212\031\277\204\243\250>N\341\224\276\025\264t>Z\\_\275l(b\276\023S\213=/`\020?\370\333\"?\262#\371\276\302i}>\267\004\200>\317\301\307>\302\312\200=\273\025\232=\006`\317\275\'<\346;\356E\235\276o\366\313>\345\356\224\275\365\212\325<\275Y\212\276\023N@\2763\2545>\036\2748\276\217\352B\275\202\200\211>\324\232?=H_\016\005%\211\276k\345+<\245\277%;\t\t\271\275{\243\030\276\361\334\334>\223\265\242>\003i\001>W\366;?\177\270\006\275\203~N<<\370\024\276#\261\306=n\220\277\276\231\317\235\276\276\030\006?\327\270d?\"K\347\275\024\t0\276\326l>\276\304\364(=\227F4>\247,\210\274\243\215\035\276n\242\333>u\243#>\235\360I<\014\341{\276\350\242\200=\355:\324>\225s,\276\233\212\334\276aW\236>\315\260\357>X\020b\276\210\227\324=\265\331\020>+\033\233>J\305Z?s\331\317\275\301\010c\276\na\327=\360\001;\277$\242\314\276\003J\316\276\303N\020\276\314Dm\276l\000E\276\003\227\316\276\346\003\033?>\007\224>\363\270J?\001\3127?A\224\277>\375?7>\207\031y>\200y3\267>\273P\203=\302]\335>\316K(\277\325wT>)\242\221\276\340A\013\276\247\321M>\"N\312=~\177\244\2768\276\364\275\313hW>\221\373\t?^|\263\276\335.\326\276\322\206H\276x\211T=G =>x\020\017?\341\2232\275\241\345\346\275\"\004\250=~E\260\277\030\376\321\275\360\255M>{\325\212\274#\261\225>\300\361\306>\032&.\277\266h\317\276\016\037\n\277\177\220\206\276sa|=Q\214\332=q\326q>>=\205\275\263G\225\274\354\017,?\234\207\225>`/3\277\241V\n\275\361\344&>}\373\277\274\'\007\201>\277F1\276(}\r?:\"\'>\337\355\357\276\272j\r?\007\360b>E\377\262>\233\014,\277C\333!\275l\360\357\275\344\226\344>\335/n>\2753\255\275\335\002i\276Glb>\214e\272\276\005M\334\276xyW>]Z\003?\246\221\211?R\210\222\276\'Di\276\003\036\273\276\204p\'>\004\312\254\276\240\257\t\275\r\2751\277TI\002>!\362K\275\231\357\007\277\272\261\334=\2353c?7\354\264\276\2263V>\316\343%\276\3558\020?\307\251\201;Q\365\221\276\320\355\254\276\367\324*?u\215\372=\207\234\217=\225y\200=1\350o\276\001\246\n>n`\255=~\205\313>f4O\275\360c\205\275(\351\037>\307\374\231<\364\363\257>\323\014\261\273\037_\325\2764\023\307>\345I`>78<\276\001\342\013\275\200\0038?7\371\032>\216~\010?\r\025\324>\222f\333>.\213b=\024\200\305\276\260Jn>\204\254\215>\031\017&>Of\204\276\313\241!>\037\265<>\310t\331\276X\276\234>\301&\205=m\343\215>`\'\261>\247\272\n\277\366\202q\276\320e\333>Nm\276\276\342G\231\276\336wi?\244v\260\276%;U>\341\202\354=^\006~\276\231\220\224=\025\242%\277\225\277\277>]\315\030\275\253N\375>MV!=%\020\360>\300\252\226=*\344\200\275\222\300F\275OO\355\274\222l\245<\267\\\344\275u\337@\276\025l\301>\350]t>9Hv>\271%\025=r1r\276l\372\304\275NJ\221>\227\335\216\276\016;\350:{I?\276\275\253\232\276\203\255\n\277\255u=\276\261R\346\275\023\272\317>\377\240\022\277ex\221><\326\263\276\314\357\356\275\321\313\007\274_\205W\276\364o}=iOi\275t\021\033?\227\032\004>\274\211\266\275A\027\363\276\311\250\325\276\246}5>\336@y>E:G=\204f\342;}*\026;0\000\354>\n\240\201\276p\255\216\275OsD>\"\006\304\276\366b)\276\000\327\004\277\326\035\307>\272\263\037=\n`\331\276J\223b>(\003->\370\177\330>F\227\"\275b`&\276*\2423>\375\001H\277\355\353\261\276\352\230\243>\177\301M\276\277\0255=y\367\254<\350\332\274\275\020p=\276\206\306\337\276kmH\2771N\347\275\000O\241>\342\204\346\275#\"u\277}\031\200\276\016\255X\275\205\274\256\2754\010\230=6\252\002\277\363\363h\277+\272V\277\211G\205?\331\257\210>DJS\277\302W/=\026\004\266\274\207#\007\276\215\345b\275\204\2466=\005\3729=\250\230\001?\022>\317\276ox\317\2763X\337\276\t\345\031>\255\215\034?w\257\013>:IF?r\253\221>v\224(\277\220\330\342\276\314\020\247\276/\212\033\275\240\240z\277\225!\263=}\036\333\276\370\227\205\276\364w\270\275!\277\305\276mj\223\276\035P(>\356\331\253=\017\216.\277\022\206\004\277\200]\253>\005\032)\276\252\006\260=\211\252\030\277Zy\263\276\217\350\261\276\276u\255\276\334\376>\276\234qW\276\356f\351\276g\245\213\276R\221\251\273\212\206\r\276\026\0234\276\271\004\337=\334\301\237\274\366\316\233\277\226\312\327=\252\034+\276\253\204\233<\342\365)\277q\262\2349\024.\363=\350N\001;\023\n#\276\345\265S\276\207~\026>\212\002\315>\211\025\210=\310j\326\274<\236\220=\346\013\270=\010z\034\276\0160\031>\320\360\247\276\225\303\326\275\007Y\241=\031%(=\020\3553\277\326\364\025\275\313,\354\276\270!\201>\034\260\357>\252\217\021\277\344nU>\362\221\230\275\177\213\363\274\004!\304>\375:t>\223\216\033>\222fD\276\"\020@\276\005\273~>\327\303\241=#\352\220=\246aW\275\026\004A= 8 >\304L\035>$k\274\276\355\2034\277`\377\351\276+\273\310=\0054\320>\t/W\275\333\274\354>\220[\023>PG$\276\310\023\271=z\206\000\277\001EN>\'\"\230\275}\025\352<\003\375\241\276\246\t\226\276\001\']\276\311s\343\276.\305\213\2764\307\177=\017-\256\276{v^\276\353\306\275\276\rl\251>!m\345>\310\321\252\276\213\264\372\276\375lo\276\235\303\214\276\340\007-\276\352\222]\275\372\357\354=\327;&\276\236\017\023\276\001:\200>\337\241\032>\352\304\217\276//g\276D@\335\276\261#\256\275-\234\237;\266*\214>\005N;>H\234\372\276#>\216\275\261zK\276\220\020\025\277\014\360G\276\212\372Z\2757\350<>\246\3640\276\025a\330=@K\336<\357\3058\276\021a\232=\350\254r<\341\201:\276*\334\330\276;\323\217\276\302 8?\207o!?=L\251<\331-\005?6\206Z=\216\333\212>\243\327\210?>I0\277\224\026\013>Y\371\264>\235\2344>T(\031?N\354<=M28\276\372\227r>\263\257\266\276\227j\240=\252\311:>\226\262\201>x\252\327<\247\325\312\276\2258\323<\347 \n\276\"6\232\276\273\343(>\3764A\276\244O\216>\026\374\'\275R\275:\276\246\333\305=\371\252\312\276\224\231+=\202\226\371\275\034\253P>\224\010\252>\352\270\253>\331D\345\276Gy\224=*Md>h\273+\276\206\215\030=\035-\350>#\347p?\003:\257\276^@\201>\006\337\231>\333\336S>\362\200\350=J\277\377\276\277\330\'?E\342\327>\320\330\007\277W\310\341\276\266\263\242\275\002R\341>y\323\266\276\001f\r?\253#D>U\346\376\275\207X5\276\312\277\027<\2725\301>\')\'=\370b\366=\306\032\247\276\006\271\n?\r\260\373\276L\t\244>\310\202\204>\340\030Q=j[\306=g\027\344>%\002|\276\235\256\n?h\210\010?5f\254\274\212\245\032?\013\376\260=/\324\'>\342\023\325=\221K\360>\016\237,>\332\374(>/<\312\276|\222\253?5\266\235>\372i=>$\266\325\276\266\337C>\327a\311\274[Z\037\276W\210\244\276\323\217`>\351\'\335=\315\005\'>~\365\320\275\202\3674\276/T\356\272\337\202\225>\362V\021\277\031\267\334=Ti\223>:7\202\373\263\356<9\202N>\210\244\034?\263\3315\276\200\264C>m\241\243=v\345\251>\264\212\207\276\334\357\260>la\327\276\337y\013\276\215\276\364>\3347\227=5\371W>\3102\201=;\227\324>\201\200\314>\206\262\271\275\346,\242>S\331\224<,\232s>l6\231>ggO>s\230\356=\332\342a\274\353ig=\3017\304>A\375\342\275\r1\234=\314\327s\275\347r\315\276VH\234>\370\360Q\276\032\324\277\276\312\311\353=~]\314\275\0025\250>\301\212\342\276]\001D\276\352\'\321\275-\352}>\003z\231>\374\227\377\275\337\357<\276\257\217\024?3\200%>L\232\256<\206\260\273\276\267L\347>A9\260\275\353\344\003\276\353\311\034>\263+\030\276\271\177C\276j0\022>q\373\247>\373\216)>S\376\251=\235*\225=E\216\262>\375\307s\276\251L\205=\3619\244\276Nq\312=\220\300\377>\315\010\037?\250\370\363>9CA>\003\263\224>e\033\306>,\264\330\276\241\306\331\276\273\366\242>\014\027\272\276\030\371W>\376\240\221\276@\305\n\276\315o\271>\037b\340\276\340\326\272\275\242;\233=\"\353\021?\245k\330\276\031\241\032\276:\024\233>\216\306\201>\3116\335\276\202q\250>\234\220\264\276\351\007\010\277\351\345}\276p\357\347\2769|\374\276\237\262\276\276\312\317\206\275C\034\371\276\035?\215?y\216\227\276NF\360\275TN\235\276\024\330\221\275\243\372x>\275X\271>\265d\266\276\314\241e\277j\224\334\275\364E\003\273\32210?tT/=U,\001>\352\304\030\277\022u\324\276Q\371\023>@-\274\276\344.\023\277\272+[\2764y\326\276j\t\013>y\311K>Ie\034\276SP\t>\305\021M\275COM=TD\307\275\021,\242\276\311x\214\276\336\372\271\276\013\225\n\277\311\205Y>\243\266D\2765J_\276\362\030\260\276\177b\240>\003B\352\276=\230u>\345\327\214\276\212\340\305\275\030\325 \275\\F\260\276p\315C\276r| \276\206cX\276\310X\025\276Ov$\277\315W!>\201\364<\277\215\242+\276i\202\210\274f\023\275>A\301\230\275)_&=\036,\252\273\207\255\321=\255\210\025\275\354\r\212\276\315q@\276\034\365\200\276*\344\363>\364cM\275\361\252\230\276\373]\207=\320\3438\276~\242/>c\001%\2763\376\261>2<\013\2768\341\000?t~\237\2761A\021\274k\352\347=\264\307\366\276\331\016.>\262\344\211\276#\350\r\277)\014\037=hB\263>FAg<\232\"\327\274\306:\230\275\347T\372=\207\033\365\275Lh\321\276\035\215\303\276|X\035=\037X=>8h)>\335j\241\276\372s\260\276X\342\341\276\004R\006\274\375V\210\276\367\251@?\356\316\002\276WH\325<\006\265\266\276\315\020\223\275\037\360\246>\0178\351\275\"\357\207\276\254~\302\275\340\221!\276\351\254\013\275\331Z\220>\272\364\303\276Q\3431\276\255%\261>\341t\373\275nH\337\276y\336l\277\341b\022=(i\032=\237lN\276\274\322\206=0I\205>\256\007\017\276Yn\265>l\243Z=\371\274{\276\306\251/\275\334\026\276\276\3300\031\277\260D\263\2766\206B>{\316\243\276o\267H\276V\005\243\276p\037\313\275/\314\203=\232\275l\276R\316E\276\2036\337\275t\231\307=\201\254\006\277[\224\017\276\265\n(=\032\036\215>\004o\343=y{\247\276@\035R>/N\244\275\215E\373\276\2048U;w0\036\276i\n\305=\307y\261\275\372\256\235\276\033xf\276\025\021\353\276\202%\225>\267\326\355\275t\300\003\276\207\316\246>R\030\304\275\272\356\024\272\326K\352\274\n>1\277\367\322\241>{\006\225<\303\277$?Z\030\022?\026uR=a\034%\277\211w\303\276E\361\333>\252\315\275>Z\246\245\276\330\306\325\275\366}\211=\362\023\260\276\345\312\243\276\350\375{\277\333\211\020>\320F\213\275\351a\306\276\226;\230>\3677\366\276\026\261\265\276\215\340\013\277\010\245\211\275\253\203\014\276`\217>\275\037\016\271\275\261\243T\276\306(\253;\230u\215\276\332L\016\277N\305\217\276\260\362\261\275F\025\225=\224\222\314\276\330x\332<\306\227\261\276\333J\315\276\236\311\216\276\234\2308>\025m\036\277\264@g\277\2366\222=\277]\240\276\214#\316\276\024\231\236\275\313\366$\276@\326\n\277S\r\376\276\364/\236\275{\212\030\274\340V(\277\373\244\202=\367K\317\276\237\2671\277E\305\311\276\014\315\336\276d\355\235\276\316\347\250\276\325$*\277\031R\016\277\267c\335\276Q\267\211\276\227,\251\274\tmp\274o\220\354=\361e\231\276vK\303\276\252%\177\277\262\254 \277[\343\007\277\375\024\271\276#X\213\274y\262\006\276|\213\027\277\367\263\221\275\021>\267\276o\326\026\276\004\003P\276x7\361\276\225\267\247=\211p\'?\265\216\206\276#\314&\277r*\006=\215\362\216\276\363\320\005\277\377\322\037\276\373\337\235\276\003\0264\276\317\242Y\276\3174\337=\231Q\341\276n1\356>\270t\026\277\235\255\205\276\367\']\277`a\t\277\222\377*\277\345\345\323\276\254\341\357\275\001O\004>\007\345A\276k\034\322\276\365\326\361<\256\251\265\275\222k\260\276q\315\364\276Q\0345\277-c\006\277E4\243=\'\245\014\277@\267\226?\371\257d>S\371\223\276\243\326\035\276]\005\337\276\356\373#\277.N\\\275\030j\236\274FN\007\277\360_\305\274\215\363\264\276GH\255\276\241\263\351\276\373<\236\275\302\236;\276\204\341W\276\332\2264\277\326wK\275\251\3249\277~\246D\277\325@\254\276\240\307C\277n4\037\276\341\212\363\275\\lQ\277\221o\300\276[\017&>\376\365\322\212aL\276\335k\253\276\207\244\201\277\311b\021\277\251L,\277\221\004\r\277\321-\336\275\335\341\230<\322\243\347\276\017\007\314\276\343\242\351\276>\025\211>\2372\371\276\330\305\230> \247\r\277\276\210\246\276W\301:\277\002\000\271>\303\340(\217^\036=P\356\316\276S\322\306\275\250\2640\277o\251`><\255M>`\337`\275$V\371\276d> ?\210\305\026\276\222\221$\276\027p\366\276\261\344!\277\257\353+=\257P\272\276X\034I\277g,\023\277\353L\035?\337 \367\276C\211\346\275\216+$\276\0278\307\276\244\034J\277\017\223m\277\264\326\377\276\352\235\233=j\253-\276\337\033\276=\350\306\233=\316\233\r\276\224\017\374\3102\277\2648\363>\006\020\327;lHD>\355\336\013\276\251\337\273\276\215\355\022?\264k\340>\227\245\256\276k\302\353\276\357\020\321>x\026\202\276@\277/?s\374\254<}D\214;\"9\244\276Q\304Q>\244\265]?\r!\370\276&\177\331>\2360 >J\341\023=c\372\032>\2018\262>\2007y>bzy\276\364\361\227\275\247BJ\274\016\023\240\241\237Z\276\262\310\022\277u\264\354>t\004\241=,\017\312\276\354\372\204>o\003\311>\363\307\226\276\031\330\204\275\310\022\037>\323\026\230\275\320\000\005?iJ\362>\245\230=>\335\325\022?\031\373\022>#\246\323\276JZ\371>\366\275\005?\226\342\032?\255\357\007?\336\377\034\276\224\315\301=\223\310\366>2\322-\276~e\301>4\235|>l2\260>\014\341O>4\364\326\210\372\030>{\256\305=\255\225\032>\n\271=><\212u>z\253M\276\237\003\030\276\371E\212\275\373\341\267>7\247Q\276\363\204A\276&v*>\265f>\277\200\337\322>$7b>\254\231\245<\027\022\241>G\364s<\215P\006?>\021\272=S\363\304\276la\223\275\341\333J?B\007\332=u\006\241\276\017\272\351\276\345l\251=^~M\276\234\227\r?;\t\021\277\202\237|>\020\224(=\025@\263\276a\177`>\211S\367>\363\243\253=\320U\232\275!\007\n\276%L\270\275x4)?%J\225>\006\334D>8\241\007=\n\206\'?\t\244!\276@\333\373\275\356\216\025\276\2238\273>J\255\024?1\254\n>: \375\275 \257\314\274#\007\271>\354\355\313\276\010\260\236=\002\351\243\276ga\351=\337-3?0y\202\2769;w>\305\332\221>\3369\220=\r2M}\201j>\227\367\255\274\375)\343>\005\266<\276\362\324G?\256\261J\276\364L=>\331\316\300>F\266}>utW\276!E\356>\376\017$?V\017\251>\035\316\336>Qi\327=\241\357\034>\023`)>\254\223g\275\356_\261\276B\276U>\3110M>\346(|\275\222\301\t\276\273\2415>\204\035\352\276\203\253\255>\036L[;\247\372\231\276\337~\025\277}y\027\276\202\265\305>\266\r\262\276,L\343>>\020\225?aR\003\276\362UP\277\371\210\230>\237Hd\276\247\337\237>\253\2674\276R\215\007\276T\321!\276\005Z\371=l)\275\276\364\232\360\2761\177\010?3\013\357>k\236m=9wd\276\253\001\226>8h\232>4\335\003?\365\333\267\276\257R\230<\005\333M\276\352\025\006>\234s\277\276\265C\347\275U\003\206\274\312\275\266\273\326\0348\277\212\367\236<\023\260\031\276\320A\271<\314\204\014\277\364\270\024\276\335$\374\275\373\026\314=\301\005\317\276\236\337\365\275\031\t\354\276\326\234\026>\351\030\347<\343=\034\275\032\026o\276\351\013\220\276\367\210<\276\n1\233\276\035\213\366>\034\022\367\276f\030\355\276\376\313:>\217\216\217\275\301\226_>h(\303\276\225\254)\276\240X\226\276\212G\343\3614\030>\307a\232\275\357\3771\276Qt\312\276\261\205\205\276<\203\354\276\265\356\351\276\013\213\236\276\3725\345<\271n\273\276T\277V\276\3159\001\277&\014;>P\373\322\276k\257\371>\314\327\027\276h\333\320\276\367\336\262=\310\333\016>\025\357\312>\327Y\313\275#\"\266><\226\312\275$\275\260\276\325\347k=\265\301#>\013DT=\037C\354\276L#j\275C\313\221\275w\"\\>\tZ\310=\305\237\362\274~G\203\276\002\366\237>\373\357\241\276\023\026;>{\235R<\276E\n\276u\017\266\276\247\346\256=Ub\026=\2579n\276\003\244\376\275\304\022\245>V\000$\277d\265^\276\353\243\004\2777\351\201=2\323\216\276\035\213\272>\3542\254\276\0143*>=\270\224>e+\035\276K\026{\276\000\261D>\340.\233<\272Mc\276(\351\212>\336\345\003>\324J?\2766V\033\277y\367\221\276\257T\242\276\000\021\234\303\371(\276q5\317<>\307j<\230\341\236\276\231*\234\275\226\234\252\275\332\226)=\033\232M\276({:>\201\026\316\275\366\247\202\276\032\327\325<\035\305\356\275\025`U\276L\325m>{g\337\276z\316\254\274u!\301=\207\034\213<\263\310\222\275\235\376\264\276\357\016\306\276\274\313\037\276\277g\276<\216l\226\276\355\314\007\277\037}\005\276\r\271\376\275\251\037\333= \373\211\274\337\341\204\276\260\354\311\276\323<\303\275|n\035\276\031+\257\276\241j\371<\370\245\250=\025\232K\276\274\310]\276\365X>\276\362\327\276\276\210\205\002>\356\255H\273\274X\256\276n\035@=Z\352\376\274|\354\375=\2516r=\323\340\254\276\245\024\037\276\376ia>[#\326=9\250\207\276\265W\016\276\311\360\222\275\334H\357\274@:\270\276\276a\360=\300\322\215\276\356\251i>\373;x\276\340\216\033>\262\341\272\276\266\014\021\272\357\300\213\276|\034\355\276\030\310\351=\243\272\027\276\255\221\325\274\274\003a\276\256\335\301\275\364\3267\276:$\030\276\303\335\237\276k\362\223\274(:\'>\276\020\315<\375\025\233\276\320\036\252\276<\326\337\271v\362\324\275\212\230$\276\362\246\373\274\365G\306\276\373\301\025\277\303\312\233;\315\243\204\276\361O\004\276\237\0336\276\373\202\327=h^\312>\271Eu\276\3447\314\276\255G\274\276h\267\325\352\317\r\276\002\213\346\273\311zJ>\034\345\355\276\275X\236=\305\036\306>\341\031F\275\336\300\017\"e\204\276\231\"\200\276\377Q\300=+\301\253>8(\024>\\h\354\275\316\354\"\277\320\221\216>\324\373=;\326op\276#f\032\277\227\343\271\276\004-h\275U@&\276h\217\244=\232y\222\276G>Q=\204\300\220\276\201\206\250\276\0209S\2764:\214\275\2038\344>6T\017\277\370\312O\2755&\250\276N\013\030=\243^\211\276\341\210\307\276u\251\223=\205\241]\274\273\217A\276N?y\276\244\301o=\220\\\327=R\343K>1\340\002\277b\300\214=M\302]\276\316`/\273\346>\004\276\276\230\201\276`\336\250>T=\250\275G\313\224\276\200\362\340<\226\367\213=\215\305A\276f\022_>B9\213\276\341\204\326>\225\026W\276\327\336Y\276n\345<\275\354\362\227\276-\234\207\276\265\371*>\347\337\216\275\001\275\016\276\376\345\274\274\310\272\212\276\325\034\227\274|\373\330=4\333@\275l1\240\276\346\220\"\276mP\025\2766 \307=\007b\271\276\312EH\276_\327\004\276\207\272\025\276\023\323B=\376u\216>H\333\r><\331\274\275O7g\276\357\007\365\275mr\335\275\004\004\370\275\303\r\226\275K-n<\304\220!\276\371\232w\275W}\024\276\347k\362\274\013\037\202\276\027\252;>\032\243Q\276\2235<=\272d\304\2759\n\037>\033\354A>s1,\276x\210\263>6\302\357\276n\034\372\275\277\335r\276%\324\311\274\037\246\343=\007\362m\276M@\302\273\237\326\202=R\230+\276Y\204\023>\271\341q\276 \300\260\276\032-\213>\036D\270\276\004\353M\274\202\006:=\177:{9\235\346\311\275\251\357\375;\276H\346\275-+\003=\371|\224\276\331\234\246>0lM>\002>\274\276\272\265\240\276\301M\344\275\001\303\005=h\216\376\276\301\016\256<\247SF\275\256\321l>s\367\227>\237\303\016=PC\266\276\2707\307\275H\201\030\276o\003 \277\036R\247>\252\277u\276C\201\013\276\222\255\233>\227JH\275\313\251*\276W\\B\276\272\201\347\274$\006<>\314\217\252\276;iF>\254Xp\2768\270x>6\267\260>E\324\023\276a\370\307\273q\347\r\276]\356\346\274\343b\352\276\217\223x\274\022\277[>\352\311\206\274c\303\361\274X\036\227\276\030N\221\276\200\263\013\276\355m\254>\313\333\222\275\323\225\003=J\266\323=\3165\272\276o(T\276aV}=\266\260\327\276\222\362\237>\227P\214>\001b\024?\311\305\255>,\022L>\362\351g\276\r\211n>PH\212\276o8\034\276\363\225I>\226\2409\276I\005\324>\026\242)\276\225Gc?\3052\261\276\267\r\001>\244H\376\376Y\032\274\036\231F>\221\341\251\276\3025\265\275T\356;>l\232\346>B\342\247>\224$\254\275\013\211\010\2750\371B>\255c\"\276y\275\302>a\320!\275\023\231\341>\236}\212\274\260\177\223\275\236\254\265\276\322\370\336\274\252\267-\276\356\317\032?\004\203\333<\243\253\032>d\253\021\277/\353j\276\'gN\276\225\330q=g\243\037\274\300E\346>\325/g=\242\377\325>\332\231\322=V\354\312>\314C\232>\206\212\233\276\013\310e\276\324\267\304>\301\023\350<\331\313\213\275v\213\226\276\216\030[>\316\313\377>\327\365\275>m,\016>\2406S>#\001\377>W\246h\276\352\000Q>\306n\177>\265\r:\275\030MJ=\334\235\331>S\302r>W\233\273>\372b\356=o\327\271\276\316\270\236\274\034\240F\276^\036s>\224\320\276=\241&\267>L\202t>\022\241\t>\314\343\004?[\3340>\357\035\025>H\260\'?Hj\036>\250v\313=\307\304\351>$J\233\273\244\366c\276cY\334\275\334\024/\275v\347\321\275\244~)\276oa\020\276u@_\276\332\273\260\276\233;\311\275\257rL\276\300\313\364\275[~\257\274\002\247\250>@\203\010\276\316u4\272\262\207\224\273\277\304\276\275\227\000\333\274\221/\277\275-\351@\276\270l\216>&=\266>E\222~\275j;}=0\321\320\273%\301\005\276\272\'\232\276\216TS>\004\215\204=E\355\214\276u\365\353\274\3114\234>\017\036c>\027\032\221\272Y\207N\275e\2126?\277\354\345\274L\337\222=\254\300\007>\354S\315\274\0216\342>$\374\020\276V\266.=>|\007\277.\030\342\276e\356\325>\016\212N>\367\220\210>\2262\373<\357A\305<\341\357p>\343a\252\276\301\275\341>w|\034\276\312\3232?\r\316!>7@\371\275\033\035\375>\360\"H>\026y\317\272L\007l\2766d%\276U\336\341\274\360Z\270>\013H<=\272[\354\275\352\356\266=\037i\301>2\367\306\276\360\345\037\276\210{=>\002\360\"\276\013\034\275\276\251j\236\276\302A\221\275\352S\022>H\370\346=X\304\034\276\273Yv=\250hx\275\273\214\363=]\300\035\276[!q=|\377D=_\273:>V\024\216>\221\177\343\275\2549\215\276u\252\002\277U|\272=\204(\352>\002\310X\276\245\255\263>HW\370>=\3664\276\347\203L\276\352\"\n>k\027\023\275\030\027\215\276\245-\204\275\260\373\t\276\226\177)=\020\237\206\276\304\301\255>\001\rU\276\324\205\220\276\322\203^\275\324\325\376=\277f\330<\325\247\326\276\250\332\324>w{\216\276\267\316-\276t\373;>J\223\236\276\315\275)=s\224\262=\262yH\277\022y2=\201\n\234\276\351\317\222>\242#\214<\254\220\005>\002\346e=?\373\224\274l\262w\275\360\274\333=\251\306d=4J\206>\005\235E\275\320\302\344>\316Z\221\275V\245\001\276\3779\224\275\347\333\232\274\000\340G6e\304*>\024\263\361\275\355\360:\275\244\275i\276\257\014\250\276\2148\020\277\375\344G<\336\373\316\276\331J?>6\273\227\276\313w\271\276\214 \017>\247}\027\276\333\206|\276\023\256%\276\361K\030>C\367\350\274\324sQ\276\367\232\260\276\326\243\037?\347\307\227\276\325\351\002?G\200\335\276{\033\335\274\370=\341<\022\007t\275\016\246,<\357\325k>\010\030N>\'X\030\276Ht\260\273\347)*<\017o\314=j\303\025?\304t\361\2762d@\275\320d\242\276Z\346\304\275H\002\037\276p\273!=\024\353\376\276\356t7>\020\025\367>c&\274>y\014\243>\211h\017\276\303\017\222\275\'\323\205>t\363o<3\025\215>\360Nb\276M\251g\276\023]\r?\366W\212<\"\323A>\334T\235\276G+\206\276\216)\265=U\205\266\275\206f\026>;\314u=\\\360\257=\2252\032\275\306\353\035\275\332\231!\276\032}\235\276<\357\227<\355;W=B\331e\276/\316~\275\005\\\252>\363\206\001>344\27693\341\203\316\034>lI\223=\267\313\232>z\233\002>\334\334\\>\312j3\276\317\242\307=\276\316\326\273q\357?>>-\254\275g>\014?\023k\334>\241gv\275\n0\000\276#t]>\322<~\276\004\235\321=f\023A>\rk\257\276\231\221\347\276j\030\236=\310\316\305\275\207\363\306\275\2404\273\276\244\321\010>\206\245\372\276I\025E=\310\322Z\276c\023\243\276}\267\211=N\307{>S\242^\276\246\224Z>\247\350}\276\375\233;\276\'\371\034\276\341\244x\276n\317\n\276\356;\267\275Wm\244\276\267\0345><\215\337\275\363\325\204\275\254Q\251=fM};\350\343\321\2756\221\305=\006\332\026<\031u\020\276\211\207N<\235\225\n\274\260\344\313\275\312\373\341\275l\371 \277:K\212;\263?\305>\371\325\346=Uw\226\263\253\007\275\344\330\212\2756?r\276\003\310z\275$\304F\274\366\367W\275\311\013\206\276\226\305\207\275n#\225=2\321\222\275\366\377\340\275\374%\001\276n{\302< \026\216\276\355\251\024>\320\362m\274E\215\'?\204K;=\254A\266\274\026\010)\276\206U\247\276\206\374\366>d)\'\277GR\006>\032\356\363>\331\232\247\276u\002\021>`\243\'\276\005\202\025>f\321\243\274\305\314\235>E\322\031\275\227\344\371=\3769\254>\230t\335=\376\200\001\277\246B\332\2752\337\270\275o\013I>\025\242F\276X\277\224\275*\313 \276%\256\267\276\206h\003>\270ND\276\343UP>[\274\023\277\337N\257>\372d\374=\0340M\276`O\313\276\253x\320>0\375\207\275\rQ\362<3d\230\275n7\205=\365>\273>Hcw>\211<\265>1\301\207=\370G\360=\353\331\241\276\316\353 ?\264gF\275\004^\354\276\351\000]\276\307\245\330>:\t\255>\256\273)>\347\355t\276\374M\023?\373\305?\274\370\3310>\006\270\276\276/\314\340>\354\322\301\275\243H\203>n\244T> :\375\275|b9\275\033\307Y>j9\357\275\312\003\204=~4\203=\274\363\350>\271\323\256=\276\240O\275\334\267\r?\376!\230\276\216\026\353\276p\036\221\275\023\264\215\276m\215I\276\311\270\230>\242\234\025>\212l4>4\273\013??\200`\276uQ:>OY\316>\331_[=7\275\222<\366\371\212\276\357{\244\275\331\317\032>e\264\235>\370\376\311>\367)\020\276`2\277\275\237\364_\275\016\032\234\276\t\234\253\275R\035\235;\024\255U=\257\005\260\276\\T\242\275R\223C\276;\323\334\274\030\306\263>z\035\037>d2|\274\037\237\372\274\033\303\035\276\263w\r\277yc\241\276\316\277g\273\332u\272\274\300\357C>k\261\016\276\263[L=\337\331|\276m(6\275\321\3146<\341d\235\276\321U\214=\207\271[\276\2232J\274L\232`>\001M\022>6\266\010\276M\320\231\275\275\335\220>[\262#\276?\326\254<\331\201\234=\033\216\353\276\177\243S>\231\240\025>e\"\341<\325\016j\275kq\360\276\001+\206\274\346d\317\275\0174\247=j\232e>\227\037w<\344+\r\276\"\350\265\276\177l\251>\302\205\340\275\033\376/>\364\254\335=\366\300\024\276\324\337\360\275S\266\267>?\002d\275\024\331\271<00\352=\213\225T\276\272\370\222>j>\216\2750I\013?Fd\020\276\177\365\333=a\242/\275\375\222\265\2766\267i=\204\247\305\2748%\013\275%\003-\275d\200\375;\032\025?\276Hxh\276=\303O\276\265\014X=\026{\224\276z\271_\276Gd\202\274\\J\365\275\225$\310\276\220U/\276\346\017\260\275\245\237\265>v\232\323=\207\342;=\205%\037>\237,>\275\002\256\343\275=\345H\2763v\374><\232\320=\3548\205\276\336;\">\242,\250\275\240\371t>\211_U\276ZH\230<\222\234*\276\277\266\234>Y6\304>\232\223\213\276\010\275\362\275\000{\363=\010&\004>\031o\256\276\266b\313>d_\205\275\213\356\231\275G\027\254\275Q\276\312\276\024\330i\276\305Qe=\355c\247=\214\225\020\275\203\255\264>\201\306\025=\300j\273\276=\257\253\275m?\210?N\377\226<_\275i\275\223\242\020\277\323+8>\361n\272=\034w\266\274\2266\343=3\377\250>0\006\306\275\263\1778>\337\234\322<\266\026\033\276\032*\234==qW>\236\255\355<\344&\r>/\302\232=4\230\352\276Wz>\277Go\034?W=\010\275f+\304>\331\305\374>7\t\002>5\357\313\275E\223\371>\240\327\026?\\}\340>\205|\354\275\303\374t\276\277\212\023?F\n\362\275\222\223L>\275\275\334\276\'rN>gf\300=\021\370\370\275J\017]>3g\331=$\331\027?\301d\022?\363\003\252>\017\376\254\276=\367\241\276\"\354~=\007@\212>U} =T\336\177>3o\241=\022\320\277=F\211\031?\225\222\020=\230\337\243>>V\271=\322+\257>9\024o\274L\217\260\275\276w\227\276,\007\016\276\277\235-\275H\306\034\277\3423\310\276e\236\207?\221\244\330\2763\213\275\276>A\025>\343\004;><\366\036\276\252d\220>:\346\214\276\002H$\276\317\300|=\007\345\240>\246w\373>]RH>\244UY>oW\002=\226\017\242<\026~6\276\370\030\200=\255lS\313\373\310>\021\261\362\275\304\221?\275(<+\275\032lr\276=\340M>1[\256=K\234D>\250\326%>7\025[>\231X\353=\004\256\324<8 \035\276PD\331=\034\202\322\275\363\217v>)\216\220>:\020c>\001\024\017>*\266\200>\263\361R>Ml\244>W\227\375\273\007_\264=7}\362\2759\224\203\276\204G\324<\004\276\277\275\260x\322\275\267!\240>\236dz>c\352s>\354\020\'>zE\270>)t\315>8\002\000\276\364\360\224>\240\177\025=\321F\302\275Q\3008\276*\200\002\277I>\370>\267\216\264\276\340\002\013<\260b(>\235\031\223>\016\206u\275\2427\357=,KN\276\3743\205\276s\200\204\274\332\n\250>S\014\214\276\376?\207=\005#\020>C\234\324\275\231\363\211\276l\361\257;\024Z\232>\254\031\333\026\007g>\261\241\264>8.\240>\227\232\032\275\246\247\002\276\241\027\007=RV`>\261\311\225\276\225\337\315>\224_\231>3\027\027>\350\343\276>\215\346\026>\t\365y\276\343\373\000\275 \357\251=\2316a\275B\336\346\270#\217\274\347\301c>P\341&=\332\220\211\273~\345/>\031\344\220\276E\261\231=+e\343\276s\334\272Z\264\033>\261p\240<\207u\363\276r\003\034\276\345\371\231\276\304\004\027\276\270 \217=|\260$\276\006\316\233>\374PH\277]@\010\277:\252b\276\355\301\216\276r\242\251\276Xk\213\276\203\254\004?\203\321\255\2765\207%\275\003\271T\276_f\206>D\255 \275\367\213\242>\372g\020?\003\352\234\275\221\306\024\275\362S\221\274\354\320\347\275\373U\351=\000I\206>\307\013\020\276\017x\330\275\223\3139<\031!\300>\260\267}>\352=)>\025%%\275ON\370\265\254%>\363\203g>!:\267>,\303\351>\204\002\243>\352\365\006\277\212v\217\276\2765\000\277\032I,\276D\353}\275\231qe\276\342r\344>B\017|\276*I6\277~\nO\275\256\030\032>\357|;>\232\\T\276\334!\246\276\211,`=.\226}=D5\003\275\177\330\036\276r\037\343>\231W\370\274VAV=*d8\276\006}\211>\351\351\024=\324\301P\276\361\032\331>9\307\214=\327\315\244>\334*-\275L\216\236\276\3651N>3H\373=\017\342\211>\314h?\275^\341\033>-\225\261>\"+.>\237\211\000\275O\001\t\275\033\220|>\254\261\237\273\016\361[\276\023\3605>,\225e\275\301\336:\276}\004C=\203\370\362\276\r\300\257\274S\001\370=\257\326\200>$\240\347=\303\272\262\276\374\016\360\275\337]\375\276\333y$\274\212\243\036\276\245UE\276\371\213 \275C\260\016\277@\321M\275\021\221`=q\243\205\276\036o\222=\223u\241\276\024\365\230=U\001\262=B\371o>\277\230%>\tn\202\274\251H\010>3\353\266>X\226\325;\034\351\203>\314[\364\275\'\240f=6\242\354>\225$(\275\273\365\210=\305\026\n\277:_\217\274OK\373>%r\023>O\352\203\276\001Dk>\226B\330\275DAO\274\337\003S\275\244s\344\275\034\307\017\276\002\305\260\275\025qe\276g/\004>#e\226\276RB\242\276\260\356 >\023\203\214=\361\266V>\244\017#\276\256j\256\275@\255\177\276\030\232\311\276\213\204\026>\202I\021=\244\033\317=8\260\253\275\224\364\327\007\346\034\275\362\323\355=\367^+>\252\247\346\276@\326\214\274\317\232\327=\002\217\244\276\221-\313\274\360\257\217\273H\261\005=Z|_\276\344\333\005>\307\211\266\276\336\256\352<\245/\373\252\254\242\276LA\307>\257]Y=\237\357\023\274D\"=>{\t\272\276\005\245\234\276b\203\177=\265\334(>\210\203\311\276F\"N\275\344W\017\277\222\210\303\276\014Y\302\2768\245q\276\nm<\276\321\365@\276H\'o\275j\354\024\277\213\367/\276\246\313\241\275\323t\334=\346,r>\257 \006>\267\010\311\275\243\203\372=]-\232>\200\024C\277\220\202\306>\316\0261\276\243in\275q)\002\277\266\372%\277\250\373\321\276!|\355\n\277e\277d\220\001>\354\003\273\273%\253\204\274\222\355\225\276\377\271\007?I\221N>\210\324\013\277\202}\372\274\233x\307>i\301\311=\030\216\246\274\373\377\240\276p\342\226>\336\261\300\2750\237\250\275\2035L<\032\277\217\276\261\254\340\212\013s>h\004\320\276\342\271\031>0\277\251\276S\367\020\276\363\225\371\276\373y\312\276\364\210\025>`},\276O\220\241\276\217:C>\016\014\361\276@\362i>\337\235;\275\262[\330;G\004\276>h\255\204\276\344\360J\276p\2310>\"<\024\277\325\343\026\276E\334\371\276\263S\217<\014\2066\277E\304\235\276d2\203\276\004\344\227\2768\352\214\2765\227R\276\322T\242>\037j\366\276.\311\231<\344\316\230\276\223\353]\276\236\213\250\276\314\245\312\275\354\242\213\276\t\362\005>e?\352=+\326\254\276\367\003\306\273\300\006\304\275\315\232\020\276\021\270\027=>]#\275\251\311\010\277\014O\342\276\310\313\232\276\371\312|\276\376\026\032?\331Y\206\276\203\252\343\276\302\211\243=r\nc\276\313\313\272\274\321\237E=FQ\244\276\312\335W>\244\205\006\276\3427z\275\034R\227\273\33494\276\374\207\332\276\367\325\374\275\310\237\347\276S\331\017\277p#\302>x\221\305\276yG\300\2755#Z\276\316\215@\276\207O\r\276y\225\r<\314@\220\276Wpg\275\337\214\321<\350Eu\275O#i\275D2\224.\354\213\273ek\337\275\220\323\177\275u\336\010\274\357\371p>3S0\2761\314\360\276S\337O\274\260sw\276\255\220<>\343db\276\231\272W<\252\303\205\276=\026\314\276\211\035H>\337\371\334\275?\256\017=3\201:>\016\345\206==\356\212\276\266r\027\276\200\221U=\367\337\351>\217\211p=\325\023\314=\177\325G\276\262\337\330<\2405\353\276\023\357\234\276\010_g\274\177\201\036\276\304\206;\277\255\2114\276\026@\251>\345\354_>Y\323`=S\257\220>u\232\345\276\342\n\323=\006N\215\276\342\330\346\275#I;-y\261\275\257\373\333\276\375\200\307\276\2155\313>b\351\300\275\343\227\205=c~\347=\016\217R\276\340\263\026\276\354zG\276\350\335^\276\317\264\366\2769\030h>\256\321\221\276E\022:\275\302\3405?\266\315\251>]\016 \276\234i}\276\021Y3>\364\314\223\276,\204\201\275\266~\207>d\206\340\276\005\276m\276x\025\"\277\352\346\225\276u\346,>7e\274\275\345\244\000\277\342\353\337=?\031\300\275\352\361\204>\241\334\003\275\317\330\301\276\323v_\276\211\214%\277\331\3239\276\351\344\257\2768\370\350\275\256\373J\275?\254\302\276G\261\243\274\357\363L\276\256[\031>\003\023@>\355$\036\277\210\340\010\276A\232\226>\373\371\024\276$H1=\342\027\233=\346\025 =\372\346\320\276\240]\263\276 \031\267>\334`\216>\356\2732\276\332\233\373\276o\265\303\276\333\352\276\275;\030\303=:\333Z>\244\301\004?9\343\262>Yk&\277\003\352\300>\367n\021=\223`,>\007U\226>\037\315\247\276\327\325\226\276@\240\330=\014\316\372\276\247\276\256\276\254\301\007\275!\235\370>\246\222-\276\351f\220\276\226\016\237<\332\350\203\273Q\204\331\275\t\200\227\276\314*\330>\360EE>\264\022\252=\312\215\201\276N\311o\274t\302a\275\355\201\271\275E_\014\272\276\262P\241\274\277\340\365=\"\206s\276\177o\002\276\213D\356>?\327,\276#\235\"?\276=X<\"B\275\275\022\336\265\275*\274\262>i\344\261=:\261\007>\340\300\365\276\312\243>\276\307Lm\276x\213\343>\343: \276k\223==)\307\022\276\336D\332\276\034\212\232\276\331\347\371<*\203\265\276c\355\360=(N\205\275\256\336L\274I\353\351\275\377\340\032\277zw\035>i\020\355\275/xM\276\021 \205\275\351\320?=z\372$\276li\031\276\211$\244>]\235\267>7EL;z\377*\276\304\303\031\275\332>?=\345\226\014\275w\221\227\276\036\222w= ,e\276\273\245+?\276\305\346\275u\254\022\275\276\275+\273u\334\305>\245\353q>,^\202\276\345\362\001\276b\237k\276\r\253&\275\263Q\232=*\361\017\275\255\304\310\274:q\026\2772{\220=\203\307\206\275\233D\004\277\300\226\237>\214\306\010\277\322\n\220\276\300~\347\273\352\370\210>\202\363\310\354\305->5\356\t\276\211s\006\276@\027\201\275\333n\375\275\245o\233\275au\370\276\036\226\261\276\225W\257\276\264\207\306=\006\370\022\277\317\270h\276\340\214R\276\376\310\371\276\374O\025\276i\333\001>\265\303 \276HB\334\275\"\2026=T\367\255\276\016\375\315>~\220\217\276\2467B\276P\364\222\270\231;\316\276\2552\251=X\225\301>\333\033\205\27679Z\276\337\255l>6G\215\276\303\005\346\276\3079<\276\025\305\202\274\360\351\257>\247S\274\276$\'\275\276\210wh\276F\273\354:]\347\013\277\260\376\351\275\207\2715\277\177\2707=\306=\254\276(\203\032>6\245\246>B\003\225\276\216\304\340=\267@\316\276<\340\334\276\352)\241=/\035\023\277\352Gd\275\250\342D>\275\314,\276\314.\327\2762\224:\275T!\005\277\321\352\335>\3260\241=\306\256\005\276\242o\010>F\010\024\277\230^\203\276Nw\354>\317\247C\275U\354\013\277\010\300\004\277\272\277\322<#9\360\274|\006W>\343\275K\276b\230\020\275//\006\276S\343\235\276\\\215m\275\3318\240\275\344\346\201\276\213\014\310\275^\001\013?S\306\034\277=.\017=8\017\002=\r\034\237\275\234h\252\276\265\213\010?\005\014\343\276\233\2567\276\375\'<>\306\263V\275A,\360\275\255\0275\276\257\016\202>\007\006\334\273v6\310\276\243M\223\276dj\211>\250Sg\275\222B{>\311\337\305\273d\336s>\241\253=>M\227\343\276iR\361\275`\263!=O$#\277\2064\326=`\034\231=}0B\275vI\214>\311\330-\276\006{\247\276\261\025\007\277\245\352\027\276qw\252\276dN\010\277\364\030\307\276\373v\347\276\254^\306>\215\221\322>\367l0\276\037\370\326\276\321\363\304\2768\210\201\276\324\332\372=\213\232\234\275\002\030\270>\336\026q=S\344\261\274>\220\317\275\210^\253\276\014\000x\275\244\211P>\336\232\364\276\021\354\036\277L|N\276zm:\276\361b\215\276h*[>\332\350\027\276c.\327=\310\224\035\276\014\301A\276H\020A\274\027b\213\276R\235\216=\003\247\007\276\033\224)\276\236\221\031=\216s\203<\257.\342>d=\370\274i\226\216\276\000Bs\276\034\356\216\276l\221\303<\003:\024\2756o?\276\221\034\'\277\275\243\214\276O\357q\275m\243\224\276\254r\301\276\236\031\244\275)\351\244\275\250\220\240=\001\264\265=K\223\235\275\212\023\327\275\016a\314\275\267:\004>\000\013\007>\214\371d\276k\006\300\275\265\313\363=\347\014\007\276\352\303\263\276\000\353V\276\326\000\215\276\331\233>\276\020\255\344=\360\364\264=&\244\350\276\021, >s\347s\276\3326\247=\227x*>ZX\274\275en\215<}\n\342<\276Y\233>\256Ab\275\004\371K\276k\010\240>\025\017\035\276S<\215>p\241\271\275\250\354\266>\273ZT\276\337\201u\275\307n\023\277\261\004\001\275\004MT>\017\013\244>\3764~>\231\023\217\275f\222\330\276f\210W\276/\226>>%S\377\276\335\355\260>\027\263\224\276}\0210\276\360\314\315\275b\321|\275\234\301\201\2769M\373=\270\272B=\004\036t>_U\217\275Z\306h\275\377\336\226\222d\324\275u\264\017\277+$\221>\t\223\271>Ja\257>\216\330\001>,D\300>\005\356\027\276\332\302\202>\251R\007?\371\001\327=i\342\204>H\016\020>\2712!>^b\262\275\327mZ=\020\260Z>\240\200\310>\373\363\254\274|\336\304>\232\377\002\276\3609\317\276\3638\365:\372d\310>\367\251\256>\371-\035<\244\005\255>p;\003>\256\365{\276\366\372\206\274\001{%\276\356\352\323=\307\007\226\276\177\223&\275B>(>lk\317\274 \005\211\274\353\337I>:P\230>*\346%>p\231D>\322W\313>\223@\375>\277\365\347>3\332\353>I\325\355<\255\2044=\376W\230>\212\0254\275\321x\362\274Q\331\224>\304j\">\2175\224>6l\241>\251\207\025\276\034\260\362>_\024\303=\r\362\311\276\346j\307\276\261_)<=<\270\276Jk\220\2754RNfs\256=\301-\313=v\250:>\367=\304>\213\353\200\276\243Z\033>\343I\222>\257I\242\274\251\311\032?\332b]>\267N\351=\246F\356>\001d;>\273\245\341>M\t\214>\022\213\211>;\250\r>P\335\207\276\022\376L>\204\3727\276\316\346*=}\004>\276\210>\235>\027\032\365>\315\014\231=\2302b=\374\'\225\276o\240\265\276\334/y\275\345K\013\275m%\355\275\323K\366>?.\013=\024\241\262>\241\334\223\275o\253q<\266!\333=\366\330\252>\3526\210\276\375\317\006\276\35575\276K\241X\276Z\350\271\276\214\0336\276\256\372\322\275ep\022=\200\274\327<\327\352\215=\376\024\220>\014\n\325=\314\244\202=\347V@\276\354,\223>l\005\334>\26316\275?\230\204\276\257\315%>\270\343U\275I\214\202=\004w.=\000\003\031\276`m\346=\267N\236\275\350\246\222=\375l\306\274\276\270\034\276\000-\005\276\330n*>\337\333v>\315ru=-\300h>\232\233\317>\315\276\\>r\271\225>\341;\316\274\3130\213\276@1I\276E\315#\276\237j\030>bL\351\276NnO\275\247M\025>\374\217a>\242X\354\27406\340=U\232\203>\222\250\315\275\010\215\266\275\234=\006>|\213\017\276\330\301\030\276-\232\367\275\325SS>\300_^>\235\323\275=\317\037\367\371\255\210>~P\343<5\276\323\276\365\204\236\276\034!\251\2761\337\335\275\322\304\216\276A\220\320>\370\361\"\275\240\263\352\276 \311\211\275\260\333\245=\354M\310\275\007\351\242>hM\366>\340\264\227\2769\315-\27446\r?\320~v\276\341f\371\2753\253\375\275n\366g\276=\037\265\275\213M\032=\324\304\031>>\355&\275\200\223\001\277#\231\205\276\246A@>\240P\234;W\177\227\276\301\024\177\276L\252k\276\260\030)>\332\341\336\276\007\301c\276`\321\325\276\223\342\016\277\3752I>+\371J\276\357\305\377\274O\201\337\272q\262\361=\273G\333\276\262b\004\276\313_\020\277}+\217\275\033s-\276\220\275_\275\256f\n>\304\210\370\276 -\322>\241\322*>Z\213\335\276\\{\343\275\357\267]>\274\326t\276\n.\000<\367\226\\\276r\2452\276\233z,\276\302>\305=\200\343-\276wVS=\343\355Z\277\2305\363\276\010\032\207\275\r\311\210\276\370(\351\276\017\243\010\277\271k\304\276\233\003\364=\374\304x=\303jF>X\330\365\276\2715\250\2767\377U\277\266\373}\276\024L\273\274_\254\007\277\313\305\341\276\245;\347=\275w\221>\346\202\027\276\320\251d> \262\305=S\243\030?-\304\351\276\375^w\275\260\265;\275\247\007<\276b\203A\277vmG?\t\002\036\276KA\340\275\241!\221\274\346\370XV\340\306\275\010\362\333\275\003\207\264=3Mz\274\t\351?=\341=\366\275\t5\036\276\354w2\276\014\364\206>\304\237\272>[\311\204>Ap\252\276\210\254\005\275\265|v=`\034l>f\332Q\275p\335\271\276O\177\037<\300M_\276\264,R\275\307\251\031\275\373\3136>v\312\321=)_\246=\006\374\021\276\034\307\344=A?>?\021\003\310\276\325\254\016>7}2\276$\231\213\276~\347\324=v\364\265\275\312\356\031\276\243\213\330=TA\036\275\324\3100\276\026\004\214>\367\374\251\275v\220n>\241l%\276\007:\020\276K\307N;\321Q\307<\213\324\260\276 \364\207=\206F(\275\002*M\276h>\031=T\321\260=\375\256#>S\026\246\276\327\233*\276m.W=\216\3779\2768\305\372\274\306\242\275\334\273\367=\321\237\264\276\222C\364\276\007s\361\275\356\254\305\276K,\206\276\263,#>\'\340\270\275\346\235W\276\260\3447\276\017\027\027>\326j\204>I\177(=\\\252\277\275\240\315\035\276^w1>\213c\202\276U\017\210\276\371\227\027\274\007\215D>\246\344:\276\016\322Q>\304\350\004\276KW\372\276\375\301\204\275q)\224\276\223\252\313<\331\315$=\212\214\346\276\306\250\022=\"\224\225\276\204\203e\276t\332\300=E\260L=\265\032\260\346\241\257\276\206\305$\274UQ\262>\227\017\002\277M\351+>\362\206\344=WhM>\277w\n\276\330\253\357=,v\034>k\0054?\'\351\017?\267\216{\275^\024\210\275\363&.\275\207\206\276=\245e\177\276\021f\250>\350\2566=+\374#=#\017\242=\337j\346\276\301v&>\023\311\270>t\213?\275t\362\367<\224\016\312>O\314\263\275\0312\261>\360q\243=\377F\220=\327\300W>\226\000\216>\253\224\274\276\177\204\246>\255i0\275\202\240\247>\005\334\317>w\367\023?\000\315\242\274/\372h>\022\336e=g\277d>Q\345\222>\317\026i>\366*\266<\223H\355\275l\340t:\002I\245\275wf\227=M\010\237)Y4>w\375\215\276%H\245>3\001m>8\212\367\275\325]\357>3\005\214>-\260Y>7\022\265\275\243\307\342>E\347\321>\374\342\266\276\350w\246\276#b\222>\337\304\001?\317\272x\276_\321\217>\221kj\276t\007\313=\325\325f>\r\035\326\276\247*\273>\254\005\213=\n\333\325\275\217\312\"?\213\321\240=\334d\271>3\001=\276\316\337\252=\206\302\231\275\030-\334=p\036v>z\3761>\237\366@\276T\276\243\273\361\336\036>\030t\317>\367\177\031>E\370\205>\036\356\020\276\354\202!>\252b\036=j\206\254\276h\022\271\275\366Y\243\275\335b\007\276\037]\276\276\357\377\232=x\023\326>}\035\010\276\233\247\225\276\272\367\225>\376\215\371>\010x<\275i\236\003>\212\010\">\266z\333=\257\002\321<\004\304\021;Jz\034\276\017\234\242\276\263\376\207>\207l\225>O\333\345\2748\'\265\275\036\006\241\276\333\032\215\275\022\253\3766\237\376=8g\035\276\252\366\240\275\252\004M=\001J\032?g\261\225\276C\020\226\275\242\243\022>\004\335\232=\363D\224>\223\275\212=T\245C=\017]\277=\214\333}\275[<\217=\n\337\006<\221*\327=>C\347=\301\\\236>\367z\222=\'\305X>\206\000\334\275\225\253\341=\r6Y\275\257\374\014>\231\255\027>]\367e>\323\244\345>\371\215\177>\314\3415\220\027\232<\303uH\276~:z\275\014\016\005\276Fe\243\275\202\263\033\276\351\005\275=\213\343@\276\225\303\221>\tF\374\275RJ\251>>\324\027>UxK>,C\306>\270\277\005>\372@r\276n.\004\276\001qB=\2736\352\276\021\235\354>Uz]>!IJ:r]z>\236\000\014>\330b5\276p\022\212>]\316*\276\353\255\362\274\301\017\312>\3236t\276e\275\215\276\017\037\210=\233G\201\276\321E\332=\030\324\020=!=\231\276\004a\020\273\211\306\007?\343\006\020?\305\022\033\277\2479*>\005\275]\276\2775\230>\315\024\213=\017\325\256>\344,\034?\363\242\301>\350\346\260\274+\337\244\274\373\037H>\005|\365\276\250c\324>\304Cu>q\001\303>9\230\310>\377L\231\276H\305(\276\247k\225>\301\342w>@\260\221\276\002\211\005\277\3529I\276\331\010<>\234\334\367<[\007\226\276\202\0230\276\223\236\034\277\303\010\240\276\034#\211>+}\223>\254Oa>\232\324\331>\325\261Y\276\313\333??\222\023\247>p\2237>\245\213\331>\311\250\312\275U\307\227<\326\266\352=\2757\357\274\305\021\204\276g\016\223\276lD\213>j\225\371=\221\237\223\276\226Y\031>\227\273\250>\310\231/\276\301\206\212>$\177Q\276\033\335\237>\374S\306>\336\337\t\277G\266\221>i\300n?\235w)\276H\036a>\252!1=\246\231\310>\363\312\021=\230+\275>\037\212\317\276\240\376\254>\326\221m\275\223W\002?oh\224>F\033\362\275\200=\037\275\364\325\215\276\267K\021\276\305\021\345\275$\346\243\275\236 \214\276\376\240.>\3326\343\276\224\247\253=\3310\'\2766;\177=\027\213\217\276E\265\301\276Il\340\275,\371\240>\305G\226>\274\335W=\276D\202\276\374\324\275\20496>\375\260\241=\243\320\375>\353J\001>\210\354\341=e\276\226=\3013\313=\376\240\201\275\242\312\250\276\264D\017>+-6>Ic\241\275\304x:\276\220\177\002?\021\322\272=\261\274\340> \006\376;m\022\265\275\254,\263\275\210\022k\275\372+\372<\351,\254=\356S\357<\275\206\006?\333\267{>Lv\223\303\361Q\276\376w\340=\215m\240=\005\307=\276\262}\177>\364\365\326\276\352\376U<\rR\023=d\270\r\276\302\322S=\205-\316\276\020\271\177\276y?\343>^\n\232>\207\263h>\350\221u=\270\232$\275\013&-=\013Op\275cuy\276\213F\253>M\033\221=$\331h\276\236G\224\276E#\363<\214\247g>\316\345\254>\335\225\206\274\321\377q>\215d3\276\013\272\252\275\373\367\204\276bxA\275h6\207>)\257\364\003]\t\276\320}E?\350\343\203\276%\344D>\\\320\220=\302C\311=b\217\247\274\r\r\227>#p\030\276<\313\266>\317\365[>\021Q\314<\363\225\271>\004[\304>\004\2714>\325\330\000\276\230\351\336>:\226\036>\256\215r\275\n\352G=\275\r\323\275=nd\275PE\005\276C\251\306\275a\252f>;\330\337=O\225E\276/\350\035\276\200\252h\276\362D >|\347 \276\322\370M=\036G\264>\241LO=\037\265\241\275\325\035\250\276q&\205\276\310\244\365\276\036\241\025\277O\307^=l\t\220\276\200\255\326\276\020\257<\276\376\013\231\276\204e\254\276\222\234f\276^l\023>\r\376\210>\347\264z>x\352\253=\251\330S\277\323\021\026>t\317\322\276<\224.>\255\316\202\276I\374\351<\331\365\262\275\223$\273\276\232%\021\277T\253p>_\273O>\345\032\210=\024]\272>\354\342\224<\244\'N\275\217%\302>!\017\203>\332C\344\276{\261\372\273Y\354\010?\214\204m\2747\241\002>\313\336\037\2763\002\014\276k\2267>\222^5>-\230\377\276\367\225\312<\211A\024\276G\330m\274@\367\300;\330\247U\276e\230\267>\274\033X>\266\334\037\276\017a\007\277\013\340\002\276\363\316 \277u\355\301\275\\\271\376>H7\325\274\300]5\275\\\\\247=\301_\322\275\233\024\240\276c\371]>\343\350V\2769\350\002>t1\026\277G@\004\277t\000R\276\340\342\226>\234\221\222>M\217\177\2766\234\270>-\326\273\275\240\260e>\2158\033>U\013V\276\035\3516>\213\213-\276?d\373\2750\211\310>\203& =\370\023V\275a\2066=\246\300\330\276tn\202=\034\320&>X\213\301\275U\237!\276\255\255b=\237O\324\275\213\036(>\355M\322\276\320[\265\276b9\'>g\334\257\275\3316\354>``\303\276\361G_>o$\372\275\007E}\276\320\266\227>D\210\255\275h\372\236\275\200\244\177\276BF\267=\320\306\227>\303g\206<\225w\000\276\215v\242>\242t\330\275\365\352\036\276m\314\022=\216&j\276\340\275\251\273\256NZ>L\275\\\276\322\030\313\275z\227\033>\217\314Q>\217\260\330\275c\026v\275@N.\276\227\241\275\275\257\000\234\274\005\244<\275\275\t\205>\221\307E\276\225\241\005\276\272\237\304\275\364\276\304\275OH(\275p\200\350\274<\003\300\274:\032\210=\203\242\257\274\232\231\254=\022\337R>\207D\255=c\026\331=\307\345b\276\235\233S=G9x\274L\276\013\277\341(^=\305\352\204>\300\223D>\252\235J\273\002\005h\274+G\351\274F\247\242\276\342\304\272\275k\240\375\274\025J]=\313L\243\276;\233)=\265\026m\274F\274\341\273E\320v>\013!\257>T\357\346\276\346\241$<\0025w\276\332\376b\276?\026\020\277t\254o>\301\371v\275\244L\227>\242\324#>/_\002>\274_\362=\253\r\\\274\014z\362\276\317[\222\276\326\r\234\276_\251\000\275u\350_>\370\177\232\276\353T\032\277,\202y\276\004\021\323=D\264\341Y\246!\276U&\206>\202\323\356=\270=)>v\3511>\345e\000?\312\361\024\277m\376\306=)\374M\276q\340B\276\nJy\276\336\346\265\276X\354\320\276`\376>\276l\252\350\276\313\223\352=VH\241\276\211\273\177\276W\353\221\276`>\013\277\356\354\327=\263\212\212\276\353\177Q\277>\214\271\275d\347\007\276\030^[\275\022\333\200\276\351\276\016\277F\021\274<\200^E\276\371/\276=\306\3111\276v\277\025;\267\301\215=B\3362\274\314\250q\276V\277:=*&\355>~\341\342>\201#q>6\351T\276\303}C\275\370\243\361\276\301\031\203\277\225V\005\277 .\304\274\345o\330\276\227>\331\275_\232\237\275\216\273\206<\035\242\316>\255\257\313\276So\220\2761\352\353\276\271\216\037\275\016\035\253=\330\273\214\276\344\230\364\275\307@\262\276\n\325p\276j\346\204\276\202\203\024\274L\1770\277\200\017\031\277^\233\317=\017zR\2767\225\030=)JX\276\250p \2755\227\226\276z\372\343\276^\345^\2763\362\t;\343\315$\277\340\253\214\276\263\224g=\006\212`\276S\254\372\276}L\014\276\257l\235>F\337\304\276\3519A>\241\374d\275\014\261l\276\0017\205\276\245\260\234\275\235\223C=w\316c\276\221\213\303\276wi\260\275\322\341\245\276\314\344m\277\206(\232\276\335\212;\276\355\326\221>\246\230\023\277\334\213\370\276\371\024\346\276\032\221\266\276\360\270:\276\350\354\001>\205\303\234=\342\272%?\220\270\036\276\215!\224\276\027!\034=\203\210PE\312\302<\213x\317\276\021E\246\275\333\243\020\277\330\303\211?X,1\277\345\340e\276\232\330`>\014\324\t\276\020;\022\2760\221>>\315\310p\276:{\336>\215\276P\276\341\3372\276\310]\000\276n\265\036?4\211b>\226t^\276\333W\361\276\022&\003\276P\363\356=\323\210\234\276\225\354\367\275\271D-=\210+#\276ca\203\274\236\267\326=\217\006\347\274\351\2670\276\243\310D\276\301J\t<;\307\271=\241\206\213=\273KP>\303\007\326\276!#l>\243\244\036\277+\347\241\275\002~\306=dI\322\276p\366X;x\367\253>k\346\240>1\222\255\276\315\350>\276\271\323\026\276;\347\243=\232\215&\276\211\341\257> \220\307\275qU\035>\335J\235>\037\236\224\275\242U\237>_\351\204\276\216\321\320\273\336\t\207>/g\320;\220\2448\276\220b\022\276J\255!\277)\315L=\216\340\032\273\316\204\314=b\216W\277\354Xc\276\247\000\003\276@\263\301=\263\335\250\276\273_:\276\301l\t?\365\256\310\276\363D\031\275\265{\275\276G\016^>\224\321\226\276\323\277\234=\177\240\261\274E\322\216\276?-\240\276\265\255\206\276/\215L=z\033\353>q\366M\275\220\327C\276r|\000?4w6?U\315\233\274\301\255\252=\221\200\246>\227\307\263>3\221k>dl\201\276\3531\216\275\273:S\276\352\214\220>\\\322\235\275l\204\346\275\017P\217\275\\\\\000>\275\t.\276G\332\262=P\374\247\275\251\377\367=&rC=\325\333\355\275U\272!?\341\366\367\276H\246z\274(Ou\276Z\024\022=\025\342\264\275\334=\251<\263d\020?i\n*\276\330\242V\276\364\3400\2761\0314\277`\277\221>\257M`?\221;\213\276\215\035\234\276;\212\337=#\342r\276_\025\013\277\215\037\'>}\350\000>\370\202\213\276L\\I>\024\007\217\275\251\321\327<\340\355\227=_\003|\276\375\361\220\276\377%\033>\'\326\374>&\232\024\277\341\031\274\275Y\307o=\0374\243>W_\031?k\367\013\276\032\223J\276%WM=\304{\372\276\265g\321=\337[\276=bI\262\275\216s\235\2767~\225>@\340\260\276\257\377\233=\2651\224\276!SD\275\254}a>\303\241Y\276$\366\006\277\277\320G>\355\354O\276Q\271\230>\373\004\331>@\0306>y\263<=\222\314\327=\025\017\274>7D\221>\255\273\262>o+0=6\030\343=\222\356\271=l|\032\274\374\350\035>+u\316<\303\177\314\276\006\343\232\276\231\027\221\210\267\324\276W\224\202\276\3172?\276\335\2039>\227#2>g\273\246={l\360\275\322\365\263\275C\030\270\276\234\244\203>\243\220y\276\220;\004>\264\205\225\275\333\266\376\274\304%\217\276,\275\241\276,\263\333=*\262\n\276\371R\246\310\263\226\276\261\232-<\226\301\250\275U\200\220<\362\273\210\276M\010K\276\021\031\341\276L\327\201>\355c8\276\266,\n;X\252\243<\3340\014\275ei\016>\002M\232\275\005d\221=\233@G>?[\220>\221\021\020>\247\222\257>\301\005\337<\270\330\215>\264N\207\276$\273)>\020<\277\276\277\206B>7\275\266>\301\332\346\276\023\202\210\276\305\035\347\276\\\363Q\275I>\002>2F\345\275\0231\251\275M\2437>S\267\315\274\231N\211;<}L>\333\343\344\275\240\320U\276\264CD\275\"\356\336=\2145\013\276\010\300\036\276\235\335M\276:u\016>\230*\342\275\220L\351\276\316\311\220<\237z\r\276T\310\215\276>\216Q\271\221\206\275>\211]\261>\364\266\270=|\220\366\275\000\371r\275?\3574\276\366\342K>W\035\244\272q\352\016>\014\355\373\275\223\3307\275Q\022\024\273v\236\'\275\351G\217>\343p\211>\347$H>}\277o\275\250\355\337\276\2546E\2762\251\024\276i\260\230\275\236\267\303\274f\027\013\277\277\223\324\274]\2770>\222w\274\274P\334\017>A\037\334=\311$\326<#\010\340=\212l\257=\200\036\270\275\265J\307\275\037\332\031\277R\340\302.>\323\275\333\257\204\275\314c[>\n\245?>h\214)>\354P\316>4\267\004>\340\270\346\276\205\210\200>\261)\370\275\323q\002>\236\306\360>N\025\351=\312k#;\301}\303\274#Y,\276\317U\306=\320\323\014\277\351l\212\275Yz\330\276\202\347\213\276e\346|\276\237\016~>\276\311X\276\343\333i\275\335\341E=H\227\230\275E\316\361=\\\272\212\276\037\0227>\013O\255>\275$r=vdy\276]\214F>6\302\262\271\307\232\232\276\356\342\266\276D\362!>\275\276\336=\303\343\215<\221sX\276\020d\256\275.\316\306\276\331\\\260\275\3165I=\260\315{>\344\022\214\275a\333\202\275\266\356\306\275\246e\201=i\240\275<\010=\274>9\237F=\253\006\016\277\016\345\372=\377\321E\277\354\244\262>8\260(>P\320\201=QT\240\276i\316\332>s\353\244\276#\021\360\274\341\317H\274\3312A\276\206\362*>N}\232\276B\355\312\276\014\242P\273$d\221=\263\346\261\2746\177\213\276\213_\316\276apF\277\t\215\036\276\2041\200\275\234\224y>V\371\024\274ws,>O\007\326\275\305\263_=u\341\233>}\031Q\276\255\305\036\276\367%\223\275\265\317\253\276\230\302\001\276,\321\\>=f\353\275\300\353C>`4\362=\205\254\247\275K\250p\275\3249[=4\333Q>O`\'>\231\255\331\275\230:k\276\211\201\353\275b,&>\2344^\274\251\265\'\275k\002\214\275\231\373\262\275\te\212\275`\362\306>\r\004\322\276\242\265\271\276\307\206y>\265\211T>\322j\270\276o\334,\276&\355\360\276\003\221\235\275\223C\223>\334_T\276\361\n\342\276\353w\000\275\004\316M=]r-\276\025C\246\275\202\303\254\276\200\203\225<\036\270\365\275\346[P=\\uQ\275\254\270\330\276\241\251\003\276B\244)\222!\225\273\351_\322\276\350\365f\276\352:5\274\001~\007\276\313\204\233\274\317:^\276\345\033\t\276*R\224\274\372\263\325=\310s5\2768\307@>\306\021\256\276\250\330\2448\n\325R\276\267N\213=\256\n\222>\n\202x>\3370S\276\004\324\241<8-Q>\334\226\217\276\277\233\267\274Nr\375\275V+\266>Q\001\030?fxe>b\332\203\276!\371\223\275O\245\r\276\2655\221\276/\036\243\275\307\236\267>^4\372>\204&\350>\035\007\236\275\3025\351\276\374V\356>\323\335\251\274Q\216\371\274\300sR>\240\377*>\031<6>\016{\257>\323y\213>\313\203\316\2769L\347\275~\374\223>\200\363\'>\357\010\000?\266\227\225\276a\034/>\336\222\214\2756\214\210>\002\"X\276\360?@>\236\213K>i\370\235>\372%#>\205\330\274\275\317\271\317>xaE>P\"\223>\252\374K>\330\354\371\275\345\340J>$\373 \276#\020\273=\253\326\000?Q`\203>p\342M>R\305->\n\270&?\016\320\303\275\026|\202\275!Z\257>\366\030\362\276\345oo=\002Cy=tY\233>\267\356C>U\315\244\276\027Y.\274\306\377\274><\335\334>w\021\264>N\265\276\275p \345>\361\263\260>^\022^>N\245\227:\276\\\224>\225G<>\325\304\233>\014\276\352<\365\314}\277\342]\224\276\206\310\244\276\247\223^=\025\014\205>\205i\213>>A\251\276\373\302\202\276\203\321\000\277\365\353P>\276\216^>\275T\333=40\342=\304\301Q<\315\2157=C\205\341=L\003e<\333-\245=-\326\355>P\371\225\276\351\360z=\025\344\241\275i9\356>e\351\0259fI<\277\315\265\255=kh\026\276hOF>\360\037Y=\336H$\277X\227\353=\272\356\203>v\346\010?\316\245\224>}5\212>Q\025\312=x8\322=n\371\302>u@\327\275Y\354u\276\006T\330=\337=;>X\002\202\275\210V4>f1\264=h\013\016\276\312\232b\276\303\342\212\275\014\274\336\276e\342\021\277\353\331\214\275\333\232F\276\322Nu>9\372\026\276BE\r>\030_\322\275X\217\355\274\217X\330=\237m\337\276\275\240\024>\225\371X\276\301K\272>\353\364\014\277\004\276$=\224\314>\275\326\365\003>\265\227\321\2752R\025\276i\217\245=9\333\013>\322\tX\276gx >\366}\263=\223e\356\276\350\352\356\275\374#z\275U!\014>Y\351\325\274\325\337z\276R\376_\2762\025?=\272\242\333\276\345.\261\276\261\213\250\276\003\264\244>\256\325\276\275\327\024D>D\225\037=\275=\363=\226\227\300\276a\314\027\276\316\0023\276\251\322\304\275\241\235\341\276\302:\245=\325l\013\275Ry\354\275\230\r\227>\204r\014\277Kx\265\275d\242S>}\026@>\221\"\257:\240\343\256\275+`]\275\371q\327\274/\277\216\276N\224\333=\356\225\330=2\332->\376\375(=>\253\"\276\233\255o=\n\270\206>\037^\r\277\242~3><\226\362=!\312\014?\277J\233\276\361M\204>\313%\211\275N\000d\276=\332I>\350\302\177\275`?1>\276\177\'\274\007\320\016>\273\244k<\254\211.>\254,\340\275]j\257>\'\017\223\276~\243H>\365\032R\275\346=\363>\3609\313>\226\335\014>.%l>\326\220\235>\352\313\256>\365\351\006?\301\302|=\365\343\261=g\263\332\275eVd>\033\315\347\275c\t\205\276\325\246\345\273[\020\320=\301\220\223>\357\201\207\276V`\005?\023?|\275\364\016\266>\226;\023\275F\225U>\300\271\217+Q\212<\034\364\t\276\331M\217>w\242y\276\035\233;>F\342^\272\2770\361\276\021\352\337\276\3318\210\276\274\016?>\367\212\241\276\221\350\313\274\212^&?3\303\344\275\2077\006\276>E\300>#\035\274=3.\367=\374\013/\274\266Re\276$v\237\276\345\333:=E|\255\276\231\255\035>P\232dM\256\300=\t7\303>L\207%\275\377h\017>\242\240H? \270\211>\n\355\035>_\0340>\210\017e<\254\242\354>}\232\336\276\214\216\030\277\311bR\275\322\367\273=>\3742>_9d=\277a\230>\253\225&=\321\277d>\327+\267\275\216\002,\276\222\025&=\334\370\334\276\343\306\021\277#\356\030>\211Sf\276\n\243\212\2766\000\016\276-\3421>\233\256\256\275\013\274\207=\014\365\037>\317\330\300>\235\024_>y\361\t?\351%\300\276\226>M\276\336\260\317\275c\211W=\352!\020>\345\263\307\276Uc\023?\006\352\225\276\032\371\213\276\221\201\236=\032\337\005=\334X3\277\255\312\200\276\262\010\233\276]a\275\275 i\303<>iS>k\237\340\275\276z\313=\020\245 >Z\365s\275\203Z\216>r\316[\275\267\026\205\276\257\266\023>\365=*\276\014\247b>z\303\252\276$D\240<\301\2647\275\363T\222\275\\\213b=\241\235V>\372<\214>o\275%>n-\315\276\034\237\204\276\377e\275\275\310\214\007\276\261\025\240\276\315\362\211>\271\315\220\276S\360\372\276BI\\\276.\276\034\276\207\257\030=\002*\331\373{3>\357B\202>\224-\226\275q\024\350\275\3326\362\276\211v(\275n.\300\275Sc\232>\303\221(\276\252\355U>v\001\312\275\001\304W>\357\370\362\275\260w\205\276-\275\272>^\320\355\274\355F\027\2749\223\304>\007\322x\274C\322\266<\202R\252\275\030\260Z\273J\202\324=\023\3164\276\t[n\276\371\301\023=)\230\247>B;\217\275\234\303\207>\021/R\276a\314y\276H\013:>tS(>\r\3534\276\003\323\240=\270\"\270\275\270\315s\275_\361\216>\207\037\n>\n\013\337=\224\310\301\275\303\234\001>\n\024\346\274\261_\265>\364\357H\276:\031\215\276|&\311\3249\276\275#R\223\275\035t_\275\203\271\034\277\017\365\021\276d\324*>\324\231\222\274\301g\202=\210\337\370>\372{p>\371p\223\275\000o\231\275<\321\363\275\212\266\n\2762^\305\275\310z\"\275uk\223>\020\322\276>\002_)<5\033\001\277\301\247\021\276\342Z}>\321\020\221=\314W\210>\230\333\307>\232\r(\277\240p\\>0\027\341>\206\217\010\275Vp!\274\206\332b\275\014Ic\276y\246\373\276GM8=\255f\363\275aa7\275y\244;>&\332\r\277\025p\220\276\271\215\207>(\n\315>\251\370\217>F\2004>\251R\000?\257\014\227\275\325\025\303\273%\315\265\276\362\354\014\276\373\322j>t\251\276>\201\231\206>|\351\256>\000!\032\276g\332=>\003\320\027=\032!\213\003\234\007\275\267H\032<\244P\241\276L\200R?\325\022b=\341\006%\277\364\237\300\275\354H\366\276\314@\237>Q\336[\275\370K_\276\312\017\351\275\2143%\277S&0>L\030\335\275ZQ\254;\033M\274\275T\202|>\027\367Q\277\356?\301\276\024\321\253\276d1\177>\"\346\005=\007,\354=\007\202\006\276\352\273\343=b\232\225\276\",\010>gk<\276\017\334\362=\301?(\276\376\307f\276\323\265\212\276\354Y\214;\202\241\353>\235^\254\274?\331\022>\303\246\234\275\322\272\346<\342\366\316>*\351k>\207d!>\372X\256>0\206\017\276\350\030\250>\324\213\004>)\t\214\276\'c\242>M\345\377=\331I\206=\003\360 >Cn\325\275<\217f\275\317\t\231\276Xe\033=\364 \222<\237R\324>\332\226b>&\223R>G\301u\276\372tb>\346\327\036\274n\357\325\276\324J\313\276{J\234=i\251?>~\315Y\275d\350\262=+\267\257=\2569)\276\265|??!\n%\275{\0244>@\033\234\276\365+ \277\370\251\370=NF\246>\3735\004>I\013\000?\370P\264>\302\2020\276e\r\257\276\252\265\246>\263\352\243=\350\374\237\276\035\251\230=0}u>\200\003\025\277\334\346\321>)\336\276\276\\\224\255\276cI\212>\373\277o\276!\362%\276Lk\237>\036\004:\276\261V\325\276\016\320\036\276C\260\257>\221\275\275=u\030\206>A\302\022\2751Y\214\276\226\nR\275q*\357\275\017\026=>5\360\351\276Y\365\237>\347\211Q=B4\240\275\375\355\021>\007*P=\217\232\316\2755\205\353\275m\226\213>\334\277\333>\no\223>\021SI=8\321&\273e\023\230>\266x2\276`\365W>C\220\216>\036y\225\276:\000E\276\016C\351\275\235\010\202>\247\253\226=\373@\244\275\350\034\322\274ja\355\276O\313\271>\3330\004?\2236\230\276\030r\001?\002\r\207\274\330\034O\276(\034{=\320\257\260=\361\227\223\275N\236\232=KK\362<\341\322\005\276m*\205\276\351\032[\276\n\037\271;7z\304\276\007#\010<\260\022\373\273\273\263\034>n\315\257>\356\021\322>S2\211\276R\027N=\013\230\350=\220\264\037>f\334\017?\216Q\303\275X}\255>\320L\352\276ZP\026\276\245\360\322=n\377\245=o/\257\276\365\263\005<\273\342\245>\017\204\213\276;\256\220>\232\301S\277\200\356\210\274\240\025\t\277\037\371\202\276\372o%\276]T;\276*\3576\277\234n\220>{\304\312>\003\013\205\276\221j\017\276\230o\327>\356\3611\276\346h\010\276xOR>\372\3343>\233\3744\276\212S\226>\267\335\002\277\214\371\365\276\331`\255\275W\215O>\340<3\275\213\374a\276@\260\303=\323\241\300:/\n\212>\261\262\236\275y\245^\276\311\335J\276\322\360\365>\004\346Z>\322WI>:\242\212\276G\275\220\276W\200J\275\264\200\247\276[6w=\366>\237\276k\206\335\276\345\340]\276\352\255s\276\276\2506\2762\014d\276G_\252=yX\363\271\330\303\276M\243p\276\3647\206<\245v{\275\241\232<\275\334\204\252>\241\366\224=b*\r?\2469\231\276\312\005)\276j\225\323>+\366\362<\266\374\214\275\237\233\207\276lR\215=\216\026\244<\300I5>\332W(\276\377\331\025\276\374\376\246\2753\230*\276\3472\232\275\314\362\r\277>f8\277\264\336\026>z\250d\275\006\373y\275\337\001\202>\r{F\276\005\352\350>#\303\'\276\276R\236=\300\027\230=\356\000\361<\374\024w=\002\007f\276a\177\226\275\310\307>\276\3510|=b\031\354=\367\357\022=\256\357}<\177K\362\275\260\375n\275\312\220\250\276rt\236>LF\311\276\315\324\036\277\006\354\212\276\277T\003\2778\357\347\275\212\203\325\275\345\230x\274>^\217\276^\331?\276v\230\331>a\032\031>A\233\212\276\350\362g\276\205\001I>\001\016>\277\257$\232\276\277\346!>0\030\220\276n\271\237\276\300\316f\276\366\353\205\276S\001\340\275>g\230\276\013G\234\276\345\r\006\275`\375\332\275\013\361\263\276+(\007\277Df\263>M\310\">\223\"\001?M\013X\276N\270\270\275\027\244\217\274T\331\226\276\307\340|>b\241\271=\252\272\204\276\253\316\374\276 \035\327\276D\264\270\275\005\352\221\275c\326\273\276\026\355)\275\026\237\217>m\346\036\277\230\301\026\277\036y\"\276P\367\355=$n\216\276\263\213\033>1:!\276j\377g\276\335\026\023\277\343\336C>\264g\266>\202T\304<\241\362)\276\221.\346\276\265\004\027\276j8\206>#d\025\276\264\360.?\024\r\r?%(\342>\023\303\203\275wh2>\351\223\375<\263\370\247>\317\3732?\030\036\235n}K>N`z\276\212x+>\177WT<\210\007\261\276\024\244\231>\317\376\242=\256[\177>\3046\242>[\246\226\275\360\361\221>\260|9<\200\247i\276\220 \345\276\364\036\204\275\212\213\270\276\021\022\366=)\251\005>\034\342s>\035\307*>\352\362\263\276\227\316\202\275K\272\223\276\232\270\276\276\363\305\010?\374\237\234=z\333\002\276T7\021=R\363\010>\336\025\232\275\355\235\357:p\330j>\237\262\331>ZKX>\212\247\333\275E\353\357\275\323\252o\276P\201!\276L\260\r\276#w\320>\265\247e=\203\300\021\276\270\263\371>\261\365\313\275<\0351>\335\371\023>m\213\017<\027\241\352>\216\230<>Q\020\277\275>S\317>\276h\334>\376\2054>\006\312\'>\267\230l\2763\375\007>)\205_>\004&V?\300,\202>\n\331g>\316j\014>\351\374-?\356n\363\274\027\035\321=\234\037#\277\222\230\251\275\302\250\346=^\200\241=49\214\275\323$\230\2764g\321>\264\314\005?O\375\257\275Yy#>Z\206\304\275\t\217\205>\224\021\007=\251\336\360=\275\372\205>\306\035\004?\272\210\354=\275\234\010\275\233Q>\275\2269\225\2750M+\276\331\002\303\276L%\030\276V\017\013\272h[\231<\004t\264\275\274u\335\2754\221\235\2751\253\246\276m(\351<\364\332*>\"\367\243>\302\254\223>Z\354\247=\340\311?>1>\033=\376t(>\234\357\306>\341]\000\275\246lY>\363%\317\275{i0>\205\244\311=\272\233\376=_Wa\276\273 \034>2\256\225;\006U\020\276\330YE<\272\177\260=\254\000\"\275\335\213#=]\363\000?\236h8\276\260k\242\2750\327q=p\211`=\343:\234\275\247_$\276\361\350\267\274\231\276Z>\264q\360<\nS6?\241\3466>\"\254s>f\273\214=\326\000\327>\010\007\312\276Wp\240=\345\221\223\275#x\311>\tt\211>_\000\037>\202\312\027=\304\353w>\004\360,>\024.\026\276\361\243\202>\315\321i\275HG\317<\250\226\311>\341\224\217>\222z\225\275\203\301\003?\350\372\314>\3144a>\327\274\220>\033\373\276>\255\025\267>XD\353\275\204\177\246\276Y\267\330=\265x$>\013\305\215>\270\243\327>\223\001\272\273\036\227\332\275t\245\254;\004n\222>`%\017=/\377\370>\223m\002>\343\360\206>\016\3722\276\3541j=4F\t>\007\027\300=Q\363\002\276\334\204\251>N\002\275>p\351\005?R\345\301\2768\211\264\275,\033\017>7\211\256\276s\201\310>\215>\010>\271N,\276\240A\267\276\351\224\211\276\035\234i\276_\2011\277\260\230\376=\217\305\234\276[\205\253\274\317\367\214=\037\315\022?\2308\245\276\375.\225\276\330\313\036=\024\313\326\274F\272V\276h\013\215=\246-L\276aN\026\276\034b\263\275/\\\262;\013y\264\276FO\266\276\237V#\275\036\373\014\275\r5D>m_\237>\355V\270\275\030\347\262\276\035I2\276a\207)\276\204\013\320\275\364(*\276\025\261\301\276\207\245\200>C\007V\276\201B\237=5\205\237\276\036\213\005>\242\262\005\275?\3222\276\213(\350;j!\177\276\nGf\276U\245\210\274+\273h\276\306o\234\276\355k\314=\210\263L\276w\025\355\275R\324\023>l\224j\276\0236c=_M/\276/\000\260>f\314F=\342\"\236\276\004\017j\275\3764\014\276\241\277\341=#1\246\276\207\300l\276\225\001>\276!x\301\276\0132\254>5\270\272\275!-q\272\260\267\026\276\261o\354>\246\247\252\276\027v\024>\243e\360=\355\016\213\276\347\231\302>T\203y>\222\ne=\006\025\334\275kM\222>}q\243\276\201\275\313>\265\255[\277\263\226\027\277\201\241f\275M5\317\276\360\322\014>\177\034\231\275\302\267\326\276w\367\037>\003X\025\276\037H\221>\225\301T\276P_8\274~\246\337\275\314\252\264>F\310.\276\364\304\273\276\214\346x=\306\265\020\275P\321E\275\203R6\274|3/=\250\272\231=<\275.\276\347\257e\276\302>\321<\230\3263\275\233H\023>q[:>\242nW<\321&,\275\033\377Z\276,\345\224>\371\337h\275o\254\006?T\3231\275O\266\336\275\311\235C\275h\205|>yj0>\314\345\025=\274\302w>\362 \367=I\366;>\321\367\330\274\225\203\014\276\233.\027?\332+\200\276\201\256\313\274\010@\216\276!\266\225\276a\340\215\275\220\370\250\276\032\236R\275\033\301\013\276\213w\\\276\t\363\214\276[]\216\276\370\237\324\274\257\264\371=\030\005\267=\222\360\\=\353\374\336\2742\tc\276}\343\350\274g\345\351\275\344@\"\234-\262>;\234\234>X\001Z\276\334\026j>\243\325\216>\257\231\244\274\337o\027\276SJC=\032\367\014\275\273A\035\276Cp\206>\352\031\2418;\256_>s\333\257=\324\316\315>t\n\256=\214\343\213\276M\231\341<*\032W<\005\263)>\333\023\274\276\224\034\216\276\345\326\322\275\316\333\227<\201\032\227\276\342tL\275Z\355:\275\023[\023\2742\206O\276\317\3338>T\310\212>QK(\276H?\027?\211\251\032?;\314#\277b\016R=d`\343\276n\334\265>gh\255\276;\333\365\2734\263\031\276-\217\231\276\234\274I;\003\274a\276\331\017\244>\303\306[>\320\314]\275\320\262$\276D\270\365\2769/\247=AuV\276pm~>/.\036\276\211\023O\276\377\317\255\275N\236\275\276\'L\016>P\221\221\276\342O\226\276=_\250>\375t\270\276\220Y\022\275\233\236_\276hF\225\274K\216\234\276\251\235\252>\331\302N\276\301D\007?\232\235\202\274W\315\307\276\"\272C=\336\303\253>\n\334\257=\260\016\321=\201H\324=>\213\024\277\'36\277\375\233\264\276\327$\247>\037\260\014>\200\313{>\262\374\342>^\304\352\276?\214\t?\006B\203>\250\000\330\276\265Z\355\275\272\307\036\275;;\202>j\235\367\276F\013\264\275\017c\227>+\"2>\247OV>\332\245\266>\216y\223=\246\205\305\276\024\370(\277\236+p>O\023\206\276d\227\301\276}\310=\275bBD\276\351UI>\212e\036\275\303\006\013?be\224>Z\240\030?K\253\221\276\255\367\001\276\310\222\216\276\000\246\316\276\207y\022?\211>\r\277\332\214\262\276\212?>\277\r\007\220\276\364;\360\274\247\342\214>\236hy\274\203LO>\177\007\315<\212?\217>\263\255;>\t\264\014\277\331M\227\275\332\366\251>\343\340V\274\216\371\003\275\267k\241\276\033IE>\013\245\352=\303v\261>\323\246S\274d\377\215\276l\240\223\2769\013\n\276q\304\306>\340\355\204\275\355\034\235\276\234i\306>\243*\272\275\027\2769\276\34031=\020j\230\276\326\031\237>\032\010!\277\201_\242\275\276\363\351>k\241\215\275\t\266\216\276\367\272\325<\331\246E>\270\000\037?\005\246\334<&*A\274\351X\266=a\031\364\2752\250\362\2765O*>Mj\372\275\035\004U\276[?\362=\207\021\272\275\230\360\010\275\361c\000\277_7&\277\251\253\013\253\276$>\007(.\277zN\255\274\t\273E\276w\366~\276.\362\014I\331A>\377;\330\276<\315\035>\206Z\014\277F\n\221\275\213^\245\276\306\360\032\276Lx\200>5\257(\276\312s#\276jP\'\275\2546\377\275\010-2\275\265l\302>\225X\214>\304\223I\276\252:\247\276z\362\233\276\302M\260\276\352_\232\276\272R\357=&\247\257\275\356\323\271\274dw\t\276>\277\372\275Z\201\250>t\003\250\276\201\253\n\277\nn\"?\267\200\301=E]\241\276P\226i\276\3068C>j\032\307>\264T\355>\267-\024\276\301=3>\212~A>u\312\017\276L\004\032>\251\302\302\273&\361\341=\031\253\027\277\277\211\242\276\033F\212\276.z\373=:y\344>\0323!\276\2140\007>2]\032\274\003S\276\353X\363<\264\203\302\276\260\300\317=\224E\366=\216ye=I\222\247\275\002\316,\277l\3543\275$\220\025\276Qc\024=#&>>r\233\310>)\000\245\275\277\256\223\276\236^\267\275\250\255\272\2761\273\310/z\235\276\034\362\230\276]\362W=\200Cd>\243\276\361<\345\362\335=\2303\255\275\231\210\241\276\332\374\255=d\322&>#3\n?\2510\214\276=\276\370=\200\027\\\276\370,\361=L\022g\276\000d9\276\0312\327\275\200V\314>\202C\001>t\346\310\273\267\374\222\276w\224C>\036*r\275\235\342\253\276\215\343\203\275L\365\316>J\023\252>\030XO\275$f\025\277\271\024\256>\217\326\346\276\320\025z>\274y\343>\340\001\212>f\252Y\276\262\245\360>DO\277\275\357a\306\273_\002\235\275\2405\222>\304\301\347>\205\3573\276\363Z\314\276\264\212\230\276\230\255\272>\032\222\302\275n\277M\275q\372N\276c\360\215>\273\346*\276~hj>\000\276\251\275\335\220\032\276\211\353h=\253\343d>\266\203\201<\r\017\273>;\031\206\276.\213\316>+\323\255>+\300\247=\272\224\231>P\243\037>\347\237\332=\020F\366\274\223:C\276\355\r\273\276\264\233;\276\307\024h>\306^;\276\257\027$>RI\003\276\010\216\004?\222\007\327\275\003\033\207\330\035\346\274y4\306\275\027}V\276\2451\267>\322=\350\275\206f\214\275\256\355\002>\277\350\263=7\323\222\276;\254\254\275\357/\354\276!\241\210<(\360\n\276 \224\361\275\367\215C\275d\344\376\273\224\344$>,\244\211\275\327\230D>\\i\"\276\302\314\001=\3723\234<\370\325\332<\201\362\344>\314c\222>\216\355\247\276\372\334\213\276o\330\276=\350\212\002\276\244#\003\276\273\303\243=\217\225\346\276\301\372>\275)\034r\275\321\365\023\275\3308\265\276\0257\225\275\013b\034\276Op\272\276\227\254^>\312\316\231\276\354~<==\365\272=\235\026a\276\317\177)\275\264\321O\275\327T\216\276J\275\360\274\020\352D\276H\357\224=\004\005v>\376d\206\276\276\301\2228h\032\324=\235\t\010=\327\243\020\276\350.2\276\240\310\r>j\305\t\275zV\016\276\021[w\276\312\207q>\304\002E\276\240I\257\276\2359\347\275k8\000\276\253\340\271={\362x>\251\001|>\024\330\303\275\240\013\221\276K\340\246>\377V\320\275\303&\347=-\327\241\276\202\264\205>b\276C\2764\003\014?\251\235\035\276\276\342b=\021\245f\276%\313S\276\300\243\327\276-\351\225\276Hm\375>\023gu\276\323\2045\275\344\367@>\236\304\212\271\366\rs\273\231R\025>\006J\344\276q\342\220\275p\033G\276\316a\356<\267\361\213\276\371\271\356\275\201\201\017>:\240H\274\342\013\200>P|\223=\273\233\022\276\314f\245\276\327.\356\276]\331\251>\245\364\333\276B\364\346>(59>\231\003%>\237\245\006?c\274\010?,]\303\276\343\214?\277`\211\002\276\276\007\346>\333\310\'\276\316\251\224>\270\332r>\341\214J>\t\001\323\272\373\256\026?\013\222G>\037\2751\276\332+\032\276\004\r\013\273q.\357\276\366\004\036\276=\323^=\357\214\374=6C\221>\r\206n<#\332A\275\031\323\377\275q\345#>\276\371\224\274_\267\225\276\3027h\276\030-\331\276d[\317>\024\237\364\276I_\276\276oc\310\275\021\205 ?|\033\272\276\220\272\214>\310\305\006?SM\\>\027Z\023\276\253\252\n>;\324\232=(\035\324\275m\275\236;\027\253\352\275\260\\\234>\232\356v\275\376\204 \277\351w\244>C\343G\276\221i\355\274c\227\202\275{2\210\275\320\306\t\276\367\344w=b\026??\'}\305>o\227*=\277\004\"\277d\240\036?\242@\n?\254\342\246>\234\203.\276\305\377\030?\360S\271\276\343\033\270\275\3204,\276\311D\232=\"\365\322>8\027\377\275 \016Z\276J\034\222>\315\\\351\276\352\203B>\367\027G\276\325\221y>\016h\311=\257{\251\276\2135\355\276\352\353\017\236>to\001\276@f\203>\267\315\377=a\016\233>\363Pg\276\305\221\203\276\274N\247=\360\323\013\274\220\000\002\277\232\330\016\277\2104\\\274\317\354v\276\020\223\316>{\024\353\276\367\323\303\275.T\375=\260\271\211\276k@\257;J0\266>\264\347w>\026\013\014>R\375\335\275\3133\306\275\206\027\333=\001]\252\276\241\233\310\271\220T\323\275j\024?>\031e\323\275\201|\366=B\320\214>\375\226\263\276\362\333\005>\247M\311\275Q\201\032=\213\007@>7-\355=b\233\351\275\305\323\264>u\351\313\276\377\244\032\277\354^\022\277g\306\227\276\350\377\242>\3572\244\275\010G\033\275]\232\221>\226r\237>\226\224\255\276\t\335G\276\376`\363\273\320_;>\256o\177\276\324W\303> ;\340;#\211\320\275\306\215a\276.@_>\265\353\033\274\305\244\025?\351|\031\276\330\212\216>\310{\254=:\237\257\275\235\262\221\276\027\247\276\274\2534\276\262\002\220\275\302\342\010?\300\213\323\005S\005?o\037\226\277^^n>w\324\227>\244i\032\276\021k\024?|s\332>\242\013\010?\3773)>{\360\236\275\226X\230>x$\332=\333\340\027?\036X2>\000\351\261=a\362\034>\025\251\023>\221D\341\272\"\033\270>C\'<>\374h\265>\234\330\234>\263\233\226\275\312\006\002?\251\030)>L$\245>\026\277d?\334\341>\276W\202\303\276\257z\265\276\303\310)\276\212L\360\312I`\275\333\263*\276\313&\226\276\324\374\215>\224H\363\275\035\254\277>\264\274H\276\001\nY=\365\315\267\276\311/\273>\2423\n?Lf\331>\257\312\241>\251\212\337>\223M\254\276F4k<\235\323\353;/\337\257>\217\222\273=\330\0267?|e\226=:\210\005\276$\333 ?^m\236\276\202@\330>~A^?\341\342\261\276\350\265\035>\327\013\023\277V\223K=\241\261\345>\014\032\324=\010\347F?\2707l>\362\0077?C\037\221=\334\025\224>\003\274\271=\341v\n>\031\261j\276\323\007)\276f.c>+\035\367\275_\022\n\276\246Ms>\325\256\346\275\300\014:\275\265\323\035=G\350q?\002\n\356=\201\272\347>\241\247B?\345Zq;.\303\344\275U\252\247<\252=\376\274\024}\323>r\317\265>w\273\032>\270\254h\276\217\334\371=a2\377>_\244\227\276\240\251\275\275z\321n\275 \010\251>a\335\244\276\257\032\224\276\303\214}=\370n\027?f\201x\276\335M0\276\203Tt\276^\253\312>/\207\262>b\2342>\214e\327>\236\241\203>a\372\022\277`\341\257\276\017VQ\276v\3654\2763_\221\275\241\302\204\276\255\315#>9\316\261\276\252\266P=\351+\250>\210R\336\276w\320&<\311l\260=\3548\202\277\300r\250>\306\251r\2757\345\220\276p(\305>\360\241\326>\3227\001>\326<\270\275;:1\276\\\\\010?\372\356\223>a\036\344\276\255\310\346>2+_>nt^=\210I\230>\350n\003?\321\226E>\310\237\034>\216F\306>\365\337\277\276\323\311Y\273\260C\n\277#\243\365=\276?\272\276A\036\300\275\247r\027>D\222\210\273\307\243\2369%\366\035?\204\345\357>\310O\r=\330\226\026?^V;>\331\221\002>\310\237\375\275^V\326\276\021\341\021\275\365\020\263>\"#\207\276R\225\341\276\027b\235>\316Z6?\333eq>U.\200=}@\250=Z-\351\275\232l\311>05$>\261c\220>\353,d\27535\013\276\372\204\353\275;\277\373=\355\014\222>6G\261\275\220\322\316;q\345\360<_\233L\276\351\217C\275D\215I=\016\022\005\277F\310\r\277\277\3160>D\026-\276Nb\254=\2243\033\276\030\253\320\275\253!\301\276B\277\301=#\3150>z,\227\276\335=\206;#\355\266\276ub\021>\023\345h>b\356\244\276{\251\266=|\323j\275\346V\316=T\364\264>\2036\227>\255\227Y<\352\233\375\276\272\005\350\271\223\337|\275\032\032\312\273\023\027\013\277$\376\326>\007mC\275\275\034%>_\364o\275\256{j\276Q1\226\276z](\276\017\017\235>\362\252\254>\273\324\276\276\022\021,\277N\334\315\274\355\306\024\275#a\356\275\222\207\215\275\334\270`>Qa\027>\206b\020\272\020#\212>\301\257\335\274%\036\007\276\364.G>.\210N>.\276\274\276g \375>t\005\023\276\223\250\024=\n\177\264\276\302m%\276\207\004\270>\256\213)?\227\013\226>\334\360\303\275UT\370\276l\014\033\277xm%=*\304\351\276\005\375\237>ti}\276\261+\025?\2247\271\274\375q\025=3\017\355\276\262\026\'\276\275\373\315\274\264\203\254\276le\216\275\035\240\227\275\305\013\006?\340U\332=\017\r\226\276\231\3557\275\234\231\024\276\234\233\312\276\356\255\311\275M\325\022?\266\347\001?\337\336A>T@-\277$\220\220\276\027\254\210\275\200\312\314\276zoY>F\251\213>\223\026\252\275\354\321r\276L\302\021\277|\032\213>\214[\210\276\331\005\344\275\033\324\305>9\037\035>3?\232>*w\211>\307\326\223=\177\207]\276Z\275\345\274`\235K\274\227\271\205\276\361Y\214\276\010qp=\335\371\n>\0017\026?\rV\304\275\256\360\002\277X\215Z\276\247cH\276\325\3101>\252\210\243>\357}F\275\371\004\276>\345\004\364\275\321b\006>x\371L=\002n\320=~:\332\275\371W\225=m\3471\276\031\301\271\275\275a\003\276rnC>\264e\006>N\032\260\276\210\371k=)\345\266>}\230d>=H >\033k\010?rx\003=O\031O\275\313P\272>\257\352\222=\357\014\260>\277\362\307<+\020f>F\3362\275\301\255R>k\017>>\027\227\221\276\264k\255\276z#\207\276\023\254E\276\276\321\305un\374=D\030\341=\027\020\261\275J\347\211\276\325C\364\275\331\241\276>\346\241\355=\013\335\365=nC\264>d\336\356<\326\207\257=X\331\207>\027\350\345>b\312\275\276\036\223\230\275\001\211\334\275\342\271e\276xfJ=;\351\257>n\034V>\346(\022\276\225lO=\324X\200\276\226\340\">\010\252\022\276\0161\353\275\361\317\n=\342k\021>\222\310\204=\243\312\031\277`\310\367>\021\351\244\275\247\365n\275\330\252\024\275b\224\343>\355\214y\276\232,\245\276$jG\276W\360\004>\220}O\276\314\205\221=\356b\t>J\315\310\276Q\256w<`\265\216\275\371@!>\376\213\233\276\212=\236>a\327\362>r\342\360U\307\351=\264n\325\275j\026\244>m\226 ?\325\034 =m7\210\276\347\252I\276\351\346\007\2756G\253>\237D\261=\'\371\224>\303JK\276\017\204\355\273\216\013\"\276\242Vh\276W\311\007=\020p\211\276\026\255\263\276m\213\213\275\275\'\026>;\305\250;\336\022\336>;\346R>\347\317\t\276\n}\026>\342@\253>\nh&>xs\223>)\351\212>\002w\r=\201\0308=Z)K>\246@&\276\244@\201>\033W\200>=\211\217=\027\021\324<\177]\232\275zK\352\275\212\356\003?2\230\266>CG\255>\224i\274\276\2279\336\275\331!\000>]\351)\277\331\211\273\276\331\2235\275{5\200=\371<\230\276Bn\273\275\205\212\271>\025\374\252=\322\270l\276\250[b\275d\200\357>\230\343\027>i\374\352<\374\327\375>\300\241\323\276\033[\035?\3369\264>W\020\t?\264\246L\277\3279\272\273li\207\276&A\010\2770\336\354\275\302B\263\276_\200Y>\360\204\364>\347\027=?\201\003A<;\341b\276\347_a\276 \274\004?`N\327\275\325\030\235\275\321\304\000\277\345\017\240\275z+\235\2768\250`>\274F\273\272\264\202\343\275\205(\256\275\257\206\002>F\337\270>\360:\252\276^\010\276\276\301\277\024\2763x\007>V\364\333<[\031`=\326\031\216\276@7\242\276\345\227\302\275\244\321<=\233\235\254\276\236\355\373>\010\265\256\274\177\312\216>K\362V>\000[`\276i\377\265=H7y\275L\240\245\276\207\006V>\026G\325=e\320\227=\330\355\032\275\256\261\222=\241\373\221\275\333fg\275\366V\361\275\344zv\276\023\033\345>\370\t$>\224\240\302=\363\330\324\276\373\037\240>\255\002`>\004y\253\276\202\226\315=!\206\343>W\276~>\362\005\272\274+\311Z>c\267\223\276\357\234\320\275q\374\367\275\206\3261=\033\303\315\274\210\306\312\275p\271m\276\264<\331>v_\022\276\027\343(\275\354^\223\276\035c\005\277\001\274\r?q1\006\276^\263\024\277\354\315^>\351\204\375/Q\000>\271\335/\276RX\261\273h`C\276\363f\222>\362\210\311\274\362\343-=\230\227\345=\206DK\275/\322\026\276\244\226(>\250\377\260>{\334\277=\361\333\031\276\241|\217\276_}L>\036\327\235>\361\374\024>0\254\244\257s\213\275G\202\241>\361(\275>Sl\230<\224\331\217\275Z\330\026\276\023\316\034>\013\nA>\300F\215>2Z\357\276]\200\r?\034\r\n\277\311\357d>\2200\210\273\302\0352\276/ [\276#.\205>\276\013\007\277b)\234\275\007\365\222\274sJK\275\220\363\202>\031\020\332<5X\346=[3V\276Va_>S\256\274\274^\255\024\277\034b\312\276\236\317\310>z;\362>\232_8\276\306J\260\276\345\334\235\275\235\255V=F\307\341\276++E><@g\276\325\373\010\276\330\341\324\276&\017\367>\314\264K\275d\345#\275\247\324\003\277m\017g>\213bC\276\331\311\342\274<\0070\276\267\336\250>0\000\010?q|\223>:\257\226=\353\306\033\276\354\013\365>7w\265\275\204L\210>\010>\017\275\342\244S\274\243\346\036>.\315b\276\360|\273=\333\r\254\276\331==>3\327B>\365\021U>C\244\263\276=\363\215\276\307J\314\275\350\246(\275\237\"<\276^\231\004>O\356y>\200\327\243<)@\202>\201`\302\276\037$\205\274\350\001\202\275Op\323\274\010UI=k\031\025>j\374\021;\275\307\327\275\330q\027?C\307\273\275\341\371\354\276\211W\321>\220V6>\326\372_\276e\001}\276\375\216\306\276D\010\034?\342\251\024\277\255O\333>\216\247\232\274\223\371=;3E?\276!\215\025>\013\001\252\275f\264\200><\235\204\276%j\033>\245i\221\276\277\200-\276o~d\024\020\206\275\030\247\200>yeq>\"\203\034\277\224\036\303\275\346\236\213\276\353\277i>\373\212`\275\246\253\021\276\307m\357< \017Q\275\004iD>m\365\215>\337\2071=&\316\204>\230\330\235\275\231^+>\322\016.<\021\313\252\274\363 \252\276Re\274:\214\236\257>\335\320\330\274\r\217\003\276s\206\310\275\205\240\266>,\365A>\345D\216\276\224\275#>\351\021\205\275PLm\275\244F\202\275p\300-\276B)\216\276)]\200>\204\320\363\275\344F5>\204\204\001>W\300\360\275\330)\206\276\341F\362=E\323\306\275Y\267\226\275\321\0009\276C\217\034=+De\276x\341\006\275\317\365n\276\234\322\221\275\311\006\002\277L\346\244\276A%\352=\rdw\276\006\260\016\276\325\205\273=K\353\232\276l$\225\276\373.3\277F\241+>X\345\363=\254;Y\275\363\257=\274CI\362\275$\371\203\276\271\370\324=U\237\275\275\032\017o\276\332k\266=\214\365\202\276\026\272\334=\344C\251\275i\336\273\276\356H\024>l~\006?\266\001\251\274y\363\034=M1\266=\031\351\345\274\324\247\030\275\241\372G<\255\316x\276\373(-cLF\276\371\363D>W@\353\273\020N=\275B\235\036\277\360\211\254\276\037\342\363\275\346\264\317>\274H\236\276-\315\244\275]/\246\374\307\005>\312\246\022\276tP\216\2762\266\243\276N;\212>\217\016\251\275\'\0264\2762\364/\276\260\273\022>\032\177\316\275RF\210>\037\033\001?\252)\332>\355\325\263\276\330\217\226\275\2542\017>\376\327\221\276\213\367\256>\232\357\266=\310\032\301>\356VN\276|\273\226\276?\006J>\351~\037>\002K=<\3444\252\276\214\301[>+\260\216>V:\334<\225\266\246\276\031\333\237>V\013\005=\207\037\026>+I\210\274\217\022\307\274P\n\213\275o2\340\276\232\247J>\367y\277=G\324-?y\322\200>\355V\344\276\325\333\352=\001\312\264\276\236\313\250\275\256My\2750dA>\322\235l\273\364J\207\276\310\202Z>\224z\266\275\332\026*>\322\004,\277\377[\001\275z\3143>\007n\254\276\035\006x=\234R\"\277l\036\353>\226\330\327\275\276\226E=\356\"\242>\222\322\303=k-o\275\301\341\013\276U\377\205\275\021\252\351>\275+\341>J\036y\276D`\027\275\342\224O>\320\217\031>/\301i=L4\237=\260]\205>\026\237-\275\007\352\005>#.=>\302\343\303\276\374\362\033>:n\022\277\306G\327\275p\030\232>\253\223V>X\347\"\276v\"\262=\n\225\340>p\360\n\2765\341\263\2753\207\365\275\007\014\221=\276SE\276/\025\320\275\254\326\314\273\306N\247=\266w\030\276p\013\002\276\035\2163>B\201\201<\266\317\007>\227%\324>\217\004\216\323\212\210\275\273\360\262=&\300\022>\342B\"\275\r\250A\276\202\273\n\276\tvw>\273J\352\276P\345\263\276\023\2717\276\306V\"\276\334\235\341\276\375\320\332\275\020\244Y\276\010)\373\276@\245\247=\202\264\242=,\233Q\276\317i\237\275Fuj=t\314>\274k\325-\276\217\274:>Fd\231=\322(\223;\240\361\006>\254w\354\275B\025\266=C\353h\275\227z\013=\372\214I>\3221\215\274F@h\276\346,\204\276\320\220\n?\374\232\027>pH\317\275\204\221\000\275&\265\251\276p\261\275\276\3231J\2766\330->\t\352)\275h\345\362=\242\345\276\276\206\037\344\275;X\205\275\220X\306\274\002\222N>j1\\=&\\\324\271\333G>\276U)o;5j\001>{0\372=\264\345\300.\365\004>\2757<\276\325-n=\\\t\227\276Yy\333\276\006>\255=\272x\210>ox\264\276\254\002^\275i\257`\276\362\0212>.\t*=\306y\261\276\3218k=\022\017\034>\343\020\310\274\355\213s\276\213\021\213=\333E\035\276\350\374\274=\323\0320\276\241\242\203>i\317j>\347\223t>.\330\252\275\255Y\264\276\006\031\222\275\360N\315>Q\020k>(\377\025=&%\220>\025\342\261>\333\247\276=y?5\276\305\351\301=B\332\231\276M\014\301>\300\276\217\276\224\r\231\276\003\221F>\206\0202>\310\273s>\231\310\213\276\277kJ\2760\332\256\274xK\271<\271\271\346\276w4%>\305\216\037\276*\025\027?\037\224B\275\3416\236>g\344m>h\222\002?\316\037q=\353s\215\276\337\307\037\276\370a\200>\371`>\277\027+\247>\024\363p=\201a;>\032\364\233=0x\257>\204\247\233\276|\256e\275\236B\234\276/\315\025\276\002B\231>\357\241\262\276\200\345x>\215\322k\276\264\336w\275\025\r]>\2168\221\276\\\211\307<\346R-?\236\365A>\257n\362\276Pf\365>O\244\252\275\\#\246:*\257\320=\306\014\263\2755]\\>\024\226\350>C9\326>U\031F\276\030\346\236\276\377x\356>\327\203\r>\214\375\262\275\216/\347\275fnv\275\323\004A<\245\242\220>5\023J=\345\023.\276l\275\235>=\370\332\275\320Jo>\232\336;>\"\3751\276\340\214\235<\245\005$>\014\314\236>\024\361J=\206\326\257\275\304\372\306;i^\247>S\224\217>5:\257\275\302Z\037>\022\254-\276_\307&=\027\344\201\276T\016\003?\022<\254>M~\367=v-\370\275\257q\271\274\220\344J>\231o;=\036?\201=%T%>\257\304D>\002\357\263>\t\034N\275C\353\035\275T\247f\276a\214\274\275\327\223 >2~D>\337\361{\276\361e\177\275\241\024\263=c\r\324=W\331\210>I&K?\\\025\007=\332w\245\273\026\274\377;\257\206L\274\335\213\372=\217O\027>\200\222\001\276=\250\034\276\003[\375>+\323\372\275#\206\314\275\222\241\032?\261\t\264>{\025Y\276Z\006\247>\027d\023>\334\342\014\276\3602\335>%\327g\276q\250Q>(\177-\276 \214\336=\217\225\017\276yn/\276j\001\216\274&C%\276\n\363\200\276\276\335\354\276\226\020\003\277\014r\240>\256:\221>B\020\364=\364i\203>Q\366\266>\300\237\221>\365v2\275\237+\024\275\267\354\203\276\275!\214;\233\325C;\027\001\201\275\305\265\242=T_\214<\355\007H\276\357O\240>\310\003p>\322\357\031?\035XM>t+\n\275\204P\254>o\343#=t\013\322\275\000\356$>9\255\201\275\377\355\325=\230\227\331=\326\340\216>\234|\275>Bb\222>\030\371V=X\323\322>^L\234=\277\261i\273I5\032\276\353\0160\275\n\254k\276/if>N\036X\276l\313h?c5\037>S\354\226\276e\031\276\275U\326\267\275l\246\253<\322\223\307=q\314\r>g+L\2764\t\201\276\225\272\007?vQ\263=\316V\270>e\313\321=\210Z\361=$;\305>\0256\264\273\355A%>\246\264\246\274\326\010\275\274\013\205\026?\026\002\016?%\267\362<4\330\302<\2000\232\2767\247g>\202\372\247\272\202\265:\276\265\315\352>\354\2651\276\306\3743\275\264\365\260=G\344.\276\274|m\276\316\016\236=#\245\267\275J\336\261>\246I\234>7$H\276_\006\002>\232\310X>\257\377`\274\213\240\206=\2343\035\277\337\362%=\030\255?=\324Yp=m\251\227=WR^>\346\340\331\273\3259\033>\004=\004?.d\326=&C\030?\347\0350\276\373\362\217>\005)\323\275\237\3242\276\274\261\211>I\004n>\375\035\355=\031\363q<\230\020\020\276i<\275>\033\005\221>\351|\273>\226\250\330>\013\207\031=\373\336\242>\313\343\303\275\236b\005>\273,\022\276v}/>\024/\265\276\377S\323\276\334b\266=qV\030\276\336\332\032>u\224\211\273\204Z\270>aW(\275.\234\310=\216\245>>\336\303\242>\037|J=\225%\326=\213\323-=\310\257\203>P4\205\275\001\342\245=.\346\224=\0009\201\275\312\237\233\276\356U\\\276\377\1774>\344\216\265\275vn\311=\301!)>\377+\007?\362\375\351\2753Zw=w\341s>\341m\221>\036\332\216>\270\365\254=\037\374;>m\004\234\275\303\337\215>\227e\347>%\336e>\277\260\000>(\000 =\351\336I\276\255G\261>\261\377\264=\344\270(\276h\343?\276\236f\n\275Xn\006\276\336\253\000=\0346\207\275\336\377\013>\016\264\264<\265\020\345>\247\365\216=+\345\202\276Hpm>\334\2546\276\030\214\004\2746r\021>\277\204\223>\313\201\014>J\230\277>M$\340>\001+\375\274#{\265\276\3639#\2759^l\275c\267\206>\317\240a\275\271\355\000\277fa\006\276\212uy>\212\345\252>@\360\375\275:\312\313=h\022\'?c\307=\375\276\214=\272*\370\275@\314\263=\020\323\364>\275RL>\201|[>4#\360\275\321\002\262>!\231,>\222\267\002?\251\262\022>\257{q\276\005\270\271=e\230Q=i\354\010>\372W\325=\016\351\220>\243k\245\276\216\276\231=\231\375\361<\334;\223>\377\366\266=\240\222O>6\227\206\276\376D\232=q\344o>z\025N\276\204\341\225>\024\365}>\201#&><\341\203>\310\372\r\276pIm>\036\334\025>\025\264\032\2762~~\276S\326d>IE\346\275\251]!?\205\256\223>\256`)?\020d\014>Hw5=Y\343??\252\224@>i\200\007?K\'\300\276\200\254\037\274`\353\337=\005jN?\344\224\335>\327!\014> }m>\334Jl>=\355\005?N,\017>U\321\021=\324\027\002?\032\021\t?Zw\250=\332\300\253=\023!d>\270\034\244\2759n\016?M\266\272\276\036\202,?i\335o\275\320TF\276\021\200\014?\247\214\274>k\306$?\252&\211>\216u\335;8v_\2754Wy\275#w\246\276\366 \023?]\314F>\326\216A<\305\240\300=\233\344\220\276\261\335?\276\206\237%\276\245&\262\275\352\'\324>*\334+\276\024f\365>/\315\'\245\201\025\276\330\231\260\274\360\037\006>\261\232\t?\016\'R=Z\262\022?\305\260j\276g\002\277\276\366\030\t?N\366\231>\017\343\342;m~\267\275^j\005>Q$+?*FP?\234\307\236>\020\204Y<\365z\266>H\331!?-\234\214>\303\n\314>\300Q\260>\030}G>\241\271T\275a\361\346>m\314\251\275\026\224\3129E\316Z>\252\217\227>\027\355\354>\3030\034?\037\t\001\277\001\323\305\276\013m\\\275\241\233\305\276+{/\276j\334k>\013d\363>\235w\202>\242\266\025?\025\241\037=\302\273y\276>ZS=\001q\330=CK\327\275\314\217\000?X\'\004\276\007\267\t\276=\241,\276\233]\212\275\027\021\254\276\303\302\352>V\312\310>0U\222\276Z3>>\244\016\013\276\265-\277>\367`\310>zS\374\276\313M\332=:\347\356=\350\177\234\276\037\330\014?\323I\372>\351\227\224=\201^\374=\'R\325=k?7>\3129==\216\351A\275R\344\344>8\217\006\277\274k\327\275\375\033Z\276\245pQ>-\351 \275\262\360k\276\2376\'>\346\005\334>\r\323+=A\273d\275\345!\004>O\2176>\200\325J>\244\365\005?Rf\317\275\223\254l\275\305\334\377>\322\216\013\274\256\241==-cI\276\326\233a>E\266\263\276V\250\003>\314R\337>7\253\255\023\250\346>\301\224\200>\360\301}>Z\220\213\276\202\365g>\344kn>\336gc\276o\200\227=N\337\315>|\032\017=\017\340\023\276\226\236\202\276dW\003>\007\034\245<\n\017x\276$\206\035;\210t\230\275\361;J\276R\315(>n\266\205>\232\"&\277/\264\264>^\003%\277\224\373\254>\036\332?;#\"\363>\030\3140\276\221?E>\275\377\313>j\236\363\275\315}\240>r\217\275>}\177\344>7\271T>va\010>\014\227\201\276\271\360\224>\215X\207\276\341\352Q>\226\272{\276\031\025\260=?4\204>\206\007\210>\001i\013?\3127\365>\224\245\343=w\360\272>\335\033\244>\256\342\317>\221\001\212>+\363H?0\334F>M\352\315\275\313\221j=T,h\276T\205\337\276\007G\000?\021$!\275\213\315\002>\376\'\274<\206\303s\276\313Q@=8\233Y<\0057a=F\252\253\276,?\375=o\025\360>i\320~>%\215$\276\037\242\366>\205p\217>\2237\006?\246\037\263\275\026t\252\273\370P\256\276T/\226>>(\362>\370\246\317>\355K\240>\307\312\023?\nWP\277\177A%?\246y\364>Y\021\301<*p\305>\235\202\310\276O\300\320=\'\342.=\253~\276>\016,\376>2\237\331>@\364\001?\2348J=\246\017Q\276R\272\314\276\365\201\035\275.\351\252>\030yB>\004$\004\274\275\306\035\277\334F\021=\376P6\276H\312\370=\362#\210\276\265\300\014>\202\252\234>\367s:?\310\000\240>\226\334\312\271}\0014>\315h\221?-\035\376=\255\311v\276\3408\274=\322\266\n?\352\341\261>\250\266\221=\r\311\223>\355k\250>|\303\006>D\215\320\276\345\014u=J\207\267\275\307{_=K\004&>M\212\020>\244J\257>l_\211=\005\013\270>\371g\000=^\351\031\275|\320\213\276\203e\254\276.J\305>wjo=\034\241\247Z\335\027>h] ?\336D\204=A\347\000?A\033\204\276\353\010\264\275F\305\276>\212\n:\274\347\222$=\347WV> \251M>\220\314*\276(\241\277>\240\370\004>\322\241\251>T\216i>|\271\032\277T\260\375>F\336\357\275HT\213\276b\203U\276\032Y@>\227\035\312> \346\266>/2\277\275\333\212\251\275YE\237\276\256\034\033\276\006<\224=g\203\225>\342\326n>\334\253\374\275\024uD\276\201\251,\276\203\220\243\276]jW\276\203\265E=\370#D>\241,\212\275\227\235{\276i\322\233=D\026==\246\304+>{\256\242=O\210\224\276t\014e>{\010\000\276\3109\212>\222\276f>\247\363\323>;3\272=\234 \253>z\243\016\274\022\005\221\275\375\013<\276\272\275\231\275\t\356<\276\303\221\243>\346\277\223>k\220\224<\325 D\276\243?\326>\3236\315=\231j\206\276\274\361\213>F\352@>\261\352A=Z\242\372;\240\306M=\"\272$\276\244\377\250\276`\354\227=\361\372+>\230r&\276\277W\243\276\233\255\244>;\275s>\354k\275\276\252;\035=K\010o\276a\214\214=\216?\316\276\266\360=?\227A\322\276D\271\237\275L&oJ\232`>\177@0\2765M\261\276JE\267\276\226\3621\275\027\304\245\275\326\\H\275\346\222\030?\362d8\275\225O\340>\242<\223\276:YY\275\234\205\226\276-$\331<\363\330\306=]@ \277\200\2742\276v\344\345>\375Am\275m\177t\275_\334w\275\036\022p=z\347f\276\261\356,>B\265\261\275\377\306*\276\007=\343>\207@\031\276\034\337\036>\000\251\016=\302\201\344>|\317-\276\264\311\243\276y\244P?B\247\274\276/Y\261=#O\n>\216\017\316\275#]\212>\350m\271\2746\377\371>\313}m>nQ)>\016\342\371\276\226\311R\275\200\000\320\274\206\177\340\276\307\334\371\275}Z\234=\222\306\2656\224u\276\273\212\326\276\020\376%\277le\257>\245\314\247>\331\356a>\243\016\350\276\231x\217>\\\003X>\272 Z\276\006\236\346\275\365\022\177\275\371\335\361\273\020\342P>\006 \231\275\372\275B\276\322*\005>\327\324\360\276OQ\301=Q\373\330\275\332\020W=Q\246\020\276\242\002&>\207\252\350\275\'qN>|\'O>\370v\002\277|\263\222>1\257Y>\033c(\275\243`%>\375\305\235\274:\220>\275\355Y\236>W\272b>\022G6>\347\277/?\007\300J=\257\354\275\2761|R>\375\270\314>&D1<\363G%>\216\'9\276\341\027\200>\020\210\340\275d\315E>\376\312\237\274^f\005\276\017 \215>\377y@\276\243\375\026\276\027\273\020>\212A\003?}\352\244>\367-^\276))q>\017\274\315=\304e\032>u\217\025\276\210\247\206>\330\327\003\275g\312\206\274\337-\007\276\203\276g?\034D\336\275\375\201\020\276Fb\237=5\003\222>\312\373U\276p\"\203\275\235\373\251\276`/\340=4\003\322\275\004\021p\276\035\\\253\276\317ts\276D(\227\276,\250\277\275\364\344\272=6\365\235>\340d\205\274\350\206\307<\221\177\205\275\237\013\256=:e_\276=\033\301>\035\276\243\273!\350\364\2763dL>\240\033\370\273\3758D>\265\332\361>]\027\247\275\303e\276=^0&\274\347\t\234\275\365~\271\342t\342>\n=)?Z\020K=IOW<\345\005?\275LG-\276\234\354|\274y-\240\276b\336\024>\2579G>@\235\232>\276\257\005\276\025\256.>`\244[\276\370\215\345=\014\223\020\276;b\211>jF\356>\220\275\270\274\245\322/>b\376\205\276\002?4\277g\377\224\276\310\216_\276\226\365\220\276$z\313\276\244\036\322\2761\"\346>\200/\022\276\262%\025=\"\231\330\276\300_\257=\254x\021\276$\241\244\276b\320v>\n\373(\276\005]\347\276\n-\321=\276r\226>\355\254N;.\307^\276S\027)\277DH\017\277n \325\275g\271:\275\001~\016?\200V\317\275\220\335s\276\330f\215=Da\367>\351\366\030\277\213\313\026\277\363.\340=\306\302R>yu\320\276_\360=\276\307lq\276T\006c>\315\334W>\"\207X\276\337=\316>\342j\201\276J\003P\276\250\253A\277\215\377\022>\360P_\276\330/\252\3023s\270\276\371\005\300\276\336T\247\276\302\n\025>\275\327\335\276B>\203\275GO\034\276\204D\237=~\031\377\276#jp\276\232|\017\277xb]\277\337F\034\277:\003\332\276g\033\261\276\367\212\315>\200\231\211=\225\236\311\276\233~\200\276\237\377\034?\245\227X\276\262\312\321\275y\230\021\276\276\300\013>w\216\030\276\217\240\236\276o**\275\265Vc=4\273\355\276\037\206H=\342@\315\275\275\316D>\2674\000\274\351A[\275-Sa\275m\0145\276~\300 \277\321o\365\276Z\267\260\276\213\310j\276p\017\207>\212\020\017\276\r\031W\275-O\010\276X\216,=\373\023G\276\203J\220\274E\315\261=\315\035\374<\330\002L=\222\235\244\273\337\205\373<\306\265\265:\307\274t\2764\257\351>Q\024\n\276o\310c\2765\223f\276@7:>\374B,\277\211\273\"\276\234Hf\276\362#W>\177\036\327=\237\227r\276]\016^\276\023\206\262>d\215\210>\221&`>\223.\252\276%\265\217>\325\264\000\276\275\177\312=\306M\365\276mI!;G\323\203\276<\256\321\276=W7>\014\300\310=*G\316<\351\031\345>7-\373\276\364\026\325\275JL\002?6\021\222\276;\314\024>_\202\254=\004\n4>\204\365\352>\215\201n\275@y\200\275\257\302\300\276\236K\344\275\017i\036<\375J\022\275\333\251\214\276\237\224*\276\276\325^\274@\r\267\276\215\251\233>\203\305\211>6\307\206\276\373j\307>|\366\214\276\262`\020\277\217w\304=\3001\333\275\377gN>9\004x>\002\210\202>\214L\215\276\346\256\311\2769W\004\277@\255\202\276\237\247{\274\275Z\347=\010\352\211\274\275\244@=\211\337\016=e\261\232>\035\t\311\276\320\361\014=+\323\215>\302\222+\276Yqt\275>\311|\276K!#\276{r\031>\235\224@>\352\263\244>\031\033g\2750\302\234=\252\036\355\276\343i\343\2732\201\024\276\341\0367\276m~\357\275\263m\354\241\367%<\243\033\033?.05;v\246\017\276.b\227\276G\264\304>\020@a\2763{\202>T\270\235>\0273\311>\310d\247\276]\207\206= \256\237\276\016m\014\276\245\257\270=\223\212\233\276+v\017>bo&\276\365\312Z\275\312\300\355\276M\\\315<\021M\276>(\255\237=\367\030\320>\276\362S\276\336\355\225>uV\331=\341\366\277\276x\255\000>y\373\004\277\271\205\270>\217A\314\275\324\243i\276S\260$?\241Q\310=\231}\375=\324\341\325<\362&\373\275M\207\346>y\304\221=!\274\237>k;\242\276Q9\364\274X\\8\276\316\256\203>J\342\257>U\035\303>\363\332\035?\013\253i\276\333r\250>\255s\r?b:q>\n\357[?\254\240\211>\317\177\023>6\213\330;\200o\035\276\350\313\200\273\275#-=\017L\343>\023B\014\276\251\361A>\3255T\276O\000`>\307\262\260\276[\217\332>-({\274\342\311\226\276\314\005\247=\3634\225>d;\212\276\243\356\221>\177K\251\276\261|\360\276\355{M\276\031\025K\276jzm>j7h\275\"+\216=\017\267\345>\244\351\273\275\210a3>\306\027\335=hI\267=\371A\206\2763I\236\276\325\333\262\276A3\014\276\244\353\007>\214\313\260>#Q\215\276\367\255\231=\346\217\324>\031\213[>=\022\017\276\241]#=\301<\034\276?\221\'>\353B\256=%\240\313>\212B\356\276`\306\355>\340Ez\274\263Uo\274\270\372-\276\221\370\377=\270\262\026\276\235\345\020\276\351\257\001\2761\246\346=\222\307\245>zQ\343\275\307@\n>\005\n\260\276\305\034\320>\2677\323=\216g\272\275\323\266\242=\325\311\375\275\207\312\016\275\000\250\355\276\006\312\346<\354v;\276I\014d\275\377\210\357\276!\000\276\276x\330\271=\210J\362\275\\H\322\276\225\373\360=N\003\251>Q\236\251>\304>\205>5},\275\'\275=\276\245\tR=\023^E\276$\033\246=1/\306>]\314\312\275\030\227.>,\033?\276h\272,\276*1!\276\222g\"\276\254_\006>\335ud>\256=\354\275\336/\377<\"b;>A\371\251>x(\215>\262\306\307=\244\375\233>\371+\302\276\000\253>\275\351\211!><,\271==\026\017\276\212\246{\276A\031\227\276\373\022\\\276\277\275\315=\354\2453>\314H\276\276\231\344\325=#2\034>I\322\366={0$>\033\240\236=U\344\337\275\023#\264\276\256\304\266\272_\2615?1\013\031=[N\304=\341\213\227\276\\\325W\276XX\250\276\276\000\340\275\335J\204\276\317P\257\275\354\350\245=%^\211\276C\202\234<(4\017<\257\302H<\274\035\262\276c\341\010>xL\000\276\013\310f>@{\030\276L\211\363>g\314\357=,\2304>\244\355\034\276\352\321\017?\007a\200>\271\211\"=\2343\251\276C\327\261>_\320\3259\010\347K=RN\340\275\351[\302>\262\273\332=\002\356\371=\366\340\002>r(\340;Us\356<\000\024\353=\323\373\254\276\335\022\333\276\020\340\\>\250\315D<\2767\211\276&\302\323<\335\030\217>\271\361\236>bJ%?Z\364V>\312o*\275\336\215T\276Q\257\347>\007p\276>\326\316\t\276\246\237~=\236\003\377<\317%r>\317\265\264\276\224\373=?\330\265\274>S\001Y>\\J\"\276\3058\300\367\374\243=5q\2765\373\021?e\333o\276^\225#\276\241\'v>\306T\273>A\223\t>k]\020>F\360\251\275f\371\375\275\010\365\017?~k\036=\310P\217=\262\344>>\263\360#\276\005oX>\214\022\224\275\272\274\206>\214\035,\277\005\213\"<\211\366\373>\032\226\016?0\263\333=\272\234\n?\271\034\235=E),\276\354\205\247>\367\314\241\276}5\242\275sg\357>p\200\200>\220\334\n?66\024>o?I><\330\265\276\203IU>\3147\350=^9\232>\315\232\253=S\350\205>\023\021\267>\372&n?\222\332\315>O\334\346>\251\003\213=\226\034\026?\374\005\231\275\252Q\337=\202\253\350>5z\n?\312\244,\275e\244\371<\317{?=\234\003\373\276\367\034\246>XC\345=P\302\205>\201t\211\275\024\212\226\275\262 \320=\027\333\037\276\312\265\362\274\304\243\237>6\201\275=n\002\016>LQ\241\274*+\206=Ce\344>t\251\324:W\354\304\276\260\023\n?q\221\313>~t==\216\264F>\223\254J\275\032\003\213\276\222\323\001<\2638\202>G\361\031>\345\255\030>\364+!?K\317\032\276\251\037\256=1_(\276~\023\353>\332C\306\275[^\336=\313\2528\277\025\343)>\266\221D>\362\360\200>\351q\236\276\330\003Q>\to\267\276\254\027\'>e\247\007\275\206\302\277>\031-\363\275\237C\340\275\275\034\371=\0014C>\213\372M>\375\340\254\276:\010\247>\345W\214>\263\225%\276\030on\276\037\034\255\276w]\213>VI\331\275\335\232\341=!\212\354\275\3651\006\275\314)\345>Y5(\277.\352\353\274m\257C\275\300\302\305=\032\216\032\275\205M\004>\t\2542>\226\213\337=h\256\213\274A\344\025>}\225\347=B,\275>\022\002\222=\351L\233\276\332\333\272>\000\005\343\275G\031\334\276\240\376 >\356\264\276\275\233\016\007>\230\005E>\320\341/>\036s\243\276\214E.>\327\211\276>\331\230\274>\344\256\267>\251\343\235>=\334\307>\260h\010\276\013V\241\276\\]k>\004\362I\276\361e\275>\010\232\r?\t\026\323;\212\002\264;\351x&=aqH>\303:\213>\344E\017?F\235\231>\362P[\276\360\256\367>\236\260{\276\226e\000>\000\277\252\275\272\036\276\276\375\213\257=\254\004d>\311;\370>\317s7\276\006_\356\276\202\001\r>7xe>Fl\003?]\211\002>\035\216!=\273\022.>\352\215\347>&\207\t\274s\341\032\276ck \273\304\374\257>\273M\235\275\204\235\207\276Z\201\274>\237\274\257>\221Af>\322dN\274\227\031(?8 \207\275\263\356t=?Dz>\0170\215=\324\316\216\276\030&&\276W\3233>cAn\275\274]\220=\356\275\r\276\274\243l\276\365\217\373>\301\244)>\027v\340\275\024\247\343\275\247\267\215=G\263\024\275\006\332\221\276\347\353\216\274\005\235H>\005\273\201=\317y\"\275\204\247:>2\360\026\277\275\n)>Ff\177>,h\216\2761\264[<\016\277\205\276\033ZG\276w\207E>tD|=\235^s>\027\211\227=&GK\275\r\271{>27\016?\256\231;\276\213\017\037?\262hT<\335_+>\ro\327\276BT\221>:\267\242\275\032\246\206>{iU>m\004\366>\223\373\236\276S<\343;Y:9\276|#\232\276\036\343g>\372\005h>B\036\020>\206\367\304=\270%)\2751\213`\276\226Y\221>\342~\250\275\206\357\204>\314gQ\276o\005\001>\263\224\211>\221\355\212\2750\r\207=\n\267\265=\003\203\032>G\226\000>\222\364\240\276WW\312=\316\t\031\275\353R\377>\222\275\344\276\242Z\"\276WBW>\331\036\273>\354\324\245=\217\337\324>\023\251\036<\301\020\316\275M\234\233=i\352|\275\200\014A>]A\263=\353\177\216\276\367\3553=b\255\246>\303gi\276\201O\277\276\303\376f\276\\\030}\276$w\332=-\3368>\026\317\237>\217\3450\275\004\254\201\276\017\3276\276\003,\374\275\314(\306>8\325/>\021\310m=2-\005>\203D\377=\274$C\275\364RB<&\253\310>\330\204\215>\345`\'>\331L\027\276\351\330\201>(9G>\003*}\276\250\3723\275\255(\371\275\341\253\344>$H\225\275\341\270\312>Bfx=\004\356\010>\351\2515\277\257,\206\276<\350\312\275\006\272r>\312o}>\037X\204=\201W\267\275\246;\306>Z\220\353>\231\247\020=\2230K>\360=\363>\242J\345\274\177\331\007=>\353\n>\000]\376>\331pI\276\324\333\023?\312\311A=4\'\004>}\331\257>{_k=\001\370\035?\303\361\317>\244\016/<\306\232M>*\262\200\276\300`b\204>\356\033\004\276\035\255\200>\000\257j\276Q<\001\277\303\235\352>\274R\223\276\'\020-\276\352S\367=\207o\225>!\350R>0EO\276\310\252\303>\224AG\276\300\010\265>\214\333\357=b\251\350\276\010~v\276\005\372\335\275\275\305\211\276\200\311\200>\225&\351\276/\350\214\274]\262\215=:\332.\2770\006\247>9\n\210\275v\237S>\3459\032=\222$\233\315 \365<\021/\035>\324\220n>\304/W>WN]>\032]\226\272\273\342\367\276:3\364=c@\247\276\3753\321\276G*\311\276\215\373\252<\232\321\004\277D\264\240\276\220w\216>\310\010\016?\032\317\205>\326\030\n>\"\271D=\235=S==6\212=czx\275\337\267\252\275\3363\232\275\035\251\274\276\235\276\201\276Lfl\275N\177h\276\226^#\277\270d\246\272s\016J\274\"\357D>\001O\313\276\325\362!\276\022\327\021>v\206\021=\315\326\317>3\362J>x\245\242\276j9\226>\374S\241>{\232\020?\347l\200\276\\\013\253\276E\376\'\276z\310\352>J\275|=\314H\017\276\303\372\340\276\216\026\177\276\026\341\364>\n\244\202\276\240\206\336>\004M\252>\225T\265=<\032\020\275\351\022\345<\"\220\332\276\366\361\225\2743\256\357\275d\345\343\276K\205T>rIw>!\213\273\276\014e\004?\037|\017\276\021Mx=1,\270\274\002\267\217\276\\{e>\353\311=>\225\313\251\275\204\024[\275\356\003\326>\261J\301\276\2513\245>\246\224\372\274\250\335\220>\251\344\014\276.\332\005\276\220)5;o\236\233\274\2037F\277\022\002\266=\350\353w\276mkM\276\204\227\223;\\\212i>\243\031\233<\354wC=95\273=o\206\306\275\342H\326\274\335f#\276\005\373\300>\334L\265>\355\\\265\276F\3135\275x\363V>\260F\267<\037z_\276\377\032?>[\200;>\3538\316>\350\372\220= \314\215\275\345\251!\276\376\025\311\276\354\033q\276\327\332\227\275 &\367\276 vE>\034\343\201=\304l\277\276\334^i=\002\016\024\276\236\005W\275\013\006y\275\274\017\276\275N\n5\277nM]\276g\177\202\275j\265\231>\311\r\201>\267UL\276\032,G>\206\310{=\023\307\222\275Ez8>s\010\254\276s`5\276Y\206Z\276\235\334\026=\300\222V\277\324w_>\235@y\276\020\336\210\276\341j(\276\032\203\t\277\274\211E\276\313\t\356\275\325\n*\276\374\252\035<+\3615>\254\214\231\276\214t\216>\224*\334=Z\'\320\276\240\240\205\276NCA>R;\342\275\253\352\376\275\020\030\240>\245\242>=\304\004\006?\225\026\236>\t4\236\274\305\252\230=\036\327=>;\352F>\035\017E\276\316\"\223\276\"z\033>\035\227\215>5\332\r>~\241\244>\327to\274jLq\276\374\200\264>\354\227\365=\305\004\220=\361\312`\275\"B\001?\306\342\010>}\301s=\217\304\234>7\300\315\274\221\301\204\275\r9\376>?\030\377=9\251\032>\264\234\034\276X\276<>\2202\006\276%\344\221<+\220\322\276\004.\2459j\230\317>\374\342\363\275\216\225\231=\330\2439>\224[\024\276y/->Lmr>\340`&;\362r\025>\273\033\210>e]\211\274 \361\260\275q\254\340>\314\352\235>;\264n\276\341{\233\275E\204\246>p\242\'?Z\375\320=f\026\267>\033\324\022?k,\004?)JD>XO\201\276\035\321\352=\371n=>\367\007\375>\215pN\276\351\357\326\275\0077d\276\223O\243>L\324L=\365\232\365=\311p\r\276y\233e\275Tz}>k\337\346=\237q\021>H\177\n>\262\177C\2760B{\276\325\277N\276\027x\262\275R!\020:\013\342)\276)\275\313>\346\356\r?\332\237q>\032R!\276\337rL=\231\274\022?\240\243\021>\242\200Q\276\241C1>\001\204\177>\206\204\201<\270\266\330>)}\255k\252\265>\304\323y>\1779\">@\216\241<\005\022&>J\345y\275\207\201\221\276\303{r\276\222\037\223>+\373\276>\036\277\211>\204\334\025=\346\223\211>\030\277\333\274U\033\244\275\334D\244\27668\223\275\342F\217\275^,\305\276\371\332\363\275\311\256\023>Y~\276=\373\200?>V\372\303\274Y31\276\222\037\222>\3373\274\2766\274\265=\322\220\301\276O\022M\275E\265\265\275\017\036\333\276r\370\327\275\373e\306>)U\242>\"*\220>e\014\371\273\304\356\'\275\316{\257\275\206\205\366=\214\370;>\320\217\016>\032\330G\276%\006.=\302\246G\276\r\006\016\276\362X\022\277)\362{=\314\271{>\343D\237\276\312Y\026>\240I\214\276\302\325\371>\333\2558=\320\005\n?\220\342\232>\225\377\230=\316\372\"\276!\013\233\276\263e\227\275\373>a\276B\016\257\275\374B\\\276\254\263\307\274L\376U=64i=c\361\013\275\223\343\032\272\346eA>[\205.=\252\214\203\276\317H\311\276~\202\375<\314**\276(\017i\276{>\030>\375\266 =\250tS\276\023/\273\275\276`\302\275Ef\230<\354\366\206=\375\035\244>\310\245\330>\247[\355>\240L\362=\334\330:<\242.\347\275-y)\276g\335\220=\201]\347=H\320\n\274\224\244\264\274\364\230\231>&\207\223\010\240\343=\007\325\325\275\365\032\330=-\235\256\276Zk\324<\352\314\024\277(\356\256\276\235\273O=\rc)>K\240G>N\010\200>\0354\265>\002-\016\277\212l\243<&\001)\275\353\007\271\276\346,\255\275J\246\253=\265\r\n\275\360m\266\276&!\020\2775\204\017\277\204\264N\274\316\206\377\275T^\366=\262;\257\276\273Sn\276tZ\302=\221\215\226\276|N!>R\343@\272\362\272g\275\270d\005\276b1\200\276\216S\245\276\365\201\334\276\007yk\276D\323\247\276\254\213\220\276\310\342\265\275\337h\336<\205\326\262\276\320\222\337\27691\224\276i\236\333\274\343i\207>[ \250\275\331\264\363\275is\305\276\372E\233\276\234\322\023\277\352\272\017\276\304<\235\276\324\014h>\200\305\347=cn\366\276G\005\202\276]\363D\276\235\245\031=\237\024x\275[!\247\276\204,\214\276\311E\004=\302\234\007\27580a>Y\214\303\276(\334\332=\224\3454\276\222z+\277V-\000>\371\341\307\275\311\013\017\276^\367\n>\322\366\035\276\310\025m=\371\327\231=Z\370\226\276^\213\314\276lT/\275\243\340\020>JO\025>\310\007\201\276c\030\026\277\327\377\242\275]\274\307>*\223\263\276\223J\365\276+s@\277\370\272\241=\300\027\025\275\'\227\027>\225~i\276\356\340C\275\252<\014\276\002\352\255\276\273\254\361\273\035\234V\276T\340u>\204\001\263\274\363\311&\275\000I\266\276\356;\273\276\270Ba\274\t\320\324>P\310\241>\340\256\023\277\023b\334\274\222\274\036\276\271h\253\276O\253%>IQ\022\277HB$\277\363+\273=\206\332\360=\265?\364=\376\327\265\274G\313\211\276;\031\224\276]\3027\276 \033[\276\250^\243\275^\250\351\273\252u\221>\020\251\314=\315\213\021\277\225\250\250\2743y\267\2763\351\315=\'\352=>\325\022\350\275\224\333\205\275\225\212j\275a\235I>+4\246>\007\243\252\274z\252\253>\353\373I\2739\t\306<\253p\331\275\201\333\246\275\306\002\300\275\375\236\030>\220\250\214\275\314\220\272\275RVc\276\277WD\276\324\363M>\341\023\233=k\300\244>\363\243\373\275\\\370n>\252z\030>\n\202H\276\240\331\212\276\343\267\233\276mQ\t\277LO\307<\177\312=>\272\335?\276\374]\350=\345\022\235>;\312\326\275\335\233\357\276\021Uf>\202cS\276Y\342\253\275\322\273\r\276\331\264\025\277D\035\224>\377J <\362\255\221=\377l@\276\2778D\276\335W&\276Za\264<{\226\033\276\013^\013=\\D\330=B\177W\276\004O\002\275\324\257\312>\024\276\336\275i\374\351=\326:\313\276\006\025\201\2762D\212\276\323\352\310<5\330\212=\301\034\363\275Q\221\207>\353\250o\276\257\255==\032z\205>z\250\337\276\213\201^>\215\316\t\276\326\350\251=\316\347\255>\371eT>7\034r\276\266\376\226\276\344\007*=\220\n\365u\'\211\276#z\003\276Z\267\345\276\317\320p=\276\251;>\260\330\367\275\375\037I>\036_\030\277.}\332=\331\203\344=\266\227\037\275\260\215\271\274;\t\\\275~Hd\276\371\246q\275\312\274\013\276J\263\370=\215\224\325=\236P\351\275\337\270\253>h\"$\276\256\327\365\275O\237\267\276\243\\:\275\333\211\250\276\026>W\276\304Js>\252\326\345\276\242O`=\236\325k\276\252\377\221\275\264J\r>hx\350<0\331\273;T\036x=\034\n \276\231\227\327>\320`\206\276\3239n>\210Z\204\2766\361\257>\304\256\344\275Hv\253>\277\333\354>\303\'f>&\234\030>\332\206\243\276I9\354>\001Ac=\2514@>\030\314\221>\257\342\350>\227\346\375=\215\026\200\276H(\234\274\2614\256>\367\033\315>\212\326a\276\267\212\337\275\252\275\205=M\235%;\037\375\032\276\364\300P\276\276>\r=q\025\001\276w\033Q>\233LE>\336\333\031\276\020\262\207<\300x\006\276\302\257\365=}XO\275\274h\377=h\357\016>S+\002=\352\343\342=xd\245\274w\251\222\274\317\214\013\275\351\034d\275\'\346[\276\230M\357=\352K\306\274s\334\013\276\350\244\214=C\357\215\276m\322\303=\332@\211\276\342\201E=\241\267\001\274\304 \244\275L\201\376<\006\261h>\256\262\214>r)\212\273\364(\273<\207F*\276\341^\273=\305\n\242\276\\\302\246>\177\254\364\275\2366\213\276\342\317\310>L\r\227\275\'d\220=\214\256!\276\025v\231>\237H\210>\202:8\275\310\006\237=\233\226\215\275\272\336y\275\000\271\303;\034\300\022\274s\244\265>\211Y\265>\256\031\314>\021\346\231>&\036\373\275\302\245/>U\357d\275\212\306\300=\332\233\016=i\201\202>\330\361G\276\237n\323>\240eM\276B@\322\276/LJ\276\031\031p\275&\367\005>\320\252\024\275Nz#?\276\224x\276\335N\266\275\363\346Y>p\274\247>\276\346\324>\265~\265=\330\331\355>y\237\023\274\212#\250>\305=\211<\004(\340>\315\r\002\276\177\347\321\275|\361\007\275?Q\305>H\002\360\275\322\250\372\275\350\334\034=a\324\312>\270\303\316=\347^\220=}~7>2\364#>\357\234]>\365\210\230>\3610\226=\225\272\251\276\210\3403\276q\245\035>i\273W<\216q\205>\016\3521\276X\241\221>?e\362=\304`+\276\265I\241<\374%\264\275\273\304S=\226\331\365\275\240\204\306>\331\267\276>\027}\354=\026\332\013\276\327^\022\276\024\314\343\276J\333\305\274\271!\335=~\271\312>\306{\306>\014\013D>\032O\007=\3574\254>\211g\330>D\303\270>\317\254\374=\354\365\302=\240tH\2765\241\007>\036\362\311\275\020/\243>\244\313\366=PZ)>P\312f>\000\300\245=W\227\266>\323\354-<\213+w=\304\305\225>\356b\331>\324\331\221\2766f9\276\257!\331=\360\271_>\031\213\004>7{#\276\303\033\234=\004s~\274UtY>\336.\032?\273\372&\275\331\241\220\275\003\236,>\261\200c>m\366\005\276n\343c=e\n\356>\013\360I\276\372Cf\275\014V\343=j\024B>\226\031\245\276\276\241\035?V\030f\274\370\206\256\274q\222\302=\243~\372=\252c`\275\037\251\212>\241\266\000\277D\377\025>\025lt>g\333\375=\261R\254=\023\0144\275\255Q->m\034\006=_\344\t?X\256\200\276\245QI>!*\272=o\234\302\275nn?\277\321\374t\276,@\306=\201nS\274\2139\307>\264\262\200=O\341\213\276\024qN=w\342\020\276\377a\003\277\352?\024\275\341f\024?\255)\342>A0!?\213&>\276k\334\016>\317\273\031\277\352V[=\310|\363=E\335;\275\301,k>cJ\001\276s\202\263>\016\323\032?\024\250P\276\237 \346>4\037\202>\313\t4?p\r\007=e\005d\276rD\235>\375\205\023\276Q/O\2750\313\237>\270\177\306\2758\023<\275U\253\260>\"2\223\274\343\222\206>\177\002\326\276w\032\235>2\226C\276\251\252O;l\251>>`u\001=\320l\255\275\300\331\352>&U\347>o\026}>&l\224>j\324\234\275]\261\264=%a\020>\343\303\t<\203\017\235>}/\223>\360\247\223\275\263)\313=\r\274\332\274Cl\300=\264W\352>\r;\030?!\005J=\231yP>\001z\216\275,\341\252<\036\212\013\276\355\301\227>\206\242\036>.Il\276\\\206\364\275\001\314\325>\2501,??\324\350>_\217\210>1\001-\277) \214\275\026NU<\200\3577>*\002{\274T\022\360=m\242.>9\3043\276\262K\327\276\031\006\223>O\001Y<\213\016\270\0270\252>\213\251\241\276>\324\352\275W[\017>\nWU>\007\342\277\275\224j\271=\241\260\236\276\222S*\275<\206\362>hF\227>\320\204\302>\375<\024\276\030\247s\275\030\364\350>\251\234\221\275\271\237\320\275\207@\230\274\264I\370;#]\251>\300\017\212>C\206J\276q\"\"\276\005\230\304=\351/0\276\234OV>\266\006\203\276<\021M=\037\0262\276g\242\000\276d*\016\276\235OZ>]\246\341\275\227\230\205;\250\225\t\273\'M\031>\337N\266\276\363\312\226=\007:\205\276\206N\227\276\206\316\t>\021\r\222\275\227\270\025\276\000\270\335\275\370r\000\276\034\335\372\276oGO\276\026\324\244\276l\236\255\232(\215\274\347$\314\233\020\r\276,\260D\276e\355\377>Bp\r\276\372:\017\277\032\t\300>\276\275K\276?N\257\276\244@\203\275\030\230Y\276<\241\304\275\243I\037<^\007\201\2749\306\217\274\323\316\320\276\261\010\210>\331\201\325\276\353\301\016\276&\271\334\276\254i.\276/9u<\256|\241g\213\266=\331\352*\276j.(\275\006+\363\275\351\232\267=W\337\357\276\321\222\364\275\333\030\333\276\016a\342\2751\265-\275m\232==\r\001\034=Zp\250=>\315\221\276\222\315\025?\206\272Q\276\232_r>-\277A\275CHC=\265b\321=a\006\251>\022G\253\276\246[L>R\243*\276\002d<\276x\274\037>\335G\243>L\210\204\275\211\271\204>\\\310\362>[\2622>\370<\217\276\331xx=\265\0370>\206\363\271\276\r\360\205>\304\323\014\276]\326\313>\314\256\020>W$$\273\242\254\207\276\347\004\033\tw\265\274\223wG>E\305\373\275\372\311\177=hX\237\276\232\371 \275\014\214\230\276\027U\034\276\326$\236\276\267\251\213\275\340\027\014\277r\014\351\276\225c\222\275\222\337\311\276\214S\374\2027\021>\334D\267\276nL\036>V\334\245\276\224\212\361>\361?\221=\233\327\002\276\022\204\274\275\232c\336\276\216\'\267\275D!\017\2772f\336>*6\262>}\323\r>\002\256\273<\223\240\254=\020\260\324\276hp\363\275\325\030K\275\311\353\375=\320N&\275\313\254\235W<\347\276\372\251J< o\224><\303\266\276\205\273h\275s\252^=\273\205/\276<\226\255>>N\001\276\206\274\275>/\364.\276G!\217\276\036\366\031\276_\275@;\024X%\276\202b\204>k\336b>rI\260=\023\367\304\276\267\032F=\244\214\313\276v\002\370\275\333L$\277q/\277\276r\277$>\237\232\346=_D\";\227\231(\276\215\023\227\2767N\001\277xx\234;\327\325\035>bt\237>6;\231>L\245\247\276V\014\017\277R\222\211=\341\342Q\273\321\362\274\276\204\255\025>\202{[\276\366)\006\277\020\312\212=H\035\270=c\373b;9\013\311\274\315f\205=4\255\235\276\334p\221>\244\003\271\276\t\032*>\361\207\244;)_\221>K\'\276\275\3635\345\275\005\212=\276\3271k\'p\224\276g\035M\276\306*\n\276\025\003\212>\216\035\014>\276\202n\275\300z<\275=\024\337\275O\314C\275\016\014B\2763\2007\276Q\342\203>3\017\364>\017\227\345\275\343\240\331;;pX\276\020H\313\274\371\325\370\276Y-\317;\254\323\\\277\245=\217>\205\n%\277/\202\013\277\370\332\034=&x\257\275\020>\3601\276\252\235\\\276\252\240u<\235n\355\276\210\020\336\276\230\327\370=\225M\220=\220\n\247\276\210\021\021\272\254\003[\276\340\036A\275\334\230\"\274\374!\026<9\221\016?\331\233^=\347t\353\276\3623\003\277\361\323$=\014V\327\276\250a\313>\035\222\234>\251\231\021\276\021#\007?\266Z\264\276\357\236-\276!c;\276m\336\227=-5d>\370\3136\276E3\203\275+\353\250\276|\024&\277\316\021\321=\307Uz=s\000\027\276\356\361*\275\370\304\030\276\034\201\215>\016\276\216=\355\r\177>H\374\200>\272 \004?\014{\211>\363UL=\006we>\312Pl\274\237\016\025\276\374x\342<<\354\273>\344\025\035=\260DQ\276+\272\306>\370\014\214\275f\217\314>#)p\275`\0376\276\006*T\276\343\277J=\335\203@=q\274\002>\277\227\215\276T\327\266\276\371]\354\274mCR\276\245\337N\276\267\205A>u\244\350\275\302/\t\276\365<\361\276?/\304=\200\207\025;\030\323\020\2767\315\"\274\330\001\247>0\205\240\276\202{3\275\307e\245\274\213\255\316=D\204\241>\313\202\024>H\207\344=\005\354\037=\300\307S>tH\314\275;\215\245\276\302L\206>\355\211\022?\217/\025=I]6>\234\325\213>_\230\343\275\357$\233\276\270\377\334=&\216\205\275\304\250A\277|\241&\277ix\351\274\301\262\030>H\370\223\276<\341\224=\377?\267<\017\253\231\276/\376%\275\307\001p\275\013\204O\276\312\203\027\276\036\221\372\276\245[5\275Z\0050\276b\340`>\335:\301=\343wJ\276r\"\213=!\225\207<\302\372\375\275\"{\204>\207\252\202\276\000\356\025?\177\247\304\275\014\024]\277\254e\212>m-\360=^\024\002\276\307\355\337=\227\356^\276\314E\240\275\312(\021\274;\225\311=\262\211\334>nPQ\276\322G\346\276n\242\343\276\343\370\244>\377\241m=\263~\344\275(\026\301>@\276\311\276+1\231\274\351}\245=\236\"\200\276h\242?\276k\230\312\276\204\212\033\276:p\204\275\217k\231>XLV>\240\234\324=\362H\235\273\277\036o>tl\204\275zS\240\276O\032D=40\251=\212\311a\274\270\300\253>\253\225\200>\373\245\242=\242I\004\277\327\3048\276\274\274V=\000\2070>\271-R\276\203p\277\2768\030O\275P\264\017\276\007\275\265>/X\230=r\272\311\276\235\005\006\275\201x\236\275\330?\307=\325\376\353>\231p\306\276\240\250M>\221\231@=\021W\204\276\253\234z\276\003i\037>\263\243\316>\335T\242=\264\314\\;\327\022s>#w\332\2742\033U\276\003q\234\276\275\364\246;\013\373[\275\231\210T\2763\315Y>~&\352>0\236\345>m\375\370\275\320\360`\276|{\237\276i(\313\275\207\226\203>\265\361\207\275\203\352\252>\032\252\242\275\316z\005\276p\017\025?\370c\216>@\312\233>\272\210^=FJ1?\362\034\334=$\253\262\276N\332\302>/\024\017\276:\352\t?.2\361=YD\352>\033:\356>n\275\213>R\214\211>\351\222T>\272\377\255=\360b\255>c8\035\2764\240\251>hE\037>\200:\260=\330\215\236=Z\025\206>\310\022\217=P$\366\275\324\212\003?}\305v>Z{\036\276_.\030\275VU\316;\220\263\344\276\376Q\366\2761\177\">\323\365V\276H\364=>\370|(\275\307\243\364>\010\313F>\366b\241>\342\235\206>U&\262\274\305\222\314\274\3322\032=\177\037\325\272$\271\204\272\333\216\014\276\202\337\247>\230\270\027\274\360i\223\275\301\337\365\275\203\016\264\274\377X\272=i\377\241\2753a8>\341#\240\276~\321\036>\321\355\000\275\200\026x\276:\222t\275\004\353P\276\300f\224>\314B\252\275\326f\263\275/\365\305>D\233G=\035\030\337;\364\322\275\022\006;=p\023(>\220;\321<\364\316@\276&\263@\276&\' \275\372>@\274\037\307,<\315\342\250\273\232\271\367\275|so>!\200\033?Z\354\203>\255A\253=\237\3713>0\222S>>\274\356\276rR=>\240\275\004\276\327\0327\276]\324\201\025?\300\251\270>\220{\036\276`9\'>\033\032\261>\031V\212>\331c!?\343\000\202>\022\364@=\224\300\217>!\2362\276z\260\202>\365\210\215>f`\244=}\261\001;\274\352\377>0m\374\275\227pY>\025[\014\276\334\326p>\200\272\352>>\303\324\276p`p>\347uF>g]=\276\313A\205=\337\201%?\025\307z\276\252\322\021\276\354\373A\276\320\346\360=.\244\031=P\233\212>\367%\246\276s\3142>\336\247\330>g>\321\276;\022\306\276\316\010\'\275\340\027E>\265\252(>\343x =\002\303\216=F\267Z=\004\370R>yh\271>\251\003\330=\251\221`>\321\303\">\324\302\300=\332\177|?\264v\200=\t\350)>[Z1\277f\376l>UIH\276f\266\334\276w?\264=\302P\250\276\010\024\267\275\n\260\004\276\005\251\026\276\251\373\327>\305+\367\276#$\233\276\210\223\366\274\200\207\207\276DTQ>Rg\016>\237\313\247\276\235\004\327\276\335W\244\276\242\rl>a\005\210\276W\263\250>\000\027\310\276,n]\276\350\336\213\276\246\021N\277\001j\270\276\245\322\233>D=8\276\345\200\314>\310#X\276\252\314\336\276%|6\277\031z\310\275\014\333\333\2767e$\277\277\343\314\275\027\336o=HJ\221\277V\006\215\276\206\025j>\364\355\030;\023?\2124p\232>\001\373h\274\340\272\214\276w\346\004\276\226\226+>J\364\326\276\212\212|\274\310\201\356\276\277\327\226\275Y\2522>\364\322G=cS\373\275\001h\300\274/\022k\276\005\331\360=\332\0006\275\224\247\326\276J\222\035>\000\217\312>\224K \277i\272i>\364\355m\276\304\2717\275\034\206\205\275m\221\253\276\203\211x=\207\272\002>\016i!\276\025\033\206\276\345v\242>\323-\351=\337\030\365\276\001j!\277\344\310\260\275K\342\030\277n\332\243\274\"_i\276\013\255c\277\225\334D\274\304d\304\275\211].\277\317\274\302\275\020\316(\277ki\222\2759{|\276*\317D>\030\022\207>\226\270\031>L\367J>\243\272\267\274:\3345\276\312;a\276\013\376\251\276x\310\310\276V\373\362\275\212\263\027>P6f=|G\004\276j\215.=\225\331x\275\362\212\305\276\265|\315\275B\200\277=r\210\031>\213\342s\276\220\2129\276DK\006=M\020\271\276\177\321\216>8\275\374\275\313S\216=\304bo\276}{\304=:_,\276\246)\273\273\326\027\014;\022\315F>\267\321\035\277\327\262\001>\025P\177\276mL\353\275\324\031i\276\210\205\253=\303\206t\276\322\353\233=\257\222P\276\270\361\213\273\256\270\221\276\t\372\006\276\007\272\330\276\346\004\200\276<\355\314=h8\r>D\246\231=zS\'\275w\236L\276>9\016\276Bo\304\275\035\274\241\2769J\232>\215\223&\276\303h:\2763\331:=\236Z\263= R\226\276\302\257\207;;\036\336\276P5\210=\025.\360\276#\206\226\276\017\276\241>\003^x=v\022\274>\300\267\274>\350J\327=\212\227<\277\202K\032\277\237\214\351=9`\253\275.Ij\274\260\t\340>\024\326\252=t^\207\276zQ\253\275\315\024/\277}\254\003\276\221%6\276`\311S\275n@\032>\014\351\264>\003\337\350=\232Q.>B\306\033\276\"\"\001>34s\276\335Q\251>\214\213\372<\010\326Y\276k\230\346=;b\237\276\0010\250>\320\010a> \332[>5:n>\212o\320\275l\334\010=\234[\262>\273\351\022?\2205\334\275\315\370f\275\227\344K<\332\335F\276~\276i\276\213\336\232>\205\265\222\276\230\031\023=\036\305\225<\307\352\372\275\314\234(?\256\000\223>\n\220J\276\335\001r\276\316\274\307\275\243\313\272\276\224a\205=\204\003\266\276B\ty\276\260\320\264\276\372\307\206\276\222)_\276d\352!\276b\025\205\2767\250\213\274F$\325=\346\207\270\275\364\230\346>-\271\212=\277Ij\276a\025\341>\204\326\344<\253X\016<\247\240\254=\304%\006<\265\013V>s\345=\274\246\341\324\275c\311\241>-\025\330\275\354\254\343\275\335\242\001\276\t`\224>\215\031\035\276\2229\250\276\237(\233=R\267E\276TL\013\275+\261\215=\255\026\313>\034\277\357>\370\277c\276`?\010\275[\340\300>(\213\375\276|\245[>)O~>\361\212#\276#\204\n>\223\312\221\276cA\262\2765\221\347\273]m\315<\315\224\336;[\2534?{tR>\370\353\020>D|\r\273\021\203\335\276\221u\r\276\217#\320\276\352\260I=/&\360\276\024\010\236>\221U\250>\206\252\024?\247\"q>\250\'$\276jl\370\274\247\272\321\275\343\367Z>\344K\256\276\007\205\274\275\334\335\202>\005\330E\275\241\222\265\275\205\225@=\316o\010?\364\335\353=\306\304\337<\221Z;\276R\274\335=\302\370\230\274\347Nh=R.\244=(\376\335=\274\013\207\276\254\326]\276\006\203<>\335\206\217>\223w\n\275\r\357T\275\234\000E\274\2451Y>\250\217v\276\215L\016\276\020\254\210<6\310^\276\335\325\263\276\005+\333=p@\t\276S\362\355\2759\224-\275\010\272\030>\230\177\307<1\336w\275\356|\035\275}\262\221=-\343\274\275\300C\021>\324\030^>YO\027\276N\250Z\275K\267\217\275\026#\213>\272\020>\276\022\017\023>\220\272\001=\\&\223\276k\220l\2762\304d=?*\231\276\214\r\201\276k_\305>\367\246C\275\234\266I>\002\255\016\276k\246I:\340}\333=\302|\010>?\265|\276\025\013C>\340\341\031>\226\370\335\275\244?\221\276\020f\247\276\354\2061>\346\004\221>_\317\361\274j\331\r\275\233\320\034>\332L\004\275v\211\010?R\266\022=\0012\305>v\340\205>1\342F\276VS\377\275w\r\255>Q\016*>\303\212\231\276\364M\360\276\225I;\2760wa\275\016\372o\276\023/\305=hJP>9:\365\275#n\016i\301\353\274\037L\010\276\034\257A>s\346\330>/\'\311=\272 \327\275P\357\375\275\001\253\352\275WU\306=\th\024>[Z\373=\351\304\343=\365\267c=\232\016+\275\274\354\013?j\200^>\202\221>>=\353\206<\004\305\352\276\364\307\206>\221\356O\276\251T\277=O:\\=\025\336\226>\205\326!?QN\243\272)\330a\275l\366+\277\337~\227\275\246\206\020\275-6\363>\313\334\207\276\224\325u\276\213\356l>Y\357\306\276\343f\240>\261\204\267\276-zO>.\027\023\275\325N\017\276\302h\007>(\036\243\276d\014\361>}^<\276\331x\213\276)\356\222\276`[\364=\025\256\000\277 \250\001\276\004\235a\276\351j\240>7\321\034=\314\030\320>:\004\352\276#!\010?\255s*\276\303{\247\275\356\262.>\023}\207\276\326\337\222>\347W\236\276\255O\006\276\037\004q>\264:\204\276\2301\353=x\236\227>#{\002\276\020C2=\232\317_\276\2749\355<\275\t\327>j\210$>XP\232>\222E\335\274\\\2625?\023\343\221\276\346b\220<\0174:?\372\203\314\276\260\004\005>f\t\373=LJ\r> a\233>\376\343\305=\310_\"\276oG\326\276\340\312\215\276\347\234\217\276\000d\205>\340>\366=\306\021\232\276K\0205<\036\257$?\276\362x>\316\342L\275L\371c=\020\315\353>a\217\332\275F\263]=\r\317\201>\031q\034>\327\211z\2766\005\003\276rON>\337\3753\276\362\023\303>\216\271\263\275\373y\232=\310\013\013\276U0\247\275\340\263\033\276A\217\024>\230\033\316\275\326\017\265\275\026\234,\275\374\247\224\276\026{&\275D\352\234\276\242D\236>b@\010?\332(\016\275\360\374\332=\362\334\342\275\325TJ\276\301Db=t\245\260>\357\266\355\274;\020b\2767}*\276\032\333\370;\253\226?\276\316\021t>\354\2568\275nU\302>\350\354\260\276g\352==Y\371\206\276\353\"R\276\037/[\276R\006\310\276\353/d\275\213\'4\275\2248V?\274\325\260\275G\326\024>\370\324\205\275F\313H=o\274N>\002Gw>\342A\004>\251J\204>\346\204\266=\303T\263=NY\227>\273f\243\276F#/\276%\014\232\276\322R\032\2760\364\010>/i\233>\317cC\275\317fU\275\204\357\273\2740v\313=\372\313\271>ZR\231\275\007\006\001\274#\001!\2773\263*>\033\307-&\276\204\023\030>\332\362\352<\220V\327=^\351\340\276t4\221>+\260&\275\316\343\353=c\374\213\276\022\366\010>\317\035#\276\344`]>I\375\243\274\342\033X>\272U\001\276\215\371h>o\006\301\276\307\010\230\276l\244I\274YJC>\253_g>\227/\231>\302\\T>\0353O<\266J\010\276\272m\212=\007\267\322>\312z\225>4\2530\276\234\237\216=\202M3\276\226T\344=\243\270\010\276\004\303\223\275Y{\003\276t\260\204\275H\237\202>-~\214\275\374\214\221>\346\336)\276[\276l;\276\252~\273zh\231\275\255\276\235>\317\376\360\274\2440\243\276\301\240\226=\240\267\352=\215+B=\201\371\337\276v\016\"\275W\224\343\275\242;\006>\201}1\274\206 G>\370\271\273\257P!\277\215Qb=m\354\254>\001\345\237>\311\212S\276\256\2347\277\231W\304=g\346\223\275H\2418\276\253R\234>\0020\232>j\301\003?\004+\n>u~\232\276\026\207\246\275..\352=5>\231=I\226\\=\027pg\276@D\355=\033\321F>;-\356=\326\021\200>\265\326&?BB\202\275\265hy\276\251\376S>\034\002\327;\000\272\234\275\256\004!\276g\024\246=\017\275Y>\251\372w=\353\307\234\276\344q\314\276v\\\370=\352JV\275\375e\325=#(y\275\260\327\246\275\035\356@\276\356D\205=\322\243\224>\300\002.?\312\020\037=\023\320m\275\210\322\346>v\345a\2753F\211<\255\203\032\276\246\344E>>y\276\276\267|_\276\333\232\261>\321 F>\367\0215\276P\302\256\276\013\362:>\240j\343\275\270\027\025\276\210\306b>=\304A>2p\342;~,\030>\245\026\216>\032tb\276\277\377\252>\333t\326\275-\027\304\276\022*\013?\257\016\020\276\376h\215>\273n|\276\275\320\263\276\261(\257;\237\346\322\276\316\207\223\274\234\003E>\010\316\213>\310\036\026>d\217\215=.M\013>\024\263{\344\275\230>!\311\310>D]e\275\250\032\313\275\031\372N=\303\276P>\350\361\276\276\353\007\235\276\364i\037=\0246\327=c\266\253>\036I|\276\004n\213>\"\212D\276\320\220\035=\016\\\227>\263\\5>}0\353\274@\252\253>\0311U\274\375\371\273=\312\231w>`U\031\276\210\234\316\275\255=5\276\377\241;\276\324\230q\275\300\0372>\013]z>\007n\316>\267\256\312>\3174\002\276\225\353\'\276HB\343=\372\"t>oV\333>\2017\342\2759\033\013?\261\317\206>dk\266>\200\242!\277\247^\265\274\202\362\001?N \235\276~i\354>\325\276\235\276\253\323\315\274\271ZO\276lG\315\276?w<>#bb\276;\r\220\273\213\035&\276\325=z\276\033\311\273=\232\270\323=\323\030\212>:4\253\275\342E\320\275Z)\276\275\232\0047>R\342\366\275\241\226:\276\177\013J\275;\"r>\350\031\n?\351\243[\275\354Q\223>\024\363\221\276\243!}\2751\303\345\276\276\274\274>\207\364\\>\"\324\261<\275%\263>\355\224\355\275x\312S=\266X\255>\232\036:\276\236\301\203>\255\256\211>\366D[>\nj{=!\nH=\022\006\\\276\311\006\335>\033d\203\2766\202\266>\330\220\271\276\313\363\005>Nh\224\276A\024W\276P\3419>E\2458\276\030O:\275\323\371t\276y\276\235>}\234\273\276\036\354\206\276\347\367\372>&<*>\205\267\357=\373\0377>\362\330\254\276\"\250\236\276x\016^>K\3569>ZE\201>\340\255\202\276Yq\214\275\216\274\016\277\000\337\353=\254\024\013\276]5\"\276UD\004\2779\251&<\335\024\362\276\0147\237\276\340N\312<\026\316\r>\246#\017>h\"\316\276\004\366C>\343\265\341=\270RC>:\272`\277\202\243\247\275f\263\241>\326\024\204=\225\n\277\276\217s\003?\006N\344\276Q\255\353\275\374h\210\276l\216\023=\024\313b\273W\215)\2760\033.\276S\272\225>\024-0>f\225\037\275\362\303\266\276\244\242\027\277\023t\341=\332\323\377=\207\372\242>3\313\200\275\275\317W=a\"6>&\244F\275\263^\302\275\243\014r\276%cX\276&]\264\276P\265?=\336\031\022\275\263\230\026>)\321\031\277(\276\235={\325\246\276*\341\030\276\255\177\237\276J\310\321\2748\200D>\3509\003\2778\\\002\276\235\023\236\276[\006*>\365\200\246\276\256G\t\276\031\333\243>#\363\201=k\357\033\274\344v\221\275\366\203q\2755B\311>\227\246\243\276\017\234\333\274\362\325\347>\222)\321\274t_\321\275\251_\200\276\006k\332=4\013\260\274r\247E\275\2678g\275\317\242s>%b}>v\365\003>\267\232<\276\231\250\000=q|\r>G\240F>~&\314\275\020/\022>P\227\356\275\304PF>\275\365{>\332\005T>\334\307\001\277\027\375\023\275O\246\310\275\005\024\215\276Y\343\031\2777\351\251>NH\217\276\007\034\003\276\024\036p\276\014[N>\340\250R\275\336\374\314=\307~g\276\237\2664\277\037K\311>\245\322\271=\342\013\354\274W\2522={\006\205\2757\261\323>\272\334\234\276\003Ej>\336\245\214\276\333p\252\276\255\263\214\275\247Xb\277\220\017_\2755Y\213\276\'\340?\276\253\220!\276\361\202\353\275>\375\263\276\251\321\225=7zt\275\275\312\263\276\354\233\037>\371\203\301=\2276\315=\360\307\343\276D\033\270=\000\263\220\275J\034\260\276\337\220\217\276lg\307>Dj\215\276_d\226\275\212\354\210\276dl\324\276e\247\n\277\237cD\276m\002\004?\365\037\031>\256\360\266>u\2300>\\\300\351\275\335JG\275\n\356\331;0\312\244>1\270^==*\336\276\325a\362\276n\241C=\327\017\234\276v\347\317\276+`\372\274\375;\332\275i\237\264\275\'\2769?\362\221\262>\264\337\246<\206tW>\215\r\004\277\207\255\321\275\007\377\336\274\355\203\272\276\267\270\270=\367\357\317>F\217\336=w\343\243\276\237\037\205=\337K/\275\315v\201?3\323*>o\375L>\206\272z>\375l|=|\216.?\376m\275=d\001\367>\206\334\r\276\330\227\310\275\202\014\255=\376^\302=1\247n\276\327\201\204\276M\324\327>\313Z\021>\241\267\220=)I\375>\343\241!\276\351\201\035>\303\364\035\2761\347z>\201\373\002\277Q\033\342\274\253\205m\276\372\2622>v\305\277>y\201\247>\343\r9\276\252\231->\357\335\036\276o\035\243>\215\377k\276U,\200>\000h\336<\001\304\251>\314\230N>\373\032\340\275\272B.>)\272:>\002\033\205>\013\222\276>\234\342\350=Z\\\t\276\366\261\205>\371;\220>\374fO>\202\203\256>\3601\336>%nm>\344\234\212={\222r\273\366%\235\275\260\337\315>>\231\372<\222\210\360\275\360,R9Z\021\221>\340\033\251>x6\036?\31751>\370CO\277\316a\357>\210hx>\357\255f>\200W\260>[\311\002<\350\355\210\276\377\377\271\276Ag_>Z\377\031?\276\261\031\276\\y\263>\027\222\302\275bI,>p\004\273>\337\335E>\336\310\241>\001\000\017?\323<\207>g\335\033>\301\317\252\276:\227 ?\031\261\354>O\376a?Gy\304\2769\342\r?|\360=>\363\321;<\330\323O>\231\010X\276\212(a\276T\242N\275\210!f\275Q\371\036\276~X\240=4\255}>\027n\000\275l\265\242>\266\245\024=c\205\202\212>h\323\006?\332LQ\275\277\276\246>\366\035\265>g\364\362\372\204\200\246\233m\273\375\312\231=\026\316:>\214\264q\275iJ\031<\344\346\275\275\240\367\217>\247\334\274>\325f\332\275\345D\016>T\257J=\321N\251>\340/\217\275j\376\341\276\351\037\375=\225\341+\275A\300\033?\005\343\202\273\241g\351<\224#\305\274\006\337\224\274,)\364\274Ml\326>\315t\003<_\232\250\274d\006\017\276bY.\276\334\271i\276.\244J=W\322\242=aJ\245\275\314*/=\250\365\013>\017\037\247=\376\204\252\275\310]\222>tr\221=\264\274L\275\204\306\021\276whZ>\304\" >24\001\275\202\036V\275\026\014\216\275x3\276>\320\320E>|\026\201=\304\352\005>v\230\020>\005(\371\276\027U[>\005.s=7\031I>`\1773>2\217n=\356[\225\2749\213\337\275F\254\270>+\222\032\275\010\333\203>\034\361\202\275\203W2>\210s\n\276\201\207\355>\366 \224\274\326\307\326>5/6\275\010\261\242\274z\3702\277E\224\203>R\3078\276\210\351\001\276\212\034\244>\210\355a\276a_]\277\223\313\014\277H\256Z>|\346\215\276\356A\016\277\332|\r\277c\313c=\033\211%\276\331cU;\365}\'>F4\213\275?\2670\276\235\370\021\276\214\243\320=\376\367k\275\300&\256\275\227.%\276|\t\243\276\345\027\025\277\234|$\276\026l\211\276\355\001\216=$6\351=m9l\276\252\271\311>\030\251%\276\003\230!\276hx\300\275\201\263\304\276\376m\322\276\372\201\374\274\361\017{\276\367\336\251\276DAf\276\344\">=\251\350\207>IW\353\276\201\321\207\276\260\244 >\305D\367\276\254\317\345\275I\231\241\276X\034\004>\332\006\240=|\310\332\274\362\363\207\276\315\030\225\276\215\312\255\275}\300~\274Tp\361>\360^\230\275\005\211\t\277\013\275\213\275\031\321\242=\266\246\224\276\007\340\241\276*\230a>O\257\232>\311\251\357\275.rF\277S\375\235\276\032j[>\204\007<\276f1\371\2765\2524>w\027T\276\031\235\240\276\270N\254\276i\276\233\275P\034\004?\262\276\237>\263>\022\2773\336\233\275\342W\270\276\302\304\275\276\304b\216\276\275C\216>pl\373\276\304\207l\276\022\277\230\276>\013Y\277N\265b\276\234\212\002\277\272\242\242\276.9.\276q\306\216\276\311y\177\275\276\354\315\276\205C>\275]\230\211=\030\232\330;\276\024D\274]$\016>\304\344\321\275 #\001>svv>\345\020c\276\203.\262\274O\007\254\276\002\343\203=\227\3270\276\240\014\217\276X\273U\342n)>P\351\216\276Pkc>\345\326\215\274\202\tM\276\013\342\200\276\r1\t\277%\205\">\223\017\216\276\261\274N\276\334\350\004\277\201{\200>9\240\322=\022!\034>\245\372X\276\353\311\302\276\0267\361\275@M\320=V4l\276\247\217\273\276\203?\307<\224]\206>6j\242\276X$\252\276\344i\357=\237\301\326>\203~\216>\301t\271\276\265\330\255=Pm{\276:[*\277ql\006=\344\336L\276\254\320\203\276\304\301\000\277\364\342\307\275)\355t\275M>\303\275\006\377\201\276\233\031\002>\022\272\032\275?Y(\275]1!?\"\035\353\275j\333^>\322\371K>\243C\335\275b=\354=\251\324;>n5\312\275\367\014\016\275c\261\025\276\334\213;\276\234\206\235\273\344\241\305=\220\337\356\276S\333\007\276,\203\323\2762\2542>3\316L>j\336\221=\227\273\r\275\277\253/\275T\321\331\2769\232\214\276V\224\373\275\320\334\261\275\037\271\356=k\332D\275u\215\267\275\014#\202=\221\205\244\276P;h\276/GK>\014\204\300>\030^#=\323\362\262\276@\021\017\276\367\336i\275\270\305\242\275\035U\217\276.2{\276\340#\201>\002\207\006\275\241\313\265={a\203\275\2230\212=\222uN>\355QI>\216t\r\276\230\370\201>\217Se=EB\226=y\025\224=.\235\231\275toK=.\274\357\276\326\275S\276\352(!>\204\243[\276\212\005\020\275\020\330%>\020\014\251>)\2755>\225*\260>\213\024Q\277\303\210J\276\363S\331\275\374\311\t>\213\265\376=\271u\321\276\006\324\320\276\004I\341\276y\371\300=\332\237\016\276n\177b\276\201t\311\276\002c\355\274\240\275\031\277yb4\275gs&\277AH\226=U\037\036>XBf\276\271\220\315\276\252\324%>\314\351L>\217-\033\274\343u>\276eP\216\276\314\306\203\276\374\327\263\275\274\002[\276^\240\331\276\257\352V\276\006/\036\276\026O\353\274p\242\020?\277h3\272f(\235\275\220>\261>\001;\210\275\243\306\032>\371\024\254\276\347\"C=m\364\235=n;\325z>2|\364\275\304\277\003?\013\207\013\277\225\237\227\275\240\254\345>>+P\276\250\325$?\243\022.\277g\225\225\276\"\263\030>\371\303$\277\361\360\203=\354\037\261\276\022\332o\275\341\213M=\\dd\275\316\004\324\275\005S\303\276@U\024\275?\272\206;\231\033\177\276^;\231\276a\337\t\276\rIC\276\206\342\330\276\252JG\276\016l\360\275\271\331H=\210Ae\276\337\375\312>\007\351\216=\032\262\270>`\371h\276\3478\217>\237#\222\276\367\271\031\276\'\337\234>\374\212*=\231\201R=\374\t\221W\266\272\275Z/w=\323\n\034>]\357\000?)\316\241>\333\231p\276\177\341\243>\347\234\221\275 \330:\276nv\236\276\355\257\001\2745[\224\275\325\274)\275G\353\324\276\344U\301\273\rF&\276j\n\036>\365\214\001\276\277:\272=\253\230\237\275\241\362\366\275#\223\216>o5\222>^KR>-\213\230>\351&\346<\330\363\035>V\307\215=b\264\010>\276q\003>\251\362\006=\nK\r\276\264\361\375=G\000D\275\342\215\303>d\325\317=\247\277\276\276\3160\242>I\302\376\276\034=\035\275Yv\314=~~\304\276W\263\246=\374\320\257\274T9W>\366\231\\=#\255J\276SKW>*\342\263<\026\274|>Ly\330\275\225\251\207>\210U^\275\303\262l>\264t\034>\273\262\262\275\342\016\265\276\030h\311=\327\022\274>\333\3464>\0025\213>Vc/>\236\213\333>\024:\r\275\240\035f\275\335\272b\276\215s^>\226\3266=e0%?\214\313\370>\321E\352>\177\006\330\276\271\332$\276\254\373<\2761\207\302\276\363S\265\276\025\t.=U\t\203>\376\"_>\336\216\n?:\3260>\210+Z=\024\317\225\276\235\220\314>\256=\240\276\376E\234\276\252\332\325>v\355Y>)/\335=\031P\355=^*L>\n\n\300\275l+\270\276$!\376\275;d\222\273\356y\265\276\305f\003>\276\324\322>\265\2449=b\027\002;Wyk>\003( \277\204\354\336\274\273\330\375;\016\305\351>\334\027\025\276_B\323\272u\037\217><\364\026?\202\345\005>\205\315D\276\2026\\\276\314\230\253\274\345D+\275+/\346\276K_\023\277\223\262\205\276Sy\014<\225+$>C\273\022>\3158\206=;\340\221>\235Rp\276\3316+\277\353\2755\274\360\342F\275;\303\306\276m\233\036\276\315E\006?\304X7\245\007\265\276\274 \362=\250\376\340\273\345,\265\243\214\243>4)\364=$\307\203\275\347\256\237\276\341\331\014\277\266\203c\276J\001\001\275\3266\232\276\313\201\301=4`\242\276\251\227a\275.\327\025;8\306Q>\256\202\330\006q+>x\004\t\276P\337g\275\367\200\204>\014D\322\275\310kn>\373VF\275g\234`?\245\211\007?\362\2278\275\215O\212\276\335%\213?\211Z\241=\330x(\276\013P\007\277 \373\205>na\001\276\233\027\231=AP\025?P\027J>\311\n\275\276\330\034S\275\213N^>\3616\257\276x)E=\210K\315\276O:\266\031\001\000=\312H4\276.\307\023\276#B}\275\242\200\017\276\323\313\351=:@\016\2775T\307\275\214?)\276\253ya=\347\337\306\276\255\230B\275\241X\352<@\237a\276\213\253\202>\017\023\352>\231\336\266\276+:M=(\354v\276oE,\276\260\'y\276!\353m\276\316\337\007>y\246\354\273\246\263\231=\201\017*\277\320n\017\276#\230\n=\257G\225>\236\355\263>h\300\r>\222!\032>r\021\003?\017\200\304>.\346`\276\331$\010\276\210\316\363\274\033xC\276\346T\007\277\373\027\326\276}\343\215\276D\300\235\276\235\023\256=\1771\005\277oD,>\010\221\217>\361m\343\2750\327W\276e(\024>+\374\243>W\307W>\337G\361>\n\017\332\275\014\265\023> \337o\274&)\360=Jz\007\275\272\353\001=c<\361\276\000\001&\275]\375*>Cc\350>\230I\317\276kn\362\275\336\247\267\276:\366\354\276\022\357\t\276\327d/\276I\331\217\276\203\237\004>\374\231\375\276(_\277\276i\225\031=\007o`>\334\207G\276\013w\026\277\"\310\334\276T\237\010>]}\004\277\360\027\346=C h>\376BX>\333d\223>e\247O>\334\240\"?}\274\325=\365\006\243\276\322\033\254\276\324!\347>U\222\236\276A.2?s*4?\305\307G\275\243\240p\275\343\030S>\025f}>\177B\212=)\036e\276K?\274=\357P\274\276\037\372\026?\265Eb\276\274\246\000?\035\263\317>\254\276\006?\277\305\202?\375\356\301\275cZ{>\232\246\203=\310\254\265=\346\226\314>\016*e>YS\245>*p\236<\265\377M\274\372Z\267>\211O=>\240\345N\276\232C\371;\221\351\006?\034!\177>\223A\000?h\311\024>;\003\247>\006\351\214=\370\023\027\276\250T\334>\302\027\372=\347\231\203>\346\352\234>\224\n\333\274\200\373o>\223D\344=&\336\275>Wi\227>GO\210=\232\357\032>^\022\'?\345+-?A(\022\276&\362\342>\010\316K=$K\245>T\372\004?6\310\347>\353\024\216\275\333\243\307\275\337\362!?\306>B\276\355\001i\276Y\226X:9!#=\377\327&?\356;\217>c[\215=\310\332\254>\014\240\206?[]\362<\'+\316=\271\227\344>\275\361\025\275\016\326p?\033<\242=@\200(?\356\227\264\276`DS>2Y\253=\304B\347>c9\340\276\362\237\\>,b\t?\376v\t?\016\377\201>\323\007:>\370#\032\277\3318I>\031\250\376\276\355\004\221\276;\010\323>VZ\256\275\021\250\352>\207V\207>\027\377\255>}Ba>\322\230V>|fY\276\275p\376\275\3407\236\276\311\277\252>\216u\300<7p\227\275\274H\">\370\255@\275\0078\021\274\243\324\031?\366R\036\276\276\343\274>~\0201>\352\0322>\243v\217\276RN\036?\342\343\271\274\222\310\034=\245\233w\274~\371u=cy\202\276\034\352\347<\226j_\2769,\023?{q\200\276\263\266\231=\232\241\224>r\220\350=\312\236:<\255\375\016\276\256`\270=\375@\243>R\020\271\276M\n\023\276\300\267\266=C$\'\275\267\3475?\360WL>\030C\262\274\323Fc>ZtO\276f_\351>\337\370\226\275/{m\276\316T\035=\235}\027>\205\232N\2750\340\330>\304\031p\275\322\235\215>QK\214=\255\370\363\275S\253\021\276\225\021v\2753\202\031>\024x_\275\225\010\275\276\225\267\201=Dm\230\276\n\217p\276\017\337\250\276M:\214\276SJ\230>\325RL?9Gi=\031,\005?\306\371\005>K\005\034\276\215\327}=\200|\037>\345FS=\356\376\253=,o;?\035\215\275\276\267\273\205>\266\257}\2762#\003\276H\3737\276aIC>@r=\276\263\243q>^:\300\276\341\272\267\276l$>\276s\272\022>_M\275\276\242\330\256\276\254Iy>\001\354\027?\243\'x>\036\003\336\275\025\322\203>OY\304\276\254\331\345\27693%\275\341\016\252\275dp\344=\013\333\276=\353\223s\276\330m\227\276\277\351\030\276G\221\231>\246\357\300\275\014N\002\275O\351\204>m\3251\275\265\313\374\275\374\231\333>A\335\247\276!\370&\277\237\347p\276\n)\265\276{`\326>\347\373\327\276\014C\347\275\355\215/>\264\0237>\003\216\035>\350u \273_x\213\276A\242\331=]\232\n>o\273$>\233.4\275\266[\355\275\332)\225\276\264:\365=\3558\004\276\227\032/\2756\365\307\275\000\023V\276g\017\356=2\3577\275\337z\334\274}v\263\275U{:>(\364\342\276\030\360\026\276\026\323\200\276\2427\205\275\250\356~\2761Y\212\276\360\327\351\275\032\343\244\275\252q\230\276\202\3165=|\206\227\275\177z\032?\002\231\227\276[_\213\276\357\370{\274g\005\306>\006\000\207\2756\322q\276\267+\315\275%\030\214\274V\030\217\275\202\351\n?*\203\006\275\014\233\n>\204\370\022\277\372\3026\276\373J\321\276\204\027\247>l\330\236=&\336C>\301\337\221<\220&W=)\241\002?~\235\300\275\212\254\335=-[1=\332\323$\277M\177\026\276e5S\275\343\321\344=\202\343\024> /\221\275\005m\017=V\t\247\275\006Q\230\374c\234\275t\341\226\275\033U\263\275?C3=\023\261\014\277U\311\n>#aw<\307\241\230\276\014}\243\276zO5\276$\277G\276\330v(<\261\210\025>fO->f\t\354\275\340\366\005\275\004\251\031>\262\347\002=[\234\001>e\3349\276:\001N>\221\256i>y\032\234\275{\213\333\275\231\022\002>\005AH>H\345\035\274\310\335\317\275\332C\274\275d\030\363\275\270/p>\342\002\300>\034\\\236\276\310.\010>\325\234k>q+\304\275{\267\314>B\004\023\277\307w\017\276U\251\347\2755\232\206\273\230>1>\253p\245<\247\006\346\342p\200\275\260\261\236\276\233\t\340\274\203I\241=\256Q\270>\266$9\275l\376\255>\001\350\373\272~\252\204\275\263k\230\275\320U\314=Y\353\354\275\311\274\021>\352\025\021\276\363\244\345\275&\260\373\276,\277\356<\016O\375\274\211\352\211>\240\374\035>O\301\006\276C\034\332\275fE\035\276\204fk\277z\213\202=\236\344\332\274[\276\242=A\271V\276\366=\235=\227\243\340>n\004\034\276K\215\341\276\340\344\t\276O`P\275A\274\350=:3\241=\222)\321\274\223\236\255>\230y\210=\001r$\2752m\253>D\r\021?\000\310\354\275\251f\377;\363_e>\365\006\266\276\002\336\025>t\334\037\276\221:\036>3\334\357>0\374\364>\355\316\215\276\225\272N\276c\256\226>\222\034\272\275TU\210>\322\272\325\276\342=\363=\253\264\334\276\367\302\032\276hd\016>Cy\256=D\t\211\275 \252\006;\017\217\034?\272\337\313\275\266M\344>\275z\037\275\250\204/>)\217\224=P\251\255>\030\201M>\215Y\026\276)\260\342>gD\246=X\367\277=\213F\246\276\2745\004?GV\266>\270\363\260\276\326\377\200>!\003\025\276wu\230>\326\305\323\276j\" ?\344\334\337>\345\344$\274r\035\334=w\024m>\205 \316\2763e\004?\037X\255>/Gp\275]\222\336\276}\270g>\217J\355=\301m\204>\243\360\243=\330C\255>\271n\277\276\007\321\254\276)>\254\275\277I\213=\237\232\240>r\237h\276\326\212\'=:\277\021\274\220D0\270\207\200\303=\003\304\024?\272\350J\276\016[>=\256.B\275\212<\366=\227\374\224\275\235{7?\330\215\200>G\204B\276R\200\200\276\350#\322>\212tI\276\277\277j>\241\360\006\276_\202\321\276\353\264\253<\270S\001>V\217\311\273\277\367\310>\001\002\226>\342\246\214;\032ik\275M\004\016>\310q>?\207\367\350>I\031g\276DAo>\305\013\260\276\245C\004=\037\027\370<\203`\230\276\037\254\213=)\316\345=c\326=\276e\320\202>xb\231>\356g\264>\310\210\231=\272\005\223\2765\362%\276Z~\352>j\202\304=\367\013\342>XJ\323\273G\310\223\276^\240\023\276\300i&\2757b\261>\240\010\033>=\264\013>\032bF>\321h\362>Y\226]\276A\t%\276\024\217\225\276\004\316~\275\314!\232\273\022\002\014>\373\204\013>\361\317\021\275O\357U\276#d@>\201\220\217\276xab\276\214\370\206>\314\207\'>\256=\200=GX-?\013\363Z>Y2\301\275M\033\006\276!\261\005?nXe\276\2201\032\276\370X&\277#\235\233\276P\376W\274\317\316\316\275\262u\313>7V\025\274&k\223\274|\376K>\322\371\317\274j\377\001>\225\342\224>\005\237I=\236 \306\275\307\333&>\'\343\212>\232\302\301\276I\351\211\276g\262\023=r\311\261=n\361\274>\226C%\275\337\203\216>P\233\031\276\304\261\232\276\336\323D\274\212\255 >\177\262|<\374\376\017\276\363\356*>M1\211\254\301\323\275B\235\001\276\265n\223\275\256dS\275j\365Q?]\260\270>\021M[?\273\266\213\276O-g\276a!\002?\272\246\362\275\031\374\253=\010=\235>-\031+\275S\344\301\276Z\221\352=\032)\n?\324Iq\276\025\356\203\276\262\376\211\275\345\r\206\274r\254\301\275.^/?\211\220\371>\020\210Y>\"U\022>\253\232S>&\024\241>\202)\254>mc\375=vjg\276\205\302g\2766\265\334\276\202kp>\3237\213\275.OO>\002\304\314\273\342Ny=O2\020\276\222\310\276>\\\000\t\276\274\360m\276\371\242(;G\247Q>\251e\377>\010\374\330>L\377f\276n*&?jG\022?\367\270\222>\361\346\203>\326\226\311\275\217M\333>\262\345w=\340T\005\276\321\303\302\274cj\230\275\027$K?)\033\243<\307\265\254\276\361\234\365=1#\361\276\236\331\310\276E\033\270\276\3504\336=\177\375\223>e\337\236<\031\233\014=\367\022\345=\231}\346\275\321q\371>\304B0>I\366/=k\214\'=Z\260+\275\007t/>]\030;\276\201\270c>\244V\375\276\331~r\275\023\227\027\275\236\'\264\276\006B\257>y\262\274\276b\324\264;\216C!>@\016\213\275\364\021\334=Q\364\230>\214\266R>p\274\342=\024\204\375=8\250\220<\205\021\025\276\312\313m>\260\237\r?u\252\206<\016\034;>\325\277q=\260\345\250\2760\\8\276\304\"\315\276\004\007\351>)P\244<@\264\214>0 \265=fWF=#\224\343=D\313>>\257\014\251>\023\267\334\276\016!\204\276\205B\212\276\353\273i\276\020\013\202>\026Z\210> \202\305\275\211X7>H\223\035>:\326`\275\001>\274\274\212\026\254\275IHa\275\307\353N=/=y\276\303,\342>9V\004\277\027K\030>\246\263\256>#\354d\276,>\010\276\331\000\252>>\213\224>\021\026\336>y\326o\276\330HL=\035\354\251=R\253\025\277\237B&\276\371\033\321>\031\247\004>\365\300\314\276\267\214\232>\364\006\245>B\303\016\276U\351\302\276\273\335;>\215\n`>G.!=\260\274\317\274\347\241>\240\325]>)\376\021\276\234\254\253>\010\013\240\275c&\013\276\336\n\321=\244Q\016>8\245%>jy\033>\317f\n>\312\336\331>a\323\337\275\343\315|=4\371\342>\3750\257=\221\020\021\277\024JT=\211B\272=\013\266\200\275\036\243\242=\235^\013>C\nJ=@4m>\241\360\313>\307\267\327=~]\031\276r\353\355\274]p\013?\037BW=|`\311\274\177\374\302\275\305\373\271>\254\206G=\n?\030\276\273Y\020\2766\2075>m\376\235>\363\032\212\276\302n\243>\007!\006>\237\351]>\257\222a\276s;6=\025\0218\273@H\243\276\023\376\3758\256\214\274\276`\"\034<\242\020\277>\244Nv>\376\313\035>f\301p>\022\311q=\034\207\213<\023n\316\276fj\257>\272\326\344\275\254\262#>\213\260\366\273\336\336\036\276k-\361\275S\177+\277#4B=^=\313>\027\310\365=\0276\213\276\216\334,>\202\320B\276m\251c\276z\022\025\277rL=\275\255\262\364\275\235w\262>+\242\325>]F\262\276v\021\213\276\206\352\336<\341\314\303>\374\0204\276\330\350\034\275\037\002\343\276 ,t>4\022\317\276\206\006\032\277\005\253\346\275\003 \007\277B\333\013\276\363\206n\276>Z\266\275\024}\312\276\372\004f\276\216G+=R2\036\276\037vB\276\'\240\357\276me`>O\316\245\276\272\201\250>e\275\250\276Pk\340;\210w\306\274\277~\003>\021pv>\347>\253<\207\246\362>\235\256\223>\341\365\264\275\325\367#\277E\252\332=\201J\333\276\004\310\204\277\036\274.>D \233\276\237\016\267\275\346i\213\276\341Ac\275In\207\276\361%\000\275DZ\025\2773\344\375<\374\035\224\2760\n0\276\036X\327\275\027)\224\276\363H\261\276\361\223\224\276\302\227\374>\0229\260=\302fG\276\306\337\013\277-\252\201=\324\033\255\276\307\366\375\275/\031\001\277\024\274\017?\317\377\237\275.\021\374=\331b\345;6\345\203>z\010\242>vQ\256\275\211\326\362\275\032f\370\275:hw>s\323\267=W@9\276\262\217\341\276\202\374=\275\302\304\224\276\025\247\026\276V7\240\275Q\370\347;\304#f\276Hpa\275\224\247\005<\327\315\n\277\273\303\202\275{\366\022\277\013\266\373=v\2439>\360{\230\276h}&>\325\345.=!\341$\276\201\016\270>\222\010\312\275\366\223j>\350\256\262=D\305n\276\361\343{\276\035\271\361\275\332\204O\276\266`\322>\2432\203\276u\017S\276\216\007?>\001\207\340=\261[\237=\017\270_\276\027\324S>X?C\277\260!\271\275s\215H\275\3702\307=\326\240\246;\301+\335>\tl9\277\326;\276\275\334\304/\2769\364\365=B\227\366\276\257\207\300\275\025\370\000\276\366\374\375\276\313\274\364\275\243\363\210\275\031|\367\273\233\265\024\277<\304\250\276{B\311\276\333d\311>+i\237=\274\261\004\276ugP<1:%>\330\3037>\025v@>\336\256\353=u\257\021<\353\310t\275+r\332\275B\022\246\276\257<\316\276133?\323\220\215\273\216\002\326\276\035\361&\277\222X\216\276\324Z\n\277I\010>\276\202\342\223>=\252\225>M\312\277\276\'--\276\354\371q\272d(\274\276\220i\242>\376\022j\2768.\"\276\311\372\002\275S|\217\275\356\2238\276\206\014T\276\033.\353<\000\213\007\276]\347\305\275ap\367\275k44\277\243\323\031\277*\027\004\276\325\300\004\277\302\234\020\277,\016\327\276P\271\031\277\326)\261\2769\305\202\276x\366\277\276\346\260d\276\224\313\205\276>\007\202\2766=\247\276\340\027\000\276j\330\336\276\326,-\2753P\221\275\220\344\221\276\254\271\025\277\266\026\260\276\216\240@\276\221\240\222>\345P\323\276\367M\001\276\353\230E\276\036\345\222\276\233[\225>9m\314\276\353\333A\275]I\310\276+c\346\276h{\216\276\326<&\277\247?\033\277\253\321\017>G&\025\277\255j\000\277\300\017\301\276Q\205T\276\250\375\205\276c7f>\"\337\303\276\316\355h\276\2142\372\276\270\324\204\276#$\200\275\214\215\364\276\352\257!\277\366\004\256=L\203\275\276\316\n\355\276\270\327\004\277\337j\205\276\330\373\373\276\206i\303\276\316\342\330\276p\3647\277\341\275\244\275\222C\n\277g\013\336\276\032\355\025\277\225XF\276\314\271\350>\347A\330\276\022G\323\274\312U\231\276\311\360\221\276&\327\312\276\301dD\276\273\031\206>^\347\"\277P^\033\276;&\343\276(\301\204\276+\025-\277\356\345\342=\025\034\267\276*\321\304\276\222-\r=3\217\213\276G\236Y\277\251^o\276\234\214\321\275fx\361\276\r)\315\276\n\361\016\277\250\3610\276H%G\273\254s\361\2765}A\277\010\037\016>Hs\003?\361C+\276\364\307^=\017\007\332;*%l\276[p\356\276#b\225=\360\245\'\275t\343\230\276:m\244\276\352\2725\276\302,\344\275d\267\367\276\035\254\t\276_z\232\2758~\272\276%\2023\275\346\267\360\276\267\321O>#\244\343\276\3007e\276\352g;\275L\361\300<\n\307G\277q\033\211\276\356\240\225>\330S\272\275\005\222B=O\313\301>\253>\270\275e\\\357>\017\374\345\276\\\237\365\275\017\273\017\276>;T\275\025\205c>\351e\254\276\203 D\276<\341\005\276bR\265=\240\007[>\226\025\"=\347h\t>oD\216\276\027\217\022\276\223M\021\276O\224\242=\345\030\030>\230j\\\274\032\306 \277(t\362>\034\236v\276 \321\002\277i$\354\276\231\340\000>\313\"\256\276o;&\277\352\327m\276\371?\377=\244\005.>\274l]\277\263\336\213>\221(\033\277b\003L?\253x1?\277?\314\275\002\336\336\276p\322\232>\315\322\364\275\0371 \277o\025\r\277\030\375\245\276\241Gc>>\016\220\276~:\227\275\\-C\276\241+\265\274i5\324\276\313e\255\276\027\340\016\277\233\256H\276E\215k\276o\362\227\276\214\261\010?\327\233\364\276vs\031>\203\244\312\276\2544\247>l\310s\276;\320\240>\354\351\263=x\256\032\276\223\242\006\277\003\344\030\276\373\306b=+d\305>\233\370B>kY\255\275\244^\021\276=dO=\277n\244>Sq8>z\361\210\275\240\332H>\266\030\002\276G8\352>\002\002\257\274\305\343\007>\'\260X=\323\240\277\276\360^p\276\035\332\372>$\373\306\276u\313\005>\327Q\246>jR\313<\227\000\026\276\213\365\004\276tZI\273iLU\275\260h\013\273\013\351\271\276\231s\320\276lr\216=72\016>\233D\004?\211EH\276%\307\232\276\223\010\337\274\203Xt\274\357w\231\276h\333}>\017];\277\260\336\213>\311b\203\276\t\252\260>\225+C>\313\007\026\274\310\020f\276\034\344\226=\352t1>w\236\005\277\271\267.\276\215\016\326=\244\200\017\277\356\310\346\275 \300\316\276\317\006\214>\353\324X\276|@\224\276\016-\220\276c\2015\275P/\212>W\224\260=\235t\275\276\271\360\007\276O\373\241\276\366\014U?\t\272\203\276\263%\031\276\336H\203?\351\007\334=\376\354\246=\240\315\353=81\316\276\")\007\275\304G\264<\r,\3323:`\274\231\310\014>\320\361\301=}@\253>O\311\322>a\321\231>\352`\364\275\314c~=,\342\224\276Y\220\325\276\033\354\006\277^\013l;\345\257\342\276\244\300\251>y\351\335>XD\014\276)\236\002?e\241\031>\213\204\373\276KR\374\276\327Go\276\2066\220\275a\3028\276\252\035\241\276\242b\347\273tR\374<\3059(\275\365\035\317\276\271\210E\274o\031\311\276v\252|\27623Q;-\031\223\276LG\232\276\277\242\315>\020\027\303\276`[\246\275\3644\233>\216\371K\276\222\277Q\275 \254\213\275\231)\346\275\225t\253>S]C>G0\253\275\202\221\032>,\035^>7\352\333\275\235\014\323>\\\351\250>\226U\243>~\355\264\275\216\277\340\272\370\344\235=O\325Y>\362\204\337\275\232\244\330\274\363 \256\276\222\024\233\276\333\3131\275>c\265\274b\224\321\275\266\037\320\275\376\243\221\276\357\253\263>JG\375\273F)<>\260\263\021\276Y\374\247\276\364\375@=\013\272Z=\235\337\346\276\250\217\006=\201\016\035>\205mg\276V\361)>\221)#\277\026\220s>\016t >\272l\037\276b#B\276\r\241C\275\305\365\206<4<\217>v\235\030>[\210\252\276\326\'\310=c\357\277>\255\313\306>\233H\213\276\013\213e<\']\377\274`\025\003\272\355\3468\276\002N\220>\306\266t>F\216\235=\344\311\353\275\307\022\310=S^Q=\333}\225\276\256\331?\276\320\364\204\276\243^\363\276\244\257\217\275s\017\023>\205 \212\276\022\260\201>\332#T>\246\361\237\275\364\256\351\275\350\274\220<*77\275\\\343\317<\231pM\276\270\211\205>\347\324\007\277k#\264\274\311\326\">+\306Y>tO\274>\332\262\034\276P\347z\276J\337\274\276t\253\226\276Ik\220\275\022Q\206=v\320\271\274\036\312\002\277\025?\232>K\032\232>\213\201\200>\345\240\231\274(\003\342>r\362\000\276\254\216@\277\017\200\262\276\305=\020>\257\361\240\276g4\221=]\301!>\217\203Q\276 -\'\2771\235s\275\r\273 >z\262\237\275LV\n\276ze\251\276\035_\022?v\027\310>\341\363\366>\362\020\207>\316\036\231\276r\311\230\276p\t\313\276n\271\245\276\270\261\217\276\223\337\234>\273\342:\276\324?@>\314\341\237<\"\321\370\275\237/L>I\316\324>\037N\254\275 r\302\275`\336\316\276D\336\211\276\023a_\276\216`\225\272\216^\315>\375B\300>\322\225\025\276P\246\362\275\312\213\246\276h\331\'\276\334\325\340=\314\244\026\276\002!\206\276\236\031m\276C\225\211>C\321\244=\211\361-\276\363\267\236=\237xR>\030\312+>\252\036{\275-\013\001?\354\206\203\276\037D\242\276\231\3766\276\360\370\224\275\2177q\274l\211%>\337\354\337\275n?H\276,z\241\276\272\207\000\277q\265=\276\302\347\345\275\300\002\253\275\226\010\236\276(a\366;\331\236\216\275\345\026\361\275\305\340a\273\357*\211\276\036U\317\276)M\261\275\263e\234\275\035\276t\264\266i>W\272\233=r\2362\276>\306I\276y\207w>\376\266\312\273\306:\223>R\256\031\276\337&\266\276\330,\031>~\376_>\364\215l>5~\275>K:\000=\223)\000>s\244\034\276^\005\317\274\005\310R> k\374\274l\271\263\275\031\302u\276\355\t\033\274{\2600\276\257&\267\276Qwa>\272,\234\276\314m\356=x1\325<\375\244\254\273\365\250\206\276;\217\233<\316\256\317\2752\341\237\276\344i\213\276\310\264\321\275\017?\325>Y\3528>\313H\3539\350\312V>\223Y\335\276g9#<\3113\t\276\0334\205>I\237\230=\224\271\033\274\354ZV=L\353\214>A/p>z?\013>u\335\344=)\024\306\276\346 \267>V\270\203>\326B\200\276gZA\276\233\2540=\337\270\213>\331\304\211>\202B\256=$|\023\2766Vm>\250\272\272>\343\321\032\276\246@\360D\320\023>\027!\267=x\324\231\2762z\253=\t\275\005\275=\351\n>\314\026\234\275\226\230\373=Y\356\275\2759O\210\276\351\356\333\276\206\343\n?_\320\200=\302&\327\275\343\254\001>\274\357p<\217-\235\275\314\323\312\274\211\"B>\203\310k>\261\351X\276\r(a\276z\205\305=\t\234\204<\256vQ\276m\337\005?\230\320+\275r\005\016?\2027d>\374X\217>\355\236\003?1\303\265\275\2215\007?8P\213>*\220\346>\223\350\341>\207xX>7\356\250=&a\223=Y\377^>\355\'\376=\354\330-?\210\177\352\274\347\017\341>A\332\213>\253&\036?t\343\013<\360\237,?ccj>_\352\360>\306\007H?\311b,>\337\026\227>\236\033\345>\313w\003\277\3108\025?X0\230=\203\r*=F\276\027?\312\034\000>\017\377\023>}\253p>[;\324\272\003\335\317>\370\302e\273\351\240\247> \371\227>+\037\341\275u\034\027??\006@?\236\341D?\273\233\242>\361\217u\276\007\273\304>\324\363\n>\370\224\351;\267\242\240=\305\002\340>\241\216\021\276\\\3002?\240Mv\276\377~n?#\247\025?\215/\343>\341\262\310>\363\223+?\322\303\010\277\351N\'=\315\316u\276\314\307W?\311L\312>\027\245.>\224\313a>k\244F\276m%\323\274\317\374\351\276\360\345\360>2\\\376>\026\367\334\274\251\305\260\276\233*{?t\352\302=\033\256\345\274\235&*>\231\211\337=\260\027#\276\240My\274\213\311\241>\275\3135>\r\013\373\276(\030Z?H\227\251>w\307\214>\000\233\001\275\253\363\360>\301j ?B\356\006>\n\361\331>\313\351\325\276\024\021\016>\372\'\342>\374O-\277\330\310\027\277MFA>\355E(\276\311=\274>*\025\226>\035\211\030\275\\\035\215>\202\006\226>\202\000*=\341\320\205>(@a>\257\275L>\027@\357\276\030j\201>A\212\306=\242(\245\275s\267^\276\307=\367>T\305\032\276u\272\362=\307yj>Y\t,?zD\241=\235\202\374>\367}\032>\342\213h\277\035s\360>\364\006%\277\002\372F\277\310Z`>\340()>\251\374\240\2757\337T>\327\254\241>\006E\030>\333\332\333\276ve\034\276v\372+\2769\375)>T\370:>\345c\024\275o\004\352=\342!\026\273\212\037\354<\364\031\252>>h\005?cT\353\275\232\021\373=\302\363\r\275\001\320\002>Pg\324\275\242\"\246>\036\367s\275\033\253\037?\214\334\002?_4\307>D\313\212\275\272\352\220\276\034\341\013\277\035$\\\276(\227\203=\201I\267>N\306\215>\021\352\371\276\213\234\323\276\210\214\252>%;\024?\324\022\253\276\272Rr\276b,a?\327\312\342<\367\365U?\276d\276\275\351\3504=k\237o\275\340\2036<\335\n\326=\373w\021?_5\n>h\340\355=\221lg\2749\356\031?r\375e>\242\006)\277Nm\243>\n\326:?\000r`\276\227/}\275\344\032\016?\371\272\302\276\331\215\372\276O\037\323>\250\037/>\2114\037\276\0175/>\267C{=\220SD\276\214n\010\273Q\312+>\222\034\204>\344\030\220<\033\001\213\276V\323>\274\305\353c;\331<\251>.\241\267>\255\034\316\275DF\245\275\342\267\372\276\210@\'=\376;\214\276\243<\n=\027\276\036\276\027b\220\276lJ\360>1N\224\274\377\332B>\206c4>\024\312&\276\013]\263>d5\223>1\345\214>\330\360\224\276\276\3270>\020-;>U\342\202=\037\244;?\262\347\207>R]\350\276\033\344\016>P4\351=\234\371\343>\204\021\354\275\343\246\257>\374\006\320>c\311\352=\310\346\314\275\360\240\363=\266\203u>\361d\261<\314K >r7\274>\273fN\276\013\213\217>\202\313\310>\265\013\340=K\035\000?\312\344\343\275\260\306|=\037,3?\342\207\241\276\367\240(>\222P\036\277\'\337\232>b\004\317\275$rI\275\022\302E>\310\346\016\276\377\361\326>\000\026\331:\'\301\353\275\356\244\304=\377V\224>\377%\035>\277l\305>\225\335\r=\256\272f\275\276\306\331>\310 S\275\222\345\235>i?O>\211g\007\276\355\370\255>mb\257\276\003Jx\274\316M\223>s\371&\276\200Q\026?\356I\005\275P\234\363\276\026\216\345=\273\2660\275\201/\241=\030\312o\275\355\315H>\007\373\262\276b\025z\275&\014 >\253Y\304\275\010h\n\276_>\177>2\254b\365\274\344\354M>s\224\201>\323\376\232\276\223\337\325=\377\t\236\273\215\206+>\227\271\327\275@\347u\275\010\333C>.@\364\275\265\351\003\2760\263\030>h\037L\273\\\203\312\275\022\210\n\275/D\001\276\216\201\201><\214=\276s\321U=\n\274\034>\267\254.>\233T\027\275\314\223\232>\332\014K>\354\006\374;q\226Y>\310\302N\272\204P\375=\016\370a\276\2257\201\276+\236\236\276\247\334~\274#F\014=\1772\313\276zX\'>\030)\031>\337\021.>G\306\257=\0314\325=m]#\276K)\272=\216\002,>R\277%>r\003N>\274\367\230\273E:\'\276\375\030\334=\016,\346\275\274T\200>j\267\202\276\n5\"\276\230\332\263>\330Y\221;r\264I\275\261r\232>`h\267==|\206\276-\004`>ID\244\276!\230&\276\220\212\360\274\001]\006\276\233\321\255=\004\226\236>\352\024n>B\314\345\276\217\247\023>\314l\364\276FgW\276\324\275\004>7U@\275\000\245C=\017\260R\276\370\222\256>\235\n\010\276tP\265\276\\ma>\345U0\276\030\201\025>\325\341\320>\272%\226>\033yq>;\006\340\275r\027\346=2\245\324\2750\206-\274\343\033%>\2634\370\275\0249\201\276#e\363\274K\263R=\303\200\233\275\376\272\'\274\251hv\276\n\271\\\275\372\274\207>\016\311\322<*\236\307>\231\017}\276\345\252\225\275\255\343U>\220Tt<\344\361\202\276F\316y>t.\245\275\01626=\031\t#\276R\"\035<\324|]\276D\226\317=9\226\244\276v&\017=\230\357\361\275\315\375\276\276\t*\344>~\222\274\276\203\204\n\277\234\366\344\275P\0215<:\321\002\276\242\301{>\350\235\250>|\310\347\275X\210\221=\233\274\212\276^\244W>\307V\261\276\242\375\242\2761\367\303\276\317yB\275a=L=\366X\240\276\365-\204\276&\242\324\274d\340a\277~\'\240\276\033`\255\276KK\302\275S\340\304>\356h]\275n|\336<\013\316\013\276\261\307\270=\352\024\n\275\350\323\004>\315-\246=2\227\226>^\371N\277H\235\362\276\305\365\305\276\'\220\324>\270\376\203>\343\206\304>\335I\265\276\244\331\321\276I\335c>\264\215\026?q^M>\257\t,\276\260@1?K\035.>\237p\264=3\340\021\276G\227\020?\262\353\362<\235\250$>\364\326@>\037\2009\276\347\367\237\276\245\243$>&df\277\235\261O>h\252\337\275&\031{\276N\373\210>\001\302\222>\010\003\334=\232\273\271>\363\242\230>^\025\323\275\300\004[==\320\014\276R\023.\275-\334B\2767Us\276\343\231Q\276(\223\274=d\026\222>\201\036\304>\255=\023\275S9f\274 \304\031\276\261\343\236>Km\330\275\251\2218\276\271v\300>?\330\217\274\013\265{\274\222R\303\276\276\201\226\276\315n\307\2761u\000\275x\313\273=a\326\233>_\016\023\276\276\342\341=\257C\216\2763\272\336=\243\335\205\275\331\030Y\274iN\273>\254F\202\276,|\">c\023\344\274\204Ji\276\251\212\230\276\343eT>U\016\376\275\0207\004>\302\333~=qG\245\002O\337\274\211\030\261>`c\327=j\013\026\275\263\352\336\275\005[\037>\270\352)>\377J`\276E\3165\275\3646\216>\335\036\314\276\226\271\235=\242\242 >I8;>\250\331P\276U\277\355\275<\227\031>|\341N\276\250\203\265=\001]P\275\022\036I>\345\033\010>+F\237><\375\017>\323\367\223\274%\037\205\276]\177\036\276\np\271\2759\014\346\275(\367\264\276\203\362\273\275\333n->\202t\253=\200|m=\314\314\216>X\033\245\276\242\304Q>\347\312\361=Ayi\276\324\207\037=\032\322\323>mi\265\274*\203\030=-\0036\276\253\245\327>\346JC\276\204\343\001=\207\215\001=\246\275p>\264\205\032\276\370\035p=\245\324\005\275\\\210\265\275?@\002\276PPv=n\320\223>\263\264N<\276w\241\276\317\350$<\341\354x\2767\344\274\276M\311\241\276\024z\256\275\361Y\271<\270~\201\276\371\262\274\275V\n\332\276\031`r=23a\277<\365\360\276F\3653\276\335\352\236\276\333R\200\276\375c\341\2768V\322\276\276f\022\276u\364\361>\352\202\203\276\246\265\177\276\'\312F>X\206\205\276.~\307\276\371\251W>\212\030\212>\227m(\2779\332\354\275\303J\013=r\317i\276\304=\204\276\274\023$\277T\027\006?\234~Y\2757_C\276\337?q\276\346p\304<\205;n\276P/c\276Y\362w>\250\034\034\277]\372\210\277+\267\303\275\206\250\233\275\330\032\027\277x\344\225\276\333M\334>\372gD\276-V\266\276m?\202>\016\367\322\276V<\245\276ef\200\276\010\244\236\276\260\315\201\276\214\276\031\277`\275\346\276q\344\241\276\224\324\267\276\026K\264\2760x\215\276D=\245<\277\204o\276I\257P\274#\326\213\276RP\312\276\324\353Y\276X%\372\275\245\332\303\276\214m\300\276\332\367X\276-\326\202\276\002r\252>\240\223\344\276\254S\261>\246\343\365\275\366\330\256>\202\2140\277h\311A=\311(\200\276\330\250\317>\350\366\211=Q7\356\275\033a\271\276\305#\033\273\234\237\003>MO+\277\017\n?\276\336su\275\220g\263\276\353\302\273\276U\207\325\276\201\"\320\275q\275V\276\262&\252=\250\\+\277\341\031V\276\t\020\025\276\331o\231\276\332\236r\276\276\245;\275\340Z\017\276\307u\233\275\221&1\276\376j:\277\316\270\026\277-\352^\276\301/\204=\033n\210\276\202\334\351\276\252\321\025\277\211\3673=\3126P>\325\313B>c\032\314=\215\345\023\276\214\221\036>\320\022\226\276q\214\325\276\372qr=\267\021A\276\003i\375\275H\206#\275Z4\200\276\325I\006\275\355\330\025\277R\302]>\360-\027\276\300\257x\276\335\335\034?WA}\275\331\307\036\276\2454U\276\214\275\226\276Uq\342\275&\226_=\266\036\334\276.\022\r\276\366\256\231=\271\027\227\276,\343^\276\202\340\032\276\214\230\333\275\271\317\004\275\236\246\227\274\372\354\203\276\026\327\217\276I\267\271\274U\215\367=\205\367\023=\376\332\326\276\275Yb\277\267\374\214\2766\244\252\276\215\253k\276CH\271=p\327\231=5c\252\276\244m\246\276aLV\276e\224\346=\215\005\023>\000\350+\276-\030\236\276\362\023\336;b\203\352>\232%\343<\251\301\235=\356\364\254\273\031\274\225\276$C\022\275\214\347\301>\027\323\306=\315\273v=\242\005#\276zZ\221\276\271!\321<\2461A>\251\335E;#\2536\276\003\020\270\276U\353\036\277\030g\225\276\206\'\360\276\035\024`\276}\362\206\276\343\035/>\303\037\324\276\312\335x\276\252\261[>\021o\023=f\223\272\276x\355\353\276\353\271\366\276\n\321u>\232\007\026\276\214\311\227>Q,\212\275\331^~>\265:n\276\342u\326;\274\211\347=LN\220>\253{v=f\276\227\275\361H\004>\271n\036\275\357\0041>^\203\347>U\342\222\275V\236s\275\342\223\\\276\'q\213\275\305c\276>u\340\270=\233ik>P\200j\276\362\327\r?\020\224\204>\255yS\275\371\031h\276\301>w\275\375\302\353\275\"\374\260\276\230\344t\276A\315%=\345\213\245\275\241\330\322> y|\356?\000=Na\217>\r\361m\275v\257\016\276\223\250H?\323\033\202\276u]A>\025\225W\276:\235[>\303w\226>\207\014\261>/\334\231\274\244ca\276&\261\320\276r`\355=7l\224\273p\201\303=b\223\257>\326\250\324>Z\253\376\2752\013\307>IS\026>x\377\031\276\235\234:\276Ea\014?\324Q$\276\023\266\201>\300\"g\276\354\001\240=P\322)\276H\267\211>\244v\205\276\206\364\260\276\221D\262>\314\214f>N\331\276;\303\311\037>b\330M\277\344\214\n\277\237\320\262>\314\253\212>\200\316\307>\226\215\241>b\330\214=\026\222\221>\254l\316<\346#\226=\362o\266=R\340\315>\316\032\313=\003\037\323>\034\234\272>l\214\262>\317\ty>\341\004\314=(\317\302\276\032\0007\276\267\327\265=\231\001\202\275\361\204p\2752\257\214>\365\275}>\351qI\276\355\255\230<\325\344!>ynW\276)M\003=w\211\230\276\340\241g<\357W\347\275\354\312$\276\225\177\211>&j0<\266\017\273>\323\340\321=\272\322G\276\223Z\307>\346J\365<*g\376=\206u\346=\244\337*>\031\303\323\006\2768\276Y%\247=P\271\343=\027\220H\276\312\255\365\274}\315\306\2749Xw>O\232\210>\0036\307=\305\036*\275\301m\234=l\202\300\275p\377\302>d\016\374\275\360t\303\276\217T\232\276\334w\236=\203D\004=h\274\037\276&\222\230\276)\352\026\274\326E\256;\312\017\023\276\244$I=\315V\255\275\002dI>\257+\356\275:\303\311=\312\243\232=#S\304=\203\270\231\276\364\347<=\366~\344\276L\370e;t\202\035=\243\326\225\276/\360\345\275EvX<\002\027\232\276\210\212\220\275\343C-\276\326\033\214\275o\214X\276\350\370U>\333R\001=\310\035\352>\236\224\366\275\016\257\034\274Vw\252\276\n\020\254\275\232\200\302\275\350A(>5\373\272<\317[;>\340n\262\276Y>\216=>\277\000?L\006n;\023T\316\275\205|\227>t9]\276\217\3437\276v\303\031>i:\200\275\223Z\271\275\202\324\225>^\007\201\275m\205\310=\004x\273=l\202\333>\367:\023\276+k\217\276\275.\237\276\232\t\275<\371 \013>\\\016\257\276\022\272\265\276A\002K>\237D\310=B\221\222\276v7#=\262\356h=C\210!\275?;\017>L\263\025\275\326\260\321>\003D#\277\003\020B\276\346\004\302\276\255\241\375\276\252\224Q>.T\352>\276;6?/\272\227\2756q\332=Tf\327>qRD>\233\226y>|\347k\276\333k~>O\375\367>\3302/\275\375\243\273=\332\237\265>]\213>\276?4}>W\200\200\276_\275\177\276D\3625>\251\252\032\276\307\251\321<\315`\310>T\246]>\003\317\245\275\246\312\257\276d\357B>,2\354>e\321Q\275\227\333\026==D\334>\231m\327\275\202\332\003\277\367\026\023\276\277\001\237=\256l\367\273\304\232\276\324\321\001\277\353\233\025>\re\014\276{\026\266\276qZ\313>\216\023<\277\206\242\346>\365p\321>3P\255=\375l\251>\304\302\221\276\334\362\237\276\310\220E\273\223\327\253=\213\270\243>\277\215\225\276\346e\014>\304\357V>(!N<\3678q>\035\340\301=\035-\342>\277z[\274\020\003X>\243\222\037\275\003\314\200\276\367\000K\275\260U\032\276\027q<\2767\r\200>\277!\240\276]\261w=Ef\231\274<\016\330=>[\310\276\\\325\242>T\366\261\275C\035\343=\177\"S=\331\210\224\276fv\"=w\261\033\275\031\211\201=p\027\236>\032\377(\274\"\367\201\276k\230\264<\317\270~\276\"\317\005=\245\276\236\275\003\312\300=G\253a>7m\030\274H\357c>7\332\032=\300T\022\276\303\276\273\2767\340y\276\031\026\367>3\335\371\275\n{\325\275\257\324r\275\367J\224\276\370\261\036>/\273K>\361\230\306\276y1U>\372\261a\276\016\341\243>8s\204>]\325\340=\326%\000=6_\226=d\245\\>;0\022\277\220M\260=6\275\r>\354\225\016>D\206t>\302\371p>\251mq>\325\224\007?r\321_\276\025J+>\274K4>\361;z<\351\247\313\274\355\346\035>\rH3>L\300~\276!7\366>\nd\246\276HVZ>}\313\275=F\333\032>\'\301Y\276M\277\206\275\252\267\372=g\373\205\276\313\032\310\273\274CH\276\027\350\267\276\3325\354>l_\014\276<\"\347\276\246\341?=m\032\306\276o\371\305\276mR\256\276\026\275\374\274\3331y>\224\361\324=\205,\204\275\373\005\'>\353\301\247>\312d\236\275\240\371\227>\035\307\325\276P:\230\276\374\213\206\276\223e\235\276\227\242\246>a\202\325=\"Pi>\021\274\242\275lA\274>w\212\030\275\212\266\245>,\336P><6\004\275\203\221\014\276\340:\270\275;\257\242>dc,F/>\303\250\002\277\330:\345=\213\330\317=b\232\215>\3249&\275\022\320\301>\327\247\206>\270f\311>}\215%\276\013\254\000>7?%>62\315\276}\216\335>\025\242o>]\310F?\035k@?\232p\000\276\337p\270=\304[\331\275\3210\321>\331)\304\275M\367\003>\221s\237>Lh\214\274,o\237>\273\202\310=d\321\010\275\232\251\004\2761\'\310>\202|\230>D\217T\274\333W7>\277\342p>\301\256\311;m\350\326=\331q~=|\3667\276\345\350\242>k\307\257\275D\343\300>o\022}>\002\227\010?uu=?q)t>\036\323\204>g\212\365>P\017\240>CI\331\272\327\375\333>\230\343\215=1X\274=\000\301\037\275\232e\323>\027\303\242>\234\253\004\275!\263\217\276\246\324\026?\217\256O>\336\025\341>G\3132>\335\035\241>f\004G?\210\357\206\276\271\242a<\312\034\305\224\010\017;\300\276\351<\367\360\320>\213\376\177=#\037U\273\240\315\361>\257t\005?\006C\r?\203\303L>\324\034\264>\001\256H=\357\r\354=+\220P>@n\355>NZ\006?HW8>zo\331>\202\373\303<{\023\224>m\356\247\275\355f\310\275\326\035q\276\334] ?\037\200\272\273-v\200\275\273\236#<(\030\311\275\306C\035>>\347)>n\3427\274(\242K>\210(\\>\356 \213>\324\025\266>\203\216]\276e\310\252>\337$\231\276\2512\352=\225\205F>\255\r\333=,\023Y>\376\347T\276\351w =\350\227\245>\304LE>X6j>\264\345\214/\320\300\276,\313\035?\030M\240\276\327\371\024=7\r2\276&\000\303\276u\023\252\276\t\342\202\275\263\tV>m\031\030?WkT<\200F\333\274p,Q=>H\r\276[\0304>\'\330\006=\344dI>\226\356H=\207*\252\274\245\033\224>,\321d\276\217gC>\255\265\235>\225\205n>\276\254e\276\270\356\024>\340\201H\276\225r\252>\375_\326\275eL\243\274S&\000>j\023\200>|\035\203<\222\217\017\276\331Tf\275\354b\227\276/2\312>\351\203\224\275\312Rd\275\036\001Z>\0066T\275\006\234\324=\261Sr\275\002d\206\276Z\261\212\273t\020\026>%\226\305=\220<(>\265,\344=A\372.\276,kL\276\345\032.\275\roA\275\240\266\022\276G[\335>1\234B>\205\237%\274\233\254\007\2758OG\274[\372E>\364n\265\274D,\212\274QiB>\034\3752=\214w\307>.\244\246=\250\357\211\276\230\014\200>/\346\270>8@\002\2763a\022\276a\351\275>[\223\277\276\360e\375>\027@->J\226d\275^2D>?\344\233>T\220\271\276\206\025\"\276\360\"W\275\277\233\310=GB\272;\177\243g\276\213\037\225\275\307\352\230\276]\273\345\275\273j\310\275\340\272\242=\313o\017\277\303F\243>\021\034n>ZYm>\276x\006\277#?\204\276f\232\216\274O\350\232>R\227\217>\205\326}\276\355Y,\275\232_\364\276\371\274\023\275\304j\017>\027\302\250>P\224\005?{\331\307=!\300\005>\203@\024\277\262\254\365\276\020Lo>\230\340L\276)0\227<\233\177\347=7\341\262\275\342\251\t\2757\274\351\274\322=\272\276\024\016\223\276\324\316m<\331\205\244\275/q\344>\272l\264=\245\001\226\276Pt\335\273s\311\313=7Ts>\006%\362<\263\351\236>\217ND\276\227\341\204\276!7\371\274F5 =\316\237~=\214\210\240>\345\037*\276M\204\002\277\300\311Q>MO\025\277yN\232\275\262R\374\276\365\211\251>\272z\016>\317\016\226\276fy\313>L\210\206\275M\264\235\273\265\3209\275k\245\256\276\324\030\247\275I^\357=\360X\037>\332\t\336\275`\023\274\276T\026\234\275/n\247=\335c\204\276\343\026#\275\361\343\210\275\230-m>\217\303-\276a0\"\276\326\t\t\276\035\rq\276pR\030\276\022m\205\"i!\276\324\352\335\276\035g\227>\366\177m>\323\320*?\372w\226>\177\357W>$\266\344=n\331\201=(\302\216\276j\303c\276y\255\276\276$\013\251=\247%\237\276\305\313\376;ihk>\356t\354\273\3458\316\276T,\021?;Y\235\276p\254\007\276\331N\234\275E\245\351=\372n+>Z\2346\2769\2312>`*\024?\002\212\262=\326\220\247>\367v\252\276\255A\">\213\335\247\275\204\357Y\275\376|\311\2727\266\020\274\347zf>\270\314\r\276\232\331\311=\312F,>\001/\203>j\034g=bc^>\335\336\020>nE\334\275Fh\313\276\327S\337>\027\247H=\370w\211\276\233o\226>o\225\220\275\375\246\304\276\377A<\276\203\343\332;\357]\243\276\034\253L>\213X\271\276\372\244)?\2577P>\177Dj\276S\320!\276B\370\366\276\264\257\265>\356\3030>H\300\326=z\346\n\277\230L\035;\325\002E>\005O >\013\341R>\234\201\027\276\334\233\374\275\357\331\220>B\377\311\275W\307\202\275\'\031\002\276\247\006&\276j\013\013>M\010\\\275\353\020@\276\t\373\021\273\367?M\275\261\254\210\276\024T\307=\342\240\263\274\253\303\227\274\354\256@\276\2651*\277rJ.\276C\315\000\276>\223;\276\240e\014>\210M8=\206\262\251\276\3144\263<\2538\027\276\216\322\366=H\227\364<\342\255$?|j\200\2768\022\260>\316f\270>o\211o\275p\253\243>`\332\307\275)\256\344\275h\323B>\030H\266=!\314F>+;\311>D\370\250\275v\235o\276\254\033`>\367kr\275\240`\201=\201(\350=\004&A\276E\374\201\275d3\275>\305\320\333>\346\3139\276\\o\260=AY\262=\024\354\013\330\275\340vA>;\246^\276\312\343y=n\034\014\276\347&\200=\177TR\274\224\266\026\276!J\301\276=\024\027\277\275\241\005\276\025\002G<~$\336=\250\211\300\276mY\274>\316\265\026?\305\025e\276\206\362\227\276\276\352\307\276\014\226x\276m\'\241=\216\344\275>\203\336\224>0\360\264>+\355x>\2126\314>!\320->\330^\201\276\307\371=>uj!\276\010\350\274\275\337\250%?Szk>\2774b=\255\321}\275\231~\236\275\220\267l>\241 2>\034\004Z\276\'d\327\275\265Zh\274\256\331^>\337:j>\rv\223>\035\014\020\277\222S\264\276J\224\206\276O\250\271=!\357\226\275(\263\223=\00537?\230\262\264=\306m*\276\236K\226;\347>\211\275\013V\224>\2356\202;\300\275o\275\302\267\235>F^@=\355wD\276w\300\335>\241\r\220>\000\025\202\276\022\305}>\315|\345\374\3500<%\301\266>\350R\006>\210\213\\<\257\322{>\261\317\337;1+\317=u\020+>\010L\252\274\267\373\255=\223\201\205=l\\\233=\220J8\276Ws\236\274\343N\214>\3519\300>/\354\243\276\272\"\026\276\202G\017=p\256\351=h6\037\275z+\305>;\2679>|@\214=\265\254\255>,\222q\276\306\205\"=\"\251u=\001b%>^\373o\275\305\273\200\273\2343\212>\230\364\200\274\361Y\"\275\004hf\276p\213\216\276z\001\203:y\335\320\275X\356\223>[i\005\276D\317;=#}\316>4J\313\275\017R\341>\226\020\250\276{\324\376\276_\374\243<\273\0235\276\177\001\207=\352\367\031\277\272G\247\276\210\315\240\275\332\370\000?\256`\244>K/2?\275\2229\276Be\210>\000 \026>\020\244\233\276a\253\254>u\002\214\275\240\r#>\341\\\374>\315\270\353>a\275@\276\025x\206>A\252\343=\3352\261\274\361D\003=p[\005>L\310W>)\3513>\255\274\006\276K/-\276\2126\334\276\357\347*>\377\330\335\275\236\224\214\276\327?\265\276\205\350\202>\034;\351>=$\240>\331\264\242\276\232\003\341>OR\031?\256\"\202?{2H>\306\374\267=\357\364\276>\332\245\340\276,<\347\273\257\264o>@\014\350=\303\026\242>\235\254\260>L\322\210\013\000\261>y\034\217>\313\033\315>\026\327\321<\341\371O>J\014\272>\345\246p>\331\262\217>o\214\013>\220\\\242>\377\203:>\362\326\351>\340i\266>\241\245\265\275\"\234\366=\217\213\336\275\240\335m\276p\235[\276\330\3076>\037\035\364>\204\225N=*q\253\275\320\n\245\276|\022\257>\335\021\202\276#\263\017?W\211}?[G\262=.\360\360>\355\354\207\275zT\210=x?\344>\300\203\030?\364\266\244>\\\213\004?\352TM>\000\216q>,e\354>\301\177\252>k2f?O\302\230>:\026\307>\265\210C\276\004\221\237>I\177$?\001\326\002?\037\243\177\275\234\305\262>\032\375\257>u\337h\276\0200\314>\274d\376>\005!\005\276\205\261\250>\2655\325=\265\354O<\230\030\000\275t8\326\275\321[\006?\212\034\263=\266\303\246>D!\024?)\371\320\274\242\345\354>\021\376\336=l\362\321\275\'\017\003?\344\235\274>\321\266\032\275\204\244\334>q\306 >\212\037\307\275\243b\326>\274\203\226=\323%\217>l\027\354>\325\264\225=S\224\022\276\275b\327\275\017\210b\276\245:\255\276\'\217*\275\271\376\347>4\242\333=\246\350\204=\313I\226>\317&\270>l/\221>\373J\214>\003@L>\004\365\315=\034\205\000=V\314\335=\251\373D>\315\262\302\275\036\227.?\323\334\023?\211\350M>\022\n\267;\006^\024>\360bC>\010\276v>/&\233>(C\362\276*\344)=O_?\277\001\367\252\276\210\306Y=\002]\032>\005g\350>Y}\023\275+\230\254>\267\266/?\270\203n\275\2641\312>\360\202\344>xyS=\031\023\246=\242\337<>\005\014\022>\355\003>?\3368\352\274\245m\326<\3519%\276Pu\346=~\333\005\276\n\326\206>\324\210\225=\237\255\267>I\232\206>U&\025=\253L(\276\252\305\272>\234K;>\251\030<\273\207\244\246>\206\320\022\277\322\345\227\0219\024>\245\215\345>\262\335\247>[\261Q>\304\234\031?\220\351a>d\334\242>\276z\021\277kx(>\330J\273>\341\367\t\276y\270\037>\221\3746?:\376E\276\340\232\371\276E\350G>\377!\257>\205\030\241>\240t\023>O\231\361>)\200\226\276bfw\276\374\237\211>(\266\333=\251q\013\276g\013\037>\302\203w=\220\344\347=~\377\232>\235-\340>_\253\201\275\241\353a\276H\022\324;E\014\324\276;_\351\275:\356\244>\241\236U?7\360\364=\017\2129\276\006\374\324=\205B\212\275\305 _>\'\002\317>@\260\223>\206Z\006\277\204?\212==\032\260>\270cB=\210q\310>\360yIZl\247>\322q\027>\321\035\345=TG\201>V\222\263<\364\232\321=n\332\334\275 \347\"=\362\262\306>\373D\354\275\311B\007\276\030/\257=Py\241\273\036\233\316>\261\314\262=\333\0225\276sz\320\275\362\377N\276\244\331\367\274\374\212B\276\205X\201>K1\t??Yq>q\017K>\r\235\206>\003\321\013?\036\341\235>[\367\302>W\330\334>\006\002\257>\014\002\022\276\222kI\274\236\025\206>U\370\201\275>\207\323=\245\220\353>\0203\302\276\257\277\206\275\232\026\263\275\226\332E>\275d\020?\\\003-?\237/\032\275\207\351,>\377.\033?\274\032H\276\363*\006?\372\206U>\236\t\242>\373\3014=/\324\n\277#\217E=\377\211\236\276\tn\016\275\255\310\306\275C\321\204\276\230?\005\277\213\242+>\215\374\000>\342\202c>~S\035\276s\253\317=w3\370>E>\005?H\326\366<_\207:>\261\035\031?\362\332\322\275\204H\035=\246\363]\276z\357\025\275\332\006\230\276e\313\274=\364g\223=\002\377\331>D\031p>\265\225 ?\025o<>\030\310J=u\266f=\027\375\036\276UZ\030>\215\227\272=~(\225>`\337m:\222\330\307=\0379\335>a\241\245=6n\014\275 `\274\275+\0200?\246\365\022\276\270#\336=I\020@\276\244\024\033>\270i4=Z\234)?=\322c>\257\321\272>ob\254=\260\316\213\275\217?\207\232\345D<\203P|=\270B\231\275^\370\376=\356\0026>m\317B=\241\245\301>H\326s\276\256\024Q\276-sT\275\314\325p\276\201\347l>\210\345\332>1Y\262>\311B\252<\315*\242<[\226_\273\344Pv\275\241\311\302>h|\261\276G.\001>\2477\247>M\026\263>6\322\215\275\325\260\223<\275\372\010> \005K\276\376\030\377\276\273\375\000>R#\215>\257N\222\275c[l>\216=\034\276\262Ll<\367f`>\216m\335=\327\3051\275\207T\'\276\353\331\017?\017\013\020>\022j=>\247\220\244>m\n\037?\2467\020>\001\007\365\275\345\0213>\177\234\320\276\221\265\002?8\253g>\020\2534>e\013\344>\032#\345\275\331\3375\276\2125\356\275\377\234\342=V\210}>{%W\275`\302\225\276\335o(\275\254\030\214=`\370\001>\330\254\000>1\344\215>\n\225 =\212K\232\276%\030j\273\326\022\260\275\322d2\275\244\3715<\\\214\345\276|\341J\277U\3028>\000\346\t\277iP\254=H\025!>\342(\006\277\003\267\270=\333m\301\276\314\314\034\276\365\301Y>\376/e>=A\335\275\272*}\276L\357%\276\367\205\274\276\315\r\\\276\260\370\263\274\010\013\202>ke\266>\271\247\357\276V\221\265\276\271\231\226\276\202^\014>\rw2\275\255\213\244\276j&\036\276lX(\276\317\273H=\306\373l>e\235F\276\303\n\376=\024\321^\276n\0163\276\371\366\354=\007\372\313=b\005\n\276\323\241\244=\262\337\335\276\244\216\327\275\217\020&>\2607/\2777\224\216\276%\237r\276\210\n\240>Z\270/>)\t\217>R\236\355=\\\351>\276\270\343\334\275\301\263\227\275\303\031\261\275R8\317\276\340]v\276R*\001\276\327\304Y\276\037\205C\277\264x\330\276\231nf\276!\215\276\274k\3735\276\271\237\026\276\214K\001>5Z9=\305I\237=\036_\366>;U\242>\tf\214=U\031\246=\303\276S\276\320M\016\277\312\362\004>?,7\277x\034!\277r5\241\276\241\275,>H\307\201\276q4\262\276\321:5\276:F\357=\220\364\334=\200-\020\276\036\344\177\276\3379\275\276RB\006\277\307?\203=^\002Y\276d\253\202\276\301\306\255>\327s\234\276%\3575>j^\317>\340\032A>\367\362/\275Pg/\277\272\352\363>g\226\230\276|t~=\263E\365>\222\354\372=\200\312\332\275\314\267$\276\205\2011\277\351\250\363><\326w\276\213p\225>\351\203\270>U[\315=\347\\\322\276\200\241\177\276O?\207>.uC\276\002)W\276\247\206B\276\375W}\275(A\212\276F\001\016\277\232\313\316=vN\213\276\207\037\226\2762\330\331\275\004\tf\276)\002\000\276\270\211\324=\022?\277=*\024\211\276\237\321\330>#\027\310>\210\323\304\275\214>p\274\312k\210\276\255\2057\275\2448\243\276W\364n\276\260^\213>\342\302\263\276\366\020\252>>\266\357=\016[\366\275\247\357\270\273\371:s\276\232TK\276\320^Q\274\224\325\224\275T\312B\276S\024 \276`<\234\275`|}\275[\267\302=n\335\255=\031\n\023=L4$>\014>u<\301\330\272\276\247d\216>\371\343E\275\211\223\033>D\254\360\2747;%\276\304\356\345=d\270\325\275\226\034\023=faG\276~\316\316>4\002\273>\364\303\347>T\351\246\000\263C>\253p\'?\303nK>\321\253\023>3\016m>G\254\212\275F1\245\274CMh>\303\177\025>0\3315>8\375\315\275\223\0177=\365\363\221\276%\266.<0^\274=\247\000\207\276R\234\256>J\347\025>)\203\233\275\3775#?\331,:\276%Vh\274.\3453>\320\003\032:\2265\251\275vl\275<\347\254\242\276\354\205\371\275\271\3370>\271W\370\275R\236\330<\352N5=%\262\013\276 }\222\275\357\343d\275$\030\232\275\335\271\225\275\024\014\231=s\257\216>\302a>?\374\353\253>\016\243\360=\223\272v=\\q\276>E\365\261=\262y\t>\026c\021\276\205\246D>\3730\024>\025\237<>%\223\236<\330\275\206\275\240\021\255\276\201`(>\332\'\245>\374\240\226=NI\352<\022p\242\275$\242K=\254\217\325;\205\301\">\346\266\321>\372\215z=\r\035\004\276\335\260\355=\220G\221\276\221\377\320<,\216/\277\230\272\007\277e\2769=+^\241\275\3652\213\276\274t\300=Ms\321\275df\355=8D\243\276\004\253\254\275\2509\211\274\372\r\313\275\266l\365=\"\013\266>\035s\345=W\201\310\275+\273\341\276~$\225>\n\014\027>Q7\222>\030t\010>]5X\276\354$\275=\237\036V\276\001\351\243\272\033\262U\276\374v\225\274\027/\343<\023\217\300\276x\210\262\275\r\346\020>\246m@>\233\274\343=y\361\000>\327\356\361\276H\234\332\276\343\275\226>\310\337\304=\n\375\031>i=\352=\177>D>\366\030\374\275\265\004\236\275\360\373J>\372\206\222>\205\375\313\276\010\241\265<\344v\'\276\377\226g>O\267w>^\237\200\275*;\304>\032\344\014\277\016\361\203\276\373\032:>/)\304>\241\240\000>\251p\032\276]5\000>\352O!\276\031I^\276<\244\177=\223\202T<\370r\205\276\211Ri\275\\\257\r>A\003\255\275?\274`>d\010c\275\355\2732=\354\205\212\272\347[\352>\nq\212>\204C\244\276\2710Z\276]\242hz\374\260\276>\267\005\275*u\237>\257\232\212=X6m=(@\245\275\302\313\216\276\217\376\206\276y(c\276=\004!>\207L\225=B\342\000\274.f\346\275\204\377\220\276\272<\023>\307\252\262>\321\230\330\274\2512C>\003\221\013>\341\311n>,h\204\276tB\351\275\3151)>;\350W>\026Z\021\276\335\207G>\031\261>>\201\3450>\212\316\231>\330s\266>\246\361@=\336\366\r=\307\200\312>knW>\\\217\376\276h\313s\276\022\217\177\276\323\023\366;\247c\233\274lF\340=\315\177\303>\317\000\022=a\316\366=\364C\332=\377\317\245>\366\240\303=>!\231>\3219Z\276@\224\326\275\005\224\005\274\376\202\">`UH\2762M\263\2754\t\212\275\330\003T?>\025\017=\367w\247\274\216?~\276\325\307?\274s\245\004\276\237\351\300=\010\"\207\250O_\275\237Vq\276\264\345\232\276\351\216\356\276f\010\327\274^\236\367\275x\003\236\276\302\021\322\276\"a\315\276,\222\323\276\362\t\300=h\\\005\277s\010>\276\264o\215\275%\375\262=\266\222\214>\323\235\300=\017\022\361\275Q+.>p\345\204\276\351\'3\276:~\322\276i\211\306\276\377#f=\255i\277=7\001\254\276J\006\230\276\272\275\313<\264_\243>G\331Z>o.\320>\022\345\307\276UM\205>\272\321\213\276\261\351%\277M\207\035\275\230\005\341\275|F5\276\026\010\227=N\205\214\276\327\253==\225\007\247\276\362\253k\276\254(\023\275\273\356\302>_,\274>\263L[=\212\367C=\2170\220<\322\320O\277w\t`>z\325L>?.\210\276\364\365\313>Pk0\275\300\301\215>\245\263m=\242\231\352=\032\006,\275\343\361Q\275::G\277\336\2734=\243\341/\276\305\203\352\276\027tS=\205\223\352\276%\003\206\276\276\323o>\321hx=R\\\252>(w=>\344\007\331=\201\257&\276\323\315X\277Z\217\321\276\362\356#\275\243~7\276Q\342\277\276*\214\322\276\213\277\257\275y\216>\276q\203C=\321\332\360\2766O\366\276\004\210\344\275T\304}\276\352\323\"\275\215:\232>[3\010\274,y]\276\267\210\023\277\265\237\342\275\336i\251>J&Q\274\t\234k\275vl\226>6\200\272>\344\214I\275&K>\276\333<\261\276\2715J>\234\242\367=\327\225\341\276\326\2107=e\027\017\277\305\006e\276\371\261k=\370\252\321\275\375\315\203\276\206\223\211\275b<\222\276\364\340N\275\026|\320<\321/\251>\330\035\313<\002/?\276\242M\257\276\236\\\024>)\254Z=\265\276\377\275\354ih\275\324\030\225>\300>\201\275\331}}>&\221~<6\2332\276\2061\010\276F\245B>\272\251\255\276\010C\210\276\365\216\201\274\333\327K>28*>\302\252\201\276\310D\357=42c>\301wk\276C6[\277\360\024G\276*\036\351=\204P\240\275\344\"\340=\362(\251\276\024\344q=\265\332\342\275x\301\023>E\203\256>9W\\>\332\252\224\274\201\'\003>lh\305>N\2553\276\277\364\275=xwY\276\206~\245=|\232Y\276\331\224\233>Z\232\024\276\214\377\252\275\311d-\276\325\224\235=\3729\326\2761\320b>q\270}\276\212\265\202\276-3\022\276\261qI\276+I/==+\227>\335\241\366>\363\253\206\276\224\"\021\276\220\344\215\276\257iQ\265\376\246<\'\347]<\337b\323=\271\267\317\276\206\250\350\276)0\310>Y\341N\275.0\001\276\3117\347>5\306\210>\255c\257\275\224\007Y\276\206\344Z=k\250T=\234){\275W\004\234>\014D\200\275\203\031\222>\327\007\357>\244-f\275A\362i\275\357@\'>\327\325\021>\353\373-\276\017P\255<\205\341\325>\374\361;>\373\260\236>Q8\000?\245\234\236>Q\332\t?\005\322)=s0I\276\323E\005?\231P\224=p\316T\276\341\177\271=T\361\353=E\021\325=\325J\033\277\301\331\301<\260\256\005\276\354fh>\264\372\350=\206{==\374n\201\272\223\016\336>\007Y\236=_\025\304>=;\315\276,\342\315\276\365\204B?\302\206\022?KZ-?\261\353\007?\353h\374>\213\360_\275U_\215><\017\254>\255\210\241>\024\016\262=\007\274A\277$\001\027>=\014N\276\225\207\307\275N\215\346\275B\341p>\243\326\233>o\307\242\276\370\230\250>~{\343=\325\337k\276\033\211\226=\035d(\276\244\221\251>\350\007\232\276\rgQ=\024\017\260\274X\246x\2767Qf=\266\353\253>\316\'%=hkR<\354O\340>\362\215\000\277\251\320g\275\002o\357<\230v\245\276w{\321=\223\275\327>\210\353\261\275\023\365\001?/!d\276~\311\027?\2375`=\252#\313\276\241\2605>@\375\340>\216\214\247\276\266\215-\277\nQ\022\276\263\024\206;\302F\207\276nL\030>\036\003\313\276*\326\240>\3262\026?\210aw\276\372\244\002?\253\340\244\276\302\016\021>\360\034S>\3079\363\276y\276C\275jR\023>\234}\264<\317\200?>\305\335\247:\364\260->\317%z\276\336\212\000>\310\253\027>\371V\026>{:\321\274T\244\317\271R\210\036\275$\256v\276\275\007\216>\000\204\234=\322\022\266\275\220\260\005>\313\311\205>*\352\325\276:\204\214>\345.8\276\021\210\247>:\247\017\276P\261\014\276\341\367\313=\237\366\341>T\202\\\275\256\311_;\217\232\021?n\275\027\276\025\343\224=Q\325\033\276\345G\023\275\351\266\003\276\376O\233\276\245v\370<{\224?>\221\035\305>X\337 \276*\215\370>\247\324\006>\236.\t\274V\332{\274\330\326\315\276\014\361\230\276U)0>vG\243\276\252Li\275.O:\274\361\203\337<\362#\215\275vL0=;G\334>\353g\257\275\375\206\214=\3046\244>\244ca>\250\324&=oy\036>+*\350=\024\033\257\276\314*A\276\001\031\010>\341y\270\276\225NP\276\274\263H>\004-\'\276\332\345\377>\216\n\203>~\300\235>\305\202\262=8\331\350=\026\213\214<\035B\242\276\3607\004?f7\033>_\210\227\275>\357\332=S\271\327=U\3508<\204\223\234w\005W\276!\236~\2743\330\252\275\213\277\272=\253%\313\276t\003\377=\314\277w>\006IP=\337IM>[iH\276\272EB\274k\032\223\275\264)\032=\235\rO\274c\264_\276\323\322v>;\314@\276y\221\017\276\033}\241>\245\307\216\275\305\222\017\276\261\007;\275\321\246\325<\r\027.?\336U\214>\206\306X=\203E\n\276\336\247\261=x\356\320\276\201{\203\276\\6\357\276\253\252W<\326A\001\276=\337\312\276\260\224\214\275\000\343\022\277\005\340\263\275i:\302>\247r\255>\212\200\\\276\233J\314<\327\312~\276\370!|\275\230\245\267\273\016\242\263\275\215\367%?\357V@>\036\366\254\276+W\036>\210v\322\276\221\2504\276\244\262\237\273)\363\271\276r\306\033\276\013\306\322\276\201\026->Fq\255>\275/7\275\025t\303\276\330\223\366>\346\362/Q\031\330>\304\355\303>\235\213\373=Z1s\276\253\311\027\277K,S>\375\254\350<[\263\223\276\300SN\276<\370\222\276*\325\221\274\336\375\366=\231\213*\276p6\304=\302\206V=\270\250\321\275\245xm>\213\002b>\367D\346=\242{\032?\002\241\244\275\225\034/>\210\364&>\271\260\235=\036\2232\276:\326\343\276\360\037\332<\304@g>j\355\267>\273\371\307=\301\376\251>q\267\\=\345\241\307\276\034jW>\2118\006=\304(P\276E\021.\276\227\223\361<\243|\366>]`.>\231\276\312\275\307\014\206<\2017h\276FJ\\=\333(\334\276z+Q>;m\301=+\253\372\274\006\365\326\276\344\"\276\273\025\354*=*\365&>~\325\022>\375c\214\276\375*\344<*a3\275\006T3\276(\367\256>v\326-\276\010g\240\276@\262\376=+\344\256\276*\202\026>M\376\242\276\033\373\010\275\363\267\352>\310\"\232\276mS\237\276`\330\373<\317\017\234>A\213\340=\306F\200\275(\2208\276{#&>\226z\253\275\316/\262\275R\363\316=5\313`\276\205\217Q\275j\262\235>\207\017W=\266\014M\2765Zl\276>\306o>\0068c\275\230\265\235\275#\215\241\276\'\020*\276\261\375D\276\026\367z\276\006aI=\375\250\035\277\261\266\213;\251EM\276\300\277Y\276\326\323\360\276\204*D\276-\263\205\2761O>>P!\377\275M1\265=\230\325z>\371PM\276\276\331\313\276h\323\251\274\3060\347=3P\307>\352\334H\276\350W\363=\225% \277A\312:>\n\226\247\273mz\276>\376\341\337\275\035\232\302=\222\021{\276\222\376)\276\261\355&\276\360\247\031>P\307l>\037\307\033\275\343K\261\275\034\033\340\276#Z\222\275\317\343\354\275\200h\223=\271\233j>\354\301\225\274\036\317\214\274\367\202\307\276\210\024\204\276\220h\364\275\344\303\014=t\212\365>Ez\231=\326\214\007\274\361\021\032\275z\177\276\276U[\265\275\323\324D\276\3342->\336\027\031?\202\246k>q(\361=\357F\006>\341*n\276x\341V\2762\333B>\033M\261>\273\372\226>*<\221>\264\216\305\275\232\330\241\275T\244v>\214\255\016\277\261,\322\276E\240\243>m>S\276IC\375>#\261\025>v\362j=\3541\222\276\340\007#\276\341};?\375\343\\>q\315d>x#\371>\343t\307>@3\r<\304j\261\270\327S\345\275)\352\227>\t[\341>\304\222\202>\370\302#?G\343\004?\022\210.<\300\211\310>0\347\366>:?\270=Svp>x\022\310\276\024\315\027\2755+\231>\236\371\322\275d\315\270\276\316\241\222<\333\0237\275|\272\305\275Fn\201\276SSG\275\241\370\013\274]\t\202\2737\373\217\276\307i\374\275\002\266\224>\200.\245>\340\200,<\340\"\370\275\225Q\266<\rwW>y\272\344\276,%\246\276\330o\203>\235\241\036\276\351\005\274\276\302\010z=\376\014j\275\314\026!>\037\\\036\276\3242E>\350\331*>\324\253\216\275!\305:>\302\362/\276\rj\270>\316G\017\277j\023\220=7S\230=\344\206\250>\243\266\215>\235]\365\271`\013\026\276\007\243\250\275\217[t>_\311\274\273\3664\366\276I\221\364=9Pi\277K\244U>7\230O?Mq\257=\270\312\205\276\206\n\024\276\nP\212>\305zn>\202\252N\275\017ry\274^x\211\274\247D\206>Z\247#\274\346\376\302>69e>#E%\2753#\034\277\273\270\'\275\304BP>\030`\243=R\201^>\030\216\343\2743\324\204\275\357_\343<\212H\217= F\250=\006)Q\276\326B\273>\275\266\225\275\242\342\377>Y\345\010\277\375\223\366<\244\206\037\276\267\307\234\276X\002\275\276\242+\236\275af>>\004\327\252=\273\034#=\354\267\366\275M~&>\035\300\000=m\276U\276\n\010\027\277\204d\225\275%D\207\275H\233>\276T4\251=|\013\016\276\315\253\022\277\274\340\264>\267Z\357\275\212ZO>\244\361\314>%d\002\276u\210*>\261\273!>]\024\305\276D\341\341\2764`d>\267\231Q\276Ha\006>\005\001\372\276\251\260\314<\326\254P>CS6>\336\026\220\276%\270\262=6 K>\313\340\016\276\271\342\271=\347\301\246<\322\247\217\276\344\322\351\274 \204G>\353\'\033\276\323l\323=^\325[\277\335a\205>\244^\333\276\204\372\236\275\021\023V>\026vY\276\3125Q\276\277\316\206>\033\376\032\276\216\210\311>\313-\221>\305\r\003=\252y\310;e\252+>\001@j>\210\271\264\276\007N\317<1\326\332>Q\246\231>\2412\253\276\234n\r\275\341\237\017>\365\247\016\276\216\033\234\274\253\004\225\275\020\350\255\276ap\221=why=}n\356;\301#l\273+\037y\275\265s\021\276\204!e\276y\206\223\276;\367j=\367\274\333\276c\212\225\276fq\221\276\247\325|>\346\242\275\276<\362\237\275(\335X\276\337J\013\277\261\016\270\275\260q\005>lD\340<,\275\033>m\351.\276\016\374{\276\033\303\341\276\230NU>\333\240\272;\025q\n\275\331\342\314\276\276\336\276\275\331\255&\276,\345T\276\010\345Q?V\226\345\275\357W >T\354(>\333[\367\276S\217\215\275\332\216\021\276B\007\352\2759\252\203\274\301;\001\277\210\033\374\276\325\t\236\274-\002\246\276\366^\r=\232\224\014\277nb\220\276\275=\002\277\245\270r=\335\224\237\275U;\233\276\014\343\005>\014\247\221\276\266\2731\276\212T7\277\014\n\232\275pEe\276\007\203\310\275S\357\231\276\177\272\313\275\312\374\275\276\205\217}\275h\237\036\274-\337d\275$\374\255\276\371\334.\276g\007\213>`o\t\275\266K\033\276Lf\\>lf\376\274pJS\276@&\304\275\233e\371=\035\037\330\275L\202\220\276\353mK>\362\022k>\027\215\373>a\\m>u\355\214=\350{\024\277\317\203<\276\3316\267\275X\265\251\276\303\212h\276\225?\244\276\250\246T\275\202\206\244\276\022g}\275J\036\201=m\216\244\276\330R\356\276\220\223\331=\261\216[=G\223\205\276\275\\\365;}\322\271\276\252Q\317\275=\356\374\275\212\374\022>qg\305\275\362\343\003\270K\246\032><\203\361\276O\230\333;\222w\177\275\021\277\002\276\360X\364>\246\321\375=a\206\260\275n\326\205=\375\007\356\274R\006\312\275J\331\315\2766M\342>\211\001y\276\271\3771=\304p\371\276\241\315\312;n\2144\274\020\010\204=\311\010H>\326\344\242\275\3652\251\274]\001:\276\247\034\003=\350\317\246>\252\037\266\276\201`\025\276\310\361\331\274\344.\007\277\265\222\n\277\034k\024\276\212d\266>GHG>\311|\022\276\212t,\275\260_B\276gl\221;\375\206\312=x\026\222>wa\202=]\367\341=`\345/\276;\037\201\276\033v\333>\2218\311\274*\266l\276\332e^\276\213\251\323=\373(\376\276e\325\250\2755\010\206=\307x\037\275\222\257D\276\004g\035\276\326\362\211\276\231G/>X7-\274\027>\350\276\333\030s\276\346\212)=\006\365\363=\t\372>\275\266\221\223\275\316\355(=(N95h\302\276\315R\233=-\271b>_\200\032\277\326\230\362=H+\013>\016^.\276\031K\033\275a~R>\327\252\320\246>\201\276%\013\027\276\336\027\351>\333\207\275<\322\322\306\275\247be>\243F\364\276~\253\236\276\307go\276?B8\276\006l(=\222\243\304\276\265\211\343\275\026\302\352\275\270\032\217>c\234$>\0264\243\276AF\211\276Y\361\241\27652\243\276H\207\325=\302S\331\275\233\253D\275t-\025>\0024\241\275\314\227(\276\200\020F>\321\204\221>#\306\260\276\350v\321\276wt|\276Z\316\230\276\255v\257\276K \321=\"I\247=\316\023\353=\274~\214\276\007\347\273\27656\216\274\007\216\341=\342\207w>.\271B\277\001\347\370\276\031\007\333=\223\210\275\276\025`\313\276\341\316\034\276\322\275#=A\001\270\276\217\016\361>\235n\345>\321M\307\276I\224\262=b\330K\276\n\314\220\276[\036A:l\332\206>\237\345J\276Z\347\222\275\203v\354=N8F>\254\024\236\276\221\371\245\275\263\010Y\276\021~\317\276!\247|>\310\021\251>\325\203\256=Ys\225\276K\252`\276\357\301#\276\301\213\243\276!\211!>Z\310i=\030 \024=4#Q\276\233\356\013\277`\221\215\276K\336\222>\201\270B\273\220f\255\276\307\333\252\275\003E\315\275\317\315\316\276*og=!\023Q\276\220\367N\275\220\306\027>3|E=3\252\347\276\220\\\221=\364\340\t\276Nq\363\274\202\206\320\276%E\020?C\251\375\276\327\363\024\277z\326\235\275\315\003\205\275\222\3726\276@,\306\274\217t(\277Mu\254\276\226\023\324>\324\234;\276|U\'\276a\334r>\304q\265=\243\335\316\275\263S\031\277\021\244\225\276\325\236\216\275\253?&>\217\343f>\303y\350\275\005\2042\276\001\027l\276\221\216\260>\313_+>\336(}=\214\220\003\276\242\007\235\276\376\270}\276\356\353\203\276@\326\274\276\202Y\216<\314\035\230\276\027]\262\276P\345a\276$c\037\276\333\252\017>\365\242!\276{G\337\353\233\270\275\334[p\276\270o\247\275\242<\201=\345k\374<\225)\020=\017\224\r\276\260\347\222\2760\317\210\276\025[\201\276\347\214\205>\\\206\237=&[\241\276>({\276\304W\365\275\231\027B\273\272ts>\021\277v>\366C`\276B\352\030>\020\346\033=\'\301\226\276\355\373?<\265>\264\275\265@\310\276R\203\265>~\232(\276\214\233)>qX\266>\367\035N=X\214p\276\206\330\304\276\363\272\274\276W\030\346\275\376\3325\276\354\204\017\277Z-\021\276\303\306\302=\360]J>?\371\232\276\267\253\306<\262\262\035>\311g\004\253\377\261>!\206\322=5V\310\276\243L\214>g\312\364\275)G\017>\354\025\376=\335\355z<\321\013\366=o\010\240=\222\313\336\276de\\>]\235p\275\373\250\n>\321\254\250\276\345\212\002>J\3004?\273d\230\276E\266\244>r\024\027\276\213\230\242\275lc\017\276\000xS\276d\221\352\274A/\262>il\216\2761j\312\276\370\202%\276\376\361\277\276\263\353\341\276v3\303>\236\240I>{\007\255\276\366\327f\276\017\264p\273@\254\006=\254\010>=i^8\276\220\354\374=\366\351\016\2762\352\231>o\031\007\276\326\n\212>\330:\374\275T`M\275K\356{\276\266L\037\277\\\241\365=\371r\320\275\231z\267\276!\nV?x\303\207\274\t\376\306>\205\203\234\276\036s\311=\311\255\345>\320>J\276_\267\300>\364\316\243\276\234|\264\275-\251\250\275\217-\334>Cq0=|#\345>\310j\323\275w||>\212\316\370\275\276\337\262;\260\310\216>\351o\221\275_o\235<:U\315>\204F\302\275l?|>V\313\323\274\216!\022>\270.5=8\267S\276\372\031\215>\342\241\207>\250\346\027\276\336D\235\276\315\035\013\277\327\361\233>\375\022\243\275x\002\364=\327\021o\276\340\232\001=Y-\222\275v\233>>\317\273.\276\264\010\316\275\010\022$\276\215\001\315\276\351P\274\276\343\216\202\274\376x\004?\253\177\365\274F\230c>\371\216\210\276\325*9>\007\251\376>\257\206\006\276#\340\320\275\241\020\022\276\330\302\340>\177\nV\276D\030M=\262u\304\275O\321q>[B\365<*\302?\276\304\276\260=m\352V>\201\355\231>\304\370)>\242\375G\275\270o\277=\320\001\217>S\273\273>3\216\365\274}7\342\275h\277$\275\372\213=>Q\243\232>\003\375\035>\370,\234\276\2151>>\034+)>\320Y\271>p\r\264\275\334\232\003\276\215\350\343\275I\331\024;\2273\207<\201\364\210>\302\312\000\275L\276\330\276(=-\274\250\306\322\276\216\306\023>,\034v\276\257gm\276\306\234(\276\377+\257=\004\334\364=\317\300L\2766/\240>!V\t\276#\362\177>\276Q\251=\305\001!>\262\365$>!G \277\256V\273>\240+\n\275\352\210\336>J\222\000\275\263\316\212\276\206]6\275\315s(>\220\313\326>\263\264x<\361\272/\276v\t\300\275y\232\351\276W\005\210=\263\213e>vq+\276\3669\245>t\221\351=\242\372\355=\274\374(>\337\001^>\213\343\276\276Gq\002\277\366lz<,\302\204<\201\034\274\275\264\264\260>x0\305\005\255\317\275\334\307\210\276_\r\365\274&k\272\274u\352\006?\220>\210\276\030\253\205\276\022q\247<\371\213{\275\372=\022\275\336{\216>\331\353\253>\300\031\211=+\307\352>9^\301=\231\033\310>\206h!\276\t\337\337>\317\265n>\370`]\276\231\203\266=\273\244\241\275{\177%>;\267\224\276@\356\244\274\265,\334=\0270\233>6\330\216\276U*\313\276;%\367=\030v\024\276\207\272\264\273 \267\222\276\020\016\322\276C\361\375>\2074\036\2757\017\226\276P\303\302>C\360\207\276\231Q\316\275\330\341\252=\335\320w>#X\006\277@\312\305=kT\355\274\030\320\272>\307]\032?\370\276\373\276\203%\306>\223\261\242\276\235g\224\276\001\307\r=\016\270\263>\2771-\276\n=\311\274\354\242\277>+\033\301\276-\024K>\370\307\351\276\301\251\021\277\342<\201\273G<\205\2760\n\331\276L\334\271\275\234\214\036<\2078\033\277\362\005\303=f\323\\>e=+\274A\203\335\276D}h\2761\334$=\300\027\371\276\224g@?O\323\305\276=\177\210\2762\354\022\277(\357\000\277o\371@\276\366w\334\273_1\226=\336\217\036\274`\350\306\276\225\341\314\276\314Z!\276\377N\017>\240G\210\276[\234\214\276\303y)>\007\267\374=\353\276\266\276\022\276N?\343\202u\276\034f\212>\024\323\232\276\322\010\007>\021\2115\276\257\354\034\277\213\260\212\275\233\200#=3\335\017\276\354]\266>\312\345\307\274\306\345\177\274\202\030^\276&\0056\276\025e\323>\265[\230\276\r\353\031\276\307(y\276\363\201\"\2759\372\016\276\326\244O\276\223\307\310=\030\023\276\274\222 \020?x\220\226>\204\347\004\276\2611*>\214\272\221\276/\2074\274\370\342|\275/z\254<\226\310\366\275\t<\336\276\021\3250>\377\344\237\276d\005\032>\006\031\341\276\224\r\327<,\t\331\275$5\360>\246\205\016?\037\026A\276+\010\t\277\363=\026>\226}{\276\231\200\310>\255\336\356\275\034\230\364=x\305\024\277\246\305^>/\341\221\276H\314\327\276\352*\230\276\211S\270\276]\237\221>\307\327\356\276\337yk=\222JP\276\246S\305=%\230\'\276\343\242\306\275\264\272j>\302\362\207>\214+\321\275\005hZ>\322{\260\276\241\017\036\276\331\227\263\275\356\213\001\274\312Mc>\027V\024>\372\357\210\275\345\254\t\276Ez >(\036\275\274\002\253\363\276hfW>\020~\203\275\344\020oB\215\304\276aj`>\213K\247\276C\233r\275B8\024\276Rj\242\276b\357\376\276t\'T\276\342\2511\276:\273\207>\235\021\"\276o\201f\276\010\201T\274\034I\036\2768\022\354=sb4\277F\344\177\276\206\254\013\277\376\277\000\277\205\034E>\010jp\276\335N\244=\017w\245\2754:\t\276\211d\275\276\245\207R\275\345e\001\276\032\224\365\275\317N\310\276\022bg\276@\004\226\276\315\344=\277\312\010\246\276\315\226\376\275\327\322\323>K}\347=\350p\277\276<\200\240>+a(\2766U\"\275M\330I?\221\206\333\2760D\"=\034j\204\276\271\312v>\007\346\235\275-\214I\276\241;\262\275 @\254\275\247=C\276$\033\265<\n\320\031\277\334\256\013\277\227\035\301\276\207\305%\276\256\310\034?\275\314V\276\336\237\252=\353C\362\276\225]\034\276K\013\204\276\317Gl\277dK\244>QWg\275\3459w\276\371h\021\277\r\354\345\275r\304\241\276\274%\202\275\232\271D\277]\335\025>@\344\216<\221\326\241\276\210\211X\275%\212T<\243\247J>\247\230\346>J2\343>\017\233\341\273jD\251>-\336\233\276\024z~\276|\274d\276\366\332%>\267\2426\276\001B\317\275)M\017\276g\332&?0<\035?p\332\271>\035\341B\276\256C[<\227\305\340\275mAE\276\226\007\324\275C\300t\276\007\250\245\275D?\217\276\335\231\240\2757\\o>\313\2441\2761\312\213\276\033&4>\006!\205\230q\262\275\247\025r>]\332F\275C\003\004\276RN\\\276_aS?\266\217\231=+\372K>\303\264:\276#0\374\276L\221\215\017\266\033>`\274\246\276\203\024\303>+\347\226\276C\202|<\322\325q\276\3218T\276\033<|\276\214\303n>[s\261\276\031\032\310\275UI\311\275\010gf=\2757\\\276v\235\345<\376\304\'\276\033*\335\275\220\2569>z\301.\276\316*\203=\274\027\332>\344\376\202\275!\320\\?\3733\334<\340(\036>\2001?>\026\243\337<\215\033\233>,jd\275\302q\302\275G\n\177=\2060\353=a@\025=p\004 \275\211\270\220=\370\247\376\276\224-*\276l\006s\275\252\270\036>p:8>\300\264\002>a\030\246\276-\361\033\275\036A\027;\362U\024\276\262ik>c\247H>\304\233\002\275\246\007O\276\205s\260\276\277\336L\276N\241~=\021\331l\274\362\204i>\265dn\275\013\210\222<\004\344N>e\323|\275\030\347^>\254\2505>|w\324\276\237q\222\276\266\3156\276C\323#\277kEy\276\312\242T\276\326\326\375\274p\003\273>)I\023\277\237\232\221>\177D\036>\377[\214\276\301\216\006<\211\007\244>)\\\222\276&G\364\273\005\261\244>\037\206\212\276$\"\266<$\037\213>\312\331-\275\231\252\250\276\245u\017?t\215\306\276\2671\237=[\317!\275m\276V>\000\347\373\275\233\036\366\274\240;\211=\343\232\235=\260\213\210=N%\274>\014\r7>P]Z>\312G\275\275\203\362,\276*\263\202\276>O\211>\036\253\035>\232\016d>\323\357+>\245\2302=p\301\220\276C\253\270\276B\273\336\275y\r\314\2762\241o\2753\003\212>\025\377\364\275,?\222>C\262\025\275\332\365a?C\225\002>\037gu=l\236\332=^L\226>\220\037\317>\002\327a\2761\316\210\373\253\'>\262M5>\236\242\037>\230Ij\275\2766\n\2779\254N>\214\336_>\255\246\336>d\247\376>\341\232,>&W?\275\"N\343=~\274\036?\353\361{\275\330\254\373>\361\362==\266>\334\276\267\t\352\276x\214\251\276^|^?f\202\206>.\236\260=\\g\345>\000\254#>`\225\262>\3375\032?\205lc>\3022\210>\311\016?\275J\253\001?\364l\332>\243\231.\276b\243\315=:\322I>\304\227\256\274\343\354\277\275N\243\266>\241i%?\341*\271>\301\266\235>\366\311B?\305NO\276?\335\264=\001\334\007?\327\320V\275y\253\320\274Fsw>A\360e<:\275\000\275\316E\352\276\327\342\275>?\350~>\345\335\212\276\302\273\236>&2\301=\316\266\221>\002vs;\373%#>]^\241>\303s\016?\366MZ\275\256L\330>\004\\\007?\242\303\323\275\2454\311=\375\025^>.#e=\037\266\216>\253D\241>M\340\241>\355\211a\276\031A\004?\266\222\\=\324\331\274>\024\nB>N\264\017>\323\017\375=\311R\331>o\271\241=x\\U\276\200\027\350\275b<\332<\217\226\300\276,\033\001\277\001%\010\275\273ol>\202\327Z>\241\240p\276/`s>\257E\361\276H\205\262>\231\025\001\276>\302\034>6\236\205>Z\275b\274}\217\273=k\231\244\274\362x\256=>=\001>\177\016\031>:T\033=\322\223\214\276\270\n\260\275\257\246\226>\277\346\317>\276\037\250=\223\026\003?O\204y>-\263$\276\344t\320>\210\252^\274\337\357\"<\306\220\352=?\372\">\327l\303<5\3362>)\340\305=\365p\217>\227\\n\27665\001?\324|$?|\251y|Eh;T|\206>\366\225\006?m\212_\276\322\312\213>rAl\276\240\351\266=\330\006\303\273\345\270\256>tX\352=Y\300\310\275\335\203f\274\341\273I<\035\367\373;\203=\307>\363\376V\275\325\006\363<\252>\305>\324e\257\276\344Nu=g\375\363>D\332\222>U(\364=\324 Z>nQ\215=\006\262$>U\355W\276S\177\255\275D\213Y>V\023\304\276d\345\227=\262\350\252>h\016\346;\300Y\004\267\361\366\323>\217\353\223=\003\342\212\276\211\231\216=\323\220b=\035\0000?\034\356\357>dc\356=0\037\322\276\223\304\337>\372\313\317>\203m\021>\n\264\031>}E\212>\373\254\027\276O*<\276\351\224\361>\213\003o>\027C(\276\013= =\341\236Z=\016\275|>\317\255\270>*\275\200>g\362~>u\3643?#\224\251>\353\276\036?\366\255-?\374A\313>\036\205\310>\322\362\260>\002\322\320>\241*\307>U^\250>\262\341k>Hc\t?`\316\230>\251F7?\354\304\366<\377\360\226>j%\316>D\320\332>1\256\312>3\020\007?\203\214\335><,\030>\227\327\372>k\316\326>\261|\343>!\231\r>\026\263\240>\3573\363>mQ\367>\030\256$\276T\327\025??\212\324>\006i\357>\262\204\340>=\205\267>\312\364\370>~-\215>\227\306\334>a\243\274>\213\rE>\362)\033?\221-`>\233\253f=\037\353\245>?\333\353>\266B%>\3502\034?t\031&>\020\360\267>\363\0148?\334J\376>rE\010?-f\375=\022\3520?\202X\245>T\261\321>>,=>\325}\252>\013\263\026?\331\306\016?r\335\373>\nw\201>l\344+?\325\271\261\276\205\340\362>\023\245\204>]\210\364>\311~\247>\325\265\203>(\376[>\230\3420>\r\205\032?ei\235>l\347\305>\344#\210>\270=\360>\340D\031?\302=\372>\217\025\261>\255pm>\257\037\300>v\355\277>\274i\035\274\216M;?\216\306\314>D\246\347>\007\240\244>\304\255\031?S\031\010>\323\271\320>&K\321>N_\016\277\343\376P\276*\330^>\332Bq>\346dE>\341\252h>Q\223\360>\021Z\364\2755\242\336>\361\362\203>#\252\304>\351\345\036>6\327\212>\347\272\215\274\027\032\003?\302\230\026<\024+\213>]\213/\277\232@T?\357\247\305>\021=\003?w\017\341>\226#\247>\220\346L\276K\233\016?H?\204>lj,\277\342\025c>1\365\275\276\221\255E\277:T\201=A\020d>\003\217\002?\231~\327>@]\035?\354\245\"?xm\r\276\326\265\256\274\366\364\266>\206\014\001\273\013\235,?#\362[\276\006\315\331>\264\3779\275\256\2473?\322`\365>{\266\224>/\337\'\277\002\276 \276ct\010;\357Rq?\213\271\001\276\002\020\233>\032G\267>\201\250\035?\007\371\321>\025~\217>\332\347R>\246\324x=\326\371J\276\236;\020\277\261\276\037>\002\230\303>\266\270-?6w\253\276ml\006\277\366\345\260=!\212@>\237\2073\277\237u\036=\334P\231>g*R>\254\\\026?\0042\305>\266\240\340>\r\247\310>Pm\274>\212_#\277\342\347\271>\332\2316>\325\205\243=\365Hy>\231\006\"?R\212}>\006y\322\276\223\321\342>i\310\205>\"\253m>\226.\304\276\025\323\326>Q\n\273\276M\026\242\276\033]\335>\245\322\361>\022$Q\276\377\233\000?B\024\020?\177\007\004\276\300\373\213\274\366\211\341\274\364\270$<\223\227\t>\333\027\257>u\211\254\275\344\320K\276x\326\345\276\306\"\224>\242\231\364>\001\321\310=\363@Q\277,\214\037>a\213\303=\315y\265\276\235\304*\276a\037\247\276\201\232\013>\020\231&\276\214\365i\276\247~%>A\264\002?\002\r5\276\311T\366=C\2725=2\030\360>\264\262\244>E\376\372>\254\202\214>T\224V\276\261\236\273>\315\246\231>\213\004F\276\362\233\243>\350B]\275\336\364\000? 1\342\276\364\'Q=\t\266\006>\315\307\276=\274\023M\276\204\212->\016\355\213\276\312\003\357\275\364\005\034>\232\273\303\275e\177\037>\310s5=\354\200\264=j@\277>\214o\362\276\246\321c><\307\237\275\307\017D>0\274\010\276\265\014\230\276\275k\321\275\341\235\223\276\005\025\253>\2169\021\276\246\250\361>.\2120>\036\317\316\275\004\374\337>dh7;\032\201F><\351\352\274\223z\312>\332\343]=\321\023\025>\320\307\034>\0218\300=\240\226s>\314\2161=\3469\322>\354\377@>Q\252\341>\221\261\260={.\333\276\334\030\303\273\254\006\242\276\216m\205>,y\362\275\370#\260\275Cc\233>\013D\346>_\3548\276\337\311\374>m\273\202>\225\n\327>\214\004\271=\374\216F>\211[9>\335U\277=\340\313M>\250_&>\3500\300<\307q5\276\236:\201>b,\210>%\201A\276\032J\243=\304B\301\276\310\245\246\276\344\345R>\010\211\022>\217\363\032<\300\330$\276C\025g=}\256U\276!l\241\276\252=7\276\2131\304=\262\341\244\276\3114a=\3225\272>\275\345\254>RA\250>B\321\223=\016\014\033>\336\340\"\275\246\301\214>\276\022\315<\242^\370\275(X\337=P\237j\276\025!x>]4\272\275\350r|\275\357\006O=\366\016\223=\310\246\242=\223,t>\361\300q>;\324\234>\237\004\023\276\313\325e>P\340\201>\247&\237<\373i\376=\034a\200>I\034O=\246\256\222=Hl\232>..\235>\234\005\215>\322\247\211>i\256\014=\377v\252=\236\341\363\275\006{W\276:\266\253\274t\265\331\275\306\237\236\276\3253f=\373W\273=\306+\235\275\324e\260>\277\277\221=\211\241\250=\302L\325=\377\030\325>\343\207f\276\213\270\010\273\3556\001\2767A\340=a\275 <\002\020\204\275\254\030\t>\006mY>\373\351C>\351\215\316=\017\261\026\276\361\337I>\244\000\207\276\r\244!?\005op=L\301\225>\347\027\252>A!\201>a\367;=\027C\222\275F\231G>\025\330\256=G\006\200>\306W\375\276\255\323\270\276\337Z\337=\342\346\004\274\204\023\371=O\024\036\276\005\003\214\275\210\255\320\275\264\014\234\276\177\216\014\277\002l\357\275d\010\003\275\370\033Z>\362\230\217>\272\321%\276\300_\245=\275\217\007\277\370<\321\275\310gx\275\301\303\264\275K\330\331\273\335KE>J\342R\276\346\322\264>\301\274\346=\337\002\002>\3042e>c\342 \275\311\312\310\276\3462_\276\261e\210=\323\004\354\276Vg\325\276\357\351\226>[\215Y\275t$\261>\213\355*\277\031\302\273=N\327W\277$\250\312\276\367\016\223>m*e=\251\234\226=\023\204\027\277\260\036V?;\"\264\274\336\253\237\275\220\266\251>\310\201\274\275Dt\361\276\266Mk\276O\334\200>\246\316\030>J\313l\275\"8\221>\216\311\016\277\2426\024\276.M\304\276(\3476=\364\375\347\276\314\267\355\274m\336\254>\254\361\224\274\010\\\253>B\250\233>\374\207\264>a1\243\275$<\305\275\357\256\233=\270\302!?R\036\201\275.\235R\336\033\037\276\364\013\227\2769\n\264<\013\213\333\275\361\335;><\267\350=\373:3?\263\342\240\275\253g\250\276\315\277\">+\037\360=Y\222\270\275\261\034B\276\013R_\276\317\271\t?\017\267\312>q=\345\274,\220\234:g0s\274=8\025\276]:\">\251\277>=\362\354\333\2746\376\315>\253\316\266\274nJ\007?o\211\332\2755\341\243=\353=W\275D\036y\275\314g\242>v\203\245=e\322Y\274\352F\217\275\001u4g~\313\276\305hN>\331\272\326\2764~\021\275\303D\315\276a\324l>\223X\210=\336R\343>+\017\034\276\027t\203=\000=D\276\265\215\212<\377\267U\275Yx\027>\356\361\362\266\n\374>\331W\204>\215=\250>\263\307%\274\270JA\276f\222\336>ZUv>u\223\360\276\001RQ=\"D\223\275\333R\300=\007\032K\276A/A>C\305\201>Rc\302\276K\367\352\275\324\344\237\275\353J}>\034t\346=O\325;>\"\241\">_\277\316=\356\201\237<\275\350\304>\321\225\030<\341\020\244>\017S\203\276\253\322/>6\027\000\276\017\213\232\275\330\247\006>\376O\030>\000\216\276\276a_\016\276\324\\{\276\020\340\203=v\344I\276o\251\003?\363\364\005<\246]\260\274\016@\245>cL\362\276\3002\237>%\327\334=\342{B=\016*\203=\341k{=\022\202\006\276pPU\275q\226k\276\264A\202\276\363\022\232\275)x;\276\266~\031\277)6/\276\"\367-\276\335\311\357>\327f\351\274\t6\216=\3243\361\275\030\337\230=`\342\316=\254\345I>\003\332\221>\306\017\273>\253\350J?\330\251\n>\357*J\276\326\223\346=yk\273>E\023\362>(\217(?\236\031\026\277\265\277B>\277q\034\275\\G\230<4\201\231>t\246\346\274\302\331#?C\020\373>c\330\206=\037\367\010?\272\311\351=\031u\235>\316\366\372\275\'}\004?\305\246\002\2762\372\260\276\327\014\026\276\206OZ>\271\341m\275\"\261\336>\352\361\334\276\253\315+?z\214\032>e\353\240>\224\260\203> \346(>s\001\322>\302\027\256>\027$5>\022\033\235\276\030MI\276\271\363\203?\251\242\313=BVR=V\231\206=\016\022\375=\317\233^\275\022\313\277=\316\030\337>C+\205?\\u\314=\203i\242>k\233\361>\330\222\210=#x\030?\351\034\251>\036\312\023>\037\233\262\276O\262->\303\034&\275\210dw?\241\"\362>\265\330\000?\224\312~>\333\334\226>\357\366\347<\224\335\371>.ah=$\366\017?_\364\330>5\025\357\276_\310\317>+\032\350=\242J\234>4\006Q\275\337\277k\275\3205J?+\260M>\217\256\320>g\215\310>\350\0265\2765Y\261>\204\322\030>p\303\301\275\201\271\215\276\314:(>\322\010?>zr\020\276b$\330=\246G\034=$\311~>n\241\014>>3\036\277xX\273\276\224p\214>V\374E\276@\232\006?<\231&>C\323\305>\200\206\234>\370W\262>M\026\277>\253\272\220\276\036[t>{\324\371>\313\325\257\274\267\356\235>0\000\272\276\334[\211< \263+\277\323\334\037>\022Gs\276\\\010\316<\335c>>G\337\261>\0106\372\275\215\343\030=\\\321\211;BM\356\276\274\245\323\275\234\221\220\276m6\377\276\363\233J=\007T<>\303hb=\334\235\310>,\333 =\201\273\334=\236\251\231\2743!\005\276\341<\366<\320\361\'\276s5B=\032\215T\276\032DI>\032\260\362\273\267\336\206\275Z\323\013>\304\317,\276\375\261y>\331?\207;\330#H>\365\212\267=\220\301\212\276e\022]\276\246DJ\275!\371\347<\"\272\211\276\3600S>\346\343\021=\031J\372>\031\274\333=\007\310\214;\374\347\230\274w(F\276\240.\220>\2169\022\276\305\022\260\276cG{>!%\032\276\207Ph\276\216a\324=\217\277\340=\376=\022?\0065\202>\361\267\271=\357\306\367=\314?\374=\275z\221\275\311\0238>\320\037\032=[\346\200>3T\242=\237\3554>\276\217\377>!\342\236<\002\300M\276\356\223\211>+\326\275>\373\251\334\274\245\353\326>qU$<\026`_\276\260\3173\276?\003\202\276q (\276F\304b\277\334\257\341\274\005!\021\276\337\204j\276\310\021\024\276\335AB\275\031z\216<\341\327\r?\251(\037\276>\364]>q\000\206\276\365\352\323>k\023\233<\317\"\316\276\203\311\241>\373\215 >\250\032\347\274~\342@>\303\324\243>\234\276\322>J\313`\276\336\221\t\275\266*\261\274\030dM>\202n\246\274,\3356?\373H\022?\033\013\241>\276p&\2753z\205\276c\244@=\010\262p\276\346[\333>\267r\256>`\005\304>\263\'\376\275\217\020\211\276\340\306\241\275\'\371H>\002PQ\275\34073\275\322\275,?+0\335>\373\313\334>\201WB=7v\"?\370\322`\274?\203\t?\354\010\261\2768\306\">\200\032l>\317\316\336=\265\3526\277\200\251\027?\345-\351\276\272G\026>U\007\312=\324q\314=\2202\260\276\027f\342\276nW&\276H\342\030?\205\270\313=\353\375\014\277\016\240\321=l\202\224>$\3115?\266\301\254\276\006\350+>\004\363\212>\025p\336\275\373\267\270=\032N\255\276\2416\010>\206\363?>5u6>\337D\232\275\254\225\013\277\353T\241\276\233\362\262\276\037\002\313>P\2148>\256\245\217\273\2546\222=;\227\003?\355\211\002?\225\212\270\276\3262\330>\021T\031?g\025x\276exc\275\343\274\313>\022\306>?jB\322>\336T\003>\254\313\204=\344\273\250\276\320d\217\276\354\031\245\276G\277\326\275\243\261\235\275\367\023F<\244\311\215>\217\303S>ua\241<\244\375\334\275hpY\276\235,+\276\235@\311<\036\311\034\276Q\210\010?&\000\221\275\367 \353>\315uB\276\003\023e\275S\357\312\274\213\211%\276\"\307D>\312\340A>\240\000\225>\004Z\343<\"\211\034=\215d3>\270\036\205>\261\346\235<\252\204\004\276\036}\237\276\303?~\276 CB\276\304\274\375\275\205]$;\233\343\310\276\207\266\233\275O\207\001\276\034[[\276\266|\251=\342\372Q>\362\022\272\276L\267\274>2\224L\276\276\352\255>\255\343l>!\312\r>\252\300 \001<\033\305\236=/\334\027>b\313\027\2767\314\265<\324\336\037\276\252\2661>nF\355>M(H>\273>\\\275[\300\214>\033\261\232>\242a\030=\t\333\">\376\247q>\225\240\274>\242*\243>8\304\233=\304\323\213=\231\353\377=aZ\246\274\016\032\227\275\277\221\233=\210\364\355=MZ\r?\276\306J>k\2645\276r^\242<\225\301\277\275\217\250\266>\370\365\376=\367\005\210>\247\340@>\265\250\360>\211J\253=\334\244\246>\262\020p\275\373\206\311>\201o\365\276\226\253\366=;\245_>I\341\256>\230\031t\2762\355\224\376=\373\333\262\273g\315\345\276" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/gates/kernel/read" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/gates/kernel" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/gates/bias" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 192 + } + } + tensor_content: "\356\370_?\204:8?\247\313\331>\007\277\007\317/?\260\231\013?\253\343\316>\230\021\n?2\252\030?G\n\023?g\325/?>_\036?\352\3620?\336n\036?\233\000\316>\003\0140?\214\310\301>\254\274\\?\315\247\004?\201\344=?\347\027\006?\343\006\005?\371\305\330>\307\250!?\3775_?\200\223\035?R\224\002?\024\362\t?P\256>?I@/?\002L\002?\323f\n?\337\215\205?`k\313>\010X\031?`\002\010?\323\247\027?\037\321\003?e\242\377>n\3349?|\366\332>7s\004?\334\313&?2\020\317>\326\317;?\352\365]?\210\271\037$Q?\225\177*?\0162\247>\332~\314>k\276\320>\r\3479?+R\304>\223s\037?\313k\355>Z#\025?\207\320\361>\302\t\315>+\276\362>\313s\357>N\3179?w\346\270>\361\275\245?\250\374\017?&\223#?Y\032\341>J\252\n?\265\265@?a\376~?\252VK?#*\344>\314qD?V\324)?\340d#?\031\021\016?\312\360\252>\221m\n?.d.?R7*?\251\332\014?\353\357\026?\304mw?\376}\327>\333\346\t?uw\275>\001\317/?\370\376\311>\263\027T?\326U\017?\253\332>?\245\177\276?\347\335\272?\241\344>?\n\313E?\227\364\211?\246\342C?\327\\\000?\361\312\224?\221\244L?\361\202R?C\3612?\350hR?\341\362w?5\367\225?e$\341>\026\312\242?\'s ?\037\336\322?\357\025??\304\370S?<\255\003?\276\365k?\353\2366?\337n\241?>\344F?\353\220\375>\340\367\367?\312\330\014?\261}\330?y*\341?%\243E?\251\321^?\232.\304>\354L2?\020%9?\316L\360>\220\202\262?\246\224\236?%\2578?\035\371\216?\271&\023?s7\240?xy]?*y\227?~F\306>\001\374*?@\016\033?\214\310\313?\306\247\317?+wn?\317CD>\300\024\224?\277\370\000?0\314\313>\2619\334>\032\367\217?h@\177?\343\001^?\236WE?}P\277?|V\257?\376+N?@|M?\346\224\356>\227;\263?\244\036\361?\275\3079?$\027f?l\214\317?m\007\225?W\nu?{\226h?\030\327\236>\347x\010?Y\266B?\323\232??#\307\221?pc\337?\346\231k?y\215V?\n\227\350>\254\006R?\230\203\037?\203\355U?\020n\242?u\320n?\030`l?0x\010?rl\276?\037\240\023?\346~\270?\301\220(?\312\340\005?\322\205\"?kz\315?\215\301>?" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/gates/bias/read" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/gates/bias" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/candidate/kernel" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 192 + } + dim { + size: 96 + } + } + tensor_content: "\333c\221=\267\377\030= \017\004\2767\010F>b\322\227\2733QP\275f\375g\276\334\023\006\2772\236\224>-\374\227\275\212\311!>l\302#\277\250Q\245>-\325\252>x\212\342=\327\032h\276\177\301U\276\377\315?>\320E\376<\346:^\275\252:\245\276.cy\276\202=\246\276\275\236\256>.\236\211\273\276\031\006?\221\363T\2761\244\324\276_\200\301\276\242z5>\212_n>\177\227\245<\232L\247=\373Q\300\276\216\006\016=\361<\252>\24567>\266.;?\271u\013\276l\264\354>q\324\205=K\233/\276&\261\023\277\204X\223>C?\354\276&\325X\276\2519\350>\231n\244\2763\271\027\276dj\022>&\302\324=\312!7>czp>\322\036\032>\240\254\350\271\327A\200\276-|o\276\344\364\271\276\375\266\366=\216\204\243=\376\244\004\276\366\370\216>3\n\n\274\0260P>\277#\004\277\3410\322>\315\026H=t\274\223\276\376\255\255\276T\324\211\275\357If=\312\257\355\273\321F\277\275\214\034\245=\253\025\016\275\200\255\370>\030P\001?\215\227\253=\302K\226>\250{\201\275x\331]>q\275\304\275\266\310\227>A\203\262\275\253YL\276\203\204 \276\346\2054>`\235\200>\t-\230\275;\330\201\275:\253\202>>\1778\277WR\221\275\361.\262\013\0278\276K4\035\275\3661\233\276\335\265\177>R\376\000>\356n;\275\322\372;=\350\'R\275hFz\276j\335n>}\316\275\276\202\r\201\275\016jC>i!H>-\023@>\222_r\275\017\326\250>\264\245\305\275\264\273\363=\236!\205>\225\234?\275\004I\032\276\\l\000\273\315\002\230=\373\333:>\034\026q\276D\300\001>\250\010\272\276\264\316\314\276\024\255L\276\352\230\222\276\016\264\233>\316\253\266\275\036\225/>g\276\023;\315\245 \277\036\025\000>\235\177\261\276~l`\276\374\203\235>o\r\001>\036\367\312\275\201\226$>\262\236\231\276?\374\246=\302`\333\275\232\307\032=\r\241\210\275m\306\033>\344\3358\276\204\375\326=Q\326\027\277\305\210m<\031\215\030\276^\367\223=P\311\253>\346\311b\277\335\\\357\276\246\361\026\276g\200_\276\342\237\007\276\313\\x>\n\335?\275\013F\005?\032\202r>K\261D\336\235\227<\3669\240>\370c\214>\354\352\217>\305\236\230>\260[\326>\026 \224>\225\036\333\276\275\205\337\276\317\325>\273\235/q=\017\373\266\2764\025\257>\244T\237=\261\274\n\276\356\214\245:*\252\233\276\237\305\306\274\224E\237\276\204b\364>\244dD\276\247:\301\276A\004\r\275\336V\332>\307Vb=o\375%>\356M#>\306\216\344\275b\343\262>\261L\020?\373fI>\343\216\017=\265\347\361>\224T\277=\3069\263>\207\225\242>0\000;\276d\035\206\276\026\'\302>\361\r\334<\241\263+\276\201\251\212>D\322\317\275\221\377\307\276<0\275\273%\323O=\006\236|\276,\256P>G\360\341\276A\211\226\276\3401\225>\023k\t>\320i<=\003\261&=\331U2\276\365z\324=\212\013\243>\346\234\354\274\260\331\213=\023\214&\277\301[\037>\035\227\324>\217\310\204>\365\303\023>k\326\254\275\224\2018\275\332\r\246\274\316\336\233>\032\360\014\276p\212b\2765D\301>/tq>H\217\363\275\362\0227\276\210\037\374<.K\'\277\023:\003?\331\210\340\2757\367\213\276)\203\275=\2039\311>\317e\224>\244]\203=\006\270\207\276\356`\344\274\006\336b> \233\271\27607\027\276$V\362=\223\325:\276Iy#\274\335\245m>a#\252>T\0366>\366\264\'>\202q\004>\251\262\226\275~-\212>Y\030\n?}pp>\231:\021>\\\370\022\276\326\366\013?&T\236\276\321\032\r?\323\204\263\275\024|\022\276L\375\357>\203\215\232\276\277\n\270\276\206;\000\274O\245\004>qZ\365\275P3K\275\301;\256\276\002 K=\376\261\026=\333 \330=E[\231=.M\013?5sz\275\231\324\203=\217Ok<\220\034]=\333\365&<\341\336\312>\036\264\020?\273\240\305\275P\235\001?\026\355\n\276\340G~\275\233\343\200>\335\277\220\276I\277\007>\202P\222\276\347\036\017?\254\314\\\275tk*\277\310:\035\277\277\355\375=\334\342A\275\323\030\225>y\002:>[V\230\276_\262O>\251\323\336>yo?\275\342\350*\277\362\315\212>SW\364\275\034\213\265;\242\000\005?\r\227\314>\315\035\324=\204\364\205>Sd\203>Z\316.\276\251\374\242\275\322\352\002?\3435\240\275\032\003\260>\275\243\242\276\317\177\354\276\260\377e\276( *\275\332\311\030\276\235\344\266>\250\230\024>J\344\336>\356\356I>\275\316\215\276:\370\227\276\002\232\t\277R\274\357=f\036\003\276-\353V>0\263-\275\36735\277\2321\305\275,.\207\275\204\320\334>?\215H>\004\010\001>\243t\242=\350\352\232><\300\324=a`\320\276\363\215\222wS{\2764\n6\277*\226\033>\231\371\263\276g\"l>\307\371\326\276P\0343\275\2550\353\275U\366%\277\"\257\220=\207\245\237\276S\311\020?\022\277\332>\376=\255\274\177\021S>T\235\315\275\023eA>\353P\244>\205\320_>\265\355\310\275%V\014=%Y\253\275\347\365P?\327;\312>\004D\237>v\263\275>\256\226{>\335\007\371\276\200\202\206\276G\343\305\276\300d\302=\005#\225>\310z\217\275\025#\247>\270\227\361<\374\234\023=:V\001>y\263\n>\034\nQ\276j\336\327\275\355}T>\343 \310\276\300\325:>\210\301t\275m8\272\27643\205=\036?\204\276\315\306[\274k\\\026\277\361B\251=\370]\343=9\257\252\276\353<\317\276\003\311Y\274\216\025\316\276\'y\027\277\036\232\231>7~E>\205\226\017=\020n\022\2778\277\217\276\016%!\277k\003\331=\272\330~>]j \276H\350^\275\327\210\227\275.!\020\2751A\007\276\206\312\213\275E\276\201\274\037\007u\276\001\220\247>\202\276\025\277\341\253\236\274\033H\002\277\010\313\027>\244&P\276\016\336\305\275l_$\276\262\r\245\276\333\265\007\276y\372=\276~`\021\276\303p ?\034\240\205>]_j<\024\210S>L\313q\276O\362u\276\007\233\004?\250>e\275t\022\201>\206*\240\275\001\326V>S\216\203=\304V\335\275\372}\312=\320J\244\275\201\3465>\307C\247\276\363\274\213=\244\265T\275#\215\'>~;\311\275P\360\262=\215\317\363=$\200d>\037!\227>kx~\276\337\311\245\274\356\255Y>\325\352\301>\036\350\346\276\225\333\\=\020\301\007\276\254\307\343>\227@\030>?\007\004=\263X\347=Y\231\001\277\345]\n>\2363\223=J-\313\273\t\024\201\276AE\275>\257I\010\277\224Z\024>\367\256\215<\313\245\251<\237:{>\261Pp\276\347\026\345\276r\315\377>5\3212?\362\2532>S{\'\276=\203\224\276C\305\223>\230|\240\275$0\024\277\221\023\355=\1778+\273\233\023\243=\331\223\000?}\304]\276\233T\277\275Z\224\264\275i\332\315\275\327\000\254=\265y\232\275\032+\311\275\213A\031\277\37564\276o\025\000?\214f\216=]\3771>\343t\230\276R>\300=\225\021\010\276z\"\304\274\3348\247\276\307\231\376\275^a\243=\222\360\004>\320o\017\276U\357\215\275c\200\225\276j\216R\276\202\235T>ps\277>\0267\014\275\354\315\024\276i\001\362=I*\217>\334i\"\277\244>q?\000I\300\275\346\265\207>f\177\231\276\307|\377\274\315e\217>zj\005\276^\366\032>\335\024k=\206\0340>\231x\370=\3618_\274\252\321\214>\320w[>\341\262\001=\342\002P=e\235z\276\361\230\257\2767\264\202\276\331U%>\263{\213\276\300\322/>\366\001\200\273\035y\253=\014\034\356\276*\3358>\241\261\017?\204\014\002>r\316\211\276\216\221\027?\357\267T\276\200n\216\276\304(\201>i\022\227>\300N\265\276\235_\200\276\312b4\277\371\n2\276\246\333\314\275\0139*\275Teb\276U\035\311\276\n_\203>\324\277\022?\337y\254=6\247\203>\212\t\271\276\307{\035\277\300\025\314\276\247\327\240>\350\234.>\360\350\200\275\274\266\336\276\243MB\277\026\317\226\276\272C\221=\214\033\205>\365\026H\276D7F\275\312\371$>\314\304~>9\237y\276,\264\037\275\206\244\266=\267\240!\276\361\311\302>-\255\013>\020d%>\017Jd\276\326\247\001>Xc$>\251\244\'\276\014\334\317\275\334# \277\320\031\327\276-\331\265\276\2372\n>\";\214\276\362-\242\276rjd>+o\212=Ts\210>D5G\276T\n\205\276\377>\177\274\323>Q\274\023\023C>\265\273$\276\'\316\227\274\320\346\246=\317A\240\276\204\305k>\335\013\265\276\030\t9\276\264\244\030=\277\263\377=\003\206\334\274z\323\255\276\357f<\277Ol\313=\033\034\337)N=\241iz>=\233\024?7\335\311=\235\236\225<5AS\275\2270\312>V\270\'>\265\3215\275.%\321\2747\237\211\276\177}\036\276\332;T\276\027\005\024>\007\036\327=\360SP>J\007\252\276\327\232\341>@GP>c\3229\275\3033.;\376\371\345\276\361\334\333\275o\263\220>\360\330n>\027\306\260\276\331/\032>\"e?\276\325\327\262\276\017\276\221>\325n.?\026\331\277\275\347\002b?\327\013\3039<\262\005\277\372:\237>\271k\255\275)\\\242\276$C\035\276\323\275f\276\250\204o\276\312\232W>6\022\217\276\345\357l\276\0004\n?\017\231\030?\327\274\305<\330\353@\277\331\326\023>\333\2477\276s\004\035<\372\336l\276\265n\213\276?\302u>\311|1>\3016\360\276^\270h\276\377\005\345\273}\242\353\276\n\307\210\274\222#\337\274\213\264b>\266\207\032=\\\324\246\275\316oJ\276\374\3624>\220\213\360>o\313\367\274\230\314\342\2750H-\275\317Tq?\332\272\243\276\"\274\024>G\307\321>\243\253S?\"\336[\276\330\247\'?\200=\231>\2060\330\276\326\376#\276l*\224=]\010\252\2761n\222\276;\243\266\276\016\t\213\275\346~\246\275j\211\t\276\2300\303\2764s =E\363\264>\357\373\326\274\305\202\273>\357\201\230\275\276\264d>\337\370E\2763x\370>\261b\345\275@\316@>$w\371\275\022\314\306={\337\006>C\377r\276U\035\202\276b\243B\275\335u\304\276n\201\330=\325\n\002?\232nZ\276\214i\275>\352;z=T\255J\2767oW\276\203\254\200>\222\221\026?\020\007~\276\013d\367<\230F+>\352\004\227=U)\233\276\231\321\257\376.\370\276$LZ>\220f\013>\247>\266\275M\321\336>\362F\262>_\262\016\276\315A\267\275\261\3300\276\347\363\010\277*n\234>\\\214~>)\232\255\276k\245T>\355:\247=\312\0167\275\360<\274=\010\214x>\322\314\320\276\257\347\324\276D\316\277\274Vrc\276.?1>\006\255\\>\206Fb\275\031l\374>\274\017\372>e\230\025\277\341\340\226>\244\007\320\276\340\372\213\276\003_\034>[\302\260>\245\226%>g\004K\276\254\014x>\324\353^>\243l\017>\347\374\202\275\313\316\'>\371\023\206\350\345\276h\275\007\276\327\251\272\275\244\030P>d\215V>\363F/\276\030\332\244\276\347<\277\276\036+P\276\013\362\312=\nY\215\275S^\014>\202v\346w7\363\276]$\222\276\332Z\024\275tb,<\363#\350>\000\373@=\302\303\271\276T#\273\276n{Z\276}\361B\276\204F\317=\256\220\256\274\334\263\'=\345\317\370\276\344\375\t?u\230P\275:Y\246\276}\2572\276\033\204 \276j\252\300>\372\360\213>\360\310\224\274\352\227)>\"\273\225=\275\257\001\276\371z.\275q\364W>G\241\202= \037\325=\320b\013\277\2578\252\2760\005\205>f\256\367\275!D\006\274l\271\t=\234\365\234=/\334\245<\t W=\262\017\305\276\252\371->\346G\013\277\225-_?\240\375\305=\276\231\230\275\374\t;\277 J\034\276\315\001\203\276\215\371~>PQ\246\275\372\260\323>J\374\343>>\246\374\273s \241>\010\353\026\276\242\020\236>u[\324\275\330\0322\276\327\271\t\277\322\375(\276|\220\260\276#\217\223\274\371O>\276\014J>\276\321\213 >r \262>\350\032O\277\354:\235\276?\322\026\276\033\351\314\275\357\260\275\276s+\231=\026\210\010>\303\345\204\275\034\026\311>}\367u\276\3747\274\276\342\177b>\177\274\027>\245Jv\276\376\365;\276W;\212<.\007H\277A\247t>\251\016\346>\022\370|>\217I5\276\271^ ?\211\007\373\275\350\351\026>\350#\002\277\206\332\270\305\025N\276\262\206\241>id\200\274\n\211\341<\252\225\n?M\224\306\276\244\272e>Z<\331<9\353:\277\374\n\362\275\303\307\237\275\303\352\177\276\222\0045\276\202\361K\276\235+^\276\307u\006?\251\327\304=\276\221s>\037\320\303\275\266U\243\275\037Y\033\276}6\357<\204F\217=\010\372\206\276a\300\202\276g\327\205=\363\225%>H}w>C\034\020>\372\332^>\322\356\201>\017y-\277\364\371k\276@\326\256>\'\377\256=\000@Y?\220\270\n\276\336c\225>\030).\274I\234E\276\024\341\361<\375\266\010\277Z\251\257>\242cW\276\334.\000>c\317\\\275\3537B\276\235\016\210>\310\240\270>\227\026\211=l\2643?\2628%\276\341W\276>\036\035G\276mH \276\177TZ\273\337\014\034>\336\022\021\276\033\320\272\276\331%@>\021\026g\275y\030\210\275@\217\276>\277\3458=\350.\262>\300\332x\276\312\275(\276\021\233\211\2768\303\343\275\332\004\035\275b\341\260>%p2>\250/2=S>\233>\2052t\275\354+\201\274\201v\204>\222\225\177\276\226*\217=L\302\302>\234I\233\276:\311\316\276)\375\217<\376]\226>\271\256c\275Qq\321=\\|\216\276t\036\006<\352\261\370\275\005k\374\274\r+@=\263\3323\274\264\327n\276\375\020\226=\357,9>Qm\247\275\265m\202>\314\334\035\276\377j\204>Y\264\322\2744\277\367\276|\016\016\276\035\262\314\275R\233\"\275\301l\r?n\'\362>\253\202\337=X\246\272=\243\246$>\t\324w>\342\t\020>\272\254a\275\205<\213<\363x\210>D\017X?0\002\017\277\031W9\276P\344\322\276dX\361\275\251\341\254>W\350\335\275+\177\203>\371%\213=\003q\004\275\r\303]\2767\316\316\276\346!\274\274\037\033\006?~\0056\276\036\233\'>\335\355i\275\004tG>\370\345\234>s\304\314\275\225\263\315<\263\256\247\275\024\377\376\276\277\356\014>\006\t\243\276\252\201k>\357\226\023\273\035\243\267>=\036\r>\t\301\316\275,.\020=\005\022\374>f[\037\277\306|\216>\215\247\353\275\327\231M=$\330\303<\035\355~\275\273\016\215\276\301\025\225<\000\262\371\275\244\320\215>s\324\r\277\263K\373\276*pW>\305\265\010\276\323\350_\276:\352\311=\376\226\034>\305\323S>\231\265\253\276\326\025x>\004\346\230>\347\005\234>\245b#\276W\356\237=-\367\006\277\275\222\371\275f\376\377\2767\"\n>.e\356\276v*\325\276\307V\256>\177\323\366<\347S\242\275\325\305==6\336)\277sh\250>\260\216\351\275D\\\337=\227JG\276\260\224\217=\250q\333=I\2559=|\014\373>\225\014\001\2761\325\271>,\3429>\320\275\326\276\242\255/\276\235\034\250=x\320M=s\227\240=\205\250\233>-\272\330>9\206H\276B\355\310>\023\265\005\274\021\246\002\277i\371\t\276\010\357\242>i\361\016\276I\'\r>\332\372\300\276v\255\334\275\236\177Q\275\215\224\261>\000\376=>-\253\351>\333)\215\275\025\240Q\276\330iP\276\366\221\335\276\341\001U\276gl\311\276f\230\377\275v/6>\\\322\355>\0365_\276\204\373\331\276b\255\317\276\232o\221\222\345\203>+\220b>KN\312\276|\026\300<\254\330\252>D\306\005\277\372\330Y=\202\241\\\276SG$\271$\230\331\276\357\233\004>\271\014\014\277JAV\276\252\206\210\276mFW\277\255\">\275A-\">\032q\246>\225\264\255>n\223\005\276\311\230\r>\201F\220>\364\026\216\275\261\321]>\246<\270\276\214\2223\277\003\360\t\277F\305O\273` \325\276=\013\022\276\3369$\275`\311\317=-2\021\2767E\330>\337D\233\276\227s\013>N\r\003\274\324\366\031\276\3501\316=e\223\270\274\375\220\261\276\250\211w>\253\212\311>\202\337\033\276\214h<\275\nw\240\275c\276\264\276\345\036\362=\343\225\247=*\007\026\277\026\213\027\276iEd=\375<]\276\351\'\016?\262 \226>\253\372u>7K\215\276\322\263d>\024\222\314\276\025\356\251>\222\005\327\275\354\001\007\277Z#@>=Je>t\210\275>H\305\243<^b\007>\326E\177\276\'\365\257>\362\211\340\2757\257$\2765\017\335\276\316\365\322>\321\n\203>u\335\014>L\013\357\276\373Q\201>a-\251=\t\306\307>s\334\342\274\340\025\265\274}\323[\275\0354\">\217J\345=\277H^\276Sc\032\276\371\026T?\312\270>\276\274\234\246>O\274$?\t\327\356\274u\266\242>\205\320\013\277\323[\310\276\352\274\036;`\334\214=\261!\000<\314\236\220\276\2018\277\275\022I{\275\355G.\275\234\037\306=\271\226\230\275\246\215\332>K\370\220\275bt\242>\tIZ\276\261/\250\2767\366C\276\352[\202\276\352Tt>\374\343\270\275W\271\"\277\344\221\007\277\277\230L>HE@\276\263\034\351>\362Q\247\276\001z\367\276=\r|>1\206\251\274\021R\260>\rJh>R\200\020\276l\231s>\331\342\256>V\263\262\276\263\322\225=)c\t\277\250\214\001\276#5\256>\'=c>\324\373S\276\273\352U>v\n\037>\216\212\025\275f\336\202\276\251gj=l;\026?\005U\243\275K1\302>\253fN>\000o\017\274h\237\023?G\374Y\276O\020\227>@\252\324\275&\035\324=\375\230\306=\226\312\273>8\350\">\010\\\021\274c\255 =Vq\267\276\257\323\215\276\356yo=\247\035\002?>\242\207\276\303\270\262>\003\242\202\276J\027\005?\212?\235\274\362\346\016=ub\263>\265\2654>\036i&\276\0337\266\276\t\245[<\224\016\020\275\354\353\000\275\343\024\214=\237\334\302>\234\265\223\274\251\273\245\276\215*\266>#\321L4\277\027&]m\221\331>\267D\021\277A\363\027?\2028\315>\326e\">QT\374=t\207\314\276\224\342\307>\035f4>\001\307I?T\233\257\276\234\0208?\322\013\262=\242\220\001\277.\226\235=\217Hc\276\252\203Y=(\257\364\275\336\026\274=\371\325R\277#\213\220>\271\322\346=\247k\207>l\327\313=j\317\352\274\230\245\273\275?\215\017>\027\353\243\276\000\253\256\276\341\255\036=\257\364\036>\013\032\265\276;\030\222>3\326L>\200\335\351>\301jO\2760\316\373\314\233\321=\273\215\324>#i\346=[\250]\276\310\211\027=\211\rP>\244_<\276R\312\030\276k\026\215>J\010\271>\206\331E=j]T\276\353\243\274>\217\354\006>%\245O\275\033\\\030\275\245\217J\275\266T\241\274\311q\233>\261\350\212=\276\324E\276\365\016\013=-\210\262vR\253>mG6=\215\3502>\203\220\000\277\214\260=\2769\201\013\276p\304\227\2766\220\224>\357\206\r\277CE\210=HA\205\276%=\020?]\306\215>\217\370\267\276\215G\030\276\340\256\313\276\035\211\362\274\225\312\242\2764<\203>\rfx\275@\322\227>\263@\215\275\352\020Z>Y\242u>T.\016\276\203\352\332=\025\001\245\2753|\233>&\014\364\274\256\270\200\276\244\263\003\276\252\005\017>Yc0\277\365\231s\275\344$\230>\036H3\277$N\314>Q\376 >\241n\315>aj\334>=\000\260\276OJ\253\275\353\370+?\356\313\252\276\264\023\216\275\302\223\014>\212\334S\276h\034Z>I\003\030\276\374\300\230\276\345]\026?5\351\264\276\220I\021\276\326\377\241>\320=u\276\267o\243\276\234%)?\375\017\331>\224\264\307\276O\313\206\276\233\242\373\275\203\324C>\357\351\373\276%=\020>\347\232\312\275C\031\350\275v\334\225\276\263\300\374\276cr\303\272g\260\243=\347T\377b\261\t>`\205t\276\215\243f\276\375\367!>\313^\202\276aDS>\202\232c\276Vq\027\277\017\201\336>\343S\215\276\200\333C\276\231\362.\276\351\254\270>+|\020\276\313\213\210>\204\002\226<\372-!\277\332m|>\273\327\025>\226\\\366=\264\273\256\2750\313\007< \323-\277p\026}\275\343\206\373\275\360\244}>\315\037\243\276\207\333\212\275mY+<\261V\225>\346\256\205=kw\327\276\201\004Z\276kIp>\236\377\353=$\260I>\320\370U\275*\001q>\237\300H\276\271\353\337)\013\247>Y5\307<\207\362\031?\311|\303\275c7W\2461\370<{\370\245\273\375\336&\276-\"\335\2764\205M>?\305\377\276\222\311\220>\224V\027\273K\325\223>\361\2134>\371+\243\276\362\266\206\274\272\255\010?{c\003\276e\010\263=\235\376\214\276\204\233\346\275\302\302X\273Eq\276\275\374\t<>\305e\237>Z\211\374\275\217\271\214=\204\301P\276\314\005\330\275\334B\242=@E\n?\261\247:>\361&\211>\t \212>tA\331>Ev\034>ZV\360=\356\210\250>\371\235\276\275\325W\016>\377\262\232\276\342\204\334=\225z\312>\312{s\275\321@v\276S\n\256\276\342\336\205\276\304\300\233\276v]5>\023\277^\276\246\301\013\276Xb\035\275\227\300\356\275r\346r=!\234\022>\267\304\225\2767\216\266>\010\222\266\275\220\010\271>0\317*\276\\:\'\276\010\311!\277-\253[\276l\375\324>\320wY:R\276\233;\226\214\262>\266^\372\274\014\270l\275\n\340\232=\377\326\360>\363\235\314=\334l\366=\002W\307\276x\345\340\275\224}\344\276\337.p\274\177\361\234>\001\027\254\276\3220\022\274\345\253\201>\0173\210>\266XH>\304\337\216\275\032/\020=\010\272;={#\252\276\275\024\346\2748\333\030\276$\361\243\276\3236\014>b@\377\276\257\265\352\276XP\232\276(\326q=R&8\276gb\247\275U%\260>L\027\341=\016\310[>\351\221M=\225\232b\275\330\036N>L\247\336\275\221\374\201>J!\241>\004\3133\276\t\271\211>\323\316\342\274\324a9\274\334$G9\024\205\272\274\3036\207=\350k]\276\0103\353\275\216{u\276\265\372d=\3533k\276|\304U>\233+\'\277{I\321<\036[\244\275\221\337\347\276\213\231 \276\275\350W?\024\244\311>\221\341\016\277\344\352\033?Be\331=m^\271\273\342\235\362=@\244\307\276\327cu\276\264P\'\275L\356\021?\035Wd\2762j\037=\262!\227\276\353o\033?\204\346\010\276\372\007H>\3264\317>\327V\242:\313~\233=\014}\222;\345\022\024>\2234\037>G,\017\277\302\242\310>\244\324\207\274(\304\317>c\000]\276\245\201\024>\300q\222=W\355\303=\223\274\000=U+\220>\334\245\t\276\'37>N)z\275\305\366\232\276\301}8<\3731\312>r\213\270>P\2401?\001\216\252\275\336L \276\300Ba\276\374\212D?\0252\245\276\017\204\254\276\272\226E>\266\254\273\276\010\253\225\275\217+\t\276\335Y\250\274\"}l>W\020w\276\370\'\263<\337%\276=Q/\304\2767w\233\276\026\032-=\232]2>\214\367\001\277\361d\301<\330\033\242=j\3735\277Re\266=\370\324\313\276\311`\230=\340O\005\276\340\315\210\275O\267p\274oq\300>l\305\315\275g\034E\2765\204\016\276\364\221\336\275\271\245\370=\375D\353>\020\236\027\277\304\325G>\204\357\222\275s\003\240=\314\347\014\275\252\217\017\277\362_\202>\027x_>\332\272\207>^<4>\2254C\276\322\334n\276\241\323\366=\000\030\241>\3009\344\276G\025.\275\274\220\260\276(\032\233>\242\ra?A\007\n\276P\235,\276\332Xh\276\004\2327\276\225r\324>\265\250\206>P\231\031\277\322E\246\274\331E\244\276\200Oy>cb\221\275\223O\007\276!\016\210\276e\000\330\276\217\364\201>b_\002\277Se \276@k\024>x\233\207>\333q\221\276\370&\221>I\323!?\026\312Z>\270\000\276\276\267\203\370\274.\202\330<1%\003?K\311B>\372\334\320\276\306ng\275\330\323y\276Ns\256;\361\335\010=M\324B\275r)M>\230\343J\274\024\376\311=\233\000\331\276\226fl>\016\266\247\276?:l>\021N\003\277|\2002>\275\355\027>\0322w>)\377\022\274\373\362\344\275\301\224\200\275\024\307\357\274\023\353\313\2762_\311\276\250\360\342>\n\340\201=\324\354v\276\242{\231>\314\261\023>\307Z\316>\030*J=\037\'G\276D.\001=\037\227\354\276 8\005\277Zx0\276\261\217\266<3\352\342\276\323\324\333\276**\266\276^\355,>GI\352=i\025\354=\265.\213>\020\234{>\327T\316\276\'\206\010>\240\035V=T\002\374>\334\177\341>T\207\305\276\214F,\274\243-\n> f\213\275\227V\267>\237\343\252\276\261P\256\276z8\306=\3219\307\276M\306\010>6L\252>E\265\000\277\366\215\352=\037\031\036>r\017\267\276VX\347\276\374\337y\274\374\2055>\352\302\316<\244W\224\275y\302t=:r\322\275zym\276\034\354u>ZaO\276.>*\277\271\216\030\274\266\266w\276\325\302\316>\250\223\332\276\017\336\235>}Lf>R\375f\275\031#C\27629\316!\317\031?\357\261i\276\0009|\276\274\204\006>\273\337\245>\030\210\003\277\351,\210=\300\263\032>n\275\223>u\215 ?\226u\322\276\326\027Z\275\353\004\276\276\337\324$=`T\024\277\362\202\200>\343\362\034>\374\315\372\276N\265\227\276\247\317;\276!f-\276#\376\301\275\224\270\205\275\211^\213>Qe\374;X0\020>\366D\326\274\327\262\217>\265+\n\274\234\333\t\277`\237\214\275\"\346\233>\303e<>k\252p>h\263\t\2742\036\266=\026\3772>V\\\020=\355\023n=\237 \023\274\322\256\227>\240\251->\257\373!\277\276\006\270\276\371\226,>>\264S\276\001\311\024=f\225x>\217x\254<\320\211\313>\257-\333>\317\002\344\274\236\320m>\260)_?\274b\226>\242\261\241\274\221\342\r\275\263L\266\275\266*\020>\267\3103>\261\307\215\276\343\364b<\236<\034?\375\305\231\276\204-\322>#D\202\276d=\311\276\244\307\013?\272\2721;\000\260\202\276\311\314\301;\213\227\234\276b\245n>\315\026\013>\372\314\273=\362\374\237>\227\363\033<\323\017\n\276\331\264@\277\n\256\021\275\014Q\344=\222\032G\276\270\rx\277,\301v\276a@\251\275\032\002\000?w\312o\275t\001\242\276{\306\002=%\230s>\324?\261=\250\021\253\275\302\026x>O/^\276h\346\260\275\311\365-?\307\314\371=u\343\272\276q\025x>\234\t>\276\201\201\270\276\376;\223\275\335\364\271\030\206o\275\322\n\010\277@(\364>s\371\022>\'\323A\275N\344~\276\324\310\006<>\270\305\275\271A\343\276r\345B\276a\010\306\275\257\203\'\276\"\365\311>>\300\261=\243\306%>N\267\233\2760\340\036>Y\213\027\275\\\361\240>\332\315\210\276\036\007)>h\\D\276\251\270\032\277\363T\312\275\337:-\277\261c\273\275\377*\337\273dU\350>\031(\326=|\304O?O\314\271\275\027\352\247\274b\016Z=\331\"\021<{\036\220\276\343\325\220>\345\r\037\276Lx\224\276\331\243;\276\n}\014\275X~\256=\"\263?>\370\371Y\276\227>\270\275\353-\244>|\330G>\242@y>c\253\331\274F`m\276J\316\216\276\265Wv\276\223\022y\276l\361w\276a\266\031?\374\tE<#\351\221=\300IC>Wy\340=\2430\325\276\035\215)\275h\363\022?\326\335\016>Cu\221\2768\201N>\"\364\255\275\271>;\276\026A9>{\320\030\274w?\366>%Y\273\274z\035\257=\237^S\275~\313\332=\242\016\364\276\006\337\017=\304\263\223\276\336R\'\277i\232\251>\243\010\216\276\337\026\'>\371DJ>z\333z>C\204\236\275\242#\300;/\r\227\276\213\035\270\275\032c\210>\361e\253\274L`\001?\006\312\375\274\253\t\336=\020\331\225\276\231\205\202\276G\275\330\276\005\2170<1\256\243=D\274U\276\367\330C\274\266\325\246\275%\027\277\276Z\360\224Z\353K\276k\'|\276![;\275\246s\342>\276fT<\002\216\244\276DR\244<\303\342\022=\237\210\357\276;\306:>\312\275\231\276=\251.>,}\315=\272B0>9\250t\276\311|e\275\340\212\240\275\325\225\227\275\t\264a>\334\014%\276\316\005\233>\006\350$\275I@\350\275\307IO\276`;\206>!\254\240=\200oG?\037`\316\276\221 \223\274@n\260\276 9T>/\261\320<\276\245\233\276\023%\203>\005 \">|\322\336>\350\362\302\276yZI>\177\263A\276\363\n\216\276LN}\276\376\306Y>\266(\213=X\275\001\276%\000Q>\266\024_=\222e\260>t\n$\277Sv\036>\307\321\231>\316\352\300=j\026I>\372u\027>\264OQ>la.\276v\266A\276\025\t\250\276\306\0268?\310t\227\276C\252\275\276D\362\375\276\034\363\234>&\335\000\277\231\212\221=^uv\275\371\350X\276\203HC>\266\324e>\272\334\023\276!WB\276\'\363\333\276)\231\023>VPF\276\030\325\017\276T\020\224>\261\017\316>@\353\017>\325\032\017\276o?)\276\303\272%>\034\221\323>*\255\217\274\205.h>s-\005>=\220\360=\361H\202>D\033<\277\027z\033\274OD2\277\323j@\276\257\254\325=\177\323\210\274\273\221\321\275\216\221\031\275\266f\025\277\301\337X\276]\276\256\276j\247\317\276\337\261\230\276u\257I\276\356\022\223>\224+><\336\025\324>\355\202\257\276\245\277\334\276\343\365\207?vTr>\357\016\261>\021[\352\275\210\235\226>\023\252\244\2753\262\225\276G#\031?\025m\214>=\264\243\275\326\242\205\276\353\357\210>\030\001t\277I(C?D\205 \270\217[\313=\234;\002?\\\223\210\2750\264\005\277\\Z\273>}\373\256=u\324\342\276\277\204\360=P\342K\276N\203A\275\037\275\324>\354\341m\274\335BI\276p\031\254\276BV\315\276W&V>\311\235\372\276\343\256\001?\264\255\034\276Xc\243\274eQ\240=R5\220\276\r\273\220\275\231Z;>\037_)>n\034E\276#G\037\276\024\023Y>\341\356b\276\034\030\020\276\265\034\366>\321\233\215\276/F\206;\262\334\010\276pF\227>\267\003+\275\010R\036\275\276F\021>\316s\363<\203\332\\>vb\220\276\320@\264\276|\265]\276sdr\276[\244\217\276\213\354\246>\231\014\000\276\350\301\213=G\355\251>\020\353%\276Hpl\274\317\333d=y8\251\276\346\232\346>\rhM>\004\302\036\277KE\264\276d$\n\277\250p\004\277\214V\204>\260\342\224\276\202\345/>Q\325\305=\010\255K>\305\374\263>i5T=\257~\310\275\227\226\250\276\003\226Q\276\217{\372\275e\272!>[\211N\276\350$\317\275|\351\347\275\024@m>\230\245d\276\301\023\221\276\202\363\214>\204\026q\275\002\311\255>\351\020\027\276\266\\\003?s\311t\2751J\360\276\240\332\033\277|IY>rr\305\276\324M\014\277\314)\235>g\266\213\2769\320k>f\221\271>\2649r>\311\303\217>f.\235=b\245\303>\3549z\275P\356\204\276\213\261\216\276&\270V>m\344!\276\345\224g>\266Q\263\275\2721\301\276Q,\247>\267c\315>>\031\216\276\2200\375<\374\036>\275!\376n\276\206\271,>\261x\016\276|\333\023\277i\'\251>\t<\237>\363\340\323\276\010\314Y\000{\240>\302\313Q=\347\243\335\276\0321#>@N6\276X\300\344\276\244\004\'>\022{a=\266@\324\275a\t\032\276N\266\'\276?\177a\276\255H\212\276Ja\017\276\207\270\026>\344\207\242=>\335\001=\r\013\020\277\023\020d>2\t\265\275\250\302\021?\323\033!?\032N\3639\373FN\276\377\230\275\275\327\236\373>\035\020\204\274}\231\034>Z\3671\277\017Co\275B\r\321\275\252\024\201\276\352\346\';\252c\372\275\021[]>\245\200\317\275<\014\t\276RK\367\276\006\364\005\277\362\032x\274\2210\241;\220\034\341<\211\032\320+n\345\273\2175\270=\207\274V\276\037\227\010\276s\2047\275\2156\236>\253\246\246\276Bi\311\276\321\261\000\276\3151->\275}`\276\007\324T>g\332\213\275+\244o>\355\312\'\274\036F\312\275\222\267\277\275c\235\215=W\334\257>\177\326\366\275\320\213\016>\2432\257\2762}~\276V\265\205>\373\000\202\276\223\334,>\244\374\233>\370\254\255>_\214}=R%`=\376\0377\276\036f\310>\331\312\'\276`lW>4\213\":\014\036\300\276\321\314C\275\354\3502>wp\201\276\223#\010\276\r\314\325\275\234\221\231>\030:?\276*\354\206=\022\327\246\276\226\215\206>\334\031\264\276\022\032\250\276k\224z\273\332\013|\276n\225x\276\351\331\205\274\302\314\250\276\355\236\327=\261w\200>8/\251>\t\022\205\275v@\036>\326\224\001\277s;\001>\0204\330\2762\355\264>\226\253H\276\356\354\255=N}\213>\245\307\205\2750\216\253\276^L\205>\314o\266\276\032\343\365=V\263\257>!y!\275\277/\020\276?L\276=Q\240\007\277\3776\251>4\332=>\317\240,\277\223M\227>\210^\267>\326\327\355\275\373\214%=\366D\006\276l\021\020\277\017\355\026\277\323+\252\275\312\240\004\277\010\236\200\276?\301\222\276\344\323\032\275\327U\020?\346\267u<\353c\341\274\003_!\276\311\231_=`\177\201>a\250\217>\315\251\036>\001\027\351=\230\na\271\300M\000\275\"\215\224\275s\226\247=\302\004\022\276\020\244\215\276\303\266\016\276\305\322\274=\203\002\027\276\2163\354=\343C\261>g\213\367>\231<\014\277\337R\325>\376\222\205\275\001\3576\275\211\247\233=\017>k\276\264\334.\276\032\363\316>\nL\213>\t\377\222>\327H\014>\242j\313=\272\257\201=}\275d\276\'\257\212\275\227E\026\277W\027\302>w49>\004\332\027\276\325\004\270\276\363\217\242\276\203\315\246<\223\026\225>\314\035\007\277c\347\365>\302L\017\275\203,\276\275\024`p\276O\374)\276\205\271T>\203\347\237>\231\245\271:~$\206>\236\t\333>\002+\031\276\273L\257>G\361v=\246\360\200\276\324AC=\225+\037> \222\220=|\310\215\274<\217\245\276\220\373\245\276\340\332&>\007x\">o\313\362\276\255\260\213>\2420\200\276\3441\275\276\276\"\243>\037\317\">{\321\001=\n\273\327=\240iN>n\312\352>P\273\026\276\017\247\007>\212ZX\276V\257\r\276\213\032\264>{\312\220\276\371\231\214=4\023#\276\021\224!>\'J4\2764\220\031\276q? \276\241\312\246=h\325\342=`\252\307=\2508\232>\305\002\007\276\267\233\210\276\3246\366>:\341\367\275\235\"\033\275\360\2400\276\227\177W\276/\032>?\221=\204=\260|\006\277\233G$?N\364b\276M\304\235<_f\032\276\251\255\t\276\317\353K\277dw\310\276P\245/>u\024\276\275\344\245w>N\230\215\276\226\373\203\275\263\206\244=R\373e>RM\367=\357\036\r\2761\212\242\276CN\232\275\206\031;?s=\024?\340\374\277>\251\236\331\275Z\361\312>\346\205\313:y\003\302>/\017N=\302\335\302\275\'\313\272\276\211\365\000\276I\357\022\276\244m\226>\330\"\004=q\237\320\276\331\026\007>\020\024\201\276\310\037\345<\354\322\r>\377\257?\276\030\323\374\273\262=\276>\236\272\370=\312&\244\276\315\324\007?O\364\r\276\240+O<\010\370\235>\004\032\237=8\224\035\276\315\356N>,w\247\276\'\036\237>u\260&\276\355\232\302\276 o\274\276a16?;u\226\275\340]\035\277\"\231\\\274[7\233\276\247\337\324>B\025\306>pl?\277\344g@>HM\021\276\200\276\273\276\034\317\370>\266\374\215=ek\206\276\241\370\232>y\305\007\277S\362{\026\301\275\001\2368<\375\016t>\372\212m\276+\226\237>\376\211\205\276\321\331$>\263y\036?\371/\336\275\372\313s>Q\217L\276\206\273\331\276\275\"\233\276$k!?v\344<\276s}\222>\2379G\276\274m\317=rv\201\276\302c\031\276a R\276z\303\360\274\225\343S\276\355t\354\276=]\243\276z\014\270\276\332\251`\276\363}A>\031:\232=7\362(\276\326p\301>\227\251\266\276\303\226\t<\357\366\227>\332\262\270>\310\204\317=s\\\334\275\217?\r\276\336y\374\275\341\365\200\275\323\213P\276\230\366y\276\"K\342:\326T\r?|P\346\276\312+k\276:k\255\276)\033\001\276\017\230\250>\t\361\273\275\346\r\233\276\340\260\003<\321\3260>A\236\323\276\241\232z\276\017\016i>D\273\376\275\225\363\367\276\031}\007?^\344\260>-\214\227\276\201\317\327\275~\230\257>\335\326\223=\273\212\204\276\342h\210>\320\272\004>Y:\"<\333O\301\276\311p\340>Zs\220>\366\274E\276\252\257\334\275\210\274\350>\270|a=\'\326\304\276(\235\002>)\202\225\274}\024$\275\374\305\362>5]\305\275l\271\220\274\007\017\276\335\267]\276\231M\241\275\231\307[\276\004N\020?\302\036\302\275\364\314&\276;\021\014\277\337\346\002\276\316\273o>\300\262\233>\217\253\302=k;\203=?y\205>Ou\027?\177\302\260=\210>B\273\331\260)?\370\316`\276\0008\213>x\"\310>\251\375\014<)\360/\276$\235\t\277\335\263\200>!{\352>s\231\006?\020\"\030\276\276\0335\275\351\362o=d0(\277\035}\010\2772%\006>\265\220\270>\226\325$=\343\221\027\276\227\344\"=\362B\276=\273\n\373=\037\231U\276\337\315\252\275\234\373j\276\316+\254\276\366lS\2761\210\325\275u\211\324>T\333\356;\\\233\254>#|\026\277\213S\265\275\365\020\262\276\2604z\275H\002\332\276\354\2142\276\224\361\030\277\342\031\022?\334\250\257\272\337\2028\276\261i\266>\\\214\327>K\271\354\274\034\357!?8\"\003>l\211y\276\\8\007>\331\"\216\275\355\017m\276g\331\031?\362d\022\276H\331\202\276\314\357\246>\224\3712=\257[\247=\013\301^\276\244\004\232=g\313T\276(\206\350\275\343x\314=\320r\363=\n\032\030\277\334[\000\276\270\256-\276!\211m\276]?\321\274\300\021\325>\206\361u\275\320\273M>\361o\262>0&\221=q\0222>l\363\200\275`\217\333\274\027\235R\274\214XX\275\300\213P=Y\246\002?\350`=\276|\305\330\275N\310\r\276;\267\375=\377\257\021>\334eu>V=\031\276!\3027>\030\261\222\276\250\177w>\'nJ?\3459\224=\211\021\227\276\330D\232=\371e\033\276<^\241=\272\263 \276m}\350=\010\303,\277\302\2038\276\322yd>\251\n\240=D\022\330;\006\252Z;\202\021\220\275\220\221m\276}\227\222<\" >\276P\2475>O\'\241\275\305_\205\276\013\372\001?\273\225\330=q\343\370\276\210\225\206>\000\207\224>n\020\027>\215\266u=>\343\013\275N\265\215>\267?\356=\266X\204\276\336\334\275\2766e6\276{\325@>kv\200\276\251\253\023=\346_\231\276`S\304;\360G\203\276:>e\276&n\263\276\326}a>x\2663>\246\r\270=V!S\276\023U\371\275:h<\275$l\035\277\205\303\006>B!\220\276\032\263\014=0\213\237>%\211\262\275\2727I\275\n\307\233\005\021==\247l\002?\216[\225\276lo\007>\033\335}\276\256\307\362>[\313U>&\260\374=\375\022\346\275\272\207\330\276\000\320\325>\326\265q>D\315\234>[{\231\276^\236\205>\373\'\276>A\304\265\275z\241\217>\332\214\272\275\362\032\036;B\036\312>\037\241\252=U\370\361>6\\\'\276\034I\355\276\272D\256\276\351\304\212\276\203\246\005\277\340\177\226\276c\327\336<\257\317\003\277\202\037\251<\034\352t\2758\272E=\311\253L\276t\274\210\276\367\215\025=u%(>\007\317~>\030\200\010\277\016\014m\276\244\244\306\275\032\260\275>\nj\207\276\217,-\275\340X\222>\377\360\320\275\267\355T>\214\275\200>\241\220\367\276\342\311\301\275s\304\014=U4 > (\370<&\365\035\275\3428\223\276\331\371\223\275\3145\030\274\365\2611>\275\350\205=d\313\246\276\241a>>\274\230h>\024\020\346>wB\377=U\245\021\276\315\304\002\274\257]\234\276P\017\320\276fX\302\276\253\366\374\275\327W\220\276\256s:\276G\021\223\276x\350\254=\3502\302=\350vi\277sy\351\276\036#5>\340G\245>\212\305>\275\007\272A<:\303(>\263\275T\276>\215\001\276D\331\301\274\022\200\013>\277\344\353\275\366\327\273\275\030\210\260>\030\3772\277\271\204\374=\346\364\017=@\236@\276`f\224=\256\205\322\2754\3533\274\331]\243\276j\227\r\277yt\252\276\244\2773>\256J\210>\034\002fIY\300>\266\315\003?\241\334\277\2769\345\t\277z_\010\274\227\027\204\276\032\206\261\275\364\234U=?*6\276\2629\013>\213\246\310\2752\245\331>i+N\276\262\270\352>6\222\324\2764S,\277~-\253\275\267\3656\275\375wg\276R^\364\275L\220\021>\224q\220>\370!\'=K\371J>\023w\272>1\275\200>B\322\031\276\334%\277\276\023Fk\276_\204\344=oQ\231=\031f\024?\037\252(\276|\244\356>\367\315\035\276\240\025~>\'\241:\276\031T =&\203%\277\373\223\020\276\327\0006>k\311T=\243k\301>-fn>\020\374\027\277\032\257\365\275z\236\270<\3541\020<\215\0377\276\312\020\004>\034j\337\275\360Fm\276n#\240>\200\203<\276\220\313\321\276\370\3748=\264\244\267\276\177\351\205>\345\254\006>\010\346E\275\221\226\201>\273B\255\275\247\331\227>(\017\261\275\236\336=>\242\027\264\275q\344\177\275\023\345\321\276\356Qf>c\245\333\276%O\205>\362\031\273\275\237\305m>\216\275\016\275FQM=\302\323\227>\214\004\310>\211\275\036>\356,F\273t\004\327=@\205\302\2732~\024>\375\233\224>\331\333(\277\257k\256=Tb\212<\217B\223>\372\353P?L\rH>\251\264\242\275p\227\351\275\241\335\t\277\203o\371\276\377\232\277=m`\035\276\256\376\235\276\353\025\306\276\365\027\235>Q\026\272\276\256\026/=\304\227\222>\265\246H>6\\\002\276\201\347C>\316\311\250=\3254\203>\266\036\205>\274_$\276\217\345\225=M\005\024>\337\232,>\246A^\276\343c\225\276\264\207x\276w\210\330>\243\306\241\276\215\200_\276\010\334\r?wM\266\275\251K\033?\027)\371\2761jV>\226\314\203>b\r\016>\177\023\355=\333\375\322>\007\033F\273t\023\227>%\016\023=o\254$\276\343\326$\276\274\316\243> \201\272>\344\250\306>\005`Z\276\006\010\033>0\370]>\022]\031\272\266\333\206\276\346\331\030\276.\222\310\276\2647\305\275\330|2=\364\222\243=\362\361\220\276\227p*>eT\"\276\302\245+>\256\177\202>\325x\265<\002\310\354=\223\211\206\275\022W2\276\356k\267=/\373\033?\220\323%>a\252\251\276bJ\233>\274\353\226=:{/=!\234\374>\363z\263\276\215\022\251>\373\006r\275]g\333=o\367\303\276\246?K>\255\264\222\276\222\241\305>\033\336\271\276W\347\201>\266\250 ?\247I\343\276\340=\203>Z\276\232>RcG\276\212\244\254\275\240\366\024\276/\177\233>\2629\313\276\232V\000\277$\223\241\275(\231\275>\355\rz>\372\231\017>}\257\323=4N^>\312\356\263>C\244i\276\262\177\017>s\221\025?g1\014>o\032\261\2755\2330>i@\323\276\030s\200\276\244\333>\275#\322\266\276X\317}\275\321;a>VNO>B?\303=\212k\016=/\305\300\275^\246>\276\237\262\337>P\242M\276h\206\014>\344N\233\275\204\023\010\275)\211\024\276\361I\026\277\225\267\023\276\336\334\220>n\027c\276\355:\225>\023\254w\276C\243\234>f\217\231=\370?\216\275\330\221\236\2763>\330>\021U\010>\271\325Y>\313\225M>b\2506>\200$\210\274M\373C\276\261L\304>\343\3657\2728\210\256\275j\305\337>\241=L=\211J\202>\332S\235\276\322\315\326\276XM\270>\346\377\336=\373\362\215\276\017\261\036>(9\344>xN\342\275\333\031-=\223\367\305\275q\034Q>\nb\260\276\341\177E\275\256\246\315=`\302\002\2760\020\004>\335\327G\277m\314d\275r\036I\276C\310\344<\207\234\000?\207\370y=\340\323/\276\206\\!\276Po\270;8\317\202>\314\377?\276\210J\344\275\260\014\321>\207v\007=\267\317\333=\323\240\200>S\365\265=\267\211\242>\212\036\300\276{\261h\276\367\316\277>\315\247\226\276t\354\263=A\226b>\203\361\215\276\266K1>&\331\331\276:Q\226\273e\263\221<\325\232_>{\034J> B&\276\267\020B\276\232[\203>\234\326\271\274\321\346\331\274 \226\201>\232\251\n\276 \240p\276\207\345\211>\347\257.?\300a\342\275\221\224\265>\010\351\374=\362V\302\276S\372\013=\217o(=\203i\t>o|\201\2764a\007=\340\233{;R\354\201=U\265\201>\322\266\206\276c\n\230\274\365!\371\276\242\020/\312\2260>\310%D>\033\214\365\275\027\244m\275\332\177\'\275\341\367\223=a\207\256>+X\002>\316\371\205\275\230F\213\276f\250\204\276\262\236\335\276\265\316\t>F;\243\274\t\365\230\276\277b\261>\376\013\016=yW\030>\306\245\334\276x o=n\372\276\275\360\207\201>\336\273\331\276\336S\244\275|\234\274\276a\017\033?~\330\254\275\277\331\244>I\201\252\276<{A>j{\263\275\253\214\306=\231\001\203\275\362\260\221\276\262\264\014\277\377#\017?W(\'>\2574\200\275T\000\237>9\013\210=\202^0\276\326\266\323=\363E\232=4\330\230>\317\021\215\276\024z\033\277\333\375 =\371\216\221>+\034\304>\243\021\315\276h\3743\274\241\276\252\276S\207#\276v\352\307=\374\234\256=?\323\r>\222\270\307\275\313\367\003?\375\n\206=\214!\033>\252\336\235=\365W\264\276\301\321\230=83\021\276\332\334o!\002\252>!\0257>\037\333\262\276i\241\307\276\205Up\276[\007\177\276!w\002>7\026\223>\240\027%\276\303\346\302>\206z\n\276J\367\211=\207\027\223>\250M\262=\024\333\204\275\332Z@=\2114\236>!\021\001\275\245\204\264\275nm\203\276\372#D\276\323\361\234\276@\354\315\276\2150Z>Q\3461?\223\213a>\261\342\257\276\344\232\200>\345\035\341<\205T\323\275]w\223\276\316\376\237\276\304\350\267\276t\340P\276\324\017\246>p\342x\276\023\265\201=\244\021\244\276\'\317\"\275\264\216v\276\006\327\246\276\031z\022?\335\331o>\003\025F>\246g\336\275\316\341\213>.\016\372>N\230e\276\270R\274\275$(K>\347I\307>j\334\374\276M=5\276\266\237i\276uZ\235\276izw>\276\"\356=\242\2606\276B\321E\276Z\357\332\276tD\360\275\2061X\276\244_\r?\200\376\244\275\203\253k\276\246\204+<5\326\240\276C\030=\276DA\t\277Z\300\005\275\375\022\007\277\264\324\250\275\rzO>\362\241\313\275\261\014\213\275\201\225k<\323\300\032\276}}\300\276\256`f\275\303\222\342\275g\341\252=\330\266\206>vL\225\276&K\333>\252\230\357\2751\261\241\276%\032\240>k\230\177\276\232\035\364>|G->\255f\310\275uE >\330l\226>\341\211I\351B\217\276r\330\337\275\206\332\225=\202\252Y\276\035\203A=\226\305\003?\030n\254gE\323\275\221\014\\\275\234\313\224\275\030\354\353\273\222<\263>[o\202=8<\376<[\325\004=v\330\332\276\345\222`\276\263\371\352\276\223xj>\256\275\325>\237\247W= ?\256=rQ\216\276\346\226c\276\310zw=#\210\223\274\037\371\200\276\356\245n=\010D\007\276\313H\321<\364\356\244=\021\275\331=\214\344\274\275\254\316\202\276j\274\353\276\276p\205>5\365\205>\323\347\267\273\336f\366\276b\231\311\276\200\231\271=\217+\021>9\343\374\274eAr>fS\245>s\352\007\276\004\277\030\276\274\236\211\276\023s\254\276\256ri\276\243\254\353\275p\222\371\275\300*\253>\266\367<\276j3\365\276Y\306%?\020\355\265>\324\253\260>~=F\275M\313\275>C-L?\035\013\247\275\r]\353\275\360\206;\276\261xl\275\235\034\302\276\230\020\225\275\206\242\035>\330iR>%\323\016\276\2743\241\272\343?\363\276+\344-\276\017\2720\276\014\333\244=\246\354&\276yr`\274Y&\347\276\344\360\027>\n\344\315\276\306\267\227=%A\005\276\342\177^\275\344\\\361>5\255s\277\376\231\222>g!K=\355\276\334=\275\206#\276\022\220!<\2021\333\274\374G!>\332/>\276\226H2>\3010\n>?\004\223>\234\006\200>+\224F\276\270Y\265>\022\217\213\276\204\370\352>\325jG\275\007f\000?\230\363\277\275J\340l\276\324\006\224>\237\331\256\275Y\230q\333W7=n0\303>\224w\n\276v\311@\276d\215\253\276A\322\263>\020\020\354>Lj\377>]\245\004=\316T\257=\376o\316>\310w\247=\033\177\227>\322\267`\276\224t\315\276\262\247A\275\226\003S><\352\313\276\007\267\217>\220\312\024\277\r\201h\276\321;#\276\023\327\002>\231\025;\277M\255\306\275\3023\233>\346]\033>\364m\013\276s\237\265>\327!\227=\320vr\276\032,\270\276\021\261J>\250(\217>$\223\377;0\rn\276\200\200\234\275\005\356E\276\221\023\220>\377\351\276>(\206$=\275&\257\275~\014Z>\213\001\306\275n\225f=I\314\221\276$\277,?c\325\312>\010\275\276=\347\034=\276\354*\r\275i\323\244>\034\241\202>\230\376\270>\273[\231>\331\242\007>\302\377\n?\031\235>>X\033\370=\363\365`\276\347~\216>\263V\354\276\322H\217>z\t\275:\364R\263\276\024\222X>\260g\361=p\201-\275\364\230%>in\371>\317jY\276\231\303^=+\005J>\2356\363<\\\227\321>M<\336;\263X\276\276\235`F\276\202\366\303>\232\272\224\276 \345\315\274\237\252\300\276+i\001=\361l\260>^\312\t\2779\224|>Fn\343>\325\264?\276\306\023\002=\274qL\275\370\226\n\276\241\'\"\276\236\374\263>\277\230m\276`.0=\334b\322\2751\005\257\276a\037\313=X)A>\210\315\000>>HP>\330\2612>\220\230\321\276fA\241<\260\202}\276~\357\321>.\337\355\276\321\2275>EE#\2772i\207>]\234\317\276\330\235%\276\014\007=\273\336\220\211\276\236\271\270\276\032\257,>rr\026\277\211\376#\277L\010\266\275\266\310\005\276\177\357P>\357(\342\275\365\224\031\276.\177\227=\200(\322>8\032\022?\345\343?\276\261V\254>\222\\\234=\254\210\276\276\215\243\236\275G\001U>V\345\205>\024\375Y>t\025\225\276C\033\341=Y\277\270>\273f\320=\233\2148>\'3\301\276\372\222z\277\004e\276\274K\325\236=\224\337\201\275\027\241\221\275\241\355\203\276R=\251>\361\201\023?\315\226\201\276\036V\277=\351\3269><\207\021\276 \272`\276\224\204\n\275\227t&>\212\r\220>\026\341\201?\222-\207\277\353\250\334>\274\216V\276cg\212=\220\233\261>\336\215\264\276\221l\255\276oP\256>3\227\242>\374\254-\276(.R>\"\303\343>w\233l\276\022\202\255=-\242\215=\332p\242<\001tt>v\2212\277\3373=\274aM\014>\345\247<\275\037\224?>\342\312\274=\336@\212\276s\017R>L=\266>\341\016\274>\223L$?v{+>\375\346\316>.R\211;wg\216\276\261d\277\276\364\203\355=\036q\370>\272J\363\276\245N\317=\251\016\364\275\3201\203=|\036\231\276\302\272\233>s?\352>=\037m>aE\016>b\347\233>(O\262>\326\024\304>uF\204>\207\226\330\275\0225\323\276\262\356^<}\241\231\276\230\202\253:3\263\212>\210oS>G\001\005>~\331\030>${\234\276\024\231\002\277yYR>J\302\210\276\251\317\027\277\221\352\004\276\204\245\267=|-\272\276\323\014\223>\377\270\222=P\266\265>\277J\004?m,Q\276\264X\334\276\021U\210>9J\374=\270\205\274>0\261{>>\037u\2768C\332=\334S\236>i&\245=8,\241\276\216\362\262\275hk\223=\342\033\235=P\230\346=\t}\216\275n5\226\276Q\261{=\033\264;>\367E\233<\204\276\376<\331\010\367\275\214d\274\276Q\273{>\000\206\006\276\275t\300\276\353\357c>\"Q\216>n\236\225=Ig\350\273`\022\205=\005G\324>q\257\334>\311\002(\276M\273\'\276I\205\305\275\251\326\013\277,\362\324=\010Z\305>\351\215\264>Q\337G>4j\364=!\273\226=b\246\306\2764Z\260>k\210\022\277\306\032\322=\243sF\277\244\376\307>\025\271G\276\305\311\360\275G\224\352=\250\343\337<\377\222\000\274tRb\276\355\236B<\307\222,><+\327=\366\200\"?\026W\252>\r\"\205>\010;,\276\300\263U\276\334\034{\276f\010R\276\263C)?\337\234\030\2763\367\217>\365\271q>K\205\323=\347\306!?\342\347\022>O\237\016?Q\310\201\275\3554\331<\016\024y\276\312\265\025\277\241{Q\276,\033*>\344\250a\276\351*\232>|\320\336\275\031\345n\2762\006\025\27761\265\2761\341 \276`\315\300\275\221\277\260\276\177\223=\275%\230\203=\365|+=\215_\264=\215\355\377\276\016\242v\276\237\254\320>*q\275\274\327p\014\277h^\231>+go\276-k\230=\037\036\"<`\3130>;\241S\276\333.\214=\312I\272>7\016\324=y\340&\274\375\014\350\276\344\213c>\330\311\254=\311\327\203>[\347\316\275\233\3479\275g(->\371RU>a?`=Uk$>T\342\362>\231\316\202\275\3362\353\272\234\366?>\204\322\264\276>\277\252=jS\267\275\337\002\034?BX\010?\275y\302\275\275\301\234=vE\314>^\215R>\300>\201\276\2045\227>\272!Z\275np\000\275\356\215%\276Z^\327=\230\364\022?\276\366\302\276\\\375\265=A]\227\274\242Q\t\276NH\361>\321\305\t>IxX\276\032}(\274\253\006\260>F\230\260\276J\022p>}\376\261\275g\222e\276\303\325i=\230\370\013\277\223\254=>_\t\276\276\324\273A>\366\326\013>\007uQ\276\0210m\276\262\262\364<\275\007f\277\000\263~\276]3\276\274\325\253\032\276\253\243U\273\373Q\242\275\303\346A\276\363\375e>\230;\027\276j\326\237<\323\364\266\276@\033\247>yo\226\276E>\337\276z\007:\274\274R\243<\235#\277=\253\2423\276\3150\">\030v\243=+\271!\276\313\332.?>\215\221>\233`4\276\227\277\243>TZ@>\022e\236>t\037*\276\322\255\212=\342\316N\276\007\256n>!\364F=m\315\273>\0358\377\276\236`\276\355\204\262=\376D\304>\331\240\312m\246\021\276\361\252\357\275d5\026\276\004^\t\276\315\333\363>\007\324\206=\373N8\276P8\241=\250`\227\276\271\353\263\276]\312\343<\325~\001?.\264\005?,R\316\275\277\375\302>{Qo=\016\252<\276w\020\214>g\256w\276\373\211i>\306\002\250=\317\031\005\277\270\027\330>,\t\023?\360\n\301\276\266$\023>\234\231d>\333\016\014>w\246K\27615\352>S\203\352\275\367\363\021\276\220$\212=\362L&\277>B\215=\271\223\242<\033\302!\277\023\241w=\021\252L\274\231\031\025>\236\345\362>\321)\255\275(P\330\275\314\227\223\273\323\t\326=\230\306\026\276E\026\326\275kWM\277\350\250\216>\377\024\245\276\205]\000=\306\210l\275\030\000\026\277\006\343u\276\177\363Q\2746\345\337\275\366v\216>\223h\005>\221\261\306\276\033\210\243>\337.\317>\311\325\265\276\354S\267>\n\"\007\276\034\276\372=e6J>\323\221\213>\236\361T>\335\256V\275U\303\210\274\027\324\323\275\350\005\034\212\264\355\275\262\024\013\277\260\221\030\275\276\337\257\276\267D\246\276\307\355g\276[W\021\276\332`!?\301\004\203\276\347L#>\316\320)\274:3\211\275\365\247B\276\035\241\211\273I?\"=\333D{\273\317\024~\276\360Y\204\275\2401\005\276\275\261\261>)\313\000\276&\375\004\277\361dh>\301H\223> \220(>\246\023\265>\207~\255\274\224\251\366\276_\233:\276\205\207\344\276P\211\240\276x6\343;\260\303\264\276\035^\360>2\375\313<\030\262\006\276\030}7>\252\240\000\277[`\271>\235bB\276\360,7\276\256\252[>\324\263,\276\353\227:={\000\327\275ic\243\275\363\211\233=g>\210\2766\237\362=4\023-\276\254\200\021>%\262U>\020m\277\276\277\225\232\276x\036\246\276\211\334M>\366\366J>\213\205\306>&(\306\275\004\035\343\275&\271\031\275\266n\213>}\303{\276\013\317\303=\270\203\315>\013\217\327=\246\370D\276\207F\331>#^3\275\3570\210>\337\266g\276OY\023>\'\261\026>\344~\335=\\\262)>f\"<=Z\364\220\276p\272\017\277\277\350\227\276\016\357\200\276\240&>\277\210\363^>\034\341\230\276s\262\206\276$1\264\276\241V1>\267\025\302>E\247\005?\246\246\204>\356{\035=\266d\017\275\377! \276\250\227\n>\376\257O>\276]\350\275+\215\'=\274R7\275\231\266\022?\235\272*?7\211\243\276\302\032\024\276p\270\242>\255\326\371\276\021-\220>\1776\371\276\270\002*<\305\010\263\276\235>\213\276\033D\353\274\223\032\257\276\321\0349\276\275\004\300\276\367{#\277@o\266\275\217|?>\3120\342\276q9\262\275\376\240\032>\232\306?\276m\302\275<\371\210\007\275Z\017\223\276\372#\357\274\260\017\262\275W\367\\>\352\262\253\276\201\352\217\276\357\367P>\246U\252:\243(\270\275\203\033\356\275\316\335a\275\257\370\347=\305\353\345\2751\"\006\277Kd\301\2760\200\321=Uv\234>\277B\265=\006\331\206>tl\036\276\004\301\266=\245\377\252\276\331\321x\275\\D\340\276\177\362$=M\017\355\276\201\345\000?\255\202\272=\350\277B>\222\253\211>\355[5\276\336\024c\276\260}\332\276\300\314\230\276\235q#=\222\360\254\276Q\017\354<\367\313\350\275r\304\344>V\023\357>/\314\007\277\005\010\007>\206\217e=\365v\226\276\245\0250\277\361\346\241>2/\211\276\007\246\371>K\301\274\275\360\314\252={\211t>sa\013\276q\242\310\276+\360\022\276\035\351M>\345\305\354<\244\246\323\032\017\027>O`\234=\340\257\212>\317>\304\276\351l\n>,\331/>\347\311\264=\233\256s\276\374\325\032>p6|=\032l#>\250\263\222>\024\313(\275\\xn\275F\202\307>[\004Z\276\210-.=\017.\251>|\330\262\276\374g\213>\266\334\025>(\266\303\276\345\312=<\203\013\305\276\376\226\317>\255\246\034>\327u\233>`\265\370=\212\354x>j\200\321\276\263\030)\275\301+\005\277\356b\251\275\021\343\240>D\022]\276\223Dz\276\260J>>wf\025<\255\345}>|\'9\275\014\252#\276\263\345\035\277{\313@\276\221b\370\275\355\0014\276\224\366\346\275\211E+\275\223\270*\276\014\346\271>x\267I\276\202\223\242>\272\261\255\275G+\213\276\330\243m;\000\203E>\013\315\230>\266\215\232\276w\350v\275v\2703=\263\265+<\271\323\344\274>\372U\275\221\302\023\277O\3415\276\005\210\264\276\377\242\327\276\353\264\235>\250\337s>\261\026x\274G5\220\276\274|\206\275\343\014\336=\024\037\242\276:Y\274\276\257W =\340\237\302<\031~\263\337\264@\276Bx\241>\000,\262>j\253v>\360.c=\'\3237>\1773\220>\330\261\216>\221\333\315\274[H\332>\366\2769>o[M>\'\260\037\275k\027\'\276d\324J\275\263/p\276\273\312+>\236/\237>B\321\236\275\313\317\301>=\376T?l+8>\320=(\274\326=\253>=\374\243>\326]\r\276p\022\223=b\320\203=\231S\267=\016 \271>X,\033>(\0276>\260\005\326\276\236\305Q\274%\024\023=e\357\316=\001\301\005\275Xy\366\276\352b\262;Jh\225\275\231\013\206?\216\366\332\275\237\336E>S\306w>\353\364\020\275\000\363\340\273\224\221\t?@4\210\275y\225\022>C\311\017\275~\231z=\016\371\335=n-\023\276\204\261\017\276G\354^\275<\255\304>K\266\273>\230\253\240\276\321\002\035\276$#\204=f\351\260>\233G\344\275^}s\275\267R\275>\212t\207\276\211\265E>\013\235`\276\357\204\253>\254\265B<\026\036\263\275\253UF>\367~\355\274\031\210\013\277\323\313L>\\\234\036\276\003\032\177\276\333\004*\277\336\337\327>\362\320\004=\037F\211\275_U\330\276c\2004=I;\332\276\264\375u>Q\314\016?e]\357\274@\261\215\275\265\016S\276\200O]=\211;&\276\251\362\236=\207n\231\276wZ\274\275\304cD?\n\267?\276\223\024G\2761\2276>~u\271=\032s\'\277CM\316\276\355\014\214>\356\022\005\276\203\342\322\276o\350\341\27606\370\275Z=.>\251\304\362=\254\343\343=\246\362\315\275\320\203\373>\230\323\212>\\\362\234>\004\006\325\276H_\310\275\241\320R\275\320g\221\276\253\024\337\274\246G\034?!k&?\221\376\371\275+J\253\273\242\244;=\335\223v\276\361)\312\276\324\242\245\275\337T+>\202G\217\276\357\201\r>Qt\304\275\272\371\366=\216z\237\276\266\326K>\251\222&>\352\333\264\276\244\177\324\276\217lu\276St>\276\016N\245\276\274\343\201=\314\036n>\265\304\013\277\360\224W\276Sl\335\023\035\006\277\201J\304\273/\233\255<\306\377\017?H\216\206>\327u\214<\033\363\017=\014\304\007>\350\243\231>\311\334\r?4\316\007>\337\266\r\276\300\033/>\036K\332>\375\035\217\276MA\300\276\365\001n>[\010\233\275PX\213>hk\371\276\356\341[=\332\010\203\276\363\344<\276\210w\025\276zQ\247\275\262d\203\276\226\243\001>\3678\377\275\374pb\276u\001\254>/y\017?\214}\252<\366\021\207>\340\344}\276\372v\315>\030\255o=\276\204\301\275Am\263>\301r\205\276\220\021V>yD\373\2742\016\367\276\311{\241>\220\005\001;\006\367\212\275\215\341\244\274\006\200\203\276\357:\201\275\215\331\277\275\372\030\234\275 \346\256\276\376g\r?[\225V\277\214\265\363\276\003\302\026\277P\267\036>x\'\210>\301=6\277^\315z>v\244\004>N\376\335\274\265Y\031\276\304\356\006>\001\355\354=\374\325\246=\257\024\005?6\361s\275M\260\305>J2\246>,\262J>\031\036\034>4\345a\276hWj\276\274\\\363\276\210\252\345\274O\224P>\256\266\031?l{\033\275\222\300G\276\000g\217>\352|\245\276Y\303\212\276\033L\013\277\275\322\236\276\362\375\250\276\212X\353>\007\326*\275\273\001\031?fx\250=6)\343\276\246%\233>\306\261\030>\033H\n\276\010@X\275\3603\026HL\024>\357\207`\275N\326\315>KH\306\275\2678\355>u\027}>\266\246i\276\274:V?:\322\302\276\0344\020\276G\334C>Z\246\273\276SX\243>\351A\013?\177\202\021>\273\250\232\276\207\203\200\275x#\021=\223e\255\276\ngT\276\252\r\205\276S\221n\276\325\360\205>\3149\250\276\234\253\276>xk3\276\362\257\330\2763\265\324=^U\306\275\323\226\266\274\205\265\353\274\250\304\224\275\315\314\271\276\336\017Z=7\350K\277\200\'<\276\2444\014\277.\350\270>\223A\027>\312q\035?4\005\237\276\306\204\212>Sw\235\276y\222\316>u\023\235\276})/\276\001C~\275FT\310=\322\371\255=\321\325\036=\363\240\014>\271J<=\230\300)>W\251!\276\026B\242>\370\275\027\277OW+\276w\306\230=\'\355\345\276\370D\264>\351\342\024\276\036\004\240\276`\3057\276Ic\203\274vfX>\215\277\\\276n\224\350\276\227\261!?\037\220\002?\014\3325>\374\317\223>\234G\276>\261v+\276{\362\327\275\037\337-\276\301\273\322\275\023\312\034\277\216\377\224\274\255y\273>mf\353\2759\025\212\276^~\202>>\2563\276\356\021\215\276\341~\272<\254\270\316\275sU\216>\324*\334>\t\201\374>pgi\276uvf>\301\347\031=\227u\r>\245\225\003>d;\243=\242K\364\276[V\350>\262\r\200=^*\331>\320\273\322>\213\211\202>y\305f><0\023<\315-\375\275VM\252>\343;#=\356\342\014?\336~\305>\374*\231=0\rh\274O\013\022\276?\023\317\275?\005\377=#6[\276\273\206w>{;\262>\223x\313>\331 \373\276\277\323===\267\354>>\223h\276}\340j\276.\252\247\276\016\226\020\275\210\323\020>dt)>TR\202>c,\367\274\262dt\274\t\227\'\275\362\227\227>\006\225[>,\376\303>w\264\263\275\377!G\275\030K\320>\374\004:>)\206\343\276\r\273\277>^@A\277\373_#\276m\351\300\276\230s\256>\324\342\271\275\021\276\\>\234^\001\276M\177\365\275:}\r\276z\214*\276\220\\\242>/\257U>\3162\211\276\'\354\t\277\204\333z\2768,7=\031@w\274\370\332\201>it\023\276X\224\001\277\323\010\221\274\234F\025\274e\024\247=\372!\345\276\326\330\"?\023_8>\ns\267\276\326\3462\275\2205\372=\237\336\010\277\360(\243\276\244\333e>\333\317\347\2756w\002\277I\302\220>e#\007\277\255Kw>^\327\251>\202\204\021;\210w7\276e\027\347>@P\201\275\3670D>\313p\"\030\347S=]\026\341\275I\010\023\276\25766\2761\327\206>\307\t@>P\000X\276\246B\300\275D\000\346>@5\256\2743b\255>\003\033\277\275\022\230\247\274\345\355\007\277\357\37209\260\343\200\272\352\032\330>\000\312\216\276\273s\204\274\210\313l>\322=\262\276W\3252?9\2139\276!\214\202>\274\240\245\275\001h\370=\276\016(\274\303\321\263\276\021\324[\275t\267\232>+2\227\275\025\263\226\275)\217\334>zQr\275\340L\224\275\256\020\341=\372\nP?L\356\002\276\300\001\246\276\346\262T\276\240R\304>[\271\202<\3624\367>\320A\341\274\250\020U\274\333I\036=\332\216\001\277\210\240m\276\360\335&=\034\353\347\276\225\356;>\345\252\252\275I\352\014\274\245\237\016\276&\352\213\275\202\032\030>\374\032`\276\263\206D\276\206\327\363\276\036{T>\253\014\266\276Vsk>\'\254\005\276*u\351>\232+\362\2741x\332=\006\235\310>\033\017q\276.\371\272>\206\177\002>\352f\005\27608\354\275\035RE\276\3609\236\274K-/\276Kk\270>g\340 \276\007:\307=\252\345\237>\220\021\002\275@\340\025\2769\034t\276&\240\305\275b\234\005\276H\203\250>\030\374\275>\020\227\215<]\217S\276(&\021>%,l=9\334@\276Zg@=/\017\371\2742\361\335\274\271ae\273\202\260\201=#\3357>\274\303L>!J\221\276\350\250\n\277\357\023\232>\264\256\244>\343\035B\275\344\252\344=\004\323\034\273\006\000\333\276\316\030\002\277\351\345\270\276C\343\227\275\224\232i\276l\341\017\275\320{\274\274\232\330\002>\243\310\326\275\253\261\250\275Z\254\236=\325\3107=\023>\255\276\205O\336>\203\350#\276\265T\344\275\260]\r\276\267X\337>\323\250\356\275\302F\336\276s\217\353>p!\030><\306\014>\320~4>\3345\305\276\301aO\276Gqr\276\003D\224>S\256\275\276\263 \312\276\237\340\265>\032\003\007?9\023\373<\365\024\316>b\351\373\274\177\311\230>V\356b=\306b\223>3\251l>?;\253>M\3227>z\2474\276\212CL=\274\320\256=\250=\356\276\334\024\006>\220\344\222\276;\260\320>\341\327v\2769\335\002>\337\352\324>\314\\=\276\241\003\370\275\300\301\026\277\234f\243=T\207T\276\000\323\334=\014\222\337=Q\252\263\275\225\340\002\277O\321\260\275\222\273\"=\262\300\202>SI\204=B\377\310\275+\325\251>X\222\216\276\3036\034\277\"g\205>\367\030\033\277\327\343X\275\276\"\003=\37023?\036\016\247\275\374\343\303\275m \277\275\320\304\235\2758\335\266=\204G\'>\225\314\305\276+b\360\276\356\210O>\321\323\212=!\221n>C\341\245>\232\002\221>f\302\355>\321\362\004\276=\301 =r\372\200\276\214\225S>\257\n\344=\001t\302=\271\320\340\276\200 \316=\244\256,>\020\t\205\275\355\340\346\276\274\3647\276F\332\341\275\010\314\267>\266C\215>\255Q\213\276\370\034\\\276\340\336\223>x\237\342;_\332]?-QB\2762\376\333\274\306\214\242>I\016\253\276\027\336\250\276\220\016\252>\272\227\204\276\216\341)<\235_\017?#\0232\276R\270\272>]\353\027?\036R\311\276k\260\211\275\302\304)>a\343\"\276|\010\263\275\267)\362=.\302\206=\304\270_>\341\225\263=\353\263\207>\037\231\330>\311~g>bv\001\276M\020\231>\216@\377\276\270\311\006>i_\027>\275Y\324>oX\025\276\'\206\224>\230@\272\276\260\004:=a\261\037>Q\377\005\276~}\336;u\201\201>xp\250>A>\t\275\002\313G=\026t\001>\025S\255=n\2176\276\2665,\276\035\242\013>\355\005p>\255\022\214>@|\366=\225\353\000\276\004X\203\276\003\257\213>X\337\355\275n\225V\276\345\377\265>\370\323\242>cV\217\276A1\t\276j\371\217\276\224\217J=\2171\344>o]\240<\035D\243=\035tD?\351\267\310\274\317%\342\275;\030\003?\267`\320\275\0371Q>\315\341\217>N\333%=\353\211\225=[\356q\276\005\005\343\275\321\345\227>\372Bq\276I\227V>\352\334\200>\035\334)\277yr\026\276\203\247\353\276\275\"\235\276\222\300\266\274]\231\256>y\253a>l5\031\t\356n\276\220\234\263\276\3773c>S\332K\276\245\222p=RL\213\275H\333\361>\313[\263>\235,y>nf\357\274\261\356T\276V\313\263>\346\372B\277\3275\001>q\3038<\367\254g?\225q\266\276\3606u\276\212\235\254>\273\005t\276\322\223\203\275\333\205\346\275\211H\312=I\031\000\277\014\342\215\276\017(\234>\035\020\204\274O\361\\>\224\347\307\273\27239>\0207\374>\207\323\003?]mX?\201\276\257=^d\230\276\232\210\361=[bW>6Et>M\240p>\232.\226>\022\034+\276\252\362\242\275\215#\304>\274\354\215\27608\213\276\314\372f=[\257\206<\205D\250>\204\302\334\276\362W\267=0C7=\250`\304\276\262!\236>\345a\035?\273\343R>\247\240\350\275\257\324\272\273_\235i\276&\360\255>\036p\300>.\021\312\276\035F\230\275\334\216\013\277b\300\202\276\272\335H=\006\364\353\276V\343\234\276\263\300\010?\026^\264=\022\303\020\276[\274k\276\377V\000\275\321\250~\276,dC\275\301e\256>\301\267s\276;}\243\276\177\356\314\276\267\305$\276\357\202\253\276\2302}\276\031\351X\276\216b\035?g\243\001\274\354\304\214\276\357\372{\274\367\'\'>f\341\200<\310\252\014\276\332A\033\276{\224\024>N7\304\276h\013\245\276(r\213>E\rS\276\214&8>\207\230\316=\351\326\265\273J\364{\276\343g\222\275\212\362\261>\206\006\026\277\361\007\202\276\206\254\265\275\215\247\022>rl\224=\350\200\336\276\\k\302<\026\366t\276\2744\260\274\310V\211>o\312\236\276\370\272O\276\025\340\032\276\027\226\006\021\240\352>e\306a>\373\244o>\273h:\276\210m\255\276[5\242>\310X\230>\236]\276\275\304\244\202\2761\231\000>\366\'M\276\017\303\023>2-\251\276\300~Q\276\217\277\022\276V\221u\275\321\325\033\276 \362X>\376v\020\275<\335Y>$\237\262\276[h\022\276M\336\343> ^f>\313\017\023=]h\266\275@s\204\276\237\360\212\276\021\356R\275\003:\275\275\270Ok=\316\355\375\275\316\205\024\276\341\252\222=IL\022\276\307\025I\276|Pl=vu1>\r\270v\275N\315\227>\032\341\305>\317\033)\276\230\363O\275\357\314\036>\033Q\025\277Y\326\213>2\242\003\276\215\247`>\343\221\310=\001\270\033>\024r\023\277\363\343\234>\250\261\250\275\217\351\032\276(\320\216\275Oq\030>\201\367\335=\375\311[\275a\364\007=eh\036\276z\330S>\230\332\346=\037\231\315\275o\001\031=\346\302\267>\262\006-\276%\347Z>\231s!\275m\033\346=y2\370\274\204\320o\275k\354\266\275]\221\020>2i\310\274\206\211x>\262,\361=t\373\005\275+\3440>\261e\332=%\333\305\275ux\247\276\310\311\236\275 \2063;=\345\230>\032yL\276\323\327\205\276t\335\031=R\232\224>\003\300\355>\250M\003\277D\325\223>\023\253X?\"\327j\275\206s\245\2751\037$\276\033\277/\276\351>Y\275\230+\035\277\311\201\200>\021d\357\274\010\177\275<,\334\213\276\234|\235\276\240q{=\021\263\320\274V[\367=g\211\223>\373t\250>VO\250=\217\021\347>\006o\231>\350\034n>\314r\352\275\306\300\305=i\204<\276o:\375>\264J\004\275\260\203\200\276\370b{>\270\376\333=\2113\257>\223\3364?\245\352\367=\005m\354\274\235\276\002\276\001\217\214\275Q(\253>%\026\265\2755\362\356\276$s\343>\0251g>\310S)<\261\255\260\275\225\306\325\274Z\265\333\275\031)|\276\231\305\253\276\273b\227<\310\354\004>\376\336\257:U<\005?\341\2047\277\3334c\277\233/\355\275\317\277\331=\200q6\274\005\357\304\276Np\223\276,W\r>x\373\016>\317Z9>tk|>\330\245~>\366\261\240>_#?\276\356\334\201>;b\023\2777+\220\276\273$\210\276\336\260\343>\241z)?\221\032\306\275\347\365\020<^\251K=D\207\301\276\377\352\231\276\253\350\n\013h\215\276t\242\261>4YY>\332V\203\275\351\222\217>O\344\365=\014\035\232\274\266\n|\275\360\261\360\275\n\014\263>\222\016\374=\360\364\277\275I\265\356\275z\032?>\014\210\342\275\226\032\340=\356\276\361>\306\001\n?J\3263>\240\345\274\276\266\304g\275\t\314\267\276\222\021\032\276\203-\366\276\202\242\034>\315#\032=G\311\324=\347-\245>\001c\307>\227s\317>\377\351\033\275S\201\236>\201\207\230\273Q1\305\2755\305\014>\264D\236\276l\025.>\303\020k>\343\224\257=\372I\313\275\343\332c<\212]\245=\256*\027\2763w\'\275|\311\321\275WD\230\276N\272\004\276\305=c>\037\204\355>\222\374\317=\266\350\242\275P\331\244\267\227\013n=\223i\267=\'B\341=\0270\304=\013O\334=&fs=5\253}\276\244k\\=kQ\246=i\2663=\261\267%\275\307s!\276\220\306C\276\311\252\205\276\272}(=C6;\276\317\260\030\277u\273\373>V\257E\276$\304\021>\356\312\246>\322\331\231\276\233t\002\275BL\033=\325@3?M\200\276>b\272\002\275\nc-\276~\311!=s\301\262\275m\242\221\2754\340\315\275\034\036-?\274E\324=c\363\207\275\203^m\276d\364\207=\333\240\341>\306\261\334>v\247\254>)R\236>\207\361\345>\240l\225\275gY\004>\030\324\215\276\270\254\304\274\226\332\325\276\"8\033\276o\334\220>\335nq\277\327j\267>\037\320\204>*\277\354\2766UN=#b\021>\203\265@\274\213/\251\275\032Mr\275\252;x>r\311\350=\344\312\345\276<\020\n\276\237C\300<\r\327.\2763w\216>\032W(?\344K\"=?\310=\276\363\217\326>j\306\010\275\3275\214\276\265\256\030?7%J?\002x\227=c\263\365=o\335\271\276xy\241\276\020i\'\276t\355;<[\327_=y\344\003\273\350B\222\341P\236\2762a$\277\373\274\260=\004\236\237\275b\324E\276[4\207<0\330\300<\3301\\\2751+\316>\210\344M\276`\303\227\276\204pQ\276e!?\2772c\255=1k}>\321=\354=\335\006E\275~\250_\274\t)v=\366\226\327>J\200\256<\031t\'=\212\355\016\276$\t\377\276)\305\365>\304\352\376\275\314b\246>6\273\340>\217\214\261=\217\206\034\276D\356\226\275\236\267\030?\304\234\001\276P\265\367=\"\351\300>\355z\307=\240\331\256=\323B\270\276\tV\356>\2460z\275\324\374\215\274H\304?\276`s\317>Z\203s\274,\201\023\276y\351\303=`G\265\276,\007\330\276\201\035\"\274\272\366m\276\020\225\345\276J\027\241>?1\001\276\203\000c>\310\340\277\276>\2516U\321\023=\215\263\207>\214\037\232\276\r\275$\276\305\302\333\274\004x[\276\347s%\277\024@\214>\037\376\232<{\206\267\276e2\340\275V\216\263<\215l\230>\367\010\230<\311\023\232\276\217B#\276~.\226>\352!W<\370 \220=d*\023\276\267\2737=]\233W>\234bG;H\363\356>\020\202\033>\324\215\006\277\3418\253>]2\223>{\2633?2\225\270>\366\334\323\275sz\251=\3465,>&\207\310>W\345\033>5$\003\276\250\265 \277P\177\347=\262#1\276c\374\315=\205#\005\277_\376\252>\350\330\246\275\010\367[\276\235R\002>G\325P=i\255\212\276\276*\303\276\257\\t>\374\340M?\007\357\036?\357M\354\275`\265\247\276\364\354Y>\025U\341\275\232>l=ta;\275\363\004!\276\340_\267\276k\032\207>\022\225\330\275-\025\262>HI7?\305\010\030\275\323\237\024\276=\337\004\277y\353\302>\340.\241\276\372\302v=.\335\030\274P=\214\276sw\315=\270d\031>~\237\261\276\361!M>\031N\231>\016\266\301>A\273\250>\344W\210>\242\233k>\354{\022=\375\237\333\275\\\337I=\377\317r=\243KQ>\363\024\370\275d\203\004=\365\352\017=\276}\274>\023\310\227=\267\350\314>\343\303\035>\235$\221\276\304{\001\277n\341l\274N\246;>.\0144\2770\003\211\276(\202\376=\250\t\">\271_\333>\376\340*>\343\265\200>2\251&\273+p\203>%\335Y\0208\030\277\305W\333=U\304\345\274\374Yv\275\225>\223\276\343TD>\360\344\346>4\277\300\276\301H\354\275C\322\017\277\217\213\205>\235\236\317\275\220\225\027>\231}\365\275\243\\u\2769\205\013\275J\317y=\010C\300>W\365*\276\013\252\257\276&\003M>|\244\240\275\235\245\314\275\221\276\332>\326\026\027\276X\203i=]e\351\276\342P)\276\225-\025\274M~\263\276\223&(\276\n5\225\276\227wJ>5\237\212>s\332\212>\312\354 >\330\322\206<\024\361B=5\232\240\276\017\230\371\275\251I\230>\021F\217\276\304eN\276\355Ra=\342s\005>\245\274\337\275\335\272\352>E\'\236\276E\312\240\275\235\030\315>S\t\214\2764\327%\277p\245\252=\210\261\365\274\r\234\325\276\336\271\252\276\211F\032\277\201\'\200> p\370=L`Z\276L\261\200\275\216tf\275\370\362\337\274*5\220\276\364\304\215\276\300\251\024\275\022\377v>\275\252\362\276\210\244\342\276\376\262\031>\304R\221>\351\256j\276\007\t\010\276J\344/\276\336\253\037>-\214\217=\033\222(\275 \246j>v\231\021?\353\205\021\277\335,\374\2760\223\265>V\375\004\277\216\204&>\2253)\275\034Y\232>/\220\006>\023L\315>\236\257I>\013C\021\276\332\002z>\372>\222\275\370\032\342\275/S\026\276>\363\207>G\276\246\276\313)\314>\214\235\026\275\000\321\232\275\241<\266>\346,\002?\324\263 >\033\2555>\252\350\010>\032\270\031>b\314\313\274\031\346\n\275\'\372\317\276E\\c>\364\226\000\276mR.\276Bx\277>\010\336 \2761Zz\274\3641\323\274\3238\026=\310o\333>\215\260\032?\375{K>=\323\221>\341,\002>6\013)\276E\362\241\276Tu\214>O\204\330\276\353\023\027>\365@\317\276W\365d\276\360\351\251=\245\317\277\276\201\275e=rV\223>HBG>+\213\027?\205:\332=\254\315\306>\005M\355=hD\266=\374\315J\275\311\372\375>m+\204>oYe\276pLZ\276>\000k>a3\020\275\333a\211\276\321\214\215\276\201i9<\323\372\303>\245o\277\276\365\006\320\274\201 \356\274\276G\375\275^~\026\274&\201\244\275\311\200L\276\276\264(\277qw\311>\355{8>\006\026\227\275\007\201\205>z\336\020\276\330\000\\>\302%\317>\201K\242=K\267\277\275\226S\220>\252q\274>\033\242s\274X\227\343>\350!\204\276\303 s>\004\361\263\275!U%\275\352&\367\276\201k\256\276\030 N\275~\364l\274\263\212D=\013\367\230>z\254k>\373\0206>\\\016/>\214\245\372=\270\021A?\006\007\330>\311N#>\3260\335\275\342s\371<\2749\254\276\374,\035>k\232\305>\010\325\263>t\t\356>\237\317y>\3654\260=\204\2606\277\315\370\007\276\214\366\214\276\022\252?\276\2366\312\276\344\362\003\276\333\254R\275\r\324\220<\374\246\215\275~\021\246\276GQ\270\276^\010\356=\260\306r=\375\310o>\270Yu\276\271t&\277h\243\364\275\212\217\251>$\225\302\200\321\313>\304*D\377\321\305=\324\337\202=J\215\233?\017\005\035?\306f\237\274s\024\001\275yE\214\275\263\310\035\276\354 h\276$\210 >^d\025\276DMe\276\246=\241=\222\215}>Qi\r>K\303\322<\345\250.?\005Z\031\277\233\305K\276Hs$\276\314\274\306>6\307\036\274Y\306\210\276\250.\373=>\216$\277\377\227\037>2\361\350\275;\320\'\276\323i`\276J\210\361=&\210\016=o;d\275\224\354\257\276R\217g\276V\314\215\276\261J\347>\t\215\\\276o\014\221>\251\r\215>|i\306\275\325S\265\276$\\V>\022u\375\275\324Q\220=\2632M>\267\016\261\275%F\216=\277x\212=\307\'\272>=z\t\277\312%\257=7\035{\276\0177\255>\206\332\302\276\254\241\267\276\231\031y\277E\022\326<\007\032R\276\267\211\274=\3556\354\274\224\215\030\276F\206\373\274\277}\370\275\036\307\230\275^\007#>\342\353\235=u\306\262\276\316\345\340=\033\366\000>\307i^>b\200\332>L\033\342\276M\243m\276$\371y=>\300,\275\257\220\242\276\022\250o=\005\231\315\276\2176{\276}\017\211=8\372_\276\2259\004?\022\220K>0Bg\276\375\002<\276\265\000\261\272\253\240\014\276I\373`>q\271\363\275\3430;\276\246w@\2774\3332>\364\226\201\276\255}\201>\240\203Y\276\360\244\005?\242\035w\275\317\004\235>\031\302\360>\363\226\"=\2517\253\275e\225r>~|\261>\306\203\004\274\2433\246\275\236\355L=\341\225,>\362i\036\277\343\1777\275\244\352f>\326\215\320\275\343bx\276\365\002\266>\224g\t\276\022w\302<\2255K=\366\247/\276x#\006=\325\010d\276\332i\367\2752\270\206\275h\301\013=\221\2741\276\014\206\201\275\220\225\255>\261\362[\273\263K%\276\266\021\263\275\346{\031\277\0260\200\276y\276\232\276\221\361\203\276+\266\225>\363\022x\276\331x\232>:Z\207>\021-\215\275U\\\014>\271\315\355>\273\243\271>~8\315\276\200\212H>\201\272\017?66\235=\213p>>c*\020>|\210\305>|\3011\277\225\r\007\276T\367\003\277\017\034%\275\242j2\277M\220\350\276\r\215x>\r}}\2765]\026\276\373p\327== A>\273\351\326\275*j\350=\215q1>\353rY>\357\331\376\272V\261U\276\3365\306>\205\277\035=7R\352=\336Uk=\020\024\014\276`*\022>8\236\356\275\025!4<\216\346\222\276rQ\033\277\205@\365>\231G\177\276\217\260\203=l/\266\276X\213\306<3\253\247>\021\304\217<\3637\232>\226\013\237=\312pC>m\321\201>\260X[\275\321\333\307=\222\177\227\275\255r\253\275?@\321>\372\372\333\276\177\205\342\276U\203\224>/S\207>m\252Z\276\235\372\005?\320\177\317=e\326\212=Oi|\276\210lJ\276\251\350R>\361V\263\276(\315\232>\250\007\376<1\256\222\276:\261\320\276\203m\254\276\2060->\302\025\025\276>r\364\276\304W\317\275%3\215\275\337\253\'\276\334\222\306>\253\223\213\276U\201\213\276\243\352\014>\211\353\374\275)G!\276\226\243[\276-\212\320\276\357\356?\276\215\251\264=%G\340=\222\326\242\276\227\005\310>\301C\263=/t\234\276\237\375 <\211?g\276\232\262\241\276\323\262a\275\312\374\342\276\005\367P\276\242\025\216>\2634\037>\320P\247\276\302\353\357\275\n\214\017?\276\204\231\276\027\307\362=\311\213\225=K\016\210\276(\2524\276\277\322\310=y\241:;X\274t\276\247\313\345>\370\013\020=\343\216\307=z\023\266\350\276\\>\340\211\270\276\325\366\314=\354\357\224=\306\326\211>vl\034>\010Gq\277\214\204\360\275z>l>}\214\242\276|DN\277\263\231\315\275j\373\r\277\022j\256>\311B\016>\212\212\347<\327\363:>\310P\006\276\006\244\326\275\n\326~=8\335\024\276\364\323\214\276v\331\272>R\376\323\275\000V\214\275\037\327Y>\373n\210>\266l\000>\222R\020\275n\234\235=\202d\0245\235\271\276\314\023\010=Q\221\215>\"\367\205>\017\253\373\276L\242\260>\235\265\236>\233\277\264>D\2434\276\032P\262\275\2643t\276\036e\365\276!\322\002=r\035\027>\323\006y>\250F\262\275s\375]\2765%\'>T\200\250\2763\202\230\275\t+\023\273x\005&?}\222\321>\236N\313\274\254W\206>\365\215\016=\004i\217\276.\254J\276Fa\264;\355\r\377<\006c$>w\314\204\275s\003N>\350\356\005>\222\232\021>\274\\\025\276\305%\304>\340\000\000\276\021;\362\2760\310\020>G\307\315=\031\255\310\276\221l\204>&\361\350\276\234\372*=\210\260\276>\252\010\253>\023\264k=\326\371\220\275\220!\232\274$Z\310\276\347g8=\0016\n?\254\036\003\276\205\372\350>\016\001\200>\222\365\220<\336\'\304=\327\346\230\276\t<3?\302\356\221\276g\334\033?\016S\272>\310\317=>F\322\224\276\221\201\010\276\206\233J\276\216\336\"\276Sz\207\276\347\261M\277;x\315>\243\225i=_|\031>J\320e\274\205~/>\261\263T=P\325K\276\245\252\323\275\257\020\345\275\255\313\261\275S\337\241\276$\240\024\276\237\250\205\276\327\241\353>.!\017\277\023T\240\276\372\330I=1\200\262\276\036+\n>\370\315\361=\004\223U@H\225:z\314\371=\"T\243>\030a\352\274\223\237!>\214w\327\276\032\032;>b\233\227<\362\306e>5W\263>\306\\\236\276mc\266\275n\210-\2749\216\024\276\021\033\255\276\306\366\216>>f\017\277\262K\266\276\352IX>Q\276\315\275\201\250\316\273\002\276>>_\"t>\006\277\231\276\017\034\200=\275S\207\276\245\336\252=\302q\307>5\217\310>oF(=q\031(\274\247*k>\252y9\276|?\242\276\247\330R\274\223\n7=\000\356\206\275\221\270\201\276l\005\256>\210\020>>\275\236\333;\276\267)\277\300\033\364=\0321m?\006\313G>\000\301\354<\023\005\277>M\210\256=\000\311\001\277\271H\013\276Zi\035>\257\233\217>x\2425\2779\374#?\030 \353\274\317\327y\276\265\"\321\275(wJ\275\275\207\266=\222\340*>\3263\370\273s\2713=\036\227\345\276JB =\342\203\017\277[-\307>{Q[>\"\r\226\275\333\004\005\275\224\2633=\333\235\223\276\2116\307\276K\357\256\275P\361\007\276\214\354\330=N7B=\032\312\340\274\321\007r>\204r\350>9\n\270>\204\034\305=\323\241\030\277\031D}>\370\300\006?9~\275\274\275K\362\276&C\207>\343\023\224\275FA\215\275\302\253\212\275NO\306<\010\320\351\275\304\236\307>\314N(>\010\034\016\276\274D\251\275\363\227m\276\273\335\350\276\332\352\332\275\026\367\267>\260lK\276\334\324\357\275\311N\234>\201P%?~v\247<(\"\000\276\177\021R\277G\354\336=\371u\240\276\2719\007>}\027\016>J/\274\275\333}\301>\267\237\364=\317\275\254\275H\365\t=\356\231l\276\336\216\253\274\354ob>f\335\013\277\271\331j\276\016@\214>\345\371I\276\"\200\004\276[\332\003=\317\0319\277\260\224}\276o\322\324\275{7g>\365+Q>2V\006\2779G\313>,a\237;\240\262\316\275\206P\310>\340\253\341=y\237\010\277leK\276\352)\020\275L\216\227>Fk\331>\270\244\264\276\026Lx>\026\236\251=\346+\315\275\004\303\210;\273]\202=%\203\322\276\0336\222\276np->\327\315\370\275\0079/?R4\304\276*\210\306=U\355\346\276O\020#>\236\357\007\276\314:Z>\235\231k\275i\242\232\275\327\032p\276\332\351\330\276\026\300X\276\206\345->\021h\004>-F\365\275\031\377#=\207Z\336\276o\347_\276\206|\220>??j==\030\001\276\032\273d>\tNv\276\247m\205>J\0033\275\354c5\277-z\274\275\267\2063=k\311\245\276\262F\327=w\331\253>\307e\222\276\320:\355<_\247\336>~+5\277\034P\003>\275%\333=\326c\\>b\202J\275qM#>j\336+\276\376\211\333>\273\301\214\276\325\376@\276\020!a>\276\225\325>\310\347*\274\260\014\215\275r\232\243\275\023C\255<\242\014@>\340\377\345\276\"\254\023\275\373\312\224\275%\001,>\314\360\t\275T\324\260\276\220\255\305\276\000\007\340\276^\221\007\276\270_\007?\tL\346<\035\364\247>a\261\371\275\336\327\335<\207\327\202\274\245*\273\276\252\360\341\276s0\343\217|s>r\376l\276\211\027\312\276=\027\005>\031\366r=\257\222\275\275J\001i>?\366\236>\262f\032=\364\245*>\0356\206\276|\213\031>\315\023-\277\237p0>XP\034\275\356\305\355\276\335/\302>\'\307(\276\360\325\001\276\325\330\220\276I\344r=\364_\013\274\031\326\217\276\201\246\250<\234\203i\276\323\215\227>\314\224\022>\271#\317\275\237\345\263\276\221:\327\235HU9[\213\327\276[\342\366>\036x\223>V\024\323>2\315\322\274\272\\\020\277nUL=9\373\322>\023\373\357>\016\005\216\274\374=\307\276\033$\345\276\310\t\033\276\254k\210\275\232=\034\277\022\006\304=\032)\276\275,\346\244=\3070\006?\321\204g\2760\035\320;`\223\235>U\301{\276@\312<>\020\331\207>\201\323\355>\237?\273\276w\310\202>\375\361\032\276\241\364\212\276\316\317g\276\337\255\212>g\354\003<*\252\001\276\3102r=t\031\315\276\'m/>\004-\265\275\235\332\253>\256q\233\276\325\024\\\275\014\321\226\276H\003\242<;*\306=No\033\276\206\251j<\030\200\014\276fF=\276<\033.\276\214F&<\2204\017\276\233\021\257\276\361\301A>\2028f>v\030c<\n\006\271\2754KZ\273\334jI=\t\254\332\276\363\241\301=\371\302\247=o\263\225\275KcD\276\271F\306>a\200\201=\350\356\314\276Z\275\220>\267\306\323+\313\270>2\225)>h\307\010:}\302\010\277\254\231[\2736\327w>\332\335\366\2745\226G>v\013\334\2768\000\346\276[a\004?3\370\236\276\2051\240>-\223\021\030\017!>\252u\034\272\203\221\014>K\266\221\2755v\240\276>\\\304\276\244ee<~\344\206>\253\022\357\2757\020B>Q\013\206>\245\322\206=\361\223\240=\371\210\240>\246\251u\275\347\330Q>\035\230z\276\010\274f\276\352+\240>\301#\215\275\270\245e>O\322\332>\246\320{\275\342\017B\276#\343\272<\220\313\213>~\356\222\276\231\324\235<\215\253\234\274m\307!\276^\204\343=\307Me\275t(\346\275\361\352\020\276\211\nc<\337H%\273\007u\003?H\021h\276\\B\272=\366\215\021\275\331\3309>\250\335\250=H\001\207>\211f\211\276\035)j>\361\016f\276\251P?>\032G\216\276N\351\230\276\270\'\334\275\371[\211=\216\304h\276BZ\257>\177z%\276TC\021>\025B\246\276T\274k\275\026m\271\274J\023\303\276\341\274\222=\214\221\'\276$\226\005?\307Au\275A\253\312\276\335\331\032\277K\027\340=\007\333\323=C)x\276\317\364x\275V\314\266;\304\220\016\276W\216\000\277\312\370\226\276./\213>\263\022\330\276\307\034\200\276\272\005\366\276I\3554>\353\226\001\276\313\347\220=\213\214\005>\t{\354\276^\312\202\276\277\214\004\275\337pd\276d\226\331=f\270i\277\321W\277>\356/0\277\201\3153\273\024\2739>p\314\247\276\362S\373\274|\214\231>+\323\220>9f\301\276\241\336\267\276\202\237\003\276\266,\231>\313c%>qp\026\276M\352\366\276\034\276\007;xp\226\276\321\373\321\275\266\345\214\275\347_\217>\225\025\232\2754\202(>K\347\250>\2639\036\275\373\366\014>\377\210d=\274\201\366=\024\"\366>\034f\215\275\2214\217\276_+\232=m \231\274VA\304\276L\r]?\233\302\023\276X\345\266\274\251\201=<,\005\212>\224\240Y>c{\032\276y\355\r\276\225\245\205\276\232\255\232\275S!\347\276hA\273\275;\253\253>m\r\230<\371<\250\276q\354\177>\323y\010\275#\034\274\275\005\0148\276\226b\263\2731\322\302\276\\)\207\276\217\253\343=\361\002\017\276\333\226\206\276V5\022\275?O\032>\t3\033\277\t\330\365\330c\255\276Z\211\343\275v$\202\276\325\036q\276\344\000\001\275l\236\240>\303\0061\277\276\256\346>\322\346\034\275\377\'\266\276VX\356=\316\317\265\274R\324\364\276\260$c\277rA\321\276r\344>>u\232\346\271\354\351/\276\213\214\375\275\356\343\315\274\003\376\220\276\003\226\010?\336\346\272=\335\337\216>\000XG>\242\370\245\275\333\250\363=\30322\276<\311\230\276\010\334K=\273\325\363\275\206z\230>\234\213\220\276\346\026\262>;1\020\276\276\032\240=z\307>\276\315\013\345<&\3710\276\316\263\033?\343\210\207\276HG[=\030j\274;\013p\313>\260u\212>@\335\031>;\\H\276\365\244\\\276\356\231\340>Ybn=\270\016;\276\006\034\010\275\212\304\312\2761Yb\276\303\345\t?\235>\035\276\366\202p\275v\353\231\276\3161\244\276\2543s>\250\016->\254G\016\275\214\037\203\276\334\311\243>\230z\217=Vd\034?\213r\014?\236\252:\276\310z\323\276S\213\260\276\254\357\273\276\235\036$>A\023\000\276\003\266{=\"\361\215\276]`\230=w|,>={z>\353h\302>\006\343=>(\367\013\276\tW3\276\214\200\022\275S\342Z\275v@K<\275\325+\276W5)\276%\317\217\274\270\256\206\273O6D>t[\201=\353V[\276\020\322\364\276\374\005\022\274\371o\206>PEl\276t\031 \2769\023\007?$\371\024>\325\374\220\276\304\221s=\213\004\213\276K[\263\275C\326\026>\366\016\263>m\206]<{\254$\277\270Jr=\210\226\232\276*\024\234\276\317\270\345\276\233\tt\275Q\322k>\177l0>*\225\"\276\266$\276=\216\251\013?\016\345O\276\003;\'\277\273\237\222>\247V\037>\033\257_>\256\233\303>Pe\225\276\252h\352=\330\300\032>\027:\234=b\026\351=+\316q\276Se\337\276\t&\372>\313\372\251\276Qd\232\275\201\301\251\276\227\377z;\205\327S\276D#\200\276@\216\031>\314\200\376>\303J\302\276\ni\021\276\004\304\364>\357\273\301\276L\324v\276R\017\331\276q\"\037\276\262\265|\276\266\261\030>\250\262\036>KF\207=!n(\276O\362\272>\311[\261>\031\013\252\275\320\352\332<\353\275\027\275a\326)=\214\340\204\276\024h\253>\316\037\017\276\333(\210\275\225\365I>\232\3725\276\361kk\276\234\230\243=\342\017->\202\347\313>\324a\312>\017\370\333>\275\256 >\222\372\036\276\r\211\377\275s\303\237\276v~\213\275\232\217)\274G\226\355\275/\026\207>\312\311+\276qj\014\276:\217\274=O\314\004\276\351\237\364>\003\310\233\275\267\010\255\276\344\001\324\276`Q\242\276A\355\367>\352\321\301>\325^ \277\002\254\036\276\252_\025>\365>\205=\232-?>\377\367\032?\310\270\264=s\272\372\273\330\231\204\276\314#\351\273\3205\240>c,\311\272l&\354\275@E\331\274\274\313\010?sy\203\2764A\376\274\nm\267>H\360\362>\263\323\031>\224\302M>oC\354`B\201<\213P\003=_\200\363\275\213\3200=\350b\275>\332d\014>\202\302\036\277\317\022\t=\370\034W\275\221\263d>5\341\t\277,\224\014?\030\207\244>\301\311\214>sV\334\276BD\025>*\224{\276xR\001?Z\031w>\355\312\245=8\343\251=\325f<\276\343\341T\275/r\n=\306]\263\276\377\274\204>\n\262\r>\257-J>\355\320\315\275\266\207+?\211\n\345\276\357\211\233\276\335p\\\277\000b\374\276\274\354;>\303\'\232\276\336\337D?\357\0022\276\317\020\257>\263\3775\276\177\245}\276\027,H\276\263\027\365>!\251\271=\002\367(\277\203;\341>\363\3106>)\t%\275X*`\275\3046|\276\224\3668>6\270\241>*O\245\276\205a@>ooD>\221sJ>\330\372\214>Q\255V>\377=\324\274Q~\272\276\"\263W\276Xt\323>\242 \343=\204\244\r\277\232\366\222\276C\014\253>/\277\007>\254\260\371=q\376\304=2\231=\276O\017\220\276\356\020\346>\022#\210\275\013\217M\275\236\0273\276\271I\365=0\220\200>C.!=\034T\211>\317\307a=5\275\316\274\225q\246>H\323\336\276\235\273v\276\233\324\202\276H\370C\276m\275\202\274{\242\301\276\201\0374>\313\202\274=\333{\312\276d\3305\276\177D#?\230\363\271>m\372\215>\325\004!\276R\301\204\275\247\021`?\223\371\342>\031>\254=Q\203\255\275\274\301\252\2764D\035>\225\004\241\276\320\324\343\276\032_\"\276M\351\221\275\2127c\276\263\367\372\275\356\305\035\277\377@\371\273\301\271c>\035\013\345\274\345\027\010\276o\026,\310\303\000\276\233\373?\276n]2\276e\000\253l\363\032>4\326\275=\274\222\221\276,\024\013?\023h \276\300.\"?#_\223\276! .\276\366\354\251<\311o\272\275[\240w\275\265\270\252=\326\355k=95\211>\365\332\231>\320\344K>\333\217\260\275\363l\263\002\344;>(A\324;\271\177\363\276]j\270>\3347\336\276\325\270(\275\232\347%?\250\2130=c4\331>\372\267\203>\255\014\341\2732\020J< \361\222>c\246\020\276\264\360\256<\346\220\261;C\220\240=\343.e=\252\032\352>\361\236[\276F\240\230>\0020d>G\365m\275\th\202\276\264-\233\274\223\241\213>\211m\232\276\245\265\354\276\002\366B\275\302\247z>`T\276\275b(\001\275\r\255\267>}\250g\277o[\377\275\216\207H=g\253(?|\036\n>D\350\254a\235\301>\2262a>\351\3147\276\271\217\327>\2570%?uw\204>\222Y\260=\244\333E\276\367(\003=\243\"\r>\327\360@?X\272\247>@99>\3226\302\276\261U\000>\205h\353\275X\n\346\275\r\312w>\350\241m>2\227\205>j>\t\276\341\202\003\275+\363\027\277rz\363\276BQw\275&\361\327\276\"yE>\314\327p\2755\321?>}\031->J6\256>}\266\213\276K `>\204\260\373\275\016\315\250>`N\322>\252~Y\277{-\274>\346\r\211\274\030-\022\276o\253S\276F\247\233\276\300\241\315>\302\333[\276\220U\224\275\253\310\236>\200\233\250\2760\037\032\27629@>rg\210>m;\007?\217\265u\276\374\330\211=\342\306\211=y\250G=\237h\361>Nh\034>Y\236\330\275\330mx>I\222\325\274\255[B=\305\2273>\3662\326\276\027\371\000?\347r\226\275\314[E>\037\213-=\032=\032?\321z\221\276\214AK\272b\014+>\351_\000\276\357\334(=\204\022\225\276$\215E\276\004\270\260>\312\2600\274\017U\237\273\341Y&\276\372sX\276\225\313\215\276\343\177`\275x\220\227=\016\273\306>h\025\006>:\232\317\276Pu\246\275\345H\010\277\232\311\206\276+\325\342=%\220\342=A\2714\276\325\224\277:\277\320\270=\016B\232=\253n_\276\273\312]\276*\341\034>\222;\212\276\035\316\241=w@\222>\014\347\317\272\3108s>\\\261\374\274\370\007\013>\246&\301\275\351l\257\276M\004\330\275\014}\355\276F\327\250\274*\366X\276H+X>p\004\234\275\361\204\251>4\235\023\276\216\262\261=s\300\364\276\r\304\201>\374;F>\370\231W\276\354a\202>\3058\"\276\336\033F?\251\370\007>v\222\005?J\2406\275$\343\271=Oh\214>\002Z\033\276T}\320\275CZ\270\275\215\352L\276\016\210\342\276\352\375\207>?M\n\277\276\\(\276\2214]>\007\361&\277\001\240L>\026k\031\276}E\244=S\272|>\223\354\330<\274\355\t?\337h/\276\225\024\315>\3038\251\276\217\273!=Md\226\275\343L\026\276\023\366&\277F\314U>`\333\210>\037\202\316\274\37490\277?\030#\276\001q}\2765\371\370<\210\376\201\275!\322\006?\3635\274\275\331\006\200=?\311\017\276f9\330>\t\365\204>\306\2627>_\371z\276)\377\214\276e\265\304;\357\262\r\277\262n\236\276\221\234y>\335\006\211:\371\006\007\277c\370\304>\322E\225>g\310\351\275cP\265>\251\177\014\277Hk\307\2742\242\217=\315\032\004?\331\333\231\276\340\035\274<\347#\216=\260\376V=\014\227\031>B\177l>\315c\252>\277\232w\276\311\221\344\273\357\262\027>\235\340\230\276@\362\013>\016\214\216\276o\216\010>\356g\034\276;wu\276\232\244$\277\341\353-\276\337J\230\275\223\2515\273\3341|\276\'\365\273>Z*.\276\227\373\014\276\321\177V>\351\251\262\276\220@S>\321\251\202\275\030\226=>=\367\206=\222\233->\202|\264\255{\013=.&\017>U\371=\277\"\243\222>\307=[\275\2723O\275s\301\274>\366\031\233>)\335E\274`\3641>s\253&>\272\321\207>`\033\254\273\234\326\266\275\271.\237\276\351\221<\275\222\310\225>\327_\204>\322\266\253\276vB\236\276\323W\037>o\272\032\276\025`\267<\245\344\304=rZo>\002\2053\275\201(%\276\033\221\017?YML>4+\206>\033NT;\335]\354>g\005\r=\"#\335\276\356\2150?R\016\345=H#\311\276\256\245\021>\307\003\222>\273\226\225<\373\377\201>X\213\331\276\203\353]\276\223\302\230\274\374\273=\276\360\001\267\275\030Pu\276\\<\322\276J\375\335{O\027?\205Lm<<6l\276\247q\277=\357?d\276\351\265\242\276\347\365\300\276\265\270A>y\017\010?\337\032\205\277\217\255\231<\3279\376\274\302\r?>l\232><\376\316\211>\252\261^>P\336$\276\270\302\311\275A\354\273=\215\320\204\277\232\001\231\276\374\340\366=pE\210=\0324\340\276\245\007\007>\345\234\215>\021\225\237:\245\204<>\210\217m\276-\274\245\276+\256\034>)\370T\276\353\255\t?Of\327=K$\255\276&W|>\360\306-\275\022\032\267\276\t\376\006>-\324\270\276\354\311\024=\264\330\327>\'\367\254\276&\326\214\276b.\213>\376b\001>\253#\004?b\201\253\276d\217\314\276Gu4\276\367\013\245\275\331\202\252>\"c\310\2766\341\230\276\264\353\256>A\207\213;s\032\216\276%\242\n\276u\311\335{.Z\276\300\307\255>$\246\344;\250G\227:\206n\251\2756\310\310\276M\210N>\234\223\260\275\342\013\353\276\211\201\033>V\240o>\252RW>\252f\035>s\227\241>\322\201\253\276\001\206Y=qj{\276\365\240v\276\026\\\304:\365Ul>\333\027\252\276\207\025\201>gn\340<\255\374V\277\210\217\233>\\\351\002>w\001\204\276\006Cx\276F*\225>d\037E\277\003;\310>Px.\276aA\275>\312og\275\020#G=c\232\r>\374\253\254\276(x\262=\215\312Q\276\371\007\314>@\023\354\275\033\310C\276\263\037\027=\207Z\221>\021[\214\275\035s\327\2765cS>\027~0>\032\314\267\273\233\352\212>}\021O?\274\274\260>\341\347\236\275A\3719>\227\375\317>\244\253\031\277aR\036=\037q\225>\031g\354=\026/\220\2756\355F?\356\207\024\275#{\246\276\237\r\266\2764\307\025>\376Y\333>\017\024K>\325\345\206=dd%\276k\227\311> \331\374>\276\320\250=\020\271\277>\313,&\277\201\243\343\275\340\367\214>\357\266\255=\022\036]\276\334Q\255>c\371\273\276`\2007\275\024\362\003\276\207\367K>\036>g>da\'?\257\036\220\276\345R\343=g\3404\275*\367\330=Y\204\342\275\n\245\016\277\010\306<\277\372\317\027\276\303\310o\275\275a}=\230\246\252>\263S\360=\237D6?\371\241G>2\231\207\276U\357\003>\023\310\036?\306\237~=\335V\352\274\265*\215>\021\373n>\373\360\023>\267\001\010?\177\247\230>)\233g\276\341V\330\275\022i\203\276\3440=?R\3229>\316h\217=\005(Y>S8\332>D\264\332>\211\242\330\274C\204\256\274T!G\275\324\240\274\275\250!\217>>)\242\275\267=B\275\214\361\222<\336y\014>!m\327\275\033<\244\274\3270f\276\334J\272=\207\246\246\276)#\262>>\332\030\277\354**\275\345\357\r>\014!o=\263?}\2769\351K\276[\254\315>\216/\031\277\305\361z>\031\270Y>\224\031\231>r\3359\276\005K\362\276k\330\341\276p\036l\274\005\377\211\276Z\213/>\372&\371=*\016\260\275\256\013\n>\237\357\334>\372n\037?\373\377\364>zT\322>*\234\243>#\316_>\214d\214\276hh\277\276\265\235Q?x\000\346\274#\326\354\274\315{\221(\014W=\r\3325=\227_\257\276K\210\001\276\367\303c>\336)\n>3\023\346\275\313\005\267\275\016z\213<\301)\241=qY\256>sG\303\275~\316\204>\243{\035>Ox\372\276\2058\246\274\3206A\276\245\357\000\277S\316(=\270\315\242>\331\016{\275N\366\273\276\010>\374>P\377\020\277\252[\375\275&X\263\27580\310\2751\340q\274\241\224\020\276\322\361P\276=\016\001\276\343b\357\276\233\346\271\276,\037Q=\316$\331=\304l>\276\334\214\033\276\373\375\262>Ot\312>q\324\010>\274\231\027>\313\351\n\275\267`\342>l~{\276I\343\000\274\342\306w\276\226\314\202>\340\036\016\274\274o\203>\375t\211=\235\334\312\275\221\033\003?\332\014\340\276\337\277\204=\314\321\005?\275!\252>`\254\224\276\350\005:>v\213\242\276.\253\273<\355U\270=F\206O>\324d\033>*0\266\275\2640\203>\3674n?\202\331C>\3000\204=J:\313>\232\025\201\275\376\321\350\276\n\313\025>\302]\334=\204\014\220\276p~8\276\252\222X\276\332, >\271#\026>\354\027\311<\262i\016?\004\234\346\275\373\222\320\274\366\261i\276\352\222\303=\227\343D>\013\251\035\277~\356:\276}\022\325=\020\312\325\276\367s\274<\314Q\277\276\315\321\257>\250\032{\276}\005\214>\240\325J\276>\3170?\321\030\026>\373\305\241>\254\326\356\275\337\312\323\276\036\345(\277J\225\003?\272#\n\275\313^\315\275m\333^>{\034\210\276;\322\342\273\307\0221\277\234\265\030=\356\030\330\2738dR\274b\3146\274:5I\277c\017y=\355\340\243>u\311\027\276\265\355e\275\302\247\342\276\307\310\277>F\232\201>\222>\251;\363\035\037\2765\003\231\276\375\327.>\201\323\306\275\216\264:>\330JK\276\240\351\335>\315MQ\275?\272\340>\272?2\276\214\3516\276\377\272+\277\316\341/>\262\376\267\274g:\223=dX\000\275[\230\347>\344\307@>I\231\254\276*\023\230>ZN\n\277\027\326_>\215qL>\267\002\310>\036\237S>mo\230>\307\325\212\275\020t-\277d\251\242=\355\3657?>P\204>\257\256\032?\007S\216\276\301\177L>OD\004?m\372\023\276\226v#\277\371\261\217>\361\351.\275\265\266\305>7D\252>\273\010\202\2742\336i>{\302y=\241\036\264\276\261\004\271:\003\236\214=\210\310\221>g\216\246\276\276]\027?\256Rr>i`\213\276K\304\207\276\267o\313>Ymo\276\237`I\275\034\213\370\206\276\367\030T\276\020q\003\276\003\313@\275K\345\021>T\325\232\276\325\243T>\236d\270=F\330\305>\303&\252>\270\276\212\276o\342\353\274f\001\233>(x\224\276 \226K=\312\036\274=9\270\307>\3151d\275(C\006\276\355\013(>\327\317\235>/\035\324<2\276v\276\202\312\251\276\0064s>ZVf\276\210<\263\276\361V\022\276$|%=\337\037\017>g\364A\275\205\264\311=\333\247\010\276!\004\272>\201\002\r?\336\2274\277\273$\361\274\315b\026\276\010p\321>f`\313\276\\\322\211\274\326\373\374=\\I?\277c\275\241=\252\270X>\031\201\t?\212a\253<\320\243\340\2761Fq=\2552\257>j\373\214\275\321+\311>N\033K>\325!\350=\273\"\007\277\310\234(?0\233\213\276\370\303\235>\271\273\r\274l?\007>X\344:=\230+\325\275\362\213\334>\031lA>\322c]=\370\202\207>f\323\305>\262K2\277h\240\205=\026\253\214\276\024\200\304>\376\221~>\346G\236<\201\022\203\275\377\364|=\004\214\303=\220t\035\277\000,\222\276\224\222\323>\267J2>\335\331f\275hi\372=\304\265\240\276\216]M>\000s\303>j=\016\277\216\314Y=^\251\214>b\355K=\267\315]>^\223\037=\325\223\347\276\365=E\2759\256\220\276\037C|\273aOM=k\300\023>R\372\360\276\032\232=\275GBW\276\\\244\321\275\007}\334<\344\334\013\276\025\304\234>YdO\277Y.\232=\007\352\245\275\300\016\315<\244*/\2748-\223\273\277\0231\276e-a=>k\204\276\271m\263\276\363s\023>(\323\001?\006\333\177=T3\273>3v\023?\237\207;\276\333\236\225\274\200;\202>\rd\020>\271\344\257>\300\324\261>\334n\000>dV\214\273K\005\364=\201%\236\276\232\034\326\275\366~\342\276oc\263\275\206\311j>\000\255\240>\350\225\367\275\244\253f\275*)\201=J%y\275\203\022s\275O\\\211\276\n \355\276\234\345\372=\025\327\210>\350\377\217<\345\222a>\325\325h\276\3630\241\275/\275\036\277\342\210\264;W[\334\276\330\261\276:\003\263\265\276\366 \305\276\215\332\301\276\230\235\016\274\300\215\023\276a\256\222=_:\217>\2233D\275>\3521\276JH\233\276\304\373\206>\235\310\252\276\2276u?\245w}>B,\010\276\331\201\220\276V\017\203\275kmS>\014\220\t>\311\265.\277\227\020t\276*C\304\276[M\264>\301-\t?UR}>\304\373\323>c^\002\276\2476\376=IS\306\274h>\"\276\005\031h>\005\324\375\361\323\333\276\023\336X>\035\323\324\275\216D\223\276K\374\333\276\2456\310\275\263\237\232>\034\251B\277\213=d>\372\201\221=\177\305\031>0z\030\277\247y\"?\222\022\\\276\263\356\220\276\316\315\230\276T\0245\276\316n\327\275\260\245r;V\016\010\276\222z\037>\355\302\317>*\035J\276\342\350\223>Y\250\362=i\351\363>\252w&\275\022\214$\275?\212\230\275\354\216D\275\300\341\235>2\016y\276\t\021\t\276\005\371\257\276yX\242>\276\232\305>\201l/\275=\244\024\27676\315\275+D\\\276\n\014\001=\260\367m>\334\256\315\276r\317\333\276e\010q\275\261\376\r>8\0301\274\324Y\225>\323\316\213=\003\332\"?\366\235\225>\010\014\235<7\243t>R\270\251\276\370\233\000\276\013\365\316>\334Gb>\337\305\274<\356w\007>\376\314\326>$\rT?/.\242>1\203E>-\363\226\276\234\026\231\275#\211\'?\2400\316=p\240\375=-\231P\276\333;\021\276f\370O\276\273\206\"\276\355\241\205>\242\036\246\276o\317\311\275\243\201\336>?\256\222>F\332W\276\311\247+\272\024m\031>\272\367R=\250#9\274\346V\361\276\022/\"\276\366\006\004?4\235\227\276M>\201<^\247]=o6\306\274!}\010\275w\230\266>\242\372I?\354\364Z>\001#\211\276#\317\006\276\331\220\260\274j_\276=\333\357\014\276\221,\025\2764\366\270=\360|\277\301\001x\276*\205\345=\231\304e\275\305X\234>@\310\351=\3058\037=\223$R>E\345\213>\272\222\023\277\215\352\321\276\252Jj>y0-\274\245q\n\277\325;@>\202e\274\275u\010\220>\"<\310\274\237\0320\276\nud>\326\030\234\276\237L\007?\004#M\274\262J5<\322s\343=pL\341=\013\300\213>\271y\330>\263\265\274\276>\216\">p\330\003\276\212\326\326\276#\"\356>\r\010m>\314\354\244\275\254\036\345=q\375\003?\325\217\006>|Xk>M\t@?cB\317>;\217\026\276\222\243\006?h/\220\276\255\253\311\276I\231\232\276J\243\265\276\252\333\223\276\026$\254>\375\030\016\275k\242\026=.\373*\276\3001r\276\214\013\263\276\232Y\234\276\253h\177\276\222$\017>\340\021\274=)\006\353>?\013O>h!\276\276\217\026\322>\302#!\275Ta}>W\351\201>v\215\033?\360\242\036\2767w:<\211\207)\275s\210\332>\006\274\245\276D\355\202=N\274\014\276\177#\013>8_\210\275\276\034\372;S\361\217=;Q\225=%$\310>N\204\353\276j\241\343>\037X\354=\204@\006>\304g(>\335\203\317>\227W\303>\026\232\241\276\271\323\004\277\274\345\007>yZ\327=\202,|<\232|\017>\257\354\266>hT\204\276\233r\231>\241/6\276\344\342\217=\243 \177>\021_]=\241\344\227\2761b\021>Q}\252\276!m\372=q7\014\276\364\013\201\276\256\307\007>\221\312\210>\026\351\245=\020\234\360>\275\301\224\276k\352\264=\245\367\020\277w=)=\304\270\'>\370\313\r>\001\341\200\276\243X\274>%\333\301\275\200\363\252\276o\315\n\275\206cn=\261`O\276Pa\223=\3730\354\276If\034=/(\001\277\021\261\r\276\017\244\310\275\247\220\030\275X\216\177=!\206\302>\273)\317\275\354X{>\331h\002?\231iX\276\222\016}>q\010i>\333\375\203>\220k\325<\014\020w=\014\350x\276\205\0130<\300\271\247\275}\230\204>\013\377c\276\013\313]\276\347`\247>\342\017`\276\355-\372\273\303yR\276\262\217B\2743\036\034>\034\255\236\276\'\313\003>\005m\247\276R\213\352\275\253\331\326\275\303\004\310\275\370\037\322\274\005\375G\276\224\376\231\276|\342\375\276u\344\224>\260c\212>\230(\213\276\276N0\276\357y\275\276*\'`<\027\325\033\276D\356]>/\344\333=\033\351\027?O\334\002\275W\326\264<`\"\221\276\0344\304\276u\375n>\216\226\272>\342^\216\275\n\312\217\276\240\207H\276\316Ux>\037M1\275\337\354\361\276\237>\254\275\017\336;?]|k>\345~\330\276\203\236;\276\227\200\026\276\242\022\272\276\030\003v=\363\200\205\274\207\014\314\275\321\351)\275\371[\224\276F0\375\276\014T\276<\332\212\305\276\001\277W=\032\236\324=i\206\212>\373HY\276n\260\200=Hs\003\277\322\030,?\350\021k>z\344\r\276sd\006\276\270@\273\275\331\265j\276\317P\r\277\210\233\004\277\363\336\360\276~\311\221>\311\263;\276\020\3612>\356\031W>1\201\203\276.\"\024?\277(\300\276z\372\300\276M\342\273>\376C\016?\352\0278>\234\321E>\216\020\353=}H\242>\2119\003>D+\021\276\316\216\244\274g\325\354>\002\277\367>`\264\306=\203\204\246\275\236e\255\276+(\243>8\243\305\275\200\335\267\276\3320 \276\034i\202\276\344\222\326\275z\211\001\275\200+\036\277\215\305\000\275$\311\330\273{\327\033\276\317\372p\276\016\n\242>Rwl>\001\345\301>hYS\276H\220\307\276}2A\274\226\270\014\277i\312\332=\230\005\245\276\276l\016?\232\263J;\017\001A\276u\r^>\2561\226\2758\206\000\277\323\026\033\276\217%\226\276\351\005\277\276>b\010\276w\240\370=}\266\230>=\266C>\346\314\330>\250[\270>@\005\370\275\216d\316>\234\321\235\276{\231\377\275\003\030m\275\315\016u>\"\252w=\252\032\315=7\256\301<\020\252G>\027\376\372>\300\350\036=\214\027[>\006\0315\276{W(?,\354\n>\006\255\250\276\317\325\365=\267\204\202\276\254\347\027\277)5\246z\231\252\276l\360\213\276V\t\r>u3\342=\254KS>\210y\345\276\304>\262\276Oy\022?\215=\271\276\210\337\205\276\217l\'>\306\0324\276\340\365y>\222l\251<\257\253\373=\231%\253=\312\315\002\274|\265\030\275x\0326\275l\334\231>\262l\301> \213H\276p\036\022?g\025\000?\\\254\327=\362\363\004?BB\003\275\354Pr\276\364\262\364>$\341\367\275\025V\017>ym\037\276(\223\204\276\2549\215\276\213a\005\277\222\021\\\276X\314\304=\273R4?go]>`\273L=L_C\276\003\356W=v\001\022\277\027\263\234>\360\347\267\276\340_M=\267L\016>J\036\">\263\344\t\277g@\271\276\375\330\255\276\207\351\024>\255w\237>t\371\306\275R>\356=\201#\277=\242]h>1W\257>~o\016>\003\0142\277J\031\337\275z\252)\276y\235\242>\260\n\214>\342\016\007?\334`8\276\270\242u\276{\027\365\274\327x\214\276K\325\376\275\3443\272\276\242\346\335>\334+\365>[\272\235\276\271t(>\005\001\311\274\333\021e>Ct\336\276\221\226\232>\3415\226\276|\354O?\375\323z\276\3533\t\276?\314\224>c\213*\276\251\317\325\276Q/\000?\2533v>\'\322f\276^{\250>\022\251\347\276\317j\217>\215\335\210\276\304\004^>\251T\261>h\342\352\276\221)@>>\303\323\276y\tz>\"E\212\275\266\310\314>\305\262\243\276xw\272\276\326\362\330\274\345D\311>4\226\236=,\257\232\276\006\330X\275\033\020\372<\001\010\346\276\233B\232>)\205\025\277<\202\354=\323\237\027\275\025\214\241\276\215\227\201>h\351\216\276F\247T>\300\346Z?\027ut\276\234\347\346\275\355\324\332>p0)=\013+\023=Y\365I>:\365 \275\337\330\225\276.\232\357\317\300\332\275\260\223\333>\304X\002\276\215~\025=\360\031B\276W\316i\275\177e\013\277\231\222\251\275G\307\246>\275vc\354j\221\276\225\251*\276\2435\223\276b\343\333\276\224vB>\344/\345\275t\032\231\275\345\314^>S\021\002<\320Q\335=\253\364\036>\211_\030>M\rT\276Z\271\3749\2518M\276\225\266\267\275\322\330A\275\246\220\246>[\246%\276\267&;\276\304\345\033\276W\214\353>c\263\371>1Q\001\277\373\321)=P\261\024?.\343\202=[g)=a\300\203\276\371\034\271\2753\031:\275\0241\364\273\300\242\266=\031\203\376=\365\252\206>\324\007\341\276*\001\313>\341u\274\2766\241\217\275a\323\360\276\262\354\347\275\014\315@\275=JX>\231\255\006\277\243\271\341\275\210\237\003?Y;q>~\205t=\3728)>\324Aq\2767g\016?\033*\254\276\364\232\244>\314t\206>`\022\237=\266\265=\276`\301L>\032\332\006=\245Ez\276\354?\320:HU:\276\212\004M\276\272\202F\275\317\275\222\276\021\216\247\276W\\\203>m\227j\276\217 \343>\223)\"?\276\007\344>\216b7?\331\027\220\276\361\356\326\276\246h\335>\353e\265<\320T\351>\222\214=>@\231\232=\313\237\256\275h\031\327\275\365\212\204>\034D6=\271\364\356\276\310Q\033>\025u\217>\267\253\005=\253\337\203=Q(\254\2766\3661>\340\376\274>\037i\315\276\000\254\020?\374\004\230\2755\220\217>H\023\330=\035\302\261\275\nj[=\210N\352>D\352\367\274\316\246\256=\365\352T>\226\222[<;\373\225><\262\216\276\257 \033\276\007\031V>\363\227.>\362\001\213<\361\201\327>\226\022\363=\021\336F>\305\333\200>W\356\212\275\211\217h\275\324o\225>B7\206\274\262\277\200\276\364\r\025\277\200\034\367\275O\004L\276!\212A\275:V\221\276\337\024\322\274\300\310\317>\034\374i=\344\347?>\361b\311\276\374\303\254\275\356\355\375\2751\264\033=e\261\021>\027\274\343\275\352)\207\274\241\005\266>;\361.>-}\232\275\031B\260=\030\315]\276\334\031c>\02135>\243\247q\276\274\nE>\271\344Y>\013\371\244\276\260H\215>=0\262\276\317\330\223=\247\217:?\002\231\262\276\247\030\301\276\035Q\302>%\360\245>\266\211z\276\022rFN\357\017?\253\334\016>I\375\001>\344\376\001\276b>\227\276|\306\303\275HGc>\200%\017\276\322\343,>\306\206\311\276=\344\035\277\241\251V\276\006]\'?=\340\242=]\201\363=Z{)>\355\217~>\353\354\037>:\261\362\275\302\373\325\276m\326\231\276\235\365\322\276\347\336\355=-r\032\275*\2576=r5@>\314p\330\276QB\303\274qzD=\275\200p>;}|>\345\312??\200\031\233\276\220\336S\275\"\361\035\277?P\333=\216|\005\277Y\230C\277\020\234\243\276&\252\023\275Z9\320\276`\001<\276\202\263\020>V8\337<\262\262C>\335\267\223\276\212[\237\275Iz\345\275R\203l\276C\333\271\276\300\272\376\275\321\237#>\217\367\225:\024\266\310\276W\241\320>\232\317b>I\262,?\250\020\355\276,\200\245\274\306iE\276\034\027e?\022\215\254\273\261\203\232>j\336D>\332\205\263\275&)\367\275%\310F=a$\375\275\304A\271\276\025\212J\276b|5\276\312\365\321>r\375\257\276B\204\217\275\250\247\330\276\020\022\226\276\337\342\323\275*\221\203\274\352\360\030\275%Q>=\017;\346\275\330\252\022>\240\223\214\275\210\010\241=k\300<\276u\361\346=\370\025&\276z\002\226\276\231\326r\276`\013\022\277\313\010\025> y4>p\002\t?[\276\207\276\373\203O\274\335[\311=\376\243\306\276RM.>\234Bf\276\277\237\n>\013l\331=\204\367\245>\333\326\274\276(8\251>\234\177\216\276\016\302H\275\"\355\177\272\261\366\004>\240\0001>\352\322\341\274\035\211\263\276+8\220>\300\231\n>\356\236\365>\321YC\276.\301\325;\330U\002=\265\220.>\314#\242=i)\353\276M\255P>A\221\244\275\204\257\237>\022\000m\275\017\272\302>\356\030\244>]\353\277>t\"\332\276\022\\/\275\304\225\306=\255\352(\276\354\224\237=\252F\207>\352\351/=WU\277\276\254\034\000\276p\234l>\020\335\355\275g\023)\276>\255\271\276\304\301\t\277X\250f>\216\n\343>\3217\316>}\320\006\276h1*<\022\351\024\275b\236B\276\024\314\333\2767\205\032\276Z\177#\276\337T\232<\031\221\267\276P\331\257\2753t<\277j\323\325;\314\236\266\276:\240S>\305#t=H8\216\275,\265\004\276k2\263>\r6\333=?1z\276\2275\355=\222_v\276\307`\201=\330\217\225>\021\201\220=\325\271\357=\270\202B\276\242\007\013=\367J5?\356\342yKu\307<\361\036f=6X\361>U2\027>7\245\243\275\227\233\247\274\002:P\276i\334{\275\341S\241\275)2\r\276_2k\276m\022\244=\271\340\357\276\240\225H\276e\016\221\275-\226\346\275\005a\006?\375\213x>h$\022>\202H\354\276\222\231\306>^\270\276\267\223\275\352\270\336\276[l\010?\344\3050\276;\357\252>\264\3771>\342S\306\2761=\023\276\374\213>\276\303\3746\275\246\010\'=:\271\256\276v\227\014\276\2008)\276\203\240\356>\306\272#?@\375\302\275\377\306\372>\001\247\016\276do\372>\335=\316>\026\340\006>j\341\261\276\322\323\203\271f\200\035>2\333\004\277t\330\341>9\241\242\276\326\257\267\274\221<\274=\274\377f\276\331G\326\274\266\203\002\277\237\247Z\275<\210j\276\010\253?\276@\374s;\242\331A=\020\3236\274\004\216\255<\335\342I>\373C\274=\275\201\202>I\320`\276Z\204=\276\357\256e<\351\255^\275\344e\372\276\242H\326\275\036R\361<\317\322\201\324\261\202>uwg>s.\"\271\304C?\276d\337\377\276\303(\277\276\323 {\275\241z->!\226\302>\n\273D>\353\003\253\276\325D\344=\335\336\376>\004\357u\275g\002\254=\301\'\247\276\242\242U>\314>\314\276\363\032\342\275\376\225\032=2\324\210\275\033$\341>|\220\363\275\332\351\212>\230X\370=7!J\276\322\222u\276]*g\275.@F>\027\374\204>\344\203\013>Er\020>&\365\024?\023\352W\2760R\345>\332\215\317\275m\214\341\276\211\270V\276H\321\274\276d\361\320\276\363l\355= \210)=:\n\267\275w\267\253\276\257W*\277 \265\242=\203\204P\275U\340\210>\203\271)\276\0354_\276#s\237\275Qw=\275\276p\312>\345\006I\276(\037\263\276\371\364\035\276V\213\004\276\261\305\351\276o?;?\246\313\230\276\331\354\337\275\016\344\273\2757\226r>N\357\242>\356\241\007\276!\375,>\271\374l>\264\204\371\275j4\203\276.\0211>\301u\277\273\367\021\360>R\376\010>\023\314\270\276_EJ\276l\310\370=\005\236\335>\231\005\262>\324i\277\276\251\366\270\275\352Hc>\000\240\363\276M\302\334\275_\030\032\276.\024\205\276$Z2>\005i\262>ry\244=z\204\243\2769\2069>\335\212\274>\030I\270>6+\252>\222/\327=\031\326\023e\000W>\233\303\021\277x#\251> L\237\275^\257\010\276\216\345\311>\025nA\276\217,\366<\265\034\014\276\357\321\325\274X\366\013>$\n\264\276zo\276\27508\007>\361\020\203\276\022\204R=\350\214\3628\374q\r\276.\303n\275/\325\307\275&\245\222=\007\272\330\275\277\237x>:d)\275\206\357\206>\342\265\\\2756\375\317>\340\326\260\276N\304\006?&\353\031\276\345\273\026\276\007{\256\276?\245\244>$\222\331\276\250oK\275a\305\322\276\242~\232\275\304\023\025\276\200W\225\276\345\032\260>$8\013\275]T`>\364\006\215\276\310;]>\365\'\244>\013ON>2g@\2752\347\321\276\243?\244\276\270%,\2761\0354>\303\003\220\276\375Y\200>\322\241/?}\310\226=\366\310\255>\'\374\n?P\347\220\276\237i\350<\004\216\'\276\264\222H\276k\243\2209\\\365O\275\350\177\274\275?\311\255>\263\372~>;\215y>\216\276\213\275\025\310\355>\355\004\035>f^\004\276\261T\203>Y\346\214\276\312V/?f}\327<[\340\300=\262U\001\276\227\000\032?\304#q\276\222HM\277]\367V\277\346n\300\275;\213\272\276\361\233\364\276b@\333=Y\220\t?Qv\213=\370y|>(\340/\275\036\201\217>OJ\250\276b\256\226=\344\347\031\276\263v\201\276\300\"\276=Z\303\334=\226GO>\270<\362:\376\317\t>\252\363G\207\245\256>\204\007X>E\333\013\276$\345\257=\266\265X>\005\201I>\253\215\227>D\273\221\276\001>\256\275\233\270\365\272=\nz=\306\304\037\273+P\350\275^\244.\276L\r\374=\252|3\276\031\240\265\276uh\204\273I\300\\=\335i!>j\035\242=\374\017\271>\376\226\225>\360l\000=\360\322\262\276\322I->\027\030\337>\254\361*\276IEM>0\344g\2761\240%\275e)\273=\305R\256\276\r\"^>\222\243 \276\274\303:>\'\031<>\017@\201>\241PD>\246*\334\276(!Q>A\306\213\275\265\325\322=\317\374p>z\376*\276\2307\275\274!fR\277\321\325\226=\014\200\026=\022>\301\275\212\331\027=L\331n>\342\322u\276\304\263\037>*\203\241\275\024!\276=\017Q\\\276R\200\343=\021\311\323>.\t\024>\034D;\275\232!K>\222[\276\275\t\275\361\275$2r>\020\2551\275\202\004\371>\375\376\207<\370\260\323\276\240 \n\277[\256\010\277T\303\375>l\t\376\276?t\250\276\034[\240\2769\321I=.\206\357>1l\341\273{\307\034\276\263\3548\276o9\351=\311Yt>\\\273(?\034\253\036\274\347\324N\276\375u.?\016\002\013\277\035\276\216\276\3159\022\276\244%\\\2767\223\002\276\336\346\261>Wf\231=>\3559>13K>l\365#:DD\021>\230!\212=\"2\324\276\342\346I\276+\300\241>\327\264\345=\353\367\n>c\270\374>*5\204>5\016\351\274\321|\031>\024z\244=\250\321=>g\016l>\300\310r\275\364WB>T\230\341=v\317K\277\322\266Q>\017\226\273>S\363\257>\250\223+>;\371\376\275\317\001?>$/\277\276\365\236\356\275\325K\307\276\232\276&=\273\237Y\276\230\t\005\276\031vj\276\246V\224>L\025z>p\035\322<\210\234\217>J\003\002>\273\020\301>]\214\264\276~fp\2771\373\366\275\337~h>\rfY\275\017|\232=4\362\013\307\372\303\275\307\256\363\275\0350\355=\214Y\241\2762\343\016\275\275L\217=fA\211>\336\036u>Qf\261\276\353\251\234=Z\212a<\'x\030\276\375=\200<\031\310\216\276\257\222S\2773N\302>\245$\022\277\267\214\247>G#\017>\031\365\234;\032,\340\275(\025\036>/\321q\274\214#\354=F\265k\276\nA\333>\365 e\275b\016\034>\372\251\343\276\034\000\261\276AtR\276,X\304\276\030\317\245\275\303l\022=7\2311>\307\003\266>\377\023g>\252\363\017\276\330\316I\276N3\205=B\023G\276\215\3646?:L\220>\017\207\002=\211\340\204\275\276\000\356\276\313\235\372=\231\257g=\230\337\200\276\246\306\\\276\356.\226>\364/\227\276\355m\252\276\277*\201\276\262\0346=#\232\344\274\347\276\314\275\234\336\331\276d|\007\276\251\223^>\302y\363\275\302\372G\276Yv\225\276\313I\332>\345*f>\272\356\024\276\023\330\363>\273m\243\276s\316\n>\351\301\277\276\3735F=\032h\340>\236\221#\277\361P:?\371f\177>\352\017\003\276\016=\217\276I#|=X*\213\275\2410\004\276\025\221<\276\250\352\346\275\347<+\277=V\273>\276\025\302>1i\331\275\017\244\240\276st\212\273K3\333>\017x0\276\330F\220\275\021|T\276]\317\220\276s\304\201\275\244\305\331\275\001\2743\275\004\276\240\276W\241\214=X\023\357\275\244\305\202>,\334\306>\305g\025\275\t\354\351\274\243\303\242>\353$\005?\336\246\364\276\324\340\322>\305\310\016\277#\243\353\276\347\307\340>)+!>\000\314L>\221\250>>\022(\257\276Bi^\276\267\310\321>\025\347-\276\276\017_=\302\341\023\277\322tu\276\rf\025>\374\326\361>\220y\'>\323g\344\276b\310\241>\t\263\031>\271)w>0@I\276\270\303\366\274A.\006?:\311\005>:)\210>\\\232K=\014\233E\373W\010?p%\350=x\306Y\276\200\036\261\275\261\366\020\274\244\364K>x\2337=\265\333X>v\020f\276\300K;\275\214\365S\274\332u\245>&\236\206>\260l.\274w\307\036\276\301\343\346\272u\340Q>\3208\271\276\362}K\273;)\026?\232*{\276\033\336\037\276i\301:>t\225m\275Q]\271;X\026\214\274\206\221\022\274\'\225\t>\302\245\200>\320~\035\276\353\257\031\276\273B\030\276[\204M>E\026\355=B\203\257\276\306\001\264>`\314\n\275:\2400\274\221~\365>g\206\300>\031\0012>\255}\206\276\340\210J>\341?\246\276X\305\223>\017Vg>D\r2\277\261\020C>o\354~>\364A\373\275\272_\241>\025\306\235\275\313\200_\275\325\233a\2779i\374<\262\221)\2771\321b=\024\017,\276\233\270\177>Z[\207\276\257\305\245\276`\t\022<\222\203%=VAk\276\024\226\033\2768os\275\216\265\301\276\221\300\\>x\307\225>b\236\022=\245R*<\376l?>\220\376\325\275\322\334\251\276a\326\005=\325A\206\275v_\037\277*p\226<\202\323\300>(\3101\276\212\226\203>\032\320#\276\027)\005?\210T$>>\307_\273\341\315\301\276b\336\323>\3314\031;\353\236}=5\337\220>R\370\266>>7h\276\2257\245>d\254\001=:#b?\247(\267=\221\202\247\276\304A\340\275\225[6\276\255\261D=\225]\221>=\033\314\276l\r\255\276.\030\201>\2548\302<\310\036\215\275=\271\230>d\2359?\271\233\017>\246\322\021>\0272D\277\0166t\276>\237-\276 .\227\315=E\027f\276?wY=\236\301\303\275\357j(>}1C\275\032|\272=e\265\001>\030\000|=\302\352\004?\"\"\017\275\013\030A<\206-L\276\325\020\241\276i\203\300;h\277\361\275\252dg>\241\177\263=\205\335\267>\006\026s>\013\037\374=\237W\237\276u\331Q\276~)2\276\025\314 \276i\257\203>v(\312=\323\211\326\276\020\000[\276{U\206\276\371\377)>\237\272\014\277\t\263\232>i\265\215\276\215\245\262>\005\204,\277\324U]\275\235\233\320\0175\013\276\220GW;l\376\231<\036\357\274\275~\026\321<\0020\360\275x\251\253\275\372\266\261=\253| \276\014\005\220\276\207E\321>\257\225\\\276\236\3779\276v\216\366\t!\316\273\017\373\300>\315\337;>\021.+\276\377V\323=,E\204=\351\023#=\267\030s\276\254^\271=\030\305m=\017\'M\274\332\250\t\276\264L\030\276\004\032\370\276\373\266\353>K\213\223\273\346\253\371\275\363\242j\272\351\330D>4{\322\274\261\016c\276\2716\275\276o\224R\276SR\002>6{\306\275\365\364\234\275\346X\205\276\316\024\312\276\304\3277\277\013[\025\276z{W\275Gn\271\276x\356\336>X\331=>\220E\200\276Y\370/\276(\333\023\277\256\177\314>\370\304\262>E\317@\276\346\310\226\276\242\237\360>\317\254*>\024\350\031\275lK\341\2751\232x>\261A\t>\262K^\2760\202\017\275\231\351\364\276k\235\212\276t\312\271>\325),>\032\023\276>\342C\337\276\n*\014>\350\215#>\210+\017\276h\366\377<\245ro>\002\260\000\277\274\303\266\273L\233\224\275\302Q\214<7\362\250>Q\355\234\274\210S<\275\177`\221>\272$\367>\352\333>\276\340\345\325<\210\367\226\275q!\023>.9\340\276[\025\313=\037R\234\276\367q\373\276U\001\023\276+$\010\275L\270+\276]A!>st\004>W\333\254>\360\030/=\030\3022\276\037\363Q>\204L\027>$l\214=\377\252\217\276\252yi<6\324\223\276\373+n>\271\371\213\276\375g\260\276e\030\000=\334\271\212\276<\274\320\276\031\271\224\276\022\t{\276\240Y\006\277\2477\023>^\340\365> \023\317\274{4\207>?-\300=\347\302\250\276c\203L\276T\204\010>\264\246o>\304\243\305>\2340~\277\334JC\270\204P(\275;\346\032\276hU\347\274\211P.>\024\037\'>\225\t`=\244\242\">\"pM\275\321\302\222\274-lu>\373\361\003>v\300 >W\344\017?\017\256\200>\262\233\212\274O\234\\\276\353$\003\275\252&\336=\032\206^>\326\316v\276O\342*\276t\354\212\276d\001\334\274\314c\236>I!w=w|\267<\357p\026\275\247X\320\276\206\343\263\275/[\237>\353s\255\276\371\342\017\276\367oe\276\032[\377=[\312\350=\024\000\276\275X59\276\205\201.\275\010\352\252>)\0359\277~\315\212>\311\341;?\340\362\003>\0007\364\275\022a\275\275#\340F\276\367\r\013>\211\0311>\030\3616\276\002l\271>\276R\257\275z\217\003\277\340P\277;$\247\000?\376An\2769\260!\276\324\355v\276j\330G\276\002\225\270\275B\234\n>\247\262\026\275\342\306\033>\004\325\240=\nf\r?\212d\347=?\363e>+\322\201\276\363\2211>P\r?\275k\357\014=\352\222P=\276\033j>\216\244\212\276\226R\356>\275(\311>/\340@>p\003\025?\337\026.\276\302B\031?\035\356\201\275\333B\004\276*RN>\323\334\360\276M\003K\276\336\240\005\274\216\372\346>({\005?~Y\335\276d\302\244>\250\306\315\276\231<\363=\374\030\004>\223\265\262\276\225A\216\276T\352n>4)=\276Q\352\337=\221\300\036\276\353a\371>\0245W>\344\306\326>d\372\252=k\373a\274\253\n/\276S\021\321>\201w\014\277\025`\366>[8\202\276\244\327\010\277\202\353:\276\363\033B\275#\275\355\276\000%\256\276\213\212\026=h\255H\276\320\224\002>`\264v\276\216\356\023?\320\n8\275V\256\243\275\273T\274;\254U\302=g\233\225\276P\256\324\275\304\204(?\267\343\272\276C\243\250\275{x\021?\000\365\236>\301z\201>\3233h\276\001g\251=\222\3256\276\330\356\033>\343\027\245>`\335\n\277\272/\213\276$\241\036\276\345\202@=\025\006V;-\377\004>\325\014\343\276\2448\272\276-\332\302\276\177\236e>\363;h\276\311-y\276{D\035\275s\212J>\027\3202?c/\010\276\0201\215\276f$\376\276\236\016\252<{J\257>\336\356\251\274\312\320\223>I\253\026\277\314\345\211>z\310\307\275!}c\276n\217\037>Y\021\335\275\373\246\250>\207\222\361\276\225d\246<0^5\275\214\n\372\276\263\3562\277l\313\276\327\236i>\377\347\313>\3746\360=w\354]\274ZY\321>\312y=\277\240\324R>\006K=\276\357\2266=\267=\t\276\236\247\345;\233\236\220\276\261d\005\276\345\357}\274$)#?\020\216\322\276\231\324\313=\236\n\253=\261\360\226\275\314\0005\276\322\'\305\274l\207\"\277[4(>\'\252\207\275C\271G\276\351\027\206>\332\024\217\276;=\216\275l\\->\231\250e>1\003\276=\2476#\276\205\2367>\361@\232\276\357\\4\276\276\014\316\275\271 \000?\364vq\276\207\233\026\276d\213(>\320\236T=\362p\275\274+E\325\274\253|7\276\220\377\3729\377O>[8\035\276/q\212<\035\211\342>S\026\216>Z\374\241=\021=\217>\0062|>\233\350\346>j&\224\276\002\231\003\275F\276!\277:\360\031>\007\363\210>\362\320&?\220S\345\276\330\361\200\276\307[\231\276us\025<\276U\342\275\210R\235\276{V\030>\227\025\324=\2717a?;\006\271\276H;*\276^T\023=\332\352k>$a7>YJr>\226\035\226\276Y\201\201\276\377\330/>h\n#\277\341,\250\276v\272\023=0h\370\275\255X\301<\367/\277=M\206p>\005\374\354>p\321\371\275\344q\333\274\264T\026>\226\336\266>\005,\023\276\0139&\275W\031\036\276`[\016>Q\375{\276\327\220\"\276\253L\037>\016N\251\276\254\232\255>f\235\231>\000T\205>\335\262\276\276\277\327\024>\311\271_\275bP\335>R\221D=\227\223F\276\\\357a>#5B\276\355\035\226\2757\030\252\276X%A\276\266\233K>\257J\022\276\267\350}=}\273\007\274\316v\'>\224*\322>C\226<>8\376\231>\210\264\\>\330\263\027?B@\263\276\016\225\355<\013\257\236\276\322$\315>\014ZE>\37524\276\347\253\361\276 \235\311\276\2429\235>}\020\224\275\241\000\203>\242j\031\277K\025\332\276\027#\013>q\360\250\276\331\376\212\276 I~\276\221Ix=\022\032\002>r\320\322\276&\240\346<\024\335\225\276\026\374\244=f\3071\275\265d\307\275X\213\344>\\ m=\206Ri>\022 \017>\271>[>M\367\000=\3651\343\276~Z\302\274\307\265\276>\002\240\275\276\177\030\360\275\010X[>\007\340\252=\334\322\246=mM\017>i{\274\276\0028V\276\272y<\276\006\367~\276\225\027\002>\326\373\320=\017\352\262>C\270@=\232\302\241\2763+\234>6J\311;|z\215>/\026 \276F\335\221>Z\372\211Hy\206>\346_\303>\332e\351\275\360P\256>Km\207>\3718n\276\361\020\375=\332\307\263=!v}=\334\005!\276_\370\275=\253\332\320\275\310\314\331\274\233\024\354\276b\005\352=\360\2157\276\211H\326\275Wn\347=\301\223\206\276q\212[>\347\0015\276R\316\263\275\221D0=\001mJ\2761\265\014\277\r\235\343\275\331\273\252<\234\274w>qW\265\273\353c\374\275\352PJ>G\261\201>\222z\230\275\241\372V>J\343n<\336\000$\276\026eE\275\361\336Z\276\177\307i\275\326\'-\276\235;\214\2757g\255>2\233\206\276\214\270\363\275\241\025\225;\t\214,\276\360\270\202\276\306Vyi9\313\275\343\321l=\250\276?\273\200\034\364\274\352#\266\275\231\321\034?\304\350\255>k<\222\275\333\357&>\322\n7>\331\264r\276\020\211\211>\311pf>8$\026>|n\"\276\205\243E\276\200\336\356\2763\377\315>\316v\302\276\2160\252>\347C\352=6\227\002>\034.=\276\360\207:>n\337g=S\372\212>\342\215\365\276\236\004\340>\211\351T\276\036\302m>\0061\265\276 \n\260>St\232=\273c\r>\246\000\255\276w\270\245\276$=C>\363\310Z\276\026\261\253>\\k$>O\234\036>PDF<\305\336\003>\303r\221=\353\"\236\276\225\331A\276\377\207\253\276h\232W>\351\335Z\273\013&9>(g\340>\325~\226\276\332\367\000=\224 \004>\362\257N\276B&\333\276\303\375\275>\273\243e>\335B\304\275\303\335~>\"\333#?\324\014\202\276\034\220\201>\032\035\\\276\347\014\274\276\030G\r?\333n\020?~\271\\\275z\321W>\tu\204\276\256\036y\276\356\0213\276P8\201\275N1y\276\254\260\201>*\326\241=\220y\'=\000\234\000?\334z\361\275\274\326\307>o\257\255>j\353\270=*\223M>\013\214:=\226\377|\276/\245y\276\345\241\'\276\007\247\220>6\371\247\276_\371\324>\371m\364\276\276W\354\276h\262Q>^M2>&\033m\276*\266\303>4W\002>\034\300\304\276\233\335X\276\303i\223\276\322\331\224>]\340?\276\254\206\200=\245\304k\276y\324G>\231\272\254=O\307\243=E\001\314>\265\316\017?\025\214\210>8\276C\276\240s4=\375\203\307>\325\327\207=\016\327\304\275\317\003\234\275r\366%\273m\276\314>i \267\276lB\352\276\310\211\014?K*&>\200W\n\2777\360\325\276^\305\016\277\245U\234>\023<\316\275\211p\332\276\036/\272\276-,\244\276\362I\034>\330|C=\227\031\036>\213\221\230\274=uj>\302\307\255>\010M\302\275\221\352\036\277\357\206\337>;\302N\276\377n\321\275e\245K=\315h\305=e\306i>2\201r>\002\221u>d\200y\276\373\320\035\275\314\010\223\276\315\324\320\274d\253C\2760\177%\275 RF>\315\'\230=\r\250\336=-\354z=\3320\n\276\272+=\276j\247\340\276\230K\336>G\237q=\037\021q\276\2746\023\277\270\267F\276\241\353\020>\377\027\364\275\206\332h>~\266\325>\317\257\233>\023\213`=\2164v>\200\316Y>\300\250\210>\031e\321>\222\273Q>\340\303m\276\361\327R=\230\014\333\275[cf\276\257S\"\276\032%\267\275\330_[\275\370\366\204\275\267\272\225\276\353S\247\274E\002\227\021#\311>\307\222&\275\300K\306\276\365*@=cB\320=\200_\032\274\340p\260\275\223D(\276&\340F\276\347\265\274\276\203\312w\276\250v\251=\255\316\242\274R\225\376\276\313\344\302>\246\2641>y\300y>\313BA\273;\024p\276\231\337\363\275\032\373\366\274\377l\006\277<\224\210>}D\247>Z\243\350=`\tt>\346+j=\304\022\035?\375\305\251>\000\203\257\276\\h\327>\372\247\003>\265\357R\276\224\237\325<\211\245m=\320in\2767\002M\274\021d\353>\233\227Z\276\215\233\270\276y\361\245\276\333\367(\276\250 5\276\026\003^:\330\317x>\244\215\244>\211\343;\277\026\260\350\276\326\275\373=\322]\216\274\334rd>\272YG=\365\226\270>\027\232-\276\251#\314>\323\375\212>6\213\274\276{>&\276\337\177\017?`\343\005?Z\3464\276!\001\370=\337xY\275\264-\004\277\276\273\210>`\341\001?8B\273\276\344\203\034>\253\250\230>&\277\230\276\205\024\323=\203Y7\276Z\242\256=\270s\n?@\025\005\277\370\010&>YL\332\274\200s\273\2768\026\303\275|\250/>\204\241\343\275\257\276\001\277\273mx>G\227\263\275\177\016\020<\336M\242\276\014\350R\276,\266\312\276s\373\242>a\014\205\276\257\243\303>xJ$>\276\206\027\277\211\265#\277\322;)\275#e\217>\212\305k>\001X\234>\020Q\324=K\231\000?\224\tc=}o\361\276(\'\020\276*\346\250>\260\004;>\026T\214=q\242\325>\0311R=z\273\374\275\252\360\257\275Hb\263\276i.8>\361\335x<\325\003\016?\271\003\032\276\005\250o>(\017\376>\014S\037\276N\324\202\276\275\277\211>5r\372>\340A\222\276\350h\377=Q\343R\276\250.\212= \214\313<\316,\'=\255l\200\276\254\212z\276\215\350\247\275q+\216\276]\346A>C\020O=\370\265\326\276/\241\270=M\310\314\276\211\210d>\234\230\"\274R\257}\276\347\223#\276r\330*\276fC\272>\373P4>;=\037=@\037\332\276Exc>\201X\007?@\270\035?\376\234H?l+\342=H\210\352\276\'*\223>:\231\345\275\304\227\371\27321\001\276t\220\'>\302\304\364=\2566\234\275\303+\210>RC\005>\227f1\275H0\326=\265Ib>2\270\227=\3678x>\323\343r\276V\313\242\276\314\000\n\276[\306`>\332\301p>\233\035\307=\263\233\264>\251\363\310=\377\005~\276\305y\035\276Ji\276\274c\344\037\276\206\022J\276\332\271>\275\306\247\270\274\355\203h=\360e!\276w\244\016>+Q\360=\340\336z\276\277\335\245=!\022\016\277\213\312\251\276r \036>\205\371\213\276e\243\372\275X\323H\274l\362\250>\245\215\023>t5\213\275\207\240\303=aU\242\275\361:\252\276\002\235\226\276\375.\010>/\353\276\275\367\367k>[\353\036>K\303\227\276p7\272\275\\$\203\276\035\004\t=\312\017`\276\260\212\335=\211S\275=\217\351\303\276\307\262\271\273c\276\343\276\0344\227\276\007\301\252\276\326\253(\277\231\250\255=\226\243k\275\013m\225\273\002\203v\275\t\3162>\212\307\013\276\t\346q\275\\;\037=\302Y\177=V\267\237>\257\276\201>\203v\217\276\037\037\305\276\304\n\003=iU\312=\232\267[>}\007(\275~>\025=\r\347\016\276\270I\200\276\224Oq>\320\305\360\275p\343F\2775\021&>\340\030\221\275_)\263>[-\341=L\013\347\275;\227\271\275\335Q\251\276\026\202\211\276\024}\3542\276{J\250=\234\344@>\205\"\242\275*o\363\276TJ\016\276\301\326\360=5\256\222\275\261A\306\2767F\371\276\273F\304=C\032\307\2760*\255\276l\257X>\02216\275\2619V=\021%J=\206\025C\273\263K\377=\302\233.<\342\335\t\277T#_=x\036\330\276\034\342\204>l9\206>\314\253\243=r\342\221>\324:*\276\003W\213\275T\244\244\273\353\223:\276#\307a>\324\016\235=a\245\253\275\357U\234\276\307`\216=\021\256A=Q\\4\276\013^M>\002\353\267<\2365`>\367\"\304\276\362ta\276\023\000\">]\345\351=\\\367\364<\3067\246\273\016\335\321\276\n\255\000\275V\035\252=\324\315\007\275\327\252\302>o\217\213\275JP5\277\261\243\273\276<\233\253>\023v\363>@\022\361\276\3253\200>\022+\245=\031\241\272=\270\271\222>\304\033\233>\216\344\222\276F.\242=\306@I\276:#0\276\324Ji\275\2312<\274S+\221\276Us\016\276K\332\205>\205]\035>W>z\275F6\303\276\321\037\243>\351\311\326\274\321F\355\276\250\257\361\275\225i\224>v\275\224\276 y\312>kZ\366\275\t^z>\267;\231\276\005s\">[T\216\276\271\242B\275\273\034\006?\004e\016\276D\017&>\242\023\250>9\323\206>E\215\321<\343\252\024?\026T\376=\301\013\205=yXk\275IC\016\276g\317\256\276*E\212\276\216:h=\240\361\027>0U\332<\236\243M\275>\372\321\275\227W\r\277\361\t(>\223\375s\276p\342\214\272?\226\233\2755\211\177>\267<\370=D}\272=\nZ,>\222\203\215>\013\202\303\276\212s\307=\234\227\250>\370\2068\276\332\365\300=)\016\346\276\344b<>\313\220\215\276u{~=B\250]\2767\371\356\274=\203\002>E\275\313>\020\0011>o*j\274\001\217\223\274\010\022_\275-\240\211\276\367\345\314=\363-\314=\206\333#\276\3113n\275\334\000\254\276c\376\311\275\311\330\233\272\016\307r>A\274\"\276\226\2678\276\\/\'\276^\000\343\274s\026\310\275\332\032\335\276\016\237B>\240$\256>\265D\206\276\233\201\230\276w \027?\205\230,>\354\262\230>\373_\350=A\276~\273\332\343p\275\332\277\204>\272\3147\276,\033\321=\247\232\004\277\205\272\376>\374e[=\347\251\270=3\2313\276^S\270>a2\\>\345M\005>\260=z\276\347\300t>\262\032-=Q\024\275\276G\204\013\275\332\223H\276<\177\205>J\347d\276\333\337P=!5\307>>\220Z\276\205T\300=|\"\204>\222\2250>\371\214\263\276c^>>\201\344=>;%V\274\"\325\014>\345\214\356\276\235\2710\277\243X#\276\324\372x\276\243\260`=K\232\216\275\245+\327\2761)\222\276\375\277p=dbx>mr@?3W:>5SP\276\345\273w\275\325\035\035\276\026I:\276n5\352\276\353;\"\276\236\367#=\322U\244\276\337Df\275\211a\237=\376B\256\254.\307\276\271\006\322=;L\221\276\225B\023?}=\265=\304\242!\275\363?@?:\227\243>\211[O>x\310\371=\263\251}\273\311\307\025\276\306\250%>V+!\276\275\311\233\274x4\n\276\202|p<\303\250\213:\337\307??\373=5>\307\376\033\277\'\006l\276\221\333$\2774l9\276\366\255\337\276+_\260>aB\303=\177\345\354\275\307\322\023=\307\366 \277\376\003\306\275\247\370s\276J\370\245\276\224\213\272\272\345\251\240>`\347%>\201\257\300>\276Q}>\310e{>J\237\t?B\334\234\276V\312\253>\310\037A>?\366w\275.\216\n>\216\303\227\276\260\250\205\275\002\376\310>X\244H\276\326\350\024>j>\376>A\345\352\275\322M\216\276\260\373|>\014\242\352>3&O\276d\372\001=\013c@\277\234\030\364;qi\037>w\336%\276\256\205\250>\036\340\300=\026\366n>(\345\352\276!\313\225\276\037\313\014\276\260\026\245\274\033\311\"\276L\334\324\276\210\026\030\277\212\222G>\330\3065\274\226\212b>\240\202\t\276]\016i\275\357\020\027<\020&\367=\270\n,\276\210\034\002>1\025,\275\324\212\314>/2\352=\323\027\330>\241\240\010\277a\331\204\276\273\240!?\rm\265\276\002_\307>4\244\225>j\373\264\276\261\024\237\275{\212\273=\315\341\017?K\224\372>\270HH\276\213\030|\276\221\031\345\276\315\364\251\276\223`F\275\241\235&\275\346\251\020\275\362\370\327\275\262_1>\367\232\264\276y\267\016\276\250H5\276\365\246\352>\374SO\2766\001\371=6\013\250\276\266\313\235==\265\244<3\303G>A\305.\277\371\247\211>\324\276\341\276\321\320\206\276\241\306\204\272!\244:>RL4>\321(\264>m\324\271\276\215\370\213=\305\337\212>\377\364\272>\016h\326\276%iy\277xM\351<\274\271\327\275\234\033\356\276K4\247\275\373\231\005>\222;\032\277\0035\254>\273\224N\276\r\332\003?\242f\002\276\341\206\353\276\317D\360<\0007A\276\344\365;9\261\376$=x\355\321\275)\203\304\276z\2770\2774\r\323\276-\016_\275OD?\276e\331\266>E\223\371=C\254\003=\262\347l\274\'\371\253>\234\320\303=\r+\267>~v\002>o\001}\276:\307\344>\212\213\261>\262Q:\276c\314\350\274i)\342=\307*\277\276\255.*\276E\035^\274\210\001\265=\350^\311\276\231\177T\275\332!i\274\232\362)\276\345u\214<5o\037>\005\337Q\276\246J\315\275\2035\226\276>]\004\276I\253(\276\rEK=:w\314=+m\265>2\303\227\276\324\346d\276\271\223\212>gT\362=\347.\374\274\243\231\366\275\030\351/?\332\363\245>\021i\243\276\221I\221\276\334\370->\213\276\270\275)\305C=\004;\314=\234\221V\350\3001\276\240\023y=N\\\r>^6/=\334\367\211\276\016\0002\276\004\207Y\275\017\203\212\276\014\347\247=F5\347=g\206\310>\226\355\300\274\267C(>;n\205<\302\236\215=\023c\322\276d\230\032\276\032\365\352\276\332<\260=\036\344\347\271]\253\027?\351\312\021\276\320\004\303<\307\212\000>\241,\035\275n\013L>\244do\276\367\232\324>\n\334H=\321c\332=6%\025\276\305\246\202\273oG\217=\332c\247>\305\310\001\277\270\261\347>\365\207\304>\343\370\336\275\346\253\204\276\225\205\331\276L\201\027\275GG@>\260\236\240<\323L\030>\360e!?\014\211n=F\367\314>\320LA\276\267h#\274>\024\244\274-M\033>\030a\003>\313[\005\277/\232\213>\323\226P\275\230\362\207\276\346af>\3310(\276\312&\202>\264\274\024>|\335\312\276W\031;=oWc=S\246\004\277\310}.\276\177\346}>\2771\255\276Jq\262=\203\025\233\276,\263\246\275\325\021\022\276\264\201\037\2761+\350\276Y+\241\276l\203\252=Kd\343>42\233>\353y\033>\037\233\234\276\315\301\222>\337\346\230\275\345\211\021?\214\376_=\002\3275\276\000\336X\276\212#Y>h\013\374\276\\1s>Nh9=\254\364\224=\n\304\302>\0107\221\275\324\353\210=\354\203\002>\033\031\n\276\021K\355>\360\367x\276\337P\204\276\252\275\t\276\034KQ?f\027)=\343\017\376\2762~\206\276\272\213`\276\017\276\374\276;*?>\023\254\223>c\363\022\277\215ij\276\014W\010\277,\032\275\274\201\356}>4\261{=&S\272\276\303\203Y\273o\\\006\276\034\366\336\276!\024@\276\265\021\317\275e\303\022\276\025\300\300>#\225\310\275\243S\033\276\321T\267\276\311\321\222>\203\264\037\276\302\242\000?C\325\212\276\216(\355>z\026%>\254=+?\336\300\367\305\303_>\311\2602\276\317|\237\276\177\240\265\275\321\346\215\276\005Fy\276\017\016\367\274\363]t\276\246\243I>4\234\216\274=\353w>\277\370\245\276\322\351(\276\256\010\237\276\247\344\004>HS\001>\305\022\214>\333\221\206\276\350\202\314>\244.\262\275\323\262\310\275$\216\376>\220RS\276w:&\276\231\324E>T\310\362\276\220\327\006>\314\037\354\275\357+V>\263\275\212\276\341\273\275=O\356\334\275\212\235\t>\227{R>\231\177\350\274u\221\035\276\353\210%\276D\264\220\2756\213\345>\262*\202?^\2115>4\266\201\276\342\013+\277\320\220\336;\344\204b\276h\006\361\276\241\014[\276\246\033\253>\366\217\374=\217\270o> ;\025<\252dp\276PD\313\276\351h\253=;\206\376=`\300\257>G\253\207\276Z\203\336>\331\3755\277W\033\276\275\270\r\257\2766c\235\275]b\352>@\005\210>\257a\340>\341\262\332>\240\025\320>\215K1>\231\310\007=\320d\252\274cV\345\274U\242\032?\371\0356\276\210\260\354=\320t`\275\2642\225\276\347\260\036\277\364*\367>\316N\024>\005!\237\276\223tz>\032\261\250\276\356~\031\276\036p`<\271*\353\275&\303\307=\361\302\225>\205T\227\276j\002\272>\265\375\n\336\253\027=\266\327\">\337O(>\247l?\276TVf\275\3444\243\275\317\372a\275k\257w\275g\261\366\273{<\315\274\r\216\241\274\310\034\\\276\370)\313=\321:\224\273\254\307\367>\024Sc\276\275LA\276\r\323\304\276\373\200\357\275g\333 >\302D*\276\272{\320\276\326\317O>(OU\275\2726\234>g\371\201=c\371\343>\017\243O\276\337\341\271=\361\3229\276\276\247\306=\304;\365\275AF\225>\224\014\212>\243\245\376>\300o\212=\342\333\271\274\025\362\256\276\030\362\211<*\370\270>\377\300\325\275\207\263\310\275\363\273\256>\231<\216>^\207\356\275\026\372\001\277\2627\361>\232\326\367=\350\023\020\276|\313D>Q\257\000?\314YS>A\230\206<\3450\014\275\350\273\241\276|\217\t\275\037\265\275>f0\006\276\345\341\037=\310\211\322\275\367\374\245>\006S\354>\354b\376\275\201\253-?\331\353\025\276\027p\251\276\217*\231>2\337\003\277\302<\361\276hr\226\276\323\244\'\276\271\271\350\275\346R\320>t\005\353\275-\337\277\275{\r\330>\016U\363\275\373\032\203\275\256\327\207>\343\215\033\275<\374N>\351_c=\230\210\311\275>\206\r\276k\243\236>\0319\330=\335\001\013>\203\r\200>y\332\316\275\312\363\331>\331\346\274>\273u\226>\032y\300>7\234\016=.\330\027=\014\313\003\274\256\036\274X\253\364=}T\323=OVf\276\031\037C\277n>9\275cV\313\275b\265\331>\222t\232>\301l\316>M\t\342\275\237\261G=\212\241\026>r\2343=\273cq=;\360\250\276\177:\272\276\220U\243\276{\237\n>\017\230\004\274\"A\213>l\007x\275\001\216=>\335:\'>D\274H\273\001\"\263=\357F\220\250!\371\274-\302w\276:z\203==7\266\276\354`\312>\343\251\255>>i\254>\332\243=>\222\246\310\276\356\\\222\276\372\347v\2768\035\177\276\2137(\276E\211r=\341\356\034\276X>\004>$\230\345\276\327R\203\275\3666\274>$\307Z=)\000\244>C\317\273>g\230\t\275\305.\331=Zz\211>\"\363W\276$#\023?\235\317g>j\013\003>\354i\r?cw,\277\n\243\266\275n\377\212>\340\216\241\276\"~\371=\262Bs=\351^\222>ys@\276\243Q\">\271S\212\275X\267\206\276`\000\003=\363\034D=SCn\274\330\035P?\347Y\016\276\255\014\034\2762\010\325\276\206\263\220>K\201_\275\004\330\306>\034\363\347\274\321#p\275x$m>a\002\205\276\265\3302\276\347\r\312\276\260\335\265\276=\350M\275\316p\217\276kX\215>1\262\345=3\315\323\275\335\304\312\273|\236T\276\232\223\025\275\224\257\335\275m\266\033>v\246\311\276r\017+?{\002}>A\317\273\276\2406\301>j\2325\277\372\325\n>\017\244\326\275h\023v>7\242U\275\336\213:\2765\256\235\276n\345\251=[*T>\236,\224>\312\240\333>\244\257\212=!\215\254\276\233\220\232\275!\322\255\276l\020F?\023\323/=8\014S=\247\024l\276\343\360\302\276\2508i>\311\350\241=C\350\271>\\\366\303;\010\236\200\276ep\337\275\227\347\021\276\275\245\373\276F\3271>\206g\212\276N~\254\2762|\026>\002\013>c;\361\276\257=/\277\306\366\344\274\304\375\341\275\361r\021>8\033\371\274\346b9>\367\340\316>W\353\251\275\366M\322\276\035\246$>~\217|\276I\246\342=\016\022\273\276\220Ro>\204Ma>\236\214\336\276\006\nt>:A\213>\203P\001>/\220\031\276\340*\214=b\343\036\276\261\245)\276\033\214d\276|7\232>?\265\253\276;$\367=\241\221\330\276 ~n\276\204\247\257\276\234cg\276\2150\247\275\257\254^\2762-%?t.D>K#\236>]\033\017\277\023f\021>\001\016}\276s\230K?z\371\270=\204\007\244\276\025k\034?T\t\022\275\221\2720\276\302\241\212\275l\024\027>\261\303\274\276#\023#\275 \356L?0\350\256\276@\2279\2769\335@=\355\205\027\277Z\n\007?\263o\210\2765pi<\325\026\032\276@E[\273\341\310\333\275\361\363D\276\312@\353>v\242\020\276\316\016\314=\202\370\252=\004\311K\275\376\233\207\276A\261\217?\3365\007\276\3242\307\275*\251\022?\336\271&?\372n\350>C\237\025>\031\277\201\276G\306\267\276\324\313\377=\367}7\276Cu\213<\356Q\355>\327\005c>Lx\001\277\304\224>\275\364\262\260>\224Z\020?C\351\255\276\334\260\370=\335\365\245\276\216\213\356=<0f\276\261\374N?\306\215!=\212\320\367\274\317l=\275\2236\253=`\260\006\274\216\346\235=[Z\001\276\375\200U>\210\004 =s\364K>,\r\216=m\251B\275r\035j\274\3356\336>\210\"7>\020\361\243\275\356\330O\276\201\013\367\276d\247^>!4,>\246\202\037\275Oi{\276r\361`=$b}\275\273K\327\276\352\2428>\200\260\\>\n\243O>\306\371o\276M\272U\276~Y\342\276\003\272\204>w\360\335\275\203\340\013\276\235Y\260\275\252\345\207>\362\375\212>\220=\032\277\023=\316=\343\377\001\277|ov\221\202\247\276\203\231\326\275\205\363\327\276\246v\001\276d9\276\276\376\235\006\276\014\320\"\276B\026\312=\307\344-\275\365\306\246<\323k\\\2760\016\310=xd\352\276\375\361\351\276\364r/\276f\267K=\321\262\037\276\313\246\363\275\307\014p>\002\3302\277\002\351V\276\313\361\226>\033q*\276\0253q\275m\307\334\275\035\217\251=\263\304?=T\305#\276W\213\362=\003\250i\276\337l\205=\243\377z\2765\tk=\0363\004\277\257\014\353\275\357h\027\277\343Y\274=\200\304\205=\357\036\372\274\252\0208>\272/\r>\345\343\221>\344\362\257\275\002\010\243\276\331\027\017\276Q\201\177\276\256\362\000?\032^\330>_Q\372\275\325\316\355\275\302\351\216=\001\305`\276FA\377>b\241{\276\210\324\252\276\226g\332\275\236\353\315=\372b\317\275\255e\t?\004\274\313\275 \003{>\024l\351\276\026y<>d\3024?\204\272\277>\006z\307>\033\260)\276\357X\362>c\327\256\274\006\276\233>3c\364\276La\254>\r\302\263\276\035\313\220\275\370\223\021\275\020b7=\355\254\004>\311{n\276\373}t\276\274\2677>\251/\001?\340\212\223>\262\277\273>\020v=?\311\350\016?T\271\203>F\237\222>\302I*>\235e4\276\334b\240>0\334T>\313\3559\274\023\340M>&\340\r=\322\252\026\2760\317\211\276\233v\r\276\002\251\300\275\220\177\312;\270!\360\255D\321\276\332\377\003\277\343\336\360>%xU>\301O\t?4>-\277\270|\322>\314Z\265\276\360V\002\276\031\335\273\276\361\371P>\363c\206=\274.\263;\302\311\032?\214\243w\275y\200]\275\362\215\317=\363D\030=bHt>\372\270/\276\005b\225=@\3728>\326\265\303\276\006\360\324\276r\321\247\275$\226\216\275\251\335\203>\206\207:>\233\216\357=R\007\n\277\374_\263\276\271\n\004\276\2020\221\276\177\233\267>\362\205\t\277}\317\216>\346\255\365=e\227\203\276\224%\332\276\300\266\203>\256\3057\276n\232\316\275\003\375\274\276o4\252=\033\322\310\276\006\307;?\241lX\277L\234\321>x\227\320\275\021\020>\276\251\002\270\276\364t\320\274)Md<\342\222\350=od\317=qZ\325\276\341\242\202=\006\312\215\275\311V\013>\016m\023>\232\220\003>z,\021>\265\206\375>i(\237=\2219\007>\374\033\340\274\354W\265>Q\333,>\330U\264\276A\220\310\364\205\234\272#\243\t>\3209`\274jSm=\364\222\036\275\247\236\200\275L\376\267>\316\354\020>\261ZB>w\374V=\224\253\261\274r!\307\276+\030\371\273tK\226\276^\311\"\276\"\276\371\276\246\270\256\275jpO>\245\232\213\276\027:\373>\204\356q>6\204\303>/cL\276HwP\276w\220v\274\354\304\000=*L4\276u\355C>\250\033Z>\'\247\372\276E\365\226=Qq$>\277s\207>\237\234\226=:\234\023\276\004\305>=\211\215\245>\024\266\374;\307Ej=U?K>\260\307\240\275\362\325\276\275\376\376-\276\017p\">\323}<\276+\220s\276r\216\370=\200\036\367=^\013\014>\340`\322\276\334\323\274\275\300{g\276\254W\346\275\214O(>\372\304\261\276\313j\r=N\326\221>\034\005\271;\\]R>\323B\345>\3061!\277\216\313+\276\322^6>O\303x\2764\330^=\250\tx\275\201f\252\275\317\220\"=K@;>\310;.\276\334\254\373>D\322F\277\251uW\276\366\032@\276\300\177}\276bSw\276\006\303p=\233\315\030=\014\366\302\275\tX\022\277\240\246\223=\363\377\366>\025\342\030=.a5\2768)\244\275\023\326\257\276\035\r\350\276>i\273\275\213)\255<\256q\020\276=[l\275\275\2275=4W\276>^\205\216\276\024\324\214>\273\234\013\276N\020$\276tO\355<\354\303>\276\025\315\031\275$4\234\276\244\n\010?\276dh\277\000\001$?\257O\016>\222a&\276\323R\004\276\344Uc?\255\237\213=\355\376z>p\027C\275f#/\276\304C\023\276\306\0253?65i\276\236\005\341\275t%A\276\2511\343>\271_\231\276\023\213\316\276B\353S=\254\367\234>\232\336\024\274(=O>\340M\300>\217\364\364=\333\"\312>\267L\037>\215-\320\275TDL> C\002\035\213==\021`\211>\035\363U\275[\222\341=W\371\317\276W\276\334<\275\273`>.)\247\276o\030?>\314\273\203>\240\014\227> \326\262=(\307\335>\245f\013\274\025\362\273\274>\204\305>f\2709=f\365\306\275\274\311\013>\273\307\225=\302[}>f&\'\276\216\3505;\3733\336\276\314\016\014>c\355\233\276-q\256>\206\023F=\304y\314\276\300\010\247>1\221\217>\306\301n>\200q\301\276)D\227\276Rk\253\275\277\014\244>\301\020y>\320\332\343>\206\325\240\276\207\230\371\276\277p\217\276\360\214\022\276gc\227>>0{>0\301!>\250\305G\277\033g\226\275/BV\275^\360\204>@;\341>\213\004\371>\276fU>\310\306@\276\312\270\356\276\325R\\>\025\366[=F\275\247\276 \324+?\277M\346\274\037\365\226>\216rB>A\023\266\276/\'M\277\360\323\221\273\233\\\335\275\347]\030>\376%\253\276\037H\303\276\261\261\320>\363j\272>F\240\001?\035N\017\276\355\347X\276\035\262\273\276\253\360\326\276\253n\016?3v\036\277.H\322\276F\203\264>l>Z\276\366\372\323=\333\035C\276l\237\355=a\265\014=\027\271\245=\361\275\307\276\213\026<>2\033C>Z\255\375\276\356s\354=\257k_\276%\230_\275M\323c\276\226=t\276\315\253\271=\025(\244\276\005\376\330\276\231!\256>bjA\275\256\224[\275\372d\253>x\"\014\276<\370\346<\313\2047\277\277\245g\276]\2009<\327\270\301=\250v\024\275i\301\230\275<\352\307\276R?\032=\220,\251>\231\346\275\276N\341s\275\341\005\r>V?f\276}\002\221>\266\321C\275j7\213=\345\252\303\276\037\267u>\353cj\275\213\323\332>Z\033\202=\217U\372>\241\260S=\361\0227\275\226|\304\276\366\207\330\276\222\272L>L\252)\276\327j\371>9\213\207\2759o2\276\314\002\234=\255\240&=G\006\005>\031\312\331\275\326\312\201=/P\305>{F\210>\")\347\276k&g\275\350\036\346>\365\304\222\275\317\302\221>\365\353\027\275\347\214y\276\241\216%\277a\312\205\275\n\014\253>Wz\221\276\267,\232\2765\201\233\275wG\002>F\220\236>\0246p>\177\331R>\013\321\276>tQ\247>DA\\>\273}\203<5\3507\276\316\023 \277\376\'\032\276\365{\014?\024\000\324>m]\327\275\026\376\376>\013M\214>0\3279<\277,\266\272\"\241n\2763-\365\275c/\246>\370\227b\276\231r(?ZT\022\2777>0\275\256\202\362>zW\033>[\022r=R;\330\274N/\236>_g\342\276\344\373\212\276s\255\254\2236\333=5y\317=si\002=\242\205U> \033Q\276^7]>&7\233>C[\372=\224\006\223>/\320\030<\334\331\205=\334\210w\276%\t\307\275&\363\227=\300\035S>\212^\246\276\025\300\206>\327\260\201>\352,\241>n\261\267>h\312G\276\246\253\230=\007\300\241\276\2569\002>\240\342\023\276\351\367\213\276\204\253 \274\234\233\256\276\216k\264\275\237G\232=C#$?\\y\366\276\"\372\010\275 Xp\276+\220\222\276\037Q\235\273\207\033\274%\000\033\277Y\204\225\276\357\3774\276l\030]\276\240\264\005\275k\252\377\275\037c\200\276\306\332\203>\217i\010>\200\374\210=s\\\214\276v\003\342>\236h\206\275\376\037\301>:\303~>6W\213\276\262\031\273\276\230U\006=Z\376c>\'2\207\276R\241\302\276\010cS\276\223\314\203\275g\0270\275\224S\341\275;\027/\276\261A\014<\346 K>J\325\007\275\313\r\320\276-\322\005\276\006\336\263\27564|\276]uK\275\275\'O>V}\032\273Cje\276\030\006\316\273\315\337v>?J\200=\342\331Y>\240\276\236>\200T\265;\000\027\270>\364\337\010;-e\232\275l\240(\276I\004Y\275\371\250\203\276\031\0263\275S\200\312\275\247\205\220\276T\276\217\276VS\\\275\3134\031\275\207{\266\275~Sv\275\006\337\316\275\302\336\210\273\344%\026\277v\323\306\275\277Mo>\351Q\3473\276DX\223\275hJ\005\277p\t\330>\003z\022\276\331@\221\275\247N\032\276\302\037\362\276|G\350=\027h}=\327\014\010=\3222Y\275\233\275\274>\'\263\021>\207oQ\276\343\260~>\367\341\360\276-\220\311>\232q\265>\326k\363\276\316\002\270\275\265w\030>\247\262\232>\236s\333=5G\363\274\362\257\274\276\2601\250>\312%Z>2\t\211\276\026%\355\275=\245\206=\013\206\334>\343\201A\276M\330\204>^\004D\276\363z\311\275\355\366\212\275n\n1\275\251\267I\277\251\253P>\360\244\360\274?\333O>R\004e>\354\346\331=\277\217\333=\214\227i=sr\036\275\373\256\205\276\234Hx\275\265*\267\276T\307r>\311\226\324\275\233\002\212>\374w\326>~\241\251\275;\354\232\276\240\365\324\205\032I>\242&N>\347\251\265\276\\\262\227\276O\245\224>\000\035F>\252\215\260\275u\003`>\231\301\016\275:\270$\277R\353\340>\"\203\261>S*\341\275\270%\225>\032\037\272=zu\320\274`qC\276i\252\211\274\242*\346\274\032li\276\327\301\035\275\n\300)=DU\310>\2733\326>\300\3647\274\022n\363\2754\273\277=\315\252B>\306.B>Z\022\203>\006&a=\223\307\006<\312b\317\275\030V\241\275\322\305\224>S\227\211>\335\031\022\277$0\205=\204\377\274>\205EF\273\305\\\312\275JLp\277\344\201\002?\370\215\215\275\372\356\311\276\242*\355<\270\307\302\276\363\314\213\275\242\223\330\276\273:\250<\364\002*\277J\2243>(p~>\020\247b\276\315\201\375>\246V+\276Y\316\324\275X\271\210\276~\335w= \341=\277q\261\364\276\260\030k>H\025]?X\260\307\275WC\212>\037\235\246>r\367\266\276\337\261\376=z\266\363\276r\314\320\276\331\253\323\275\223\306\316>\336\207\316<\'\037\244<\324J\r\276\267\351\n\2747\314\230\276\275\201\320=p\271\275=\373X\316=xG\224\275\201\257\\\275\001\201O>\312\301c=\357\317-=\255\204\000\275\317\245v<\'A\337;\303\n\216=\200v\302\276\341m\311=\221\244\212>\272oA\276\256\252\247;\374\355\036\276\373x\330\273laG>\265\352Q\276\323 S\275K\\A\276@F\002<\224\014\332>A@\212\276\274\241i>ZL\233>\237\312\035>\376\017\025>C\\h>FL\347\276\036\365%>\300l\251\274\270j\221>\357\313\246\276O`\222>\005\367\200=0\210\223=\316\340\240=\224\261r>j.\204\275\363ZW>p\035\313>T?L\276\324\2321>\327\206&>{\302\263\276RM\014\005k\036\276A\216\304;\234\322~\276\276GV\276A\035\"\276\307\020\'\276\325\216\002>\235\221\201\276\236n\212>\2375\275=\177M\240\276M\354e\274c\370n=\327\227r\275\277\243\212\275H\3112\274}\222\327=\253St\2761\023\226\276%\342\302\274\025\251T==i,\274m\312\222\275\234\314\332\276\332#\277\2751\330\021\276\357\247\203=\232\n\224>\313\366\010\276X8\252=J\204\026\2763\274\377\276\264W\363>\"\006\350=\315\027\272;\332k\275>\310i2>%N|\276o\307\223\276\255\240w=\212\033=>i\360\316>\270R\010\276\364r%\277\031\255n\276\030\024\356=|\302\202\274\344p\'\277\004\033\200\275\357\377\005\276\r\221 \275\"k\253=/\356\020=\363\232\037>\300\273\301\276\273\366\032>GV\025?\210\203\216\276\300\267\331\275\313\370\2079R\003\241\2757\0339\276\276\021\235\275D\3014\276\365\355\276\276$\3051\276,\023\213>\223\3538\275\213C/>/\264\256>\370\260\322>\305\275\200>\000t\035\276\001xC\276\035*\236>\021\030J\275\361\264\034\276A\026\361>\271e\010\274\302\361\270\275#G\000>\267\263\253\276\331T\217\275\002\344\006\275\337\233\213\276W\240\247\276\273dP>\374\272\020\276\313\003a>N\035\014\276\330\331\226\275\352S6?,|\227>kV\233>H\216(=^\2118\275\271\352D?\370%\205\276\367J\377=\020&\305=\375\342&>Z\360\376>G\243!?v\372@>\221?\024\276\017\312\231\276\033\254b>p\324\036?\275\257h>X85=+F\231\276\361\227\365>a\201\340=\nY\302>={w\276\\\276\014>\233\254\025?\350\213|\273\250\331(?\256\201\033\277\333\203k>\210\250\016>\255\257o<\366I_\371\r\240\275k@\n>\300\215z\2766\311\003\276\371O\260\276\257\240\\>\253\n\252\276X_y=\324\341\257>0P\252=MS\312\275\215R\034\277\243\010\034\275\260\r\013\276\234\247\016\273d\224H\275\247*\255>\267~\300\377\021\266\276&K\010\276:8\233>G\306v<\313\273\200\274\231\357\312\276x\276\312>Y\255\230\273t\237\346\275 \371\234=AI\253>K q\275\010\034\003?_\331\253\275\214\361\361\276\346<\220\276\230\366j\276Gw\251=UG\264>r\255H;\020\020B\276B%\341\275]R\005>S`|\276\300\353\346=\367\260\215>\016\356s>\244\332\212\272\001b\236>\006/,?\342zg\276\322\033\275\275\347Y\213>\265\216-?\312(\305>\331\264\351=\372\377\372>\302~\365<\027\312\307>\240\211S>\277\344&\276Q\210\033\277{\307\214=\320\252&>cR\206=\017BX\276h%\204\276\272YJ\2757\264\016?\263\224\361\275\352\340.=\226\365\203=\263\244\262>g/\305=Ue`\276\364$\221\276lq\215>\305r\353\275\266\010\327\276{\243\032\276\372\365\312=\260\211j>\3658\035;\207\206\276\276r\205\002>\335\340l>\314\234\010\277\311]\005\276\021\317\024?\340\374\201\275\210\372$>\211\303\r\275/\222\231\276+\323\306=W\356P;\376\375\266\2757\215\221>\006\212/>\007\352\200>$\236c\276kv\035=A\024\365=\nC?>Z\004\236=\263:{\276\033\350b=[\215S>Y\247-=\360.F\276\273T\021=\035\313(\277\267\200\246>\006h\222\276o15\277Y3{\276\362\215\230\276\321\342\323=n\035\255>Ds\272\276X#\006\276\314Y\220=\312L\225\274\004\251\334\275F\364\200>N\244}\275{Pa=i\363\304\276\251\031K\275B\244\034\276\205\217\244\275\324a\267>\275\204\202\276F\2269>\312G\335\275\346@\213>a\357\n\277{q\260\274\274\323m=\235[\246=\326\236\326\275\236$\'=\335\005\023\277\225b\317\276\013\256\357\273}\220\005\276\177\231\252>/}\264\276\224\006z=\206X\251\276\270\005\234>\036\276\212>3\n\006?\177:\214><9\230>\333G\347=\033]\356\276}\211\351==?\333=XL\206>F\005\300;u}\316>/\303\315>\233\000Y:\301\006r\276z\3635\276\r\345B?\\1\026\276\326\306\242=o\360\240\275\203\301\307=\220\362\244\274@\315`\277\245\371\353=T\245\n>\244\027\215\276\202\230}\276\372Io>)\214J\276\276\336\215\276\225\262\261=\325b\310\276\356w\354;{+\261\274\301\000\310>\322\206\350=hy\213\275J\346\267=#dK\276\303\331\035\277P\273\224\275\356\354\313\274\032m\212>\365t\201\275x\303\267\275\243\316O\276K\2271\276\200\212\'>\242\203\332\276\350<\031\27685g\275\320C\004>O\r2\277\"\037\013>\220K\232=\345\360\217\276\035\314%\277yf\006>\r\240\207>\370\207\225\276`\347J\276\026L\321>+\031\036\276\275\365\305\275x\237\336\275^\262\\\276\317\241\004\277nI\031\273\260\245\014\277\035y)\276\266\014\025>2\235R\276\351\356\006\275\025\310\024>\245bL\2767#\201\276r\200\277\276\244\017\203>\214\353\212\275\235|\037>\332\340\355\275\261Dy\276\322z\330>\234\321\250>\316\202\234=\374.S\276m6\216=\300l\330=8\277\366\275\3042b\276\014\342h\276\314\320\302=I\237\274=\245!\021\276J\t\271=\340\2773\274\200,\243\257\331\221=\244\004\254>\0034\252>2\323\010\277!\207\364>\276\343\325\275\233\031\002>ZJ\025\274d\300\316<\022\254\032\274\357\261j=7\213\250\275&S\214\273\336#\252\276\277<\211=!\323I>\352\334\005\276\366\202,\276]\336A=oO\330>\275h\312\275\271o6>\277\240\003\276\312Y.\276\207\274\361\275X\211\356\276.\231\014\2772P\025\276\304\014\206\276\036\355\350\274\354Ak>Z\001T\276\203m\232>\371\341S<\021\312P>CK\342\274ZK\010\277\002V\244\276\252d\220\275\317\027\261\276%7\331\275\225\350>>1<\327=:\365;\274*\213,\275c\237\226\275P\034\024\277\274\362\221>X\353@>^\023\035>\227N\232=t\315\031\277\"\205[\277\223`(\277\373`B\276_\246\234=b\r\251\276Ra\255\275+\252\272>\310\277\016?9\000\325\276\021,\003\277+]\335\275\301\027M?\341\357\276=;f\200\276\202@\202>\364\274\002\275\210;\272=T\370\332=\317\030\241>\344#\031\277\312\262\233>9\260\013?.fC\275\220\302\006\277j\027I>\335\366\251>_\177\351\276\275$u\276\307\271R\276\271\317\300\275\252\033\205\276\201\364\036?]\034W\275\200g\207\275\000\362\347\276\035\303\224>\264\347\006\276i\243\222>\307\241\001\277\347\275\264>\367m\257\276\'W\363>\202\260\220<\033\366F>XGO=\216\343O=4j\230>X\313M\275\221\364\202\276\013#\205>3l\306<\371;\021>\315B\354\275\240\'`=Q\226\033\276\007\206~>\321\265\260>\004\342_>\323\367<>\363 \007?\343cM\276nY)\277\216\315x\275\\\225\214\276\230\317|>\247\370\327>8B\365\273\013\220.?\255%\201\276\036\3712\276uHs>+^\027\277#+\224<\366\317\262=\252\r\247>\323C\200>\316I <\301t\202\276A\352\207>\341\357\220=\231a\334=\235\272\357\275\032\'\252\275m\332l\276\002^\277<\310/_\275>N\254>\356\276\020>\273\236\306={\222\n>\264\007\275:\205\352\304\276\351\344\026\275\ts!\276K\020\300=y\000n\275\251\310t>4\375\363\275\265%\223=\00082\276 \313\002\277\337\320\217>\355\375\177>\253V\t?\026\201J\276\317\336r\275\223?\222\276\340\234~>O#\342=\331/\026\275\200 \222>\372\001\206\275\231u\213\275T%\301\273\337\033== \017\016\277\241\034\212=\215c\214\276P\304D\276C@\324<\254\020o\276k\331\343>r\371\346\276]\2278\277\244t\271\276\020Z\242\276\2345\362<\334=\300;a\305\230>GEJ\275\035\242\033>S\347\312\276\240\330\252\276\234\202\252>\373E\363\275\350\227H>\3137\347\275\211\245X=\2247L=\246\254a\2763@!\277f[\016\276\335ej=a\330\303>\224\035\365\275,{4=ib\332\2749`\006\276\025\355\231\274N\024\226=\326\002\344\275V3!>\n^+\277\204({>[?\212o4\351\276\262\272\211>8\246\225>)\216\332\276\260\002\263=\344=7={\tn>\007\022\014?\340n0?\335U\001>\332\216\027?\206\217\265\276s\353\t=NO\265\274\324\315\257>=QL>\357\367A>\217\372\242=I\004\n>\014\034\002?\365\241\364\276|\rk\275\365\206\026>\205\020\r\276\'t\344\276\262R\271\276\370\260\n\277\227h\241\275\224\371\260>\'&\235\276:z\235>\203\271<\275J\022\200=\210\246\034\276\326\013\003?\364\327\312\275\024\331-\276$\374\371<\037a\270>\007\270Y>\247\303\030=\201{\230\276b\216\314>K\005\261>\343\313\004\2769\026 \275\377\215\201>k9\275:J\331\001\275\024\033\232>\272\342P\276x<\254\276\365\256\031\276\300\027\001>7\277\206=\234\270^>\277\024\003\277\245\300\030>`\267B=\272zM\276\330\006\207=\376\317\304\275\205\273$>S\213\n>\217\307\232\276\235\024i\275\326]\013?\233i\005=\023D\223<\254\320T>\310\276\335>\003\352\225=\210\364Y>\207\204\223>\322\226\357=\234\r\346\272\225\223\240\276\345\305V=%\253)\276\032S\201>h\220\327>w\276f\276\242\013\334=RR\251>\327\022\317H{9>\310~\035\277\234=\352\276\366ry#\347\216>\000\345)\276\017j~\276\250h+>=\022\000\277\017\321d>\\\017\020\276Z\276\364=N\355\232=\204\331A\276\'H\301=\231\005\023\276\372\346\204\277\207\224\200>\202\213\306\276\226s\211\253\017\014>T\350[\275\331\263\205=\014\310\210\275 }\201\2760m\242\2754\231\240=\360GX>\266\336\257=\266B\004?U\3508=U\302z=\315H\035\275\325\275&?H@\215>j\236\252>5\327\037\277+_\372=\257g\372\275\3237\340>\241\244B>\004\347*>\034\342\311>\340\343\255\275D\306\016\277\212q\"\276\236V\264>\202\225*\276\217.\005>\314\205)?\232\025\273\276\250L\002?\310h~?=t\273>0\267I\276\364\337\261\276\300\025@>\310\250M\276\022\341\254>e.\331\276-\241\350>\2207\360>\241\252\213\276\375\260c>\203\311\306>]A\263>\232\266\215>\023g\026\277M\332\257>\243\372x\276?\270\362\275\337\032*>\332\342\211\276\365\373\241\276O&\366\276o\214\033<\222\240\005\276\340@\203=Iwt\2745o\203\274ky\241\276\271Pb\277\303<\n?o\345\252>\227s\304=\267<\315>\033\377\243>\361\020\225>\341!\333>\204}\206\276\224N\261>\366\347\343\275\024\315\230=\377\373\206>xrO\276\021\002\311\276x\251\331\276\023\237\314>|\242\033?\221\252\020\275\204\325\035>\316a\254>\307j2\276\321\007+\276\205\313o\276\245\317\376\276\246\360/\275\021\317F>A\201o>= \345=\243\367~\276\272\033\007\276{\261\342\276\260\233\274\276\t1\206=\334\323\200>4\177\224\275`^\224\274.\347\036\2779\037\273=m\314\202>.\361\200>\261S\225\276q\300\231\273\206\225\034\277\310\204K>6\005\217\276\353\276g>\346r\275\275?\035R>y\375\276\275\301]\264\274Yd\266>\266r\000\277\027)m\275\255\252:=m\007m>\200\343\002>\251\306\014?u\320\014>e;\255\276\337(k\276\023\310\321=,\317/\276\245\364\010?\213L\310>\304\035\003??\341\017>\031<\206\276\332\262\364\276\211/\022?[\212->I\242G\276\217\222\004>\024\264\307=\241q\353=\320\234\317<\341\206l\276\326\271q\277\241R\005\276\321\3541>\346\326\024>\241\024\034\277d!\004?\231\325\332\276\230b\257>\327.,\276!y\227>&\356\237=[ \217>}T\204\275\036\224\210>\220\303\347\274\264\236*>c\211\004>p\356\204>\217 \235=,k\254>\r2\203\276\017\371,\276\320c\036\276\245\347\317\276\322\264\316\275\253\216\031>~\332\r?\233_z>T,\235>o\265\270\275\232\212\346>\215\001\330\275&D\231\275\244\252^\275\002Q\023>2\264\030>\000+\351=\177\242\214\276?V\213=\251\223q=\355\253\342>\301\030\036\276QW\270\2766\013z\276\030\200\202=\315\376\355\276\201\006\227\275~\361\001\276\357=p\276P\202t>\270\206B\276\317Y >\3515?=\304\267@>\373\306\005?\002V\n\276V\366V\276@\270\251\276\026V{>\202`W>\200\365\350\261A:?\220\256\016:\334\232\221\276\245\020\212>\240Pu\276\007gm\276s^q>-\002\336=\370w\347\275\256H\203>4\266m>\203\207\236=\205\352\020\276w~ \276,-i>y-\364\276F\205\314\276\371^\275=(\270A\277\023g\312>J\001\307\253\000\005\277\211\t\245>\026T\352>\360}+=\3603O>\265\207\275>4N\t\276H\271\025\276\254\004\205>\177\324\324\275\270\355\024?\322\206\006\277\367C\306>\216BW>\252;u\2746\340b\276.\314!\274*f\"?\027V\373\276\367\300\220=\326\006\363=\200\335\023=\376\0029\276V\001\320>\371;-\276\306\352=>J\355!>t\376H>\303x\020\276m\377\273=\234\n\300>\227\324b\274F\242s\276q@b\275L\nl>\313} <\205\247\017\277\307R9\276\017\306)\276!\214\313>\211PC>\031GK>\327?\005> \302 >\221\257\014=)2\302\275\255\262\317\276y\227\034>>\310\032?\013\210\323=\213p\240>\373zs\276]W\271\276\350I@\275^\330\265\275\324\354\214\276\316\301A\275q\332\265\276E\263,\276#\276}\276\222@\241\276&(\330=&\240\316\275W>\315\275]M\216=t\214\022\277\004a\022\276\301\221\020\277lYk>d\020\221\276\321\274\242\275\341(\t\276\263\310\031\276\260\256\322>U\352\210\275\374\013^\276\322\246->\007\256$\276\243\375W>C-z>o\316\302=o\310J\276\263W,>p+\010?\023\016\306\276\030\257\366\273\215\330\271\276\257\n\231\276\354\216\023\275\2652\315>\223\274\n=\2073\027>R\356\273\276&\022\302>\264b\262\274\327:\347\275\303c\026>\2322\233>~QD>\007\277\206>|9\203>\356\2415>\334P\347\275\212\036\213>\314\014\265>\275 \357<\0011\330<\3759\327>\r\365\002>\262\306\243\276\341#\313<\021\177\267>\215\240D>L\266\312<\330C\t>\260\333i\275qd0\275\317$\270=\236\207\271>1\205\237\337\014\023?\030\362\360\276U\212\031\276|X\027\2774\361\013\277:c\361\275\360\254_>\214e\335=\374G\221>\261\030\260>\211\202\316\276\247\224\233\276O\272U\276D\311\245\276g\237\227>N\022\271=Dtr?\251&\022>\362\244<\274\205\022g\275x\375\324>\376\313\317\276\363\205B?}\310\264\276\272\367\371>^\020\005>NP\024>\224)\342>\001\271\255\276\204\312\361>*/\201>\335\005r\276K\024\205\276\312f\014?\275\373F>F\270?>\255-y\275\216\324{\276\320\rt\276\326m\010\277~\321P\277W\\\224\276\377\215&>r\001\n?n\030\201\276\322\007Z=\016\267\355\276\370\204n\276TeQ<\315\010S\276{\350|>\277\016\021?\347A\330>\024\347\257\276\257\2364\276\350\276\266\276\005\200\223>%\377\350>m\325\352>\021u\364\276\221sY\276d\'\014>\356\260\263>uk\016\277\235\367\250=\023\313\377n\r\r?\214\356\\>m\013\214=\365#l>\375\032G\274\312;\013=\030x\216>Q2\207\275\263\0232\275\340O>>\027\374h=eH\025>\261\340\273>\\\022\t=\017\344\222\276\212\366\327\276D\263w>\251 8\2777l\310\276\232\205\353>\000\3111?r\315\307\276O#\302\276x\226r>\330H\350\2761[3=.\306\243\276L\277\215>\324\374>=\244l\344<\030\251\334;_\273\201\2743\023\020\275\270\311\364\275\324\305R=\310\276\354\274\247D\271\274-W~\276\222\310\355\275X\340\234\276\312\213\367=\364\016=\276\355{\312>\306\244Y>8cZ\276\256\256\243>\251\027>\276\251U\005>I\273\345\276\332b\247>\275\206\030\275\211\203\231\275x\260\232=Z\224\237<\240\3055?#\363\263>C\321\213\276\347\342\276\275\023\333;>\327\351\306=Qg\023\276\310K\236\2754\236)?_gg\276\302\250\211\275\332\215\215\276\257\037\t\276\\d\214\276\312z\211\276Kx\223>\367\365\271>\362!\271\274\327\276\222>\307\246!>\250Mi>\373\312\252\275\335\362\352>\271\022\252\276\367\010\001?\241-\021\276\243.\240\274}\264\226\276\334\254\253<~\364\306>\255\370e=6\303T?]\246\224>\330\324\326\276\351fa>EU]\276\311\252\271\275\205\263\367\275\355\304\367<\2728\332\275/-\204=\225\253\234\276\277e\265>\224\002R>\343\370\330\275A\300\177\276ej&?\334\307\212\274c\342S\2763\261\033\277\235\317\274\2761l!>\r\250\000\277m\2713>S\357+>\277K\337=\021\235\320=\265ft\276T\347\342>\261d\264=\362\306V>\306\356\000\276\202&\252=\031\210\030?AV\227\276\nv^>6~\037>\310\377\204>\201\345n>U\360h>\236]4>\315L\314\276\332\345V>\354\353,\276\000\363\201\275\277\254\235>\224\351B\276\356,\037>0\244\357\275\276\222T=\3031P\276\367\314\221>0\331\265\276FH\022>=\235\226\276\356\010\332>\370p}>\376\323\257>\331O\217>\\{2\275wf\355\275\347aI\277@\360\333\276\354a\231\274y\242l\275=\337\226\276+\357%\276\3646!\274\022J\324\276\203Y#\277\327\'\031\275\361\330N\276L\010\215>E=K?ezF\275^i\024>\022\372\373=*l\227>\320w\323=\255\345\253\275F\030/?\337\234\234>\266*\347\276\036Ek\276\365\323\240\276\004\365\013?\372\013j\275\'\331^\275fy\273\276\222\031}>\362dQ\276\026.F>\350i >R\331\222\273\377\244y>BhA\276|\230\246\2759XA>\306\214j>\024\330/\275K\2772\244o\251\276\003\021\371\275\230u\315>\277\006O\276>\372\301>\217\361\303\276HR\220\276\333\260\025\276\364=d\276\345 \031\277G\210\321>\326\257\017>\004C\254=]\314\304>\010n\323\276&\223\n?\202\304\354=\342\352\213\276\004\027\300\274\251\304\375=~P\216\276\337e\262>\223\310o\276\335?G\276\024\271m\276\274z\300\276\375\210\017\276\266\036\224\276C\353\245=\317VO=\035\202\350\276V\036\207=p\264\373\276B|E\277\264d\326>\034\347\301\275\247\317\021?V\'\320\276hS6\277\243\010>>6M\313>\340\020-\275\345\255\373=4z\220\275\241\337\210\276\322\356\371\275\257h\305\276 \375k\275\377\026\303>\321\214\204\276\013\210\277\2762\027H\2766\250\316>l\'\210\276\325\346\263\276?Z\021>m\255\261\207/y\276!\007\362\275I\020\232\276\255d\213>\030\275?=\336\031c>\312R\335\276\251\317\332>f\265\244>\227N\221\276\350I\265\276\221Z->dY\020\277\227\223n>v\031\006\276\006\320\321>\212\rv\275\220sN\276\264^]>\314\230X>\330\207\252\276E\255\324\276b\322\212>`\304\006?f,\234>]\253\203\276\357\303~\274\305\223\252>N\312\026\276\210|Z=\361\373\272\275\374\242\304\276\313\302<\275\324\320\235=+\252\201\273=\374\203\276=\255\006=\364=$\275O\021#>:q\227=9b#=]9\335>T;+\275B0m\275x\235\030?\216\321\255=\206\312\304>\261\216\324\275w\225j>\207\262\214\276\2227)>\263+\215>\032\250\002??G#>-a\n\277M<\014\276\342\003\273\276\236q\300\275P\210C>:\232`\276\216/\224>\241\343\301>^&\"\275\352\373\'\276\354\004/\276\311Np\275\331\344\236\276\363N\246=O\316\242\2746t\214>\246S\301\275%\037}>Z?6\277\314\361\347>\364\256.=\314:\373\275\351U\340=p\214*=\005\354\265=\243\037z>o\203\277\276a\325\244:\203Th>nx \275\307\n\265=P#\306<4X\331>m[\016>\365q\375\276\221\024\327\276%\262@=\211\306\260\276\325\314T>\265\354\224=\2447D\274\256\031\t?\347K\224\276L\266\316<\333\260\244>\317\261\223=iZa=\225Mp=B\r\261>F\201\200\275H\316\030?\305&\022\276b 4\276\214\317\340>o\024\002\275u\241\315\276\002\245\321\275\027\007\355=FK\256=\241\372\035>\003?^>\325\350w\276\236|-\276\335\326X\276\220\010y?)\026\316\275Uz\327>*\212\272\274\tSW\275\365\205\372\275\352J\205>2\036\233>\351\323\316\276\222\217^\275\307\'\224\276\311\3243\275%\375\002\277\313X\211\275\020\251\230\275\361\375\377=\376\340\306>\032\372\201\276\025\355 ?\270\264\252\276\020\037\263\276\354\221R\275&\312\224\274\327\n\237>(\311\254>4\014\261=\247\241\201<\210\217\177>t\200\346\275\032\232\331\276\271\231w\2764Y\030>\372b\004?\0205\\>\027\217\345\275%5\224=4\253\374>\220;\312\275\271\020\234\275\244L\315=\224\310\200\276R\324\312\276\335\344\260\276\255\355\367\275N5\245=\"\342\360\276\330\036\021\276\332\013\316=\335\026\037\276\222\354J\274\307<\214>\003\262\222\276P\314\325=a\030,=\232\034\234>\030}\236\275W\036\353\274\t\315\214\275.\"\260\276\320\030\270\275\0369\220=\374\247\343>\305-\330>\177v\217=Y\342\000\275\007\261\t\276\3410\343\276\275\266\310=ek\276>\010\274\367\276\325>\211\275\014\225[\276 \003\336\274\367\355\261=\377\236\330\274\220u\"\274\002\341C?\221\342\235\276\247\370`>\206\236O\276\243JI=\205(\034\277\352\002\037\276K>\236=\223\273\"\277p\244\n>\304\345\n>3\233\270\276.\306\243\275j\261\256>\242p\373\276jn\367=\215\271\036;\035 \232\275a\330\325=]\260\350\275\203k\330>\256\272\262>\330*\236=\355\323\031\277\353\325\242=\373\306\t>\346\363\250>&z\261>\224F\"\276\220`\321\276\220O\363\276\203(\004\276\314\336t\276\367\004\026\277\332,\303>[\346n\276D\315\215>,\271\217\276\302\224\335;\235\'\201>O\236\271\276\312\035E\276\265\033\'\276R\217m\276\037q\016\277K\230\024>\305\243\001\276\243\037\313\276^\373V=o\236\215=*\362\346\276Ob\027=^Z\336\275\024\365\'\276\324\263\037>\013\346\335\276\234\357\210\275V\30119\3438\313\276\267\001F?\265i\260>\263\277\311>\214QB\276\333\365I>\002N\335=g*\314>\245\215/\276\321\254\034>S\366x=I\'\010?\204\267\242>R&\267=\234I\240>\363\325\247\276\236\276\244>h^\343\276\027\027\326=\237\237\">\223\252B\276S\032\364=\234\024\013\276\272\265\212\276V!E\2767\267\271>96\037?.\227t\276\232\016\242>\007\016\272>\317X\342\276J\001\r?I\370\361>\010\364\036?,U\n>\254\365\315>\243\"\316\275\276\217w\274\240\\\233\277\253&\003?k\204\314=\226$\316=?\337\264\276\355y\252;\341^\'\276\021\320\t\276d\233\311>\014\022 =\320\344\234\276!Z\206\276\310\321\350=Y\336\237>\340\001F\276,\2267>+?\240>\375Q.\273\363\302\361=\025\327\344>Vp\214\276\315\324\024\277`\206\317\276\007\215\021?}\214\n\275\356\030=\277\204\362H=\\\241/>\224\372(\277\314\205\323>\275\233\362\276=D\347\275\375\211\350\276A5\232>\325\202g\277\264\037\355>M\037\010\277$b\007?x\310\365\276\370\225\025>}c)\276\005\205\311\275\315\373\331\276~^\010\276\013\353D?\315%\301>\306r\227<&G\304\276Y\217\255>\365\027\273>N\356j\277\336\014\277=\3507\212\275\366\203\250\274\037\023&\276_j\213>\354\264\031\276\334\241\036\276\020\013\221=\032X\001?C\002:\276;y!\276\321\026\274>\202y)>\255;\240<\251\037\245\275\212@&>\367\275\316>\343W\242>u\321\201=2\320?\277\001\351\236\276\367\305\007\277\241\242\031\276\202\362\370\276\351H\242\001}5>(x>>\306F\237=oV\231\276\353\230\202\276\332\266\374\274r\226\t>\022bk\276\004?\206>\200.\n\276VX1\276C\216\323\276\034\264\245>N)\273\276\257\305\227=\004\373\364=\275\350\002>\274\207 \274R10\276\342\020g\276\325\004\375\276\265\2462\276Y0B\276Q\000\034\275\307\234\260>=\314i\276\206@\204>q\023f>)\302\353>\244\262[\276\357\220c>i\204\033=\010\036\020\276{\333\213\273\336,\323\276\227p\277>\027\354\245>\241\356\\\2763+\036\273p\233\000\276\314[\203=\321+*>\034\235\255>O\375\223>W\271w>\273\037\"\276\223\363\036>1\331\216>\311\035\026\276\240a\215\276\035.\335\275Y\356\341\276\321\273$\276\272\242\241\276\024\305!\276\002\320\006?\367\200\214>\217\0234\276H\344,\276\250M\350=\0305\243\275\342w\244\276\336\036\035\276A\265\215>\03506\277\027\247\270>$\3743>\037Q\241\276\342+m\276\027\031\313\276\333n*\276\357\036\350=M>\005>\354\203\026>\263\016\204\275\370\252\336\274~\352\270\276\2666\222>S@\256=\275\360,\276\002p:<\353;\336=Fu\233>@\024\326\276\233\343\177\274\035\256\031\276k\271c?\276\247\016=J\205%\277t\327\n?\322\363H?\331\307^\276\005gu=\017+\335>\320\207r=,?d>|-^=\232\303\356\275ZU\242\275\212n\300=\037\265\300\276\257j7?\002:$\277\250\315\317\276w:5\276?\345\256>m\2109\276Ib\360=o\002M\273\370-2\276z\223\375\276\306\t\355\275\375\006\314=\254\003\217>\226\343\262\276>E\227=A)\272\276\000\366\267=\236\363\250=\241\300\325=Jr\363=\364g\006>l:\227\276\242\357}>L\216\222\276\323\362\354\276\207\242\365\275\"\254\200\276\203\034\376\275k\222_\276\233q\316>Z\177\202\276f-uh\372\207\275k\030V\274\310\374V\275\300*\201\276 \244|\276k\226\200=\322]\232\276\022O\265=*\252\205>(\304\302=\240\225q\275AW\013\274\272L\241\276\260si;{J\035=*\216\230\276\365=\r\276!X\233>7\004\200>\246\222\025>\204\032\367\276\'\211\217>\0201i\276#\337A\276D\236\217=\370\210q\275\024%\277\276\005\300p\275\023w\224=[L\372>\260\375C=\354r\266>\213\0029\276\003\016\261<\325\236\356\275\220\026\310\275\023\305\243\276\301e7\277\'\377W>\303\013\334\276\206\347\212>\321zO>WV\266\276rP\003\277-\354\365\275\026\215\210\276\"\213\314\275pb;\276\032\316\346=\035\242\211<>kf\276&\342Y>\243\r\">\'-\177\277\250\365/\277\r\263\334\275s\356\221=\211T\001?Y}\003\277\263;]\276\212\276\224\275\271q\264\275\266\364\013?\240\004\373=\204Pw>\275A\276\275::\r=\320\307\256>.\367`\276\273Zf\276#\260N\276\334\323\366\275\222\207\026?\263\223\350>\274.\201=W\226\221=\203C\333>>Y\036?S\270G\276\230\357\022?\255\246\233=\005\367\356=Z[M>\002\265\375>\2610\256\276\t\025|<\246\013 \276?9\374=3\031\215\276\177\356\245>\373P4>\220\210\221\276l5\r\276\\\215\'>H\213!\276\316\233X\276T\240@\276n\246\205\276\362m\233\275\025\326\237=\265\370[\276\377,\201\277RC2\2764\354\234=\367\003v>\205B\030>\233\r\007\276]&\346=\'\345!?\265mh>xz\026\277\346\002\245\275w\027\201>\025\022b\276\227A\230>\244%9>-Ti=\215\370\244>\312\030\313\273K\315\276\276_\300\326\276\2029R\276\3221\206\276\203\353\005=q\0270\276\025P\034\276\332@\r\276\036\307\022?\327\313\306;cdz\276\217\320\201\276\277\370\342=\031\361\021=D\202\241\273S\347\227<(L\034\276\252\016\252=>f\207\275\202\360\212>H\261%\276\030\324\324\276\330\235\362>y\335\024\275\242\030\300\276e\020\267\275\267\307\357\273\212\000\221\2762\232.\276\r\366\242\276x\220\346\275\356y\310\276\276\264%\276\246\346\314=\035e7?\204t \276\325z\313=\223\263(\276~\036\0244\224\306\276\201&\360\276q\223E\276K\036\243>=O;\275\262M\213\274\0268$?\266\003\355\276\300@\016;\277\347\335\275\032\312\217=\323\225\017?0L\244>]\235\264=R\200.\276\345\251\374>\252\027!>\300^\231\275\224\312\313\2766\326\242\276\214*}\276\276\342\000<\330\005\323>\351\246\027\276oC\004?\023\335|\275\034\376\335=\231{\335>\'\346B=C-Q\277I\3254>\032{R\273M\323V\275w\250g>\240\365\320\275Vp\247\276\335\355\321\276nh\353>\313\215\371\276\221\304\261\275w)\257=\207o\346>\202\346\203>+G\014>\271\376\353>4\211b?k\366\003\2769\352\261\276\014o\311>\025Y\201\275\350@\177\2769\304\203>\025me?\260\321V>\370N\274=\355H\005\277\2379$?\252`S\276\017\006\325\276C\272\213>\024\301\233\275\305J,\275i\370\254>\247\021@>\377ER\276\267\3134\275\r0\024\277\rY\222\275\230\257\223\276\005\030\251\276\270\277\323=\241jP>\274\320\003>\232\2658\276o3\017?\\TD\276\370\003D\276\377\243\363\276\217\222\216=\020\227\372=\20604>\266\305\203\277\301\225\232=fW\273\275}\236\202\276}C\203=b\320\335=\206\027>\277\240M\035\275\307\r\017>\374\002\021\275\262\2071>\316\303{=\202\213\010?@\2245\275\001\262\023?\305l\352\276\227\302\251>\311e\247>\225\240\373f\202\314>\276;\025>zKg\276\253\'8\276\204$\037>\243XC\2762\202?>[\332a\275\016y\310>\003\016\034>\266\231,\277\212\317\217\2760\326\335\276bT\240\272kN!>\"\014\355\276\271\343\330\276\204>+?>\267\360\275hl\205\274\241==>\223s\350=D\302\254\275\220d;\276\374\203\006>G\261\232\275?uS=D\310\001\277R\002\204\276O\220]>\034h\234=\2464s>b\357\245>\237n\325=\332\367\301=PH\207>\211\333\217>\244\305\217>%\035+>\010\355\260\274\312\215\237>P\255\316\275}\361\264\274!\342\203\276\262\373\025>.\rp\276\212\313L\276\205U\333>\030\177z=\355(\272<\344`\n?\241\332S>\024\274\263\t\312\241>\267\234\210>\231\024\002>\203\220\224\276:\274->u\351O\275\346\367\357=&\"m\2769\022\357\275JF\007?\232\267\331=CuL\276\017e\035\276\245A\'>|\001\230\276c\'\377=\307\347\031>X\257\214\276\322k\215\276=\340\242\276\203\277\300\276\253v\n\274,I?>G\323J>$\\I;N\314\017\276\026:M>\313$\301>\274|H>\300\324\340\276\303|\232>\004\374\242\276\337\013\232\276\177\'7>\020\226^\275g`\010\276 \213\206\274\275\010\243=l1\205\276\230\253(\276\375\340y\276\214\205\207\275\205C\304\2751\213\260\276%\346\006?\226`a\276\257q$>\010\000H\275\360\035\336\276\005?q>\333\320\227\276\214\370\316\275\260 `>l\027l>\376\r\223<<\223\220\275\257o\235>\244\352\210=\232\235I\276G\026/\277\003\216;=\213\014\333>\2470\267\275\264;\034\277r\323A=\032\337/>K\330\376=\303\374*>\345\321w=tVX>\016\374A=m\246\021>W\354k\276+(\244\275j\356\223=\340\000\317\276Y\233\342\273\255\362\205\276\304f\223>5\304\304>v=\355\276%>\301\275Z\205\036>\200\025\262\276\231\200\324=\260?i\276\343Fl\276\016\230\240=\3314\307>\350\242\240\270\266\270\217>\007\252\251=k2\273\275\354\377\227\275\225\257\265>(\323\021\277\2266A\276L\037\215\275J\263?>\005\271 ?\373s\342>:(\275>\014\030N\276\200\347w\276\376\361\202>\300\036\300=\223\241\204>\224t8>h+\233\276\235R\333>\000\246(\276\005\"\001>\013]\354\275\0027Q\276\331l0\275\037\235\271>\242\032\r\277\363\361\261>:\'\037>\022\232\353\272\033\341\275SjN\276\026\252^>q\273\257\275V\344\333=\330\374\315=\276\355\242\276Q\336\223\274\351\365\312=\347\252\316>:v-=h\356\237\276\037g\303=\021\304\013\275\242:\016\275J$i\276H\206\325\276\243\\\207>\362\036\211\276\223\356\366\275\342\025\214\275\221NN=\212\321\211Z\221\210\276\251_\224\2760\243e>\3327\325>|\240\212\276\350M\214\276\2645i\275\375V!\276\013\006\346\276\237 \021\275\365\367\230>\351\037\306\276A\206\007\276\225\225\365\275\265Y\216>\314\244\313\276\373\024w=\314\031A\277\245\036f=9d\305\276\350\220Y>\213\274\370\274\352\271\227\275\317\360\016>\202]\252>F\226t>\214+l>\315\231\234>\244\315\237\276\013\225 ?\322M\024?\323Z\253\275\361\220{>\006\004^>\307\356\277=\203\210A>\365 \304\276I\257\245\275\220{\024\276=T\201>S\277\277\275\355\205\314>(\317+?\373\217\327\276d*\241>\215\217\261\274\325\032\214>=\343!\277\215\226\017\276\250\246\235\276\003J\200\276\235\206d\272\311o\375=K\226j>j\003\243\276\243\327\215>,(;>\221\031O>I\005\252\274\346\323\243\275\316\257\263\274\340t\256>y\212\255=\202|\274=\337\031\373>\'f\306=aq\327\274s\005\303=_\202=\276\033\016\037?\306\\\367\275~P\004\277@\226\324\276\366\017\r>\032\330h\276\n_[>qc\231\274\345Q\342b\271\243=\3373\305\276\005z$?\225\235\333=A\373\355=\355\205\363\276\237\016\203>/\325\030?\004\023\312\275\357r\'\2765\201\330=.\276L>\266\2762<\037\021H\276\217~\025\276\275w\r\276O\215\0358\257\033>nAg=\033\336\215\277\274\311\240>iRK<-\343\030\277DAZ>\3228\253\275\207Y\367>iLv>XN\376=\224\002\341=\361\367j\276\371%\303>\276\221\335=\312\027F\276\027\026\245\276dl\340>\306\204\025>\347\037\031=B)6>\235\245T=<\204\216\273\362a\217\276\331\337S\275\275g\231>\177U\234\276\224V\255>]\013\277>\363\224\365=\325\005\017\277\210\324#>A`\245\276\277=\344\275\036\341\022\265D4>\372:\241\275I\202\260=\263 \360\272\301Z\310\276kl\"=\250\317\371\275e\0319\276X=\000>\311\251u\275\325\220\027\276\3200\240=5\210\010\276\354#\005>\333C\253\2763\237\\>\270\037\261\275\217\022o\276(3\014\2764\027\032?8\005$? \332\226>\327\311\027>KgX\2756w\002\277\240\3668\276\026\376\004\273G\264>>l\356\323\276\301\331\274\275Vr\204\276\204t\267\276\264)\272>\245]\024> \224\311(\032\201>3i\220\276\3044\327;\224|\034>>\203\343>\036\\\014\276ns\304=\232\026\226\276\\\332~\276*\264\200\276\276\240\224>\35478>S4\204\276\317 \373\275\327\310J\276h\030\n\274K\002\002?\210SN?A\215\363\276\344*\365\276\207\311\022=\016\236\326\276\240\322\263>\343\031!?bc\200\276:@\007?\315#\217\276\\\263b\276\240\370\020\276(AC?\304f[\276x\335~>=\260\037>o\344\204>\256\036C>\031\326Y\276\177!\217\276\255\336\304<$p\034\276\264%\201\276\315\206u=\352\360\225\276\262\3029\276\r\037\317\276\306TG\276\010\302\231<\376\217\360\276\'\375\250>^\376\231>n$T?\2458\211=\257\266`>\216j\332>\n`3?\274\3709>\016U\356\272cZv\276{o\321>l\353?>\307\234\210\275\357\245\202>\026+Q\277\3171\013\276\374\332\032\276\247=I\2768\0062=\336\030h=\205\232\342=\311\341\252>sf\030\276\"\237o>\32487\276L\326K\275\210\376\036=\317T\007\276>\n\375\274\250\207x>\355[\214>\333a\325>pM\361\275o3=>*\'\220\275\372\321z>\006=~\275\264\nG>\232o]\276\362\366\240=\200e\241>c*\342=\007\212O>\302\230\022?y\227)?\234\253\215=E\362\031\276R&`>\331\302m\275^l7\276\r\351\341\275z<\005>\251\346F>\350&\276>\014\263\360<\355?$\276\245\227Y>\t\326\027\277\254WA\276Do\027\276\376g\350>\272\264 =\032\311\252\275\034\202\004\275\363e\276\275\021\274l\273\265>6>\'k\243\276\035T]\311\360\035\277im\203>\2617Y\276J\266\244\276w\210\257>mC%=(\031{>\376\265?>\220\215 \276\304?\004\277\240\332c>IR\353=~\257j\274U\245\223=\017\006u<\036,$>\0215\237>iH\353<\333\263\357\276HW\350\271\025\3030=<\323\343;\233\200p>g0\363\273\227)\331=\304\002#\275r\017\261<\r\370\000\276.\030\016\276\370,\227\276wo\023>\255\260:<\004K\205\275\222\006\363>\'\345,>\201\336\344<\t\263\340\276P\355\006\275g<5?K\327\225=\350+\247=J\366\206>\010\203\377\275\311\217\214=\264\260\250>8~\254\276Y\307\026\276\232c\032=\331e/=\0369\336\276XN\266\275i\032B>\356P\210\275R\264\\>5\331\342\275\267\237B\276\256\342g\276\257\276\006?j3%>\257Xb\276\301\357\272>La\000\275\350\371}>\326\367\370\275\3202\005\2765\2507>b\312\261\275\261 T\276x\275\236\276qPv\276\363\362\343>\363mW\276\253A\221\275\211\251\022>0\321R=\033\310\214\275y\177\036\276\232m\315=F_\212\275\241e\037>C\375\030\276?zr=J\320\021?CS\250\276,\2658\275y\214\230\276\260\0352\275 \200$>\005\265e\276\361\223\277>\347\247\240>\001\202\377=V\016.>\322\220@\276\262\242\237=\235\240D>u\206\271>\340\243\350\275\020\"\207=\357\260\201\276]\231\243>\206\024\332\275\027\337\241>\315)q\276d>\330=\344R5;\214G\337\276\213\256\264>\347V\303\275\256?Z\276\263/\230\275\336\347\270=\244\256n\275\363\242\274>\240E\350=\304\'\347\276\002`\260\275\217\226\335=$m\275=\020\265\271\2767\217Z>\213`\262>\212%\254\276\033\013\315>\232u\222=\346*\025>\003\342\322\274\233\373\005=ba\373\274\r\007\313\275r\312#?\347\017\233\276\2451\211\276\271Oy\275\234aJ\275\250!T>\030\350\336\275\300s\231\276\262y\007?!l\033>\2633*?\226:\222\276\322\320\\>\306/\214>\356\275\366>\371\347\033>\202\204\334\276F\306\211>H+&>\322\004~\275\247e\214\274/3\207\275\276\223\206>R\253H>R\224C>\023\210\001\275r\n\317\276\210\371\003\276\340\357!?\224\005\001>\351\031\323=e\371\005?\303\355\324=\030{\352\276\316\374\256>+s\226>zZ\036\275\355\034\357<\016yR>\2779_\304>f\300>\275sO\002>\314\r\001\276\353\241\r\277$EB>\271\217A?\211\020\324>=zy\275\364\"4=G\007\337=\271\202\'=\221\\;?]\337#>ov\307\275nU\026>\300\001W=9Y\345\276\300\330\310=\336_\005\275\371\214\202>\245\337l>\360\037\376\275\331@\002?\222\372C\276%E\362=\214N\010<\366C\360>\300\031\213>\222\306%\275k\336g>[\"\n\277\3261r\276\207\363\n\277E\332\303\275\315\225\261>\024?\244\276\361i\026\275\346@o>\336\005\007?T\342\233 Lo>\273\220\026?\007\210\324>/\336\314>IS\037\276\223!\336=\024\226\320\275\302\300\316>\006\321\313\274Z\373.>Dv\311>9=\357\275 \002\265\276\370\005\364>4\2363\276\247\203\264=)\325L=\n\275\240>\325v\337\275q\274\033\274\307\r\032?6\215D\276\313\336c\276\373\202i>|>\210=\273\255\207>\344\014Y=;;\262\275&6\023:\244\266$\275\20492>A`\014\277\275\375\245>\264\236\235\2759d\267\2762K\221\276\313R\371>\322\224\267\276k\234\256\276\317v\205\275\212\323\016\276K\253\312\275V\036\010?\022\363`=p\307?\276\231\307\016>\300\255E<&`t\276\224e\334\276\327\343\006\276\031\223\317=j\232N\276\205@S>\355,\016=\210\250\353=\241\253\036\276\331\374\275>\246\010`>A\324\225<\203\301\037\274C|8\276\006\367x>\267\261~\275\252\337w\276\227\313\013\276\026\247U\276}H\211\275\323\001\237\276!\014:\275b\307\330\275N\026\356\273\3566\374\2756\304Y>\365\271\242>\2311\005\274:\254\347\274\346\347 ?\350\222\235\2768or\274%(\223>\315>\363\275K\263\007\276\236\200W>\246Y)\277$\215N\276\314\312\310>6\227\020\276\313.\026;\030\372\213\276g\322T\277\201\275\362\2764y\240<;\n\366=\201,\327>U1y\276T\253\223>\212\014\352<,%\217>0\211\322\276\341\ta\276D7\231=nX\355\275H\n\202\275\376w\241=C\033B\276\276\"}=\017\367\330\275\3465\214=\325\321\340>,\240\207\275\305\303L=h\227\212\275\003\214\275>tC\362\275\031\362\226\275\301\362z>$sb=\223\\\211=\212\025\361<\333h\017\277\261t\241\276\242\340\031?\377n\373>\276A\224>!O$\277\357~\206\275\000Q\367\276\r\027x\276-\353\321\275I\033\035\276\275\024\337\275l\035m>\306\214\205\2760\326\212=\244\026\t>\254c\260\274|\351G>\340\317\261=\032\250\034\276\"\235\016\276\317\367.>\016\010\342\276\273(\325>\311\331\226\275\027\226\342\275\204\017\325\275\325/.\277*\215\226\276\366\357\273<*\016\267\275\034\343;=\275\r\233>\364:O<\236\374\351;\274\212\254=\017\336\322<;\245\334>5\205\347=s\202T\276\233\033!\277.H\232>\321\314N\276\t8\033>\326\220M\276O\023+=4\270*\276\234\325p=\227\377?\275]\230\004\276\277S\317\2768\001\016\274\312|2\276\373i\225=\226\362m=\316>\260<\000\354\321\275\370Zc>\351\266\217>\304\312\036>\266\341\361\276L \035\276\347\020\372\275\002\252\007\276VT\315>\363#W=dx\344>M.\314>\344\342\244\276\247\332\347\274\302\273\271\276\022\310\"\276`\"\020>@\220\225\276\037\324}\276\014\033i\276\221\013G;\376\272\340\275@\222\022\276\315\247\003\276\340\327=\277b\013\251\276\354^\030\275\331\2156\276\366\351\230>5c_>D\014}=\261\362\314\276\214-\341\275d\311\004\277\004\235$\276 \240\304>\260\234\240\2761\222\347=-\226\242>\r\031\017?\205C\202\276\273M\332\275s\'G\276\376\210\355>\300\016\253>U^\001?,\016\200\275\236l>\276\262\006\277\275\003\374o=\0046\340\275!88\276\240y\372=\235p\333=\3238\210>\364\277\206\273\362\232,<\311\302\345\274A{\275\276\010\'S=\256\264\370>g\245\241\275R\223\r>\005yw>\002K\030?l\341^\276\265k\t>\260\177\250\275\353R]\2763\301?>B\326\001>\337\231\200\276\230\007\226=\267\355\314\276\273\007\224>;\024F\2765\372\033\277\371@\277>\353B\213\2740JN\276@\272\007\277Gb\320>\300\017\355=\010\310\026\276\234\010\377>$\275\n>\364x\014;z\252\207=|+\346>\206\361-\277=0\033=\223g\366\276$L\232\276\331\021\235\276pJE>\'\270:\277^\241X=\230\000\251\272\341_X\276\310W\344\276\016m\376\276 \363*\2761<\342\275\330\223\376<\240\332\'\276l!\300>\316\257\232\276\362\021M\276\372\275\210\276\026^\323\2769E\001\277Lu\n>\034z \277V\205 \275\251l\026?\276Ky\276\240\260\037\276\3360\262>c\032g>\376\276\205\274\360\256\375=\002r\320\274\303\'h=\236j\254\275\250\021\215\275\331#\221=\026\355\335>)\341\037>\022\315\245>\3041\021\277n\335\026\277g\362R\276\366[\307\276\363$\345\276\354\014\356=\202\371\020\276\203\253\217\275i\374s=\276\0032\276\300\244\t>\325\3341\277\315\312\312\276\026\227\243\276\2046\002>\364\201p>9\362T=q8`\276\236\037\031>*\025\267=\2563\223>ft >e\243\231\276\203<,\276V \206>s\3028=\026\330\222>\241{\303\276[U\000?m\205\315\276%\216\272\276\027\255*=\340\326\006?\307,\214><\224\234\276zD\017>V6z\2764?\250>@5\036>\376\020\262>\273G\312\275\353\365A\276Bl&=\006w\337>?\227\204\275\215!\320>\351\330\010>\'\207\033=h8\304<\274n\342>\207\215\326\275~k!\275\003\250h=]\257,\276\270B\177\276]\277\270=\033\344\357=}\245\250\275\274\271\277>\t\352\236>\211\246\001\276x71=!\203\000\277\207\301\007\277\010&\277\276f\206\020\2760\n\210=\235@\223\276\221\231i\276\274\357\235\276\016\234q?k\013<\276VL\326>\025q\266\274\223x\266\276mC\345}7L\277\255\036\014?\254\014d\2766\306a?1\342\257>\325V\361>\236,\254\276\022\220N\275U\233\254=qs??\244rW>\225A\264\274\264b7\276\337\374\013>_W!=9\251\t?\334\223H\277\245\224R\275\376yW>\3008\320\275We0<\362\363&=\177\t]>\177S\312\276e\021^?\272p\020\276\021\257R\275\036d\217\275f\021\343\276;\031\221>\301v\034>\330\367\036\277\371T\361=\336\r<\276[\032\330\276\313\026\021\276\202N\217>u\010\267=\017\336\215\276yP\370\274\243\376e\275F\001\300=\363 [=\224\333\353=\263\366\004?\246\373\023?\313\222(>!\220\r=[-\210=\334X\n>\244\361|>\252\265v\274P\364/\276\314\n\230\275\237\227*?2\224\213\276\233E\030=\274d\367\276\212\2224\276r\366\031\276\312%\331>^j\230\275l \355\275\033\214\">\230|\004?\231I\017?l\337??O\352\363<\237\377)\276\340\223\215?0\346\243\276\000\247\251L\t\202>\r\217I\276\335l\'\275,\371\020\276A\257\372>X&E>\350\252\311\276\317.\304>v\3743\277\242[)=d\270\225>\372\202\276\275M\303\243>\354&`\276\352\332\232>f\360Z?\232\004g\276ob\210\276\242\217>\276\243I\242\276Y\\\246\276\014\355\313<\220\023\\\275bw\r\276\246\230S= \025\352\276\316F\253>\256\227!=U\344o\276V|\016\277\345\005\350<\371\253\007\276\t\272\251>{\2618\275\206\257\317\275\030\366\231>\t\225\345\274\241\247\216\275-\322\313\276\200\307\036\276\017\000\355\273\247we\275}\366\206\276pE\350\275\347\276\361>N\374s>{\003\307\276>\340\300\276\3058\336\276\025C\325>\025\333\335\274\214\325c>z\267\013\276\233\272\207>\003\255\276>/\274^=M\263\306\275\236g\002>x\226\337\275\352\234\204=j\324\346=\032\nf\276\024;c\276\217\325[\276Z\222\030<\215\0310=e\026=?\036\267\363\276\275/\024\2777S\265\276\341\373\300\276eN\002\276\266\372B<\024\266\370\274\'X\023>Y\240\364=\361\211\004\276\325V\004\276qb\021\277\275|@\276\013\031w\276\357r\013\275\013-\265>\034\342T\276\027\262\032\276\np>\277Yy\311=7\000;>\250>\030?\2337\007\276\230`\031=\367\277\277=\\o\n\275\322\357\200\276-l\\=\232\264\027\337\324\214\275\240\335\221<\000z\213\276\246\033\355\276V\232\272\276\"kd= \220i>\272\247\326;\306\262\003\276p)\3177Bh\356\274uT\277=\374\262\307\276B\226\301\275\\\034\226\276+\361\030=\230\365v=\254\245F>G\313Q=\237\343%\277\'\262\205\275p9?><\274\267\275\r>\365<\017\345F\276\377\343\342=FV:>qV\256;\250\306\030>\341\023\331=\200\257\232\276G\007\033=\345\206\327\276c\0362=\021\255\200\276i\2062\276}{L\276\333\225!>\332\231\211\275C\014\231>\377k\316\275<\265\333\273\227\205y\274\016\316\260\275\\\224-=\354\332\264=q\265+>\036\355\213>\3249b\275\030\302\305\276\250\203\306\276e\375\016\275\2239\202\275\000C\006\276\354/~>\234\333\355=L91>X\221M\276\231\r\242\276\355\361\262>\233O\r>\020\030O\277K\264`\276\306S0\277n\201h>\003b)>\357\223\263\275MsI\276\303]Q>A\271?\276\267\323\023\275-\371\373\275\334\333^>a\031\256=\356q->\3205U>\247\\\307>:\254\341\276\263\370F>\tD\270=\307\027\007\276p<*>\2249\216>\\H\205>\230\222\">\265.9?\341\031\032?\361(\307\275\r\271\370\276_*\321\276\202\341t\276\250\006\234\276\260I\330\274u\257\370<(q]>\005\000u\275Su\032>O\276$>\000<\244>i\244\027>,\272k>\013)\207\276\206}\274\276f\216\234>s\273\332>\266o\200>\326]n\275\300\000Y\275\n\215\267>\0017\337\276\373\022\034>\365x\301\276\334Q\343\276\025+1>u\234\212=[\317C\276\246x\004=#\177\336\275\231\310\032>G5:\276\234\027\301\276\362\260\036>\361\356\t\276\316^[>\370T\216\276\326\326\361=\240\247r\276\336\362\315\274\270\n.>\243Fy\2768\225?\375\2318>\224\322\237>\001g\262\276\262=\332=\344O\264>\r\320!?>>\252\2767\240O\2776\370>=()\001\276\004\247\345>\232\007\210\275\234\312\330=\360~\016\275>\323\315\276\213\"\002>\2060\336\275o0\032\275\305V5>\211X\347>^\003\001\277]\221\227\276J\316l=\202X\006>\013\355\322=[Q\274\276+\374U=\326\332i=\364\232\206>\225\t\342\275&\215P\276\207C\263>\020T\333=z\347.\276(\361\213\2768\260\273>J\201\241>\216Z\260>)\211\246<\243v\004\2765\362u\274\346\024\244>1\203\256\276Mj\275\276\357\016\211\275\274\265,>\314\016*>\266j\263=\350\323\300\275a\210~\275\3066\365\275/h\275\275\3532\304\276y`i>S\014l>\325\215\005\276P\226\022\276\234\334\302>\352m\001\276\262\232=>\206\266\014\277\302\216\321>g\2427\276\304!;>\261v\243\275\033\242r=V\200\257> \322\225\276w\334\242\2756\2660>l\350\207=\300R\253\276\360\317q>(\212U\276\003\\c=\034\024\204\276+\351\377\276\324\325\251>\345\177\350<\0355\312>9I\006\276\335;\\\277X#=\276\323O\312\274c\375\037\2776\r8>%^{=l\250\375\275\0317\245\2762r\241=p\211\036\276\034v\035\276\005\353 >\251M\001\277m\220\320>lt\307\276>d\336==}\356\276\3670\257\275\231=\272>\337_W\276x\246f\276\213?`\276m\211\242\276\352\325\236>3\032n\2768\267\245<\357\262\372\276\031\361!>\202\237\335<\372\313Z\276\207\3603\276\221\204b\235\240\243\276\031\'\t\276\204\2424;\300\210\037\276\330\2773<\204\226\367\275Bw\255>\276\324\262=\353\226+\276\2256\026\277\244\242\016>\305U\252=S\316<>|O\030\277\037\357b\276c\374@\277\273w3\276\0365A=\362\357H\276Ite?d\361k>\203\303\217\276\357\376O>\326\2651\277\001\256K\2752I>=j5u=2\t\221>\356J\352\275\354\277\216>L\341\363\276Q\321\376\275d\302\023>\334\256\007>\316kh=\345\017\355>\317&\261\276\302\2437>\221\265\344\276\276\214\255=\343k\216?\t{\310\276\267\221\034\274f\033\326=\361\206\026\274\354d\374>\232\305_=\221/!?\241@k\276\333\365\333\276\014\307\330\275@\253\277\276\335\204\346\275\360\212<\2763\231\020\277\237\247\351>@\025\202\276\003\303B>\235sZ>g\206\342>\231f\204>\344\003Z\276#&\310>MCF\276U\257\374>\273L\276>\313\205\300>\277\235c\275q\021^\275\000\201\305=\367\301\351>\0363\336\275\205\214\235\274s%A\276\271\304I\275G\212%>\202aC\276_ND=\2544\264<\313;\314>\326\030\r?\232\362\315;\205e\177=\036SL>\225mg=Z)\024\277\355Y\350\276Z \032\276!_\277\276I-\002>Wc\340\275a\022#\276\034\001\200\276C\301\340\276\264\200\323\274\346\330\212=\355~\325\274K\226\006\276R)\314\275\372`\323\276Z1\354>\357\367\265\276\357\276U\276/\365\210>\030\251$\276\324\311\206=\025_\200>\256\352\004\276\351+4\275_t\026=\344\242F\275\036A\327=\t\313\277=\337\371\314\274r\274\232>\232E[<\316\276\3309\220\241!>hm\213\275Z\240\035>\303\210\013>D\026\223>\235\021\n\276\254D\202\276i\272\220\276\313\377\004\277\332\273M\276\370\013P\276|I\232\275\001\277g>\002)\253<>Ck\276\327\202\243=B\232,>\373q\002?\007P@>\201z\260\276\203\230\316>\224\\\325=/\340c\276\305K\007?\276\'8\276\241\277\303\276\021VK\276p\233O?\341\271\001>V+\260>\217\200\350\274\252K3\276\277\333\237>$L\330\275\371\350\321=p\300\343\274\266\r\237>\237\256A\275\342\010\222=\026\334N\273\213!;>s\317\271;\261\311i\276\337YY\275o4\267\2734\036\226>\320\365\000>M\3075\276]V\020>H&/>\375\354\017>\203H\264\275\340\300\314>t\312j\276\264\211\237\276[P\036\276K,[>\300}{\275\210Yc>i\301\331\275B\036[<\257\356\236<$\035\275\276/:;>\301\277\220>^\032\301\275g\016\014\276\343\224\357\275)>\277\275\361\024[>\006q\322=\344/6\276\005\301\301>\\D\223=x\256\240>2\312\213\276B\324A\276b_M\276x\004\227>n\254\303>\006\3054=/\334\002=\027U\024\275q\265[\276\301\265\237\276y\213\220=\360Y\221>}|c\276\347\246\215\276\265s\006\276\200\203\322\275n\023\355\275\243q:\276\333.}\275M\367\211>\2465\220\276\203\n\261\276\217\312\310\276\206lM\274\302\375w>#\305H>\000\232\031?\336?\214=1u;=d\321_>\371z\273\276\202\223\242\276]\304\272\276\213\222\005\276\324\025\331\275\324\tN=\021\017\255\276\312s\2249.\327\205\276(F\203>g\200\252=>N\024=\347\215\007\276\226\\\222\276%\227\307\276\206\221\242=\232v{=[\023C\276\366\203{\276=\233\006?\317\364\205\275#\226v=\013\304\237\276\337i\001>\200\234\226=\214\006,>\301\331fv\277\t?\272@2\276\332\373o\276\035\257\351\276\252\006\001\2752W.\276\201\204\363>\234\351\336\276\020\036\177>\275\310w\275\024t\t=\336\325\207>,r\212>\032\037\031\277\312\004\267>\362\2747\275\'t\'\276N\203\367>\037\327\231\276o\003f\276\361\375\272=\366\216\375\2762\2726=\327\317\016\276mm\021\275\203%\272>\260y\301>\206\021\222=\376\034\245\276!\307]>w\3629\274\301\255\023\275\220\325\337=\3466z>\016m\t\277\277L\304=Q\340[>hY\211>N\214\314;\333E=\276@\002\353<\364<\201>\353\254\244>\r\330\302>J\005\235=\314L{>yM\240>\201\256\225=\266\3770\276\2139\310\276\373\265\215\276-G7=gZ\303>\250S\'>,\"\352>\375\337\330\2755\214\252\275\002\335\241\276iW)>\214\032\307>\265\315\207\276e+S>)6N=\r\360W\276\027\314{\276\231\336\031\276S\267\032=\347\033\315\275H\366\240\275\327\2551>KE\232<=\376\330\276\t\307\026>a\177+\275\r\242\007=n\235+>M\265~\276\344\357\226>2h,=b6\276>\037Q\"\276\343nE>9;>>\273\3427>9\0017>\242y5\276\326\207\213>\256\215M>-J7=\253UW\276}\223\232\275r;\264=|K9\276\n\037\313>\235\363\224>\2336\206=\"\321\346=\315]\314\276*\211\345>]\325\201\276)8W=D\235e\276\211&\351>^Q,\276\313\336\310>\026\224\350=5\264\373\275\303\017\240=\247\312\240\276p\356|\2768\016\267>(\312;\276\022\353\t\277u\230\203>d\036\252>\307\277\273>\027s$>\346\'\033\275L\222Q=\3618\236>\273\363}\275h\202\272\275a\367\364=\335\244:<\3721\200>\216Z\204=\211E\021\277\373\376X>\315\231X\276L\212\234>a\n\207>\\:\030\276:X\262>\367\222#>\376RL\276\006+\247<\003\212\325>J\313{>\256@\255=\372\017\'>\371\023\264\276\2425\276\276&;\327\276\013c\t\276\245\350\201\276*\220\346\274\336n\271\275\n\261/\276\032\311\226\275\373\307b>\2459\272=\000\217\303>);G>\2735U\276U8$=F\211\024\275\002_d\275\351\272\313=Q\302\370=.\324S\276\031vO\365\273\236g\277\276^\r\260=`\024q\275\337\270\323\274\376\227E>\205\301\263\276\274T\007>#\260\325=\037\225K\276l\035\312\275?\232\214<\210uh>\240T\200\276\200(\230\276\362\020\003\277\036?\030\276\201%\213\276\014uv\275\225]\010?\361\236Z<\234\031W\27630\014\276\312\363\262\274\330b\361\275\277\201\313\275W)\036\276\242\227\213\274r\226<>\214=\324\2757\037\255\2757\301\276\276\355/<>\301\271\271\2767\025\300\275\206FC>\340\277\262;\206g\336\276\247j\371\276\257#\270>\370\206%\276\275e\202\275}\306\235\274@\004\262\276\215F\315\276\027\272\275>\344\354\n?\261#\002\277\000z\240\276\257\323\254\276BL\356>\315\324\006?\267\255\340>9\303\343=1\243\274\274<\373\254\276vw\014\276\321\305\244>G\010\203=\255\217+\275\374\355\370\276\035\330\303\276\202\374\025\277,\261\372\275\345\344\016\276I\217B\276Vf\337=\333\334\200=\210Qf>\2778\002>\211W\"\276%\327\306\275\033=\001\275!M*>8M\325\275\330;\273>\002\311\315\276lD*\276%\036\002\277\203\363\221=\342q\263\276\002\374\262\276{t\"\276~\376\003\335\2763\205\305=3O}\275\374\"Y?w\276\017\276\030H\200>\026\206P>\237W\027>^~\002>\317\366\016?\304\260\315=\230&\263\276\244C\254>\205;\007\275\010\203X\276\027\r\n\276P\261\002\276\377\362\313;\267\257P\276\317\267\353>Q\004\336\275D\2008>\276\2113>i\223\024?\357i\177>\022\024]\276\0241\006>\331\343\224\275\356\005\321\276U\210\036>\305\233\356\275M\006\232<}\214h\276m\016\334\276\'9\305>\266D\255\273x\231\260<\"w\251\275Z\020\210\276\014\246\330\2757k%>K\245\230\276\207\277\247\276\217v+>\274 \215>\001\367\360\276$\272\210\275Bm\325\2759\3722\275P^U\274c\002\360>\336\272\374>\035\332\351\276\003!\201>\253\300a>{\235o\276\354#\252>\272\032*\276p\3535>\022\363\340\274\024Gc\276R\371+>\230\"\253\275\342\240\366\276\027\373V\276\362\241\307\276}<\035\276a\227\266=\244\330\003=\227\303\351>\"\361h\276\215\366\346\275O\300+>i\240i>O\342|\277\\6V\2749\237\333\276y\'6?\240\226\'>\255J\r\276&\313\223>\267\201%\276f/\307>&\301\242=\373J\\>\310;\204>u\275\022\2753L,=\362d\017>rS\372\275\260u\217\276\031\036\335>\373\256\312\275\021y<>%\364\031\275\236\317$\276/\023\303>\211\006%\275qu\237>U\230\026?\2564<\276r@,=Sl\261=>\001\232=\261\370\303\276S\006\211>\227Z \276\347\221\204\276d\372\370>ce\220=6,\220\276\3131m>\230w\341=\027\371\275=\312%\265\276c\327\017\277\036h>>\303\013\201>\301M\322=\257pJ\276\323\373\r> \3639>j\022\025\275dT\301\275\202ld>e\364\000<\335l\021\275\326\247\371=9\205\003\277tr\236\276\255\3301\276\305\n1>\230\345V>\225\347F\276\237J\317=,\022\202\275l\315>\276\nl\206=\312\355\364=[\205\234\276\316\273\234>\306i\210\276\363\315\305>K,\003\276Gx\376\276GH\216\276\\\236+\276\2415\226=\217\342p>>\027\211=\0350\221=\315\013\004\276\200\315\247>u\r/\275a\310\365\274\302]f\276R\310s\276\317\n9\276\035\323\226>;\321\334\275*\372\232=\255\265\r\276Z\201\236>\3671.5\236\201\276g2\206=\213\264\357=\037\302}>\200\021:\276\226\226\234\276\245-\245>\010\036\353>T\312\361>k\254\360\274\034\263\034=\264\254\362\275\312k\023\275A8\337=?zY\276\n\235\204>\006h\340=Sl/>\363\266\\\273\207q\247\275\276\363\321\276\221\222\022>i\300\310\276\367]H\275%(_\275\276\327\352>\003\210~>\006\303f\276j]\347>\236G\006>%\317\267\275\333K\215\276\034\245\356>\212a\214>\244j?\276O\221\200\273~\246\006\277\223sS=\322\0212>\313\\\227>[k\202\276\251J\217>\032\366_>,\361\361\275\000\353\010>\355=j\275\033\347\327>B5\221=\006\247\304\275\270d\010?\004h\224\276d\372\202>\377\004\255=\353=1\274\007\217\210\276\317=\023\276\364\207K\276\020b\255\275\266d\021?y\301\334\275A\026\025\276\315h4\276\222\304\374\275Sha>\203\241\267=\250\022\205=\243&\244\276@\343\250\276\251\360N= \255\271\275<\023\225\275\3325\203\275\006\r4\276.\222n>\331Df\274\260\022*=\372\267)\276#\352\241=\205w\374=C\226\222>jD\303>\256\\h>\335\212\330\273\353\301\350>\2221\363\275\343\366q\276-\374\000\277$\013D>\253\336\034\276-\240\227>\256\234\255:\307%\223<\333y\365=^u\022\275\3211m\276j;\030\277\371\010!>\265X\007\276;\t\014=\na=\276\344-%?\311\354\004?\364M\301\276 M\362\276\252\373\016\277\207\000b\275\364\276\372>\035\004N>\234\203d\275\006\341\'>\037:u>\007\031\241?\347j\276\314\033\006>%\333#?b|N=\273\252c>\276\005\021\276\240\354\022\276\375\035 \276\214X\005?\251\'\235=\352\001e\276\253\256\177\276\342\215\366>\205\227\221\276\020\226G=lu\315<\315D\272\2751}\304\275%\014\357>/\373}=\326\260\267\275kL\307\276\312y~\276\206\023\220\276}.\262\276\\\327\251=\373\371\253>\377p\"=\354pG\273\322yp\276\372\001\234\276\021\335\331>\357*U>0~g>~4\310>\235\376\r?\243\021\353\275\205=H\276ZPX\276F\2753?\331\271P\276\212\017I\276s\262\n\275\\\224!\276\241D\342\275\274\017\203\276\222f\177\276\363<\336\276\355\230\227=\032\276J\276\347\177\034>\322\363j=xT3>\261\220\274\276\371\025\365\2758\252\305\275u\345\257>b3\227>r\225\247\276\304\245C==\201s\275\r\t\201>\374[\372\275\034\212<>\250G\317\276\352\213\020\276\266\202\262\274m\256\244\275H\241\337\275\364M\214\276\362n\227\276\354!\201>\365j|>\356(\370>M8\212\276\334s\177>\364h\215\274bb\364>wK\311\275\210p\372>\257\367\262\276\303\207#;\322i\032>O\0313\275)\004\361<\316\351\005<\326\311\316>\255&\007>\001\3649\276\310\222g\276.V\217\275\367\267*>2\226:>\205\276\013\276j\247\220=\356\330\000>\231*\';~]\237>r\371.>\026v\261>\252\376K\276\210W\035\276e8J>\2671\030?k\'u>\204\307]\276\272\rB=\004i\r\276\327\324k>K\365\257\275\360Q\223\276\001z`>7r\324<\253\004\303\276\030\375\307\275\261\022)>\231\326\300\276\263OU>Yly\276U\224\037\276>\370\302\276\005\376L>B\257\200\276\230\210\275:}\313\243=6\213l\276\242\345\003\277\250\342\036=S\226M=&i\275\276<\3112\277\323\223\341 =\014\277\255\211\343\276?\360\244\276\352\375\034\276\0133\213\275\255m\236>\254wV>8\357\306>\n.\342\276\220^\277\276\227)\207\275F\2262\274\344\372g\276\245\367\335\276*\'\226\275\214\266\204>\266 \306;\3166\006\277\006{\006=kl\355\276~\331\335\274\340\305{\276\207`\260\275\020\371\020=[\263\t?\"\026\366>\243\256\366\275\035\214\177\275\226@v>!\353U?\324Y\207\276\004M\022\276\327\333\365\275o})\276\nKA\276)\213p\274?\305\016\275\235\354\336>7\333\331=\236\002\274\276\261\367O\276\346B\240>\273\220\023?\177\\ =\200\233 \275\233K\216\276\330x\013=\346\274\032>qG\305\275/\222\220>g0\315=\221E\353\276G\206G>\357\254\223\275\003\004\032?\026\327D\276=\262\237>V\352\247\276\t\230$\276\363P5>_\275\242\276\020\2621\277\225\335\262\274\250\027v>\373@@\276\356\240\220\276T\3241>\2266\330\262\351\364\275\026\302A>\034+\205\276\\\022\342=\346\303\343\276\360\375\375\274 \302\010\277N\300\025\276_\376d>\373\t~\2769\203\253>g}\023\277\306\273\213>\255\231v>\356\316r\275\260W\027>\242%\270\276\010V\310\275#\020\221>$\360\277>\220`\r\275\254\022\300\275\010\261\027?\355\227/\276d\212u\275\262K\304\275\235/\210\275\337\341\272\275\311\305\026\276\306\207\204\275\346\376\236\275\270|\372\275q{\321=\0138D\276g\310\235>w\311\371\276\347Z\014?RNu>\016$w>c\255\031\276\356@:=\230\224->1\014_>\302[3\276W\013\343\276\346\016\363\275\325N\\\276w\\\266>\371\373P>\310\251\210=c\306&\276j%M=\017\322\036>\237\320\260\276\252\301\003>\230\026\254\276*.\360\273\200I^>h\314\352\276\312\323\214\276b1A>I-2\276l7\376\274\315\271@\275+W\247\275/3t>\331\241\007\276V\210\002?\330\002\037>\017\032\322=13w=\022\024\304\275\243:\376<\355\205<>\006\362\230>z\363\332\275B\217\n\276\027\3464>\027K=>\315\005\005?\313l\027>\332w\234\276\014\223\350>\320k\221\276\024\307\207\276\3721\241\276H\266%=\212K\226\276\270\343$=\032P\201\276,\345\215\276\221\216\273>\364V\034>\347\3417=7Bg\276\346\220\314>\351-Z<@F\255=\373\224\377>\275<-\275\264\017:=\273\200\273\276\362B\001>9\357\226>\254s\367\276\316\326c\276\374\333X\274>2\225>\315\333G>X\364/=)\341\212=\352\354\035\276\370=\264<\241\263X\275\372Cj>}e}>g}\325\275\014\254\315\274k\262x>\223\210\217=\342\362\272\275\330>[>\024\346\302>\022\322\355\276\236\203\200>,\"\372>}\310\377\275\217\340q\276\211-\207>\201\206\307\276h\220=\276\321$Z>\266Z3\273\005\225\023>\330%\024\277\306\252\026>O_\301>\324\304\243>\206i\036\276\313\223\361\275\202\356}\276\364\354\003\277\325\010\300>/\246\272<\0141\t\277\260\356\341\276\303\212\271>\344\3667:bN\311;N\233\255\2758j.\276%\275X\276\246\205\r>\206\272\306>\300\303\346\275\333\375?=\352\032y=\013\004\304\274\200F&\276\3669\361\276\241\212\322\274\027\222\320\276a\272\343\275\024M\002\276p\215\212\276>\3044\277\\\313$\275\337\242q>I\277\221<\365\215\r?\355\367y\275<\227\224>\2133\211\276}w\257\276$h\252\276\'\245~>\276\n\317=t\374(=!\037\025?\203\225b\276\341\257U\276\362J\307=\241\241\025\277\010y\246\275\212\326@=\317\333\206\276\\\200~>\343\366B\276z&\010\274\227\326\027>\323\007q>\270\345\272>\223\305N>\rE\312=s\320\003>\024\022\r>\177\003\031\276\240\377}=u\263]\276W\270:>c\354;>\035\233\211>\231\002\007\276m\270\020??R\224>l1\013=\002\317\202>\256\303Z=AB\212=^6\211>\017\343\001>S\311\223>\313\273\226\2765(x>\340\321\230>\005\304\202>\206mI\274\244&\356=\024\320\262\276@\206i>\375\323\254\276Xf\353\276|\207\264=p\360T<0\233\354\276\347\212\246>=\210\021\276*G\362>\311\374\322\276\240\tZ>\226^\342>}(\363\273\323Ti\276\364\356\237\276\235\227X\276\273a2>\337\364\035>}\311\252\275\226\\\373=\375|:?\301\340\260\274\n\257\013?S\234\353\275\006\322\036<\222\302\014=t\226^\276\270dG>*\272\">\332\317\266>7\335\367\276\235G\017\277 \273Y\2768\371\244>/{\036\275\356\2207>\225]\036\277\311\327\261>o\210\307=\347\200\'\275.M\033\277\327q\030=\244\323\204=r\203\232\276\336\364\260>b\206\242\276\265\222\350\275\320\277\244<\325h\230\275=\222p\275\277S\204\276`kT>\325\215\313\276\305\221\205=`\010\212\275\323e\205>V\356K>\226L\362;\237\372\361>\246\304G?c\006d\274!{\246\276\367\243\204=\205\267\332\274B)9\274\020\201\325\276\355\333\307\276]\264\237<\217\334\006>\2156\257>Z&]\276\242\343\356\276N\375\221\276\014\027\304\275Ar{>\023\261@\276\323\277->\321\200\257\275$>-\277,+\t>\017\243/?n\371\302>R\303\221\275\234zf\276\037\027j\276\345\326\217=\213\016W\276x3\204\274\261\242\035\277 \272\250\275 \217\326\276\235\232`?5\252\030\274\2647\010>1\325\247>\013WA=\3177\002\277\277h\350>\310-!\275daN>\312\364g\275\362M_\276\314b\302;\311\334\357\275\377\241\037>i\033!=%\214\026=s\030\261\274v\343\001\276\211\3056\276\265\315S\276\240\242\027\275\3773-\276<\340\355>y\362\356\274\275\250\007?\010\337\367>\375^%\276\353+I\272H\224\311\276\340f2\274^R\337\274\211s\251\276\024v~=\223\367b>\'\334\262>\254\004P\276\022\023\002\276\t\356\300\275\375P%\277\275z\334\275\217m_\276\302d\233>\361o\300\275UF!\275\"\242\366\274\371\2152>\202\244\263>\030\341+\276\356\202\346\275h\364\227>n\253`>\227\222(\276\001\232\031\277`\2471>]\225\361=n\362i=8h\245>k\206\300>\007NP\274r\376\024?\262\353\016\277\200mm\275U%\217>\331\216J?o\370\203\275\202\246I=x\370\262\275&u>>\330\007\200>\247\350\030\277+y \276G6l\276\322\031\251=\352\323a>Pl\261\275\234r\331>_\255\332\275\217\360\007\276S\261\375\275\001\272\014?b0\016\275e\331\005=\252\336\243\276\242[\322\276\213J\220>\035\305\332\275\364\265\244\275\270\365)\276\025\251\310\276T\305V\274\257\243\276\276=o\005?y\324N\276K\177\212\276HR\037\2761\251\262>g{F=\310k\t\277\016m\257>\277\0136\276n\375\203\275b\366V>\225\352\232>\232P\023\276D\227.>\264\251\357\275\177\033\224\275\263\246\271\276\277\035\177\276\377\306d>l7\007>\276z;\276\260\272V\276}RL>\001\034\255\276r\235X>\373\265\221>P\225\247\276a\214\233\275\353\030e<\023\032\327>`\220\215\276!\010\315<5U\034\277\223/\327>x\301\342>\332\363\247\275h\000u=i\006\211\276{\002\316=\003\366\034\276\005!\020\277\231:r>\335l\274>\006P\030>\351\300\223\276g\014\232><\230k\276z\252\016\276A*V>s\n\311\275u\321\032\276\312\240\273=g\026\031=\021\351\237>.Y\324\275\206\267\232>\250\204\324<\003W\207>\277\256\236>R,#>\364\033.>\rI9\276R\212\243>\0203\362>\335\245\260\275\367\330\016>\273\273\031\276\"\277\324\274\352JR?\024\211\215>\261\252g>\226\270\221\276\311\256\271>M\347\367\275\034\362)>\357-\211\274\240\371\326\275N=\031\276\177\357\274=3\347\245\275q\354h\275Z\023\305\276B\226\r>\037+\001\276\300\3230>\273\343U>e\353\353\276\200\323\270=\365\177\352\276\300v\332<\021\212\346\276\224g9\276\t\016\020\275P\031\231>\030I\301\276$\335\025\276\256-\234\275H\220\004\276I\370\031?\356\276K\276\3559\007>\223Q\037\277\326J\t?\324:\331\274O\016/\277\313\370\022?\226K\006\277\204\232_\277\'LT\276\311\233\275<\2577\264>%\254\210>F\275h=\251\345\243>\361j\367\273\301\327\251\275\r\275U\275\004R\003\276\242&\346\274\355\313\262=\000T\300\276\016F\004>\321\214F\275\224\246\342\276\257\317q\276X\323V\276\327\006 \276\307\002\260=\201\'\026\277\271\3707\276\224f\271>Q}\244\276@\035\215\275\"\025\307=\014G\361\276\341\366\006\276\364\026:?\013e&>\225F6>\304\335\343\276\263\240H>\204\213\352=\273\345\326\2764\306\340\275d7\220\277\342\275\233\276\255\000\246>\242:\005\277M\212,\276\030\312\340>\3251\375>\262\002\227\277\355\214m\276\001\342\234=\317\n\307>\217\177f\275z~\033\277\026E\207>\201T\207\276\023e\322\276I]\322\276\364s2>VJ\004\275\307@X\2767 \252>\004\014\021\274\'V>\277@b\n>\271\326-\277\201\267\302\276\277\026\261<\206\372\215=K\262\261\276\236\272-\276\3754\n\277T.\254>\276D@=\nl\206>\205\236\266>\217\2463>\343\225\345;\276\231A\275)\031%?n9\014>n\377\323\2754\306\223\276\032\007\364=\024\013\311>\357/\354>`\224\373=W\322\n?\013\347\233\276\377\n\226\276\315\200\312<\224L/>\215\241\034=r\204\017\275\312\030\343>\372\205\257=Y&2\275M\312\311=\361q\251\275z\310\313\276\376\237\001?\233h\026>\214\211\021\276gA\236\275\362\223\376\275k\317\366=/2\207=p\274\256>\r\027\270\274\360\033>>nP(\277&\200\360\275S,\312<\tg\363\276\3171\307\275\266\325 >\203l\222>]0S>\251\217\272=\005\300\030\2773\177\\\275H\317\354=4j\007?\325\022F>\2077\307=\004\035\266>\312\000\247=\370\245\014>\357\220\224>g\340\331=\331\362M>\345|U\2769\212\340>\017I0>\257\000\000\277\346\026\242=\274*\332>](\231>\312\305&?\220\330\232=\277\205\200\276\\$\345=\n\013\005>\003\240\341>Z\323\234\366V\270\276\247\336;>C\240\021\277\257\274\021=&\334\201\275\316\'\324\276\013u\260\275\363K@>\'\031\031\276\366\263h\276\207=*\276\025\212\215\276\010\330\007?Z\222\375>J>\331=V\211\235\276\332>r>F\354\331=\342\002\230\2760$\016>\364\320\255>\267\240\321=k\312\353=%G\204\276l\256\346\275\236\364\306>\206\232d\276\274\375\201\276\ry\322=\346N8>9\252;\276X>D>J\376\017\277\'*\030\277\344\302\210>\277\234\010\276\266\343$\276\345\326\215\276\220G1\276\357O)\276\200aH\276Ov\345\275E]\210\276\\\025\213\275Y8?>\264\217\232>]wP>\242.\263>\210\271\215\274\211*w>\262\003\004\276\336\262\260\276\001\300\321\2751\037\357=\026\265\223\276\222\254c>\3143\306>m\350\r>\r\210\231>\254\027\373>\366\344\272\275Y\210\323\276\370\026\273>5\263\300>\215\264\'>\251&\321\275\376x#;T\363\356\2765\027@>k\027\227> p\261=\211]\213\274\025\016\004\274\215&\020>u\026\366\276\021\336\273=\006\272q>C\206\">\221\262\246\276\277\202\275\274\004_\232=\233 f>R&\212>\373]!>\006\022J>\366\005\013>\316\326B\276z\030+>\"\371\347>W\243\263\276\014\270\\\276k{3?\201\226\032?\023\370\324>\330\007\375>\236\216M=\307\034\201\275\247\027\245\275\342g>>j\021\236>\333\tT\274\314R<>\227\370\251>\230\361\251\276bY\341>\335\375\307>\331\326\'\277\203f>=\310\322\271\276\001\204\252\275\324\257\230\276Z[\274>~\205\220\276\234\023\006?K\224\300>\\\275\207=\367\2521\276\243\237\001>\257}\\\276s\224a\276\025\314\023>\020\360\033\277\025\254\266>\t\200>\277\327\2453\276\230h\275\276\274\0239=RR}\276\301\337Q=\004~\247=\276\211\033\276\215\366\371>\006\356\314=-\313\364\274\231\tJ?\344\034\246\275h\276S>\354\r\214\276\362\221\233\276\017^8>\3224\247\276LA\240\274\310\017.\2760q\017\277\220\333\245\2767\244\304\276\274\211#\276fo\303>9\314\330\275\330\311\251>7=\253:e\331w\275\360\005\'\276\323\250\272\276V\"v\276\032\211O>\375O\361\276\255\270\367=\306b\036>\240N\331>\220\307\225\276O\346y>\311\207\032\276\363\361T\2753e\304\276\021\354\207\274\315\000\345\276\374z\206\276i\250f\275P\274\022\276\260]E>w\177\013>\030\224\316\275\274x\226><\024Y\277\317\351\344=\257\221}\276\270\2007l\257\276Q\354\n\277\242\312\235>U\024G\276\213|\034=l\331\253>\345Xg\276;\336\310\276\017\374\357=\0071\360\276\235\346\320\275\210bD>\303\001\025?\321\206\210<\346\t\003?1\270\241=/\262*\276\216\032\223=\220h\'>\336\302\227\276\366\2428?\351\207\271=\026\257\213>\252\365-\2770\211G?\212&\373\275\276Y\030?jf \276\273s\031\276\244\037\020\276\275\267\031?\365\214w\276K\312\311=\007]\336\276\264\346\004\277i\307\374\275\302 <\276u\r\305\276H_\245\276\226\344 >\371\244\024\277\340\331{\276W4\331>o\017x?\316\351H?\376\024\321>\215 G=\320\315\330>]\305\361>\307sZ\276\\@8>8\031M\276\336\335\017?\025\t\224\276#I+;\325\224w=\016\355\341\274\307\177O>\005I \276o\001\272>?\365\213>\224\327\336\276\nw\376\275\214\334u>3\350\003\276\350\230\264\275:\216\">\351\333\250>z\022\237>\205\207i>\246Z\007\276\346\203v=g\314G\276\372\352\251>&\003\234=c\0136\276?i\367\276A9\215\276\346\r\263=\312\006+\275GC8\276\344A\267\275G\245\220\276\275\200,\277!\177_>{\364:?\213S\276\276\347\t\350\275\303\315X\276u\025\306>\266)7\276[\007s>\240{z\276\001\300\207>\360%z>u}\330\276On@>\220\357\324\276\367\271\216\276,\344\220>\356j$=\004\022w>s\236\004\276 \033\263\275QK\244:N\n\001\276\226=\340=\303M\r>z\272\207>\364E\355\275cg\216\276\361\2319>Tj\264\276\023\324Q<\354#\250>\210\026\014\2777l\315\275\363$\265\275\006\226\022>\273\266\205\275\274c\217\276hN\034>\251!\013>\265\325@>\003%\260>\003&7>\010E\366\275\327\305\214\275B\271\341\276\023\325\201\276\337\230\216\276XKr>42\021>\300)\007=\t?\207\276;\372\303\276TW\024\276L\217\225\276\320\007\237\276-\300\331\275%\301\024\276\032\241\213>\242j\275=vG4?\315\004\344>\276\017\342\276\224\027)\276E\242m\276.\362\311\273[z\357\2760T\233\274\177\246L>2p\362\275{\230H\275\335bR=\212\373j=F\n\013\276\364\026\222>\377\375~\276\271r\022\276i\214\242=q\214\366>\331\221\">\254*\270=8\177X>\236\221\204\276n\300\266=\301)!>\\O\021>\346\240\256\276\\\221\222\276\203\201\017\276\365\267\353\275\030\272\311>\276cM=K}\220>\325\366\317=\3228\317\276\\@j\275\211\006\262\276\241\"\326\276\354\357\276\275l\n\337=GG\227>\200\033\000=a\344\207>\250\246\257>s\273\026\275\030K\232>\277\314\345=\207\274\201>\260X\037\275\334\007\032>\364\347\317\275\231\316\277\274[\307\017?\225\370\246=\221\313\234>\004n3\276C\2640=)\302\376=o{z\276\257\025-=\177\203F\275\222\314\005>|\335\217\275\264|\271=V#\336=<\271\"\275\374N\331\276\321\261\213>g\2740>\232\206%>\357\350\020\277^\322\027?\262(-\276n\'\r>\032f\213\275\224\023\032?\023\212\370\275\323t:\276[^\t\277\241\005V>\245\366\"\275*\327\337<\367\357\212\275\265\314\370\275\355\354A\276\267\275\226=\270\212A\276\\qA=&\221\023\277\317\316v\276\237\327R\274\340hk>\\e\304=3\351\265<+\376V\276\361\363\005Yg.\275]\227\274=\374$\000?\342\237\251\275U\005e\276\350f\231\276\001Q\223\276\'-\322>s$\">\226C\010>\315\323\210\276\333\032M>\312\021\t\276vb\254\276\032R\202\274\341]\332=!\237\234=iQ4\275)\n\221\275\335\271X\276\270\316Z>wU\347>\367m)\277\260\000\267\276\340\022!\276J\202!?\276\254\375<<\245T>\366\216\223>\305\247\347\271PV5<\274\327N\277\224D<>fU\223\274\316n\213\276\253\222\003\277i\334\007\277\327p]\276\215V\305>\354x\236\276$\213\016>\023\\\016\276\314\3260>;z\225\276\033\330\363>f\257\n\275\301\016\234\2762 I=\215\211Q\275\333\310\260\276\013\223p\275jk\265\276\323\022\221=\230\334=\276\336$j\276\n\326g\275V\373\230>\214\377$\277\025\236\023>\177\t\251\276\232\303\'?\023\037\240\276a\226E>\373\225\306=\014F\000>A\304\332=\223\345)>4H\335=v\315\330=\022\017\276\276\260T\220>Z\311\252\2763(n\276\213,\226>\367\323\365\275\342\003\220>\323\177\247\276}\344L\276\023\220\005<\005`T>B\273[\276\3677\026\2764\010=>\034K\302\276\"\030\363>\262-.>\262\221,\277\343\367Y\275\234u\232\275\222^\022=7\360R>i\365v>\322\345L\276=\244\013\277Ve\340=\245\010c\2767\257\237\276\231\210\260>E\305\334<\242\272\221\275\016ZX>\341x\303\2746u\261>Kt\250\276\260>\313\276\20580\276\346\346\003>\306H\256><\324\347\275]n\022\276\245\340\303\274\016\246M\276]\344[\275\270R.>\254*\311\276U\300\310\276\361y\262\276\271ZI>f\000\240\276R\324A=V\325\227>\265H\243>\005\377\006\277\024m/>\307#\270>\217o\317\275\n\237\333=\247\\\016\276\236\370I\276\325\013\214\276\303\327/>.\351`>_Z\234>\332<#>fV\206=4\321\216\275\206\224\255<\021`\306\276\210@\004>cg\276>\222!Z\274\3329\361=\364+\211>@PO\275\250\220\005=\263\010b>\362i>=\302\025\365\276\312\030\366\276\270n$\276\260\205\300\275PF\215\276\307VF\275\344\201\356>\\\241\202>8\341\227\276\307>\353\275e\230\223\276\004\022\216\276hx\206<\177\345[=o\256\005>N\273\240\275\375$\014?6!\252=P\2129\276\364:Z>*\n\303>)\304a:\271O\220\274\177\273\r\276\212\222\231>\005`9>8\347\024\275P\352\211=`\'\303>6\324\343=\365)\200=\025\003\337=\371\247\032?%\275\254\276O\0057>\202cy\276\273\237\037=z\335]\2762Pn>eO\237>UE^=" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/candidate/kernel/read" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/candidate/kernel" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/candidate/bias" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 96 + } + } + tensor_content: "?\357i>}\316\364\274]^c\275#\345\264>\322\357\356\275\022\242\266<\010\034O>\035\031\242=\177Xb\276\007\207\214>\206\035\240>\347j<>p\237\271\276\335\022\242\275\337e\227\276-\202\272=\325\303\017=\301\324\336=\346VO>C\335\242=uU\024\276s\370\357=[{F>\266s\245\275K[#\276\227\370C>\255\324J\276 i\270\274\312\221!\275?\231&>\036i\254>\224D\261\275Q[{>t\202i>C\374\236=\262\203G\276\004\220.\276\032\237\006=+\373\035\2765\005;>\235\375\'\276\212>\277\274\337\260\303\276\034\300/\275\320N\026\276\250\253\000?\326\271`\275\272X\312\275B\306*=\225\327\036>@\227d\276\335O\260>\230\317F>vE\243\276\206j\024>\000\003\274>\225\026P*\276JR\025\276#2F\276\372`\335\276\374\256\244=\177P!>\362Ne=\263\003\303\274\340O\264>~\036\243\276\200\337\t\276d\370\310=\220\375x=\026\311\300\275\347\000\271\275u}\355\276\370\236\250=\010\033\346<\332].\275]\330\205\276\350\254\271>k\327-\276\245r\302=t\253\021\276\210\341\313<\031N\215=W\277\277=]\373\030><\341\200<{]t>\345\256\336=\002e\363\275\256s\273\277\361\310\234\275(E|\276Z\022E<\375\366[\276" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/candidate/bias/read" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/candidate/bias" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/concat/axis" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/concat" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayReadV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity_3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/MatMul/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/gates/kernel/read" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/MatMul" + op: "MatMul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/concat" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/MatMul/Enter" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/BiasAdd/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/gates/bias/read" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/BiasAdd" + op: "BiasAdd" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/MatMul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/BiasAdd/Enter" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/Sigmoid" + op: "Sigmoid" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/BiasAdd" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/split/split_dim" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/split" + op: "Split" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/split/split_dim" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/Sigmoid" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "num_split" + value { + i: 2 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/mul" + op: "Mul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/split" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity_3" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/concat_1/axis" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/concat_1" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayReadV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/mul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/concat_1/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/MatMul_1/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/candidate/kernel/read" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/MatMul_1" + op: "MatMul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/concat_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/MatMul_1/Enter" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/BiasAdd_1/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/candidate/bias/read" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/BiasAdd_1" + op: "BiasAdd" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/MatMul_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/BiasAdd_1/Enter" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/Tanh" + op: "Tanh" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/BiasAdd_1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/mul_1" + op: "Mul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/split:1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity_3" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/sub/x" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + } + float_val: 1.0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/sub" + op: "Sub" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/sub/x" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/split:1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/mul_2" + op: "Mul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/sub" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/Tanh" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/add" + op: "Add" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/mul_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/mul_2" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayWrite/TensorArrayWriteV3/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray" + attr { + key: "T" + value { + type: DT_RESOURCE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/add" + } + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayWrite/TensorArrayWriteV3" + op: "TensorArrayWriteV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayWrite/TensorArrayWriteV3/Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/add" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity_2" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/add" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/add_1/y" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/add_1" + op: "Add" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/add_1/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/NextIteration" + op: "NextIteration" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/add" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/NextIteration_1" + op: "NextIteration" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/add_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/NextIteration_2" + op: "NextIteration" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayWrite/TensorArrayWriteV3" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/NextIteration_3" + op: "NextIteration" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/gru_cell/add" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Exit_2" + op: "Exit" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Switch_2" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayStack/TensorArraySizeV3" + op: "TensorArraySizeV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Exit_2" + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayStack/range/start" + op: "Const" + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray" + } + } + } + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayStack/range/delta" + op: "Const" + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray" + } + } + } + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayStack/range" + op: "Range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayStack/range/start" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayStack/TensorArraySizeV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayStack/range/delta" + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayStack/TensorArrayGatherV3" + op: "TensorArrayGatherV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayStack/range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Exit_2" + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray" + } + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "element_shape" + value { + shape { + dim { + size: -1 + } + dim { + size: 96 + } + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Rank_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range_1/start" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range_1/delta" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range_1" + op: "Range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range_1/start" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Rank_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range_1/delta" + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat_2/values_0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\001\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat_2/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat_2" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat_2/values_0" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat_2/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/transpose_1" + op: "Transpose" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayStack/TensorArrayGatherV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat_2" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tperm" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/ReverseV2/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/ReverseV2" + op: "ReverseV2" + input: "reshape_to_rnn" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/ReverseV2/axis" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range/start" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range/delta" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range" + op: "Range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range/start" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Rank" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range/delta" + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat/values_0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\001\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat/values_0" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/transpose" + op: "Transpose" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/ReverseV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tperm" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Shape" + op: "Shape" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/transpose" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice" + op: "StridedSlice" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Shape" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice/stack" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice/stack_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/ExpandDims/dim" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/ExpandDims" + op: "ExpandDims" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/ExpandDims/dim" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tdim" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/Const" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 96 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/concat" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/ExpandDims" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/Const" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/zeros/Const" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + } + float_val: 0.0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/zeros" + op: "Fill" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/concat" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/zeros/Const" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "index_type" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Shape_1" + op: "Shape" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/transpose" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1" + op: "StridedSlice" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Shape_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1/stack" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1/stack_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/time" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray" + op: "TensorArrayV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1" + attr { + key: "clear_after_read" + value { + b: true + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "dynamic_size" + value { + b: false + } + } + attr { + key: "element_shape" + value { + shape { + dim { + size: -1 + } + dim { + size: 96 + } + } + } + } + attr { + key: "identical_element_shapes" + value { + b: true + } + } + attr { + key: "tensor_array_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/dynamic_rnn/output_0" + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray_1" + op: "TensorArrayV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1" + attr { + key: "clear_after_read" + value { + b: true + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "dynamic_size" + value { + b: false + } + } + attr { + key: "element_shape" + value { + shape { + dim { + size: -1 + } + dim { + size: 96 + } + } + } + } + attr { + key: "identical_element_shapes" + value { + b: true + } + } + attr { + key: "tensor_array_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/dynamic_rnn/input_0" + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/Shape" + op: "Shape" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/transpose" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/strided_slice/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/strided_slice/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/strided_slice/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/strided_slice" + op: "StridedSlice" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/Shape" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/strided_slice/stack" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/strided_slice/stack_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/strided_slice/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/range/start" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/range/delta" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/range" + op: "Range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/range/start" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/strided_slice" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/range/delta" + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3" + op: "TensorArrayScatterV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/transpose" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray_1:1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/transpose" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Maximum/x" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Maximum" + op: "Maximum" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Maximum/x" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Minimum" + op: "Minimum" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Maximum" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/iteration_counter" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/iteration_counter" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: false + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Enter_1" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/time" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: false + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Enter_2" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray:1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: false + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Enter_3" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/GRUCellZeroState/zeros" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: false + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge" + op: "Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/NextIteration" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge_1" + op: "Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Enter_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/NextIteration_1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge_2" + op: "Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Enter_2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/NextIteration_2" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge_3" + op: "Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Enter_3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/NextIteration_3" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Less/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/strided_slice_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Less" + op: "Less" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Less/Enter" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Less_1/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Minimum" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Less_1" + op: "Less" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Less_1/Enter" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/LogicalAnd" + op: "LogicalAnd" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Less" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Less_1" +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/LoopCond" + op: "LoopCond" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/LogicalAnd" +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Switch" + op: "Switch" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/LoopCond" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Switch_1" + op: "Switch" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/LoopCond" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge_1" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Switch_2" + op: "Switch" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge_2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/LoopCond" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge_2" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Switch_3" + op: "Switch" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge_3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/LoopCond" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Merge_3" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Switch:1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity_1" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Switch_1:1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity_2" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Switch_2:1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity_3" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Switch_3:1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/add/y" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/add" + op: "Add" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/add/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayReadV3/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray_1" + attr { + key: "T" + value { + type: DT_RESOURCE + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayReadV3/Enter_1" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayReadV3" + op: "TensorArrayReadV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayReadV3/Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayReadV3/Enter_1" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/gates/kernel" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 192 + } + dim { + size: 192 + } + } + tensor_content: "\207\004;\276\355\360\241>\306\352\231\343\335=\260\355I=\262q\345>\244\023\252>Y/\366\276H\353\335=R\346\003\275i\305\313>\0302\256>\256_\314\275\275;C?\375\251\007?~j\243>\016\352U\276\334\013o>\267Y\315>D=\216\274\303\006\253>v\033\206>Q\256\004<\275I\263>G;\301=\321=\023?y\362\321>\214\0021>#\315\230\276\030l\210\275\264\350\247?v\323\031?\245_ \277x\004,?\262\036\247?}0X\275\206&\350=U\275\320=\016\n\335=9j\023>\300cX\275)\313)\276a\305\340\276\315g\036?\325~,\276\307\035\022=U\256\220>\210\367\025>jH_=++\252>\205\270N>\361\254\264>=\222|>\003\002\031?X\332Y>\177\3359?\302\355w\276\350@\037=\022\265\031?\367`\206\276\3244\234\275@\364\352>\263#\227>\007\016\323\274N\255\373>e}y<7/0>\337\371\316>i3\317\276\201\314F?b\005G\277\301\232\303\2769\202\n?Q\252\334>\032\247\213>]\330\003>\034\017\341\275-\022\304>B\253\227<:\006:?\241\264J\276\216b=>9\'\276:\336$\271>]\352\224>\363\372{<\345\007\212\276\336\"\334\276\215\262\366>Xu\024\276|\212\017?\216\r\024?X\276\316>1\"\021\276\203Gk>\3762\200<\352\236\273=\3151\347\275\307\021\027\276$KG>O\227\214\275d\241q>\342[\005\277\264o\317\275Y\246\352>\375k\016>!5\233\276;\336O=\271}\332=\343t\035\276&`\336>\222G\302>\2001\362=\2143\035>z\3729>\251\233\024?4\377\350>d|\n\277\253\004G>\245\314(?j\\\037>\207\361\244>F\3079?\317\363`>9\357\013?1\010C\276\213\315\316\275\004\343>\276\323,\360=\021\201\003>\302F\262\276N^\032>T\237Y=\003\311#>\324\003V>\204T\235\276\347\311\027<\n\266h\276P\225\361=\274{\t>\177\014\264\274}<\220\275-:1?u\2511\277n\314\r>A\214\267\275\316\203\326=\204\264o>\251\215I>\227\\\321;\246\343]\275:\213\311>+\274\232>\304s\002?\033,N\275\032\250\"?\025\360\223\276\340p\201\276\301\353\215\275`\305\212>-\320\241\276\251\303^>~=a>\227\336\r?\026\223\245>\230\"\344>\341\n!\277\252\373l>\257,\017\277\327\277W\276&\027\334=\273\001-\276\025Uc\276(C\234=\275\243\037\277d\343\034=\347\260:=\021\\\313>\007\026j=`O;;\357\305\274\274}\234\260=Dk\037>\307\201\222\275\273\n\n?\207\231\245>Q\277\234\274\320\346:\276:\371\241\276\373\350n\276\016o\013\277Y\245\277=H\345\265\275\r%d?\033\324E?\030\204j>\321\313&\276\277I\341<\234%u\276K\234G>\017\233\207>\336\024\020\277\232\314\217\276\232_\200>%\340q>~\334\302\276+\303s\276\226\036\007>\013X\'?\322ac>Ons\277}\340\272\276Y\306\002\277\273\365\\\277\202\327\037\276\234A;>N\'\266\276zh\247\275C\266\\=\314\0058\277 w\301\276|\246\334>b\250r>\226\016\332>O\225=\275 \000\311\275,\357\364g\377\360=\263\347\231;\375\226\332=_m\266>\335\262\t\276\354\346\220\276WG\243\276!n\'?\300\2352>\372\344\365>O\332E\274\262\213\276= \022\020\277\213\356\354\275\326\t$?NT\244\276\004\244\337\276\250\320\206<\010^\216<\031\355R>ETP>+\362\345=\276u\024>mr.\276v\224\225\276V\262B\276\'\333W\276\233\007\223\277_LW\277\250\201\340\276\331\202B\2751t\n\277,6\247>\325\352\277\2767\2771\275\213\252\343>u\216\373\276\266\324\035?\263\002\016>Uv\234\275\311d\010\276\303|\037\277O\320\252=\3623p\276\343\252\237\275\245\200B>\262\313\001?\021\372&=\356\203\333>\227Y\253\273\365X\203>7tK\276)\270E?\230\231\350\276\026<\005\277\217\320\004?~\025\231\274\344\361\316>\243%Y\276]\362k?\025r\023>\266\234\207>\221-z>!\303\255\276o\020\306\274\255\321\022\275\277\031\211>\372\270\317\274v\257O\276\257\306!?\250\271\361\276)t&?\235\rq\276Gv\021>D\0316\276R4:\274\225\3726\277\277}\245>\201\375\305>\242\313\351=\263\216o\276\221\310\267>\014P\242\275U\034%?\365\003J>f\374\001<\271\227\316>\327|\036>\341\313{\276\341\252\030\276\317\372\317\275\304\264\305\274*\260\255>\334\344\022?q\177\212\276c\272~\277~\270\010\276\001\022w>\344\372M?\363\326\315\276\207\036\036>\300~_\276\277\333\220>\374\362i\276}\000\270>~!\242=\343\275%>\016\244\326=\202\352\370\276R\327\236>\250\253\355\276\"M\306\275\034+H<\352\374F>\323\177\243>\266\213\345=\207\260f\276\361\275n>\374\324\314=\317\265\231\276\n\025\302>_;\202\276\276M\260\275\263\227/\277\213\025\357\276\r\017%\277\232\253\234\276k\001\222\276\316\270G\277Q\267\272\276\257\311[\276\354\263\207>\342\024F\2762A$>\230\2141>\375\364\361=$\033\014?s\362\236>\223\364z>]\374\210>Ic\335=\035\277\373>\264\231\211<\037\026\266=\2279\234\275\315\327\014\277^\321\245\276_0\270>\3435\213>\217\331N\276\224\300^>\275\323\303\275\267|\332>={7=\027\215\237\276,\323\004\276\367\372\245>\310\243\021={\321\326\276\334\r\034>\371-\222\276\242\001\357>I/\336>\263\241\006?\323>\246>?\317\243\276\177\230\t\275-0<=\\c\205\275\330`\354\276\367\013P\274%\351\242=`\245\251>\255\253\303\276\332h\000?\316\310P\274\273\251\226\275\3138\246>z\321\370=\'\272\241\276\214\025\236>gF\217\2767\350\217\276\365\005\256>\257\224z\2767(\266\276\265\035\234\276[\320\300\2763\\\n?J:\203\277)\001\004?t\253\334=\034\323\001?\000\252\203dTh\276\2250\212\2767\213\377>\027\037\001?o\321I?\tf\324\002]\002\276\306\304\334>@kc>\346\211\216=\007\272\036\277\205\261\000\277\370\234:>\330K>=\334/;\276\323.@>\r\223\201\274\025\253\242\276\370o\300\266\276\256#\022?\266Z\032>\263\363,>\037}\r?\017\253L\276\025,_\276$\230T\275\230;7>\312M#?\264\020\372=\030\300\220\276q1\303>\302\266\364>rF\007\277|\235t>!\022\005>\230i\351>\335\241\202\274\311]\025\277\3015\251\274eQ\027\277\234\000\257\276\323x\221>\306Q\237\276\204\334\265<70\023>\366\301\222>vl\336\276U>N>(o\376>6\202\330>8.\335>wvU>\340\263!\276\212\377^\276\'\256Q\275l\213H>\243\315\r>C\'\372=\212\270\274\276aX\203>\264\301\342\276\004\302\230\276\271&\013\277\315\233\\\277\263\355\221>K\207g>N\273\315\276\326\300\317\274\206V\200\276\255n\031\276\310\032\353>tY\237>\334\211\235\276L9\334=B\263B>\301Z&>\376\320y;N\323\006\277\0231\205<\373s\376\275\006\020\027?\264\010->\027o\364<\032\264\231\275\267\361\213>\263\004\017>\376\360\215>\217{\256\276\223\211\355>\372\347\325=\323\206\213=\017\307\277=\016\202\025\277Y\344\336\275@\304)\276\262\004S\277\205\010\223>\0348\030\276O\334\314>\306n\213\275!lm?#\3615\276\300\331+\276\211\251\325>\025\257\022\276\001Q\220\2762,\213\275FQ\t>-\304\031=s\027j>\221\206\353\275\230\246\274;Ow>>\245\342\222?m\210\254\275\221\340\271>u\340\245\276:$\213\275/(\007?j\215;>\377\2003>\332\233\022\275\207#u=\246\344\271\276~\250\246\276E%?>\262\2678\276\372\311\347=\261\211h\275\265\245A\276\274V)>\031`\236<\002\243(>M3\332\276\221\233X>\000\013\340=\270\324\307=*#\331>\254\253\355\275\301\220\014?4\213\334>\336\327j>?;\210=\n\023\220\275\345\213W\276\210Xx=m\036\263>\233\027\250\275\306\220\351\274\2302\261\275\345\221\177=\350\031\032=\313\244V\276\250\277\"\277\330\232n>\245\t\234\276Hs\262>\240\202\234\275\314f\261>\355/\343>\256\007\276\276\305\316\036>6oB=\331\327\r>\327\223\243\276\027\003\272\276\030\251\020\277H\227\342>\000\206)?\213\0225\276t\347\303>!\227\214>1e\351=\252\367Y\276\270\365\227\276e\343\347=\253\224,\277y\207$?\0011\330>\374\031\337<\361\3120\276e\274;?\255\265\300\276Jn\317<@_\247\275\026T\244>\374\364\307>:\212\021=:8\260>|q\334=\177H\207>:\010\356\276\013\251\005>^\353W>\202\302\003\276\300\013\371>=?\263\276\271N\362>\307N$\277F\352\027\276\000\237%\277\371\251\211>\251IC\275\022j\254>\313\223)\276[\313\266=gd\223\275\320M\263>(=\035\277)\004%=\216\370\275>4\032|>\333\275\307\275\263\035\t?\254\033\237>PQx;&\205\231\275n\370\275>\335\232\303>#\321\232=\t\317\214?\312m\035\277\311\361\212\276:+\266\276\375\217\030?dk\345>[\330 \276E\334\277\276\273\222\024\276U\356\245>\224\333\231\275\342Q\262>\347\255\215>N\3141=y#s\276\021\236\335\2761C\274>\352o&>O?\375=\256\243\346\275\2777\330\276\261\237??\\\344\020?\021\350R>w\357\r\276\241%\214\276\361\315\313\275\273\030@\276\027\004\013?\311\353\251\276N}3\276^6\005\276\226\032\331>S=\007\277f\260\001<\254\327\013\276\365p\363\276\007\213[\277\352\352Y\276\344,\307=\303\3324\276(|\225\276(p\301>Zu,>\336\251v?\001(0>f\333l\276$\241]\276K\322\221\272\265Re\276\367*\016?\007)\361\274\333\362\233=\333D\r?\2629\005?W*#\276\242B\014>\025I\017=w\202\020\277\301A8>v[\212\276k\333x>\277\327\235\000\307\260\275{\312\036\276\034\357\037>\002S\267G\270$\276/\320\264\276cv\303>\016\377H>\024\211$\276\2426+\276\223\371v\275\024a\317>\224\201\315\276u\332(\277\311\243Y>\346\331\376\020\276\231\275\030\002\">\240\030\254\276S\223\266>3W\211=\350O\205\276\344\002\005\276o:\366\271]Y\244\276\312r1?X\240{>\376X\213=\001\035A\274V<\006\277\214N?\276\252\305\n\277\363F\346\274\341M\256=\037\243\331\274p\n\233=\201r\240=\265\227\315\276\334\254\212=\264r\223\275\360\250\000\274PT#>\320h\252\276G9s\277QQ\035\276\233`\311>\374\333`\276\022y,\274\377\342\302>\216\252\002=<\225\240=\271\373\006?\321\300\037\277}\266\367>_\275\255=\2124\363\274i\275\330>\366\346\004?\357\225\016?\263J\206>\312\010n=\3602\334>\326z\211>\227\252F?\224\356\252\276\361j\312>n(&\276\214\203\224>\256\207\206\276#\200\275>\232\264N>\267X\033\276\326\233\205>\207t\177\275\203\274\021?\037\305\"\276@\2134\276\\\302\003>\207V\036\272cV\017\277ShR=\223\253\354\275\317\222\036>\357Z\255>\200\212\263\276\211v\242\274\277\245\306\276\330\307D\276\007{\212>\267\306\323\253g/>$\336\264\276W\246P>w\2330\277\343\213Z\276\310\236\315\274u\321\312>\033\013n>[lf=\357B%>;/\365\276\374\373S\275vFP\276\265\352\224<<\320\317=\331\001\206>\301\202\274>\331\276!\277i]L\276\251F\357\2760++>\363+\230=aO\'?\247L[>\244Q\223>\014* >7_&=\327L\261=\326\352\005\277\221\304\255\276m\217\354>ZE\205\276))X>\034\241D\276r&\207?\201\027\345>\027\001\374\276+\376\223>\274\245R\2753D\270=\267\251$?\023\235\256\276g\220\212\276s\351\271>JZ\271<}\370V\232\207\'\276\\\230==\240l\327\2750\367z>\212\304\024?\325+\010\277\320/I\275\275\371\360\276\003Z<=\207\2449\2779\366\033\277\221z7\276\216\303\203\276E\010\016<\362,6\276T~\236=\247\316\322\276\223\371\031?\317\331\357=\303\311\201>u\tR\275\367\014\205=\235X\273\274Nm\037=7\350\007?\252=\002?\266\245N>m2w\276\376\236\310\275\025\233\302\276\025\305\256<\353\037v=2\027`\275\235^b>\246\365K\277\372\230\340\276B?`>\301cC?\243\341\244>\263\320R=\247\225\225\275\341\320\377E_[>\350\016\330>\346\377\323\276\203\243\232\275\234\257\302\276\310\007\234<\201\366\376\276\275\027k\276Sk\270\276D\253*\277\002\200\305<\243rk>F+p\276t\026\225>C4[>)w$>\316vD>L\366\342\276@W]>\211\237\357\276\377\023N\275\344\267\276\275\212N\013\276l3\203>\264i\035>\336\340\024\277\374\360\006?MFw\276\204\366\r\277\356\3356>\341[N\276\277\345\263=M\010\232>u\223\226>\326<\226\275\222\247\332>@\261\232>\3305=\276\224M\366=\212\334\244>\257\206\263\275\336\353i\276n\343\353\276MT\271\276!\351\272>\016\257\026\276\221\333\241\276\003\027\277\275\371\333X>f&p?\265\234\005\276\227\312\304\276\331\275\014?\363\225e?\3077\222\276S\366\254>p!Y\275\223=\335=/\r\000\276E\242U?\211\007K\275\206\335\231=_kF\276s\321\027\275\273\026\221=\252\r\273\276\021\241\320=\347\020\300\276\211[g=\200R\217\276\204\214\361\276\273rD\276\000\363\023\276\016\202\320>WB\017?\372\236X\276\272\207Y??\213\255\276\005c\262>SD\200={R\240\2751\004\022\277\232\312\263\276h\027\225\276\232\233\014\276\210S\261\2767G\272\276S\323\022>CA\013?9\036\322\276xNs\276V\267h\276U\034;\274\273\243p=\370i\221\276M\322\000?\3509\324>\226\366s;\216\204\251\276&b6=1\226\253=\363\266\270>\242\340\276=\240\320\326\276RH\243>\223s\310=*;\240\276i\254\324\275d\177\375=\030\3441<\263\371\315>\014}\252=S\375\277\276\006\001\356\275Yv\242>\242P\022\276\372\\7\276\231\017\255\211\203\230\275\\\021\005\275\304\272\254=\240\365\023\277.\254\235\276fZ0>\360=E>7l\272\276\032`y\275\253\367/\276\345\013\341\276v\230\232>:\377\325\276r\362\037\276{\363\252>e\243\337=\370\374\\\276(\242\236\276\372n\020\276\002\262\031<\273c\177\276\307U\212\275\342\260\265\275\331\"\002>\234\207\374<\301j\267=\217\255\256>\373;\264\275\257\223\r\276\3472\351\276\374\255\375\2761h\206\276a\206k\276/Z\312\2763\314`=\0360\365\020\242o\275\275%\353\276F\001A\275\034k\226\274\206C\026\277\344\361\207=\t\341\274>\237\200\n\276\235\305\344\2768\250\307=E\254|>\254\333\014>H\027\362\276\212\3753={\0102\276\020/\272>9\216%\275\276\013\036=\0141)\276\241\236\241\276\225\237\032>\212c\261<\014w\215>\022\347+>mf\203\276\004\006>>\035\315\350>-q\215\2763\004\004\277r`\345=\332\003\337\276x\241h\275\327i\242\276\247\230 =i{*\275\004E/>\355\262\007\276o\274\344\276\335\316\320\276\033\220\324\276\267\311\237\276\025\313\221\276C\006\016\277-\246\253\276m\306\230\273\200=C\275+\0216>j\360#\275\211\255\366=\321\'\245\277=\333\207>`\234\235\276\207\311w\276\360f\340=\221?S>\216M\030\277_\240\201\276\016c\334=\0075\244\276\036\310\210><\336\343=\255\203\016\277\033\367\\\276\007\2509?\035.\027\273\3771>=\265\301\215\274\213\000\332=\351%)\275\244\267;\276^\360\013\277-\360h>\324\014\006>NW\212>-e\365>Y\010\232<\325\202/\276.\036\002\276=%!?\262\206\234=\001\020q<\032B&\276\215\022\r\276v,:\276gL*\277\336-g\276\\\000\000\275\024r2?S1$\276\224\334\371\274\206\312\310\275\021\241\265\276\236\253\246\276\"\374(\276\307gX=\322\001\030\277ED\205\276ux\177>V\360\242\276\242y^=\362\273\325=$\212\037>\251\242y<%\030\\\276\374Vd\277\035\256\\>\003\203\310>\025\372\r>)x\360>\375}\311<-\226\366>_ \'\277\005T{=W|\016?\3246\327\276\001c\257>\225\245\\?\3058\335=\375\315\031\276\325\304\003\276\005\303V\276D\231+>\034\2322?\324\310n=\030\n>\275f\223\\\276\272G\'\277\010\313\265>H\317 ?\336c\230\276iO\"\277\345\363\313\276W\242\236> \277x\275\177\276\277;\026\1774\276]R\211>\004\302-<%\211,>\301\360\212>\226\254\250\273^\377\323>g\230\271>\232\264\022\277\276G\010\277\2719\344\275\276\013\010\276t\000R\276g6 =,:\024\2763yB\277\235Xm\276\r\036\315\276P\020\035?A,R\275A\357\021?\2131u=\262\226g\276\220\350\027>\270\255\032=\023\'\024\276W\334\234\275z\r\244>\200\217\337<\334\276\315>\257\222S\275\312o:>\233?d>b\336\252>T\234%\277\360r\023\277\373\276\234>\262\007\020\275|\3415\276\2669\231>\2555\250\276|H\003?K\363\334=\274\336a>\035\326!>\022m\262>\320\316\321\275\314\000O<\372\365\335\275\306\301+\276?$\016\275Be\234\275\323\301\271>)}\"\277\363B-\276ij*>^_\006?\205_\003>A\014\260\276\002LK>\3723\245>\r\303\322\276\267\332!>2\263\213>\300K,>\233su\275\350\002\216<\314\016N\276\326(r=\312\233\301\276\366G9>/\364<\277\'\002\322\275$\261\327=\025Oj>\204\221g\276\036\365\225;\322\246_\276\001\333+\277\276\226K?&\355\247>\001\367\305\275 t\247\2765\361;>\3718\360\276C\333\002=\315\ty\276\034\326\231>+\354}\276q\332\377\275\307\327\343\276t\241\374>\017L\206\276\256\220\311>\246_\216\276\262,\006>\377R\247\274\"\377c<\027\020A>L\r\207=\033\327,\277\317\032\332\275IN[>:\233e\276\351\372\311\276L3/\277\300\352\367>Q \273\276\033\2141\276\n-\257\276\306\330\252\276+:\323\276g8\021\277Oa\245>)\325$=9\316\237\276;\313:\274\267\216\316>\212\005\365\275\211\335\363>\355\226I>\301\226\220>\217?\214>w\246\027>\216\1773>\341\315\235\275jJ\210>\264z\364>\245\256\312\276\375\221\313=\366)\266\276\3569i\276oy@\276\0015\266\276\017\223:>\264\316\355=\262\376\237>6;r\276\264\240\265\276\351\374H?KS\037?\255\300\325>J\345\210\276\301\2472\276:\255\353\276l\225\350>\366X\252\276Z\245\035>\224[T?\262\026\300\276O\2441?\350(\231=\220\177(=\253\265\210\275\206f\005=\370\316\022?\235\253H\276Dr\227>\364\2529>\022Da\276\3752 <\370\027\217\276\010\305@>\276\3164\277\365\275\273\276\256\373\245\276\276\033\253\275\242y\342=h\277c=}\204I\276MA%\276\342\237\272>\352r\335\276\267R\\\277\240\255\257\276\266\023\266>li\r>*x\237\276\346\362\277\274L\211\374>\2035R\276\221N\334\276\357bP>U\371\300>j\233\210>\265\337\313\276\201\3510>\236\366<\277\322\254\200\276\270\027\025\276v\314\305\276\256\2170\276:\355\004\276\014\335\020\276\013hW=\007\312\r?\362\232\266\276w\331 <|\014\214\2763\273&>^O\211>\366B\234\276\327\205{\276EO\005?\3627f\277\370\336\256\275\200\305\262\275\243\010B=\2458\'\276\310\346>\2767/+\277\332\216\033\275\221\016N\274\266]\004\277\272\277S\276\267\324\200\276xi\303=\332\226\251\276\346%\242\276\3060\211=3\002l\276\312\"\024\276,\300\234=J\216\206\276M\237\305\275\030\3303\277\177\\X>oZV>\221\236\333\275\211\364\315:7\212V\276\2678\365=\020\254i>\347\326\035\276\004@\302<\266%\213\274\374\272\212>\261F@>\315\225R>A\3007=\000cf>py\217?\316$h=\313\355\362\276\032\250\266\276\276\342\250=Q\223\274=<\271\236\276(\261\210>\354\224\016\276\020\007`\276\224\260i\276\017\374\376>[\233b\275\214)\351=C\323\302\2753\375\263=j\220\206><\213\367>\3730\275\275\333\313\234=\335qS\275ZDh\276O5\207\2765R\364\276\005\273\240\275T1<\277\376}\375=\001\241\266>\271\357\250\2751\"3>\241e\210>k\224\207>\245^?=\203e\004\277\276\223\234>\322\313x>\334p\314<\231\346\007\275\212\2222\276\373\201p>\317\331\034\277p\364V\275\272\005\212>\270\016\220\2769[f>tY[\276\220Zc?\233\234\037=\021\257\313\276\016\204\305=}\312\\>\227}\213>\303\376\352\275\177\212\207>\014C\367\274<\341a>\006{\037>:w(>\032g\347\276\265vi\274\26168\276\313\361c>0\223\203\276\374\340M\275\372\277\275\276\343\317N=2Y$\277YF\353=]\213\301>\253\010y\276-\341\023\277\246\2075>\227D\333>\241X\244>K\320J>\201\352\272\276\177\232\361\276o7\240> \013\265>L\273\250>\006\276\261\276O\375(\276\202k\343>\233Z\023\277\306\360\206\277\2276\331\276\262^\207\276\305\215\362\275\251\264\024\276L\332\210?\221\0069?N\241\216>4\262f\275\251g<\276\230s\374\275x\006\201\276G\232N\277k\rl\276\250\007\201=\240}\240>J\215\352>[\356n\276=\007\376\275\365\371\301\276\231\031\030>\247\035a?\274\3335\277m\363\313>\006x??\370\177\234\276\347\tL?4\257\272\275\312\367>\276\351\272\375\275/\264\267>\2104\374\275\243\351f?\263f-\277\021^V\2766E\202\277\005\236I\277\035\204\273>\031\360$\275\330\251\211\276l\305\312>\276\251\214>\374\032\343>xL\220\273\347K\302=)\242\007>#\r\217\276\307= ?\232\247\267\276\374$\035\277\373\276\256>\222\n\202\277\310\270\213\277NL\303\276\202I\271\276(\253\017\277\2458\321>>B\020\276r\306\241\2761\257\231\276\215\327O>-h#\275\334!\220>t\254!>\323c\210\277\371\255\307>\231z\231=\277\374Z>\254\362\331<^\213\301\276\243\320\216>\355\264\275<_\025\332>\355\327\327\276\026X\376\276\302\001\364=H\017\005\277*\216t\276?\235\t\277!\375\320\274\000-%\276\300T&\277\261(\267\276t\204\276=\230*)?8\227\251\276%O~\276\374/\204>\310c=\275\264\353\275=\315\360D\277B\353\004?\276V\235\275\022\240\227\275\251n\000\275N\334\001?F\265Y\276\213\302\265>\325\023\230\276\224\252\222=\205\034\213\275P\307\201>\363\316\274\275\326\203i\277\240\253\324\276P;/=f&\242Od\272\275ae\352\276\247\004\231\276\213\362\264=\337\000\364\2763!\346>\254\004\223= Y\006\276\000\247\200>\020\256\343\2754\210n\276\226\\O\276\243\232~\277\\\302\303>d\212\274\275H3\346\273,\251\267\276\200\244\247>\240h\312\2765\t\331\275\331E\031?\317w\235\276AP\370\276K\016\375>L\302\300=\0022\025?\200Z\244>E\277\014?x\300\024\276\'I\307>\0051\215\276\303\314\374\275\350\364\256\276\244\325J\277\006\267)>\0034\234\275\364c\206\274\323I4>Y\272\005\276\0018\350\275!\266\017>\357\030\205\276S\010\t>;\275\260\276\354\322G\276\267\006\216\276+\252]\276S\177w\276\214\230\210\276`\334\031?\347\312(\276\310}\223\275?\221\242\276O*(\276\031H\250\273&\2074\276\304\263N>r\265\234>GbT>\311k\036\276=/\266>\374\027\250=f\370\036:g\214\236>\264\374\262>}\226\215=\267\027\205>\312\032\027>NGj>z\033\205>\366b\212>w\233\033>I\256\224\276U\212\232\276h\231\356\275V+$>\231\013\024>\314\2564\276\020m\322\276i]B>\241\014#\276\227\t\037?\203\017B\275\300\271\030\277(\000\204\276R\355\335>\020b\241\276\353\345z>\274\034%\276\273\370\316>Y\014\021\277No\361\r\"\272<\203\346\006?\'Q\211\276\346&\014\276a\347}>\344-\002>\364_Z\276\315\324\251>\216X\277>\271h\365=\262y\341\276;\001\213\276TQ\312\275\226\r\007=\277\242\226>\333\017/?\277\r\252>\214\373\217=a\252;?\246\025\306\276\005c)?\257n\256>gr!?\017\320\214\276^\347@\273\326\252\274>\0144\241\276\002\257\"\277\267Z\255>\357y\003=\216\036V>\266\233\276>\021\025\235>\315\367\037>:\r\010>}_\374=>(\013?+\255\254=G\225\315> [^\276\233\370\214\275\222\022\023\277>\222\211\276t\265\032>\317v\231>\266\030i>\307\374b=\004\211\031\275\301j3\276h\036\004\277\323q\247=\337\205K\277\215\265\273\276\255\310\036?c\352D\276;\224q=\021|d\316\213\246>\026<\"?\212^\262\276\210\312a>\214\021\030\276\313i\032\277$\222\017>}C\320>\3209\020\276\330@F\276*W\000?\032y\261\275:\366\256\275\204\212\233\275\221\320\206\276\234\231\230\276Q\217\205\276t=w\276\224\236\217>\315\202\230\276\301E\203>\367\177j\273\345\217G\276\371\343:<[\345\302;\023d\227>\3746$>;\213\367>l\271\302>+\201\265\276@\346\271\275F\360U\277\325\3305\277[\025\023\276\246_\221>\032\3651>\315\202\006\276\255\340\373\275fQ\006\276\370\371\274\276\345{T\276?\002\306\276>NJ\276Y\256\001?(r\263<\"\001\216\2763\024\020\277\211\257\367\276V?\017>4\352\333\276\262\002\236\276\255Y\303\275Y\243G>\035\026\304\276\3539l= \206\274\275\001H\332\275&\273\200?\007\310J\276\367\252\177\276\2368J=f\0333\276\370\226I\277\242\362\324>H\201\232>\032\2507>\020J\222\276\'\343>>\376-$\277d\327\250\276\270\332\332\276\366\\\210\276\357\237K\274\020\037\304\276m\010\024?\324\336\036\276\001\351\021\277\006\367~\277%\025+\274\027\331\277>]R\217>&\346\250\305\"\036\275\341,}\276\256X\234\276B\331\213>$\252U>\363\354\237<\311\351\036>\021\021\000>\362\255\360=\356\301\001:G\353M\275\010\316\213\276+Z7\277W\006\253=\027\000\232\276\332g\232>o{\304\276|wS\275\010U\273\276\333u\275\275B\316\027\276@\003\264\276A\024\346>kK<\2761{]>\337\014\215\276`\023\256\276;\004\310\276\374\350\202>\351\315\021>\250\022Y>\234V\360\274!\037\220\276\010\274\227=\030\2458\275\347\273\344\276~\330\340=\270\374\250=\274A\"\277]\202\r\277\305O\335\276\373\203\021?\250\2439?\2337;\276v\243\035\276[\335\243\276\326\251\304>T\341\241\276\271A\013\277\025\235\357\275\201A0\277\324\031\275\2762\024y>\000\212\025?=\021\310=\237\205k\276\267Gq\277\335\360^?]\261h\277n\032M?Y\340\321>\342\260\333\276tf\315<\271\035\340=\363\357g>\314V\275>\234\310\337\276\241\026H\276d\270\263\276\371 \207=zF\341>#f\307\276\243c\245\215\231\212>\336\323c>w\213\306\276\022\020\321>2x\036>d\024\230\275\345\003\277\276\311S<\276\374K\247\276\215\3737?\271\001\251\276\311/~\277\267\306@=\r]A\277\244\014\r\277\010\203\332\276\330\301\302=\351U\332\275\255]\203>\255Q\323=\302\214l>\366\376i>\374\001k\276\340\262\013>\367\021\023?\341J\317>[\222\272\275[\256\036?F\035(=\007\342N\275fb\307>;\355p\276\340+\035?EqP?\227\230)>\231\265\212\276\023\322\310>\224\025<=\020\222 =^\213]\2760zb\277\233i\244=TtK\276\230\315\201\276=?\177\275a>\010\277;\272x>X*\352>\303\006\264\276\336_\376\275\3236 \272=\036\245\276*B\203\276&\000O?\257\224\304>=\323\242\276\301\357\204\276\361\006\016>\247\235\220\275\337\373\252>h\020\r\2768^\273>\177-\237>\233$\017\276\234\232?>[\313\217\276\356q\245>\220\246\032>O\361\274\271*\227V>\035\242\314\276a\306=?3f\257\275\r\371\370=H\271\324\275O\346N\275\255}\252\276QC\030\276%\232c=\026[)?\305\301\212\276\356\250\341\276Op\010\276\201v4\276z\247\227>I\314O>\005\002\224\276*B\'=\212\327\030>\301\250\016\276\177\326\367=\262gG>\337\244\235\275QAJ\277\0142\261>\240\203\334>z\356\276>\024\226\260\276\273_\312\276\215\355?\276\275\363\234>\356\220\275\276\206\270\372\275?\027u\276\341%<\275\207\020\276=\263\335\340=_\364\016\275\331\030\330\276{%\333>\2116G>V\237f>\376P\004\2777\340w\274\225\374\260\2755\337M>\t\034\004\277\313\341\372>\010_\206\276\246\345\224\274t;\325>\276\220\033\276\303\320\224=}\212\266>RR\241=^*7>\374\336\022\277x7\215\276\330[/?|\'\005>\217\375\336\276\270\261\013?87\361>\026\2410?.\202\346>\007\207\237>\377\345_>a{@\276\272\270\370\276|\363\035>\210\374\001>\017\236[=\02390>+`\345=\030C\242\276rV\330=\024=\273=y]\374=XT\344\276\'5\344\275?\177\003\276U\030\016\277><\035\277\224\010\257>\233\350\341>\346\006\315>\3065\">\301@\353>\255h\275>A[\235\274\013\002`\276\255\177$?tq4>\333~\202\276\006C}>\260\256\325\276>\202d>(0o>\241\276A?f\214k\276.\213\246\276 e\037?\230!\311\275\025\022j>\241\017\377\275\305u\246\276T\261\214>\300Gb\276-\365e?\306\204,\277\370\020\222>\260\030c=8m\226\276\202\202\002\277`\034b\277\236\010\364>\300\025\265>B\250\236\276\365\003\304\274\261s\275>\237\240\255\276\004\311[?1[m?\213\215\034?\035\227$>7\035\210\276\322pt\276\214p\203\275\275&\010?\243\206\340>\331P\000\277\032;\240\276\346\235\r\277\242\207\367<\3175%>\224\002\004\276U\004W\276\223\257\301=\016\036\206>>h&\277 u\027?\350\363\240\276\003\216\254>0\332\002?\323\270\216>`\264\345>\3111\264\276\334?\201\276\322\025\344<\363\334]\275K\370\317\275\247\266J\276\320A0=#\206\345=\336\'\275\276R\351s\276\256\036E<\003@\272>\226/Z>\315\201\216>\323\300\264>\272U\262=\3034#?4\262J\276D\304\024?\346\2236\276\241\226\323\275#\225\206=\001#\207\276\277p\035?\3017\311=\305\357\272\2763\024Y\277\'B\275>L\205\226\276\177\377\224>kF>\276\010\230>\276\211L\004\276\337\032\366>?\203\035\276\207\027&\276\010\241\225=_|\363>\302/\"\276\221Z_>J\364\221\276\234\353?\276[\331\337\276\n\367%\275\003\373\312;B\372&\276\220\031c\276\251\317\035\275\032\001\201\277/\021*\274\202\004\375>\t!X\277w\302E\276$\360\005>\350\212\205\277\363\001\355\276\302[T>4\343)\277\326\226\005\276X\241\266\276K\006\307\276\206MB=\232\234\353\27401_>\302`\345>\220.I>\322g&\277n{\023\277\342\240\274>\307s|\276\246\027f>\025\333\245>\234\247\253\276\371`\340\275:\354\031?\225\013\325=\256\251d\275\253}\263>\030\357I\277\017\355\035>B\234G\276\325\372\364\276\207\246+\2776-\273=\236fI\276\216\025\016>\257L\246\274@\237\037>\2040\242>\031\267\352\276V\237f=/:\354>&\336\234>\253J\335=\210\312E>n\210\340\275\205\276\275\276\366Fc\277b\253\025>,!(\276Ls\366=\235}X>@;]?\377\273\274\275^;\315>w\231\254\276`\346\246\276t\246(=\031K>\276\267pB\277H\322\353\276\355\036N>o\231>\274\021A\021?\242)8<\322j\202\276\026X*\277\355\223!> \306Q\275\202)\313\276 \275\004\2772/\254=\216\236\333\274f\356\014?!\326\221\276\n\366\025?\260\371\034\277bI!>I\357#\275\026;\363\276l\310\254=o\373\232\2758\246\352;6:\030\277\303\231\246\276\255\201\341\275\262Z\273>\024\370\374\275\020\000p\276:\317\000<\020\365 ?XbE\275\016\366\007\276vE,>!m\253\275\367B\037\277R.\321==I\257\275\242O\204\275(\210Z?\200\251\277>\310\316S>\017{\021\275\226\2131\277\221=\264>\330YK\277f\310m\276)\3147>kk\330>\3000d\276\217\\\001>\2251\222\276\232\260\013>Q=\265>b+@>\017-\332\276mP0\276\270\035\253\276S:\363\276\316\334\302\276,\366/\277\273\001\247\276J\016i\276\243\212P<\361]\200\276\340o\016\276Ta\255>\337\335\225\274\022\213\321\276\312\251\263>\362\304\025:\326\373K\277\313\217Q=C,\256\276`\000 >\223n\262\276d\224\037=\016\347Q\276\025cY\277\370\233\206=\247\375\014\277\231\211\014\277n\2423\277\"\272\306\276M\250\265=D\206\337=Q\207\331\276Y\030\303>\204$9<\271\222\025\277\357\312\304\276Z\227!=\037\204\346\276\352\030\315\276{H\306=e\350\210\276k\030\217\276\327i\304>\352\276/>8\330\006>T\223%\277\260X\252>\323<,?wL\366\276\367uc\276-\257\366>\310\377\010\276\337\224\354\276\\D\333\275\247\325\340\275\nZ\320\276B\252\304>\227\"\345\2755*\023>\263\257\262\275\260\262\230>D\317o>\234\252\276>\257\247\'?x\271h?\362\374s\276\225s\256=\267b\242\276s\317>\275\274\357\231=\216\323\276\2326\267\276\ti\212>f\234\326\275*G\340\276\'\261\254=\312\216\236\276\2416\275\276g\"O\276\'\224\231\276\210\377\346\276\3132\"\277\253(P\276\276\363\345=]\355b>\303e\263\276\257\212\220\276]\026\204>a\243\231\274\031k\342>\335\277\350<\301\242\'>\333t\001\275\252\377\344=a/+\277?\323\337>a\310\272>\332Z\211>m\243,>\324\375\206\276y\263\273>|2p\276\037T\227=\374i\326\276\365\274}=J3U\275\203\026\027>\020\020q\2763&e\275`\215\335\276\016M\361\276\246~\000>Hc\256>\033H,>`\311\214\276\307\277\201<$\365;>\321R\005=wy\004?\265=\311\276\304\217\217>n \177>\275I\017\2779\000\356>O\325\232\2761O\016\274=\226\034>&3a\277\202\034\257\275\ro6\273\251\361\360\276\354^\346\276;\356v>\272\220\000\277d\377c>km;>$\301K>\"\017J\276\010\272H\276p\312\354\276K+\277=\020\366\017\275L\306\312\275\322P\230>P\345\272\276,(\034>C[\266=m\001/\276\013.D\276p\037\353\276\241N)=\237\203\373>\275\323!\276\324\375\r?\3138a>oC\002\277\307\3371?4R]?\033\254\330=\364F\306\276<\231\311\275\204\206\276\275F+\346\276w\357\331:ph0\276p\261\237\276\206\241=?;\221\217>\352\264\235>\343\321\372\274O9[\276h\330\000?\000\201\'\276\246\327,\277\370\222\031?\210P\342=\371\007\201>\236\"A\277dZ;>\357\361\013\276\30663\275?@0\277O\362\222\276\265d\206?\236\241!?dz\021\275z+\023?\264@\243=z\234\001\277\037b\277\276\212\347\234>\014\235\372=\261Cp<@E\036\276\267\262{\277\373t\326=\005\"\243>\355\r\211>\330\204=>D\003p>\343cv\276~>\026?\3052\316>\333\234\375>\245\253\023>{\344\321\276\0339\345=\031\316F>I#q\276\035\240\257\275\353\000\212\276\177b$=\240s\023\277\360\312\241>\371\340\241\274\214\273\232\276\362\213\267\276]\0162>\017\033W\267)\234\273\317\215\231=5\352\263\276\315\203\245\276\013{\263\276\370\331~>\303\252z\276\356^\234;\225\001\362>mt#\276\006{\267\276/\216\242>)\023\354\274r\316@>D.\032\274k\206\024\276\252\335L\276\346>h\276\237\001\336>\201\233W>\202\006r\276\274\010\267\274F\335Z=\377\277\312\276-\000A>\224\202\264\275yc\355\275v\362\034\274\002@\212?\001UK?\0237\250\276\033N\001>\366.\255=\346g\206\275\364\250\216>\2605\303\275\352JR=h\237\207\276\355\305e>\021I\221\276YF\037\276=\335\340\276|\232\321=v\207\026>\037\020)>\003Y\010\277\3263\023?\327&\276=\371f\265=\316D\370\276\236\221]\274\301\202x\275d$9>9\017\227\276/s\177\275C>\004\277\222\030\217=\201#V>}k\210\275\367k\206\276\344?\315=Z\222\255;m\366\257\276e\n\033\275\357\341\326=!\325\220\276\324\261\305>\245\027\223\276*\313\024=\253t\233\276,>\262\274\035\212f>\035Q\014>\236\023\326=*\202C|\304\225\274\320\017->h\214\314>=\357\234\275n[\326\276\362\307\265\276Z\240\234\276\3625P\274q\272\341=\317\371\\\276\340p\350>\033\325\226\274\271u\301\276\210\255[\275>\307\210>X\332\214\274\271\252&?\351\213\347\276\256\001I\276\001\251\223\276\365\352q\276\203\364\307\275\375\333\345=,\032=\276\261\317p>\332%\024>v\220\243>$\226\324>@\035b\276\253\202\212=\340\375\365<\252\231\030?\353\326\322\273;\324%>\313Q?>&\354\271\276\306;$\277\3712C\276\306e\341\276\355Lg?\001\302a>\224f\t\276J9z??\207\207?\017\022\376>Q\341\322\276y\025\026>`\262\236\275\020\025\000>nM&\277\r\247\030\276\342\357k\277\315\356\037\276G\271\245\276\262\260\330<\252\344\255\275G\201\315\276\021\213\234\276\020\3748\277X%\376\276\022\0021>H\253\322\275\211x\014\277\024\214\340\275Pc\271\276\261\245\377\274\211\254\363>\025\330\225\276\362\342\234\276\010\267\317\2763X\257>\014\356 \276\301\305O\277\245`\255\275\215\213\037?c\320\021\277\223\345\211\276A\270G?\343\300\230\276\376)\251\276\347\235`>\334\255\265\276d\237B\2768\317\332\275\336\321\020\277\220\022\003\275\"\277\330\276NK$\276N\003\027\277\255\326\016>\252\3000\276V\226R\276\346\031\310\275\356O\301>\225\216\023\277\24303=:\215\031=\315\227[\276\257\021\255\275\373\223\021\276\264\035\341>p\253\253>\265\301E\275\"\017\374\276\202\316Q\277\303\305F>d\242\014\276\261=2>jUX>\206!\244\276\005{B>K\355\254>\303s\314>\243$R=\267\270\273>\34244\276\275\367\026\277k\235 ?D`\033\277_\247.?@O\332\276\037\211\251=\223y>\277\3129->\253\303C\277\372>M\276f^\226>\310\200\226\276\0168\027\276PZ\274\276\232f\007>\367rx\276\307\340\r>-y\005\277\205\326P=\366\224\004?E\307\250>!\267\316>>\321%?\227&\243\276\221B;\274\220\373K\275\330\204\226\275\0009\345\275:U\363\275%\373\306=\376\003\n\277D;\n>XX\320=\006P\010?D\273C>%\216\225?\347n\366>\361&\321>\010\000\242>\006\372\231>\274\316\217\306i\306>:\026@?\"\030\010\277\222\311\337>.\257\316>:\010\357>\360_\217=vs\013=\205\026\214\276 \311\034\2759-\271\276\203\200\341\275\377\310\276\276v]9<\016Z\276=\374>\326=*1\006>\023\022-\274;\235\026>\336\211\246=p\0265>E0\025\276&G\000>\231\310\302\275y\r\313>\362\324\277\276\232\321\031>Q\255\214>\noY=\306@G>\214\t\002>\317\325\304=\206\317N\276\211t\302>\2718\313\276\300\361\032\276*\333\034\277\333a\002?\364\253\336\275\001\033\206\276\227\236^?y3\324\273\021F\372\275\345\276\037>\303\214\017?\232\263\314\276\271\031\230\276\032\223\220>;\203\357\276\2344\306\275\352\377\302\275&\261\250\275U\240\230\275 e\343\275\344^\211>\203h\324\275\224n4?\271q\242\276ck\305\274\026z\317<\231\005{=s\370\270>\260\233\256<\312\314\216>\311\013\371<\253\252\n\276\303\246\200\274\350\205/>\244\263\353<\342D\033?\007\322W\274iM\374\276\302\026\206\276,29\276;u\311>\340l%\277G\235!\277\364D\212>\301\327\021?\ryH>/\273\247>\370\020\273>\231M\002\276\"\3732\276\272M\326>j\237%=\242\353\032>\341\212\210;4\004\242\276\320\210\n\276\3520w>y\3638?]pu\276\217\206\360=\321r@\277\361\026\253\275g_\230>\203\217\206<.\274~=6\267\265\276\271\200\274>\'zs\276\035j\304>=z\t\276E\236B\276\n\223\030?d\355l>FX\312=\276\025.\277c\261\010>e\213l\275Je\266=\323\310Y\276\264\000\226\276w7\264\276(\261\t\277\020`G\275K\'\370\276\352e\270:x\214\207=\261b\001\276\177=\333\276\310\263\255=\312\257^\276\312\025\374\276\335ol>\002\355\033\277s\031\302=\264\354\023?n\327\'?z\243\221\276\245N\262\276\310\213\000>\236\237\357=\016\301\363\275\273$P?M\255\017?\340\226\350\275\347\213\274\276\273+Y>\352S\320<\276\"\202\276\270\223B\275\032\"J=\231\333\225\275\255\201\270\276\031\\\032=\215/y\276\360f\214\275u)\227\275\007cM\276\251c?>\267\027\035\276q\203\035\276\310\231\344\275\376A\227\276\266\317,>\360\275\246>|/\261>\013\033\024\276\363\211\261\276\022Ec\276\365\275\305\276z\357\023\276\274T\366>X\010\020\277\373\364\325\273\311\246,\275\370\355\000?\366\312O=P\014~\276\216-\257<\377\263\352=\t\323*>cr\016?\372\357\310>\016\277\211>\261:\263\275\t!\007\276\217\262\023\276\370\305t\276{\230\233>\2639\316\276A\362\374\276b\332/\276\225%\370\275\304\257E\276)\030\377>\022\364\312>n\372#\275 S\017\277\\\222\344\275q\351\220>\330\026\263\275\201\304,\277\035x\036\276\024\207\224>\034?\034>\252\373\350=\0252\360=#\\\273=\257\250\215>\235\350*>3=\003\276X\316W>\333d\232\276a\337\024?\345\231\200=\247\343\250\276\204\231\246\276\273\314\205\276\350\276\376\275z\272\353\276\265\214\263\274\'k9=/>\220>\245\203\307\276\230Y\213=\355g\332\276\347t9\274\230\244j\276\210\260\272>\344\310)?\302\327\366\276\311\243\322>;5\224>\032\326\032\275b3$\277\337\0049>\361\037\200\276\026\330\256<\315\223\n>@0,>\363\356\017\277\010-\267\276\277\022\242>\267d\222\276\237\207\357\276\253\360\347=\302\254\270\2759\t\264\275\232\030(\277\235@\307\276\271\246\362>\222\304\t?3\3655>\3455\325=A*\313=\2549O\276CoD\275\332e\231>@\274@\276\262\027\201>\201FI>zX\210>\3718\313\274&\357\246>\n\221\251>gK\274>@\024\014\276\237\372j\276\207e\365\276\372\202\336>H\350V\274B\317\316\275{\221M?:\345\000?\224\200\240>4UF\277\240\\\274=\'\035\010\277\001%e>\271\271X\275\264\027\017\276\226\311>\277\353Z\347>\344\314?\276\034\357|\277W\344\005\273\270Q\370=\3620>\275\0375\025\277(\213\220\2766\001\316>\003r|=\311qb7\346o>t\267B\277\3255\350\275p\363\023\277\023W\231>|\206\304>3E\256\276:\"C>\201\350\342\276\206\372\207>\312\210q\277\260:\264>tC\312\276\274\357\312>\242Mp\276\351\225i>f\n\231\275\3557\205>\202\003\266\276\341\321k\276\234S\374<\224\203/\277ig\201\275\342\370\206\277\200\313\277\274\332\252\025\277\361A\236\274\370\211\223\276\217}\222>\211\342\343\274\365\254\000>v\014\023\277\250d[\276\276n\213\275Q\230\364=Is\036\277\204U\355=\257\376\277=\320.\345\276\023;\333>\215\377\014>\375=\025\277\272G\212\275\351\022{>po.\277\342\212\004\276\244\027\023?i\241\216\276\177\036\320=\025\376\233\276\267\332f\275\374p*>\242\374n=\207\036|\277\023\355\004\276\350H\003\277\r\030\377=\246cK\276\347\223\271=\357\033\214\276\020 \250>\251\264\013>\312\362\355>\260|\344\275\212nM>WYc?w\307c>\356\272\014?5\t \276E\370 >\361|S>J\324\312=\213Z\037\277\331\322\320>S\365V>ZE-\277?\314\200=\337\326\214>\314\224J\275Z\262\317\276\330\212\372\275m\021\022\277?\341\301\276h\212\250=\251\327\257=\337&\307\276.\036\263\276\266\210\024>\346\256\233>68\322;\204\214\022=%\321\217\275U\310\027?\322\312\013\277\366l\245\276N\315\355\276\320\225G>*\350\217\275\244\331\325>\ta\010>\244V\272=\216@\270=\277\0106\276\030\037\010?\236\267\264>\207\375\271\276w\323\264\276\242\017\200\275<\010A\276`s\020\276+\316a=\240\235\211=\364\340\251\276\226Q<\277\252\370\210\275\223G\312=K\270\322<}z_\277\034E#>\207\206\031\276Q3A?P+\244\275\247\256\252>4>\214\275j\014\236\276\024V\235=\320xw\275\336\341\r?\310\221\014\276v\240\272\276\253\"\213\276=\312\236<\366\006$>\330=\242>\377y\257\276x\255\200=AF?\276as\366\275V\251x>9\325\220\276\365D\001>Za\014<\254&\252>\364&\016>\324J\257>)\335\371=\276\224\233\276\301tk>0mG=\005\2734\27601\232\276n\3509\275\221k\026>\345K^>x\203\214>\221\365\001>\352Q<\277\377\024u?#H\356=\3258\320=i\nA?\025\317m>L*\230>\023\347\r\277eXW?\035*\207=&\321\215\276$\\\373\274\216V\272>\342my\276\243\235\234>\216\225U?\"\321\371\276\335\231\341\276\346\354\200\276\346%\030>,\302\221>\377\337\205\276\221n\200>\006\244\364>L|?<8\244\311\273\367\002H>\271@\235\276&\243\033\276SK\006\275\257\315\352\276\276\246\335\275\006;\213?,\031\177\275K\0219>\250\363\334=\3418+=\217K\317\276\204\363\337;l\350\326=\0304\217\272T\375\210\276}J\300>\'\033\273>@v\265\275j\200\004?\353\013\303\275\266w\207\276\225\2249>\264\351\307>\312\037\003\27716e\277\260\322\014?\217>1>N\232\224>\241\025\333=\257\276\310\275eo\306>\227\276\353>\257\210g\276\351\257\221\275\235\005\006?Z\212]?\277)\313\276\275T\035>\002\223\021>0\237\023\277.\252\300;\233>\263\276\221\r\323\276\336\210x?\341\212\306\276\271B\177>\034\203\324>\234\t\032?)\226\263>\253\333\351\276&T\004\2756\277\232\275\344)\207>Z\245\346>\250\316n?\334Ck=W\354=\277\250\243\241\276\'\006\203=)$\272>\022\2702?OX\331\276\377\020\320\276\304\007|\276\354\326\242\276\005!\212>\202\n\313=\370.\210=\226\323e\276\356\022\014\276/\207\336\275\275\322\032=\306\225\365\275K_\370\275\207\335\033?DBj>1\274\302>\365\264\220>~\326E\276\370\236\330=\275\267\350.\277\256>\331,\350\276\\\217\313>\343\353\253\2759/\r\277\254Q,\276vOQ>\220Q$\277G\320\230\276N\343<>\222\350\220\276.\340\347=\346G\005\277QK;\273\"\003\244=Q~\270>\374S\374>\377\340\237\276\003\217\007\274\351\034\020>Bo\004?\224s\020>}\007\233\276z\305T>\3435\205\276\025\002A\276{\026z\276\363\366\211\276^\377\377\276\214\211\224\276\345\022\014\277\303j\232\274\231$\017>\265f\351\274\262%\230>\212w\316;-\023\207\276(\377\333=O5\010\276\231n9>6\274\232\276\010\361\247\276\266\340\263>\335(\020\276j\274\316\274\305\266\n\275\225\257\200\276\371hI>\234\034\035>\376 N\275\"?\r=\000a\252\275\274\211V=\254\233P>\233\327\310=U\225\225\276.\240\347\2759SC\276?\351[\276sx\245>\027\360\016\276\226\t\202>K\307A\276\231\316\\>\225\214>\275\327\222\337\276S1\222>\2565\202>\036{\242>n\353\005\276\357\026N\276\026|\224>:i\245\275\346\367(=\004\333~>\211\365\304>F\371\010\277\2567x\276\337;K\274*5\200\276T\250\307=\267\347=>\007\306\234\276\034\374\270>x\257\035?\213\337\257>\004\376\034>\326\246\025\275\024\'\205\276\"^R>\325\343\257\276\356\357\017?\035\243\213=\272\260I\274\236i\260=D\203\325\275\016Bv>q\3162=o\301\225\276\t\031\\\275\"\305\035\277\254zf\276\034\220$\276\031\305n>\026j\345>mMZ>K\230\266\275\205\377\202>i\017g\276\274e\030?\300s\007=\212\034%\277\330E\273\276-[p=\302\216\336<\210W\215\276\270\360\223=\201\307\342\276s\220\372\276\346\214\340>{\230\243>\234\031\255\276\020\201\321>\360\230\244>4s0?\201H\020?\323\013#>$U5\276\336\261\362\276_Q\351=iv ?3\230\224=\356\014\037>\330\332\364\276:\026h\276\255\342\r\2776 \354>`\264\361\276}\340\341>\221\327\376.\247,?\236l\036\277\337\355\324\275;\262c\276\315p+?\000\342x?\347\037\332>M\007\331\276\244\246\346=*\000\263=\320\017\251\276O\344\276>\353v\312=\256>\325>\215\3523\277#\355\301\275\326+\005\277wo\344>\301r?\276\3654\300>\346\027P>HH\207\275\276\357\342\275`>\010\2766\r!\275?\336\261\276\3161.\275r\216\323\274\314\372\363<\013\301\252\276\202\036]>.]\264>L\322!\276\214\206[\274\010u\323>\225\262j\274\373\323\265\276\010`\225\276\023\035\343\276\206\'\314\276\241l5=P\251\303=GL\320\2751\364a>j#6\276\t\265\314>\255\364\347\275\323\265Z>\212_}\276\276\204\303=\210\233#\277Xa\222\274\2577x\276\224\207\373>\300\206\325\276\361\333A\276\330\333\013\276`6\334>\251q*\276\255\231\021>\247\004\210\2750\354\242>\035i\004\275\207\231\240\276\\\365\221\276\036\366\316>#\326\373;E\335\'=\002\025\312\276V\237c\275\367A\323>h\023\371<\031)\261\275\275\232\246\275\022\255\366\275\314mK\275\250\300\314>\362\354s<\356\356K\276\331\301\231>N\226\210\276\026|]>\034=\300\275/\001e>\003@\000\277~\245\275>LMd\276\261W\024\277\376\223\216>\223\324\004\275@\000\304>*\007+\277\270\265\222\276\256\'\253\275D\331\251>\243\"\005?\302\360\332>q\205\214>\263\276,<\312\245G\2772\006\007?\255\016\263\277\250_\002>\242\334\260>\310h\t>S\223\221\276\214\374e\276\373\335\007\277c)\262>AU\010>\033\221\237\275j,d=\356w\037>\200\364\257\273\323\312:>\222A\232\276\324\326o\275\250\360\325=\014\025\202\275\372\272\376\275W\'\206>N\323\315=\325*\245\275\273\364\273=\332=[>\263\2346\276\037\230\355\276j\270\031\2776\232w\276\n\211\221\276E\003\350\276\313x\251=\251\007\313\276\336#\277\276\366\333\330\276JM\000>\014\235\221>E\362\262\276\243\236\004>7\002\325\276&\r\312\275\213\232=\276\323\313_=\023\210\314=#\212\353=v\240f\276\306\364\214>\373\321\t>\335\351\321\276\033\256\374=\226\271\345\275\336\351\276=\313\367\013\277SA\315\276\206\256\310=\212\263W=\235\241\376>+\266\020>\250\270\032\277\272\006*W(\277\000C\025\276\317\275\207\2769\005\254\276\353g\262\277\341\005\271\276h\253\006\277R\214\201>\241\206\310\276\277I\221=\216/?>\334r\">X\237\315>+o\232\275>\370\221\2760\361\027\2776~\257\276z\202\314=:\344%>\255\215Q\276n\277\316\276$\335\305\276B\337\371\276\226\237\343\276$\031\300>\335\223#=\324WB\276\211u\232\275\370\263\010\277=A\206\275\257\366\210\276\353\263$\277_\331\360\276\222\001\334\275\213\r\000\277U\205\"\277\220\263*\277x\030p>\235I\000\277\317[\034\277\270`\313\275\242\227u<\210\177\002\276\342B\312\276R{\300>>\030\213>\233y\036\277\240\351\372\275\335\336\213\276\2612;\275\357\371\270>=@\301\276-\302f\277\323\377\033\274\2453\227\276!9\027>\333p\036>\306,\273\276\214\277n=\363\230\340\276\270p\306\276\365\367\262=\235\312\245\276\026\225u=\014\303e=\233\203\016\276B\217\345>E\237\345\276\231\005\201>\314\r\365\275[\221\353\275\314(\n>^J\363\274\177-\246\276a\372L\276P\363\203\276\356\202\271\276B\355\\\276\240\343O\276|\331\332\276u\354\215=N\233!\277\371O\311\276/&\220\276\360\302\272u\371\\>M4i\274\334H)=\320v\240=\213{\004=5\360\363\276\0066\225>\n\203H\276\023\177\177=\252\362\022\277\345=\222\275\031H\361=\332\224\t\276\314.\352=\3064\223\276*\036\264>\217\033$;\247)4?\256\346K\275C\344\241=U\254<\277\244\276\362<\352\036\245\276c\324\002\277\334\231\310\275\365)A=\372\n\245>\r\216\231>\270\365!>\323\344\341=\376\016N\275f\301\230\275\201Ms\276M\360%\274P.\343;\236\341\317\276\210\261%\241\256\254>c\3132=\316\334&?\246\014\013\277\027\022P\276\374?2>\227\346\324\340?\233>hAE\277!%\016\276\275\201\261>\177\027F>z\236s\275\326=y=\374\r\316\275\271\221\235>R\317\302>J\203\n=\243\304\021\277\243S\247\275\251o\360\276[\320\212=L\213\200\275\323|\267\274{\270_?_\034_>\025M\026?u$Z\275\334\303\324>\370g\017\275V3m>?\300w\277PJ[>fv\320>D\367\225\274\3063\017>}v\305=\251\216\240>\336\324\265\275+\202\363\275\326\337\022?-\255\362\276\022Q\226>-\217\010?\262q\200\276\267\304Z\276~##\276\337\016\342\276\320m\376\274\260\'\255\276\363\302\'>xi\375=X\231\337\2765.\224>\255r\032\277\217\356\031\276\375\274\271>\355\227\003\275\222\314\327\275\231\026\273=\336\214\210>t\231\230;\310\217\215>\253\017\311\274\317\323\276\275p\265\036>\2257\305>\0269\203=k\267i\277\035\343J>\010\214\244\276\347\305\361\276g\2769=I\246\033\277\233\021\304\276\035\276\'?\027w\330\276To\266\274\007\031\021>\315W\364\276&5\256\276}*\001?\250\372\265=\206\242\361\276\336g\226\275\350\2176>\313\"\231\274\362\270\217>\336\r\020>x\313Z=Wg)?\034\243\020\276;\2477\276\365#3>\026\377.\276\177\272\001\275PC\035\276*\365Y\277\255\232*\276\371\023\r>St\247\274\337\030#\277\027.\307\275S\365\252\276\3018\203=)#_>>\227\">) X\275u\362\364>\240\263\007\277#\005\001?\210^\301>\247}\024=\222\370\005\276\322\013\235>\037\234h\275\271)\352\275_u\260>\357\310\205\276\014|\207>\262j\221>\r\030\023\276\257\013\002\2775\342\242\276\230\3016\254=n\355\376<\315\376e\276e\355R=F\254\315>\033\020\"?\347\031)>]\237\277\276\005~3\276J6\214\276\362/\030?\346{\272>\334~\t\276h\360\227>mv\023\277;\031j\275\220l!\276A\234\273\275[i=>\250\316*?b\2161\276K_\007\277\\\313y\275\363\244\347\276N\231\033\277u\3119?\003n\205>\010\277C>\242@\303>_~b>[e\230=;\373\r\277\273\320u>\014L6\276%\261\262=\'\227\315\276cm}\276\030\324\323\275o\253z>~\257\207\2760Y_\277k$\204\275W\244\026\276\230.\320\276Nk\013>eb\333\276\261ml\275\354\370\344=\307\212\323\275\307\227U\276f\271\324=#P\341>\366\306t\277\345\362\201>\261\362\235>\221(\343\276\321\n2\276\303\2176>\204\323\372=\354\276\263=\312\251\312;\356F\005>\016$\240\276\2115~>US0>?\007\326>-\356x>j?\256>j\353~\274\327d\316\276\311\364_>\2163\254>\313\310\224>\241\016\266=\371C\006\276\314\201\221\2763\352\231=]\\\340\276}\n\'\276P\256h=\375X\213=!\250l\276JV\336\276\271\013\360\276\335\016\207>\232\320,\277P\376\363=\254G\230>\021\336x>\322\023\237\276\214\203\337>\017\336\257>\347r\342>Ay\266\275(\344_&!\004?fHV\275\026\2521\206\227\242>\320V\203\276\356\335\247=\025\0100\276\343\222\306\275\273k\207>\350b\347\275\\q\347\276x\265\233\276\027\2152\274\241\224R\276\242`E;^\252Q>E\261\203\276w\024_*\'\237\275i\227S\276\311\2717\276\215\'\337>\330\033\346\276\204\306\373\276\325\313G\276\031o\331>\345\223\371\275\320~\377>uv3\276[e\000?i\233\354\276_\325\027\276\254\344\003\277p\2052>Y\332\347=h\244\026\276^\207\330>\n\372\227\276\267\316;>P1\305>rM\014\277w\361\003\276\351U\327=\014T\225\275\314\210\311>\t\375\346>\322|\253\271\371H\270=\006\342?=(m\276>\022l\304\276t-==\370\327\311<\025\227\323>7\037o>B\306\037\276%\331 \275{*\247<\016[!>\212\016\201\276f\"\215;n\316\001?\220\241v\273\351\005\250>\222\341\234\276m\371\232>\257\322\031\275\212\341e\276B\240\205\276\267\246R\275<\266\026=?\022I\277`\231\365\275\201T\240\276\320\252 \277s\237\224=c\rJ>\211\334\033>Y\236n=\250s[\276\230\205\330\275\032\025\202\276\243\345\333\276F\\^=\237\267\233\276R\245\313\276\rHR>1\212E>\227\025\023>\264\3322=\016Q\331\275\223C\223\276o\241\r\277\326a\007\275n\002\265>4\242X\276\325?\370\275^~\321\276Htq>\'gC>{.\037\277=X\343=\210\357\337\276\007\306r\276*\023\330\275\261]v>\3314\304=\365\034[>\"\n\244\276\217;Y>\t\033\r\276\204\023\033\277x\336\217>\306\'%>a\030_\276\300\240\235\276\202\347\325>\3039\267\275\265\324\277<\000\273\263>\225\216\\\276%\220\037\276Sj\236>g\243\302\276\014t\227\276\344\323\210=\275\226\215=!_\350\275\2118\236\276\246>N>\210|\037\277\273\357\223>\234F::\360\321\256\276\026#\222\275\276\373!?\\}o>\331Z\305>\217<\204>M\355\003\277\341\324\010?p\211\372\274H\036\3729\2130\221\2776\213;=\333\353r\210\233\304\275T\241\210\276]Q\362\275\312\341\017\276\315I\260\274\0179\344\272\274o\005\276\354\327\346<\276\254\365\276\345\267\350\275V\340\252\276\360\264m\276\363\212\376\275\253\027\344\2763\373\"?5\320\004\276/\204p\273ul\346>\257\004\237=\005\276z<\242\253\325>\322\245w>\037\211\256\276\363_;?\213\034\243>N\334\303\274v[\313>E\222\000=*\244\r>L\032\004\276#hJ?b\201\230\275\232i\240>\001\300\211\276\256\337\024?i;\210=\224\221\345\275r\006+?);z\275x\033\341=<\'b=\274\003X>w\257\352=\363I\213>1\230\355=a\333\372=\021\020\277\276\244t\305:\216\216\257\275e\303\n\277\004\'\212\276h\3464>\267\334a\274o\033\354\276b\177\000\276\377=(?\230\330\323>\336\233\376>\022D\261=\214\035\344\275\253\352t?\001\014\204>\2236\006?\\\340??\376\272\374\276Y\206\023\277\032\n0\276H\003%<\000\206\364>\352\316u?\320\303\201>\267\243i\276-\025Z>\256\372j=\327)\200\2764\376$?\263U\200>\307\220\013\277L\316\342>P\020:?\241\306\242>\321\342\007\276\304ir\275\326!;\275\233\202\324\276\241J\255\276\201\034s\275\271\336\347\276\2756\355>\210&\031?T\254(>M~s\275\302M\364\276\241.\255>qx\343\276\n\330\225=\025\315\031?!\345\002?\266\006\010?q{\360>\257\202\215>2\2273\276\306\220\270>\303\302o>U\\\214=ggq?7s\252\275\014$\236=^\276\363>5\262a\276x\312\005>#\264\264\2762\035\000>\243}\362\275\332\253\215\276\301\334\007\277\360\216)>\\\010\003?\027\224\211\274\010\201]\276R\315\030>*\252\347=\320\237\247>K\361\245\276\345\316\350\274\361\375\336>\226\275\253\276O\031q>\"\225\244=\037./\274\254y\233=\367=\001>\r\217\010\277\337|\277<\223;\256\275\357\\\263=\351\000\010?Q+E\275\035\274\305<\312Z}=~?\034>\035\316\002\2769\0361\277\260$\001\276\033\341\016\277\027\313$<\361c\261>\037\257\220>\354\252\255\2753\321\003?J\310w>\202\354\301=|\005Y=\nK\020\277\t\026\255\275\205f\307>\365\342\n\277\006\344\363\276;e\324>\224G\027>\007\027\306==E\260;\013\243.=\351\273\374\2755z\212>\013\256\325=\276\267/>\263\232\363\273\252 \204\276\311\335\240\275\367f\354\276\261B\253\275\336\324\315\274\206(\204\274\215\r\020\277\252\373\306\276w\275\217=\214<\002\277~\212y>\204\311\234>gB\211\276\335\356\317=q\313\330w\2239=Dzb\276\002@1=\247\306\251=dAz>\227\264Q\2758\220\214>\343\226\327\276\236I\261>\024h8\276f\361K= b\324<\3105\206>\327rs?\310\222\310=}\374M=\343X\301\275\021\336\344\276F,\260\276Q\257|\277\334\033\017;\2636\022>\372\245R>\223\312\234=5\n\203>\322B\\>\241w\212\276\234`2\277j9\377\275:\231\251\276Y\247C\274g\213%\277\347\257\307>\275\206\220=\216\363\324\276\311\216\247\275\370\366\020=\263/\025>5~\266\276*rC\276\301\025\'\277\321\365\030\277\251\224\325\276dM\003\277O\014\201\276u4Y\277\306\260\321=,v\007\275\214f\\\2775\211C\277\301=\007\277\266\316\021\274\373+{\276d&#>W\223\264\275{(\211\277\201ma\2767\243\345\276\351\000\245\276~?u>\034\202\363<\r\273\211>, \366\276_o^\277\013;\274\275\021He\277\005V\337\275\035\266\344\275\'\252\004\277D\241\005\276N\373,?\030\000\240\275\036\340\006>GC\233\276\344&\204=\335i\010>\010\276\344\275\225[\325\276\200@\020\277\271\177\311\276\306\272Y\274E\266\326\276\310M\245>\357gg\275\241\241\234=\304\215\340\275\235f7\2773}\030\277\242\200\226\276\244\335\344\276\257\200\275\276ao+\277\242>\003\276\320\355\265\276\221\241\035\277\327\002<\276\351\325\023\277\2470?\276\020\215Z\2760$\026\275\366\372\210>\030\005D\276\353\0369\277\315\301)>\022_\257=\032\306\022\277\243\210\244=\3050\377=Y\324\324>\263 \007\276\260\257\226\276l$k=\251\2534\277\2529\251\276\023\231g\271:\014\027\276\000 \336\276\212\217\323\274\276S\342\276\340\024\220>\021z\025\026\016>\244\004\020>?5\231=\2331\251\276\315\t^=\231\017\262\275\022\230\326\276\3618\355\275i\311\311>\253\357\202\277\322\200\353\276\316\2550?\340\221i\275\033\344\370\275O\232\236\276\343\2119\277\026.\035\277\333\n\243\276\203\031\311\276\003\301->\275\r\373\275\365\036\314<\272XT=\214\302\231\276S\203\t\277{\233F>\tL\257>\217\227\354\276\r\352\360\2769\243c\276\345u\201>e]\254\275\353\312C>\373]2\276k\'\325\276\307\257\233\275)\177\273>_8[\276\376\\\220=\277F?\276\367\013\235>\033bG>\331s\372>\377\343\2719)%\247=\013\365\t\277p\274\010\275\002\303\006\277\334s\004?\010Y\000\276\347\2467\276p\207\222=\243\030\230=@\314\030? \267$\276\266\320\272\275\311\323\231>\323<\204\276\202s\325\276X\027$\275\241H\027\277\372G\346=z\305\356\276~%,=A\247\313\276=\236\007\277\326\261\263=\006V\001\277\373(\355\276\"NL>*R\034>\325\213\037\276\211r\226>\346:\000\277\305\263\276>G\023\243\273T|\036\276\341\225>\275W\377\213\276\3625m>yH\245>\201\255&=\264>\004=\367\225D\276\273\274/\276\276\036\266\275\337*\226\276\374\367\227>U\177\365\275\373\363x\277\323vh\276A]->\277P1\274\376\324\266>v\024\263\276\037z}=\226\305\030\277E\376\204\276c\206\232=\027\023\r?u\213\245>\023*\245\277\330q2\275\034\376\207>\225\263a\277\3572!>\212\233\306\276w\270\322=p\322o<\270\302\037>\254\006\301\275\357\326 \276\023\224\325\276\006\004\016\275\322\000\240>\003^\000\277\237-\302>\002|4\276\333i\347\276\313\352\220\276/5\r\277D$%\276\276\233K>\266\232\367\276\275\366\356\2745\254\r\277\036\227\222\276\017\353*\277\010\211\003\277m(\230\276\212\201#\276r\376\324\276#\377\003\277\375\216\302\276\264\373 \277\220\202[>\334\034\236\276r\2733\277D\310\264>U@6\277\362O\020>\263*\241>?\244\004?.\340\264\276\032\221\334\275\367]\005\277\275i\247:\'\306\241=\001~\225\276\013\034\034\2770T(\275ApZ>N\021\220\275\033\321\275\275M\341Q>\232\222\250\276$\270;\2771\216\335\274\2129\017\277i\026\213\276s\206\265>\220x\024\277\322P\020\277\\\367\346\276\321\325-\275?\305\343\276\324\226\r\276\201\200D\2771\201\032>\264\370\225=V\376\004\276\3067.>v\277\023>\270\264n\276}3\t\277x\322\321\276fm\371\276\345\027\025?q\207\204\275\tw\272\276\\u\374\274f\322B>]\2701\277\375$\352\276\276jk\276{\275\320\276\375\372H\275\264k\272=\375\234\031=\355\002\372>\177?N\276\320\036\004\277d}l>7\373*>\312\231\373=\332\242\024\274\214\343\213=\351<\200>\262\326m\277.\204\235=_\235\367\274\'\001x\275\022YC>l\336\257<\311\314\272\276\355\247\203>p\334\037>\034e\274\276\343` \277\213y\215>\363XG>PIM\275\377\005\233<\207\013\212>;fe\276[\023M\276q\231\010?\025\322\240\276\246v\202\275iu)>~\260\306\275\270\372\003>\210GE>\n\210\241=*\315\222\276HU\305\273\276\370\376\276\215!\360\276}\300t\275\303\354\336=\016\260\013?\340\032\001\276Py\303\274\017\030\376>\211\230\275\275\017\314\334=\341\257\224\276\326Z\005=\326\272\312\276\0267\037?\004\256H9\251\027\224= &!\277T\3606>\275\217\335>\036/ ?\352&\334>\343\302\267\275\315\354R\277\024\364\277\275\303\020\364<^\375\242=\212:\\>\202\016W\276\264{\177\276\267\224\222\276s\312\310>i\340\310\276\312\024D>\357\271\267\274\n +\275\033\233\242\276\265\374\035\277i>\217\2766\203,c*>D\300\230\276|\372l>\265\335\225\274\013\243\030>C\3279>\247\3730?\374x\002\276\026+\330\276\330O\315\275\005\376\224\276\265x\274\276j\241\326;\252X\001\277\2567/\276\311\030\246>%4\005?\3012*?OEF?<\356\327\276\177t@\277\202\320/\276x;b>\323\027%=\351\022\346\275\n\337X\275\362\336G\276\226d\223>\374R\034\276=\3460>\350\340\023?\304\355\346\274\036\366\347>R\360%<\021#\014\276\332\324\025\276-\336\367\276\305a\020?\006\331R\276\333\"\215>\227\370<\277\007\302]\277\346\013\017\276\253\001\000\277\354\212\212=J=6\277\317\013\356\276\330\242\206\276\344\324\r>\\\266t\276-\356\255>\205*3\276\203\014\211\2764\346\210>\241\240\032\277\202\237\263\275\351\237\266=\032\327\204\276M\345a>\232b\017\277\016\257\024=\366iT?F\'\036\277\350\306\246\276\344\232%>\327\233\245\276|\373\030?\030\362\215\276\334\372\276>\370\223,?\247\303\235\276\247\3534>d\206\254=\334\377\331\276Z\241`?7\350\256\276\355?\271>!\252\265\276tZJ\276\262|\216\276\232\364\312\276\013\351\023=J\022\300\275\2444\253\276\312\000\206\275\266\034\'\276\030\006\177\276kFX\276\241\035E\277G\303j<\207\332}>\241\"$\275\205\273\034\276G\246x>\203\365A?\244[\002\277\016\260\323=\264\245\221=\\0\350\276\203VY\277\374\320\376>8z\205>\302\244\344\276WT\\>,#h\275\303\036\027>\361\"9\277[H~\275\374\215\362=\314=\216>\346\035\000\276\006\302\032>\261~\326=\335\033@>\261T\026?\013\351\177>\243z\232\274F\325\231\276\215\221\250=\301`\346\276<\222\225\276\355\031\200\276\205\250\347;h\212\266\276\023;{>\177\261\266\276\001!\334\2766\364\031?\322\037\032?=\272\213\276\303F\340\276_c\r\276\303\263\327\276\336\203\220>2\024\257>\246G\026=\017\313\023>\316\311\000\277#\223\324>\n<+>0\251.\277\345\317\033\366\354\331\275\263\332X=M\315\267\275\226\001\032>\277\207\215>7\240\232\275\255\202\261=\256\374\013\277\200\306V\274\245\347\307\276\036\026\300\276;M\316\273k\255\223>\324V\261\276\311\323\\\276\321,\333=\312\273\344<\262\342\224=\2518\242\275%]\010?\276\250\207\276\266\036\260\275\312\352s\276\227\355$>uK\003>\355*\327>A\277`\275\236G=?\376\203\305\275\210\rO>o\346A>F\023]\276\317\014\257=,D\206\276\240A-=j\034\206\276\211a\226\275\026\306\310=PE\t>\r=\302\276r\024)\277j\267\032\277[\026\312>\006\366\200>|R=?\033@\004>y\235\340\275\035\0143\276tn\356=\202\004H\275\326\310\204\275\255\357\211\276UA\321\276\2120K\276+\363\032?\205e\261=,5\221>\246O\"\276c\235\224\275\014(\377>X\215&?}\347\377>\214\377\033?\206\016\341\276\'GR>\005:\177>\010\256\036>\276\300\374=\322\353\365\276\365=\332>~f\363\276N\277X=`\004\001>\302\330??\027M\253\276\273D\256\276=g\372\275\300\030\250=`v\364>\220(\035\277mjs=\0017\244>\373\273\337>\303\274\t\276|tZ\275\270\233\r>\305O\020\277\324\277\326\276Y\341\253\276y\333\261\275\211\375)\277\366B}\276\355\025\355>\025R\260>>\337\253\276\375\352\010\276\332\210\341>\005\256\030=\025\303\346\273\240\003~\275\357\272\036=\007\372\350\275\314\371\002\277\206\345\020\277\022qP\275\205\347\301\276\323\226T\276\253\301\033\276\342\302\374\276\363\300\230\276j\313;\276N\367@?\211f\277\274\264\020\334>m\214};\245t\373\275\317\365\337\274OJ\366=\200\214:=$\360\257=\345!\014?\037\350\006?\220C\200\276S\035\211=(\232\310\273~x(\275\232\013\336\274!7n\276\205U.\276\003\177\200\276\322$\350>\217\326`>f\035e\276\202\005\314>\007\320\217\276C0;?\275\250\201=\255\242\372\276\362\277E?\260\034\004?\220\220\343>\204\036I\277\263c\322>\234.\303>\026\013_\276 wr\276\021!\315=\004\240\264>lb\200\276\035|\037\276\030\262)<\231\r\006?\021\273H>\023\316\273=\335p\306\276\237*\344\274\023Z\264=\341\275\376=\311\250\225>\320\t\324\276\316\263f=\005\216\227\276w\355\n?\204x\301>\\\314\r=\322w\177\276\006\311X=x\037\307\275\211x\373=\274N\026\276\005\360\234\276\302\275\205=\236\361\351>\337\034[=\330% \277\344\364\216>\343\205Y>\2108;\276\231L\205\275\334=~>Oi`>\370X\355\275:4\271\276\223\031@>\370\2645\276#\212\250\276\013\215\207>\031\346\227<\003\302d<~\014H>\244\207\246\275]9\337>\215\225\311=0\323\244\274i\205\323\276?.\036>e\024\'\275\305wP\276\277\274\277\275>J{\275b}}\276O\242U?\212^\025\277\343\261\242=\005\030\212>J\363\235\276\221\273\r=\226\2109>X\371\233>w\256\325>\313b\212\276\331\016}\276*q\234\273\240W\010>\n\005Q>\025\245\376\276\r\252\223>\370%f\277\352\205E\276\214\305E>\260\372\010\276\3659 <\207I\220\276\244\"%?\020\321\204\276\354\300\265\276o\016;\276\350\031\223>\225L\177\276S=\232<\247\243\"> \315\353\2733\252N\277%\320:>\254\204\">\343Y\031\276\302D\032>\254\2772\277\\\216\275=\322\366\214>\314\233\223\276\2622z=\362a\030\277\255\035\375=\311_X\276\305\367#\276>\224:>0L0\276}#\354\276\234\211\247\276\002\004%\277\257\245\357>\307\234\\>r!\032\276\272d\014>l\345\245>\340w\037\276\304\313\021\277\\f/>\262\366)>frI>\352\371t\276\222\221 >U9\007=\010t\017?VK.>\227\315\374>w+\374\276\221\257)>x)\\\276\334\r\000\2760\235 \276\222\242\365>\276\331\313\276\013\226#\276\272~\271\276B\363L>\364\257\005>\333\244\000\277mh\331>i\334\002\277\346!\263;\364\"Z\276^B\326\276\215h7?\233n\252\276\243\202W?\316@\\\277\275\005,\277\243\273\264\274{o\240>Gk\234\276ZS\216\275\261g\234\276\247\035-g\363\364\233\217>\341\337o\276\2267\311>\211\3165>LE\010\277A\005\204>2\307\272>3\004\222>\307\376\014?\327o/\275\235\207\005\276\370Z\"=@\352\237\276X\341b?\006\217,\276y\335o\275\212qT\275\342&j=R\335\204=\233\317\302\273\333X\346\275\0166\251\276_\203\016?k9\206\276,K\277=b~\'?_ \346>Za\030\276g\273\000>\347\377\252=\363<{;U\264\035\276\033\036\005?\272\306\017\2773\310{\276\220y\203>\031#4\277\\\337\267>\244\336\226\2751D\337>)\022\301;\262YH\276\241y\313\276\347a\036=I\373\001\277\2572\313=\327\370\362=i\210-\277\345\346\303\276\323R\361\276q\274\263=\352\206`=\203\355`=\004\324\241\275kJ~\277\370\303d\275\351I?\2777\302\301\276\026\007\305\276\037\343\326\275\245\201\325>\325>G\275\241\257\307\275P\"\330\275\362\341o>~\320?\276c\251W\274\315\242|\276\344r\253\276\262\321\351\276W\205\343=\206\274\247\276\000\025\022\276aw\036>\327\236\205>\241m\337\275]h\204>\350\206\006<\002\234\210\276\320\241@\275\017\333\005\277\370TL\276\254,]>\374`\032\276\2653\207\275R\271\334\276\024\232\212>jM\212\276Pih\276\355\014\273>\253\277\017?\245\3176=\265\226\325\275\265[F\275\241\"\203\276\306\236\352\276\267\277\335\276.\003e\276\221?\222>o\307\275\276\362|\354=V\322\205=u\002\010\277\242S\007?D\244\225\275\373\033\034>PR\234\276%L+>\020\n7\277\245Q\270>m\265\004\277\334\261R>\245\025\242\276 /\005>\324\216\241>\214\316\346\275\t\010\222\2762$\321=\300\354\203>\037\300\305\275\207\367;\277\307\020\215>\372\303\217\276\021\242+>^\202\377\276\251\203_>\325\344(>\327\253\323\276c\0079?\353\030\000\276Z\254\351\276\343\276\305\276\310\265\362\273r\204\311\276\363\234\366=\375\302\313\275|W\005\277\374\276A\276\004E9>\204y\215>5\216\003?\306cL>\310\217\205=,b\242\277\236z^>\301N\260>\n\333\234\275\277qN\276\343\360\200\273\247i\376\276\363\344\255\274\247\316\030?s\210\004\276\036\021\307>\212\035\307>\351\004\360\276: \201\276\273\347\341>o\233\013>T\353\221\276,D\n?u\014r\276\366#K?\207\305\200\276\305N\037\276\n\302\361\276.\010\330>X\220\r>\242y\341=\230i\251\276\003\024_\276i\270.?\354y\005\277\253\204\231>\324>\304\275&\315-\277X\355\316\276\307\224[>x\256!?\207\'\030>\256\035\301=\225\264F?}z\335\276m\223\322=\n)\337=\212\014\326>L\340\036<,\326\265<\321\217\263\275C\244,>\306\316\220>\204\3169>#ii>t&\233>\316\347\t=\242\000\017?\264\234\212>\377\216\340>2\255\000\276|3\016\276E\352\000>\202;\320\276\000\252\233>\373\023K\276\232+_\276\"By>\326D\223>\262+~\275\362\206\001\277<\025\264>\264n\314\274\034x\366=\256q\013\276\r\016\223\276 :\022\275w\375\256\276F\213\354\276M\3402>\355g9\276\005+\356\276\214;x\274\n\207%=\333 \223>\260\204\247>\212:\037>\005p_\276G\027\177>\032\023\334\275\t\024\242<\241\"\212>\231\321\177=44\034=\321\014\r>\211\335\212\276E\336\205>\241Lv>\372*\210=\244\306\022>+\022\247\274\231\312\202\276\203\215a\276.\2224\275\315z\300\276D|\365<\322\345\022\276\020\2158>r\217\200>;`\350>,\232\265=\026\0226>\237\300\257\276\276\372\252=\256\2442?t0N\276\027L\221>\344\327\345>\005\221\242=\377\357\202>\340\213\370\274\210\233\314>\330<\240=\002#\277\273K;\322>Z\354\245\276j\214\271>\177\323&\275X\360$\276\260\024P\276\316\003\010=Kq\370\276\251\222!\275d\025\243\275\376\200:\276\\\230\305\275\300\266\354\275u\007\213<\350\335O\276\207\216\320\276\352?\006>\235\021\030?\337\357R\277\341\276\363\276\373\242}>v\307.>I\005\242\276\t\304\243\275\353\311\321\276\221H\t?\355\344\355<\304O\205\276\236\341\345=jq\004\276m+\n\277\006\025\317\274&0\272\276\001J\004\276>\323r\276\363\276!?b\212d?b\274L\277\0001\203>`\023X\274|\346\310\276xg\t\277\327`\214\276\210\n\253>\337\232\353\276bb\273\276U>\003\277\375,\037?\000\\\002\277g\215\022=l\236\t>\344\302J>X\332\213?\177\312\346>\266\3168?zK\246=Mj\244\276N\206\017\277\243\021??\336l\344>\204\251d>9\014\201\276\304\203\t?\363P\210>\306\334\030?\242\257\256>r\233\206\276?\222\234>^+\304>\274\020\311\276n+3\276&\251\233<\262 B?\207%\003\276RD\306\276\276\017\301=,\214w=d\226:>S\252\241\276\332L\036\277\307/c>&\354\336\276\310\202\336\275+\366\357\275P\361\203\276\375\321\330\276\007\372\230\276%\r\315\275\023\256\320>\030*k>\347\021\246\276m\271\366\276\200\331\035\276\322\272\010\276\324\230D\275\241aF<\361\177\232>\n>\370\274\010x&\277\274\021\016?b\245\322>r\033\007>\350\250\332>(\363%\275y\241<>(*\022?\3420\364\276\234\240\227>\276\301w\276:Z\001\277\317\016b>\307mz\275\032z\013\276?\235\r\276\201\027\250\276\264\341\t?\263D\310\276$v\246\276\r\023\344\201t\213\276\252\260\"\277)\242\010\277\024\347}\276]>\031>;\003\366\276\230`\257\276A\272\253\276/\345t>j\304D\276xu\214>\322\030\232\2755]g\276\354\r\006>@!\362>r\r\002\276\324\031\337\276\375\0066\275\302\017\033?\221-\276<\215\365\376\274v%\377=\010A\354\276N\213\374>)2\356\276\260\3034\276\301b<\276\231R#\276H[\327\276\315\226\250\276\302\031\205\276\344\310\355\275\306\2266\277\254z@>;M\230>\207\247\223=\263\356\257\276\354\262\262\276\351\332t\274\316h\253\276\352\250\352>g\254\261>\352\3668\276\341\225Q>k{\321\275e\233g=\243\356\241\275\220\216\217>\331\r\266<8\311\232=\214~\023\277\177\315S\276\343\226\256\275\322J\351\2763GR>\332\3145\277)y7\277\210[\005\275\235.\216>A\005\217<\323_\357\274\271\344\302\276i\363\200=I\021\204\276\350\243\233>\307x\217\276\317\256\362\276!\211\237\276+\224\034\277AJ\r?\255\356\237>K|}\276d\357\035?\2633\'\277\001\220\023>\231\202\376=\237\351\306>+\334E>\240\352}>\267A\316>\266\356\261>\241Z\332=T*[>\276\275\363\276\333\363\200>#\304\003\277\026<\274>\253\036\342\276\270V\342<)\264\007\277iqY\276\263D\276>\212\201\372\273+\300\255\276\264p\306\276\254\254\241\276\235\321M\277\334\376+>H\212\317\276\234\0220=\ra\222\276\277\220+\276\305\301N\275\230W\201>k^\355\275\242\347\014>U\311\t\277\0312\032=\341\203.\276\004t\373\275\033^-\277\036\"\005\277\320\235\222>\215\365\351>\335\006\206\276r\022\265>\300O%\274\226\250\037>\254\374\231\2753_\027\277Y\325k\276\215\250E>\201\320\303>\275\357\246\275\345\023Q\276\033^\003\276Kih>&\006\234>\272k6=\253WL?{#R>B\347\262>\347\3041\277\020S\247\276\005f\020\277=\246@\275]\244]>\355\374\n?\245s\253\275\202\374G\276B\240\206\2779\272\353\276E\3504>\270\001\226>\345c \275\2613x\277|$\224\2743\276x\276@\355\034\276\021\027\227>JS\234\276.\3170\277w$\315\276\225\000\330\276\342\001\235\276A\357\211\275p\362\230\277\265\373\024>\265\350\033\277a\305\240\276PJ\300=\226\376\010\277\350\\-\277\000\217\271\276\\\362 \277\2551\026\277\003k->8/\210\276\250v3\276\352\227\230\275m\236\220=XZ\001\274)\3027<\210D\010\276IR:\276\337\rl>\344m\001?<+\200\2775\004\241\276\324?c\276\236\346\232\276\342e\316\276Z\030\036\276\357\216\233\276\271\0362\277\311\310\330\276&\250L=\260x\223\276&\r\324\274\312\021\306\276#\000l=\215\210\035?\017\316\023<\317\242g>\271\347\204=\330\324J>\304x\346>q\363~\277/\235\207=\252^\020>{\nc\276ga\321\276p\326\030\277\323~\022>\330\212\316>q,\245<\243K\275\276TG\354>\300\327\222>3\350%>\013<\034=\203\371z>j\332\t>/m\244\275\250#\017?\024\241\323\276\245\244E>\251\347\240\276\227\356\034\277\221\310.\277\223G\212\276\275hh\276\362[\006\276\306\'\022\277\235a\345\276S\242\000\276|\210\324\276\254\232\207=h\225\203\277\241\001\216>\307\333\300=\200\\T\274\276\016\303=\251_\001?\325\231\325\275:\235\005\277\372f\310\275\031!\250\276\032k\225=\317\377\307>\344\376\237>\331\372\031=v\362\250\275\200\333\246\275(\2762\276\214\273\357\276=\256*>;\311\264\276}\235b\275\\\331\010>\2649\010>_8\302\276\274\016!\277\316-\266>r\3459\272\276\026\223\276\006\356Q=\256\025\272\275p\033\314<\364\001\266\276\347 \235=\207\237\243\276Y\262\362=\340G\016>\312+\371\276L\274,\2778\306\025?/\270\033\276a\033\004\276.\206w\276Z\177\217\275\234{\t\277N\320\331>,\001A>\306\0132?{,Z\276Lw<>\023\020\322>\375\025\020\277\305\246M\276\310\210\207\273\330\375\232\276\210l\215\276Wd\235\275?\024(\276uf\033> \336\255<\177\202\023\274<\272:\276e!\217\276\366\273\177>\270GI\275\322\355\327=\014:A\276\214d\025\276\257\2339\276\313\000\345\275\205\326\303\275\325\375\005\276\357\221\307>H!\203\275\023\302\004>\235\332\244\276{\356\002\277{\242\222=\2505\004?m\210\350\276\236w\201=\013\213t\275\177\263\003>N\310R\273L\217\273\275\376A\037>\244j\274\276O\320u\274\235\345\300>\271\303<=H\340\253>g\204\337>\3672\010=\332a\307\275\256W\237\275\270.\t\276\216\311L\276d\266X\276\212I\250>Y\016\031\276\r\210\246>\202\036t=M\365\307\276F\274\230\276\327C\016\275x\241\344>\353]\255\2763\224\027\276\341\220\366>m\327I?\307\360\245\276\026[\247\017\320\346\276M&\334\276!\033\344\276\360\274\233\276\303Y\256\275\'\303\030\277\233w\r\277\020\300\">o\245[>y@\334\275\231\375\252\276\034\200\300=:I\004?\"\3139>\031\243\350\275\337>P>9\236R>G\340S>\312I\346\274\352~7\277\333\021\230=\031\237\356\276\r\214\345\276\002\025,\276\312:\001>/Di\276ej\263\275*\014p\275\267\261\322\276k\264\304=\215,\363<\023\225\376\276\352\2536\277\027mJ?\t_\243\276\345\004\313>\025-w>H\\\222\276\225\3426>\372\224\356\276\222\005\034\276\026\374\001\277<\303\216<\211\024\262\274\001\314\236=\313\233x\276E\245\342>\035j\303\274\217f\351>\202\335a\276\360v\014\277:4\257>\312\243\275>\376\017\244>`cs\267\307jz\277\226k\267<\371\036\326\275\036\0146\277\320\"\302\276\311\235\302>\234\023\200>\371\341\312\276\233\205\374\276\247\262\177\274(\211\001\277\"\031\252=\262\206\365\275\252\234U?\367Tl\274f\374\020?\326\322L\277\267\022\374>\024\263\336;\365\314m=\254\007\206>\010\010\311\276C(\027?\354cG\276\340\021\223\275\325C\232\276p\327\326\276#\0366>\312\246\024>\334\335\377\274Y/\"\276\366\270\024?)\013U\275\370:Z\276\306\004\233\2751\n\201>\340q\'?~\247>\275\244\372\250=\317\006\204>\322\236\317\276\357\231,\276\020\253\222=\242\273\240=\357\340\014\277uh\201=\037_\357>\nt\004>y#\021?\222\242t>i\304\323\275\031$\354\276\230\212\363\276\024)\022?\017\215\313\276\014\224\031?N\363\234\276\036\262\372>M\304\017>\242Lp>NB\035\277\n\341\360\276\232\361\033\275\220-\224\276N*q\276\306\235#\276\201\242H\275\020\367\231\2760\347\245>s5\247=\243\032@>\234T\344\276\254\3745>\340\236\006>\237\006\257=\222@F\273\236E\257>2\224f\276\010\t\323\275M\330\r\277f\010\033;Qa\214>.V\323\276\371\365\007\277\345d\225\276`\377\346>\324\n\271=\' y\276\032:l\275\226\205\002>m}9={\016\234>\226eO\276D\230H>\276\306\333\276N\n=\275\255\250(\276\014+\251=Q\325\316>h^w\276NC\222\275\277C\364=\362\001\"\2766\0142<\316\002\t?\240\257\345\276\255\356,\276h\221\372>\273\200\263<\222\334\216>\201d\201>\241\341\020\274M\365\246\276[\231S\275[%\n?\224\207\271\276\ryr\274^\360\204\276)Iu\275\362\307\357>$\251\002>z\377\350>_\016\033\276=C5?\262/\371>a\372%\277\254\330\271\276\316\n2\2774]\341=\305\355\026\275\024G\224\276\357>\201=;\275\246=Z\354\317\274C#\010\276\217\271\335\276\230\2356>a\272\022\277iyY\275\343\033\226\276K\237(<\002Q\262=\2505\305\2764x\346\276\234\364\233>$\t&\276 \026\016\277\\\'\242>mmo>\326\335\351\276\364\376N\276\031\272\266\2760\316\024?\\} =p\347-\276#C\360\276\'\006\242\276T\262H?1\207\355=\343yj?\327y\311>\r\372\211\276\365\323\336\276\363\003\262\276\027\005\202?|\301n\276\221\305\240>\r\"\314=\375\233\357\276\355\266\">\277\351\013?\375n#?S*\342\276\345\220>\277(s\222\276\324\255,>D\245\300\276\327a9>n\320n>\177\313\005>_Oc\276\366\035q\276\277*\206\276\330d5=\333%\206\276\200Z^=v\334\264>\025#\306=MX\003\274L\223Q\274\246~\255\2769\332e?\013\341\205>/]\016\277\336\022\336\275&\014\347\275\202\220\371\275\3143\253>p\333\317>)2\n\2771\220\277\275\374\215\306\275\247\335\027\277\311\326\251\276R\266\004?%{G\275U\300\343>D\374\202>\025B\225\276\214m\210\276\212\311\224\274\275\357\256>@\277A\275\322L\243\276\314e\257\274\227\300\252>f\027R\2766\353\317>\373%\347>\0172\224\276\267V\033>\235!\230=\013\305\036\276\337\251\311\275a\301\210\275t\020\367=\004K{=y\245<>0\227%\2761g\251=n\331\220>\354k\226\276\327QL>\326\037\214\276\316\013x?\262\273\263\276\322\201\010\277\310x\365>\006Pc?!q<>z\214\325>\363\021\026>\226\335.?\217\321+\277\235\316\332\276\242?e\276y\365\000\277\313\023\220=\241\276\313\275\365TG\276\035\335\251\276\211\035\370<{;\032\276\361\233\257\2765\345\322>\016XI\276R\331\327>\357\265\343=^\314\024\277h\332\331\2762CX\273\363\223\344>\256f\232=\016\r>>:\022\321\276r|\356\273\313\021q\276Q\215\020\277\t\306\001?Q\265\240\276\371\003\212=1\373:>-\313e\277\220\366\215\2764\r\007>\275v&=F\324\247\276\267L\203>\353\261\351\276\207Z#\276I\030\203<\035<\037\277)\317==\275\254\021?\357ap\275\367\247E\276\330\363\230\276\234\336\013\277\0236\224=\021MG\276 Gj\276\305\245\256\2761\312\243\276%\013H=\355\362\217>I\322\024?\373^\002\276\302\317\241>1\376c< \277\207>\243\205I>%\264\222>\345\344.>%\266Z>SF\345\275\205\251)\276\322\263\177>\306\272\313>\271\367\014\276\263_\233>Y\031\314=\274\002}>}\266\005?\342\372\335\276\357)\210\276\200\315\025\277\362\027\344\276\342X\273>\021tF\276\004\361\256;\263\345\223?\017\222 \276\320G!\277b\002\005?\265W\222>wc\n=?d\007\277h\253!\276\327\235L=\361\247\211\275\211\022\345>~\263\221>\320\003\271>\323\224\215=2\222H\277\345\222\312=oCB?\301\030\364\275I\245\027?\216r\025>\3156\250\276e2\367=\210\374:;KX\205<\227F\375>2\036\232\276\3553#\276\277q\206\276XC\252>C\324\256>Y\376*\277w\302P\274G\026\224\276-t\231>\342F\374\276K\2756\277\365\341\274;\326\314\200>\330J\211\276\345\027#>\366\353\227\276J\025T\275\031v!\276b\002\356>1Md\276:\261\324>G\017\022\2775\005\022\277\327\001F\276r\243\221>\003z\'>\275\252\265\274\326\014g\2766Tk>t\264\204\276\313\217\257\276\332\323\254\276~d\022?\005\017n\275\250\037J\276\306;b>1\356\341>\243]\007\2773-\224\276$jq=fr\271=(\277\262>\002J^\273\215,\366\276\374#K>}\273\201\276\341\314\305\276V`\017>\276\312R>\321\036\037\277St\316\276\242\010e\276\002\0169>\342\023\030\277\310m\350><\257\336=\220\201\366\276\030o\233;\036\230D\276Kc\213\277\004\212?\275\022\276\215>D\004\207\276\262X\204\276\314\004U>\031\301\021<\230\305/>\004i\207>\313Q\204\274\355\035\335=\306}8>m\334\315>]\301\037=\t\245\034\277)\263\353\276m\205\302\275\300v\002\276\344\303\366=H\206)\276\226\336i=J\370\205\276|\232\273\276\341B\236\275\006\225\357\273\035o\014\276\014\033\000\277\217D\317=\023\264\373>\002X\001\277\006`\006\277R(P\272\3279\252\274If\n>\324\236\357>\241\350\346>\260.\335=\3267\201>\002~\\>\207\035\267>\"\255\311>O\316Q\276\203\"\320\276\226\333Y\276&\020\370\275\302\206\226\276\323\245d>B\"\263>\226\347\216\275\2718\310\276\207\375\000\276\301\241\022\277i)\257>mY\020\276\272\000\330>.\363\022\277\347\234\305\275\247\021\372\274\022\240\272\276\300i{>\342\021\214=\334\354^>\322\003\310\276\347\342o<\260@L\276t~\004\276J\201\374<\354\212z\276\030\177w\276\320\217\225\276B\373\324\275U\"T>\224c\031?(\373\316\276|\312\365>\222|\002?J\345\252>\330\003L>\307v\'>\345N\317\276\3340\005>\276R\244\275\027\240t\275\226D:=xL\247\276\345\354\244=\022\332&\273\3412\034>\032%\367\276c\037A=[VS\277k1\226\275\360W\302\276\022\335o\276t\370\204=-\247\005>\254\2519\276\r; =\342\315\t?\272)Z\276\374\205\000\277\001\027\366>i+j<\274\315\020\276\305\013\272\275\t\246\034?1!\254\276\016\347T\275r8\005\277\016\274\024\276\301k\241\275\202\226\242\276a\017\314\276v#\252?\324\343\214\276\240*\275\274\t\302\034>\253`e=\304\262\224>\225\334\342\276\211\325,\276mGm<\311\007\315\275A\374\257>/u\214\276\235\276\325\275\350UG\277?\\?>T\2171\277\225\263\227\276\236\317\212>\365T\002?S\321\243\276\302\364\010?\364ec>10\307>\010\005\353\276P\3605>\007\324\027\277\274BP>\301\214\353\275\355\356\262\263\254\233\276\316P\207\275\205\207G\276\233\270\201\277\363\002\315\275>\332\003?\220\223\006?\234\232\203\277\031i\036=\224\242\222>Ada=\004\305\350=\307\337\035\277*\340)?\355\2058\277L\3138\276\357V\227?\033R\036\276\250n\362\276\241\375\031>\2248e\276]\315\276\276a\376\304\276:\017Q>\357\2717>\017\247\000?\234\263\016\276\242*k?ve?\276\320\n\021\277\202\371N>\311\266T?\317\377\253\276_\366\246\276b\\H=S\315\006\275\032\340\250=\236d%\275\030\264\0339k\314\263\276\364\003U\276\303\360\036\275ZC]\276!\253\217\275\251\026R>\300\320\n=\2530\336\276I\364\202>E\233\356=^\033\304\276\304\371]>\306I\017\277+\316F\274\347\214\016>\245\373\306>\t/\r\276-\320\002\275p\024Y>\322\230\303\276\365\314\016\277\224\312Y\276H{\022\277(a\235\301\2761\"\237=U\024J\277i&\361=\031A\263\276\377\236\265\275\265x\264>\r\266\332\276:\336f\276\002u\364<\\\\\267\274\\\323\003?$6d>\207|u\276\250\230\221=\275\266\266>\220[C\275\224\007\213\276\253\313\030>I\203\234>\205\323\027\276\314r\341\276\337\206\265\276\20103>\317\030\320\276\\\232\362\276>\2442>@\013\205\276\344\376\225>\003Lh\276T\2304\277#\342[\276U\342U\277\\;\251>\370}\353\275\330\016\"\276\231<\347=\205A\340=/\315C\276\335%\210>\003}\177=E\216^>-1\"\275\234\321*?\375\371\362\276\233\203w\276D\221l>I\331\221\273z\t\340\275%\312(=\266\360\250=\373\373\272\276h\222\r\276>\301\023\2761g\265\275\273*E\2767\265\243=\n\023\243\276L\305\036\275\001e\213\276$\337O?\n\r\217\276\214O\254\275\016&\222=\345\247#\277\021?\243\276[}N\276\256\022K\276\254:\340\276\3628\350\276\002\"8>\021T\311\276E\2179\277F\366j\276\370\236\235>\222[\375=\277\270\366>/\310J>Zb\277\276Ow\326\275\2643\"\276\326\215\t\277(@\370\275!\201<\276T\354J=>Q\331\276\234D\230\275(\361z>\022C\254\276\024v\003\277\351\177u\277\352\316\007\277\265iR>a\242\354\276yc,\276\372\267\001\272@\227\013\277R\244\207>\2375\217>^o\346\276FO9=B\331\235>\355\026\021?i\250\375>\276r\021>\024\\.\276z\261\006\277\314\225\017\276d\027\'?\022\177\217\276\330\231\026?\227\223H\276\270\366\203>\307\247<\276+\234\r?h\200\350\276\350\254\306=Wb\224\276\245n\013>\331i\027\277\240\345->\316\264\272>\234\216\225=x9N\276\007\006\252\275\307\345#?\254`\256>\022_N\276;\235\330=\240\335W\275\025f\236\275bg\t\276\344\2544>\262\306A\277H\307s\277E$\235>+\304\022\276!\325M;\360_\366=C6T\277\240\302\266>Y\242\022\276\235\003\255\276\274c;>-N$=\316\345\310\276D^\347\273\"\003\347\276\253/\030\277\010\210R\277\243Dg?\346\245H\277\'\305|>\310q\267=\010\200\014\276X\342\037\276\247D\204\2768\265\023\277Z\374x\276r\342\237>\230\312;\277\032\263\"\277\034\203\"\275J\235|>9:q;t\203\000?\255,~\276\365Zs\275\312z4\276\267\257\250>; \262\276\244\236\364=\265\2026>\226\321\026>\304\001Q>\340\375\322\275%\256,\275\302\375\351>\035\315\257\276\371\303\027>\366(\311\275\323RR\274@\364;\275\014\340\037\275Z\357\210=\323\255\232>Z\302\224>Q9(?\226\325\272>\310E\336\275\'\226\323=\200\"\337>Ow\240>^W\007?\222%\303\276j9\007\275I\300\205>`\242\314>OK\217\276\305x\n=\240\021\235\276\3460\'\277\264\345\213>\351d\313>\351\t\341>R\330B\274\3573[>r\014.\276W0\377\275%\337\215>\347e%>\307\215\026\276\000\362=\277\246\332\367>\312\337\355\276\344\371\265\275\225;k\276\351\020\250>\000\2310>:\333\003\277\006(4\277\343@\365\275\025-`\276m\036W=\034\210\375\276\314_\237=H~\007>\366\201\263=\303\022\223\276#D\271>{k\213>#\221\201\276c\246z\276\313\270\202\276u\372a\276\017\030\301\276\371\025\214\275\t\227\346\276\3474u>\234l\250\276by\240\276b\273\274\272\347\370N\276bNn\276\034\3026\276\342\2022>\337{\302\273~\317\035\277*\257\222\320\205\n?\335\017\000\276k#\032??\325\265=Z\226\206>BB\233>\030\202\270\276\307Q\255>\204\212\272>\244&#>H\324J?\3305\007?\211i.\277\333\264\027\274q5\030\276J\017C?\310\0052\273\002(\231=\305\217\014?C\"\325\275\254~\224>\030\350\324>\300\010\231>/\342_=\267O\273>A\316F>\020\232\333>\237\265\221\275\327\237\340\275\033\377\031\274<\347\035\277\202\217\010>PA\200\276\236C8>\302P\247\274\307\tq>&\034\214\275\003\364\210\276q\362\314>\277\244\023?/\375\003\276*H\325\275&\264\305>\357`\360\276\230F\026>A0\023\276\237\233\347=\330\211\344\276\244\337T=\221N\024\277\025\321\340;\237\361[\275Ak\271\275>\257\306\275I\234\r?\264\315G?u\254\021\277\334\246\202>\250m\333\275\031\th>e\026\362\274<\304\201?[\273u\276\023yu\276\323fe=k4r\276\276l;>\032%S?\035\350)\276S5\327>MQ\250=M{\023?V\256\252\276\321\211\257>\273\261\213>\257\357\200?\254i\370=+\276c>8\212\225\275\302\274\241?\354MK>\013\001\335\275\242\260\303>K\346\'>\346\3039>?\001\217>\377\375\225=\336\242\306=\367\371\360=\256\274\034>\035\371\351=a\356\r\277-\000l>\346 \311>\351\302\330>\266\346\206\276\324\251\222>\"\301\244>-\031&\276BN{?\222\260_\276M\3410>\266\010$>\022\010\210>\325\271b?\240=s=?\372=?\335\016\221\276\377\210\262\257P\034\277\341\361\364\274y\241\246\275\244f\261\275w\354_\274r\'m\276\246,\205\276\377,\353\274f\212\352\275I\365~>T1\267\276\225\345\202\276.\3374>\270\2423<\261/\207\276\211\217\230>1\324!\275o\220V\276\321\351\360>\032E:>\014z?\276\324T\025>\257-b>\343\301\350>z\341\325\276\344\205\222\275\364n\222\274\330M\314>\225\321\226>\'\265\365>\251\241\030>\267\245v>\002\365\024\276\352\207\253\275Y\233!?;\273\273\275\350\252a\276\236\336R\275\370V,>=\004\230>2\024\233> \356\213\276\225\010\255\275\025\267\222\276\024LT\276\271<\211\276\t\014\264>\313\271\265>7\205\034?ch\240=?\347\313>t\214\030\276\370-l>\307\245\347>\265\033\246>\022\t\344>\367\330*?p\364q>8p\344>\335\373\347=\214\254\302>\220KV\276\337\255m>\257\377\361\276\0342\202\276\347\021]\276\3707\335\275\265G\276\276\253\247\n>\201\010\365;\337C\300>\335\322\330=\316\351\277=\332\254\236=\0350O\275\340\214\000?\230\017\025\277\203\356\200>\320A\257>\243\363;\274\226\3018?\333\001\261=\352\327\026;\312\255`>\010\255\374\276\035i\242\275C$\250<\272\032\000\277\245\267\253\276?\372\371\275=\240\"\275\311\262S>d*\n>\267\360\313=\300\246\306>\312\237\304>\3036\250\276\350\260\001\277\210\302@>\233\257Z?\322r\037\2766+\233=\032\251\025=\344\204\345>7\347\323\2765_\310>8\2127>\267\250\262\276\241\330\353\276\371\002\217=+\"\376=\2605\005\276<\003\240>VTc>7?\242\276g6\202\276\200\263\341\274\262\032D=v\216\313\275\\\200\211\274\234\250\005>\211\034\304>\242\2579=s\2021\277\022}\313\274\021A\207\275\003\212\004?\314\374\300>\223\264-\276\214\371\243>\265\364\021\275\221\323\r>\266\022T\276C\010\250\277\207\026\262=\324\014\335\274-{O?\271\254\310=\007\216I?\030?\343<\226\356O\276\365\221\245\275\266\247\271>\215\363M\274\331\241\250>\216\005\026>W\311\212\274jm4?\317\333_=\215\230\251\276\364\373\013\277N\366l?\272\275`>\025\240B?\004A\300\275\360\305[=4\251\222=}\341\243=/\210\022>\303\326->n\n\005=N0*>\335\202\352\276.V\273\276\r\264R?\341\326H\277\t(\236<]m\345\275[p=?\2308$>=!\365\276\351\020\206?\374\320\211\275\314l\r?Y\301\345\276/\262\266\274\224\3420>\340g\257\276\266u\023\276Z\256c>\356T_=b\2456=\312V\034\276f\234w>\311b\035>\037\253\200>s@\024?j\354\n>\021\033H=7\356\005\275\251\025x?Q$\210=\252\321\320=UT\241\276S\265#\275\312\t\200>\357\222V\276q0}\276 \270>\275\226% >\225\322\325\276\2650\007=\327\322\005?X\036\376=\235\344\317\276\364\014\221>\231\003\204\276e_\361=\341@\\=\023l\220>Ag6>M\020F>\345e\306>r\327\212\276\265\031\331\274_\277\335\275i\321\273>\007\360\211\276;T >\354\032?>Ev\330\276\307\357\235>,\217;?\270\ng>\'\244O>z\341\367\275)\274g>\370\234}=\356\303\300>\026\207z>\246/d\276\273\230\024?\2456+>R\225\237\276\224\034Y=\370\322\200\276\222l\004>\227\247A>G\215,\276\036\205\023?\251f\246\276\223\204\242\276\207\2668>\357\203\345>*e\254\275\333\317@=kW\360\273\030\377w;\361\356\251>\253\306\'\276\005h>\2762Qz>\006mE\276\'\312\346>\037M2=\321\016\200\2774\237\247\276^\276R\276$\003\005\277W\207\343=\024\317w>z,E>\262\363\204\276<\243\200\276\205\273O>\325s\336\276&\n\370\276Sn\367>\303\001\007\276E\310\211>\017\217\027\277\333U\303>]\226\270>h\033\342\276\327\344=\274O\026\022\276mB\251\276y\375F\276?\251\273>\331|\303\276uKe\2767\006\035\276z\272G>=\034\207\274f#X\274\261\360s>7t+>0\205\315\276\356@\320\275\370\270\320z\202\243>\326\030\310=\326rq\276OL*?\304\336\024\276\213\342\005=\215\200\344<\370\201\325>\237\245\031?\212\274\311\275X\237 \277m\n\343\274\025UT\276M\364\234=\255\357\233\276\224\227 \276D\321\352=\347\017\031=\024lA\277\\\007\222\275\016\307\224=\362`\222=\333rR>6V\350\276\315Y\364\275\341\356\r>\276N\010\276\274\302P\276\231j\200\276y\257\217\275\3567\360\276\236}\365\276=\317e\277y\n\263=*\036\265\275g\375n\276\262^\017>\243\320\337\275@\037\305\276\200F\261\274\036\343r\276\265\342\316\276q6\225\277kX\235=`\310\214>\\\021Y\276\005\245\321>\010\321\206=\007*\200\277\026\271\274=\025u\241>\205\323\300\276\205\300\370=\252!\306>\217\214\237\276nuf\277\247\305\235\276\320\230\342>\341\374\251\276\361\202i\277\237L.?&9\317>\3342\017\277\357\025%\275\362\326S\277\\\322\357\276\226\037\031\277\327%\003\276\013E\t>\351\033\201<\213w\032?\n\034\\\277,\367\304\276\352\271>\276\370c\253\273\217jY>\221\034\013\277\302\306\005?\342s\253\276\225\214\267\276|\351\207\276\337~\227>(\305\314\275WZ\377>\340?7?\220\240\231\275\242\221\302\276\240\266 \276\3263\226\275\277SH\277\3176*\277\321\375 \277\005\307\236\276[\311\366\275\315\344\337<[\001\333\276W\344\267;I\235\347\276\357\365\322>\010\222\226\276\267t\004\276\213Q\237>\n~?\274\324KW>\300\260\260\276[\2340\275\242\354\361\274\357Y\256>\276\313\260\274\250\316\031\276\343>\226>Sx\233\276\346\301\211\277\264iR>\245=\354>\361\246\001<@+\033?$U\030\277\361U\200>\0269\242\276$\2554\275c\341\325\275[\201v\2766,\'\276i\246u>#HF<]\211\252\276\211\315T\277o\022c\276\223\303\374>`aq\275\242N\177\276\351\235\303\276Y\0247>\263\215\340>\003\235\223\276|iq<@A\353\275\302d\023?\310\024\300\276\2368$?\031\256\000>*8D>\257`\021\276\301$\\=\302\247\000\276\361\235\n\275\035M\326\275\246\212\204>y\242\246\276p\035\n\276v\003\311\276\274V\343>md*>\203\313\027=-\017\030>\342$\250\276\367\260\237=\355\024\377\276HR\261<\236_\357\275\tA\201<\235\273\037\277=Y\014\2775wZ\276\013\004\231>L\373\251\275\022\324\202\275\372\206&\277w\222\211;\016\325\374<1\246\024=\372\251\325\276\024\341\030>\260\244\274\275\305\201\255=\330\214\007\277\003\215c\276\203le\276\354\206y=\334\243\351\275\200D\366\276\003\342\330>\310\005\362\275\364\236\t\276D\021\207\276\333\247.>\275{\274=\302\240}<.\024\211=\307\320\303\275\200\007\321\275\317\232\255>\373\3376?^rN\276~\266\023\276#\336\205\273x*\363\275\3328}\275\021;|\276\177\367\'\276\2368\332>\335o\371>\226vH\276\001\316\350>\"\225g=\016\024\037\277\215\217\341\276\261\245\345=J\355\370\275\273\230\000\274\260\363q\277\254\376\033\276\267+\032>7J\207=\254#\021\275\331\336\006\277k|c\277W\362\303\272@h\337=\200\342A?v~\225\275\223(A>\206\216*>\236?\354\276\267\223D\275\211\003\270\276\242g\252>\323US\276I\317\010\277U\241L=\270z\375>GU.\277\224\230h\276\244\234Y\277XN\210>\253\021m=\350!\336>\306&`\276\336\220\350\276\266\273\215=2\241\003\275\325\323&\273\207(\212\2768\235E\276u\':>\321\346\007\277w\3559\277\225\013\346>B\335\334\276\014\266k\276\027\354\270\276\330\315\320>\2416 \276\325\327\273\276\226\340\020?\217u\013>\217\001\341>\t[\200\276o\270\216\2768 x>\017,\227<2i\235\276\026S\376=o\332\200>\376\027\010=x\000\355>Sl\325=0p\325\274C\227K>\276\177D\276\257\324m=\266\267x>\3001\241>8\260\234>\215\244d\276N\353\357>S\244\275\276J\'\231<\212),\276\374\342W\276\031Hj\276\005\324\251\271\3532\241>\203\026E\276X\347\334\261Cj\275g\320\031\277\036(\032\277\032\265.>\3609\262>\221\242\263\275\001\226\341>`\313\"\274A\177\001>\007\006j>,U\022\277\324\331\231\276\300I\234\274\312W\301>r\';\276)\\\025>!N\317\276Bq\224\276U\363\263\2744l3?\351\361\307<5\021J>b\266L\276\343\312\264\276i~\027\276l\t\221=\235i\024?\2620\242\274\234\325Q\274\r\0075=\371\357\334<\361e\266=\350\220\004>KX\r\277\212\342\307\276x\351\037>h\325\r?/\\\300\276\2675\307\276\263VR\276\177\265\030>\316\346\226>\014\270X\2763\016=>O\231\344=\256\334@\275K\347\207\276\321Wq>LSc>\031e\r\275\222*\361\276\222\330\371<\001\000\365\276\216\221E\277\025R\004?\250\323\254\276]\2036>t\301\212>1T\222>V\2569\276\264n\206>\324#\234>\371\177`=\333*R\276\366\267\225>\201\'\267\275\030md=\223B\005\277\357\204\033\276$\336H\275\261\354\200\276\241fQ\277\260=\214\275S[V<\"\247V?\246W\201>\246l\032?{\361\340=\nQ\023>\333\344\267=\351\353\343>\222\244\024=\2056L\276\n\331\227\275\346\033\256<^\225\303\275\360\215\245\276u\024\211>\037aJ>\026\0308=\032\333\006>\320I\237\276\'\021C\276R\203\327>5,\023\201\247f>\211\321/\275I\246@=Z\262-<,+\202>\244H#>\225\036\021\276#\t\333=\350\312\270=J4\004>\232`\025>\247\241Z\276\274\242\217=5\270\302>\353\374l<\312\337\274\276\324!9>\230\367\024\274\017\276\252\2769\264\334=;\270\272\2763&M\276\302\3541>\207PJ>\010\243\276\275@\344G>\025*t\276<5Z\276\0025\335\276\207\250\255\276A\277\226<\324\345\300\276\374\231\t\277\021\262\217<\020q\342>\344\267I\276]\226!\276\336\340\"\277V\376?>\236z\277\276\rn\340=H\343\204>\241\310|\2765T\366\276\td\367\272\224\355\'\277\343h\251\275\035\317*?B\006\312=\200\364\035?\261l\207\276\030\214\241\276\305\320h?\210\325\263\275\201\211\241\276zeO>\225D\337>\177>\205\276\031\214\345\276\373\245\311\275\017\302\036?]\212,\277\377\227C=s\202\307>\363w\357\275\252\310\371=\224S\350>\377\206\221\276\333\023\013\275\365\377q\276\020\332\332\275\"r\207\276 \222\254\274J\243\212>\276\325\273\276\370\324\252\275\031\325\255>\325\326~\275[\273X==}\230>\256\030\214>-{\032\277\255w\004=uv\355\276\014\354\035\277\253D$\277\267(\330\275\200\272D\276k\235\272\275y\250\005?\201\212:\277\261J\021\276\252\276\244=b\304\330>At\327>\315\273\026\275\372\323\257\276\265\247k\276a\247\366>\371-A;\336`\217\276\203$\335>bR\226=|mG\276w\205}\276\306\207\034\276m8\353=Q\376\366\276\2060\234\276\230\"\223\276\203\330O>\316\315\203>\317/\205>\241t\370>Ez\250\276\213\224\203\276\221\356\344\275\200\233\031\277\024\374\020\277\000\016\2769\252\230#=\332\034N?a\201\252\276u+\311\274\247\202\216>t\336\310=<,\376\275\210\257]\2767\032I>\260\265\206\276\331\256\270\275\031s*>U\332\277\276\205\232b\275\365\251\t>Yv\364=q \003>\361W\022\276\204g\001?\254\204t\276\265\375}\276\373\256L=\374\004\311\276\334<\021>Lm\235\276ao\372\275\002\244i\2315\334\276\262Y?>\244e9\276\256\2038>X\020U=\376)K\276\325\000\023>X\231\224\274w\261\375=\312\3168>\036\021\216\277P\343 \276m\031\221\275\255R\212=\250t\255\2751\260\263\2752\215\305\276\220E0\276\231\302\014>;\346a=}\026\266>\252\337\205\276r(\010\277\224\352F\276\024c`\276\203C\024>\245[\224\275\004\330\320\276\367\014\244?Wx\222\276\025r%?\377\026\320\275B\211*?f5\375>\271\370\364=\230\341\007\277\217\352\306=]\335\236>1\343Z>U\307\313\276\227\020\326\276\265-{\276\312\251\027?\020G\034?r\260\373\275q\362\n>\2061;>T\323\335\276lz\273\276)\211\354>\005\341\275\276s\254\247>o\266\256>POy?F\370\247\274\007\210\260>\003\" ?\263\216\375>\261y\322<\364\205\000\276\325\243\005>\016\023\227<\026\n\263>\351\342\226>\220W|>9&\021\277\237)2?\341\242\230\276@<*\2765\341\354>\240f\366\276\376\022\276>\366,w>\021\017\016\276\355\335\301;\310\034\376>\207\003W>\220<\225>\272\302\306<\313\253\313\275xn\206\276m\346\343>d\013K?\356F\252\276\225av\276kD\220>\203n\036\277}\313\371=N\376y\277\344\310\273\276\214\306\032?+y!?\026\001\262>\\\224\314\274H\345\220?\322:N\275%\006\315>\236\204\037>\314T\264\276=b\004>$x\350>\032/\330=\\\260\261=\372\232Q?\014\242\225\276\006\326\036>\240\017\262>i\247\367:c,\217=\306\336&?\373\257\031?1U\273\275\231\205d=\215\311l\276\330\245\"\276[@K\2766>$>im\231>\356\276.\275VB\373=$I\344\276\363\215\257\275\344\234\275\276\220yl\276dR\232\275qc\225:&\234\t<\227)K\276\265\226\032>?\277\337\276\312\347Y\276]\317Q\276ms\377=\207\323\211\276qi\350>E\216a\2777f\030?\273\212\306>\033<0>d-\364>\371\341\371\275Jr\227\275\\8!\276\275nf>\035\264a\275\024\023@\275\204!u\276\374\221\201>\203\332\024>;\356\233>}\231\303>S\2764=\2018\351\276\003~\211>\304<\250\274\357\371\355=B3\355\275\357\274\\>\247\223/\2776{J>\207\267 ?\274\004z\2769\256\355\276\314\245\316=\220\034\300=*\313\256>\367\276\'?yP\357=\221l\016>b\000\240\275\376\245g>\030\334\271\276C\273\243\274\343\001R=\371\021K\275\251\377\302>\231\225 >GU\023\276_\246\276\276\023\366\025\277@\271\272\275\277P\204\276\031\325$?\010\253(=\340\217\304>\311\235\271\276\352\360\321\2763V\266\276\315\375\250=\236\3654=\026\367\226\276\215\021:\277\347\302.?8{\206=O\021\004\276\333\230\306>\267\346\013\277\337/O\276\021\177\t\357\360\211<\357\253\025\275m\037\236\276\336\267\036\277Na\322\275\262\034\233=\257\256\215\276>\260\226=\202\rJ<\375\377\223\276lN\345\276\342u\304;\3747\264\276\366\235\034?C\217\021\276j\336\201=\356v\211\276\232\314\260>o\341\202<\340>\352\275\222j\036\277B\n\312\275\244\256\322=c X\276\362\372\361\276\3537\310=\340/\354>\355\022\315\275\377/T\277\341Qe?x\'\007\275\035vZ\276\246\331\322>\307\201(\277\356\337\256=y\311\035\277\356r5\277\216]R\276;\362\276\276\003\271c>\321\213\246\276,\2713\277\263\031\240>\301\334\025>\367\320\217>yE\032>io>\277:\225!>\321\331F\277+\031\367=\241,\202\2767\240\022\276U8P\276\341.K=\373\234\003\277\017\317\t?-\203\322\276@\203=\276so\266>\324\270\373>\200r\265>\013\340\014\277J\212\036\276\307c\214\277\335\300\214\276\333\256H\277Hi)\276\355j\331\276d\351\251\275\312\302\026\277kGp<\214\001\257\275zA\356\276\366\2672>\312eO?\273[Q\276\267 \207>\031\033\203\276\364,*>\r\363\027?C\367\365\276\371p\t\276+\236\206\275d\221V\343.\262\275\262\004n\276\346\004\030\271*I\276wL\231\275p\267k?G\343\346\274\326\201\214\276\027N\302=R\032\232\275m5\333<\213;\322=J\211R?\023\275e\274\257\014\017=\363\211Q>\343\332\030>2\2248=\271uI>\177\302[\275\014\274\273>&G6?\014%^=\360\363d\275\220Y\345>7\340\010?\307 \037\276cB\177>\213\350\215\276\037\037\325=\261|\224>\271J\305\273\237\217\234>\276\306\206>\243:\340\276\340\366\010?\264\257\017?\321y3;\374:v\275\317\334\256=\346\356\222\276@\302\n\277pL\243\2768\317\000?\222q#\276\231\306\345\276\277{g\275\300\257\313\275\234\352\333>W,\240\276\277\020\264>\343\325\237\276\267\352J\275\334\301\r?Zj\345=M\212\321>\246V2\277\026g\251\276\032\235\'\276\370}\341>?\344D<2\276t\275\333yF\277x\3568>\353Z\366=\277 !?|8v>\014\273\000>\204\tY\275m\033\211=,\036\372\276\027*\366>\201V\027\277V\344Z>uR\225=\"\211W>X\036\007?\327mD\2768R\023=\235\2214\275,0\242;]W\256\276nK\361\275\361\023\275\275I#L=\360\272O\277^\236\314>\\\030\253\275u\224\214>@\232\375\275\345\371^\276k\356\272=F\343\221\276y\034\203>/<\262>\2104\230>!\357\\>*\305+>d\202\261\276S\267\302>b[Y>De\251\275B^\220\276uX\217\276Po\022>7\021Q>\376}~>\261[\340=\022+\216\274\021\032\210=|\367\255\276P2_\276.\360D\276\360\354\'\276\372?\256>$\325\032>\306\250\200=\242\204+\275\316\352[>BMq\276\351\010\035>]\325\037\277(\203\307\275*%\004?W)\025\276(Us<<4\335\276p\231\026\275\333Sw=\330c;\277\373.\364\275\374\245O>`\372o<\226,\345=\242y\010\277\200\375\216\275\273\240\020\277\000I\312\276\257\001\244\276\206L\321\2762\367\334\276J#/?y\020\223>}\203v\276\243_\232;\272\305\242\276{B\203=\342\311h\276\000\002\254\276\322\252^\276\037\377\014\277O\376\341>\246z\026\277AP\347>T\353\262\275\206#l<$\271\355>\222-\222\276\313\330,\276{\307\247?\2140x\276\331<\000\276c\231\200>\376l\222\276\226\337\235\272\276r\276\376\275\210>\031\233b\276\314\240\016?k[\221>\330\243\006?\351X\305\276G24<\027\r%>\247\246\246\276\311\272\202\2769\326\247>\201\234y\275\3532\020\2773m\010\276\375P\033\275\323\006W\274p\260\022\276\226\001\262>,h\357>\252\353\032?\t$\034\276C\n+\276\336\362\222=\233\313\023\273\342\225\323>\266?f\275X\266\340\276\360\037\231\275\r\311\276>e~\217>\027\215\337\276,\317\361\275\231\035\010\277\360({\275\245q9\277\216|\223\275\277\276\223\275\315\356\227\275\005\367i=e:\314=;%B\276)\376\353\275\331\231\225=\361\262(\276\364\363\001>\023[g\277\357\033\350>\000\202\316\273\022\333\033\276!\241\336=\265\035\210;z\336\335\276\323yU>\254\205\"\277\325}\322\274\244K;>2\005\026\275\260\3576\276\277\377\262\275/\033u\275\001Z\270>\343ao=\271\324\300=\317\266i\275&\356\016?\372/\371=\203\251s\276a\367\237\276\006\246\277>\247\234\262>\341?\334>\262\212\316>\215B)?p@.>\345[\230>\201\001\262\275\236\234\334\2762\213\025\276\372g\270>+w\277=\300*\340>8`\303\276\271S(\276\214\211\022\276\3412M>C;\244>\3534\327>\316\033\305=\222\275\303=\343\260S\277\025\306\023>\322t\307\276\331\342\221>\337\021+>gk4?\254A*?\362\031\234>J\264i>Oh\355\276\375\217\241<, \034?\373\366\203>\240\214\343>I\377\221>&\333\025>\327\371\300\275\352\351>\276+g\207\274\244th>\304)a\275\260\300$\274\0160~\275\200>\'\276\213B\352=\257\324\262\276<\2545\276\316\215A\276\310\234I\276\252b\017\277)\364.>wk1\276\255\251R>ie\357\275B\271\351>\300`\312>\376Q\227\276\013^\030>\230 d=\252\226}>\30135?\206\337\335\276\261,\330\275~\260\027\276\006\016!>R\000\010?\024\300\224>b\333\322=D`\204\276G\246\347\274\257\274\260\277\031~4\277\027\232w>\270~\274<\362=Y\277\355(\367\274&\212\212\276DCk\277\336\235\036\276s\322\221\276\0370\034\276k\321`\277s\213\261\276\373\000\315\2752[\256\276d5\361\275\r\200\325\276@\340\n\277\315\034M\275\206\206;\277\306\277=\277<\361\254>\204\331\001\276\225\203u?\031\332.>w\214\302\276\242\037\215>\342J\n\277\357\362\320\2742a\300>?B\233\276]\246\355\276h>8>\267;\324>\335$\236\276\320+\377\275a\264\361\276J;e\276yb\264>\273~\352\276\302Z8>\245,2\276e\364\000\276<\212\207\276\006\204\354\275l\033\301< \314\031\277\273O\264\276\262\000\255\274\322\226\356<\342\322&\277\003\332\336<%\342\244=\0358\316\276e\315\344>\344H\010\274\211Sp>\233\223\330\276\240\032\321>\245x\036\277\204\013\373\276\337.n\276\335\t8\276u\365&\277\003?\245<\341\360\260\276\320`\025\276\235\306\216\276\334L$\276\360j\272=\2427\235\275\263.\310\276h\370 >\324\2133\277\314>\265<\322\276\014\276\343\331U>\0312\236\276\342\241\265>i\274\367>\257\264\245\275\034F\341\276\005<\350=\026Ks>\230\257\341\275\341\346\276\276\352\222\020\277\025\013Q\276\313\331\022\276\031\000\223>\264a\t>\206\215\224\276\267d$> \320\303>\037x\262\276\331\275+\274\211\260\376\276\265\266\234\276\265\235r>\211\236\326=x\370\247>\372]*\275%\\o=T$P>\273\320\317\276m\254\203\276\356*\013>\227\035\360=)\336\n>\237\307\266=\031M&\277&\003\204\276\347\242\257=|t\027\276\363K\253>\363d\177\276\331j\316=\205q\251\276^\223R>\014\254\246>%\260\237\276h\207\266>w\247\254\276\036\234\261\274\301\232\312\276^{\356\312}%=\341\310|\276\344*f>}\344\332=7\253\021?C#<\277\021!\224\273sT\217\276\317\004\243\276\367\322!\274C\337F>x\217\307=\007b\275\276>\301:=+\214\267\276\242b\n?\213\370\347\275\346T\243\276+C\215>\231\366\036\277\356\211,\277b\202\030\277<3\231>#\025]>\021V\264\357\031f\276JR\353\276z\n\253=\"a\215>\310\221\001\276s\030\317\275\326\036s\276\250\360\254\275p0\254\276\257\276\250\276\\ip\275\202\261\274\274H\326Q>\t\373\232>\007\006t=,\237\023\276\270B\006\277\033\020\222>XNZ\276\252\307\222<\364/\223\276\273\374\362\276\233Z\310=\231\311*\276\355\356_>:\306+<\224-\352\276\032\277]\276\377ZI\277%P\330\274n\256\350>a<\376>bm\331=\314LD\276\325Jh\275n\334I>\2017\016\277\317s\342>V\024\371>m\314\202=O|\036<%\204K=\322\377\301>\333\222\254\276co=?r\361\030\276\306\257\253\276y\265\376\276^=\250\276\032\317$?\257K\222>\234\275\274\275\316~\334>\3602T\276\341\003\335>\035\320k?\2519\215:\245c\222>\250jH>\264a\201>\252\325C\2777\016\002\276\307+\322\276\222\306\014>\304[\217\276\336\331!?\3570G\274]\252\007>,\003\202\275\252\263>\277\342\327\352\276\232\317\201\275\225\354\373>U\0202?\016\277I\276l}\237>\253\323\305\275\266\302D\277\371d\204=\206\010o>\027\325\r\276\241-x>\377\300\"?\312\\\302\274\010-\007\276\022\304\310\276&\334\t?\230#5\273,\336\303>\241\220\313\275T\276\217=\nZ\027?h\363\300>\252\3344=\035\235\020?\360\235\335<\021\261\000=\372U;?\304\317\321\276i\355\313\276\227\232\"\275h1.\275`\031\\\275\031\342\265=\036\235\364>j\366\016\276oof>\014\0316>\320\265\325=Fi:>\371\241\202\275E\034\016?\334g\223\275\317\247\253>\360\274v\275\"\027\367\274\373\362\215>\263\374[\276\024z\272=\342n\004=BdI?\246\033k\276\346\nH?\206Z\272>\245\332\245>\2073\013<\r\"\340\276\004\340\337=\013\341&\275m\370\335\275\007\372\231\275~S\257\276\010e->\372}6>\314\330\212>\311\203\266\276\237\375\200\276rU\346=\216\355\006\277c4o>\207\327\331\276\360b\311=\2546M\276\313\2155>\037m\304\276\254\\{?_\266Z?\256\261,?\260\274\002\277V\227\317><\246(\274\303N\225>\303?\013?\327m\365<\022\347\025\277\377\2122\276Af\014>\353\225&\276\037\022\003\276s\345#\275\204\307\244\276\205\214#\275\032\017\353\275NH\327\275U2\254=\230\264U>\207\273\256>\227\233\005\276\372\322)\276\273\220@\276\230A\217\276\363$\034\277z\230\316=\020\200l\276\351\360N\276\216\300c>\241\263U\276\007a\336>jAh\276R^\024\276\201\237\347\276:\215\315>\272p\372=W\226\345>)&\241>\330\3107\276SP\365=$?\343\276\351\214\241\275:\234\200=\372\346\350>wU(\276\213\300:\275`\363\365\276\273YE>\n\353\030>\021N\016>3jP\276.\352#>io\034>\r\3422>]\374\014=\267\217\035?\266\010\200\276\253\007\351\276\027\321\200\275y\375@=(\271\226\276\3707\224>\025\253\262<\0225\000\277\207rX\276\316Z:>g\246\033\276\020\207&\276\020\202\265>\264\202\277=M\270\231>\254\203\332\276r\326\037\276):\370<\372\301V\276\273.%\277\340\202.\276\326\032\226>\216\023\022?\343\353\244>}.\000?\303D\365=\006\252\334\276\372\344;?p\240\361\276\'\275D>O\0033>\033\312\200>#\204!\277\275\025X\277\215\251\300=\312\254\375\275\2619(>\272O\221<\365>\"\276\364\2535\2776\352\006\276\270,\303\276\033o\234>y\034\004>\217\202X\277\2175\225>\210\330\274\275u\016\211\276\341\r\021>\205Cv>\374\305,\276C\034\264\2752\353\363>et\031\277.\243\310\276N\203T\277\255\237W\276\270\001/\277\220\341\n>\223{\310\276\263{R\276p \310>Z\372\345=\021:\222=\334\346\215\275\346\314V\276\377\220\302=\337~\017=\255%\023?\260\324\013?\311\014H>\234{9\276p\331o>\035P\216>\332\246\304\275\237{\024?\001\273\361=@\320\215\276~0\315\276\377\034\251\276\335\247\307\276Z\303\276\276/1\234>\243n\370\275!\276_\276oy\246\276\373\377\003\274\006\353\'?;S\325\276O\033\005\277\306\237S\276\301Z\226\276i|B=\300%!\277:\203\200\276X\370\235\2741\304(>\330KQ\276\022\213\275<\253\235\364\276>\237:\276\202\223\004\277\373\205\245>\003\014\377\275\214I\352\275\036\352G=w6(>\002T::\350\3072\277\271U\246=\333\'a\275;\030\003\277I\326g\276#C\317>\2245\261>\231\227\210\276)t+=.\357\013=\267;\232>?\200\'?4g\251\275\220\022\302>\217l2>tL\272\276\001%+\276p\232\235\276\243\261\200>\036\024\030>\004\016\006?\013\257\350>\312l\330\276\305\326\207>\352\010\354>\034\367 ?\270T\026\277\001D6\276l\322\262>v\256\030>hZ\020=\340\013\013=\003\023\236>\231\270~\2754\236K>\301\207:>\003\227\204><\007`\276dun\2763\302b\276\000\034q>J\\\205\276/\350\010>\331\273\025\276\273B!=\233\002\247=f\027\255\275hy\213=S\336%?\314n9>\307?\274\2763\304C>\304\n\262>\312\2030>`\324\367>\331\036|>\236\354\313\276i\346\336=\271G\005\2762\037\"\277\265\002\320\2764E\356>\226M\\>\253\233\275>\213\257y\276:\016\265\273O@\250>\250\327\205\276)\377z\276-Vk>\335\3246\276\374\201\257\276z\300\376>X\362\305\276\353M\243\275\325\341\227>~\033H?\231\010\271\276\256~d>\032\232b>\334\t\300>\243k\n\277\024\277\244\276G/\261>\214\352\341;\033\251\361>\353\263\241=+\217G=Vp\275>\276\365\215\275\344\243\355\275L\201\201>\373\315\005\275\236\375\241==e+=\241\3628?QE\362<\337\367\342=B~\332\275\200\370j>\317\345\340>\244\257\036\275\257\240d\276\211\323\256\276\006\361b\276\302\230\007>Lv\376=\364\2165?;\\\273\276\217\022\352>\271\221!?\335\033\300>E*\021\277,P+\277\375\\\335\275\222\316\036?{\224\223>\215\302\203>\210M\203=\302\373\243\276\3152\327\276\231\332l\276\307\376\250=\023c;>\357\233\355\276\333\373\266<\323\361\206>\367\262E\276\021\211\007\276i\236\276>?:\205?\333\023\356<0|\363=\212o\031\277\243~\014\2767\321\340>\315\362\220\275\354E\311\276F\305\304\275\235\"\225=7]~\276^\360\021\275]6\264>.\307\251\276\017\352T\275\351\024b?mW\220>#>==\321\2461>\251\025H>\344+\320\276\034\241\361<\361\010\220=\312\222z=z\323\265=\0059\202>\315\375\217=\2630\005?\273\205Q=\363$\265\276\032\007\304>\213\243\244>\255W\363\275~\356>>+\264\353=\001\034?>[6S\275\023s7>\365\224\330\275\275I\317=*\215\271>\177\2235>\275\343\207\276\243\036\177?\334\356h=\266\264[>\301\365\200=\037\205\341>z\335\205=\230}\221>\020\343*?nL\303>e\364\032>j\013\264>\263n\023?=\321\300=l\206\314\276\377B\357\275\316\037\251\276\235\326X>qj!?:\206\362=\317G\222=6?\346>ps7\276\317\005\224\276/\236\024>\256)\206>\232\344\346=\352\014B>\210\206\363=6\n\360>|2\\>!\227#?5\211}\276\003\302Y\275`\205\364=\"\2403>\rJ\240>L:\233\276\330O\324>X\214\330>\316\251i>\265\362\344=\377\251\262\276)b\003>\351`\365>d1\361;\007\361\'?\017\265\256>\226\200\020>N\031\243<\372\255C?\031\025\243\275\343\'\206=D\017\032?\022t\031\277\036O\332\274\013f|>\220\342\206>\221c\234>\342`\361\276\205\330\321\276+\266\"\276\021\257r=\2555\250\276\016:\302>\303 ^\275\177\0161\275\371B\237\272zBF>a\026\177\275\334\360\032\276\233\327\216>\032$\251\276\234\020\211\276UT\005?\'\363F\277c\202\365=\235\315j>~\036\205\275&&\224\275\022\214\013\276\232\035\302\275\233\236\203>\002\n\260>T\032\247>\274\353\034>\246%\335=,t\014\276<\360\027\276\360g3>9\363q>\r-\271\276\2035\'>\311$\344\276\331\341\200\276\335\031e\276xN\240\2750\267\347\275\204\'\336\275{E\332\274\221\2462>\312Oc>\302D\270=%9q>r\013\010\276\306\201C\276\211\253\201\274\214 F\276\334\376b\275>\223\246>T\252\261\276\023\340\206\275*\224)\276m\300\223>$\365\000>\231\305\003\277^\346\366>\322\033\336>0\257D\276p\017\360\275\013D?\276\322)\035?\365r\302\276\370,\224>\332b\346\276X8\006?\251\332j\276\367\344\325\276\373o\313\274o\313A=\252_\213>B\n\\\277\277B;\277\023@3\275\307\252\307>Lw5?\250.\337>\304\267a>\334\324\272\276\034\343U\274\344\202\370=h\211\204\275\364\272\265\274\2766*\276K\\(\276?i\371=@\030}\277\270T\276\276%y\326>27\204\275\234\266\345\275OP\306\276(\342\344\276\326\352\031\277_\nP>%[U\275\253I^\275\006b\235>\271\372\000?0\271\004=\304\327\021=\337\235\010>\341%\217\277\262\003\002?\261\315V?\021q\245\275\036\024\313=\246\336\027?\303 \014\277\306\241}\275\rv\023?d\260I=\206W\241>d\306\274=\221\345\337>_\037\033\276\353\354K\275\365\2477\276Y\322\010?g0\277\276\237\216\221\274\331F\017=L\345\334\275f\342\242\274\350\344j> \016\261>[X\003\277,\301\236>\222\334n=\024\2451?\007\207\317>\207\374\017\276Z\341Y>\032\267\252\276X\213\340>\341K\245\276\317\217+>\316f\021\273\366v=\276\216\262\201\276\023\224\211\276\343B@?\367\306\226\276\367\304\024?H\253+\277n\273\014>*\006\241>\333\260[?\262.\350\276\272\226>>K%#\276\266G\376>\276\301\023?\331\356\002\277\205k\206>\370\330L>\322?\037?\2257\317\276\306\n\354\276\301t\271>89\252=|E\226\276\327\010\332>-D\217>R\312\033;\200\3473?\027\364\210>\031\206\220>\206\257\257>\006\344R\276n \236\276\024\035{\275~L\374\274H~\307\275}A\004>l\201e\276np\326\276\207\375\006\277\311\264%>I#\201\276^\262\253\275\240w4\277\202w\270>j\037\246>\363\022\250\275F\325.>]\304\200=\320\357\206>1\031\274=1T!\276\362\024\363\276)\023\232\276\032yr=F(\307=\270L:\277.R\000\2765\026p=\332\337n\276rJ#\276F\330e\276-K\271\276\360\035q\276a\367\032?\032\202`\276\215@m\276\252.\304\276D\271\037?\363\1778=\272\276W\276}\206\206\275\\{\314>\242\203\021?\263\362\373>\265H\334\276\360\217\037=\\C\205>\330\352S>\223\014s\277V\256\006?\226\005\301\275M\tg> \365\222\276\232N,>#\315\007?4\204\372\274\277\027\256>\301\033\347\276r\365\274=-\037\031\277\036Z\330>\356\246\363\276\316\\^\276y\221\344\276\374\250r>\020\202\232\2761\343\026\276\301\274k>\210\023\035\276\244@\210\276_\026\252>\037\376V>Q\322\344>\205\214\315:\222\245\014\277P\037\355>\207\263\253\276\313X\251\276\351\271\266>\177\207x\275\210r\233>\027%\266>\341c\354\276\212X{>\306\247\265\274\000\"\211\276\241\327 \276\344\255\330>`\374\021>0O\026\277\241\341?>j\276]\276J\232+>\327%N>\034[1\274SCU\276\250Jy\276\260;F\276h\217u\275 \317\217>\242R\254= [)?\333\371;\2763g\027\276\312w\263\276\245\305\362\275n\213K\277\016e\000?)\346\320\27553\254>\025\303Z>wR\245\276\361r\256=\201\220\371=\235X\261>\027\207.=\312\376\013?$H\026\276\246\001Q=\026\210\036\277_v\315>\372E\017\276\262\002\256>\323\036#?\305-)\2770#\303\275X\373\232=f\002\">\024\320\344>0\003X=,2\330>\201^I>WR\307\2757\312\026\275c\354\022=fH\013?X]\017\276or_>\323\227\304\276cU\264>)\300\220>`\237\354\276\231\020\220>v\274\310>\241B\037>\242\301\270\276\255\337\337\2767\202\201>,r\003\277\010|\221\275w0\256\276\217\314\240<1\305:\276\254>\330=I\r\005\276\342\254\324>\224Nz\276\'V\370\276\2500\267\276G\367\331>\266\032\201>]\273*<\332\376\347>\005s\t>0\007h\276\006\td?\025\004\324\274\370\345L\275\350\220\210>\314\236\303\275\305\364\270=\214R\247<\350\332\327>\305\252S\274\004?\262=&u\335\276^;\014\277\002\356\013\277\035,\257=\357\357\256\275d\266\360\276\340!\022?O#\353=\251\362\r\276x?\356<\311=\232\275L\313\212=\365\307\257\276\001\261\013>\005\227:>?)\226>\253$W\275q\356\267>O\260\341>\366\341\007\275\230\235\315>7\317^\277\212\303\201\275W\322\230\276\223\006E\276\026\247Z=\224\266\014?\326L\261\2744Vg>s\0174\276\'\035U=%L\025?\375D\234\274\356*\305>\204:\252\275\372\2125>\234\023\377>\267\337\231\275n\007\037\2761\2029\2769\266\014?\251c\364=%=Q<\320\365\201>4h\025\277\240\341\216>I\216\347\275b\373\357>\t%.\276\030\337\331\274\226U\236>\277F\302>C,x=\031\257\304\2761{\037\017\277\376PD\277\235\231\362\274&\265J\276\252\305\277>#XJ>\035\234\254\275\024u0\2755qQ=1\217(?\006\267\254\276\227R\270=\320N\306\276\221\315\337\276\352\335O=?2#=}\2072?\223\261\005?\366\250\373\272f\240\231\275\255\205m>5m\265>\202\026_>K\355\r\277\337\212\253=\314\304\320>B\362\356>\335\235\002\276\312\323\327\2760Z\201>\277\271\210\276\311f\375\275/\256\327\275%#\364>\203\203J>A\234\244>\321*\030\2753\207j>\024\325\361\276R^*\276\233\321;>t\212,\275\370O\033?\216q\020? \255\r\276\204\336;\275\313\2770?Ie\265>4\026\271\276JT\323>\252y\251\276\036&\210>\305\242\267\276\276s\315\274Cu\352>\273!G;B\210\202>eOL?\354\024\203>\346\371I\276?\214e=\223Y%\277s6p>\304\366\350\267\360\331I\2761\226\343\2767c\230\275dS\000?\266\010\203>]\350\350\276\304k\220>x\356\002=\031\211\317>\333\335\205\276\226\262\360\276\217L\t>\355\261`\276r\236\223>b\264\374\276\226\366{>\260\275.>Xd\312\275\023\t\202>\335\200 >\312w\314\276\330\031f\277p6\315\276\257e\275>\244\250\002\277%)#>\257\"E\277\200\031\231\276\356\307\000\276\252v*?0<%\277\264\253z>9\376\026\274\344d\301=\255o\232\276\220\"D?\307\361\241\275\r\253];\030\272L>E\271=\277}N^>f_\251>TlF<\214\262\222\276v\347\363\276\252\260?>$\311\224\274\324f\'\276A\033N\275\203:\313>\222J\223\276s\327\203>Y\311\024?\301\230\320\276*8\234>\273$\207=\362a\037?\240\200\207\276g\030\262=R\202\206\276\322\302\310;\310\363\237>\303`\037?\177\034\246>\207\001\030>\276\210\367>(\301\002?\010]R\276\314\205\300\276]\\G\275\r\330B\276\032\252\272\273\274mT\277\215\273\277\276\t]\234>jqi>\366u\213=\026\343$\275\230fQ\276\362\037t>\301]J\275y|\302>\266\014_\276[\025a<\335\315\201>cl)=\004\r,>\331\257\321\276\030I\007=8\213\302>\323_\025>2\314\020>#n\213\276\037\247\031\277\177\0235\277\010\325\262>\316=D\277<\357\032;\354\202\365\276\026(g?\232\277\221>&\006!>\232\362\317\275z6P\275\310\340a=\320$\346\276M\316\005>\255!\017>/\316\225\276\376\010z\275l\315\254\274\000\367\026?X8;>q\035y>\243;$\276\023\207\033>\r\303\343>\311\227\374=\303\017a\276\327I\032>\010\254\342>q\242\275>>\352\371\263\271\360\276\n\306\017\277\030V\013>j5\277\276\035\317\270\276\347\002w=\037\264u\276\\\213\232\276\022\321\343=\010\205\225\276(V\212>~ \253=[\213\217>\3554\177>z~>>2\350\336\275\'.q>\251\2150>\263\267\316=;4%?\'\371\221>|\223\205\275\2202\340>\006E\315<=~\207=X\313z>\036\227\241>\376\323\342>\334\213h\274\267h\355\275\265\376\022\275i\324O>\354\t%=\351\224\202\276F\242K\276\214A{>B\324\002?W$\252\275\363p\247>\351\342\243\274\277\312\236\276iG\201=\366W<>\270\362&?I\r\264\275\026\247\354>\364\303-\277,}\346\276\n3=\276|\204\205<\225\356_\276[\034\327\276\220~g>\t12=\346\243\316<\371\010\201\276\346\354H\277\325\315\003\277o\234\313\276\016\325\242\276\261?\037\277t(\014\277\370\022\206\276?\005\302>}\343\205\276\205\022?\277\3338/>#\320\247\276\210\304\217\277\0376}\277\324\rh\277o\030\232>L\330\002\2773\340\254\276\001\235\330\276\216\021\200=(8/=\225\206\276>vN\260\276<\303\210=\237\004\341\276\034s;\276\201\n\253>\270\347\215\276\001\3021\277\266\343v\277\246ov>\017`\321\276+j\350\276\035\216\013\275\361\001S\275\025\260x\276\366t\254=\210,\200\277\343y\350\276\2559\213=\227\276\222\2769EJ\276\305\326\251\276w\002\000\277\304\313\367\276a\347\306\276\301\341;\276\3437\n\277H?\320\276$\252\305\276\032\303 \277O\246\220\276\312\004\216= z\256\276J\252\005\276\311\357\023\277\214\204\260>8\335\211<\2612\241\275\251\006d>\203\034\005\277c\277\213\277\367\372w\27529\217\276\346\351\014\277\243{\220\275\200\330\013\277^\023\001\277\r\376\222\276\307\\\252\276\315p\t\277p\\\204\276/e\323\276C^\014\275\377*\276\276I\262\360=W\250\237\275\010\243B\277m\3024\276\265`O\277T\234\'\275\264A\243\276&\241\216\276\242\337\224\276\212\n\037?\215\252W\276\214\341\r\277N\255=\2756\363\203\277\255\233\347\276\316\357\370\276\361\270\024?z\007q=g\202J>uk7\276\262/3\2760\025t>srd=\354\305{=\2354\377>\313\346\241>\345\242\241\276\302\027\006=\006\314\220\276\254\203\201\277h\010\367<\355<\261\276\020\265\304<>Pi\277m\211%\277\006\035\245\277\006\252\273\275\010F\001\277\371Wv\276T\253J\277\272)\210\277\036U\036?^\260\252\276\t\2011\276\3279W\276\376\237T=\366\370f=\346\323M\277\374\356\311\275\037\001~>\241o\216=\030}N\277P&\363\276\316\354\310>\310\244\026\2761\rX\275\355gu>\326\032u\276\211\211z>$]\343\276p\364\341>\311\302\303\276#\324\303\276\356\037\247=\311i\">\312\0267>x\316\233\276\306\327U\277\3722\364\2760\372p;\306\275\372\276\003\242\343\276\305\214\221\277\221#\336\276,\326\375=\375\323\r\275\351\230\310\276E\210\305\276rg(\277\372Z\034\276\336\030:\276\21171\276kf^>\220\003\361\276R\202\316\276\035\3754>\203\273\032\277\227;\204\275V\004\315\276\365\265<>-i\372\274\240<\212\275\026\014\023?ZK_>H\0239=zXM\276\032\244\213\277W\350\004\277\255SO\276\260\261\007>\225\027\333\275)\351\324\275\213/\313\276R\342\257\2765\342\231\275\275\315\357\275n\210V\276\236\321\257><\327\030\276\267\227~\275\234\236\021\277N\234\014\2770\273&\277z[\357>V\013G>A\'\231\276\203\343\202=\363u\231>\010\263\275\276\326\365U>\270u\301=.wb\275\317\200\266\276.7W><\274\357\276`\"]\277\372B\263>\255\300\007>\271\251\320=\024\177\035\277\206m\t>;\220\324\276<\005G\275\340{\n>o\020~>\337D\334>\023\322\017\277.%=?\241\014?\276\211\250\032>0\253\260\275A\204s>\261\244/\276\223=}\2761{B>\221\233?>\313\354\303\273\243\223\220>\223\032\345\276\334\346\304=\216p2\277\372\205C\277\277.\204\275\214\353Y=b\017\375\276J\316\315\276\276-\240\276\265\346\233<[<\352\276g\001\252\276\010bY\275\206x\016?\313\365\242\275t\274I\277\211\211!>Q\033m\277\347%\276\275]T7>\227#\016>Ro\332\276\342\006}=D\353\233\276\003\347\007\275\353\311\276=\225c8?\023\307U?\315\244\301\275\367\nK\2759\321\257>}]\252\275\004E|\276\236\260\247=S\215\t\277\225W&>\000\220\211\276\237\211}>\230(*\277GT\307\276[\352,>\3102\251\276\250\006\253=\255-\004\277\301h\211\275cq\214>\315O\"\277=\372\014=\335\313:=\000m(>\333\232\354>\267~G\276\254_\024>\327,U\276D\333\006=\035\364q=\377\232\374\276\375}Y>\025}\013\276\026\027\027\274{\201\241\275\034\207c>\330\"\303\276v\337s\277f\224*\276EQo>\374UY>\375\372\234>Z\013\024?\200vE=z\232\013=\353\254\225>\221\241\254\275\3101\211\276\2668\371\2769\270\340\276\235\022\350\276\211\217=\276\342\307F\275\355\276\203\274\203n\212\275\253\314>\277\351!L>\021w#?<\032 \275\261\362\347>U\320\243\275\006]\253\276\225\325k\275\255w\317>\317F7>\203\216F\276\037r\023\276\014\332\033\276=w0\277WO\242>\247\262\213\275\232\264\203=xf\271\276\004\351=\277D\221\300>\267DU\276\270\361\247=\224\n\315<\356\037\177=\253\256\261<\301[\302>\224\005\264>\332\230\375=\027\227\031>\031\211\263\276L3\334\276pmN\276j\240}=\202\215L\276|\251\376\2752D\207=\372\203\302\275]Px\276\212\234\201\276\2619\334\276IlG\274\355\324\251\276\300\334\347\275\357\206O=\034B\315\276\274c?\277\265\304\017\276\225?\025>\321\257\341<\326\206N>@P\014=\350j\224>D\367\247>\344\207\316=\320jA\276\324\374\256>\334\226\221\275\216e\010\276sF\211>\311D\324\276\'\025\257={\374\345\276IP\266>\247\032\002?\204\355\372<\353\024\277\210\343\217>\232\341\317\276\363\274\222\275\265(\265\275IVH?\222\010\221>\004\364\255\276\001\326\317=\214%Q>o\351\t>1\366i;\3536y<\257\023\356\275\232h\017\277/\344\177\276\2246r\276p\226$\276k\203\006\276\277D\341\276\251C\270\276>\304\270>&\276\356\276>\234%\277\003\351\202\276E\021\202\276\003q\226\276Q{0>\306\356\'\277@b\210\276\323\211\007\277\330\034\021\276\267\277Z>\004\201\347;b\272\276\275\221\345\260\275\277\342\256\276nA\300\276\016\'\000\277\007\275\274\2750\024\272>\212c\000\277\300n\320>/\235\\>\206o\315=\316\"\317\275\025\2449\277\216\001\235\271\323\013S=\377\374\330>\375(\013?\177\221\177\276K0&\276#\\o\276\263`L\276\215\252\222\276\212^\273\275\231\010[>?\275\306\276yR\322\274X\304\226>\331\\?=\t\221\203\276g7\267>\006;\275\272$\365\230\275f\375\'>P1T?mo\255>\"\341\306\276\233E\242\276\213\306\006\276\322\302\336>G\3300>\233\005\027\276\310D49\2673?!\306Y\276\314G\022\276\325\374\344>\2516\260=\366s\030=Z3\024\277P\337\346\276\256t\371\276\375~\213\276\333a\227>\257\225\002>\321R\233\276\200\261\210\275h7\245\276\360\334y\276\021\240\226>\3073\025\277L7k\276O\302\223>p9\211\276\244M\251>%.:\276j-Y\275\312c)\276\230\377\263\276\220\032\207>\317\322\366>\211\335\017<\333\247\246\275Qx\321>\306\306\006\277\327\301H>\227 \205\271Z_=\277\304\317\326<\033I\221\276\035n.>\002\016\300\276\330F\020\277\337\300.<\207C\310;\341\005\342\276\241c\265\276Y\225\360>\214\"C\276\'\3776>\217\230\311\276\262+\006\277\244\251\337>y\007\275\276P;\254=\245\215\270\276\251\004\215=j\225\340;G[\r=-\214\200\276\234\260g\274]\272\222\276J\031\345\276\370Sb\276?\t\350>\200\'X\277L\275\313>\235\3502\276\366\243\200\276t\364\211>\267\251\354>~/\277>\233\262\001\276\350\240\356\276\330:!\274\020\322\255\276\361\310\t>\313\351\231\27628\213\277\000,\300>\260b\001?h\0030\276\234\037\005\277\1779B?,Y\277=\375B\213>\271*\307\276v\247\017\277C\t\023\276\305\001y\276\320\356\r\276\350,\225\275\037\025\026=\251\241\253\275\252A\307\276\252\242/>\367\267\240\276}\332\025>\306\341\306>\243\032\032?h\352\313>\336\004\321\272\317\326\335\276\347\361\213\276\224\310h\277\312/K\275Q\000\350\276\362V\312\276\327\363\201>\310\227\220\275\000\353e\276\242b\255\276\211=\240=q\325??\020\n\226\276\306\274\313\276w\0300>\333\302C>@zY\274\276ie<8\035M>jM\255\276\"v\326\276\252Ul\276^\202\221;yH\200>m\312+\277\\S\321>\010\255\350\276\373\327W>\020\266\310<\2718\220>\035\237\321>\277\336\317\276\337\356\313>ol\214>WV5\274\267\013\004?\311/\253>|,#\277e\314+\275\341\362\274\276\201\307c>\272Xn>\324\214\265=%\007\277>\244\251\237<\343\333\307>W\361\224=%3V=\367\230/\276\200@\362\276\303\n\342>\331\323\024?\232\034\005>\306\307O\277\345\030\024\277`[p\276qn\000\277B\262\246\276\246H\331\276\277\240\213\276:\362\233\276\272\365\026\275_,\241\276\222\250\236\276\263\r\201\276\322\214\022\276\034\030\002>\305\373\027?\257\301E\276XT\242\277*\272\017\276#\004\216>\005\330_=\336\014\001\2768s\317>\3608\223>S.\271\275p\022/\277\336\227\221>Y\203 \276\345\017\214>\3563\336>2t\250>I\032\205\276\262;\363\275\031w\247\276\013\232\311\276\331\t\212\276\275\351\000?\334\307{>\252H\231>\216\037\242\372\033T\276\302\321v>+\255\347=T\341m\276\261\342\343=\324\265->\211^\'?\375\275h\2751\274\247<\270\200\360\276\237B\370\274cFV>\254V\211\276\314$\210>}\323\322\2765/\375=0\361\251\276\240\361*\274\313x\002>\n\024\200\276\"\313\351\274KY\307=\207\271\323\275\r\014\033>\303-\007>\215\333%\277/:\355\276q\r\312>\005\312p\275\235\223\265\276\2217\020<$\255O>kI\202=\307\2614\275\004\265y\276\024m7\274\027\275\343.\213<\276\224\316\261\275\271\317&\276\203\371\333>\355x\276=\221Q$>\346R\224\276\241?\227\275\260\320\227\276\365\263\t\276\254\301\264\276\224\253\224\276K\307\232>\225\365\202\276\247(D\275t\0043:\'\200\t>H\313\372>\243\023S\276\203\'r>qP\340\276\232\244\223\276:A\201>&}J>\351\241\221>\306\2427\276\263\274E>\252\252\023>\350:\222=\321\360\304\276\367dx\276\254\247\354=\333\024`>\0045\026\276A\264\232\275\256\317\316\276\017\'\253\276\265B\032>\3551\217\276/\277\037\276\302`\301=lf\272>\\1D=Srs\277\034b\301\276m\217$>{\251\003?8\240&>P\205\276>&M\214\276\356\240\343\2761u\262<\231\333\373\276\367\212Q\277\242\354\201\276\025\034_>\033;\023\276&r\236<\231C\255\276\244\n:\2773\226\342\276\331\312\304\276Iv\324=S\275\337\274\250\004\214\276u\256\036?\350\266m90\233\n\276\354\333\235\276W\237\030\276\245\020`\276\240M\352\276y\213Z>c\200\250=\033\364\222>\356\216\234\273{`\006\276Tb\200\276\242:\247\274\372\201\201\274\371\3672=\212x\223\276\353\325\035\276\253j\203\277\337\320a>r\003#\275\2678\315\276\177|\361>/\273\006<\360t\266\276<\304#\277\373\013\001\276\021\230\267\275i\177\216>\262$\234\273Y\252\235=\035\232\266=\315\332\257\275\373\034W\276\2470 =,3[\275\221\263\247\277\037F\233\275-f\214\275\375m\315\274\345_R\276[t\313\276\334\2540\277\240\374\271\276&#p>O\333\276\276UO\016\274lGC=\311\312\255>\365\263B>\2644q\277\262\353\346\276op\004\277\267\262\210\277\212\345c=w.\034\277\222*h\277\217\367\022\277\250\262-<\312\214\000\276\272h>=\243j+>\023\366;>2\rW=\2740A=\\lv\276\375\371\223>g,\231\275\005\250\227\276\217\360\272>\260\3460\276\212\342\303\276\221S\332\275\221l\300\276\314\273C\277\317\007\221;\216\345\215>\351w\327<\226\350~\2771\221\261\276\342N\355=\220\325<\275\\5\370\275\246\307\274\275\r^\204\276\335\263\237>X6$\276\244\332\342>\305\303\317\275\325\335P>F\221V\276xq\210\276\264\277\326\276\251@\007?a\215a\275n\366\220\276\204O4?x\306\216>M\342\223\275\243t\210\274^\001\026?\257\234\324\276\005\240\221\274:\260?>\221\354\242>#:Q\277\0369B>3\323\304\273\210u\240\276\334\254\212\276B:#\276> \350\276=\035\027\277\242\210)\275\023k\330\276;\302G\276v\312A>z\351\275=\265{\344\276\253\225\341\2762F\313\275)!M\276\237*\327=\247\363\204\274\343\266\206\276\224\"\352\275pC?\277\021.\214\276^\302-\276\370p\311\275!\244\247>\207\014C>\013\364\222=J\332\362\275\000\207V\276\326\221\206>~,\005?\330\231#>b\203\037>\204%&\277\016\342V\275\020J(\276\016\314`\275\005\247\333\275\333!\354\276X/\260\276P\027\037=-F\320\276\210R\310>C\310\030?b\235\271\275\301\335\201\276\345\222\260>\334\001e>\351e\006\277\024\273\\=\371\243\373\276\272b\004\277\243#\332=\034v\006>w;m\276\246\223\007\277\2029I\277\n\331\240>\234\027F<.\216\177>p\254=\277\231\024\310\2762\360v\276\201\037\316\276\274n\360\276)#q>\024\352\"\274\252\260\004>\253:\n?\260\245\352\276\3618V>\037\247\002\277\376O\025\275h\302\372\273c\321\334=\254\323v\276P\305\206\276\"=l\275\257\320\231< \244\007\277\332\227\252\275\260]\312\276f\2338\276\245\003\262>\213\241\237>\311\374~\2766\216\223=\3434\366=\307%\227=\240\255\227>\260\nB\276n\217\260\276\200\025\274\276\316C\241=\345I\266\274\300\346I<5R\263\275\253\'a\276\302b\200>\002\352\341\276C\267\234\276:$\215=\213c\310<\361\246\r\27711\214\274\365 \345=\372\376\253\275S\353\205\276$\362\\\276\265\033\003\277u\305\366=s\254\005?\304\032\201\276\223\\\322>\371<\036\276&`g>2\233\212>/\243\370=\342H\320\275\270\333\223=\207\027\210?m\305\276\275aJ\220>\334u\017? \245\\\276\214\006\027\276\244z[=4\316\005\277\260\354\323\276\252S\345>\311R\024>\004\261\275\275\276\023\206\276jK\346<\366o1\277=\3556=\271\220\274>\023\371\t\277\346v\264\275\242\026y\277\242\2138\277\355\223\266=\351z)=\233\010\321=P^\225\276:\372\032>0\337\264>\3104\230<\t\333_=\257\212\337\275\244\300\261>\242\025w\274B\376\225>\246\3466>\337\n\273\276\004\373\314\276\346W\356\275\r\233\035>\033/T=\2056\017\274I\245\224>\027\227|>\032E\255\2756 K\275\365\010\233\2764\014\276>\221Cj>\21000\276\223$\335\274\210\370W\276\325\"\246=(!\234=\213\256\203\276fTI=\344\230\203=\234\035G>.\243\244=c\232\025=\\\251;\277aaU?\356\333\230\276\027W\224=\025Z\n>K\271\231\276\237w\224>pP8>|n\343>C\r\306>\273\274(\277\265\317\037\273\035\220\200:\315\254\367\276\344\301C\276\237\"\317=\336\327\016\277\211\234K>\017\005\"\276l\220\037>U\371\026\277_\331\336\275\002Ic\276\211~A\277\364ri=\177<{\276vN7>\300\261\026\277`\304j\275\337\205+\2754\036\355=B\322\303>\023\340\207\276~_\247\273\362\355\321\276\224_\244\275\315\221\206\274&\3159\276\344\310\377>0\340\222\275\354\320\316=\226\205\202\276\354\336\320\275\266\312{>\336\017\246\275\302\373\023=\r\370\364\275Z\tP\276\210\235\331<\245\032\201>\031\323\004?\024\006\305\275\231C\341\275\216\212\255\276j1O\275\213\243\264=\317P\204>Fw,\277\225e\223\276\022A\350\032\354*>\201ZV\275#\2527>\352\005\274\276\000Ma\276\357l\244\2761e\362\275\336}-\276.\305\324>Jx\310\275%*\322>\267\025\261\276;7\353<\000p\245\274\264Z\233>H\252\336>\323&\000\276\330\263t\276\325Hp\276n\303k>v\264G\277\027)\252\276\310\220\360=\201\233\331=H\260\032\275;\003\246\275*\275\255\2767\\9\2771Z\035\275\030I/\275\341\335\241\276\247\336\323>?\275\351>\0142J=UV\351\275\026\362\'?#\374\262\303R\276\024%\205\276\342GE>\260\315\010?dki=\006\364\206\276\326\"r\276x\036s\275\271\331\331>\232\206\345\276n\246\016>.\325\216

\370\276p\353\271\275@p#?\220\367\261\276\267\'\036\277|w\336\274\025#\006\277\351\255\030?\221Q\221>\275\370\301\276KP\"\277X\232\223>\251\'\207\276z\020\257\275\007\274\221\276}x\031?\232(e\273\262\027*\277P\321%>\276Ps\276R\206*\276\307\325\374\273V\353W>\025\377b>>\275\251\275D6^\276\370\314\303>\277\345\025\276\245\3566?\242\035\316=W\212\257\276\177\372\007>\226\230\215\275Q\226\226=Ap\237>V\315_\276\270P\001>\266.\257\276\217\317{\277\206\311\200>\003\327H\276\023uM\276\355\361\010\277\323F\347\274\224\"\360\276Ct5\277\0376\264>\024}\001\276E\234\335\276Q\2024=;\033\036\276\275z\321>\355\361\177>\005w\006>\206;\317=\247u%>\325s\346\275H\315\203>S\345\343>\203\315|>\027\177\212\274\303\250\256\276 $\214\2764\354\214\276\024\033W>\323\335\224>\264\351\036?\013[\203\276\037=\234>C\254\375\276s2\276\2761\210\205\276\036\300\201\275N\376<>O\3644=\344g\356<\323\0306=/\320\026?\343\360\225>\323w\362>\353\3127?\014\205\202=\221\010(\276L\226\302>\377\331!\277\025-\034\277&/(>~\333\322\275\312\314\341>\267\276\231>\222\316\243>{\000\r>\371\276\227>\341i\006>\237\004\n>\n\263\007\277\211\035\316\275\021\316\016\275\"\265\320=\t_W>\025b\177>}g@?\205H\205\276\305N$?u[\241\274\323\275\201\274j\014\200>\3217\235\275U\010\300=\2604\237>\376s\032\277i\'\273>\004\354%=\031\236\342\276\214\274\005\277\030\321\360;x\214\233\276\201\365\220>\321\341\203=\373\343\036>>K0\2760D,\276;\307 \2763@\022\274a4\020\277\232L)\276\013e\365\276\2761\030\276\020\035\204\276\235%X\275\250\356\325>\315\256\336>S)\374>B\002\235>\311j\306\274\223\212\260>\365D\033<\001\267\260>w\240\356\275^\263\213=o<\257>\265m\272\276\317@\372\275\266Z\371>\034\"\377>\021\256\024\276\317\307\230\276c\004\207>\036\237\224>\247\346\367=\020\216\306=x\006\316\276\244z\r\276\267j\372\275\362\327\255>\034\0140>\177\265d=\366TV\272\370j\245>;\013&>\370{O\275\311\365\303>I\316\205=F\372}=t\360\223=P\355P\275S\327;\275s\025\267=\360\020\367\276\330\206\353\276\303)\333=d\371\246>\235\373/=\373(]\275\373l\275>\235;A>X\335\321\276\273\242\203\276\"\301\345\276\360`T<\031\263Q\276J\267\374\274\314\372k=\305\223\014=\351\221\276\276\033_\003?\035\323?>\035P\244>\230\366Y\276U\204\273\2752TZ>\303\351\345\276ol\321>\271E-\275\200\354o>\000\227\224=x\214\362\274+[\211>\370\"\t?\263t\205=\367,\220\276=\234\207=-\240$=r\005\177>P\271\267\2762e\344\276,\235\\?c\200\277\276BH\014?\000\364\242>\336V\331\276%F\230>{\302\r?\220\346\247\276\321G\320\273\206\316\026\276+\023\217\2759\251<\276\325fw\275V\205\244\275\263|1=D\220\347>\363\027\003?\375\262N?\000\213\200;\312\220\'\275\330o\273\276\305\332\342\275\360\022\246>\303\305\r\277eO\334>\r\231\320\276L\212\370>\323q\023\277cW\n\276\177s[>\027\321\241>\300\255\253>\332\303\322>\361\340\343<\n\340\304>\2649\207>\373f\341\276Zj\330\275\336G\222>\222\257\037?\200\225\213\275e\360\016\277\255J\261\2762g\342>\202\220^?/R.\277\'L!>\216\277\253>[m<\276\010a\370>f5#=\233]C=UGa\2762d\026>J\232\262>^\023\331>_o\217>\2230\023?M\035\200\2762\250!\277\211\025\372>\202\032\210\274Z&w>\313\263\264\2753\253\025>T\234\262\276\236\354\234\276Dg\033>]\200\206\275\340\r\243\275\234\035\000?\013\341\254>\324\330\331>!\t\031\276\303\352$=\302\014\311\276\323\373\030=\223\200Y\276\353\253\233=\366\021=\277\205\333k=yW\277=u\214{\275;\325\265=\374\007\275>9\316\371>\005\305\301\2768\275\337<\231\3264\274\261\035\250>\375n\364>\270\340\037?\210\272\232>x\331\032=&\t\354\276\230$\205=\231\315\252\275\355\000-\276\0047\000?\025\005\202>\362E-\276\'P\302=|r\226\276}|\240\276\013\275;>\305\241@>\232\035\362\275\037\026\212\276\007/\273>\014.`\277\331\356\n<%\231\235\274\273\312\003\276\254\3124>\3461&?*\261y\276\226\000\334>t@;\276\307\024S>`\340\017\277b\266\214>\215\313F>BT\373\275R\312\230<\303\363\377\276`0b>y\203\225=\220`d?\210Z\203\277\274Y\224<\261\034\247\275\2675$>\201F\273\275\244R\n?\254Q+\276\241\344\'\276\250p\026=\355\241\203=\004\017\343=X\265h\276\2758\007??\216D>\343\302\351\274\377p\235\275\313\276R\276]\233\311>g5\203\276\312\n5\275\354\025\225\276\224\017\210?x\201\317\274l\322\000?\203\352\211=j$\276\275\027,\260\274\3736Z=\032\207G\277T\214\212\276\203\003\031?\216T`<@H\273\276\014\365\304=\317\311\342\274\002\016\037>E(\235\276t?M\276+\270\203\2769\336\n>\267\310\355\276\217\275\205\276\315\355\237>\365\2626>\010\375\206\276\017A]>\267\016\377\276\313\337\007\277w\026\243>G\315\226>\006P{\277\014\263\212>\025FM\272\346\000*\276\025\"\023\277\001\323\203\275\037\235#\277xR\215> }\231\276T\301\205=\211\310\021>z\265\002\277\206\200\330=\333\'<\277\354\336\244=\317\331Z\276\205\220\010\277-K\240\2767\326$?\311XB\276S\263\340>H\254R\276\223d#>\351\346\325=(\033\241\276\014_?\275\343\272T>\343\374>>\227)\202=\346\r\210\276\211y\r>\217\317\333\276`\036w\276j\352\315\276\0279x\277\347\331\031\276\377\034\270=\227\330\341=\265\272\254>\001Q\214\276\006t\031=J\005\020\277\207\271\206\277b\323\326=\034\t\267>\330\002\341\276\321\272\203\277\300\245\'\276\tIA\2758\202d\2775\014\240\276\n\301\n\277\013\rZ\277\306\312/=9aT\276V\317$>7\206\313\2768%\203\274\230\010?\276\220~@\2777\342\205\276\254\225\217>\030&\236\274\357\224\326\276B\244\004?\361/\352\275\363vk\276\004\335\256:\363\261\024?Z\036\003\277\231\021\217\276\3539O\2767zj\277\007*\370\274\357\303\301\2751\030\356\275\302\324`>\336\000\211\276\253\372\277>o\377\334<\200\024\034\277\376\266\r>`\314\370\275\211\214k>\3039w\273\263F\\\276\356\021\276\275\'\024\373=\317Y\270\276\343xi\276`\330\212\275x\375,\277d\200!>\330\274\2768\310\005\277\364\022\203\274\364\313\222\276\267\275\014>\330\254\263\276\304\232\245\275\233z\210=Q6<\276\276C\224>\236\206\003\277\313|\205>\323\026\304\276\242CB>\276\310\266\276q\315\276\276\321\n\177>-e&\277wB\">\002\341\350\276Y\231\335>\3512\230\275\260|\244\276\276\222\253\275P\340\226=&.^=\355!6\276L\\=>\341\273\251>\232]\356=7!\037\277u\243\034\277\242\333<>\224u.\277\002D\314<\013%\300\276\024\344\372>\237\243\234>\t\235\t=\217y)\2776\216\334\276\017m\002?\031\226\205\276[K\315>q\027X=\002\264q>3x|\277;q8>\010\345V\276\207Z)=\325\2757\276\036\314\200=\343EJ\277\013=\201\275of\214>\2402\017\277\205\020\233>\364\347\246<\347IK>9j\337\315Vt>\311J\010<\007\262\204\276\305\366\315>\330\250\227\275\256x\265\2764\314\'\276\005\313(\276g\3763=\016\360\323>C\357~\2767Z\'>S\024\367>\254G4=}R\323\274\020\230\203>`\327\255=\326\213/?\353S\234>\307\362\216\275}5k\275Mk\264\2762\263\273\272-\035\222\274!D==m\330\201\276\251\311\037\275\335\200E>q\363\242\275\3040\375>\232)\254\276S{\215\276h\351\221>#@A>qQ\264=\277Cg?\002Q\013\277?\307\222=\0045\262>zt\031?\203@,>\335?\r?\")9\277\021\214%?\356\347\206?\000\007\363\275Ei\024\277\310\264\311\276\227\355-\276\245\027\245>!\025;\276\211\267\250>\005\251\243>\202\226q\275\245\315\227\2769\216\321\276>\027\351\276\310\025\311>oC[\276xn\004?\337\232\233>k\213\031\275\237-\002?\217\2412\276\227]\221=HD\274\274n\256\251>\311\263\"\276\')b=\025p7?\377\331^<\237\226)\276\\\221\034\277=]\t\277\233\010\201?\201\002\026?\021*3\276\235\220v\275*\357\r\277?\210\002?\240~\334>r\256\204\275\323H\010?d\036\262>\245Q\305=\257\221\235\276\035d\333\276\301L\217>\315\320\215;\006\320\224\276,\330n\276\226\256\235?\300\272\276\276\332\003\307>B\256{\275\3336\244>\221\274]\275+CH>\n$!\277\027\2475>\216o\252=\313\034l\276\235\256\374>\274\220\313\276Sx\250=\253\343\213=\207g\003?\261\r\000<{\337\370>]\330+\276\337\255]<\215\2525\274\035\306\321>(g\350\275\275\246\267\275\023\376\317\275\024\205\020\277c\326\214\275p\034\005\276\350\272\310=A\377\223>\013\314\332\275u\210\000\274\331\340\202\276\303\'\013?\321e\374\276\277i\001\277\310\363\267\274\303\370\000?\256\307\246>w\201\001>\355B\212\276\t\261\000\277\232\323\007\275c*\307=\360\376\371>\377\241\021\276\246\204\350=\252.?>\356H\266>*\213\224\276\246\367\221\2760\241\266\276\266\362C\276R\223*>El~>\233\027\200\275or\212>.^\322>F\370\003?\223\010%>\316\333\225=\265O\332>I\204\201\276\330^\205>\327\354\335\275\254\024\n\276\244\210?>\304ud\276u\253\224\274\271\344\343\2769\227\002\277_\257\212\276`k\203>\241\206\301>e\356\013\276,\250\302>\202d\023\273\006\346\376\276\320\001\034\276M\377\365\276\247\254a>\322 r\276\000\250\000?\226\372i\276\302\274\220\2762\267\300=\372\014\016>\264\230\252\276\354\024\330=f\367=\275\315\353\370\273\347~~=\276\305u\276\236\264*>9\326L\276\265m\217=\'xc\276+\0260=\256\243b>i\004x\276\356r>>J\034=\276\350#@>Z\202\221\276\336\3575\277\367\256F\276\327\236\323\275\030\004\n\277\017\330)\276\r~\220=\233b\034>U\243\001\276\264L\254\275\000\372\372>\222\223%\275\031\213\344>\256\354\t?\023>)\276\307\320\255\276v\002\005\277\240\007\206>\0027\342=\022_\250=\023\247\364\276\324\360e=\224\262:?==\227\275)X\273\276\314\246\n\276\354\017\377>\271l\316\272\330h\221\276\353_;\276@P\000=r\201\207\276\245\t\217\276\242\332\335\276h\212H\276\361\307\202\276\346\362\270>c\021\202=\350$\227>o|K>\375\210\342\274\251m\351\275\275\330\354>\256\003-=\217\341(\276Heh\275j\212m\277\005\233)?K}\206\276\260\357\244>6\372\215>\213\021!\277\004Cd\276Du\314\275k\223<>t\205\035?\371$\177>\373\377\203>Qy\000\275_\315\323>b\025\301>\016D\010>\323\030}\2775\361\026\275\216d\230>L\230\323>\357\337\006\277\303\321\225=\241\215\266>\037\324\320=\030pB\276a\360\223\275c\333\212>\247\226\246\276\336\377\013>\377\314\227\275y\223\021\276\000\027^?\345\273\247\276q\357\027\276\037H\326>\n\245\244>\333(\345>\244l\277\276\314\227\204>QD\350\275Q\315\014\276c\030y\274\340\037\000\276X(\335=\202\216\232\275\220\036\346\276\277f\033?\323\024:>>\321\236>\017\256\310\276?\240\021>\034\350d?\034\220\004\277D\031V>\\7v>\001f%\276\332X\200\276\025\304\207=\336\\\333>\250\360\032\276\311n\220>\2406\023?\370\314G\276\331#\022?s\306>=\366\201\235=\372<\317>\000+8=\301\000\265\274\265\266\212\276\213y\366<\356\357\001\277\2006\272\275\n\276T>\016\363j\276ca\033\276U\260\231\275\036\243\204>\024\262\031>P\246\325\276X\363\262>\251\366\253\275:\212\216\276\272D5>\251\214\215\275&\355\207\276\231\2532\275\302\'\r?\257\303$\276T\005\226>\336\006U<\222\371\260\275\2758\331>\326f \275\267\211\223>\025\234\220\276\215\351\030\276\360\346\316>4\314\013\277*\301\202\276\366l\316=\263<\352>\221\223\216\276\005\215\200\276\022\033\026?f\334B\277d\273j=\375\345\345\303-\334\276\356w.\276i\207\246=\347u\252><:\037>\rJ\207=\226\251\260=+\361\371>\177w\216\275\212\374\272\275\350\371\301\275Lu\354\276\257\347\017=\346\002\224\276#\322{=(\023\306>\'\277\201>\022\020a=CM\222\276\0248\236>B\355\326\276\322\231\337\276}\277{>\321W\025\276\327\337l\275\276\221%\276\266\343\252\2737J\355=K#k>bDG>\2469\234\276\rjO=]!N=q\272\271\275\001\362\233\276\030\007#>\244\230\346>\370\342\177=\004\0201\277\024\276\314=J\000F>\274#\310>\024nH\276\245\035\227\276\343\213`\276\261^\206>\336\300\003>;\0047\277 \225\213>g$l=\333!\200\276\326/7>\276\307^>\025o+?\327\207\231\276\\o\310\276w\213\224\276\"\2052\276\216\357+\276^ i>\362\325\316\274&i\325>G\352\365\276A\250z\276\203\t\210\275\3222\005\276\027\254\326<\314\261\207>0\223`>b\272$=\007\353z\276Jr\370\276\033N\313:{Y\027\276\215\261\232=\245\371\343\276K@\370\276\360\261\314\275).\265>\216Ka\276\035\347\311>\335\312\025\276\006\346\216\276d\212\312\276I;\030?\313U\017\276\355t\\=\364\327\233\276\177j\026\276\270\n\361\275w8\315>N\276\345\275\\p2> c\257\274/-\250>\321J\232\277\256\227\354=K\346\271\2768}\230>Z\250\245\2749\024y>\366\320\006\276\267\312o\276\200\324g\276!\342L?\337\267\213\276\374\263\226=\351\255`>H\243\201; \r\234=\000\374\031?\244\354F>\331\007g=\342\213g\277\336\335\023;\035>\177\276\244\253\302;\010I\"\276;\302\227\2763j@>\003\243\234\276@\372x\275\213N\307>\020\004\364\275\3464\373=\014qZ?\306\026*>\231#H\276\017.I?\377r\272\276\215\205a>\2605\202\275\253\377R\277\314aW\274\357\365\202>\335\371\241\276\367b\205\275q\246\311\276\202\032+<\256:`\2763YI>\251\374l>\350\372\245\274\307\206X\276K\325y\276\375\320\017>G\256a\276\3522\222\276\324\331\213>\316S`<\231pF>\200#|>)\013I\276\346\271\323\276\364\323\010\276*\006\260=\324~\345;\266^\232\276\240\346\306>W\343\306>\002\353\201>E\242r>\374y\314>\243\tl>\361\362y>\034\376 \2757\3038>dK\227>\253\332\227\274oP\033??\357\327\276z:\222>\t\356\021?j2\273\276I\271\375\276\200\333\221>s\337R>\374\363x>)\242\264>!\204\354\275\212a\256>\237\346\226\276\234\204\327=\014\366\177=\250\351z\276~mG>\'h\272;\236\225\315\276\272\234\325\275\262\214\035\270\267r\367\317\216>\317\3002\276\244\234f>\016`0>\245r\037\276\273\244T\274\277\217\374\273S\352\375\276\274\214\206\276a>B>\321\361\215>!#\330>^\261\226\273\225\223\016Z9\211\276\004\274_\276\034r\212\275}\212\256=a\316\337\276\326V\340\275\227\343v=\356\244f=\016T\010>\235\353\230\2767\242\026?\371\354\307>\244\221\275\275Ds\237>\205\246R>y\263\221>y\016\206>*,\207>fP4\275O\271\273>\312\341r;\303C\027\277=\353,\274F\232\217\276<\331{\276IZ,\276\216\"\017>P\312H??v\244\276\017$\017>\016\006\271\2765?\237=6\365\013\276\325i\366\276\325\032\330\276(M\240>\246\320\031\277\243\233\353\276\344\014\241\276j\304\r\276\346\365o>\')\236\276|/\036\277\332\034+>Z\301\025\2778j\034>33\301\276 B\250\277\333\274\350\275\265_\316\275\373\377\255>\322\242\366\275\217(\363\276\263*\203\276\007W\360\275\244\225\036\276\360\255\323\2758\317<\277\210\231<:\027\016\r>\024\252\215>\'fN\277;\211\003?\021\331\270\274\226\314\\\277\037\244\213>\372\243\006>, \242\276VB\322>\271Hb=\276_\034\277\0300\001\277\037W\213\276G|\212\276V\\\016\2765\037\306\276\372\363H>6\357,\276\"\030\264=\251C_>\313\204\220=k7\013\277\"\353\243\276v+u>T\206\031\276\335\2028>\356\202+\277\206R\223\275T\357\222\276\327\002\201>6\260\273=D\270M\277nj2\276i\251\340>C\271M\276N@\'\277\302\307\211\275R\327#\277\016\217\335>\253\372\210\276\362P\316\275@\327\034;\313\371\260>O~\233\274\342rH\2774\035\344\274\256\322!\276$~N\276\014\n\032\276\330:s\276\373p0\277\204\247\014\277Jw\343\275\216\361\377\276\005$\241\276\351\006\217\276\270\336\023>)\n\274\275\315\017\"\275t73\275o\261\261>\\|\265\274\235\365a>\214\256\325\275Z\246\221\276\361^\221\276\372t\304\276\316f\006>\322\226\003>g!4\277\234\230\212\276\207\3146\2769O\220\276\352\250\316\276\304G\370\275]M\235;\356\363\013\277\020*\360\276@\362\246\276\321\210\256>\250\305\222=\257\322\005\277\r\210\241\276\241\263,>\255D\333<\022G\217\274\t\310\264\276\311\020\010\277\362\037\325\274d\017\205>\003\2057=\027\346\212\276$\323\215\276\347\357\320<;\301\004=\300\210\275=s9i>\301\217\261>\t\327n>\232{\367=\006\3478\277\203Q\232\276\346\n\212\275\3714\324>\270\2204\277\323\305e>\356\"\035>\023\264\031?\303|(\277Q\001\267\276\2006\262\2761\020\016\276\315\010\320\276n\346\267=\306V\324\276\272:\007=\252\0373\276\315\306t>\302\"\r\276\274\320\317=*\352\306=T2\216\275\016M?\276\213\334e=3\321\022=O\014\366\275/\312\257\276\021,\376=R\320\315>6\320\221=\217\357S\276\016\333\004?%\253\211>)\031\377=\207F\362\275\305\"m?u\252\033\276Cu\341\276\217\013\017\277\"\356L\277\240\322\263\'\204)>\030\343\262>\230\203\003=5\327U\275j\333\224>V4\005\277\321[e\275w_\022>\021$j?\004\341\357>\301\272;\276\355|t>\017\315\030>yI\363\276\316\"\204\275A\031\003?oQr\276\323\316\246=\277?&\275\2108\226\276-\354\301<\201%\373=V#\327>P\336d\275\240\232\253\276\346\225:\275\346\247w>\355\027\242:\254\3430?\376)\013\277k{\304>\346\n\254\276\020\343\204>o\177b\277\234\273\027\277F\221\347>*\333V\275-\262\263\2748\264\005\277\036\035E>\035\226:\274\373\320\205>\' M=\200\201j?\234T\'?O\345\237>\004\271G?\216}\342=\0221\225<\341\\\016\277\305\236\024>\311y;>\330X\255\275\344\370\177\276\350\223\326=\273t\272\275\301\274\201\2761:U\276\236\r\313\2763\317\240>\026\351\216>\024\207b>\323G\223>\2349\001\276e\232l?\006\035\r\275\302\275^\277\023\215\374>\373<\377>\2464F?y\237\t\277\372\232\001\277B\327\263={PE\277\035\221\006\274TB\t\276\303\327\341=\317\214\252\276\010a\201\276N\251\216\277\326\225\277=\371D2\275\335W\031?\2551u>\033>\226>\360^\317\276\244*\352>J\370\001\276\220\246\221\276iA\354\274|z\302\275\357\255v=\254\343\326=\310\363\240=\026>\010\277J:\n\276W&\344\276\324\331\020>AV\242\276.\262\326=\374i\331\276\010\000\034=\023\214{\2760A6?\307\232\264>],\"\275\033\244\007>\373)\261<>\223\210>\277\340*\274\032\276+\275-q\020\277J\236\221\276S/\'\276\245A\014?`jO\274\224\314\243>\351\270\363\276\324\335/>\233\231\026?grY=\273d}=C\341\231=u\323\224\275\016\317\242>\205+\374\276\3113\020?\017\323.?~F\242>\306\352\260>:\310\347\275\345\371<>\014\345d\275~\2421>R\255\271\276t\254\326=\345\r\353<\271i\247>{\034^\275\016R\231>z\024\021?\340\021X>\n\274\205\275\207^\177=\215D\006\276\250\'\030\275\250?\021>\314Y\335>n\345\274>b\206J\276\035\354\230=St\215\275\365\214\261>,1F\277\034!\001\274\313\257H?\207`\357\274\313\264\345>\370v\370>3\340\"\276\227\267\205\276\346\206\355:+\202\007?\327\223\322>\377$\007\277\214\377@>%\244w>\375\263\244=s\341\204\276\363\332\225\273\341\035\017>jX\003?\253H\246>Ob\364\275\364}&>}m\235>v<\335=\345>\277>\024\260\355> o\271\276\253\267\306>#S\024\275`k_\276}t\345=\310\234\230>\355\020\323\275\345\035A\276\177\211]\277!\352\260=i\347\275\275J\257\034?]\317\035?G\346L\276\344!\037\276\244\316\334>\3753*>\341x{>\210\204\307\275\217\317\363\276W\014\302\276\177\232\216\276d\372\362=Q\357\005\275\276\253\332\275c\223&\277\3223e?\3754\301=\t\301\270\276\234\002\256>\222\004\006\2777\337.>\247\240\221>v!\037\276\304\026\210\276\331\274\342\275\007\210\\?\3652\004?\321N*>\224\240N>\367_!\276\336X\346=\345\345v=\362\'\025\277#?\263\275\270~2>G\"\316>\030\330\026?\335\034\005?8}\273\275\215\311\221<\265\276\204>E\220!=\317,\217\2767\000\242\276\304T\207>\275\025j>1\233\030\277\201\2144=+1\311\276\024\006R>\211\027\274<\"\225\267\276_q|\276n@\257>\210t\266\276\302\035R\276\355E\277=\030\226\277>\242,\326>XQ\245=e$\021?6x)\274\335\277e\277BQ[=\017\315\366>\301\273\003\277\'fk\275\367\377\210\276\024\344\026\275@\340\234\276\336\334\253\275\"*\226>;\'P\275I\005E\277o\024\334\2763\205~>\026\352\264>\360\303\234\274\247\0162=\231\000\333\276x\007\207=d\376\376\276\320\026\373=Y\224;\2773\215W>\230\244L\276\345\335\004\277a\032\005>i0\032>F\352\372\275\215~>\277\203\004#\277\363\007\017\277)\217\247>\232\205\306=\271I\255>\216\355\256\276\303V\305>\031\375\304>\213\225\253\276\t\226\002>^I\032=\026\311\024\2763\010\306\276\023\020\256=\376\361\262=\336U.>I\022E>\254\352\365\275R[\240>\016q\3178\020\212\216>\374q\254\276\210E\301\276\217.a>Mi\373=\203[\316\275\332\214\n\277l\252\365>\230\351\031>=\261\206<\354sS\277\232\310\220>\254\0219\276\004\023\222\275\324\304\352\2750R\277\273\206@\037<\030k$\275g\367\332\275+\362\022>\227\300K\275*\376\035?`\230\214>A\262\242\2735\004\276D;\225\276&\366Z>\006\373\263>\253y\312\274\337\244\251\275\234\356\300>\342\373\315\276\251L\231\276NI\r=\355-\270\275N}\024\277L\005H\275s\250s>\252k&\273\2427\220\276\300\326D>\270\361\364=\263#\t>%\024L=\0250O;\325\317Z\276\0362\233>%\213\t>\377y\201\276\307\232\314=s\331\233>\367d\010\277~\251\n\277S\027&\276r\341\227\276\"\307O=\026\032`>\362\303l\276V\341\247=D\007\214<(\254\'\276\3155\025>\374\206c;w\244\033\276\357U+>M2 >\343\2710\277\305\002\304\275y0\213>U\035[>\006>g>C\237F=\326\322\034?\203\266\217>\244\007\221=\354\325\007?\217\337i\274\231,E=\347\277\001\276\264\322\252\275o\377|>\313\223\223\276\342,\270>\304Ow\276\206\341\362>\016\312\"\277~\366\353>\310]\377\276\234\305\\?L\322\025?\266W\033?T\021\005\277V\243$\274\312\334\277\275\340\207\343\275\236\203\335\276\233h\036\277\245\234W?\373\177\212\276b\2006\276\\/k\276T\350@>\377\212\227>_zT>&.}>\351\355\014?\275\032g\275\316\003\310>\265\372\276\276\340p\304\275\337\343\036\274_\270\245>%\313\263\276\320M\375>\\\343\331=V\320\272>\310\301\t\277\356n\305>\t\220\213=\210\030\270>\007\362\207=\307\254\375>\346\026\376=\241\240\275\276\002\323\362=Z\330\310=IF5\274\275\3578>\216\326$?2O\252\275\330\361z>\031W\233>$\177\215>R)U?\304\250\013\276!]\216\276Z\224$?l\004\367\275w\032#\275\225\264y=E\006\335>\230\365O>\276\267!>\327d%>\035\314\323>V\276x\2754\001\377>\2424\263\276\341$~?\254\022\n=\2409\007\276\216B\352\276\005\207\004\277Cd\207\276\350 \351>5E\251\276\246\002\257\276\313\252\211>\337\225\334\276Q\220\255\273\022\360\315\275\347\007\027>i\nm>#\277\373>a\202\023\277\246Z\310\276\022\351!?k\350\006\275\030\3011\277\3133\211=r\0335\277q\260\r\275=\377p>\004g\r>ef\331>\005\247\225\276F\225/>\n6z?\306A\003\277X\237.=\220\216\244\276\344a/?\275v\256>\254\034\026>\036y\245>\352L)\276\275\214\244>\334\001\305>0j2\276i\330\353\276\271}\333>T5!>w*\341\275d\330%\276n\332]>[.\332\276\227B\227>\354\215Y\276\303\264\316\276[R\365\274\031I\210>Z+\031\277Ad\273\276 \037\236<\2017L=\240\352\343\2737\224x\276\250\022\024?\301(e>\r\034b\275\341f\200>/D#?\312\377\227=%\213\351=\232`\304>\345~\013>\036\230\354\276\255%S\276\320l@\276#\014\034>\354\263\243\276\2642\347=\216\242\257>B\336\235>\345\002\226>\375\014q>\366\247\001>\230\024\270\276\".J=C\035.>\231_\206\276v@\320>\204`2=\364A}><\303\310>\274\332\240\277\210o\310>n\321\035\277yf\032\275oej>\331*3?A\244u\276\302s\022?\007\022\376\276A\224\205>kSN?C:\301\275^\023\345\274\350\277\304\275\215\320\023?\370P\332>\233\366\004?%\232\366=\372\206\245>2\251/\275\241\362d>V\3427\277\025\326\232>\255\350\204>y\254^>:7p>\257\t\221\276\274^.>\032\233\367;\335\337~>\013\211\222\276\262D\032=\020\'\006=\373\267\016\276\271\264\266\276-\302\334>\311\205`>\001\316\036?\211\353\260\272\265\332\022\276rD\251\276@&\254>\0104g\275\355z\024>\200z\351\276\350\013\237\273f\316\364>1\302\227\276\206\236\361\276\361\232p\276e\220\262\275\327\177\326=vj\300\275n{<=\366\211X<\177;\264\275+\334\325\275\343\216B>\014\t$?\347Z\253\275\350\375\236\276\333\344\003\277G\345\371\275\241)G\275@\246\235\275\314\007\n>^\243l\277\273$\234<]\023\344\275\227]\037\276[:\005\277\023\341U?\275\253\033\277\207\'m\276_\004\272\276z\243D\276H%C\276\230\304\023?\237\347\013\276+\257(>\035KI\276<\004\211>\254\006\221>\377X\307>\004\355D?}\005\223\276\372\250\006\277\020!\210>~\216$\275\233\371\271>\342\270\304>\036\241h\276H\326\203=\360G\222\276Qx\234\277\366\345\367=F\377\312\275v\204\001\277wR\026>6\205\010\277\345\335\010\277\35678\277\2240B>?\355^\276\352\360\364\276Rq\234=\315\3341\276?\214\324\275\255?\333=\204\217:>F\205\341\276\364\301\315\275\270<\361\276Ez\277\275w<\247\277\0074\237=\264\341o>\014\333\227\276+\0104\276\231{\004=\254\226J\2762@\306<94:>N=\252=\002\220\217\276\214G\025?\330\357\222>\2347\325>\353\351\236\275CSS\275+w\237\276\016\227\022\277\030\252\210>@\023\313\276\340R\377>\224\274\210>\337\257+\277\032\027\t\277\313\032o\276Z\3655\276\313Kx>\204;x>;\305\021?\301\'\025\276\034\265q=\366\032^\274\245+\265\275\367Q\267\276\231\373\343=k&\016>\256\016n>\217\345X\275\341\006\233>\226\217\324=\021\021\274\276,^\037\276+\"\226\274\251!\206\272\037-\312>\246Q\216\276Z\211\032\277\244J\237\276P\244\227\275ne\034>\223\331\032>\006\355\252><%\252\275\230Be\276\254\231\005>N\350w\276t\252\256\275\357\252\343\274\270\316V=\"\3764?\205{\226\276\261\323\221>\003\023\003\276\300\037\315\276\036\366\026>\3217{<\320)\347\272x\240\345<%\r\271\276q>\302=\004\022\034\276F\253!>\"\316\271\275J\267O>\036\331#\276\247P\302\274\341\330\017\277\350e\250=\236\t\327\274\t\034\304\273\036\376\024\276t\036\007\277\331\026\025>\317/\311\276i\306Y\276\362\3136\276\262\356\335\273\027\344P\272\305Ti>O\232\336>07\210\275F\206\220>~\207\327J\325\224\273\310y\203\275)\207\354\276\255\\\033>d\376\300\275%|\302\276\316~z=\357\262l\276rQ\314=\346\2303\277\2115(\275\265\374}>]=6?\203\270\376\276W\316\342\276Bx\366\276\230S\373\276{\273.\277\224\371!;\373\n\001=\t\033\244\2769*\237\275\214\317j=\005\235&\276\303|\272\275\312\274>=tY\033?\313G\346>\313\337r\277\325C\247\276\003a\017\277\265\341\244\276\355lQ\276\202\331\375=\263sl\276\r\314\021\277\356\017\"\277\354\202\030\277\032eM\276Y\244\035>\241`\023\276A\317\206\276\375\344{\277\334+\037?-k\\\276`\021\232>~\027\"\276\271\232\364\276\265\3565\276\356(\331=\233+\227\275]\2770\277\245\337\n\277\263J\345\275\250r\356\276\026%&\277\211\301\247\276*\027\376\276^g\324\276\"f\007=\374\021\204\276/\367\005\277\303\207\226>\314p(>\\//\277|\330]\275\020\177\352=B~y\276\021y\242\275%\245\024\277\303\032o\275Jy\367\276\353\211D\276\354\325\020\276a\274Z\276\005\013R\275\261\035\337\276\313\204\307\276t\312\213>\020\032%=\240\313\360\275\251\375\352\276,o1\277z\265 \276\301\007R\276cg\t>\355P\304\275t\017\327=)\177\224\276\362\305^;\372\376\203\276X\261\023\277\242\254J\277\254@f>-\030\310\276\'\303\017\277\372q==\203Y\230\276\355\330\t\276\205\033\205\276\026\210\306\276\305+\006\277\233\005\262>\230b\214\277\361\211\217>\n\341m\276m}P\277\255\351\305\275g\321\027\277\322Q\321\276{\273E\277\207X\236\275\215!\323\276*`\247\276 b\272=\006{\314>J\264g>\271W\000>\031\303\252\276K\335\371\275\341\r\014\276\207\001v\274{\216\371\275mF\r?\203\016\374=J\305T\277\347\340.<\276PA\276v\277-\276\3563\244\276\326\034\240\276\312\273\213=\010.A?\333\236\021\2760\240\372\275\356\362\234\276O\201i\276\234O!=\330J\027\275~\202\251\275\220:w>*Z\025\277n\332\025\277\325\304\250\275\243\330\000\277P\3338<\256\210\202<\241}\314\276\265n\030\277<\342\366>K\243\264\276\014c\200\276\257\351U?nM?\276\261/w\274f\022\201\276g\233w>n\235\302\275\212\210\352\276\220CV\27632y>y\265\016>\366\356p\276\274\210Y=M+\326>|\364K\276*\3341\277j\257\251\276\200\033\260=x\332\364\276\220G\314\275O\270\257\275\326\306\200>\327\200\323\275r\227\372\276\252M\213\274H\353\001\277E\231\231>\343\231\014?{_\346\275\237=y<\016=g\275H\362{\276\021\001\223\276>2\305\276\027k\213\276\217{2\276\334k\347\276 \271\366<\241A\027=_\341\235\275\277\304b\276\345\275e\276\300\025N\276\364\204;>IN\232\276\356\265\211\274B\317\266>S\0002=aj\316\276\010}7>\022&\222\276\nT{\275\232\225\033\276\363\267\267>DP\277=Md\263>\260\321\365<\375P\031\276X\261\214\276Q{`\276\321\330#?\240\363\224=Kl\013>\337\254\r\276\3075<\2767l\215>d_S\2764\321\022\275~{.\277z\337)?c)f>.\223!\276$\202\036\277\241KG>\236\207\302>\t\010,?\316\027\036>\367\321\353\275\002Z\204>N\266\224\276y7\375=\254\211\005\27742{\277&\001\034\277\002\201#>0\363\215\275-\377\312=\270\370\245\276\332\217\007\277\316Hv>V\256\275>\231\310^\276\231\"\\>\335\\G>o\347u=~\034\373\276\251X\264>\307\227[\276\256\307->t\212\205\276\356DB>\333\017\252\276\333\345\312>u\245*>\353\324t\276\272\235Y\276\357\021o\276@\212\035>\014\337\017?B\274\261\275\324\245\030=\247\024K\276c$\010=\211@\031>{\332\250\276(s\001>\005]\236=\234\264\373\274^\027\007\274\007-\t\277t\277\247=\34199\277 \335\375\276vn#>\256\024F>XF~\276=[\243\276]\320\235\276\367\226\230=\200/o\275\270E~\277P@\336\2739\224B\277 \325G>v\242.>)7\377\276ZgO\276\273\000Z\276\t\310\352=\220\254K\277\341\177t\277\273\312A\276Y\373\'?\245{\326\276\007\220\034?\275$\374\276\344\016\332>\376a\244>\313\251\273\276\215\'\034? \264\321>i\337\210>\316pu=\332\232\005\276\251\r\322\276\"\261\367\275\033f\317>D\216\272\276\362H,?P\301W\276/\243\332\275\320\275\306\276\336R0\276\030\377C>\t\307\327=u\321\025>?0\025\276e\276\226>\323\333\256=\253\233\362>!\320{\276{,(\274\342x==\1774\217\275#{\226>\371\003\241=\371\346\277\276MyB\277O\247c=\267\010\023\277\321\0169\274\375\276\005=n\346\244>\362|\016>\200\014\304\276)r\265\276\031\225\254\275]\303\310>U\317\311\275\363mW<\323\361\250=\254~L\276\177\220\230\277\254\250m\276\311f\201\276Gk\257\276\320\305\366\276\204;\025>\312C\274\276JR\354;s\002\202\276\227\367\277>\273\243\256\276\025\254\275>\303\027\221>\330\302\216>2\363\221?W\014^\276\364j\356; =1\275\203:&\2756\373\260\275\220\303V=\364\265R>F\236\333>\033\232\035\276Y\037\001>\020\230\365>\376e\234>rU\361=\237FV\276F\364\231>0\360\217>\361uM>q\341\251\275\3403\221=\223\017>;\321\221\257\2760\251\341\276\3575\347\275\\m\n\277\213\335\270>[\345\023\204=\210#\364=\033\252\215>-\274j>\347D\211\276\245\231\206>\255l\213\276+\243==\335\307\020?\367\3774>TZ\n>>\031e>Z\353\256\276\325\227\023\276\326\300\002?\202\360\200\276\031\343\351\275\331\251\365>\211\263\003?\016\270\034\277\274\227\246=;\362\341=~L2=\317\023}\275Q*\010?\002\237\325\276\3753\234>|\273+?\213\031\207>\251\264\232\274\267\034\264>\336%\022\277\332\326k\276~Q\"\276\217`I\276\305\025\360>\001=~>\212\010!\276\323^\370\275\\\025\351<\356\347\264\276E\367\250=+\235E\2776H\206\275\217A\250\276\243\350\253\275\3656\266\276:\315\231\276e\214\356>`\017\250\276\021l.=\023\346)=\222G.>\306\312\350\276\353(\313>4\212\311\276\264}{>\327\243\211\276\235\210\033?\352*)\277/w\254=\234g\234\274=o\016\2760\201\377\360\274J>\020\025q>\006\311L=\365\2523\277\213C6\277\270b\223\275\250\377\316>\273\255\317\276\254TS>\322\367\033\276\317\206\202=\354\346\231\276N\245L\275*B}>\213\207\307=|\213\022?\347\331T\275?\330b>\266.\254\276;_\177>\355\317\031\276\236\3058\277\362\005\301=\034\271\263\276K\250+\275<\320\023?5\344\341>Zu\201\275\250\301\216m\001\277\013-_\277\237\020\270\276X!V\276a`\203>\211\244W\275\315l\022>\267\036\034\277\275E\027\277\332\010Y>L\303\357=e\r\225>P\031\215\276\237\021\333\276$-(=x\257\007>\350PF?\223\372B>\275\337\274=\345\371\303>-\210\000>\021\330C>[\304\346>\220\032\211\276\255J\002\277\361\254\220<]w\016;\303(\214>1i\226\276\211\246,>\267~?<\032\274\315>\365\243\r?\376[\372\275\016T\256\276Z\212\352>~\236\313\276\202}\246=\323\247>>\315\\6==\255\037?49\302>\245\020\215\276[n\236\276\270\021 \276\201,\201\276\315\212\215>&!\245>\026w\264=\363\017\236\276\247&C>3\201\205\275,]\215>:l\020>U\273\010\277\223\266\313\275\035}}>\177\257\325\276\010\014\021?\001\336>\275\261D\026\277\177\243\227\274q\246\210=\235tJ=*\020D>4\313\336\276\004\001\031?\325\036\002\276\254\362\347=P\341c\275\032\366\363\273(*\307=\366\370\243>7-u\276T\262z?\027\026\354=\274 F\275q\231\026>\220\307\302=\013e\014\276I+G\277J1\355>\243\2350\276QQ\307>\207\215\275=\266\327\230\276V\210\252\276\361\3415?\233\034\214\27670\021?,S!\276~.\225>\276o\277>`l\325=\217gw\275%e\037\276\212\000\021\274\313\t>\276]\235r>\240Z}\276\3167\032\276\243\246b> \306\303>\373\272\305>\267k\210\276\313\034\234>\034S\367\276x>L\277\374D]\275\300\220>>\242g{\274?\237\213?\245\022Q?*\375\333>+\221l?\376\231\306\276U/\234\276\252\246\014\277X\214\311>\323jp\275\016\241\242\276\022\233d>\352\2771\277$\312\344\275<\323\306\276\346\362&??\276\325<|n!\276\352?\226\275\232\243\234\275\006x\016\276\331\272\337\275P\317\364\276Ks\226>,aE\277O\r\302\276\302#\222\276#\213/\277h\203\024>\341&\212\275/D\023\277\235\246\321\276\321\200\240\274\303\360.<\307\206\006\276\202Q\213\277\203o6?-M\034\2773\3171\276B\376\374>\033\021\266\276.\201\320\276G\335(\276\005g\357\276\235\214\203\274\347x\315\275\024\271\025>\363\032\345\274(\251\016\276\343\233\267>kW\265\276\232%\300\277Vu\330\276\305\002e\276\020\254\351>n.\260=#\030\207\276l\231\355\275\t\262\325\276\227\357\302\276\237\006H?Q#\323\2760\004\341><7\035\277H]Z=1\374\214\276\212O\220\277\232\021.\277W|/>\207=_\275\007\240\013\277\203\360$\277\004\177a\276\031\234\226\276O\357\003\277\364\301%>5|\354>\246\n\226\275|\327\214\276\370\247\023>VV\016\276\357\213\031\277\262\202G\276\317\353\327\276\213\260\331\276\266\t\332;7\322T\276@\303\311>B\274\260\275\326o\341\276\215%8\277\262\335\035\277Y\245?\277\303\036\344>\301\031\240\275\234\\H>\347\246\333=av\364=\301\2241?X\252a>\363\236,>\337>\315=V\332\341>\021va\276\366\034\217>y)\311\275\177Cm\274\370\224\021\2751\2771=\016@H;\2005\357\273>\263\267\276\005\013\022=?#\002<\211z\256>_\333\255>\027o\252\276b\177x\274\373k\030\276\304\2238?\273\2778\275\033\240-=\254\237\217>\034c\341;&J\266<>\342\351\275\036\273\216<\361\014\272=\232G\232>\253%`>\247~!<\377s\316=\341\335\021?\177\323M\275~?\251=/\035\341>G\301g=\353\341\017?\207\0040?F\222\340\275\024\n3\275\342U\201\274Ss\267\275\331\371\332\275\202Y\363>\3433\320\276Q\027`\276b\231\260\276C\223\252\276\201g\005\277\372\032\300>\311t\334\275\236\252+\277d|&\277p\231\352\274\363\332q>\266S\002?G\207q>H\352\023?(\263c\276\005\314\275>\334\233:>\324\372\275\276\266\212\266>\257\275\337\275j\252P>\323\206\210\276\314>Q\276|U,\277\'R\004>\261\2359\276\354l\306>\205C\203\275\201\333\323>\357J\336=\321EB?\313\202\262>\013\004\241\276\372\305\007\277\375&\021\277c\360\326\276*uj\275r\034\300\276\007\240\274>\211Th>R;\217>\252b\330\276\332\273!>\310K\352>\366$\234=\002v\326>\253\251\027\277\200\276\241=G)f>i\003\232\275\3531I\277\212+\024>\247\343l>\031\225\370\274\037\255P\275FG\202=EW\262>5\335\230\275\301\207\346>\277\215\211<\376\204\365<48\254>NB\214\276Z\356\242>2\365\236>\276#U?V\356\033\276)\004/\276\373\215x>B\310\007?\000g\202=\004\346\222?\004\013\346>\240\354d=A\002\303>\241\032\235=\215\212)\276Nj\216=\252v\210?\002\267\223\276y$\221\276\034\230\022?y\2702?W(\370\275\010\347\021>\221\031\227>\036z\260\277\262j\312>\337\343$\274\216\275\002\277\342\025\320>\317\225\265>*\245\371>\3668\242>3\003<\276\366\016F?b\252F?\222\201\022?`-\204?$3\216>?\006\005?\216&\250\276\3356*?\363[\350<\316\201&?\376\375?\276\004V<\276\320\"\334\275\227\022\006?\227.\311=\305qI?5\304W\276\017\306\303\275\013\005A?c/\201?w\320\266>\220\036\004?m~\252:\304*@?\255cB\276\017\243\216=\t\005f\276F\260\036=b\300\313><\007\303\276\313\220\220>\355\342\001?u\232\264=!I\301>\234#&\276\275\231.?\312\206\375=\023\351?>lq\373\274\320\314\215=W\231\273>\332\254\331\275J\307\350>\314W\307\2756\371\364>\001\203\255>1D =\256\n\334>w*\024>\353\034I>\254Xm<\345:\270\276\311\321q\2768\331\306>\317\2065\273\3330\324\274\232\256\276=\3654r?]m?\275c\211,>K\365\013\276\364g\363=r.p\276\023\276\347\274Sj\215\276vs\270>N\2743\276g\243\\?\021h\207=\303i\372=\323\225\304<\243?\251>\364/\227\2752/\030?\230\246\205>5^\020?}^\2769\002\367\214>\002T\213>k$\255\276(\355\311=\253\207\203>7\021A\275\3023\221=\236\314\006>\330&\014?4\002|?\353H\231>\317\310\314\276\217\232\344>\2663=\277\340\313\017?\342\275\r\275o\220\361\270\254\037\276p<7\276\225\337(>\243p\035?0\345\016>\326\246\300\276@\361\223\276\"\355\226\276\027\316\252\2732=\373>#\253\t\276N\363\262=~\315\260>]\315\272=\332\343\224\275\200\3442>=}\231>\314z\020=\250xh?\025\236\034>XY\313>\343\314\227=\035Y\271>G\276\245>\215\306|;\374r\232>\034\352T?\237\233\313\275\216p\017?\257\273S>z~\214\276\270\032\215\276\035&n>&~\005>)\220\212=\014\307p>\263\203\301>pVp>dR\r\275L\254\005=\267\214\203=*\256\302>X\246\262\275g\232\307>|\006\237>\204\007\244>\346\376\325>\010\215\205>\275?\355\276\342\"\273\276\324\237\313>o;\266<\340\303\275;1\025\330\275\305\354\232\276/\007\217\275e\222\237=\033\'\027?\201\271\214\2769\301\226\276\271\026\241s\007\227=\'\261\024\276\316c-\277)\233D\275\346\255\007>\027\311 ?\030?\025\277\373\317\235\276\325\'s<\305\371\241<\353k\306\276N\211`\275rw\353\276\321\350u=\'\273\234>5IX\277\334\361\205=C\2674?\260?\274\276A\016\032?X\222\023>\013\021\027?\311h\t?\010p#\276\323\266D>\0108J\277\177=\333\276\003^1\277*Z\272\276\006\253\330=\016\363\270\2761\200\327>\260\263W?\262\373I\276\320\341\332>B\376\347=\025\\\215\276\217\251M\275\036\003\355\276\236R\335=\324\254B\276\254\016\307<\346\001\017\277\255$\255\275\322\324O=\222Y\236>\364I\243\276\374E\316\275\034\272\351=\002\326\203\276B\t\003>\t\010&?Q\374,\276}\006\325\276\250\333\266\275\364\200\177>\266\357\251\276\035\366\374\276\216\205\273\276_\001\344>\031\037\203\277V\022\222\275\345\233:>\301\220\327\275\237\316\333\275#\010\217\276\313\370\207\273\236\263&\276\204\031\205>\200\347\322\276E\325H>!\310\253>2/\301\275\245\364I>\371\241k>\365\224}>\247\235\203\276/\241\034\273\330\236\003\2766 6>\267\256\202=X\022\320=\325\211\307=\274w\327>\035\302\223>\370,\344=\371\235\005\275\237J\313>\224\246\260>\267\223\362=,>\013\276]\3459>m\214S\277%\357\007\276J\237\014\276\322\250B>\207\376)?W\367\224>\333\345->RT\232\275\372\333\316\275\276\376\337\275\001\265\326=\270\010\216=7\222\277>\300\366\301<\336\332\224\274\'3w=\'\212j\277Q\215\222>>\266B>oU\034>\317\350\210>i\302?\276[\024\210\275\220\324\031>\363y\326\275\022\261\223>\314!)=z/\317\276\013\321\034\277\0006\025>\271V,\275%es\276\023\3441\277\017}\014\277\214\3234\276\340(#\276\262\362\323\276\236\1775\276\325\022\223\275[\004\272\276\020S\365\276\004\250Y=\216\014M<\332Y\024>\354V\201>\313\314\360>\034\203B\274j\300\022\277\326\316\211>qq\\>\001\224A\277\212\215\234\276V,\300\346\2322>\347i\307>g^\027?\330\305\003?\253Tp>\272\312\022>6\306\221\274,\373\334>\r\336\210\276\2450\022=\264\\\016?\326\322O\276\342CI>\305Fs\276\254S\360>\020\316\232>\341\300\300>QR\253=\036\356\264\276\362\366\236=K\323\322=\226\305{\276\351X\371>\334\314|>\360\347\260\275\234\313!?\357\327O?=\221\243\276\\\375\322\276Z-\333\276\370\'\264\275\336B0\277HG\342\276^/\332\276\304\307\\\276A\351\203\276\326\227\230\276\332\337\367\275\362\226H\277\316\033Z=\305\010\025\277~\343\233\276\203@\321\276\302\242\357=\354\3450>\311aQ\276\336y\304\276\202\023:?@\033R\277\2264\242\276\\g*\276\362\342\020>\300\354\303>\242\244;\275\272\261\264=\357\010H?ii\032\277\363\024b\276.8:;I\021\347\276\023\271\274\276\235\315\017?\200\351_>\372\177:\276t\035\022=\253\006\360\276\277\231v>\2512\301\274v[G?\311\205\365\2752\377C?c-\311\2750_L\277M0=>\333\336\037>\'Ws?t\212O>\317\340\331\275\211\247X>2n)\277g\034*\277\276L\232\276\0133\261=\355\372.>%k\276>\022]T?\361\232.?\367\316\r=N(G\276\264+#\276\r6!\277c\371-?\237\363\016\273\204\276\321>\300\t\031;\273\341\343>K\263\242>\362\2169\276\274\202v\277\246&\231\274o\2639>\024\306\353;aH\016?Fi\240=\356\357\317=\006$6\277\014\025?>\037E\375\276;\232\300>rN\200>\315S\253\2753o\217\276\264\t\204\276\377\232\n\277\262\277F=\216P\337>i\213\306\276\226\ti<\232\263\004>\361\365\003?\025\247\227=\342U\020\276\366\232\373>T\265\316>\257\177$>s\264\301=\2405\274\276\\m\226\276\244ml\275{\231.\275\330Ts\2763;\212\276\307F1\276\'t\312=\020\276\314=\332\320n\274D\003\207>_j;\276Qr\214\275\017\020<>!\334\030\276*\343\257\275\031(\267\276\362\341h\275\326 \237\276\230\233b\276\225\"\260\276\217\330n<\266%\323\276\r\376\312=c\224\034=\345k5\276.>\307\274\030\342\272\273HiF=G\242>=\220\036Z\276\002V\345>\333\212\257>\014\275\316\274\222\"#\276\266\254\377>\362_-\276\205\242\252<,\377E<\'\242\200\275\220]>>:\026\236\276\247X\341\275\254\342j\2770\200\262\276f\322\005\277\344\211\210\275\342nJ=`\003\364>e\213 \275+G\025=z\320H\276\310\013>\275\255\026\005?\030\225U\276\001\337\215\276\352\337d>\227\354\261\276$\212B\277piL\276Gy\277\276\333\r\324\276Q\016\223\276\345\006\242=\005\372\350>qd\303\276\263*\326\276OG\200?\001|\177>\367+\032\277\033\230\034\277\3121\024=\225\022\315\275o\001r\276\333\336E\2761\230\371\276\221Gw=a\n\344\276l\242\024>\320\347\236\276\366\026\354=\003\256>\277\2065\256>!\332\225\2763N\201=\016\035\302\275\273\201\330>\267o\005\2765\215Y=:\035\225>%\301+?2*\330\276\321\3073?(j\321=\022QQ>C\236\204\276\334\210\005?\027\3274\275\247\030Y>6\016\203\276Z}\270\275q$T\275T\303\024\277\214bG>w\340\324=\024\352U\276J\364\246>8}\232>\344F\255\276\267\267\363\276[\227G?,\017\217\276\266\035\204>\236\006\022\277\035\303\306>\227W\232n\264\032\277P\206\212?\006\007\215?7,\243\276*\250\257\276:\231\334\275\0073\275\274A\221N\277\315\031\253\276)\"\302>\325\'l\275v:\245\276\374\322!\277_\312<\277\370@\r\276\314\242\264>w<\251\276\377\300\025?\265\343\276>\264}\250>\027\177\276>\230v=?`\237W?N63\277\021X\243>\364\350\356\276\032yb>E\320\022?\224\367\377=\375@/\276\363\224\244\276\342\242%\275(@\231\275\243\331;\275G\020\222>\340\317l?\353j\316\276WN\364<\301`\022?>/\255<1\003\006?\317\266\331=t\237\253=\306O\010>\277M\306>\010\332\347;\022^\367\276\343\321\212>\366\026D?\350\314\210?]+t>\334d\203\276\370s\203\276\005\366p=\016\321X\276\3603x\276\314\243\361\276\227\213\004>\342\347\370>\342\333J\277\370_\257>\222\376\307=\354\033\032\277\207\260\023?\334\311\n\2771:\234>Jyg\276x,\336\017<\242=\0243\036>\336):\276\224\262\226>\260\260\206=\374\203\215\276\304\356\241>1&\242\275Z\003\330\276\207W#\275\310W\233>\306c\177\276\346\216:=\225I\226>\200\2574=^J\302\275\005w;\276\0272\"\276\231\272\325>\256\\\022>\243P\000?P\251\017\276\212\216\234>[\222\343>X\321\030>\306s\303=\236\235\347\276x!\013?\275\220\251=\347A%=\377\312\233=\275\'\223\276\234\214\277\276a\0336\276\374.\025>\201\306\263>7\361A\276\375p\245>\354\356\025>a6\023\276q{>\2764\354\">\242Ws\276\234\223\246>\223\370\200>\223\357~\2768\233I>d5B<4E\027>\211\333\343\276\343\006\214\276\214$B<\276p\035\275\310g\017<\021\213\230\27654\005\2765\243\353>\363W\253\276\031\0326\2756\030g\276j\345e\273\020\362\244\274\373\347.?\005\320\006\276`\371\235<\003\317\265\276-IV?\006\342\227\312\266\234\274\207\336\342\275[1\252>}\375\211>\303\230g>\213~B\2776b\217>\021\027\357=\313\217\013\276\006\205\345>3\006L\277\245q\322\275H\270\213=\375\355\237>D<\210>\032-D\275\334\370\\?\356\360\335=T\021`\276\360\3661\277\315\372\203>\257~v\277\204\216\r\276>9\226\276\225o\345<\326\205\327\276\323\200\031\275\023\275\343>Hv\210\275y\327\361\276s\036\336>\261\242!>\366Mt\276\345\266N?#;\362<\321\224\003\277\2033\367<\232\315\336\2766L\033\276\255\006\301=a\232t\232@=\265\032\275\274`\003>?\243\214\025\277\322\306~>\307\253T\277\264D\356>\221\374<>\025!\320=*m\316\276\276\263d\276\014K\262\276\356\263\204\276L*\234>\250w??\313l\323\275\023\277\376\276\305\244*\276V\033U\276\034\241\227\276\337\211\202\275\362\244\005\277\260\231&\2750\2252\275\307\245`\276\300\342\201\276\342\023w\274\253\001\353>H(\272\274YM\374\276\244Xy>\254s\236\276zA\234>\002Z\315>\233\374\224>G\325\234=/w\004\274\241q\327\276\205\034\222\276\2443K\275\227\3150\276M\252\366>\337\262\305\274\347e\344>\266X~\276\003-;>\214\205\307\275<\340\242\276NI\004>\237\202\014=\037\246S<7\345.\277\005Tr>\020\333\354\273\3201\002>o3\005\276\241^\n?v\334M\276FcL\276\236\364\002>v\221h=\333\271\254\276\262\243\236\273\207jc?\320L\325>Q\366*\276[c\320\275\215k\246\276\243\307\201\276J\255\206>A\'K\275\315-\336>\367q\006?\032\323\243\2744e\r>wyZ>\">\362>/\200\214\2763\361\314\276\207\237\032>\006V\313>\276mK>\303\361\262>\025M\020\276\311\371E\276\031\354!\276\326\217\371<\306\321 \275\373\333\377\276x\351\256\275\317\333\232\276\224\033`\276L\313\302\276\032Q\332\275\001\032\037\276\266\335\203>\203\177\006>=\016\013?\247P\235\274\277(\236\276#-\034\277f\364\276>w\262\013\275aAW>\346q\354\275s\275D>|\363\226\276\200F\262\276V~\241>\200\242`\276\032\2609>\252\334\352=s\257\014\276z\t\373\275tG\240=|\216\262\276\005\235\'\277\0020\222>\0256\232\276\262\213\345= >[\276!\tN\276\206B\321>\217\007\202\276\227\030\014\276\265K\203>C\227\277\276;\212\030>Pix\276\317o\330>\225ZE\275\247\331\217<\345\336\021>\262\026p\2765\327\005\277\244d)=\355\337\017?G)\271=\372\010\305>\307\246\001>\037@\211\276|%@>\202p4>\311\003\024?(\212?>\315*\301=\007\216\327\276f\037&\277\214\276\241\276b\374\221\274\226\227\246=!\240`\276\362\242\330=\033m\231\276!o\373\274N\300\275=\nH2>\001\214S\276s5\204\276w\016\002>_\272E>g\000\027\276\315\2335>\020\225\266\276\265\n/\276DW\245\276\305\370\204\273\321\361\240\276a,\205\274\332\026\013\277r\353\211\276G\320i\276\033\375\320\276v\3522\277[\370\214>Xy\306>\233\366\">+f\266>ff\352>\371n\355\275\014\337\016\277\036\266\201\276\226\\<\276\347F^\276[\034\204\276\232?\244<\312{\001?d\246\224>\021\215\270\276\n\262b\275\025A\t\275p\034\201;\0013_\273\204X|>\2305\007>\365.I\276\324\261\033\277\003\364\241\275]\353\026\277\022\362P?\321~G\277W\342\252=\006g\344\2769u\350\276\020#\330\276q[\030\277\212\3567=\321\357\305\275\367}\260\2764>\211=\333\344{>\033Z\r\276\353&\363\276\366\302`\277I\264\235=\325C\013\276\036O\246<\035Y\322\276\311o\005>\210\257=\277\323=\016\276\332\325\202>\255S0\275\261\332\332\276\"\'\253>\014\370\013<3\274\374>%\2136\277\330\256\n?\332\033I=\022\362\364\276p\030\372;]\2720>\217Y\216\276nW.?i7\033\277\3641i=\301)G\2770\224R>\313;\321>tp\031\2770\367\016\277\0223\376\276G\331\023\277\317\276\313\276\371\243M\277\347D\031\277\370^$\276\345i\207\276V\355Y\274\304\204\360\276\347\2273\276\306\304l>\371\021\036\274O\207\365>\271\210M\277\267X\'\277\027\032A\276\0060\240\275]^.\277\346*]?V\237\276>\346\341\235>\272v\213\275\347\254\260=\334h\177\276\260\025\'\276\177`U>\020\276\347\002)\330=\304\203\304\275\030\241\324>\266Wg?B\332\'=\204%\205>\362CQ>\212\356\226\27602\023\277&\237\336\276\374n\'\276\346\240\307;\307\371\225z\307\342\276\'z\n=kn\305>\312SP\275\324d\002\277\322\351P\276\230\317\363\275\r\344\236\274\371u\237\275\n.9\276T\r\025>\346\2760=T\304\214\275e+\036?wp\005>f\000\245>=L\254>\033\371\025>F\202\344=\230\023(\276\2401\351G,\021>8\034\334\274&\245\225\276t\242\255\275P\200v>\322\360\252\276\3536\275>\261\354\022\276W\240\251>\204\257\334>\247\225A>Ky\"\276}\002\326\274\213\032\026\276I\256_>\005\031\252\276\023\n\227=\035\263\251\275\r\\H<\331#\257\276\214\305\211>\262\335\273>\337\222d>\246\343\227\275\266\237\007?\224\2735\276\021\375\222\276_!\263\274\377\226\344\276\343F\"><\217\254\276Q+\361=\263\362\266>i.\035\276\350q\340\274c=\224>\366\310\271\2757u=>\350m\212>\202R\307=\231\n\332>\215A\333>\374\215\027>$\304\001=\2550\256\276\312j\032\276{\224\006\276&kg\276\3261\266>\243\353\250>\310\312\r>\351\367\206\2768\322\250>\277\003\257\276\310`\375\276V\025\022\277!J\246\275\333\347\021>\3438X\274j\231\033?\314\201\337>\177UI\276j\214\273>6\2512\277\240\300\245>e\303\233=/\330\226\276/\010\215\276w\205\220=\277.\244\276\254\202\374>\026 ^=\213\356]<\250>D\275p\245\203=\034Q\004\276J\226\255\276%\242\221\275:H\342>b\205\332\276\311\336\247>\271\020\340\275\n\030\212=\342\361Z=\202\360\207\275b^\024\275\375\201\275>\tWV\275\035\001\007\276I\275\000\277\361\334{\276^#(\277\237 \256\276\310\244f\356>&\277\nv4\276\241U\334\275\251l\202\275\320\222>\274\020\253\"?\251\322\230\274\323\247\262>\305ti\276\373\223\347>\345\000\210\276\235R\311\276\26235<\253,(>\024\201\020\275\\\034!\277\215\026\034\276\246q\036>w?\373=\251\366\314\27643,?\031\265\016\277d\364\364\276H\\\177\276Z7\017=\035K\225>\007\006\237\275\004\247\307\276\236\360F\277\365\226\277>\327V\260>\014\227R\276nU\235\274\0354 >\255.7\277\314s\374>8wV\276\255\236\226>\361\2216>\206\317\203=\2220\372\276\206\261d>\372\210\004\276\035P\"?\201\275p\276\363\242\007>\034*(\276\365M >\367!\r\27671\353=P\267\265>\310\215\013\277\377b\374=Z*)\276UqX>r;\035=\014\265\236>y\210\326\275\277\366\302\2759[\302=\005\021\232\276\367\327\352>,\222\006>h\301\010\275\'\270\351>r\270\323<\230\335\300>\371za>\016<\235\274\002\263\372\276TV\261>\027\261+\275\362z\324>\001\360P?\232\206\231\275!\026/\276\324/i>\254\251\347\275\343\330\237>MFq\276\216A\023\275\224\245\372<\343\223\331>\275\037\356\274\2023q\276\234J\334=@g\276\276]T\226>\206r\207>_\247\021\277\242D\322>\023\344\247=\265\0257\276ce2\276[\265\322\276\302z9=\\lN>\335\222M=~\024p>\360\313\272\275A\000\017>>\010\340>%\016\377>\032\257\026?H\227U\276\r\323\037\277\321~\372\274\254\231\305\276\305\374\212>\205\210\224=\206\253\017\276\030X\331\276\204^L\276fE\303\276Q\363\204\276\253\215\364<\300\250\364<\277~\n=\207\225\2469i\262\206<1Y\207\276\331+\257<\rD\204=\370]\250\275\212\223I=\255J\013\277NY\004\277\335\353\204\275\247\007\217\276:c\337\274\r`\022\277\203^\306=\030\307\032\276Z\253\221=\343+Q>\265\203\333\276\213\307\002?\365\243\316\275\n\274\344>.\3456>\250\337\246\276vi=?\355\237\300\274\217\020\345>\224\344\364\275`\370\210>8\013n\275\364\351)\277Y\227%\276-\300f\275\214\242\265>:\303T\277[y:>\310\276\247\276y\001v>\265;\014\277\336Z\245?]\362s?\201\020\222\277\357}\003?\363\306A>\323\3645\276O;\036\2778Z@=R\276\252>\353\220\267\275*\241\024\275c\256\247\276-`\037>D\204\225>\023\006\364\276\272\321\270\275\2216\344<\362\345\203\276s\314$>\347\315\206\276F\327Y>h^\025<\366\372\\>\341\215J\274^2w\276R=M\276\"1\t\277\332O\313>iU\002?C\010\344>\r\220\373\275\261\205\367=W\214\320\276\314\220\205>_\266\215\276+\341X?1\227\343>\014\222v\275\320\236R?\320Q+\277\301o[\276\\\230\262\275\347(\316=\204]\007?uU\340>0M\037>\020J\235\274\252 \301\2766N\r?D\333 \277\233\225I\276\303w%\276O\212\007\276kD\002?\014\320\363>\343\321\212>\263J\233\276\273\014#?\350%3\276\333\230\330>T.\326>X\230\271>\004\352\004\277\255 v\276\364N\374\276\256\024\204\276\205>\310\276.\177A=\216\013\255>\230}H=\340\025\024\277\222S\376<\226\340R;\354\306&>\242\rz\270\004\277\273L|\275\256@\243\276\271\223\221>\354\251I=H\255\264>V\261\203\276\266\270\350\275\217\363R\275\375B@\276L\257h\277[YE\276\364L\306=ZI\302\275\364_\231\276\226NA\276O\234\312=\301yu=\367\332\324\330\017\276\004\"G\276\277\326\262>\207\231\005\277\345-\234>^\342\314<0\355\355\2752\277\334\275\347\010\036\277\325\256\325\275\2627\000\276\030K\302\273T\365\035?4\326J?\340&\270\276>\236\301>\005A\275\275\345&\202\275`/\2258\306\314\n?\273R%?\217\304\271<(\t\346\275\272\211\367\273\316.T\275\226\324\340=\257\377\347>e=\243>=\274\371>n\2431\276\032\335j?p\363\230>\354\305\016?\352\315\232=k:\037=fgK>\265\021>=4\350\034\276\03529\276\227}\260>\205\273\021=b\321\236\275\227\307\262\276\227\2047>\272\207\000\277\322\300\232\276\373$\013?\"\256\251>\204Jh>\263\221\227>\365\341V>\0344\025\275\326\n\016=L(\362<\242\253K=;\360\256\276{/f>\021$\246\274\227\031r\275\205C\243\276t\3777=\217D\232\276\216$\004\277\251c=>wl\217\276\274\350\324>\277j\334\276i=\313>&\033 ?\245\305V?\303v\036\276\345\353\001?\3174\022\275\347\326\014\276ZL\213>K\273\275=\004\005$?\274\031\351\275Gz\301\275!\253\001\275D\360\355\276\3770\247>R\372\331>\346z\331\276\r\340s\277\270\n\315\274\256jK>S\215\254\276\'h\266\275\361\345\034\277a8\024\276\275\035\321;\214\270%?\312\264\273>\323Z\257>.h)\275\232}\'?\234\255\201>\355k\374<\276\333\022\274\304\262\362>~:7\276\007V\257\276\376E\304\276r\255\022\276\220\311T?\200\333s\276\227=\355=xc3>\"M\033>\326J\034\276\177u\323=\211\274\271=\214\350O?}\350\347\275\323\371S\276\311I\231\275\354\200\365>[\217^?\250\003\316\275\\[A=0\256\237\276\202wZ?\351\314\243=\017\022\353\272)]\220\274\251<\234>\366\373c\276\327{\333=\265\364Y>\3103\307>ez\014\277\253\341\032\277@mF\276\230\337&\276d\371<\276\006\220\253\276\370\373\032\277\304\001\256>\332\251*\277&\023\230>\215g\275\276\223a\240>\037\377\310<\367\020Q\276\326\"\036?DY\002\277\346\324\205>c\205C\277,$v>d\375\030\277\013\315\333\275\271\035j>\324Te\276\257j\312\276N\203\331\276\347\267\206\274\263Ce\276\025\331\007\277\332\036\365\324>e)\027\277\021rP\276\344\333\230\276\334=\256=\302(\203>\371\362#>\357\361\264\276\347\010\001\277\216\3004?s\035\200>\302\025\267\276\206M =\371;-\276-{5?t\306\030\276\r\265\254\276\375\272#>A\020\346\276c\356\013\277P\2130\276|\271\342>\014\177\005?\361\"\326\276\221\034\242>r{O\2763%\002?\254\210\030\276Jl\230>O\203\312\275\243\250\010>\224u\000>\272@\036>($=>A\010\372\276\030\276:?\234\375\374>\233\360\024\275KV`\276\205\352\372\275\213\013\367>-:\320\276\343\363\006\276\307\305b=\253\234W=\244\270\315\276\212W\346=>\357\363\276F(\304\276\231\314^>h\202;>\207\311\305=\252\262\t\277\302\354\366\275\026\331\250>B\261\323>\336\023\024?\252\241a?\013cL>]\005_\277\350-\007>h\317\361\275,\274R\276\302\327 ?\024\030==0\217\366>\261\361\235\233\262\326\2753\375\r\275\354^\226>\206/L>\217W\345\274\242\275\351\2758H\214\275\251\315\207>dg\202=\265q)\275-\353v>}S\023\2775^\336\276\'\001\337\276\372<\237\275\326\245\350=\204?\221\275\201V\351\276\221x\r\276\020j\366\274\3342\255\2757\277\024?\260N\010>\357`\223=\211\307\035\276\214\037\302<\372\t*\277|\217\254=d\327\032\276\030\375\327\276\000_==M\373\021>+\240\365\276\277\246\201>\337\004\">L\332\221>\241\002\234\274\207X\306>9-\024:\225%\265\276\350;{>\326\337\371\275#\177\024?\273m\016=\t\337?\276u\010\332\276\327\246>>\231\200\241\276\277\362%?\r\223o==\033\352>\323\350\200\276|w\021\277\n\372\007\276\005\253:>\237\204\312\276\275\310\220\273\266\214\267>\275\340\355>\276f\213\274n\177\306=M\300\347>\324%9\276\310]\007\276\200\342Y\275\237P#>\263\223=\277Xj\341=\330\035)>\255\220F=8z\022\276\025C+>\231R\301\276\274\201\017\276\206\300\000\276\303\2342>\235Q\331>T\204\307\276?\336\271>\362\343->$A\010\276,`\037\276\302q\230\276l\327+>,\230\330\276Id\335\276\342\227\304>\0058p\277\260\242\237\276\350t\034\277\201#\215\277eg\025\276\220\357\014>qC\234=\313V\204\276\265u\231>y\365\202\276P\005->\207\'\272\276\355{\000?\271o)?\\#\016?R\300\005?D\324\227>\005\251\260=\321\020\014\275\326sk>\266\334\210>\264\376\355>W\300\345\276s1`\276\244Z\365\276\342hN\277\264f\032\274\024f\001\276\004@\"\276S\364\244>\327G\257\273\373C\014\275\241\036V=\356\320\014?\301\010\300>\'\210\026\276\230\271\020>7\236\342\276Ws\312\275\250\330Q=\324(\006\2768`\327\276\345\360*\277I\260->\020\364\003>\203\267+\276B\001A\274\377\250\366\275\353q\204>7\0332\277\320\213l>R\261\025\276\317\321\226>t\0164?\026\013\037\277\306\321\342\276\210o\334>\2759\201\277\232\344\300\276\013\224\310>O}8>\261\201\362\276\036\323\265;]K\247\274\234\017\025\275\242\365$\276%\370\307\276\222\272K>\376\":>4\333\213\276\331\345\010?\226\270\252\275h\364\334=\320\367\250\276\'k\234\274\232<\322\274\177@\002?\2009\202\276W\343\013\276 eU\276\210\230\362>\037\265\211>t\335\t?\217\254]<\260\253\005\277\221\202Y\275\177\323\270\276\024\372\262=\326\301)>e\353\250\276!\251\251\276\210HK>\274\351P> \217 \275\251-\365>s\355\201=4\330\322\276\'\223z\275\370\013\321<\301\333\367\274Q?\021\276\320@k\276%5n>LBb\276\323\r\335=\013\033\253\276\016e\225>\035:\265=K\341{>Y\365\264\276TM\037\276w\342\271>\356\223\326\276\271\311\272\276\306.4>Y\300\233=\262a\201\276\246\211T>\221?&>\254X\007\277\314i\033\275\367\374\234\276\224#\t\276^y1\276\313\013\316\273\3564\341>\3310\210>\206x\266=\364o\247\276\317]jQ\036\314>\316\271\264=L\263\023?VH\261\276\303\034\246>\035qd>e0\202\275\310\312]\276FJ\"\276;\374,?\274;\000>GzO\274\024<\213>\273\244\270\275\003\312\204\276\2523\227\276\270-\006?\326\2101>\270\265\240\276\255\020\224\274 \037\267=\373\371\212>\206\240\366\276x\354\214>I\321\252=\221\000\n?H\367\202\276\230\273\014\276$\337\251=\035\246\006\277\205\246\263\277C\023\272\276|\242\000?\275\307K\277\213\361\222\276\373\331\342\276\216\002\323>\253\037\234\275S\350\207>\214qA?\202\254^\275t\3308=\245\215h~\032?>\376b\256>j\353\364\276\300\0308>\250\276\202\277m\366|>\212\373\200;\202x\003\276\265\2152>q\305\217\276\0054\222\276,\2226\276\320\030\234=\n\213\377;3#\310>\340\320\273\275\254\377\224\274\314tA>\216\207y>g\242\033>\0006\252\275D\320\345\275\036g\223\276\207\325\232\276\013\372\237>\324R0=\350\001<\276\356\363\242=\323\225\006\277G\256h\276\234\343\000>\004\t\367\276\367\312\204>\324;\232=\214\353\003\275\315\"\240>S\245m\276\030\265\341>\355\220\351\275@\255\225\276\273\364\324=-v\r\277\261\266\326\274NfV\277\366\037,\272\037\374\265>k\320J\277\226\224\377\2750\342\276=\252\030T\276\022\3430=\221LJ\277\026*\030\277\235\003\"\277\366\010m\276\3522y\276\234\033\275\276c(\231=\r\004\250>\357\032A=\'\313\006\276G\335\014\277j\304\231>\214\025\225\275\272%\236>:aO=\336C\360>\206qx>\353k\322\275$\215v\276\026:\020>>\366(\276!\2678\274e\\5\276\274\266\003>x\301}\276K\325\356>\017?r>\031H&>\212\027\002?X~ =\234\312\240\276\377\350\357\2756\311;\276?\016&>\231\361\227\276I@7>7\031\226\276u\217]\276J9\302\276\031\014\001\276\314r\304\276\365\246]\275u\366\236>yO`\276U]\270\276\037\010\314>\245\344N>N\337\025\277J\352\253\274\2760\375>\377\013\204\274\224D\305>\001\002\275\274\2012\030>a{\017=\252%E\275\234\036\213\276\022fV\275y\350\275>\235!j>\351R\244=\364!O>Xen=\254\376\027>G\315\233=.\026\270:\034\004\277\276o\305\n>\226\0143\276:\212\310>\205\301\200\276\214A\272\274i\237\216>\244\2267\277\225$\260= K\343>\270\260S\276J\303b>%\353\217>S9\n>\207v\004?K\352\017\277\211\203b\276\243\360\302\275<7U>\372P\205>\007\2618>v\371\237\276\344\254\246\276{p+=\325\365@\276\210\032q\276\362\363\236>nb\256>\302\203\r=\221\353\323>\365Y2\275\211Z7\276)).?\031X\026\2775:\204>\336Z\212\276Qm\006\277\350\026\222>\225W+\273\334@\255\276\001\213\342\275\334\016\222\276\257&\327\276{\037\033>\3202\211>|b\245\276\224A\331\273/\207\322>\237\224\300>\222k\201>\366\223\217>\370k\340\275GZX\277\032%\210>\346\241T\276\2478\020\275\341@0\275\363\265\262=d\207\026\276\214\302\261\275\370\"\271>\323G\'?\035\000\205>\255\221|\276\274\270\200\276\251M\002\277\270\310\\\276\345{4\275\004\275\205\276\237NG>_T\243\2765X\273>\317cx\276\274\231\354<\265\207\365\276\2367\345\276<\265\213\277\031t\236>:\242\245\276d\005\244>\220[\251>I\344\'\277)=k?\302\240\"\275;\210\225\2766V\234\276\003\237g>\310A\352\275\361V\'?Z4>\277\242\210\340=\241\027\266\276*82\275\347\303\243\2760X\223\276CA\246\2765_\034?\355\232\034\277\373\346\027\276\030\207=\277d\034\204\275\214\333\337\274\331\203U\276\35036>\204i*\2773A\210\276\351E\004?\035\315j=\200\210\327>\330\203\231\276\335\275J=W\3110\277\323+\323=\327\220O\276\347\204R\276\034wq\276\002.=\276\376;\356>~\230\230>\371\302\302=\322y\010\275\023\005\226>.\305\333<\323\322\353\274\243<\025\277\033\336\211\276\027\205\000?\247\262\350>\351\202<\2764\235v\277]\006\277\275\313\312\037?!\215\337=\264\231\267<\225)\276=\271\3256>\032\027G?\326l\236\276\230\005\021?\263\023\210\277\217\r+>\337\200\323\276P\177n>V\3322>\315]\237\276\007\264(=\335\'\235=\\\226\250\274\247p\323=\346\230\254\275k\360A\277\026\270\257\275\274\207m=m\215\275>\024\265\307\276\206\277\n?;\307\375<\204!\255\276G\362_\276}4\215\274\004\000\200>{\260\325=\200\3505>\200\231e\275\366\177q>j\321\223\276-\2641\277\331\221\222\275\036])\276\227W\024\276\262\207\n>\242\035\201\274l\257 \276\365\352\252>>\327\307=\271S\027\276\344\333\202>)\254\213\275q\010\215>\033]\300<\272x\306S%o\274\021\316r>9\226D>\013\312\360\276\374\202\270\276\223\013\r>\336\025\337>t\024\025>n\025\256\276\363C\220=\324*X\276\230\232\246\276Nj\231\275\221\302\312\2741\271\026\2761\032W>\304\256\270=\352\243W?\235\353\345\275\357\346\352>\232z\207>;\316\254\277\273~;\276\310\013\237=WV\267\276`l\037?u\225\211>\024u\212>\001b\021\275\027\242J\276\210\350\235>\252\003%?\366\245\301\275\177\377/\275\031~\341\2758X\255>s[\247>\316\267\232\276\272\251\024\276Y)(?\322\235y\331\033\317>\014x`>\223\224\253\275c\036\222\274D\264\206\276M\237\245>\344\002U\276\345\261\267>*\362\350=\224>\223>c|\231:z\304\027>\213c\200<\223\203\224>H\222W>K.\373<\274\270\224\275\263\251\203:\204\275\331\275\251\016\025?\010\333\245\276Y\020(\276X\\3\2760)\252>\346\r\006\277AT\303>\005c\330\276\331\352\225\275\232a\333\275\305\364\302=\275\301\217=)76\276\243\010>>1\202\335\276\217\r\273>aQR\277\307\225\034>\317\233q>\031\202-\277\226\365\241=\226\262\221\276#\325\266\276\251\373\340\276\230\371\201\274j\033\223\276\225\326\352\274\013\312\374>\345\300,\276\031\372\237\276S{\024>\207U~>\026\374??\316\342\n?\005\316\212>\0016\001?\363d\026?:HP\276\337\354\247\276RD\301>U\013\366\276\202\\c>\302\233+>:\250\226=\262\2327\275\322\010\200>4\326\374\275\226\270\276\275\002\224\316=V\362i=\225\326\206>\367\245S<\021\245\000\274f\221l?H\236\333\276\207\021\301>\256\303\230;\014$t>\033@o\274\016\t\243>\010\321\360\276N#\270\275u\026\\<\212\202\252>n\254\324\276\274\226\361>\230/\364=\373\017\311\276[nx\276\262\013\000>s>\"\276\212\360\224>p\252\214\275.\003\366>T\317`\274L\026\'\275\365\331\251\276}\t\245\276 \343Q\276\362\257\211>\204\000\316\276\333\215\266\276\360\260\214=\n\003 >\023x\254=>\016\253\276\241\363\333>\272<\311\276\021|\210\274|\021D?\201\022\002\275`\243\207\276\005\034G=\237s\245\276a\225\266>a\332\235\276\304\\\304\276\206m\253\276\263\"\350\276A\232\004>\273\n\206\274\225^M>\r\266U?\247\rE\275y\031\221\276\352\240B\276U:D>_$\226>?\312\215>\235\324D\276\342\302\207\276n\225q\275X\010\224>=\3162\275i\344.\277\226\006\351>\256\212h;\275}u\276]\023\243\275\016\030\302\276D\030\205\276\212N\210\276\013\306\372\276P\220\247=\315\250\027>W\217\016>W\016}\276i*\034\276\257\361\235\210y$\277\207\373\360\276\n\000\300>\2437:?\256>\233\275\265\247\327=\303B\217>\002\260\200=\344;$\275\324\3253>\221\217\277\275\263G\336<@\210\214>5\312Y\276\377\n\342>\241\364\265\276\253\342\226>r\225B>\026y\212\2761\244\361=\346\211\024\277\217&\201\276\002Sv>\223\275\016\277\371o`>\203\345\260>pw\332\274\177\231B=\305\274&\276}!9\277\233~\342\276\325\t\323>\261Z \277\311XZ\276\241\277\257\276\313\345{>[\210C\277l\036\321>QQR=\336\266\031\275\300\354\270\275\026\310\212\274\343P]>\307\274\306\276\277\227X\276\314a\226\276}\327\025\275|\256`>U\032h\275\346\026\034>\"\264~>I\036\202>B\221\276\275\t/\026\2760\023}>\013fQ?\037^(\276\312\006\321<@x\305\276\354\260\235=\214nq>\361\017\027\276]q\357=\340\201L\275\023f\331=\267\275\207\275\203\006S\276\353=\335\276\232|9\273\314\216\210\276\235\007R={\276\035\277U\225]>w2\217>6\325m\274]\022\014?\031O\017?JL;\276\031\351^<\2670{\276\217\324\014?\031m\307>\250\225\036>\221.u\276\331\006\033?\331\nG\276\232\216\222>\317\026Y?p\356\360\276JU\023=\367\241\271>}\266W\276\344\335U?\235\325\204\276\332\016\215=S\030H>\336\001&?\r\230\302>\203\233\205\276\305\014\202>m\330\250>X7\004?\222;y\272\362\231-\276T\2135\276\026 6\277\353\234_\275t\3651>\'\245\323\274=\221\250\276\025\377\337<\273w\352\272L\242\254\276\001\366\220\2767\"n\276\223\026J>S\242\325\276T\n:\276\374\206#?\305\330\367\275\271\256\271\276\360\035]>\351\341I?b\246\305\276,\014\267>3\344|>\'TN=U\214E?9\366M\277\353\312\025\276\274>\016?\260[$\276\322\223\370=\301m\276:\217\016\271=\2529$\277\252=\201\275\364{\000?\271%\004?e\352\023?\342w\260=\t\026\316=\231l\031>@M\361>\002\334]?\327\266\365>\217\013\304>\336\314\305\276E \374>\326\023\254=(9\253\276\371\373+\276\2129\000>hYr>\233 \026>\217\253\222>\232.\024\277@\277\300\275\001\210\211>n\246\230\275O]\377=\275\225\377\275\037\026\224\275\221Y\246<\032>\026?\237:3\275Y\300\230\276\031\303\263\276\r<\362>\\s\303\276\365\343\263\275\3431\034\277\247p\260\276u\267I\277\261\336c\276\332\212l\276M\334\274\275\027=\210>>q\250<\233\212?>Z\341\032\276\276%G\275\\\233\225\275\242\365\220>\340\221c>7%\023?!\226\372=\302 ~\276\030\365\310\274\3201\022>{\237\207>\321S\210\276\262\244\333=\002u\265>\331,6\276\352\257\t\276\215G\221=S\221r\276\005\265\354\273J\253\336>[\245\270\276jw{\274\361\003\035>\331u\251\275\340t\003\276\274\013\344\276G\342T?\373R{\275\300\301D\275\034b\255>\357\321\027\277-\310\362>\247u\221>\262\253\245\276\267\344\246\276$\333U\274\301f\367>Si\330\276\332\320?\276\231\335\206>l\r\020?A\034b>\334\221A=V\350d\275\377\205t<\225\355\362>\261\306R\276\336\246q=\rm\233>S\007\303\275\337s\202\276\301\026\320=2\2714\276\212\255\001?<\206\317=~\214?=\001\0256\275\276t\002=\362\332\274\276W\'\301\275d\371\345\275bi\257=\240H\t\277&\025\372\275\024\261\253\274ZR\361=\034\331\025>\007;&>|\"\263>/\212P=2\254\363<*?\001<\370\275p\275%W1\276\010\246\242>\357]r>LI\316>\001\376\t\2761\303\251?r\341\351=\3749~=M[\325\276Ja\020?7d\202\275\230=9\277\350\367\317>\310\225\265\275I\177\360\276\251@\200;\n\006\225>\376\261)>\201*\246<\354\273\230\276\261=]?}\017\206\276=;\255>z\227\366\276\244?\304\275\247\310\314>B\0068\277\374\245\231\2765\253\254\276\310@\253>\022\316=\277\355q\037?\315\366\000\276\357\375\177\276\245\213\277\276`\237\034?\274:\327=\220\310\353\276\214:\t\277y \347=\361\330\221>\261\307\036>\351\'\245==K\367\276@n\351>\225\247\232?\270a\345\2733:<>!a\224?\226=\004\276\207H;?\342&\036?\317\021\326\276\272&\013?\217\231@?\350\226\215>HT\016?\276\177\351>pfk\276\207\345\266\276\345\333\206>m\261\\>\334_\371>\376&\220\276_i\223>9\024$\274WX\344\275$\r\242\276\274\233\025>\300\t\006=\314\233E>\265&\322=\255\312*\277\330\372\237>\006\274\357<:y\326\275G\206}\276\306\260\336>J9\326\275S\306\357=\363\234\320\276\326;\345>4\320\316<\262k\221\276\\T\274\275\0169\014?B\260\225>5A\347>\r\336*?0V\260\276\263\235f\275\230\217\226\276\267\373Q>\227\256\321\253\276\025\345\356\275\037\304\257>,\237\215\276\2703\233\276\351U`?#\340Q>x\034\230\276\356\352\304>\177*\361=f&@\276OK\364=\033\225D?+\356\351>\232\014\316=\010U4>[\310\177>\365\344\214>2B\277=Py\323>\324;\212\277m_\252=n\346\003>\216i\351=K\347s>\247<\027>\252\275\301<\340\250Q=c\222\214>\230-\242>\272\253\240=/\332\375>\323e#\276+\002h\2760\271\341>\331\3728=P~\224>\340$\232\374\240@?\262 ^>\030\227\210\274\2675\003>pF\257\276\316\354\261\275)\016\350\276\334Y\225>\256\014\013?\276x!>-{\273>(\031\251>bt\360\275\327@\320>W\313\267\275\341\342\263>\347o\303\276\260d0?\005\326\346\275 K\335=9N\331\275\225\322%?\307\262\254>\370\367\007>\227\373B\277\001\033M>_\353\342>Ns\264\275\234r\020>\373v*\276\305\034\362>,\262\212\276BgO>\217\230\325=\272\243\340>+\\+?\327\305}\276\224w/?\037z5\276\243\023y\276c\246{>,\027\335\276\025\217(\273\003\246\002>\203\355\376>#2]\276\233T\035\276MB\000?\2135R\276Z\340\355=yv\272\276\256i\316>\330\321\360\276 \227\323\276\034K\032\277$\277_<*\"\032>(:S>d\312\265\276BY6\277r\237\257>y\325,=\\\270\305\275r8%\276Q3\337>\344p\234\276\257j\006< \274\256>\215lL\276\034\211x\277W\357\271=)\025\343\274[\261\236\277\310$\244>S\336\030>j\205:\277\016\342\213=\332z\341\275#\253\375\274\324\226\005?\003\201Y\277#\317\324\275e\307[\2763H\361\2745, ?\334\377|=\354\335p?0\263~>n\314\034\276\322\266\326\273c)S=\375\256\002?)Y\251>\210\275\273>\236}\363>\035\'\200\276\254\t\264\276\222H\276>\\\317\215>\002\241\312\275\031\264\315\276\356E\035\277:\t\023\275q\346\330>\271.\035>\310\243~\275\362~\n>\210\002!\275.\t\332>\027\277\267>\317\263\227>\230\235\276\276\246J\014?\274\253\250=\342\236,\275e2r>HW\226>\212\037]\277\321\000\257\275\334\374\313\276\201\220[>\272\225&\277\342\344\322>\234\310`>\342\017u\275A\211\233=\310\316\032\276\1777b>\257A\320\276\373\237\032\277\350\316\221\276\306\376+>\237\205\222\276\333\032\002=\226G\202\274op\010?H.1=\246>\000?C\324Z>\370\265\207\276\3326\367<\220\221&=\356N\344>\244\345y\276y\025\271=\316\224;\275\245\201\036\276\333Pk\276YO\351<\257\330H>\242\301\371\276\374\210\236>\327\245\270>\231\235\345\275M\034E\2761\2078=\'\021\316>j\244\200>\317~\223>7\\\177=@\037\177\275\346\257\000?q\320\'>V\371\236\276]\212\254\276\010,\210>\345G\264\276\211-\322>\207\233\t?\333I\226\276\264\211\371>\030\214\321>\270\032U<\301\257:\276\022\221\313=\324\037&?`N\227\2760\272\215;,\036c\276\211\002\311\274F\365\251\276\027\347\013\277p{\007\276\255\315\026?\335\346\274\275L\370y\277\275pE\276\027(\243\276\254\230\325>A[\276\276I1\305\275gq|\2768\275X>\014LB\277Xv\327\276F\302\260>H\315\232>Z\'\344>y8\367=\351\320\t>\240\270\362\273\027<\364\2768\026\221>\341\2567\276\330\230H\276%\354\342\276p\242\203\274\315Jt=\332\317*>n{\035\276\372\261\261\275a\020\210>\313\273\241\276\304\351|\276p\013\223\276\271.\201>\034W\252=}\301\016\277\217\356\207\304PF?\013;\276\276\363\267\207>\370\363s=*A\034>\177Y\275>l\224\227>x\212}\276\351\337\376>\251/\324\273\240[-\276\204\257\364>\212C\243>n\323\247=*\240\310>\206&\226=\236+\324>\036\352`\277I[\342\275\302uQ\276|\220\"?\206L\250>\202\223\316>-\352\013>\372s5>\037\337j\277.j\265>\264\366$?rO#\276\27693=4V\361\377\342n>e\004\271>!\250\n?\2069\350>\210C\252>.).\277\337L\322>6\270\216\276\215\366\013\277>\234\233\276j\305K=P\005\350\275U3\000\276|v\037\275\360i\255\276M\022\n?=\311+\276\332\215\035>\321\314\241=\342\202\341\276\233\356\235\276(61\275IU\372\276m\266\235\276\027<\224>\256\331\360\276\207I\333>\213\346\024\276\013\261~\276\227\373\236\275AQ\320>\255-2\276B[\347\276d\236)?\262\342\002?\224\330A?\266\027c\276\342n\237>\254[\346=\243\265!?\370U\255\276\374\021\247>\322VJ=\274@\245>]\232\010\277]\3258\276\242]\347>I`\037\277k/=\276b\211\223\276\360%\225>Dz\204\276=\030u\276\303\326\364;\315>\014\277n\017\0339\312\3020?B[\r?Qc\341=]\337\210\2764S\337\276\200\213\204=HVo>\345\307\204>}S@\275\302B\036\277\371\257\257>J\251\336=56M?\304\243A\276\304\007(\277\251\317D=\313V\221\276\310\226\036\277\202t\261>02\007\275\254\037\367\274^\203\001\276i\265I>\016\256\247\275G\351\244=/\213\327=>o\234\276C\310\003\276\370\210\254=\322\224b<\372o^>#\310\256>>\375\342=\303D\325\275^\010\005\275[\317\351\276\315\013H\277\312\347A\276`c<\276S`\204\276|\241\356=\336\232J>\211\365e>\277\357\005\275\242\350\271\275`\025p>\324}q\276U\227\203\2768\255\226\274g\006\035\276\t\031\211\276\331\224\330\275C\210\177\276r\254\345>|6\312>\340;\224>1\231\341>#\322\257>\360\254\252\275I\000\025\276\306%.>\256\352\216>\235,\221\276\237\227\032\277~\344\364>\031\3061\277/I\333=E)#?Gn\303\276_\247.\276\200\204O\277\372VD\276\2037U>\013\241s\276\377\032G>u\027\223\274x\226\"\276\327\350\212>\"\356\315>\222\006~\276\234\343\321\275\357\305\313\276\266$\354\275\274=\003\277R\256\337<\277\371\237={,\225\276\357&\t\2753nV? \206\371\276&^\034?K\376\"\277_\361\010\313\265\276\275\023\221\365\274\355\324\311>\330\355W\276\243(\246\275|\n\244\276\244\301\006=\037L\210>\372\221\227\276\270\005\025?S\234\027?\003\025L>\326\315n\277\217\315G\276UA\267\276\031\000G>\223\245\177>K\366\204\276\nR\305>\257\207\016\277X\222:=_\317\262=\033n\027>\324O\216\276\255\331\237>gfa>\272z\265>ox\002\276\375e\000\276\365\242\212?#\367\307\276S\251\267>\363)+\276\201\343\271>\327\200\204=\347\364\227=%\211\322>F\205_>\335\327\225>\364\325\010?\367\303\315\276\336vO\276\023\207\272>E.\226>v\203|<6m\240=r\345H\276\032\302`\276C_\025\276h\223\001?<\233-?\027\030\244\275\315\000v>\027\"\007\277Dy\363>`cv>\363a\362\275\341VT?\265\257?=\357\254\027>\261\026\371\275T\024\320\276y\311\345\276\312\376\n?G\346\330\274\330n2?\372\025\341\276K\n\307\276\205\3066?\247\327F\275\227Q\342\273\220\020L\276\334r\341\273i\371}>2\362\253>\262\016\215\276!\201\215>\245\237-\276&<\236=0*\233\276\327\000A? u\252>\317\035\331>\227\241\211>\336~\024\277\312\365\306\276\221\357\246>\270\214\267\276k\206\361\275~7J\276[\316\234\276\210\023\337\276|\270,\276\2313??R\306\370\276\237B\216>\372\273\300>\003\221\327\275\237\200\364=\263\220\224\275C\374\251\276!}\317\273~\304\034\275\347\014O>H}\314=\004\313\334>\212\266\272>\265\215\033=\034\005w\274\215\235+?\306\263`\276\333\365\036?\335\000\201\276\nZ\005>\236t\227\275,\267\025\276\314\244b=\332\245\325=\362\002\335=\004\351\247=5{\326\275\231E\260\275\305\002\252;>q\213\276\326\036\">P\026\342\276v\346\253>w\255\212\276\000\277\305>s\214\334\274\006\232\014<\354]\026\2766u\250\275a\301\201\276\346\3273\276|\345\202>\302I\254=\322\335_=g\346\013\277#\235]\276T\347A\276\306\340%\276y\215\214\276>\304\204\276\227\034\214>\002\257\236>u\327\312\275\204\251\021\276\005\223\255\276\2662\t\276\2472\204>\232\204\036\276}D\223\276\263\247}>|l\327>i~\336>\240\'\234>\203\024$>\033\245\027>\020r1\275\366+\204>\204\326\267>\0354\035\276\232y!?\374\312\243>\004\330\220\276\013\334\315>\26706\276Aj\005?\022S\207\276/r\220=\031\002\253\275\3024O\275\n\340\342\275\330\254\224=\022\2046\272\250_\223=\317w\224>\004[\n\277\002\377\252>\263#\221\276\204\272\331>\302\373\251>\0314\223\006R\347>\3606$\277`\215\000?\035j\312\276R\367\322=\341\211\025\275\263\221C\276\264\303\211\275UN\352\274z_\217>\205\321D\2768\003h\276bb\221\276klX\276\251*\021\275t\265J\277\023\"\367\276z\221\022=\232u\276=\002I\324>E\205\371\274ug\021\2761g\314\271\305i<>\210W\231>\265\256\221>\350\"\325>q\310G?l\245\003\277\257Q\322>\357s\202\276\335\235\322\276\340(\013<\322\244t=VP\031\277^\'\273\276)M\026?\273\227\371<\305\321\343\275\345\300\355>\346}$>\262\010\361\276\377\365\321>G5\020\277pKe?p\013\237\276\264\257\301\275f\037v\275\212\202e>\314\014\215\276#$\360\276\003\023\036\276\301,\263\276\025\352\344>\235\272\017>\273c3?\313\0355>\231\206\262\276\335\326,\275\374Hn?.2\016?i\256]>\343\320\022?\236\210\352>\241\300\n\276g\213\224=\002v\202<\326;t>\227>\260\275\225\010&?\023s0\277\267\021\243>\261W\221\276\265\2561>l\317\220?\265=\224>\371\334~\277\005\r\271>\026\356\231>2&\346\275,\032\212>\254\007:\276\344\374\300\275\335\332s=S\302\261\2752\352\276\275L\007E>\026\302^\276\036\343~\276\340\313\226\276\314\366\231>\211\007\354\275\257$S\276D\017)\276\343\241\001>\303\006\240\274\376`\354\276R&\214>\217\364\217>\351\225\216\274q\300]>\366\331\204\275\354L\261\276\366\350\017>\311;\356\274)\261\004\277\353\275\002\277\341\003\313\276\332\301?\276:Y\342>\201/\253\276\306j\262>\230\256\346\274\253\221*\274\223`\335;\021\000,\2772Y\347<\242=M>\376o ?\243\327\230\276\nz\005>\246|\367>7n\213<\2318\233>\212v\226=x\243\273\275_1\246=\351O+>-\022\023\276a\337\244<\305\237\300\274\321\177\260\275u0\241\274\361v\277>\227\300\244=\255+\331>e<\247=\177\353[?]\022\030\277y\210n>\002\210\235>S\2108\277d>\017\276\033$\n\276\207\'\\\276\352%\245>\221#1>\275v\213>\265\0160>i\345\">\274\204\277>e\235\361\276(o5\276\303\225t\276\265nS\275&\341\272>\245.\232=\212,\250>._}\276\315\355\260\276\362@9>@1\020=\021I*\276A\217\n\276\2474\357=\377p\213\276}\'\324=\024\373\036>\213*\300=\3104\275\275\357V\204\276\330\334\234>\001\027\326>\033\232<>\222\177\202\276w\254p>\006\020p\276\016\3618>L\271\006>\256\343\250\276P\023\r\277\345\323\262\275\032\370\031>\360\355\273\275g\267\020\275\327\014\302=C\304\025>\274\266c\276@\301\201>\362\273\022<\251a\211\274\257iA\277\230Q\253\275\342c\216\276\221_\206\276\361D\337=\246n\271\275Q\275\025>H\351\312=O\321\224=\222#\001?\035\216\214\276\301\305\037>\n\352\202\276c6|>\323\'\346=3:\214\275\350/\252>J4 \276Ly\234\276\274\302G>\210\302\n\2763\301:\276\324\203\020\277\352_\014>?8\342>I\226\320=X\321\010>\343z\003\277\214Q/\276\013m%?J\254\324>\214H\006>To)?(i&\277\200\033B?\252\353\235>\nv5\276\363@\001\277\006S\364\275~N\316\276\241\260\233\276\371\216I\277wi2\276\236\201\007?\314\032\235>t]Q\277\034\344\205<\002\036\330<\217Lg=\232\260\313\2753\210*?\231\320\264\2765\036\342\276\264,\372\275\303\003\n\276\242uB\276\230eo>\030b\026>9\326\027\275\035\367\370>\206\214K\276\036\007\224\275\364\330\020\277/\365\033\277\2020\267\274(\003\205\276zQ\262=Q\027`?\350\225 ?\351\322\376>d\353\252\276_\017\003\275+V\214\276\307\366\230\276\327^6>\t\364\277\276\010#\021\275&\271\204>\227\3516\277M\252\266\275\304\027.\276\357\010}>\265P\240\276n\031\315>z\277\222>\026j\033\277z\313\007\277e\275\031?\220\250\337\276\024\3540?\242\305\'<\202\375\033\277\311F\206>XS\007?\323\024\035\276\\>6\277-R\034\277\204\020\020?f5l\276\250YA>\025K[\277U\354E\276)\n\\>\203\212\256\275\014\346\026\277\271\232\304\27524J\275$a\347>Sg\010\277b\200|=3\324n\275+4A?\200+\317\274\215\250X?\201\344\210>\267\316y\277@+\036=Tw\237>E\364%\304\275\274_\027?\356\327\342\275:\017\346=\007\0171>.\252\352\273@u\363\276q\261\237\2752\347!>H{\r\274\036\363@>$\360b\275\360\016m\276\3759+\275E\215\223;g\002^\275\277\337\231>Au\207\276\350J\227<\344\\\226\276-n\372\275Q\354\227>a\306\361=pg!\275\210Rt>\241\342\240<1xf> \377\027=\213\362\027>\3354\n\275,{\334>\004z\264>\360\024\230\275.\021\002\277\2436\366\2750E\354<1\203\222>R\252\241>\346\276\263>\006\'\350>*I\036?\177\035\314\275\365\334\206>\020\2076\276\301#\017\276l\375\205>\246\321\"\275749\276\t\240\357>\353\342\357\276*N\024\276D\037\305\272\202T\214\276\343ka\272+$\225\276B\250\216>^\200Q>\034n!\276\227Q\264\276M\334\344\276\2775H\276\306\243M\276\203\016\243>\341\000\232\276\377i\300\275\302n\005#?\311\t4>f\323\033>l\325\331>\246\351->8,\'>\260W\001>F\231f\275\256\373.>\256c\033\276\241(\026\365\017\273\276\347\331\221>\344\205\227\276W\240\221>\\\307K=\r\321\302=Z\200\256>\022\312\177\2765e,>\352\342\031?M]M>AN\330>^n\376=\356\016\222=o_;\276\253\225D?\250\222\235\276\016h\033\277\\\322\203>j_o?\204e\027\276\252\265\t\277\246h\260=,\217r\277\275b\273\276\003\377P\277H\207\000?\037\314\323>\250\307\277=\270$\316\2763\205m\276\0367-\275\225dI\277\314\373\261\276\346\202i\277\370\214\022\277\013\2278>\326g\240\276\357\321\t?\316\031\330>\200c\350\276\250\212\013\277XC\261\275\033\273h\276\277\240b\276\320\300\226\276/\360\214\276\271B\212\276\245_^?\302`\207\276\007\3326>\234s^?\"\371B>\327\247!\276]i\002?\331\016\222\275\021u`>\365\324k\275\332\377\244\275@\220\225<\214\005\253\275~\223\253>K\2401>/\377\360=\206\314\t\277\307\026L;\223/_?\303pH\277\365m!\277\370\255C\276[D\026\277\276\227c\276+\346\217\276\262\352\032\277S\363a\276\036\331\204\276\014uC\276]\035\275\275\200\377P\276\264;\211\275\0054*\276\210\033\207>\007\322\003?\003\026\323\276\270\0138<\373\026\003?\372\363\037\276\246\r\265\276\327\307\210\2767p\262=\025\014\027?H\037\344>\375\223\335>\330d\260\276$vx\276\244\375D>\026\'j\276\350\002\026>\373\320\003?\214\207\017\275\254\336\200\275\'>`\2766\314\230\2765F\277=T\334\222>\273\027\001?s\340j\276\251\243\366\276\306\3271>D\200z>\363A\240>\266\014\004\276#\0312>\242=T\276\357/V\276\365rA>\0218\314\276\227\337\037\277n\305[>\006=\352>\025\362\331\274\023\224??\235zk=\305f\026\277/\"0\276\257\210\233>5%Q>\010\273\212=2H\264;J\037E\277U7a\276I\014;\276kbK>c\234\374>I\372\337=f\2227\274om\336>:\320\224\275\2318K\277\351\016\324\275d\237\215=\336i2>_u\007>\003)\014\276\340\010O\2741d\205>\351\\\321;\331\301\035>\020\206\005\277O\246\271\275\333@\330>6\360\222\276\262\201\231>r\313I\277\227\257\211\276\022\221\251\275\333\342\037=\244\227\242\276(\241\365>\353=\033>\243\324\336>_\314\267\275\223\025U>\223\010d>\274\261;?\001H\235>\332\"1\275l\226\023>\340\004X\276\370\246\344=\2769?\276\225YJ>\320\341%\276\305\355\246>\277\364\321>\237\205\301=\305\343\314\276_\370\245\276\233LF\276U\t\234;\320%\365\275\313q\373\274D\030\277\276\321\r\027>g\245o>>\326\266\274\3164\352<\324\230\000=3B\347>q\353\220>-\020\354=\214\023\376\2755\013\205\276\003\201\224\276\205,\320\276?MO\273\263\033\357\276\333\031\254=\322\244\316>|$\261\274h\3712>0\206\255>\217+\213\276O\363m\276\230C\310\275\250\304_>\267\030\260\276\232\261\031\277{U\025\277\316\001\312\276\034\372\312\274n\242\024\277{\217\276=\215\270R\277\334n*\2775\025\312\276\357\365\247\276T7\240\275(.x\275\246\345\351>\037\273\300\276\034\227\375\276s\256\245>\211\"\013?MTE>C\225\333\274\341y\337\275\271\371\223\276\014\0258?*\233\226\276\303\241D\277\2778T\276N\341\n>$A\026>\214\371\036\277\241r\242\275\205\376\362\276\336\313\237\276\224\317\325>\222\210Z\277\231Ff\276\377\200b>\227\333G\276\303\t!\276\225/\351\276F\2257>\314\270\007\277\216\252\t\277S\276\354>{\262\373\276\261;\241>\003\007)\277\247\302\022?q^O<\355\334w>3\277\312\275\311\340&\277P$X\276\355\240\030?\353\353\252\276\370<&?Y\355\333<1Y\034\277*\210\235\276\317\022\267\276\346\343\341>F\231\304)\220\313\276\241@\006>\225\246\370=\311\023<\275\337\271\236>\230Lo\276\003\3652>:>\004\277\007\'\351\276\201\323\006\277\t\210\236\275\004u\025\277}\013\272\276\331@\373>\352\270>\276T\261\244\276X0\241\275\326\312\255\276&\272\346<]4\266\276\004a\005\276\225~\306\276U$\257>\002\007\376\275\256NY;\232\002O=\236hd\277\242\222\013\2763\320\206>\363\317\317=\305\275\020=\240\227\020>\375* \274\177\366\303<<\357\320\2768$<\277b{-\276\216\014\361=\374u)\275\005\034\211>z\'\203=\340x;>\216<(>\010k\215>\310\211\027\276\tS\256\276m\327\001\275\245\027\276>\021\336`>b\224N\276\204\201u\276p\n\357<\036_\017>\322\n^\276\224;\257\276\245\373\225\276\360\310\227\276b\277\346>\375\330%\277\217\017#\276\315p\t\275}\333k>.K\033>\216\376\246>\240\276\334\275\340\265w;\004\315@>1\263\031>\332Tn\276\313Y\343\276\320\347d>\036(\232\276\030\231]<\342<\010\277\212x\267>vRL\277*\016\273<\010\243h>A\271\321\276\030\001S\275\310\222\202\276\373c\220\276\266#%\276\327+\301>\252\250\035\276\272b==\200/*?\271\263F>Dge\276\301\035\274\274\251:\036\276\364\270\264\276\347\226\337>\234\214\364\276\177\263\r\276\267D\313\275\305\021\270>\001\262)?\226\221[\276\364\305\314<{H|\276\340\275B\276\373\205\024?\260\264\214\277\257<\203>h\270O>\357Q=\27659\305\275\023\017\030\277\031\313i\276o\232\033>J\026(\277\216\242\022\277\24601=\275\250_>\"\361\226>\234 \334\276\024c6\276\245^.\277ZZH\274\360\231\033?\327^\216>i\335\273\276\211^\034\275\024\221E?[s\030>\305\177\341>845\276\3645E\275\235\314\n\277^p9\2776\346\212\276iR\024\276Q\017.\276\230_(>&\t\336>\334\253\221\275\274>K\276\214\354\212\276\\?\204>I%\005>2I\242>\264\261\230\276\020\363\220\276\024\336\256\276\020;\213>\260\231\024\276#{\327\275;\335\024>:a\033<@N\327>_4y\276\271&\335\276Z+\314\276\0304\001\277\341d_>\021\270\215>?B\304\275\325Q;>\267r\344\276\237j\204\276\314\001Y\276\276\236\205\274*g&?\224\262?\275)$e>M\316A\275\023\t\352>\352\006\217>\335j\027\277\215X\033\2770Lt\276~\252\n\277+D\237\2764\273\272\276m\226\202\277o\027\235\276\327\026T\276\207\037\025\276-\315\222=\316\241\271=Lg\272\276\226\037\322\276s\271\257\276\314S\275\275\260\355\361\275\336\014;\276Y\260\032\275\014{\013?\3333\371\276\003F\310=\335\014&\277\"\201\002\277\2774\221>SoJ\275u=\247\276\004\254\271=\325d&\276J=+\276\2417\312\276\331\347\336\276\222\356\262=\327o\227\276r\204\317\276h\356\375=\352\252\304>,\324E\277\322\230\241\275\260\034\221>J\327[\276\235\311\001?\0364\251\276TU\232\272hA\343>Z\316\"\275p\000\001?\017@}\2753\034\t?\035*\205\275Lh\022\276\'t\006>x+\202\276\200c\016\276\214\243\241\274\357\303\315\274R\351\302;%r\365=\263d\277=\302g;\277\326\001\033\276\n&\323\276\177\033`\275\t~\017?-m\267\276\273\340\022\277kP\007\277\247-\225>\023\313 \276X2\\>\211\356\200\276\231\355G\276\327fa\276\006P\264<\223\262&>7\234\013\276m\234\016\274\036\260\327\275\025\004\001\277\314\306\262\276`\331\205=D?\206\275\347u\255\2768\303\230??\335\034\276\257\235\215>\326\312{>\351\3464>\023\270@=>\316\024\276z\020g\370\210\360\272\322g\336>\370\315\331>lh\257\276\213\341%\277\2425\352=x\210\003\277\3376\201\276\000\203\344\276\215\337\307\276\306\315\256>\203k\305>w\202\210>\247\311\001\276\277\335\353\274g:\206\275)\337D>\204\223\235\276\317\322\005?\270*\225\276\256h8\277\362;\213\276Y\316\231<\250W\371=\270\325O\277Mo\372\276\337W\234\276\\\026\247>_\340T?W\030\255\2764\227 >\246\323[=b\3524>\354=b\276*\317\236>\022x\200\276\247\221\205\275\330]\026=*H\206\276\036q\020\275\027\216\236>\021\323\017\276\0222\304<\344\235l\276\034\220J>\234\3704=\026\022>\275a\0016>70\302\275\333\322b=\005\'F\275\261\226e\275\366\001\235\276\311M\232\276t3t=\345r\313=\010\355\330\275?}\010\275~\025\317\274\246\242\024\276\262e(?\237\023v>C\320v>\370\272\302\274\037)\220>\n\274!=\363\220\363\265k\257\275\363\277b\276q\253\"=\217\271\016\275\370\205M\276\341\336\357=*s\211\276D\306+\277\304\364\351\275\324\210D>{b\304>\200\3666\275\024\211\014>\2467^>\355N/\277H\033;=\033$\001?Wb\035<\262/\036>\230y\251\276o\212\361<\373\377\310==\325\363=\235\227\307\276\364D\211\275\271\377\343>V \213=\325tT\274\224\242\227\274w\022h\277\225\r\307>\020\222\254\276\303\030#\277\001\213\350\276\230Z\304=\371\014\014>\255\376-\276\242\t\017\277\237\032p?L\362\363>\205\"\244=N\0322?\227J_>@\034P\277\272/\265\276+\277\237\276[@z\275\373\335\242\276\240\020\204<\020\305\300>\217\364\210\276\367zu\276wU\245\275\271\213\301\275\'\027F>)\244P\275N\"\214>\224\020\021?\177\037\247>\026\031\337\276\340`#\277\2249:\275`\303a>*\307\025\276/T\304\276\230f6>\376\247_=B\005\350\2759\007S>.\351\257\276hW\205\276\260x\270\275}\261\304\2743\354}>3\271\203\276\277\271 >@+\276=\363\220\016\276\256\030+\276\004\244\005\276o\235I\274\020\177\223\276\233\005P>\303\3060>]\374\377\274\232\020@=v\221\357\276\201\323\327>\3415\032?\025\014%\275`\356#\276\234\244\021\277\177M\220<\272\272\266>\030\271\000\276\330\272\374\276z\327\006>\270-\032\277\217Z\253\275\271\256z>\365h\337>-\355\335>\332\017\271\276\214\267\346>\034\230\305\276\036+\261=vS4>\230XA~\243\371=\240\250\364>y,8\277\306\263\213>\tW\210\274\026\003[:W\360\321\276\321\005+\276\372\262A\276\313\r9\276C\035s>\217VO>\275\232\347=]\203\211\274\340\0351\275\2625\322\275\361E\276\273U\014\201\2766\361X=a\312>>\022$\275=\230\031\275\276FQ\321\276\005P\320>\343\247\251>\326Wv>t\243\201\276\221\216\213=!\237\024>\316\214!\277<\351\302\276U\033\000\2770\370W\276\r\214\t\277\303q\372\276\234\003w>\010_!\277\336\333(=6z\243>\310\202j>\030\373F\276K\211\346>\004\204\332=!\221\312=T\222\004>\235vI\276Bx\335\276\362\373\261\275B%\221>!\377\303> \341\213\276\316s1\277\014s\032>dEd=\341&\354\276\240\016\342>\357k\275>\0105\235\276a\362\342\276{D>\276\361\001\257>\207\030a\274\366\025\246>\245|\255\276\250\261\251\276\317\031\032\277\244\316\326\276\251\322c\276Y\342\373<6\342\367=\250f\333=r\302f\276O\363\215=6r\226\276\003\215\022\276\020\037\274\275Um\223\276\005\355\001>5\372\226>\013\353\253\2752\351\354\275r}s\272\326\276P\276\220\'\330=t\221\337>tAf>\374\037q\276\3524\000>5C\242\276\001\230\261>KRt\2754y,?X\323\022\277\364\\\010>d\352\036?\n\374\023\276\315\310G;\321l\314\276P\355\'\277\366\205x=\033\267\267=T\215\207\276?[\221>\366\"\272><\354\367=\377\026\262\276\237\365\037?\014\334i\276\032\3613\275\277 \222>e|6\276]rm>\031\220\037\276w\310^\276$\367\206\276\301\343x>p+\223=\250o\244>i\026=\276v\027\002\277R=P>\026\353?>\205\353\275\276\333\3338>\321\326\215=\373\234\207\276BT\206>\340k6>+\344=\276^do=\313\221\002\277>L\034\276\370\033\313=-?\210>s\360n\276\327\354\344>O\201\266;\361k\000>\264a`=\232\027\257\275fJ\204\276\356\t\232\276o\313\331\276E\371\202>=[\016>\336(\256\275\'x\025>3s\217\276A\030e>V\\\'\276w\332\234>\205\204m\276z-\203<\336(g=H./\276;%\255=`\241\203>[\2212\226?{<\235Pi\276}\220\020?W\002\221\274Z\3565\276\033\230;=\275\206h=R\254\376\275\236\260\005\276\027\277\244\276\221yW\275k\031\305=\306\204\006\276\323\033\"\276\244\274\377<\323\257\032<\3120J\274\206\377G\276\330\261(\277\373\307L\276\333A2>\353\373\023\276\014\256\267\276\341\220\232\276\'B0\276\n\275\206<^\370\204\274\352\263\n\274Q\367E>n\214\005=\235\245i\274\241\361\360\233\340\n>\312\3609\275\022\336\r\276z\000<\276\305\312\357>\373\372\030\276\276\005\256\275\321H$\277Y;e\276qV\371\275\2341m\276\204\272\363\273!&\275\276\031\223\323=n\356\032\276B]\037>\213f\307<\303a\220\275\220\300m\276\221\323\241<\3333l\275\215\201\242\276\021\254\353\276\344\225\325;\307D\373\275h#\255\276\003\314)\276kF\003\277ob\305\276\342`\206\276\223\315\325\276\273\226\233>\317\232\014\277\0162x\276\014\260V>\004\2523>\222+\203\273\235\021\037\275\346D\250\273gE\324|b\271\276\250\020\253:\370\337\031\277\377\316\320\274\213\267D\275\201\2314>\265w\030\276rs\256=e<)>=^\022\276l\026n\275n$V\276B\230\207>\322\301\251\275\352\032y\276\200!\334\0105\333\276}\237\255=\233\342\246\276\035(\333=\215\200+\276\"\177&\277H2\356>\313\360\323\276\216\243\346\273NM\007\277z\273\222>\227\336.=\354\232&>M\227\340\276pA\224\274\266\263\307>+B\201\276\315\260\331=< \266=5\235\007\000c\233\274\303\007E\276A\010\360=\003\223!\275\220\341\237>\302&\206>\230{\222\276\247\030\003>\245\343\353\276\221\243\022\274\330O$>\370ok=\263\017\031\276+\326\204<\220}\231>~\353&?i\256\342\276DA\004>O\225\215>\361q\005\277\241\201\250>\037~B>q\363\311\276\272Hc>\331w\022>\320UM>\264\350g\276\272\241\260\2763f\222>\016\206\007\277*\301g\276s\272\252>\014\3628?K:\376\2769t7\275\351?\270\275p\222\357\276\206\363E?%\245\033=\276\025|\275$+\232\276\347(\031\275\340s?\277\323d\"=\000\177\276\276\326\310\213=\t\232\017\276\315\356/>\247\3367>\035\224\305\276:b\236\276\371`\233>\237\365%>\343\221&>\265\266\245>dS\356\274\240\274\307\274\222b\203\276 \265\274\273G\257\247>\352m2=#W7\276\221\364\327\274h\323D<\242w\360=rJ\020>\177\222\344:\007\235=;\206\322\037\274f\221\373\2751\003\226\271\346N\365\275d\317r>\032\355\022<\344\217\201\275\361\342\374=\314\033\221\276<\350\026\277\233\262\304>\365\035H>\255\341V\276\022\017}\275K\350\033>!\202\221<\241&\376\275!Q<=\033\221\243=\312\200\350=\372\004\363>\256\315*\275\220X\365\276S\275\350\275\355\320j>\217\220\271=\367\210\245=\254\373\330\27620\r>\275\344\212>\312D\263\275^[\351>\216\365h=FD\240>\233^K\276\315N\321\275\254y\027\277\373Wc>y\215\267\276L\215\r\277\t\343\205>\206\337\024>\330f\203>\010\014\271>\315in\276\2264U\276\237\367\216\275\312\025\305\274q\010\336\276\272R\263>\341\337\336\276\310=<>+\360\234=\245\352\257\275\003\245\361\275\372\332P<\344\271\227=\202&$\275\'JR\275\177\021C\276o6 \2768\366\024\276n\345\244\276\255V\273\276\223\"\300>\206-}\276\n\177\364=\207\341+\275A\177C\275\355\017%\274\"\301E>\373\345\320\276$\021_=\212?\033\274#J\212\276G}n\275\314\377g>\257iC>\322\2106=_u\203\276X)\207>\234\361\002\276$\031\320>xo\017\276\231mB\275m\355\n\2771\204\356;\001~\327\275\214\235L\276\201\356\177>\231\322?\275\005$\222>\3458\305=|x\337>\305\334\016>\322\225\275>Z\342\300>\315\273\377=\347@\004?\r\212F>7\263Y>\352_\252=\246\357\361>\240\210%>I\030\241\275\241\343u>\374L\333<\237\265\357\275\273\300\212\276E\233{\276\217\207#>\027\365<>\317\324\013\276\010(\033?\270\004F\276\316\017r?$B\370\276*\013^>\0307C=\301\021\204>\306\352\000>$\310\266\275\264#\224\276\265#\272>\222!\027?\360\232_<2T\234\275\264\364\314\276HY5?~\321\332\275r\247\025\276\336\207\243>\332\213a=\225w\346>\320\216\207\275r?\273=\310\014\273>\275\346E\276\302\177z>\320\333\273=\315]\222>\177\371\364>c\002\005\275\027\n\343=o\366f>\310\226\240=\257\225\234=\352n\277<\231\244\022K\233\242\274%\371\244<\235\243X\276\221@+\275\357\306E<7\262\223<\374\264w\276\312i\213\276)\201r\276\244\201<\276\275m\014>^\357\216>\255\326`>\027\251\027\276\320\345\333\276\376\311\214>\241\206\202>\353\365\361\276\272F\366>\346H\227>N\177\034>\305\311K>v\240\267\276\321\224\035>\276?2<\013\010\354=\2739\326\276\320&/\276\336\306 >v\341\270=]\261\257=%V\003=k\203\233>\346\235\334>\303\261\236>jq_\275\243\220~\276\240l\006?G-\224\275\356=\367=\344\224\354>7\340\301=\3349\225\276\353\277\355=\335\374\250>?L\306= }\371\275\212_\317\275\013\207\310\275\224\010\006>\314@4=\237.\306\275L \235=q\001B\276s\232\307>Wx\351=\212\013\033\276/\343\030>U\241\321\275\033\240v=\361d\203\276EV\334>\247\236\235\275Y\342\303=\321\332+=\274\032O?\305\367\310>T\216\n\275\023b\274>\242\247*\276P\207\025\275iY\351\274\330\223w>:\307\314\275\204\344\022>\242N\205\275\022\'\301>D\254\310\275\221/\022\276AM\022\276\234\336\313\275\274\000l\276\003:!\276\037\241==P&\342=\205}\303\275\326\201\212>f\252\217=c\317\031>O\257\007>\260.\200>\256\237\226\275\332M\363=E\223\220\275Qc~\276\205Ec=}\361#=\017\326\213\276]\337_\275\260\r\206>N\300\223\2765>m>\332$\364=\367\021F>\236\n\274=\303k\n?\"p:\276\215#M>\345\374.\275\226}+=9\356\367> \360\314>(r\307\276\220\365\316\275\375d8\276\312\334\026>~\303\031=z\236\217>\211\276\226=\210\003.\276^q\001\277f\334\267\276\335\354Q>\315S>\276\334\336\277\275\271x.\276\215\353\222\276\273R\302>>+&\277\372Z\230<\373\375\234=\225\021\021\277\322k\246=\267~:\276F\375\347\276\237\335\345>\254\026\250\276\235n\236\276q\240\320\276t\3578;\227^\346>\3728I\277\273=\212\273\373o5\277\021N\233>\315\232\211\277\033\027\026\2768u3\276Tk\272>\342\332\235\276H\"\254>\350\336\256\276\247\277\253>0 \312=s<\314\276x\311\232=\211\275\257\276\262\354\016\276\024\327[\276\ra\244=y\233\036\276\330\007\013\276\240{\336\276\231\032#\276`d9>a\336\326\275\355\377w\276\316\217\001\276\376\375\031>^\366\222\276\023\363\033=\3734\334=7A\235\276\244\237S\276\203eo\275\346\023\253:\330\017\220<\257\3701>oM\244;\037\344\200\276\217\220\263\276-\000\322;\214\t\274>\375\327\000\276c\201h\277\246\335\252\276{\210N\276\315q\274\276\033\325\201\276\227\327\240>N\337\256\275\\w8\276\032\247\025\277\217\317\232\276q\322M\276\322\020\331\276\352\216\237>`\263t\276\331\264\317>\301\177\355>\3446\226\276\242\2055=\331\255\234\276\371\236\320\274\017\021\256\276\267\374=\276\230\213\247>\215\305M\277\024\376\235:\244\027\013\277\303\234q\277\273\214\306\276\311\301r=\341\037\320\276\217|\330< ~Z\2769SU\336\352\213>\3726\027?\260\373Z>Cn\207\275\333t[>S\310\001\277)|\204>$DX\276\005\235\n\277\356\n\314=\350z\235\2767WE>\004\307\254\2756\220E\276OJ\034\275_\333k\276@\356\301>\260\304\312=\023o\016>\374H\007>PoA\277,(\177\276\031\327\001\276\017\332\362<\023\325\331>\245\236\'\2760\000\025\276q?\357\275p\343u\323\300\327\274z2F\276~7J\274#\3107\276L\356\265\276#\230\311\275\270k\250\276\243\037\200\276\214\363\301\276\276\311J>\330\200\242\276\303j\311>\331\021x>{\262\020\277\252b\215\276\371YS>\311\017\010\276B\261\020\276\024\020T>\035\251$\276\345\236=\276\356\350\026\2770\345\n?\307\262?=\302\0340\276\215\347\200\276\315(\201=\271I\245\276\3416\341=v\020s\273\220\214\201\276\026\226\036\277\310\257\004\276(\014\t\277\313\\N\276d;\241>\361\211\241>\337\234\036\277\247\004*\277\342\001\"\277\350\235c\276\014CB=\203\351\306>&\332\205\276\226\301\252>Q\000l\276\340\270\023>P\310\310\276\312\256\303\276\240\324\021\277\254\361\220>\332\274\227\276\300\365\222\276\253Ek\274\3213\275\275\226y\214>\3259j\275\017\236\256\276\374;\216=\225,F\277y\350\032\276U\265\365\276RL\002\276\005\370A>\006Q\213\276\3140h\276\233Y\236\276\246\222\315\276F\223\370\274\n\301J\276\003\251\305\276\300y\230\276\312\221\322\275\333\320\235\274\230\350g>\242\026\t\277\306\'\223>\271\241\032\277\024\264\020\277\237\\\314\275(\347d>%\001\256\274\2601\336>\341\221\203\2751\335\205=\262\003^>\017\\\362\276\311\025\005?z49=\306@\374\276\217j<>y^\030?\205\r\371\276\240%\241\276\231xw\275\223a\357\276)\330X\277\331\253\003=\3479\243\276\322\002B>1\323\032\277\3237\"\2757*o=eH\352\276\273\3634\277\202\006\244\276\273&\372\276\262`\342\276l\214\007\277UZ\254\276\232\341<\276o\215\013\2773\315\224>L>\033\275\347\020\024=,I\210\276\243\250\323\276e\'7\276\216\333\374\275]\261\363\274\254\226\030\276_\243\016\2769\000W\276\322\017\207>%\254\034\277J\013S\276\311\253\226>Q\333\212\2760\r\271>\214C\r>ak\233\276)AT>x\005\001?\321\330\310\276Q_\007>@8\235\276^c\225\2766\037\330\2766:\220=\366l\331\276\033H\303\2764M-\277\357\310\022>y\377\304\276>\317\202\276\361m\r\276\217gt\276~\275\r\275\003\366\333\276\372R7=\340>^\276\3522\"\277\250\264\352\275\250\256\337\276k\203\352\275\033\316g\275\276\356;\204\276\260\320\233\275U\351!\276\204z\014?\241\020\002\277=t\232>\351\342\243\275\314\2550\274\r\r\362\275\212[\352\276\010\325\220=\026\313\036>\303*I\275\023\246=\276\016\002\223\276\262#\323\276\314\031\317\276fJ\265\276\317\273\022\276\345\243\315\276Uv\352\276\335\210\270\276\272Tz\2756[\236\275\226p)>\240\233\"\275x\347\366\274z\001\347\276`\0168?\016\037\341;\345\r\231\276\227\217\'\275\303\362\333<\246\226\001?+\370h\276r4\373\276\345aM\276\206\333\203;V\264\277\276\247qk\276\206\247\366\274tu\216\273\241^:\276{\036\227\275\246n\234\276\343\335}>\351\331\326<.\321\025>\276.\210\276LA(\276\235D.\276L\335\251>\307\366\006>\027\333\207\276\316\312\000=\242n\250\276vr\201=eg\311\276\177\357o\276\227U\241\276\2508\022\276`\020\361=\255#,\275\271\342\372\276\260H\'<\324\010\275\275|&!>\335\344C>|\373Z\276\341\344\031\2764\303\346\276r\217\263>\327a\356>4\256C\275\000\237\177\276\340\246\243=M\241\250\274\212\0259\276n\311\014\276\3224\302>\253\024\312>\202V\265\275\344\211\010?b\252\n\276FG\335=;\001d>\327\016\255>T\256K\276\273]Q\276\365\246\002\276\026^?=\035c\212>\312\216\351=\302\276\246\275?X\366\275\235\r.?&[?>\204\315\324>\206h\214>\247+n<\356\317\242\276\334@\026>\206\366\351>J\224Q>\357\004\307>\317\241\013?`\030\224=u\037\251>\013\275\271>\246}\004?\341G\236>\270\242\350=[\242\225>\362` ?e\322\272=l@f?\3345\004?\263u\301=\315\301\005>\246\227L>\2123\324>.\0346?4\n\214>\343\366\350=<\207Z\275\252\213\372> z\257>\335\3708?\377\356\221>\035\204\242=\311\021\237>%\324\005?\241\rB?kV\234=\264?\322;1Wm>\301\002\373>v\347\007?y\316\'?\344\3305>\355\215&?\277Z\036?.\353\023?\302\337\002?\312\302W>\025}5>\000\341\007>\006Eh>N?\312>\251{P?\346\255\276>T\231\215\2753\217\324>n\250\236=\303\331\215>\233!\274>\310)Y>H\354\326=g\r\362>\346\027\300>/L\242=\037\221\273>!\003\025?i\364\266>\377\324\320>\356\256\343>\373&\364>\206\371\273>\214\236\310>\264\302\231>X\252\n?3\324v>\306\227\327>f\220\n?\372\260\250>\304g\311>\210\366z>\214\020\000?\024\375:>\343\346\340>\332\036\267\273\"\267\347>\2145s\275\370\236\266>A\255\016?\354\343\\>\rS\004?c\351\222>\205k\207>\316\372F>t\206\024?)\\;?r\325\226>\241\017\211>\000\300`\275\251\016\026\277\216\333%\277/\3211\277\251\371\001?\203d\236\276\343\220\351>\234\2733?wR\310=\302\264r\276\305\221\037\277\270\272\365>,\032\372>Tk%?B\355\332>\311\035\021?M(\336>k\317\272>ka9>gH\325>\207\326\303>\363\tR?\226\231\207>\305\227\033?\2302\357>\335Xz>1\251\027\277\224gU\276\231\265A>2\336`=\200\202V\276\222C\315\275<\352\317=$[\330>rm\013?U\220\005\276\035\025\267=pP\241>\313y\005\276\0230\001>!\037I?\216\330\325>:\232\300>\211\372\325\276\006\201\337>\313\201\r?\200\330\002?D\327\363=\204\030>?\004H\271>\026\232}>\247}\375>\235N4\275\302f\036?u\346\210\276\234P\255>\327{\376>\366\240k>d\253\n\276:\004\370\274\200\227w>\024\330\367>\032\306\375>\025F\223>Kwl;Qe\002>\252\351R?\202\376\342>\303\352\203=\327\224\252=3K\004\271\304\021\334>\263\227\354>[C\356=\036O\335\276n\250\014?\366L\010\2756J\246\307\026>6\233\222?w\231\357>\274\000\331>\370\204{=\307\311G?\0239\323>\304%\263>\005\256\242=\342\177\261>\272[\021?\343z#?\'I\331>\336\317\230\276n\030\323\2763G\201\275%\201\201>)\370\224\276e\221\243\276\3065\366\275\024Ar\276v:x\2765\323\315\276]Q\366\276\251\251\017\277|N\'\276\264\347\331\276\034\246\274\276\022\035\236\276tD\243\276p\010\304\276\324\251D\277\271\023B=\315@\\\277\032[E\276>\347+\277{S\207\276\377\332\356=\372H#\277\260G\251\276\233\000\236\276Z\261y\276\320m\346=\330\027d\277\332p\231\276Do\266\276\337\343\316\276\032\355\251>\221\032\363=J\361\252\276_h\307\276\265\025\254\274\372\362\273\275\350[\034>\310\262\177\276\244\\\001\277\272\227\251\276A\207\255\276\310\343\344\276\005\022\026<\334!\216\276\362\231\232\276\250d\016\277\211\367\376\276`\371\305\276<\210\007\276\306u\317\275\332\314\026\277\225bO\277\353;\352\276D\232\313\276\327\215\036\277\253\250\240\276\340\023\213\276R\354\235\276\037,\335\275%65\277 VA\275\031\215T>\362=\003\277\200\214G\2766e\252\275x!\357\276\265\257S\276fj\323\276\300\010\345=\237\037$\276[S\360\276U\035+\276\013P\341\276\nNj\276\216\315J\277\276\316\236\276\304V8>\201\202^=B\305\237\276\021\352\240\275\301T#\277\037]\203\307\321\177=\\\222\263\276k\177\222>?\3445\276\225e\256\276\036\277\242\275\355\003\331\276\254\000w\276\r\004j\277\3620Q<\002\260O\274<\230\202>\254*}\275\234\021\252?\3236[?\255(\356\276\242/\344>=\005\014\277\263\315\305\276\313Wg\276{\346\202>\356\211\354>\257\320P\276\370Z\346\276\230\263\362\276\243\207\240\274\320\036\035\277h\204C\277\000\204_\276\246\340\017\2770A\001\276\005\002\240\276\031\203\002\277\274r\025\277\370\316\253\276\266\r\212\276@\314\200=t:\367>\231\033\322>\371\250\016\276\342\177\013\277Y3\032?CO2=c\016@\276N\231\350\276\2517\020\276P]\212>\036\025\241\276\375~\306\276\201\242T>\320m\371\275\225\377\223\277\3018\225\274\\f\263\276\024\366,\275\027\220\365\276\'\370->%o@\2768\364f\274i\301D\277\270J\216=\210\031\320\276\340\004%\276\310d\036?\230\272\345\275\250\316.\276\277\010\345\332\276\353\242\030?\250)\274\276Ps\021\277\0272\025\276\204\257\235\276\033\240\'\276\032W5=K\370\177\276\313\2447\277\307\272\256>\325\322\364\276=\345,\2761\336Z\276{\272\262=\356\013\347\276\340p\216=\013\335\255>\314\204\243\276\003y\205=\306\220\n\276\r}\214>\304\372\244\274\347C\337\276\246\330\325\276\240X\326\276\312}%\277\265\206\276>7\302\361\276.\374\224\276\327\242\033\277\201\352K\276BIV>\273\016\211\276\252\241\323\276\264$\220\276\023\370X\276\274\246}>\315\177\301\271\324!>>\202\240B\276*j4?z\241\306\276\345\366\346>\003\235\017?\374\262\213>7m,>X\253\267=\370z`\275\242\200\210\275\305\020[>j\016\214\276\211\325\353>]<\224\27337\023?\246\375\022?\025\305\363\275\016\021\322>\364\244\236=n\267\021?\274&\265>\207\263\222>\025\272\352\275\n\031\242=\013\267\002\277\340\213\333\275\356U\312=I\227\201=\037\022\241>0>\025\276\022\020\253<\317\177\033<\256x\303>\216\025\356=3 \363<\306\006\207\276\220\200l\276\000A/\276\300\311\211<\211`\323=\350\340\202\276#\344\327\276\257R$>\337\243\346>\242\336\231\275\323\031X>\021&\342\275\200x~\275\257b\300\227\224\025=\212\3508>\206Q\223>\367Q\250\276\033\023\020\276\350\263\237>\276$\336\276{\027\331\275\nP!\274\264\2205>\017~\376\275\275\035\276=\317\266\220><\244\240>\307J\344\276_\363z<\210\240\000\274\201%\246\276W\302\n?\016\267\001\276/PG\276\327\246^\275\035P<=\350?2>?G!?\341)9\276}\274Z>\353\364\023\276\265\021\326>\010x\223>\220\354\222>\330O?>\211_\271\276Z\264f>6T\257>\275\3103>\0344\021\276\352\265\216\275 =\031\277\351\226\336\275\301`\274\275\236\367\024=\357\323\207\276\262e\002\276\260\201\235=T+4\276\336\266\276>G2\302=\261\324\364\2749\247D\276\232\360\325\275\202\363\306=\2042\035\276\2442e>/\374\022\277q\351\350=\240\326O\275\375\013\236= F\354\275w\2303=\333K\023=\325\022\241\276\231\247\277<&\013\352=\353\375\266>\016\274\227\274|^0\276\331\034\277<\0012\204\276\343w\350\275\263\033C\276\375\241\032\276\201\305t=\211\214(>\372N\301>\333\034\211>\224\317\332\274OI\211>M\237\264\275\3361\321>s\320\256>;\023\217\275x{\261\275\263\353&\275%\341\214>3w\264>\021xo\275j\260->\216\345\036=\366\305U\275j\250\244\242\274<\006\245>\212\374\227\276\370A\202\276{\215\273>\036\004\312=\204\272\307\275\351\3171>\371X3\276>\230\031=\371\213U\276`\016\304\276\344:\345\275\023\225\250=\367\355\345>\2003\377<\222\206\273=\241&\221>\262\010!>\t\306^>l\"\367>\225\3157\275+\355\205\276g\360\217\276\340\n\243\275\254\335\231\275\266\236\030\275\3344\274>\270\354r>\366\264\312\276\263\2672=\231\300\325\274\3017*>\305\025\007\277\201UL>\315z\004?\223\253\356\274\304\3059\274\351\311U\275\336\310\220>\0238h?9\226e\276w\375\212>\t7\273>\304\203\244=v(\240>\t\202\240>I\r(>\353c\264\276\212\332r>\203\016,>\002\327m=\026\213\265\276\302\276\257=\321\357\274>\227\213\225>h\336\330>BZ\007?\314\010\373>Xs\025>1rV=\004\017\032?\312\256^<|\360\267\275d\243-\276S\356\354>\364\357\026>`H\253>&\027\205\276\321\221\316\276\362t\357\276[\277\025>\252C\361;qg\035\275\304\324\212\276\2369\035>\323\272\'\277]\377&>\344\262\003>9\232*?*\007\177\276Ih\027\276C9\303>\200x\360=\027\325\023\276\367A\017>\267\273;\276\372\0133>,\236&?9\031i\275k\312H>\025\203\020>c3\023\275y\253l\274\366\311\233\276\355\030&>\340Y)>7\317d>Q\336\323>\315\361L>\007\nJ\276 \347#=\3513]>F\002\375>\335\254+?~+\304\276\275:\236\275\261v\221;?hd\276\021{5?^\376_>Wk\354>d\323\224=CIT\276#\037\010?E\370G\276\220S\356>>\030\340\274\177}D\276\027^\361<|z\224>u\217\236\276`\203\005?\251T\'=\335u\216>\010\003\246\276\213$\237>\307\007 \276\326\313\340>\255\'\034>:2\023\276_\0355?Qg\001?H\t\377\275D\356\'\276K\r\312\275\026w:\2755\265\300>q6\261\275^+\227\2767.\274\274\361i\212\276\322y\357\2769\023\270=Y\267\317\275\2144m>\360\243e?\326\305\334=n\355\273>wJ\025?\227\310\313>w\2646>\007\n\003?2\254\'?\320\263\n?\335\307\251\276S\202\003?s\2078\275R\004\317=\221\217t\276]\277\005?\016\013\021>T]\201=\2270\317\2758C\366=\361<\253\276\316gi\276_\347s>\223\361\317>H\202\253\276~\335\246\276\221q\022>\237\212\316\276\337.!>\360{\006=K!p?\363\316\371>T|N;\3021\374>N\304\264\274\362\310\271\276c\036J>\013\345%\276\275(\376\275\214\316\344\2750\342\034>\204\3010>yr\256>\026\007\360\275\373\301\246\276g`\334>\n\2216>\260\" =\274h\227\275\340k\305>K\303\203\275R\356\035?U\357\246=\000\253\026=IM\001\276\365\353\021?%\265\355=\312\276C\276#%\363\275\016\232=;w\257\232>\361>\004?\260=\355>B\343H>2\013\255\276\004\263\223=\347)d>\234I\253>\202\035\014\277\217\225\301>\220t\376\257\351\266\275}[\304=\023u\236\274 P\222\275\300m\200\275\236\303\320>kN\301\275\215\373h=\004\020\224=\362\217\341=\317M\214=\351+O\277\210\345\031>\231\253\333>n+O>\024\306\001\276)\337\247\274/\355\207>\360\257\016>8\264\263\275\230/\257>}\013\010=~\350\204\276U\234/=\201\204\251>\331\322N\276\241GQ>$\014 ?\256Lo>\314\316\351\276V}u>\363\025\023>\033\342\224>\226\370b\276\207F>\276Jz\310\276LIx=\243\006\244=}\017\256\274_\014*\277\3730\236>\310\323\010\275\303\374\377=\276U\235\2764\037c>\227\245?\276P\365=>L\370\250\275\366\003\311\2767\371P>\263\353\250\276\205C\215\276\006(\360\276\311\262\204>\255\036S>\246~\023\276\262\246\306>\003\3414\276\331tp>\371B\177\276b\241y\275\310\374\036>\271\224\263=\227\262:<\307}\212>\307\0343\276P/\205\276Z\301{\274\014Z\023>[\3644><\306\241\276d\031\231>\007\274\026>2\205\256;,\351:\276R.\205\275\017D\353\276\016\202\234\275\356\233\263>\260^\224>\246-\375=r\337\225>\253\n\240>\275X\323\276bDD>\227v\002>,]\212>\260a\327\2762\341R>\032\246\033\277\354\324\370=|\337:>\224\242;\277p\211\021?}\'\235>\200\364\036\276\035\237\345=\006\261\332>\2167\354>.\256\223>\n\026\227>{\231\243>\314\276\313>\362\0245>\240\005\300>)\330#\276\355\330B\277\221\263\201\276{&\275>D2\274\276\354\265\'\276\266v\331\275\300/\241>\250\363\266=-V\300=\357\374\020\275\353\264i\275\034\021\023\276\334\254\235=\325\213\347\276\365\340^>!%[\275TC\242\276\261\301\311\275\351\271\342\275rj\301J\nI=\326~Q>hG\014=\345Y\n>H\035\354\275\363\356R>@?\032=\3470\246\276\254q\266>\362ua\275\016{4\276\301<\211\275\365k\322>\024\235\232=\217\260\377=lE\344>\177\257\\>=\241\265>\317\322\020>\001\240\226\276Etc\276\037o\356\275\306\265\276=\307\002\233>\005s\363\275\031(\222=\2655\266<\336d\343\275\353\266\253>\321^\007=\003{[\275\376\300A\276l\310\265\276[s\274\276\371i\325=+\360U>d\313\317\2769gb<\341\374\217\276\326nb\276x\203!>\261P%>\246\t>\275\016Z\025\274\351[\266=\000\006\334=\031&\213>\376\0201\276\257\200\217>\035\247\301\274\262\315~<\251\nF>:]\225>\247tp\2740G\022:\257dE>\211\034\322=7\244\303=\245\220\353\276{\355\025\276\302\221W\276z\213\014=\301\267\366\275\026(\235=\357q\327>&\200\267\274\206\025f=Q\300`>)\260\335\275\270\277\306>_\026\355>\020\025\232\276 x\344>C;\245=>\007w\276\223\251i>\203\357\004>@\333\221\276D}\371=C\235N>\336@\376=?\267\243\276\354\013\246<\317\255\202\276\033\'\201\275\321\034D=\230H\235>\3304\203=\024\267f>\374x\032\274\224\206\252\276\245F<\276v2\034>\205f\205=}\263\254\276|\027\365\276\232\036\035>\273\3725>M1c\276\202B\002\277\013\336\246\276\234O\347<{\250\227\274\204\\9\276\007Z\374\276#\tJ\276`@\027\275\230ep\276\310\337O>\256m\031\276\326#->7\331X>W\301c\276\303\376\225\275\024\323#\276\241.(\276\370k?;o..\276\237\016_\275\252\177\007\2772I\200=l\306:\274n\021\377=\360\240+?\006B\031?\346\005\364\275\256\376\016\276\027\265#\276\211\242\240=\361t\213\275\330A\267\276\243\262\204\276\213\276\344\276\317\000#\276w\013\031\276l\017&=,E2=R\201W?[:n\276\374A\200>$H\227>Q{\264>D\247\365>2!\217\275\307A\231>_\275\037>\313\324><\330\230e\276wj\251\275a\2239>];\271>9\317;>V=\037\276\224\206\311>\232\213\202>k\365\330=\"\337\315\276\325A\210\275\231g=\276<\213!\276\237,d>7\260\270\276\326\260\305\276\323\274\355\2759l\374=\356\327\262\276\332\032E>\376\3469<\366\235\275\221\266\220\275\270H\022=\3360-\276\350\215R\276\301Z\202\276\245\272I>\264l]>Js\010\2776\304\220\275&\001\035>\252\025\267>c\347K\275\370f\257>\236\262\230>A\003A\275K/\337\274\247\277\321\274{\230\203>;\211\252>\254V,>P^7>#A\330>\013\006\343\274\367H!\276\351\235\r\277\256X\361\276\035\030\250\275@\354Q\276\264\022\224>\334\211\">\351\370\261\276\013\3074=,@\254\2768\r\260>\322J\223>\\\276J=\355~\341=\364`x\276\005T\035\277\326I\352\2759\031\"\276k\022\305\275y\t\020>\206Q\316\276\314\232\217=\263\024)=\374\243\020>\317\354)\276\373\327\007=\325\360\225\273\361\0177=\210+\201\276\327\007\276\274\2414\202\274\312\221\221\276\203\332\343\275v\370\001\277\256i\325\276\365\317Y>\303k:\275\330\213\255\276\232\032\321>\3434\325>K\001\375\275\232S\035>>\373X\276\352\275\241=\314\202\200=\036\026/>xF\014>\033\002\017\276\001=\034\274\345\345L\2763\327\201\275\271\022\377;/\216\307\275\217,\222\275\3470\322>u\327\300\275\235\036l>\303P:>\203\362\026\276\366a\021\276\022\277\206=\325\016\\j\222$\276\254n-\274\036\205\254\275}\211`\276h\277\347>\224v\253>\354\024\340\274\217]\014?/\177\254\276\004\245d>\233\017\200\276\277j\205>\344\007\013\277[P\376=\177\031\027>F\210g>\335\265\343Q\247Y\276$\250\207=F\310@>\264\r}>`\\\021>s\264\212>S\371\000\277\213\037\242\276\236\320R\276\255\330\311>\326e)=\003;\210>TO\234=\362\032\016\276A\023>\276\024\006\236=\326\037\357<\332{V=a\264\010>\360/\372\304\243\002\277P\333\263\2768\305\251\276\344^\227\275\215\305\254;\311|.\276#\030\002\276e\273:?\224\313-\276J\024\270>&\364\366=X\223\031\276\234;\331\276\260\035\322>E\004\247=\205e\365=a\253\262>}\373\353=b\217\221\275*\270\023?\262\264\225\276\276\201\232>A\033\224>\312\312a\276\274\r\315>\310\231\260>\222\320O\276\212cQ\277\'S\355\274\247\344\327\226\246:\276\277\337\255\274k;\002?u0\304>0\251\032\276\340\244:\276\202\022\337\275\350\265\177>\342|\346\2760\316.\277E\177x>\303+6\276\221\222\216\276.\216\301\275\346\024\200\275\307Fr\276\010\3162>\373S\223>C\021\221\275$\332I\276\347\313\230\276\3509\"\276\036)\263>\n\255\272\275\317\266\300\275C\2479>\332\351>>\r\005\375\275\304k\327\275\\ry=\214\240\335>Mh\327\274<\237\374=\272\312\376\276\301(^\276\027>\010\277I\236\331\275r\343\343\2740\327\300\275;M?\276\320\337+\275\261\221\027\276\347H\226>\377\362\245\275\350\313E=N0E\276C\323\221\276\373\031~>W\306\357=\251\237\270<\350\325\230>\361\014\311\275\362A\273\275\351X\007=\352\302\203\274\272\374\200\275\231\025\201>\227\013\230\276\205\034O\274\364\0203>t0C\276\311\212\253>\036\007\371=&\362\247\276\305R\025\276\006\005\303\275c%z<\034p\362\275\213\'\014\275`\272\243<\250\236:>\232\3321>*\315n\275F\226^\275b\315\236>\021y\223\274\360Q6\276\350\241\027\277\317S\010>\241\005\327=\276@S>\234\333\254>L<$>G\223\027=\255F\312>8=\225\275\374m\201>\232,\363\274\346\034\214\276Y\346\314=\272w\022\275\340*\250=\327\024\240\275\260\206G:\244d\207=;l\242\276\335v5>\246\373\202>\263I->G\341\006=`\207\367<\245\226\355\275+\347\327=\363\033\252\275U@\340>\330\326\t;\342\311\367>&\257\314\275\207\031^>g\304\321>Ys\267\276\321\005\n\276s\301\256\275@\357\037\276K>\267>\024\267\002>z\203T\276\236Jl\276M\363%>\375\267\231F\350\360\274\037\362\204>S.8>\353\356\021?E\356\013\276F\3610\275\276p\013>_\360\304>`>\230>Fe\023\277Z8d>\246\325\241>+\357H=}&\222>\341W\262\275\322\3608=\004\014\\>\354\200\206>\2543\225=\363<\237=h\317\221=\330F\250>\362K\232\276\271>?\276\'\340\005\277\206\250\036\275\250\363\342\272\316X\237>\254\207\021\277t\262\307>D\202\205>\017$\236=\275.{>\300\370\273>o\255\013? \207\305>\365\271\274\276\311E\202>\257VL>\310\351\307>\207\017\000?\221\263\014>\000\210\222>\n\300\305>\377\034\355>\257p\264\276\373!+\276i\244\205>CS\330\276\005\324:>\226\000+\276\210\010_\276H\002\267>d\177%\275\277\022\375\276\306M\273\273\206\2302\276F\224\215\275?\250]>Q\230\214>\210)\224\276\353\217\260\275\272u\246\276\r\t\342\276\334\324\033\275\274\271\270>\253\275O;\353\255\277=\335=\003\275\003~T>\3362\030>q\271K\276\327\207\306\273\257J2?\310\024K\277\n\234\302>\277\033J>4\352\343\275\337\\\336>\010z\023\277\030\227(>\030.\300\276(\037g\276\275\373S\277\265\376\356>\256-e>\034\340\334=\341\241\355<\330\3759>\346\242\221>\016\325#=\210\374\275>Rl@>\031\210\264>\341\331\200>\344\232\335> \347\226>\016\352\271\276N\364\317>\277\234+>}\273#>\333W\214>\304\236\210>y|\261=\213\237\374>\'\234E\276\247\225\333R\371V>1\244S=\234\266\250>\204\034\350\275\2315\215>\273\213\302>\203\304\303>\357\341t\275\260R\234\276\022H\225>PJ\361=I&6\277\335H\240>\214\207R>\321J\333\276\237\203Q>\235g(\275~\350J=+\253Z>\014\205G>^80?\216\037\023>6\200\232>#O$\274Y\246\037>\377.\352>\251\024\204>9\270\373\275^ta\276_\202\300>\373If>[\351\262>\361\346:>\335\250n\276\332\004x\275\201x\021>h\346w>\206jG\275M\037\267=\n\326\202=\345\230\361=\262:,>\037\205X>?F\330=!\305\301\275\365\360Y>\000PK\276\007\2026\276\213\251\r\277\375z\351\274\3479\320=\025E\253>Q\031\031?\254b\341=\355,8>\030\270\'>\223T\254=!\302\307=u\005\372\276\370\210\323<%\313\256\275\377\252\212\276\3133\202\274\2511\252\276\371\367A>s\327\360<\343\006H\275\nr\213\274l\347\336\276\361\213\307>2\216\204>G\243\312=\307Z\'>\232\352\263=\311\027\303>\246\246\301>\207\004W>X\217\341\275L`\263\276\3168\252>\177\261\372>\357\372P\2764\344\033\276\320\242A>B\3748>|\n\007>yq\322\276X6V\276\0219\250>nR]\277y\371T>\235\004\313>\363\034\246\275\201&\372\276\230\360\230\276\331)z\277\224a+\277\251\265\216=\261V\261\276XN\261=\342\035\236\276a\321\017\276\' \202>C\233K\277G\004\354\274\030\342\300\276{\252\013>\tq\211<\346v\220>\247kT>\206\031:>\3405h>\021\'\376\276n\355S\275\364z\365\276\371\n\035\277s\362\273\276\\\246h\276\203\330\322\275B\351\230>,z\212=\264\237f\276\360\215\025\276=\202\265=\230\316\325>\323Zz\276\315\224\207>\265\361\355\276\255\364\333>\362\350\243\275^{\364\276,\256\017\276$\006H>\005\007\252>\302\357\005<\332\211F=6y\032\277\275\003\365\273\310_\357\275\327\263\014?\274\357\264>\017\276\276\275q#\245\276\311\355r\276\317\246D\277\255\373\255\276L\374\005>\340\"\327\275k\323\224\276\346\312\350\276\224b\004\277p\030\376\270\033\257\276\273#J?\206J\316\275\345\016P\276}|\026={dN\273\227B\022>ZH\221>\010>\035\276x;D\274j\220:=\313\244b\276[V\251\274\375\355\274\275l\000\267\276\262\344\327\275:\027N\273\250\254\254<\222\375\226\276,!\205\276m\271O>\213w\332\276q\371\234=)\254\226>\375\016\231\2768\265\240\274\276\357\236>\"\r,=\005m\201=\033\331\272\275(\320b=\016\315p>\033!Y\275\270r\202\276\265\311^\276\241^\006>\237]\007\276s8E\276j\324\236\273\237\326m>\255\356\014>\307)z\277\367=\000\277h\345\006\277e@5>tA\316\276\365\360_\276\322?x>j\273,\275\177@\225\276jo\271>5lE>\233\200\247>\020r\223\275\374f$=\311}\220=7\004\362\276NS\256\276k\230\225\276\222\236R\276%\356\035\276\261\316\216\276\215\240\262\2762\352F\276IU\224\276u\000\206\276\213\203\202\276\303I\216\2750\t\344\276\355\035<\275K\277\367=-< \276~\215Q>\232\274\361\276q\277=>X6(:\320T{<#Az>#>\201\275fG\221\276\004&\261>\250\024\023>bj6\276\004$\032\275\351\206\313>L\350,=|\204\373\276~\216\262=\351\367Z\276\212\216\033=\002\340<\276\213\204\322\276\320\221:\276jfY\275\223\304?\276\212Lb\276\334-\276<\312^3\276\003\367\007\274\220\211\005?\226\207\335\276\021\326m\276a\\\341\275z\2531\276\237b\207\274R\304\337\276\'\n\370=\024/\376=&\323\005\276\016mB\276~\225M\276\320]\271\276d\035\037\276\032)\327>F\300&\274\361\021\334\276^%6\276mw\344\276\330rT\2767\363\345\275z/0>\304m\177>\223\356\236>\311E\273>\376\032>\276\010,\217;\275\031\013\277&\346\n\276-\201\236\276\231N!=\026t\316p\347j>e\315_>P3\321<\267n\265\276a\2609\276\363\353\230\2764f\375>B<\303\274\025\355\330\273KG\300=\023X\245\276\344\355\341\276\304\235\363>Q{Z\2764}\004\276%\013\274=p\371\007=\323\237#\276c\210\"=q\222\035\275\206\342\310\276\360\223\306\276\020\374\242>q\362\306\275\000(\016\276\3034D=\346@\235\276\020t\254\274\227\340\354>\355\253\223\276\212~\330\276\262\257n=q\236)\276\313\333\233\275\334\204\257=\361\373\000\276U\004\356\273\262S\013>\266\262\311\275C\240\202>\"a\225\276o\372\003\276\361m\367\276\002A\270>.\331.\276\335\301o\276]\270|=\236\222\253\276\t\204\035>+\266W>\016\235\200\276\225\034[=\261\244;>4\357b\276\370\000\304\276\303\357\207\276\262\211\274=~UV\276\365\231\361\274x(\016\276\354j\027\277\024)A\275\303\343\217>_\312\317\275\021\346n>M}\341\276\235\340\215>\016\260&\277\007I\334\276&\"k\276)\351n=\023\313\275>5(I\276\301?d>\t/V>+\225R=\'\027\213\276\377b\353>\302\240m>\245#\255\276b\227\222\276{\273z>\265\202\332\275\312=\201=n!r\276\312l\226>3\227y>\203\016\201\276\n\315\372\274\230\023\302\2768\031\004\277\337f\333<\303\334\237>--\342>=\312k>\370\017\306\275\355\032\271\275\261\320\251\276Q\222\274>!\365?\2765\337y>\212\366\016\275\263,\321>\261*\241\276I{{\276\357\0051=\215\035\360\2754\341)\275\236\265\200>@\006\010=\356#\336>\206Y\t\275\013\014\376\276\256z\006\276\316\263\036\275OX\341\276=\300N\241\301n\276\243<\200\274\266E\241=\217\356\317>E\370>>\372\265\006>\367\\\016>\023\"U\275\005\360!=\313L\263\275W\263\322\275\255\t2\276\272p\212\276\254\\\320\2764\250g\2766\026\230=\n\343z\276!Df\276JR.>PS\376=\346\354\277\275\253(\277\276\245\236\037\276\242\222\017\350\376\234\275\311h\224\276\263l\034\276\315\014\332=\004\251\255>\213Rf\273rG\275=\001\240\332>\244\267\255=\211:\305\276s\033\204\274\340\023\313\276\323\245\373\275\317D>\276\n$w>\200/p>\';\254>\250R\004>\371\337u>3\331+>\367l\253\274T\276x\275\376\025\262\275\372!\320>=i\253>E#\224>s4&>_R\246>\251\300\032\275\276\177\226\276\254\317\214\271u\212\267=\221\214b\275\026,p\276\355M\343>\2037\335\276|y.\275\270\250\377>\txE\276\363\216\010\277\334\004y\276 Q\242>:\243\275>x\327!\276\245\363\203>Fi\262\276\030+ \276\252\037\345\276t\244\274>\311l\274\276p\343b>_\321\335=QM7\276\033\240\372\276Q\230O>\224\254\033\276\014*\222\275 \220\322\276b&\002\276\205]3>\217P\220\275\020\037\330=[\2142>T\004\002?14\316\276\345a\003>B\205H>\362\365\353\275\323\031 \276\t\305\262\276884\274\022\306\240>\226 \033?\242H\243=\237az=)\334\251\2768m}\275+\254*>\211\361\216>/D\n=\036\213\362>\0035*\276\333\246i>\311v\211=\326I:>7l\210=H<\271>\330@Z\276i^\353\275\205d\031>MW->:<\345\276\315y\330\275\360\326i\275\307\243I\276p\221\207>k]t>\201TN=\310~\213\276Z\246\234\276\332\376\275=5\377\246\275\316 \270\271JB\264>\013\205\226\276\364\240\231>N\201\201=\215\302\300=<\\(?G\226\n=C\350L=yj0\275\356y#>\227\236z\275`\003b=\002\351)=s\343 \2775\360|\275z\370\235>\240N\033>\013\261\024>\002\335\213\276Nz\246>\240t$\276@\023\033\276\2515\370=\027\233\372\274\310-;>,X\202\274\261\367\006\275\021\234\010?1\372\'=|\264\253\275-\207^\276\374C;>\350Ao\276\002\tB\277\021t\235\276\306w\232>\350\234\223\276V\005\271\275\311\302\025\276\374\313\236>\206\024j\276H\340\030\275h{\256\275\nfY\274Qt\025\276\261s9\275\236\315\340<\231t6>6\312\245\274WU\263\275j\362T\276\300P\000>\032\323W=\034\2652>{:\n\276<\350D>$\340x\275\321#t<\365\230\033>\232\005L\273\204\212&\275\370\236\014>s\375\211\276\323\005\010>\024\007\305\276\017P}\276\310\227\023>\247\002w>\"~\256=\362$[\275\344\034O\275\352\366\030\276\242\266\247<]B\256\276\264\301e>\210\262\016\274C\320\013\277\345\362\236\2755\336%\276-r\002>\260\267\016\277\210\342C\275\266\325\333<\010\237i=\031\"\376>\354\243<\2760om\275EM9\277\262\267\233>\017.\315\275M\371-\276\320;\314\275\323\252*\276\037\367\230\276\323\371\226>\221\016\276\276~\311H\275\375\341\034\276\005\001\003\276\323\304~\276\273>)>\233\213L>C[\326=w<\335\275\263?f\276\257c\253\2743\343?>\2014\266>\375\311\352<\n3\371\275\225\353Z\276\207\353#\275\r\200\246>}\253\301\276[h\'>B\217\201\275\"\260-=\346\205$=m\353 ?\024@l\2758\217\032<\313\230\245\276\363]\310;\002k$\275\004\371v\276\376\244.\276\000\366a>\036\301\r\277U2\000>\257\017\310>,;\010\276\314\2268>\3735\027>O=\010\354\320>\376\211\354\276\354\0304\276\351\316\272\275\331\010\326;\327\257\217>\336<\374\275\r&\355>\234\006\360\276(\000\035>\213\005\022?\237E(?\375\217\217\2757\363\275>\331`\306=\260E\263<8\321\327\276\023\311\204\2765\226\246>\352\311\207=\023\350\213=\016\202\331>\336<\333\025\200\240\274\263\257\307=|-N\276\216\356\220>\014\215\273\276\231\001_\276`\254N\276w+\330>v\262\272=\276\016\014=\347=W>\225\320\274\276\326\336^>\226+\272\276]\021\205>\255\025w\276\251\332\014\276-\\\025\276\333Fk\275\260U\264\276\315\211q\276u\223\010>\362\202\027\275\275\256b>\321\275\301\276k\367J\276\322[1\276R\336\201=\327\325\207\274\265#=\276\242\005b>\255]\255>\200\227\025\276\221V =. \006=\330\242?=\375$B>\232\324\211>\246\264Q\276\315\351\264\276\311\342\204<\243\tT\276\346\302\317<\225s\033>^@\232>\362*\014=\311e\262>\374\250\241\275e\220\306\276\2039\016\276,\201f\276Y\252\003\276Q\234\003>P0\317\276\267\013\261\276\375\317\242\276\356I\326>\355\306\000\276]\303#\2761\344\346=:\210\203>\206u\356\275\212\177\271\276S\340a\276\365\3752\275U\352\355=\266H\003\276\272\363d\275}\231\244<3s\226\276\222v&\275\347(\\\275\321Z\227>\235\331\330\276\220\317\010\276\231\033\252\276\255\367\250\275t_\317>4\330\361\275$Z\036\276\037\003\326\275\2259\220=d\354\251>\001e;>\002+\"<&\302o\276\332S\323\275-\334}<\307\230\n>/\260\243>\177\300\224<)E\361=\016g}>d\342:\276\310:q>8\220\000\276\271\005\321=\n&\211=\210\216w=J\235V\276\320q\321\275\266yK>\236t\264\273\2277\035\277\227H\362\275\227?\313\276\361\353\020>\260\2611\274PWY\275\201\316O\276\201\375\033\277u\310\222\276\273\232\221\276u/\316>\264\357#>\361\0058\276\246cz=\206\260\004?\177\313\223\276\250\204\025\275\266A\224\2768T\206\275\276\331N\276ws_=\313\263#=\246\313\340\276\3579\202\276)\275\332\275\201\205\312\274,\356R\276,!1>\374\305\355\276]\264\315\2769\336\312\276+\325\310\276\267\352\032>\210\0220\276T\377\314\2764>\005\276\372k\255=\332 f\276\267\204}\276\020\300\310=\205Tf\276\337M\230>2\210K>1\331\211\273[\247\365\276d\3226>\371\331!\277\213\003\027\276Q\002\204\275\026\332C\276\344\305R\276f\332\277>\002\"+\276\001\316\263\2766T$=+Z\004\276\231\377\233\275\3649\305\274\004\206y>\340\200\237=\2208\013\276@\315\246\275\021n\260\276Dx\254=\277R\227\275\272\305\225=R\"\301\276\304\2213=\222>\027\276D\263\213\276d\210;=\321\236x\276\030\314\260\270\312\257\n>\306\t\203\276\323F\200\276\213\346d>g\234{>\350Q\361;fO\264>\235\310\377>(\237\216>\010N\366\276\215R\001>\370\377*\2762\300\262=a8\245>a\326M>\006\314\273\276\301\3563>s\0061\276\312\272e<=\240\336>/\013E\276PQ|>\355\032\n?\253@\316>\021\314\013\277\332\0025<\305\305\020=7\253K=\341\325u\276\031A@\275\250g\261>\026F\345\276\240\205\r\277\332\352\211\327\230\005?\"h\250<@\375:>\3368U=r\313\265=\277\332.\277\3475\204\275\033`\305=>\306\346>M\333k>\321u\226\275x\327\222=;,@>\346(u<{/\352>\312\255\033?`\251*=\214\365\032?\025^\r\276\337\240\000?\200\005\021>(\'\257\276\274\306c=\nK\230>\2732\237\276\335n:\276<\346$>g\236\223\274w\213Y>\300&\221>`\226\023\276#\2248>huR\276R\002}\276*\2320>\247l\220\274\231\016\202>\377q\212\276f\000\376\275>\254\322\274_\007/\276\241\237+\276\345`\202\276\177T\360\275\247qG\276\031\235->\225h\312>\277\237\243\275fq\250>\023\354Q?@\266\034>H#\203\275\177O\203\276\236\376\207>\017/%\275\350\375\343\275D\026Q>\361\300\377\275\260\"W\276\312\245\257=\255\305~\275\305\274a>O\246\037\276!0\232\275\227\200c=e\314U>\227\310\213>f\336\233>Y\366\266\275\224xk\276\305\310\022\277P\"f\276\303h~>|\244S>q\217\205=\214\0016<\350n\245=\317\322\361;\022\303\265=\345!(\275\007\210\215>:\021F?\375>\005>\014Vm\275*3\353>1&G>Y\000E<\2452\300=C\030C\276\003\306\250>\036\030\017\276@}8\276\t)\255=\206{\213\275]oT<\330\3642>\264\314\334\274F\216\276=R\177}\275\340\224)>@X\226>\300v9=J\237l=]\353,>Y\340T\277\230\362f\275\207\214\177\275\342\016h\276\365K\007\276\022\331\275\275L\365\017\276X\324\226>E\262#>O\302v>\277F\315=\256]\034\275\327\272\301>\247\203F\276\'\306\266=dG\236>\356\301{>\010\214\000>\221\010?\276J\207g>\001|)\276<\307\341>\376\312\230>\301\177+>*\271\364=\303N\003\277Mu9\275\000\372\271\274\006\341\315>\262}\255=\312\201\230\275\220\244\002>\010-u\276\361U\214>\234$\364<\225\332\222=\361\333D\277\364!\345;\235)=\276~\014\243\276\313t\031\276\"\273\343=f[\034>\342\317Q>\3510\253\276\032\337\334=\177(\007\276l\317\226:&\267\227\275X\220`>\246:\262\274\330K\260>\324\333\027\276b\303\345=)VN\277\3026\032?\021-->&f\214>>\342\217\276\331\366\202>x\3500=\274\322\231\276\223\215\010\275\024\246\261=\230\304\201\276\365>\316>\311y\244=N\320%?(*\333\275$w\225\276\236R,\274\277^\331>\241\023`\276g\361\031=bS\033?\300\243\210<\316\357}\276 \370\365\276\230\373\221=\033\300\376\275\332\265\236=ci\332\275\221:\343=/-6\276`\0364\277\024\237?>E*q>\260N\r?\312J\323>\007\255w>\303\260\343=\210\371\313\276\227\335\337\276\026\373<\2758\337\340\276\010\226\241>+\\\205\275\035\353\353<\212\327i\276\344\226\277\276\322 \264\276\312/L\275-\266\001\277}\r\212=!\264\310\276g0m\275^\365\262>\256\037<=6I9\276\242\"[\276ud\307=\333x\315\276\324\025t\276\261L\030=\325 \216\273J\001\343<,\355\315=s/\257>\336\007\223\276\022\315\034\276\317R4\275m\241\033\276~\224\271>q\235\252\275XD\256\275\214G\000?\306=\357=\234\005\032>\244\210\320\272)\255\031>\3455\216\276g\266\305>OO#\276\2115\253>\201\366.<\321\217\034>@\007\004\276\234\000\037>\370\234\355=\237@*>0\357=\276\347Yq>6\022\027\276\265R\270=\273\356\346=\225k.>*\276\251\276\241\326\026=\027(\002\277\014\272%\277\302ch=,\205\370\274\204\2259>Y\001r\276f\270c>V`I\275wv\266>\327Ye>\205\250(?\322\316\231>\022B3>\367\372\304\274\371H\333>~\000Z>(\224\274\275P\257\202>\223a\255>\274\353^\275>\263\244\276\t\301\271=\263\326\266\276\031\346\342>\301\370\217>\325\252\325=271>\277\007\264\275 \361z> 4\332\276\242\241f\274\371\"\017\275K8\216>\213O\037<\3354\334\276dv\007\275N3|\276\033I\354=\367\320\002\276z,\215>\241\226X\276\031nY\276\215\353\277\276\216\313\330>\313\007\002\275\217\364b\275\017\366\331=}5\353<3\317\344>2D\017>\344\024\206\2740\000\333\276\324(?\275|\016\332>\202\336\026\275\203\263.\276\313,S\277\335c\206=7\261\\>\"\232\217\275\301T\251\276\335\200q\2742\204\226\276\333\372\232={\035\237>\245}\023>\026Bq\274\201\313\265<@\212,\277\270\351\004\277H\362?>\325\345\365\276\320|r\276\334\237L>\276\376\r\276\326\235\320\275\301\254\371>\304\330\220\276\236fF=\222)\223\275\307\'\007\276r\016J\276\235T\004>R\231\311=\266\004\001=T!8>\336R\223\276G\342\243\276\016\322\237\276\336H\033?\341{&\277+o\377\275\245u\245\275\034\335\213\275C)\007\276|u\205>\203X\372=\300\273:\276\r\177$>\260\2476\277\322\262\303>D\\\256\276T\210\252=\231@\n\277\322!\220\276|r\267\276\022\275`\276\353\'\002=\245\337\246=y\010\215\276\016|\226\273\270\375\247\275\033\201O>\305\271\325\274\"\237~\276\237\305\214\276\343\240\220\276o\tX\276\007\321/\275\007\251I>\000\033R\276@\343b>\345G\357>\364r\000=\206\364C>\264\302\333=\034\014z<\263xY>\3704a>\303\225~=\"+F>\t\227W\276\221\315\203>\220\344\237\276\026\265\364>,\306Q=Z+\240\276(\252\246=\331\014\353\276\270\313\334\276\202\351p\277r\203\334=,8`=\302\337\277\276\027\254\202=\361\005\223>\250Z\260\276\343e\253=\342\356\333=J\252\220\276P\301\235\276\224\206:\276\375\206\007?\346E(\277\246\034\003;\314m8\276)G\272<\265\177\360\275\262 \312<\034\253\033\276\322\326\'\276\251\203Q=\256\013\273\276\313{\376=\305\016\216\275\321\026\021>\024\211:>\306\207\026\276\203\237\307>\215\"\316=\343a\344>!\307\024?\254\374\037\276A~\r\276e\272\211>I\371\356\275R\241(\275\000~1>\356Me>\227\016\000>\302\277R=j\273#>\240@\036\276o(E\2752\227J\274e\006\000\276E\233\233>\266~\246\276\024)O>X\352e\276d\243\205=\246t\356\274\364\256C\274\276\332F\276:\265K>\361\311\034\277\354F#>\364\213e>#0\325\276\247v|\276\254\223[\276\331\274m\274\257N\237>\233\264\337\274#6\004<\274\022\177>\2029\222>\366t\262\276\264m\236;\242\313\216>D\277\277\2754\246*>\221!\265=\323\253\250>\364/f=\342\347X\276\344\026\274\276x\2150\276\234\026`\276\177p4\276\313\200\240\275\310i6\276O\217m\275\246\r\210>\26278\275\267I\006>2\264\237>\271\276\"\277\004\322\352\274A\263P\276\357\364n\275\217\272\002\276\315`\312\275\347\016\036\276\221\201@\276\216\024K>\022x\216=\260.\275\276\3104\331>\357\347n>\177\025\006>Vy\025\354=s\274\036\023\243>N9\226=\014\240g\276\032\332\336=\306\"c\276\256\224\235\276\244(\251\273\244H\003\277N\013\235\nA\351=\255O\377=\237u\302\275\344\252H>\031\277\002\277\255\n\363\275\3330\361\227\345\210\275\323\312\305\275\251\325F>m\313k>\017\357\325>e\367\357\276\354\313]=\324\310\026\277RG\006\277,\233\243\276\266\365s>\320\003\226\276\262\212\213=\353u\214>t1+\273e\240\273<\276\225\234>{V\t=\016K=>,O\231\275s\026>>\302J\226\275@\256\036>\276\336R\276D\201C\274C-<=9\340\353<\006Q\350:\303-v>\265M\243n\022\304>\035\257I=qQ\220\276\314q\313>\251\'\342\275\355V\010\277\225\271\367\275\017\0226>L\246C=\246\355\367=E\177\201\276\321N\212\275`W\256\276\332\005\274\275\210b\n?W\306M>\316\'\217\275\002\213\356>@_\213\276\236\272\035\277\245\365h\273\266\361\024>\213\021t\276{\370\223>\255\343\255=\237\271\003\275\261@\201=#\306\240>\351W\273\276}\214\t>[\210\370\276\035A\014\276o\346i\276\344-\336\335\023\230\276\327[.\277)\324\227=\354\364k\276\360\t\212\274\205\3108\275[n\232>1H,>\357\212\274\275\2057V>\rp\265\276]\313\255>8\r\007;\001\276\035\277r\341\236\275m\211w>0\370\033>k\307n\276\324\241\232>\244J\007>\343\321\203\275\333\347\003\276O\3319\276&\312%\276\200\036Z>g\\(\275\253>\201>\031\023\r\276\344\325\301\2752\301\302\275\227\273Q>\3325\235\276^\334\004?/\2663>\343z@\276$35\277D\262\031\275\255\351\220\276\333\331,\276\037\254\237=VI \275Z)\263>\254\356\236>d2\223>Z\325U\276\362:\213\275PMt>+\372\300\276\363\273\200\276*Y~\275\343\276\024\2773\306\325=LV\026<\271\341\020=4f\321=M\375\330=\362\261\014\276\222\307H\276\203\224^>\217z\335=2\214X?O[\221\276\310\275\255=\356\211\253>\000\353j\276*\022?>\242Es\2762\266$>\2353\210=q@\016>b\0242\273\346d\330\275#9&\276\357\372\357>\202\214+\276F\352\260\254\275\027\323\001=\234\"g\276\212V!<\216\251\325=A\3322\275\252\325\026\275\213\222z\275\221g[\275\304#\363=\037-r=\350\246\213=cdj\274!x\271>\312\'\317>\373\351s\276\347V\253\276\"g\004>\237\361\230\276\034\010l\275f\361\256\276%#c>\244?\257\275\364f\241\2757\336\234\276\250\363\315>\3702\276\276\371\365\203<\021=\004>\021\253\243\276\036\227\024?|\214\344=6\333e\276k?~\276,x\355\276\003\2574\276\300E#>\223]\255\274\257m+>\221N\026\276\177\027\252>\234^m\276o\336\025>\316\204\362\276^\321\025>;\233\004>\035\004\234\276B\322C>(\363\010>\303\037\366\274~.\261\275\251\316Q\2767\262\304\276\375P7\275!\373\'>\212^\037>C\200x>\202\n\263\275\315\303\035\'vn>\341m(>\006 \035\277\027\263\350<\320\303\256\276s\257\354>\274\035P\276\303\235a\276\3128\300>D?m>\305\006\027\275i\325\234\275\031\320o\275\276\247\222\276\3059\017?\347\326)\275\307\001\227\276\267\006\016\277&,\365\274\0176\355=\217y\r\277\223{\363<\007=\256\275K\337\373>\300\374\356\275\237\342\214\276R\356\347\275\300a\215\276H\2258>>\273L\275\367\331\310>\013\007\265\276\250L+>\2018\021\274}\202\325\276\254\306\260\275\010\216\023;\264\214\345\276\235\253\374\275^\326\265=N\237\372\276tdu\275=\213|\275Y\311\216\275\\\223\347=\322\343-\276K]\233\276\233\t\005?\t\t\200\276\275|U> \223\364>6\235\357\275\335\241\232\276}i\337=n%D=\\=\241\276\335\364\304>\306|#\277S\345/=\037\177\220=\277\235\007>\016\201\224\275\003\005R\275\346\312\347\276\372\343d>\277\211\254>\304\261\204\276\202\274\020\2764\024\256=\353\304W>\322\255\024\275<\t<\276\263\001T\276\341a\237\275h@\353;|\031\324\276\365_\201\276\273J0\276\310?\014>\026\032\212\272\341\351\211\276\245\253\241\276\226\245\246=4\266\277\276>\214\002>\255\007\325\276\037zO=\227\031|\275\234L\374=\226N\003?\035\303y\276V=\257\276^\'2>\220\010\274>\341\372\346\276\375K\273\276\223l\224\275\371\373\243\276\222\371=\276\230\177\253\276\033\202]?[\306\272>\202\374\257\275#\343\024>h\324\253>%\255O>\033K\240=\355i\010>\321S\365\276\354%n\276\002\321B\276*\005\200<\243\n9\276=\004\006\277g\217\373\276|\345\252<~\030\233>\230\337\232\275\277\033\313\274<\310\323=\327\300\013>u\267\017\276F\3275>\'9P\275e\220\356=\326(8>u\373T\276\330\273\037>\273\335\356\275\323\272\261<\\\005\376\275\251\312\245>DX\225>\355\020\341\275\333\377.\276S\345\230=@t\216>\312U\364\275B\006/=\333\260b>\346 m>\nG{>\305\354u\276\"#n\276\326fT\276\345Rn=\317\365\363\274wy]\276\352{\035\276;\372U\276x\037\031>J\027\214\276r\215\365\275\030\212\320\275\217:\225>(\276\245\276e\231\t\276x\360#>\260C\334\276\313o\010\275\2168\205>\253\025\306>J[\300\275\202\014\302=\232.\326<\221Y\236\275\315\226\315\273\330-<\276k^g\276\233~\212\276\223\274\300\275Po\355=K\332\350\276\030\243\026\274\262\217t\276R\277\300\276\025\275\223\276\344\313\204\276Y\260\032>U\213&\275\032\301/\275\201\251\036\276\205\366\374\2769h\264\276\367 \312>\232n\250\276\025R>>\312\002\020\277\027\212\235=g\007\n\277%\207\277\275!\370\267\276\267\376\361\276\347\331\033>\214\272\003>O\346\t\2758;\244\272\361\333\360\275\370\246\213\276h\220\307\276\233\324\031\276\226B\257\275C\333\005\276)\033w\276\224\223\\;&\'\361\276\301\312\275=\254\261v>\220-H\276ef\031\276V\310\007\275<\3410\276KS\031\276\251\346\253\276\372o\316\276\220\350\316\276\232\314\013\276M3\213=i\360\215\276W\371A>\027\310]\275X\247\345\276I^\315\276\212\213\312<\023\014\311=\373\254\364<\255oI\277\311\322\371\276\302\352@\276\302\207\343>y\215\327\276G\220a>\241\336\243\275\307\2749\276\210\203}\276\340\234i\275\274\357\006\277ha\232\276{YG>D\213\003\277\320\177\211\276\374\314\321\276\245\022\250=\275\351\003\277B\006\002\277\024\030\002\277\"!\274>J\311->\307\234\341=\321\211d=\202\003\357\276\2124\004\277\251\r\020\275I\350g>\240\304\205\275\230\221*>\274\266\316=Z\000O\274;\001\335=\245o\212\275\351~\035\277 \336\375<&c\353>\336O\373=\021x%=!\303\207>\006\0233\277!\026\357=\310\222E<\237n\223=\300\225\230\2753\341\244>\210K\240>\037U\005\276m\227&\275\014\236\240\273\363\377\234>3j\256\275j\265\323\276b\031\245>\2042\264=\033\332\366>\241\210\354\275\022\032\347>$\230X\271v\364\r\275(\217\266<\327}R\276AW\375\275\246q\224\275l\316\374\275\262\037\325>\354\' \277\361\016g>o\251\305\275@\257l\276\016\333\334\275o\351\376=&\252\032>Jq\261>>_?>.\312!\276\023\254\274\275\351\350V>\300\022\255<^\335\016=\326g{\276\020\214.=\360R?>\363\234\214>\364qD>|\002\033\275\342\237]\276\005\321\373>G\233\036\276uY)\275us\364\276\204\0362\276\351\231\317\275\021,\017=\0135y\276\207\355\004\276aP\274\275\253\362H>\260\201\273\274\301#\360\276?E\005\2762p\245\276\242L\377\276w\001\025\275\205{\240>\272fX>\031.!?Y\"\000\276\337\350\325>\270\216F\276\033\225.\2762\330\030?dK\252\276/\337\263>\270\216\013\276~\262\350\275/9\030>\231\2251>\206\337`\276\240t\302>\2255\034>\ngv\276S\215\006\277\031\330\031=L\353\204\273\350\221\214\276\034aR\275\305\341+\276\220P5\274B\323\212>/\303\267\275\267\317Y>\316\226\037\277\0035\357>\342r\355=6\304\273\276Wk\204\276Z\254\006\276RWM\276\026{\231>\364\262\233\275\350\351\250>\372\362\205\276\355/\274\276\350\340\216\275;\342\272>@\343\006=t\007\022>\334\242\322\276\325WJ\276\27392>\377\0031\276\211V\353>\243\244\304>\247KP\276f\310\312\276\263O\223>\231#J>b\260/\276\035\306w\276\314Nr=x\362\233\276$N\317<\301\377\004\277\230\203\007\277=\375\003\277.\273e>?\303\243\275\327&I\275KI\271\273?8u>\332\322\243\276\274)\014?\212_\217\276\005x\340=\345\302\234=A\311\002\2763O\203>\317\337\314\276\n\001\210>\372u\275\276&N&\276\244]\231z\251a\276\222\203w\276\260\214t>\205~7\276\020\024\n=\202\220z\277\313`\204\275\373\261\307=\335\340\377\276\367\356\210\276\025\304\372\274r\324\303\276\224H+\277\264\022\372\274??\243\276X\002\033>\013iX\276\314\362!\276?+\204\274\225@\034\276\277\235\022\275\017\261\023\274\334dp\275\236\237\342\275\326\215^\276x|\005\276<\035\033>\032\356\207>\237\037\342<\311p\325\275.]\303=\345\313\232=\315y\322>\261\215*\274\200\0058>\273M\202>\220g\224<<\225\367=[\nH\276\236~?<\232\343\232\276~\230\246\275\333;\264=\301\375\210\276`\335\221=5\234\t\276Zk\264\2762\035\304\276\254,Z\276\237\230\263\274\017\022\010>e\033i\276\217w\254\276\005\316\266\276f\237\225\275\311\0076\276\027O2>\221\341\363\276\346\300I\277\343\251\\>\033\227\023>\216_Q>\361\313Z>\316\360\276>\"\260\346\025\240\324=\302\366&>\035\247\322>\263\211e>\267@\335\276\036\322_\276\03405>\3732\266<-\353$\276H\303X\276C\323\022\276-\006Y>\016\343\205>\367\250\005\275\250\013\322>`\200\365\274\351*\257\274?h\365=\204L\262\276Pr\253\276\374\216\211\276R\024\373=5\245\355=\322P\003\277T\372\232\273m\021\270\276\357\366\034\277\311X\224<\361\364\357\276,\333\265\276$\333O\276^\2333\276i~\263\275v\354\003\277F_[\276\221o\317\275w}\216\276Y;\253>\255\260\245=\241sS\276\352k&?310>\t\311\274<\205K\257>\334E\337\275\225\027\025\277\323z@>j9M\275k\250\326\275\343l0\273\202Z\355==$@>\330\320M>\230\r\212\276\"`r>AYp>\224\004s\276\000\202\240\276mI\274\276\'c4>\240.\301>\351\010@>:\262\202=I\240\t>44J\275x\220\276=\276M\215\274_\251U>\020\016\253\2763\234$>\201\311\277>\200\n\006=\354\340X\276\010~(\275LAS\275\327*\266\276[\275\016\276\234G\265\276\003\002Z\275\255`\235\276\255$\333\275\375L\334\275\316\303\213\276\\\335\346\276\341\277\267\276C@6\277\266B\305\276\254\307\257\275\304\305\253\274\355l,\276F7!\277[\004\244\276\034\337\210\276\361\344\001\277\255-\353\275:E#>\362\331H=\270\207B\276?\372\020\276\346\362\306\276\020g\020>\221\351\037>\'p\210\276\230$\023>\301jw\275\004\373\223>f\030\371;C\241\262\276\3519\213\275O\220\261\276\261\002\034>\324\200\316=Y|\234>\356W,\276JH\021\277m\001\031\276\006\252=\277:\026[\273h\222\262=;\323\210>\202\227p\221Y\354<\372\261\336\276\016\273\242>\026\320,=\211M\267>;\245*\276n\273\031\276,\213\220>\220\306\362\274\246\n\227\276a\202\224=\313\270\322\275vp\316\276\233\321\246\276M\237\224\276#\024E\276\254jM\276$\323\t\272\243\010\340>\221~\271\276L\246\221\276\227\234[;\342\221E>\203P6\276\201\345\314>\332\r\"\274\241JS=\233@K\274v\210\331=\367\213\200\275jiJ>\334*\352>\014\221/>vU\321\275\257mH>\310MM\276\300&\341\276M\274\247\275n*\362>\366\344\313\275\310\323\374>\330`\375\274u@E> \275\264>G\"\177;`)\301<&\251K\276\273m\207=\271\233Y>\275\264\243>\031\275b>\326\367\001>D\316\224\274\241}\226\275\177\225\216<\344rI>l\367C=\376\")\2754L\010\275\303\r\253\276\341<\r\277\"9\333\276\225BR\276\032^O>\361-\r>\017\376\330\276\350\253\014\276\345\353\203\276\334\206\336\276\233\272\352\276\317{\261>\215x9?\'\365F\276p6\214\275V\360a\2765|\226\276\305\350\374=cA\265\276\317{\211\275\326(\356\275\013?\266\276\236\302\210;/\3213\277\307\007\265>*\025\247=\"I!\276l\027\013\277v0\251\274vr\241=C*\007=zl\003;\202\300\337=\356M\263;G\307\204=\247c\031\276\220\013\345\275C\210g=\265G\003==\376f\276&\2255\276\347ur>!\021\372=\2304\255\275\000`\007\276\334\211\022\275e]\210\276a\277\230>\371\tE>\233\032[=+n\021>\312\274\305\276\212\222\233\275\201\016\307\2762\0323\276u\323\221\276\224\347\245\276U\351w>\024Nu\276w\236\034\2769\234\030>\264E\267\275\266\372\036\276\241\034\277\276\212P\331\276\n_\250=*1\242\273\210\020\340\276\021l\243=U\t\346>%\231\020\277\334f\034>\332\201\014>N\024J\276\357\245s>\347+\305=\314\251\361\276\354;\035\276\3445\027>\357A)\276\022\023{\275\360\243\327\276\345\003\261\276\376\342\231\276I`-\274\335\337\030>\233\274};\311$\324\275\201\222\204\275\033\215\206=d\254\226>G\206\361\275\341\2133\275\320\345\274\275*Q\216=)\362\014\276\036\031\213>\260\361\370\275\377)\263=/\035/>\253CB\276\211E\225\276\247M\004\275\274=\323\276\273\260S\276:H\326\276\247\271\252\276\311\237\352\276V1\307\276\307\023\207\276\236_z\276\323\'\257=\242\2103\277\022x\020\276U\206\266\276\350\236\310\276\205\360I\276\332#\305\276@\277\332\276\356\030\323=\327\230M;\344\223\267\276\230\234.\276a\311#>#\352\361\276;\030\244\276\264N\375\276Vh\022=\200\017\264\275d}\231\275c!0\275\272\036:>\322q~=\177;\236\2769h\022\276\230\003\322\274\236z\334\276\\\251a>Q\240\246\276\254ck\276K33\275/\350\240\276f\263\230\276\274\346+\276\212\203\\\276#\n\236\276\331\340\376\276\255\276b;\335.\252\276\363\002\r\276\373\357\037=\231]n\276e\202O=\221\206\366\275\367[ar;\323\275(.\331>pE\261>\033 \374=]\257\265\275j\261;\276\220\'/\276\263\224\003\275\355\340\"\276\333R+=\021\354C\276Y\334\003\274\326\326V=uk\253\276\202\244\303\275]\023\250\273\007\026(>v\260\302>\301h\027\277\254\253\001=G4\275<\314\374u=g/\207>\365m\323\275\371\010J\275COY\276\357\315\252\274\203k\242=\037\215\024\276\374\2716;\016\007\203>}\315O>=f\016\276\242\377\365\276\010\357\265\275\230\211\356\275HS:>T\270\036\275 \305\212=\230\207\027\275@SF=\212\246\240\276\300\230\013>\010\034\377\275\271\031\254\276\020\357w\275\001zP=\212\200\001>\207z:\2769\256\364\275\231tl\276\244\0231\275\302\255\304=K\246\310=\202\257\022<\027\364\340=\ni \277RE`>.{\017\276\253\262\311\276z#2>\257\274\t>\342!\006=[ \213\275\366\r\200\276\034B\223\276\355\310\256\276n)\331;\022\370\004>\315\240\331\307\345I\276z\212\3719 2\206>j\203W=\\\301\026=\252\r\304>\375\000F=\271\017\226\276\332BY\276E:\017>\341#(\276\270\326\243\275\317\337\212>\264\025\231\276\311\220\243\275\227\026\\\276[q6<\266\312\311=z\267\352=\215\254\277\276{Xk\275!\206\324=\220A\r\276\351\240\326\276l\2730\276y\221\263\275Lwd\276\022`\211\273ZwK=\265!\032\275\225\276\001\277\247\330\371>\265hG=\273\335\227\276\024u(=\341\265\310\276\026\245\201=\016\016\340\276\330\273\036\275\224\273\317>J\0004\276\216\233\367\276\310D\336=\016&\301<\260e\013\276^\000h<\321\006\002?\n\1774>\211 \326<\362\322\275>\347J\366\275\335\227_=\331\000\337\276\260\204\033\276\224\340$=\177\3077>-\304\034\276\324\254\235\276\363\272\201\275\267-\021\275\264\371{=\200=\230\276L_\227>\366\021\301\276\312\246M\276\252\206\326>\360\214n\277\216\n\345\2752\364b\276k0\203>]T2\276T) =`\357\235>W=\333>\340{\333=\364d\252>\322h\204\276\355\330?\276?CW>\014?\225\275\364X\212\2755\260\300>\334\225\'?\364md=\350n\263\276\342\211\240<\313x\360=\021\"\n\277\323\251\177\276\264\247\254>3\373\033>\302L[\276e\002\273\275\202\306\225\2763c_\275\210L\314\275\007\372\007\276;8&\275\261=*>SrJ\276\'w\002=\022\311\331>\364\034\215<\242\374]\276\242(\002\277 t1=\347\352\013>%\243\372\275]\033\360>\205\r\213\2756,\310>[z\002>\307R\322>\010\360\235\276\263\310\306=-\021\305=9-\036=_\021\212\276\333-\215\276\221\373m=3\243\245\276\356\031y>\260\340\030\276\036\367\266\276\025R\254>\272\201\276\276\227\207_>\327\233r>77\213\275\3231\214>\261\307\210\276\034\320\376\274\265\242\241\274B\315+>\334\244\006\276\356\302_\276\005\322\260\274\222\346\341\276W\217\352=(]\210>\"k`\276\341\200\016\274#\032I=\270x\022?\013\313P\275j\336\204=X\223\324\274/\311\023\276Y\037\242\276\312\206\365\275&\017\231=\016W\031>\301=:\276\330\376\232\276\236H\247\276\315mB>\017)\257>\372\t\265\275%\026%\276x\314\216\276\324\354\201=\241\037\364\274Q<\322=E\\\223>\316[X\274]\364\017?\310|8>\274t\332\276~\375L\275o\340\222>\037H\326=\257B\236\276G\221\251\275\nB\233=\354\3749\276G\360M\276\212qo\275\376\340\335\276\227]\332\275\n\261\027;\210\271\230\276b\273N\276\324~\232\276\351\241\203>m\022T>\253\233<\276\0377\243\276yvy\276\230\264h\276\215\003>>T\313\367=}\342\007\276\377\277Z\275%\353\t\276Z@\241>\261\007\030>C\na\276\375\030\235=U\301@\2768Q\350=\014\263\310=dA1>\302,T\274\\\322\344\275{5\016>\243\002\320=\341\320\263\276k\021\266\276\237ec\276=\240[=8m*\276C\216\233=\\\316(\276\363\2116\276Y\037\022?\277\316F\275?\023z<\305\\\337>\"\3474>)Z\t\276\246\232\303<\361Q\362\276\231]\030?\223\333+>\215\001\351\272\305w\215>\021\265\370=\211n\361=\037\n\252\276\214Aa\276\022\264\n=\242E\013?KMR\274=\317\005\276\326\254\344>X\032\265>\237\336@\274^R\375\274\221\305\230>\325\177\002?\327\263\212>5\207*>\357(\206\275\222\212\005\276\350\300\014\276\272\301m>\215\236>=\000\244\352\276\272\253\365=\301Q\253>\212KD?\201\014\303=\2744\272>\325\203\200\273\251}\220\273\300/\352>)\361-=|\302\t?\004\374\327%Z\376\275\213\251\362\275P\026\226\275\361Vd=\251\302I\276\366?\035>\346\305f>l\363\260>\223Y\343\275\277\352\352=l_:=\334%\306\275\376\001\260>Cq(=Q\003\"?\030\"/?\022\206\225\276V\237;\276\270N\320>[SD>\234\255\306<8\375w\276\256\020\201=\334\005\003\276R\2339>]g\205>?\335\261>\260\223\026>\275\315%=\272\377P>\017\243\206>\036\215O\276d\037\034\275M\257\202>\037*q=\334\336\342>\350\372\307\276\244\202\021>]C=\276{\035O\276\036\242\323<_\177N\274\\5\036\275\232r\252\275\265s\302>\004\256M>E\210\204=PM<\276\034H\253>\014\021\346\275\337\333\243\2759\277I\276*IG\276Q!C>\370PD\276\255>f>\216\002\257\276\243\r\326=z\220\020?\025\032\352\276_e\370\276\034\"\272\275\226q\277\276[\206\207>\207\317v>j\366\335\276\315T\202=\250`Z>l\025\273\276\256\007\212\274\316N~\275D\377\323\275\203\215[>/^\375\275\336B#>\3403G\276XL\202\276\353\301\267>W\021\201=\322C\270<\337o\347>\347\335h\276\331\276\313>0\016\252=]\261\354\275qA1>@pE\276\274(\275\276)\016P>v\266a\276n\t\341\275Bv\264>\225I\213\276\230>\205=(D\327<\275\206\210\276\366M\214>bQ\273>i\002E>\341,\234>\372\357\236\273\340\033\037>\361\237\340\276\235B#>\r\331\213=\254~/>\216\237\007>\301\315\260=J\024\231>(\364\017?OC\213=r\335\277\276\203gK\276K\322\275\276\334\206q\276\302+1>\362\334\236~\321\224>\036\333\336\275\301\216&\276\300Y\377=ZF\325=\220\r>>\363\277B>\334\305\007\276g{\034\276\017d~>\221\350\325\275!;\241>6\256\223=\266m\200=Gp#\275\247]@\275Tck>\233\256\251<\177N\020\276\340\263z=`}\254=X\361\236\276\310\036\367\276\2103\327>e\305X>\037d]\276\036X\227\274F\010\035>\252\346t\276\241\222\207\275|F<=\014\2124\2769\336\">\322 \022?m\340\260\276C(\221=v`\007\277zV=\276\367!\244\276\005q\241\276\r\201m\276W\224\242>*\364\232>\014\215\312\274{(Q>T\301\267>\024c\231\275xi\264=8\035$=\233\321f\276f\275\252\276\033\350\333=\371\352\302\276\017\342\366>gD\033\276q]\3479{\\\367=X\314\021?\301\323\314\275;\302\355=\007S\300>\3611\204\276\262\357\337\275%\217\346=\300\327\200\276\254*o>\260\233\365\275F\250\215\276\021t\234\275!\032l>\"%\010\2752\031\352\276>$B>2\210\212\2759D\200\276<\3527?qgD\275J\357\227>5O\213>\215\327T\276\242;Z>\317\224\030=\\\270=\276\002\211A\276\364>4=4Z\237=t\331\'\277\272=`\275.\334\210>\266\311\314\275\252\262\206\275I\032\270>q\265\036\275q\373D\276i\240\204\276\270\354B\276\023\002q>a\001.\276\222\031\230\276zZv>[\315\263>\372J\273\276\371\363\303\276zT\320= \367\353\275\343\336\264=\000\263\277\275m\314\266>\'n\007>97->\221\340\241\276\206\261t\276K\036[\276\2402\030\276\262\260D>\"\253$\276\314\276\346>p\372\335\276&\316o>|\243\314=\301\220W>\251_\020=\304\317\216\276 \002\031>\020j\'>\327\020\327\274\023\304t=(\322\232>w\327\034>\363q\243\275\204\265\r>\013LS\276O\236\'>\304Q>\2740\303,\275\225x\257>4\244\263=\227\264\312\276\267\315\253\276%\026\205>W(\221\276\nL\274>x6\250<\247y\213>G\200\303;\352E\216\275\310\200Z\276\373\253\347\275\341\376\024>Z\255N=\344\302\341=\206\357\271=\256\332\247\274z[\022\276w\217\241\276H\002_\276<\320\014\277\213\2464>T5\370\2758\035\255\276A^d>\'o\331>+j\214\273^\241\024>G-\221>H0C\276?\256x>\275\314\217>\214\262\355>\226\340\300>\301\320\017>G\352\">\032\t\200\275\032\251 \277\271a\r\276<>n=\002\032\267\276C\241K\276\263z\200\275\325r\005?\'&\004\277\'\002l>\261\332z\2765\302Y\276\300M\225=N\245\343\275\026\372\267\275\214\267\260\275F\t\312\276\275\253\213\273\000\346\343=\252)i\275\237X\223\274U\311C=\325\3753>\307\316(\274D2l>\243\227\316\274\'\001\346=2\022=\274\260\255@\275\351k\220>\ro\246\276<\241\225\276y\207\276\276\321\241t\276r\312m>a\023\270=\274\215\230>\222\013!?\220\244z\275\215\027\345\276\214\r3>\277+_\276\320w\"?Jn\361\276~N\214\276\0247U=\352\245\272>\274\236c>P\330\362>\021\262\332\276$rF\276\006V7\277\267\3509\276\014\001c>\213\263\325>7\370\343\276}\305\327\276>\3739\274\205b\326\2750\230)>i0\231\275\371\177\003\277\357\371\250\275\246\242\247\276\250\220M\276\300\207\241>R0\224\274w\251\361>F\367\275=r\rB>n)\326=\260m\016\275v\342U\275\334%9=\022\363\334\2758\204#\277\344/\032\277\333\200\275\276\n=\213=\227/P>\032\342\203\275\023=\033> \030c\276\236\375\013\276\026U\317\276\263p\202\276\253j\245>\226\257\314\276\005\236\211\277O\023\003?\341\310[>\te*\276\035\261@\276\277G\233\276F\177\t\276/\031p\276\204\177\324;{s=\276\216{\025\277\343\303X>dK\'\276@e8\277>\253\305<\267\t ?\275\021H>.6k>\326\326\'\277D\315\205\275Y\325\240>\277Z1\275f\230:\276\274\300\221\275\322u\207>nQ\027\277n0\355\276\372\215\310>\335\252I\276\\\233\n\276|?\322\276U\203\014\2777\376\202\276,\365\206\275\025i\335\276kA\324;h-)\277\305\353\314\275L\244\250\276\035\337\021\277#\nv\276\007\330=\277\364b\220\274\264/\376\275M\346\027>\363\013s\277\001\322#>\356[\367=\362\371];!*T\276\343\001\207\276.\026\212\276\214!\242\276r\223\242\275/F\333\276\221~\355<-3Z\276w\'\350<\267\322\331>cS*?\233$\272\276G\233d=g\264z\275\233\325\322\2758\363\370<`\264\352\276?\221\303=\017\324H>^\305\r=\014yl?\021N\333\\>\021\006j>\037\364\255\274*+\t>oL6=\324[P\275#eT?PI#\202\376\301\272!\314\301\276$\2337\276\250\347H>G\355\004>d\3167?\265\225i\274\263@\014=\362\202m=\353+H\276\317u\377\276\376g\000?\366|\371\275\032\355h>,\2456>b\344\240\276YG\351\276\321`O>%\271\305\276\236\026\262>JN\355\2768jq=r\000\274>I[\007?]=\315\275\227T\361\275\300\304\315\276\336\327\220>\276`\233\274\005\017\365\276\236:\264\276\201.\220\276N\351;>\030\212q\276n\312(?\370,\256<\221!\234<(\000\355\2752O\212>\316\\\017?\265\246\373=\327\312\265\275\3239\024>7\2144=t$\222=\277l\273>\022o\034=?\366\356\276\304\366,\277\033j\222>%)\333=\351\270\263=\200:\000?3\203\357\276:1x>\356!\016\276MJ\014\276\374\024\177=\203\365\274\276\303S\276\275\307\210\030>@\344\"\276\263\245j;_~\036\275\210\246\006?\r\277\200\276\024\036\2718\220\3763\277\261\267\016\276B$-\276\366%,\2771\201D\277\264C\333>\3568\353\276Q\034\224=\004j\004\276\233\177\327\2769K\332\275\351u\001\2766\221_\277\031\353\361\275\300\311\226\276h\205.\276!\037\250\276/\304&\2763\353\260\276\256\353\346\274\316\322\363\275\037\3614>\016\370\305\275\332r\227\275P\347X\276\216\344\177=[\312&\276\205\352\331\274\271l6\276\321E\016>J\336z\276/JT\276+\253d\276\320ai>\025\025\320\275\227q\336\275N`\375>\036U\033?g\311\335>\213,\013?\255\355\233\276\256\311,\276v}\304\276\363\227@=\374z\226>p\242\'\277\266D\210\276\215\320\253\276\245l\010>R\030\341\274A\'\217=\315\375\214=\234\324U>jk0>4\346\023\276\242~;\274\024?\016\277\271m:>\253\343\035\276\014\036\336=`\233\314\276\252\221+\276\206\327\237\276\017\222\036\274}\027\207>\177_\220\276\366\241\337\276\313\222\274>\370^)\276\361\350\340>\345%\274>\266O\321\275\263\276\317\276\362\220r>\326\t\255>\304\003\272\276\376\014\030\276\356R\033Js\250>b4%=r\275\002\276\333\340\000=\177\000a>\\K\330>6x\234\276r\204\006\275*\373g\275.#\335\274\202\034D=:R\034\276\301\256\270\276y\0140\276\r\360\202\276n;b>\236Y\037<6&\224=3U\347\274O_\026\277\264\356\345>\365\261@>V9\276\275c\362@\276\265\351\262<\004<\001>\213\026\024\275\353\251\204>#\r\230\275\266\201s\275\251\302\211\275#\347\211\275\370\204\275\276cU\270=S^}\276\372h\033>\335\373\225\2762\360\211\2769\215\005\275\007\231\241>\300\254\231\276i\004\276\276.\3646\276\022\206\027\275i\"\243>\3340t\276\361 \204\274\007\312\225\276\300\272\365\275\240\265\027?\312\235\024>\244#l\275\375\323\304\275\035T\340\275\3015\236\276\277B\222\276_\226\024\275r\3000\276\276+^<~*\360<\0324A\276\271Sv>\364G\276\276IP\250=c-Y<\203\334\016?\303(\273=S\0272>A\243\236>\373\346\275=3\020\254\274\227~p\276R\300\335=T\326\306\276a\303\303=y{\242>\3358n\27533\205=\323\032\021\277\250\264>\275\370\362\211\276\241!\332=\201s\243>\231\001<\276z\306\213<\266\262\235\276\230\321\213>\367\371\223=\243\361f>\036\203<\276$\333z>]\307\003>\364c9\277\036Gm\277Z\'\361\275\340\2251\276\177Hz\276\343\"\214\276\333\013\207>\232\317\016\277\325F\230=E\373N=\232\013q\275SIn\275\2732\221\276f\356\200>\275\270\305\275\277\225@>5\211\221\276\234p\272>\202\031\002\276\320\251f\276\347j\005>\006V\370\275\277J\336=,P\370\276\313<\007\275p\350\344\276\276&\004>\354\322\220\276\235\267\325>\001\007\320=\310Xb>\351\311\014\277\272Y\257\276\353\350\216\276\316L\222=y\035<\2769`\303\275\361\375#\276\300\361\271\276\014\327\363\275\t\332\205>\245b\301\275\271\216\032\276A\307\257\276\261\002\246>E\304\245\276\371~m>\3565P\276\3157>\276\276\007\257\275\005\010\243\276\246rt\275\234J \276\027\250\247\276C\0031>~\366\315\276\tz\201\276\301&4\276\234\257\324>\321\340\240\276\014\300L>\234\206\267\276g\302\337\267o\347\276j^\241>\004++\276\247@$>\317T\233\275\306^\235\275\303\222\377\276\357h\000\277@y\001>&Aj>\263{\233>\210:\367=[\207\001\277\366\332\246\274\345\007h>\312\301\326\2762\377\246\275\214\356\311\276\252\336\335\275\022b\2358\232\374\004?;L\021>]\361\201\275\264\3768\276\2646\221\276\233*X=\322\032X\2761\376\357\2764-\331\276{\221\013\276\2119\322\275s\256f\275\032\2637<\003_1\276\223\013y\276\321\366\327\274O\343\301\275\3468\373\275\363\310\255=\220\"1\277\210\364\301\276\332\304\t\277\261mK=\203OS\276\221d\301=\342\344\253\276A#8>\364UD\276\356PE\276\216\007\265=\356W\014\277]\351l>A\032\004\277F\210Y\276\274/\303>\217\024c\274\243+\035=\037S\206=\223I\317=\326\324\253>.\345\007\276\266\366\234<\235\000`<\256_-><]F\275(\022\021>X[`\276\016\271\001\275\\8\264>\300\371\203\276\017n\007\276\350D\006?\323\237\027?\346LI>\024\335\210\276v\275\205\275\177\372\261>\353\351\024\276u`\336\276\345Y\337=\216\316\261\276\241\340\022\276\037mp>EM\035\277\222Y\214\273\022\327\214>\265%\t\275S\263\267>&\030\231=.\0317\276W|\201>\205\312A\276\352\333\267\274\345\371\270=\246UT\2767_\333\276\256\014\n?O!\211\276\234\277d=;2H\276s\3433>GK\216\276^\272v<\233\343\016\276C\005\245\276\206\351\332>\201P\006\277L6&?\303\355\313=\014\007\247\276\000\203\010\276\205\241`>|G\013>\033s\300\275\272e\262\275\221\022\336\275`\003\210\276\t\320\021\276\r\274\241>\277\nS\2767\237\003>\347\273z\276\334\"\221>\333$\200\276\030\233\273\274\304\n\004>\252\256I\276\266a\277\276\323\242C\275\221\225;=E[\311>\336\260\225\275LK\273\276t\306\227\276\245\275==\300\336\244\275w\312h\276\306+\244\276QyG\276\000\345Z\276\233\356\031\276\235\372\304=\263`\235>-@p\274\0053\030\276H\026\030?\n\357\211\275\000\322\257>\311D\264\274\342\221\305>U\354\035=\246V\224<]8\303>\230\273\313\276}\246\214\276z\336S>\350N\202>\214\035A>\234\n\237\276\362$\374\275\036\346\301\276r\272,\275b\370r\276\313\234\r?\321,\010>\250\302\341=h\246\207\276]\n\r>\201+\343\276\035\203\363=\023\323\261=\n:M\276n\014\224\275\013\\\313>x\353\222>)2\231\276F\245\273=`\243\023\275\314s\273\276N\301(=u\244\206>\010n\224\2769\244\241>\321\332\367\275\2266\000\277\237\375,\276o\3372\274\360x\263>\327\354\366\276!b\204\2768\324,=v\361\335\275\346\245\030>h\033\353\275\306\241\262\276\230\003\036\275\252v\261>\317\026\334=j,\007\277\360\240\251>X\353C\276E\356\206=\375\025\252=\355\002\216\275e\354V>j\256\234>M\264\030>0\\\273\275\352&\204=\002Ye<\312oz=A\250\001>#\235\036>`57\277\035\365\363>v\030\242>\235\004\212\275x\214<;2O \276\347\300&\276\350\0162<\214]\270\276\017B\344\275MJ\023\276-\241?\276>\322\020<\313\236!?V\005\005>e\323\000=\2263\210>`[\220\276\037K\246>})\034>c;;\276\036\264\301=\2459F=\202\247\303\276\232\r\267\276\343\231\342\275SRT>\023\311F=\242\256X=\024.%=r\343/\276c\231\276\275\247y;\276\256F\237>.\341f>\313V\365\275\020\363\201>\336%\205\276\327\251\275\2763\252P\276h_\203\276E\355A\276\274\345#\276\306U\247\276,\267\t=\325\315\002\276d2\320=c\007l=\217\262\007>\021\007\024\274\024~\267>\0311i>\305d\322\276\203\005E\276g\017\270\275\260b\032\276\237S\020>6\220\321\274\302K\023\276\ny\3679q\215\260>8!\321>\264\002f>\022\355\037\276\000\224\340\275\211\013\203\275\021\201T>\227fB<\210\360\326=8\007\005=\023\\r\276\035\252\257>u\202\251=\344\300\200\274@D\225\276\221d\213\276\006\363%?O\324\253\274\243y\254>[\376\024>\266e\227\276\301\272\215>\247\301\352=\226\366\214>\307\003B\276\265\362\000?\247\016\305<\253\247\330=y\270\375\276K\256\007>x\332E\275\216\257\035>Y!\277=gc=>\242\273.=AX\001>:\034\365\275\020\342\177>\203\236\005\276\231q\275\276\223\246\221=\226\205]\276\202FF\275\000\356\000\277\2061\250\276\321\031g\275\007\223m>&\3079?h\302l>\256IW=&\302\020\276\203\315\347\276\256o\205>ff\225\275!~\270>7\235i=\263\353\210=\306\014\315\276\253\030\177\275\343\347f>f\037\020\277\034\327\247\276!H\234\276t\016,\277\2542\000?\204\226\034\276}u8\275\250n\372>c\344$>B\233\365\275\312\203\351\276\037\031I\275\211\320\036\276i\305 \277\3743\343=\330@\010>\032\366\266>\367H\360\275\363\355\323\275%\367\036\276\031\0018=9^j\276+G\342=\263\022\205=\363k\366<~\256a>\317\215,=4/\031\277\346\005\007\274\306O\004\276Yq%\276\326\"\036>\314%\037?q-\345\276\355\335\301\275Q\252\237\276J\341\031>\277!\030>u]D>!\2632\275\025Br>a\306.\275\017\277\273>\034\031\217>\035IS\277\"|\363=2\014\252\276\255%\232\276\'/\255>e\024\243=\361\021\210\2754\232\274\275\010\212\322\276\350?\223<\021\214\222\2766\310\214\275\271\240\336=t4\237>%\355\335\275\246\320s\277\222.e\276$Bi\276\213\224}\273\'\377\214=2#\324<\240\tr\276{\323\336\276\363\205\323\275\277\237\367\274\315\036*\273?\305\275\275\026\\>\276\005\226\331\276\263\r\324>oI\005?\267\221/\275\004\002\347\276T\022\261>\026\177$\277J\177\243\276\3478\201\276\324\355\310>`q\352=\370L\260>\206\360\"\276\370k\212\276\037}\235>\232\020F\277\235E\221\276X\206\274>\341p\312\274\201\331\177\275Fh5\275\226\337\367\2766\254\224>\025\232\237>\314I\022=\377<\251=\265l\204>.\210\247>ig\r>\367\352\261\276P\237.\277SC7\276z_\330\275\240 \004\277\010\334\215\276\214\355\007\277\3051\234>\370\202\233\276dvG\276\003T\203=\327O\205\276\"\330\327<`*n\275\031\271\244\276\0223\013\277\214\350\001=t\306\330\276z\316\031\2764\266\014\276\324\231T\275\375\"\366=\270\t\014\277\373\311\354\276\237\'\311=\032u\300\275\020x\n=AT\223\274\327a\013>l\020X\276\2028n\276;\351k\276Xmt>\254U\346\276\023\217J\276\377\243\n?\030\312\'\276\031\2179\276\217u\241>\204F6>\346\022\315\275Mh_>\\\017W\276\026\241j=g\353\'\2774\346\231>\021\201<>\237\253\301=d\207\202\276w l\275\037\374\221=?M\241\276\"FW\276w\250\316\275e\272\215\275\036\242]\276\250\224\215\276\241\211v\276\2575*\275-|\243\275\002\217\336\275v\376T\277v]\006\276A\035\t\277\006\177b\275a\0328\276 (\034=~\256\351\276\030;\316\274?\350\316\276\210a\236\276\275\n}>\003\006\262>\253\245\267>l\241\264>\255\241\267=pH\277>{>i\276>\255u>\005\313\026>=\257\007>.$\241=a\253;\275A\232\221>\313\362\325\275O\242\272\275_[D<\367ft\277\257\004E>5\306\325>\rH\337\276\372\352\304\274+\350\306\276]\007P>\262\213*<\367;\252>\233W\262\275\373\274P\277\241`\203>|\341A?\202\263\257\276 -\223<\2773B\276\271\207X?j\230P\276\354`\304>\226\372D?\003\024E>r\217 \277m.\023?\330~\031>\030J6=\352}\n\276\270\022F\276\360A\301\27694Y\276\033sz=\213&e?v\\\003:\347\355\224\276\303\314\235\337\\\353>\306\370\001\277\'Z\323\276\327\206u\276\r\250==\275J\303\274u/\024\277\336u\210\276\n\3121<\263\300\202\276\370\211u?\356\265\251\276r\233\035>L\322\003\277\003\031)=\030\277\213>>y\020>\014k\223\275{\025\030\276\260\262\027\276q\263I\274\260h_\277\354\242\237\275XL<>\210\016=>\355*\000\277ZE1\276\377\264G\275z\201\">\222\262/?\020\265\355=\241>\203>\240\363\353\276&\023\346\2755\306 >\273?\300>\345\270+\276\3764#?\362\250\003>njB\277\332[\333=4\334~\277\253\236\002\277\255\301^\276\035\344\310>C\236\"?\232\354 >\313\236\210\276\334\214!>\206\362$\277\242\"\230\276\311\243\365>\211Eb\276\017\335\214\2745\023\025\275\357\261L<\345\215:\275+\212Z=\032\312\207>y8e\277\210\343\005\276\312\243\201\2759f$\276P4\270>e\240\245=\305N\024\275d\320:\275\203V\034\274(\352\204>\023o\354\2743\360\001\277:D]\276\273,\032>0\363s\275\02714\277!\034\276\273\363\216\255\274ox\264\276\357I(>\227\030~=*\310\027\275-O\017>\326\353\025<\217r\333\276\'z\312>k\335\260>?\246\320>}\'\241>*X\310\275h\262j>\036\266\020>f\325\023?\306h\231>*\374\025\276\340\304o\277\250\305;\276\t\330z>\226\232\306>\374rD>\302{$<\033\341\204>`\206\321\276u\347E\257\364\356=X\307C=\035\230\354=\212kE\276\277\372W>\007x\020\274\013\031\314>2Io\276\224\272H\276\221\216\024>\356\035\232>\213\241D\273\374\354\313=:R\364<7\213%>\345\371,\276I R=\211\202\003\277\300\363?\236<19E=\013\324r=\202\324\211>\374s4>\303w\022=\006\253\257>m\365\217>j~\254\275Im\313\276J\264\226>\243\020&=\344\321\273>}h\271>\n\362\025=\352;\005\277\252\326\014\277\013 \316>\333\313&\276.h\211=(\330\336\276\317X\223\276@\251\021>\021\224J\275\005\337\252\276(\324\327>\031q\322\276\014\237\232\276\2547L\275hmc\274YO~\276\347\227\004\276\325\014\333\276|,\324>/\236.>\034\363\306>\364\271\242=`\305^>\3629\324>X\370t\276\004Ms>%\325S\276\204S~\276\346\365B\276\261C\340>=\247Q\276z\233K\276W\300\263>\016I\026\276\352\246\305=\rp\007>\353G\246>2\200\321> \320\234=\237b\364>\252H\030?\327\302\004\276W<\276=\250\231\206>k}\237>m\202\204>Kc\252\276\276\312\371\275/\267==\014C\305\275\266\200\306\275w\302M={Ju>?M\256>$\365H\277k\267\272>(\360\177>\212\037;>\237\230\302=\213nf=\3448\334\275f\352\257>\315\017R\275Hw\353\276z\352\267<_g\242\276\013\206\362=\2408+\276\230\302\247=~&\254>\253`J=g\247\312>\246\231#>\035x\217\276\216\2249=gj\313>e\244\242>\251j/\276)\207\371=)qD=\204\240c\276~Pu\275G\275\001?\177\243\266>~\034\277=\227SU=\301\010$>V\237\253>\335\000\237\274\\\307\210wo\001\277=\347\377=\352\261\253=Qm\321\276\301x\037=\177(\275\275\2116\214=#\265\262\274\"\274\010\277W\204\260>,\277Q\276On\331\275\243\353\375>`\301\336\276\027[\361\276\321G\354\27595\023\274\245*$?\370\210C=I\014\035\276\0172o\275#\306\272\276n\246\270\276\362\203\211>vv\037?{xH<\301@\000?@M\370>\231\361\244\276\r\261\246\274\211\343\270=\230?\310>Z\037\200>\230\2664<\377\221#\276\321\343\030>\257\310\263>\236\233A<4\t`\276\263\336\020\276Lj\254>\034\376\321>:\276\373\275\211\005\253=[\332f>k\243\305=\306o\033\276\"U\230\275zZ\010>Y\327\">\244@\000\276\355\035Q=w\351j\275\333J\210=w\202-\276\273\006W\342\302\345\275ro^>\213{j>\005\310?>\252\235\277\276\231\225\237\275\331hF>\361\334\002?\316\356\000\276\320\201\205>\006\210\251=\037\200\226>\253~\207>;jV\275\271\013\005?D\217c>\346\215\035>\010;\216>\205\027\266>=\037\260\275\366\336\300:\353\257\235<\3441\'=b\020\214>\370tU>ap\215\275\376\204\207\276.\261\212\274\314\370*\2749W\330=w\215\347=7\213\226>\010\"\312=\223E\226\275e\021\004>\344\316\000\276\021\215^=+\241\217>\367A\330=\371\357\256>\306\300\\>\254|\311>r\225\\>#\"\350=\333\r+\2767\265\247=\303M\226>\316\246\252=\204m\000>\335\r\363=\253\207\255\275_\r\037\276`;\275=\252\366\215>:\013\255\276\214\033\240>\322\021b\275R>\013>\202e\202\272-\266\203>\241p\207>\356\250\260>\037\233\315\276\321$s>\025\346\255>\217\004\353>\241\2477>t\243\217\276@]\334\276\231K\253\276b\203M?\334T\255\276h\200:>K\257d=\320\341\254\276P_\031?\317T\267\275\035\270\232\276\374t\322>\004*\216=\267\t\203>\034\235\307\276\237\354\233>\323\273\024=\036Z\023\276\217\244(?\366\016\360>5kf\276-\002\245>Z\033\233>\307\277\260\276?\320\r\276\222|\314\275\310\227\312\274\010\370\202>\301\222\261\276eZ\206>\275\313\346\274\305\r\207<\232j\301=\201~\366\276Q\301\021\277\306\350\201>8\0255>\\\252O>4\361\206< \262\006?\"\016X>\207\212\273\275Ji\251\266\267\311\275\273\177\342>\201\301V\276\025L\275>}\022\010\277{\264\225>\005\251o\276e1\r\275\r\262p>\335PY\276M)P>\252\366\234=\024\236\355\276`=Z\276\203]V<\357@\214\276Z\222B=\342\304W=\331\020\006\276\\\t\337>\201\372\272\274\027\027C\276U \007\276)\355\301>\372S\272>\277\016Z\276sEu\276\375\325\300>\031\360\267>\207\372\236=[tG=@\034Z>>\217\205\275\034\376X\276\275d\314>\244-v\275\360Z\t\273\222\020\337=\013iO\275S\351\215\276\326\313\315\276\017v\035\276\340\\\206=vV)>\024\2776?b\221+>\035\327j>-\222\215\276\202\347\271\274\217\014\345<\034\032X=\374\0370\276\352\212\227\274\263\016\024\275\372\330\034>\222 o>\372u\203>\253\356i> \336H>8\210\022>5\023G>\214Vj>\242\010\244=\032qQ\274sDB\274\333\370\262>|Z\257\275\301t\201>}\014h>G\331\013>\274ch\273/zu\276\034>`\276\022\344\257\274\027N\347>-A?\276\235dv=y`\247\276j\016\334=\320\024\242\276\022\0019>\367\014\335=\n\t\272\274\231\351\017\276\246\035\214\275\025\326\230\276.zP>\210\033\r>\275\275\000?X\230^\275>M \277\330\323^\276\330\020\251\276\233\272\225>\324\023\207>?Z\">\306\216\037>\ny\261>\226\031A>\032\0366>\341\r\247\276+\'x>\020?\\>\346F\'\276aF^\276\275\355/\276C\213J>:(l>d\027;>j&D\276\373.\304\205qa>\211\215h\276Q}\251>\334\232\r>m\201H>\260_\217\276\016B\265\276s6\207\276ON\023\276\243f\344\275\303\326_\276$`\370>\031Y/\2761\316\301\276d\247?>D\351\372\275\377\306C\276\004\342\277=\305\r\001=&W\206=t`\364=\312\024\017\276\240\334$\276\300>\005\276\316q\275=\353=b>3\340\342\275\252\275\345=9J\245<\202\005\321>\353V\215\273[\241\263\276\273A\206>\217\251\345\276a\204\332>\234\361\236>\"\244^\276\236\372\341=\223\"t\276\037\276O\275W\235\210\276\333\252\257\275\313L\'\276\022\351\352=\'\014\267\275\321\021t\276\030\343X>\0169\301>\214\'+\276\245\206h>:#$=iw\017\277\220h\264>\201\206\225>\263\306\003\276\371>8?\321\232J>\375e\232>|\240\t?\215\356\274>?|\243\276\267\336\001>\215\233J=\207\254/>\340\3100>\224\242\237>@\242\345\022>`q\026>>4\227>\347\306\355\275t\276\023>\334\223\320=\201\305\303>F\371><\034+\235\275~\212\363\275O>J>.pC\276\245\2750\276\315\206l<\355g>>\224\316\323>&\225+\276\275\0341\276@\212\263=\203\211\272=L\276\304>%\237m>\345\373\340=\331\027\262=$\322H>\317\342\007>\2702k\276g\344\212>\220\3773\275/H?>\232\275\017\275\3554\256>\247B5\277L+\322\275\013\374\230\275\025\221\242=\373\0244?\327\376\362>\330\233h>\210%\001>|\274\n>\034b\004\274aU\207\275=\315N>cqp\276f\333\263\275\335W/\276\334MZ>\375)\201\276$\352\343=\251\372\316\275\345R\362\275[\321\211>\033\022\210>3\203\211=\345\372\230>\367{x\275b\252\343>\216\340z\275\347\241\360;\223\360\246\276@\221\356\275/\256\371=\027\004\301\2751\233\027\276\030a_\274\277\300 \276\330\271&>K\334\231=b\330\276\275\366\004\220=h\357\304\275\344\226p\276\246/\306\276\t\316\267\2762\324U=\260F\243>\354\335\n\276\276v\000\277\200\302\243\275O\000\241>\000\260\226>\032\246\231\276}\230\030>\236\240\014\275\237{c>g\252<\277gR\001\276\001E\235\276\017\253\036>\377\314\247\275\'\272\014>{\265\204\274&\327\276>\277\3378>R\312\346=\334\206\177>\003t\203\275f_\366\274Hd\303>{2\003\276]\tT\276\236\271\237>x\355\346\275\"\212\302\273\2312\305\276\370\341\255\275\215\0025>:8n>o\232\316\275\360\372\t=\267\355)\276\367\342\216\276\013\033\276\276\361E<>\336fs\276\003\245\244\276\205\250\001\277\277f\317=\335(\371=\304*b>\026?\243=\031G%\276\333&\200>\257\336R\276*\257\000\276\311\000!\276\010t\230\276G-\020:\370\330\006\275\320\006`\275I[\355\275\316%a=\357=I>)j\333=\017\t\317\275\3115`>\322\2650\277&\t\205\276\360\227\310>Z\225\221>>\271E\277\277bD\277\346\363`\277\022\375V>\005\225\267=\'\327\032\275\245X\023?\274\013\t\277i\'\021\2760\362\324<\356\rz\275\252\241\314>(\312O\277\327\305+\276\244\307(\276\035\227\202>--\214>\035u\275>Vw\026\275\036\201/\275\333\nM\276\211\314\r\276*p+>\377\342#\276\261\3742>!\323\240\276\356R\177>\013\2168\275\217\371\360>+\367\006>\303\207\226\276\311N\034\277\242O\n?\371\210\320=\242* \276n\255\021\276\340\035c>\266\024D<\017\375\226\276z\331T\276_\242\261=D\023\225=1(I\277\374\226\001\277\033d\002>\r\005\262\275\241T\246\276|\013\366<\310\320\314\276\361\001\236\276\020Z\020?\017\3726>\342\336\225>n\225\022\277\346\021\010\275\243m\267\276\301\334\234\276\376\2729\277`\275r\276\220\n\013>lS\321\276x];\276 ~\222=\211\240\314<\373\207\327\276G\206\235=\037\344\031\276l\355\231>\013\366^<\347\010\020\277\177c\r\275*\035\350>\277:\030\276\243R\016\277\222\2639\276\224M4>\260\312\022\276Q\251*>yU\360\276Qft>\347+\321=\272\256f<\255b\'\276\234\010\032\277\247\004\331\275\260\177\016?\206P\346\275\264\215\331=\206\215t<\235\237{>#\\\025\276\343\244\305\276\244\276G<\204\324@;\310\263v>8\221\201\276\030\261\001>\266\320\203\276\364d\243\275D\177\273>\037G\223\275\361\\\362><\230\222\275\323\265a>H\023\256>\033\270\221=\3330\004\275Xh\014?]\336y>/\335\t\276p+~>\234\234:>\361\243\307\275+]}\276\235\226F?\373\3441\276:\263g>\365mg\276\257\363\207\275\327\016s>\366\312\327\276\242\316\242\276\361\236\270=T!\341\276i\020\026>r\276[=\205\251\206\276\273A\226>=\251f>\002\220\256>E\313l>\177\316\036\276Ib$\276\232]\306\275\222\036\005>A\316\211>\024e\234=4;6\275|!4>\343)\225>s\305\346\273\333(\223>\375\001\251\275\334J\355>\3444q>+\315\300=\372d3\276Z\335V\276Q\033k\276\356\274\316=\033\361\302\276<\246\373>\264\333\322\276M\311\031>X\231\027>\220;\376>\24452\276\372\353\266\276(\322H>\253\250\025>\214d\221>-\344Q>%\305\034>#\"\n\277E\024\307\276Y\314\202<\022\371\t\273\345\332\312=\273\317\304=5<\206>\030/!\276\213\n\331;(]?\276\031G\037>\006\313U>\211\221A\273\213\376\006=\312\334\021>\240\260\340\275}5\302zu\242=\217\324\003?Z\273\303\276\345\036\260=p\254:;\312\034\234\275\006~\002\276\202\272{\276U@q\275\243m\030\276\362<\212\276\313\257\013>\314\346\255=\305\3638\276\344\202\231\276\343\323\313\276\023\350\021\276\216^\377\276*\034\212\275\22013=\036\007\365\276\363E\211\276NP\356\276\263-\031\276\265\201\351>\370\372G\277_\220\032\277\230\020g\276\340\241\272\276\000\036&\276Q\250\373\275I7\211<\317 5\276\337#q>\341\320\304=ac@\275\207\2152\277\231\007\224\276\n\200\271\275\317\017\001=\215\010\327>\345<\212\276~\341\232\276\354\342\271\276\345#G\275\343m\260\276OM\307\276\302\242\202\276\274qz\274\364\234j\276\207\275\203\277\354 \277\244\314\222\276\226\037H\277\235-\323\276WB\200\276\211\214^\275t\357\254\276M-\212<\r\032\253\276\274\n\024\277\344\270\302\276\340E\023\276\024\026\325\275&\325\007\277_s\306\276,a,\275\3703F\277\221~\235\276\273p\260\276\203\326\035\277O\277\242\276\034ny\275\025\257\234\276\362\321\256\276\'4\355=\026\273\236\275\366\330\277\276\357u\216=\256\033\355\276\300\006\235\276\251_\257\274\356\345-\276\317\333s\277\353\357?\276\224\212\343>F`\023>\216=:\276\356t\214\276\362\003\227\276\332\014&\277\014\314\262\2766dZ=T\'\007\277\241Q\254\272\311\0243>W\325\372\276\037\030\306<`bv\275\316$\275=\216\335\325\276\323\023\362\276KB\257\274#F\215\276g`{=\363cQ\276\260\254\241>\253(u>\034\356\003\277\271\351\300>\343\261\344=\274\343\261\275m\306\207>l\345\037\275Z8)\277\320\251\357\274W\274\210\276X\300\201\275!,=\277\222\333H<\257\366\234\276\204\330\345\276,=\276\2764\337\275\276>\225\204\276N\3643\276!=\327\276\201\224\003\277VjA\276L\353\216=\367\024\265=\210\211\226\277q>\376\276{z\213>:\0269\276\367M\237\276\215\243\343\276$8K\277H\322\254>\375\346\270><\020H\275\360\277\020\276j\000a\275\305\335\222\276\234Ym\276\300\201<\276\016\327\325>\357&\306<@\327i\276\214W=>\037\2614\277\374^\265\276\303\372\242\276\220t\245\275\351\222\331\275[\022\340\276sZ\217\275o\363\027>\014\344\233\276Z\205O\276\266\363\221\276\336v\310=Z\215\370=y\242\235\276+\242U>\344\234\260\276\026\264\014>\270\276\014>\037\203\313\276\222nP\276P\006\267\275`|\374\275G0>\277Z\217\024\276\242\225D>\024|\213\276\\m\200\276\201\324y>\212\201\373\276\355vp\275\242\315\260=\354O\225\275*\026\245\276jw\205>J\331\321\276m\312\023\276\343s>\276\351oU>|n9\275\201)q\276C\261(\276t3}\276C\257\302>.\244\231\276\200~^>\003E\031\276\013\0101>A\236\321\276s\357\353\276\302\264\220\275\202\316\251>>\267o\276\247\021\257\274T\372\265\276\222c\005<\223\2210\276o\346*\275 \311\267>\214\244^\276\302f\250\276\340T^\276\262\306O\276\\\321\n>~\250~\276kYM\276\232(\233>\353\030\356\273\005\250\222=U,\024\276*\231\304=\016\246\326=\327M\223\276t\210\274<\337\304S>\363f\322=.s\010\276\312\256\227\275 /\251<\275\177\336>Z\3367\276\206\204P\276\277\334C>\340{\360=\227\206\307>^eB\276\277\375\204>\304R\262>\255\375P]F\262\276\206\t\320=\207\346\"\276s\211\333>\250\177&\276_\370\323\276\205\313\251\274\321\315\004<\275q\207>\264\303r\2756ok\273\r\202*\275X\362I>\334\025\227>\227\0359\275\3532\237>\234\351\001>i`\231>T\212W\276\027\252^>[\030\001\275\'hf>\237\251.\276\016SJ>\335l\227\276\030y\206\276\346\025b>\020?N\276\352\364\006\277\013\226(>\026\023[\276\341\202d>.(Y\2730\223\224\276\0310c>lL\026\275\033\337O>\223\220\362>,\322W\276\024@\031=_$\035=\252O+>\360o,\276\305\263/><\326\274\276\327~V>&\001\343\276[\3253>\304\177\213=$n\000\277u\3319\276W\366\245\276\374\360\216\276\217b(\275\327\354\366=\3009T\276\273J[>\t\355\233\276\357\216\244\275\016#D;\336\351\033\277.\315<=Qgg\276\230\262\244\276\017Y\232=\337I\220>b\330\326=\340[\306>\312\203\240>\270I5>\367\036\311\275\325(\262>\3077\240\276\321\264\270>\311:\344\275@\243\224\276\212\004\304>\014\261?>\316\2424>\271\325\210>\365\025\327\275\201\223\330\273o~\004>\007~\271>\222Z\315>\235\324\235\275c\364\010\276\202\370F\276\331Bj\275\354]c\273\262\251\235=\251\365\272\274\352\356\267>\344\343\217\275\025b,\276\020n\270>\017\232\007\276]E&=\020\362\222\275\212Q\357\2746X2\275J\251@\276\355,D\276\013\267p\276\204\355\231\275\014vn>\265Y\300=U\253%\276\223\254\244>\304[\003\275/\356\204;\262*\n?\263\267\017?w\2109>\022L^>\344\330\222=5,\340\275\272yw>~T\014\276\210\314\262>1\263p\275\246d\225=y\347\t=[p\323=\303\345\t?\335&\232>\355/Q>i\256,>#\377\223=\337\035{\276\236[\247\275\307\257Z\276\237\357\341>C\247S\276\256(\264\275\225/\304\273\"\325\221;\274\320&=tZ\260>\207\326\352\276\306\210\251\276>\333\316\275\272\300@>-\216;\276e\221\025?b&\r\276g\260z>\"\024\257>\321\030\307=\345D\247\276\207\240\274>G\206\345\276\230\021_>\211\010\233>\322\023X>\333L\021\276\361\264\314>\323\022\005\275\327\323\247\276\017n\306\276\210\271\374\275z\205\024>\275\357\375>\314\356N>Ti\302\275%\014\n>\257\n:\275\344\3224>\270G\215>\224\366[\276\213\346\217=\035\265N\276YlL\276\273\351\213\333\007\307\276\270\306\266>\'\356\310\276\346-\246\276J\034K\276\366\313\035\276e0\020>,\203^\275\204W\022\277\254\200\320\276\255\307\300>\002\332\375\275\354\236\312\276\257\255\216>\263\271\314>\021jr\276\234\302a\274\225sf\275\303BF>cE\234\276\301\325P\2762w\252\275g\t\202>\'\nR\276cA\256\276\356\345\273\276P\270z>!7:>\210\224\321>\177\204\303\276L\250\214\276m\271\236\275^O\021?\205\337\340\276\301\311\035\277\303w\274>\356\233%?\354~\033>40i\276=\000\207<\255 \276=\322\206\252=>77>0\224\346>g<)\2762~\201\275-\247\020>\251\230\204\276:\206\340=)\242M>\024\244\316\276\367\350\341\276\350+\205\276L\277\004\277\304\"\271>\030Fq>\220\232\251\276.4\333=U\331\033>S\376\364\275\365\340\210\274\007T@=\374\r\216\276Ni\241\276\244\022\004?\230\024\224\276\201\240\325\275,\207\034=\177\026\211=\203\316d>.\026\231\275\227\337\222\276\r\034\210\276\335\025\363>\370\363\001\276^\370\210>\\\347\034\275Q\206\226>F_F\276T\343\211>\030\266V\276\321\027\213>A\313\236>[\026\203\276y\324e>u\305\345\276s\017\026?\261_\321=\"\023\254\274|\210\205>\277\273~\275\030\002\275=\024\243e\274}P\177\275\365n\301>:\253;>\002B?\276\270\262\010\276%m\227>\333|\365\276\226\2624>\272\007\030>\227\032T\276\035\222\216>{\252\027\276p\376\303\275M\257\005>\3509\002>\216\2739?\230\005\275>\032I\313>mFp\275\311\356/=\371\324\335=s/x\276\027h_\274;\003\212<\006k\n?\003%\022\276\235#\254\276\261U>\276O\302&\276\220\033\251\274\233\'\277>\223\226\n\275,)\335=-\017\007>\027\370\252>\033-#\275oc\367=]\336H\276\225\350e\275y\362\036>hCq\275\350\2476>\313\200\224\2743\035\006>qC~\2765\336\242>:WS\276\352\256\213>d\035B>\204\303\263>\211A\032?\"\026\017>t\245H\276P\244L\276\333\200\030=W\314\355\275S\013\323\276\030\000\330\276\312=\344:+\365\014\277\ti\366>\\P\201\275i\274I>\2146\235\273\036\006\367=\005&\266>cA\020?\321\314$\275\006+X>qEn\276\333\307\354=\322\236\206>U%\330>\331\211\023?\340%;>\233\351j>\026\360\323\275J\240\251>\231ee>A6\">\372\t:>\3652\246=\321\300\006?\326\n6=\036\323\013?uh->\2266N>\342\361 \276\306\264\262>\202\356\017>\026j!\275\366\316\016?2\\\256\275\357\232\311>\034t\257\272K\017\\=\216\235\213<\177\242\201>q\243\370=\303\n:<\237\212#>\373\315b\276J\315\234\276\243\031\377=|\211\306>(f\220\275\360\263\237\276X\014\260>\356\032(>\361/\203\274\361\204#?! \024?\211\256\277\276^\253\215>\242\037\244=A\032\007?\346\304\371>I\306\337=%\232\335=\207&\013>\342K(>\356t\177>\333\251\233>\312\310L>L\274\022\277rl\231>M \214>\367\317\r?dT\360\276F-\334=q\224\002>\0106\217\276[\3119>\237Y\247\2735\274\232=\327\253\254=\200\306\234>K\nM>\352\010\250>\233\265\242\275:\274\230=\377\2351>L\251\305\275\3513p\276M\204T>\026n\344=6\223\326>\007\372)\276a\334\004?\303\335I\277\346\321\005>\241#\257>\002H\231\276{\007\237\273W\342\340=\207S\264>\231i\260\273Z\230\005?\270\371\346>\ri\353=\357\\%\2761\251R>p=\201\276\274Rj>\237\220\t>\261YL\275qd\035\276\242\344\243>elN>\026|\030>\350s\364=\351\365S\276M\r\317\276@s\206=6\345_\276\030\232\000;z\031%\276D\244\013>\316}\">\002\244B\275I\355\221\275\365^m\274\260\0327>h\263\217\273\275%\216=d\341\325>=\035~>\002\2108>&\322\360>O\376\000>\365\251\326\275\211g~>W\317\333>\224\001\362>\350\332M\276\2358\266\275B*\002?\305\302U\276\304Z\347\275\332We=!\222\347\275I\177\'=\251;<\276\2477F\275\346\345$?m\334\253\275m\033\303\275:\t!>\352\363*>\225\362[\276\025\275\210\276\315!\235>\244\377\013>@E\254\273Sz\205\276b\351\310>\374\352\241>\250\230{>\306\273\262\275p\352\275>BM\343\276\2104\264\276\377H8>\n\225\352\275\225d;=F\2163\276\313q\305\276\352M\037\275\2630\024\275F\240u=\307\342P\276da\334=0\331\220=\'\362\253<56\230\275\346\003\252\273\356\377\350=^O\023>\265\001\236>_\357\033>\301\331/\276t\353\211<6\010\304\274{\3321?p\332\373=\222i\330\2755[?=|\033R>\214\366\303\275A\000\322=\344~\024=\240\200\216>\035\\\206>\277!\220>l\344\206>4\025\343\276\220\017\025?R\271\224=\227+\237=6[t\274\315\213\313=^\201B>\247\357\322\274\004\000\314>3&\322\276\020z\222>\314\257\211\276z\177\356=\352\022/?\335\331\001\276\007r:>\004\312\346\276_\001d>\217C\037\276.\233\274\272\352\361\332\276\222\327\325\276C[\304\273\260-\254=\270\267\267\276\265.\240\276|\344\215\276\202\212\265>\t\241\251>.\n(\275\233k\007\276\226~^\2768\352\255>\257\354\'=N\021i\276\027r\251\276\370\214\342\275.\215\r\277#+\276\276\'\373P\276\317\272/\276L\301\345>\255#v\276\215)\205\276N\346 \276+\311\224>@%\210\276\331\361\237\276\274+e\276\234x>>hy\001>~\211A\276\367\367\272\276\227\220\340<\262b\313>\334f\r?}D\n\277|\371\322<\235u\206>\177\266\257\276\344Q\013\277\345\025\306=\002u\335\275)[\210=\362\252L=\005\230\010\276\"3\222\275|%\303\276\365\375\201\276\2371\225>h{\036\277\364\242\243>\213\006\020=x\273\006\276e\375\201:k\257\217>\006\371\033\276\252\326\n\277*\202G=PC\014=\035\274\217>\237\252\233\276\207!\020\275d\201x\275\212!\014\277\270\352B>\203p\254\275o\245a\276\353-\301>U\353\300\276*\231+>\2206\234>!\363\020<\201WZ=\215\277\334\274\250_,\276\362~\365\276\n+\204\276E\017\327\275\351\t\347\275\231\005\251\276\341\210\304\276\274\325\016\277li\362=\363\240\200>\217\310\220\276\312^*>\306]\253>\341\310P\275\212\201\n\276\220\301D\273\276\324\237>\013\211\320\274\200\344\363>S\363Z\276\364\007\\\276~_\242\276\207\352\212\276\322o\257=}\265\376\275\220X\035\276p\030\243<\312\340\342\275K\337+>\013}\260>\002\266\003\276\345~\272>w7\205\2755R/\276\213\024\240>\222\216\016\277A\273\246\276\260L<\276\353\277j<\234R?=\261?\303=*\024\371>\266Z\030\276\253\311\266>7f;=\276\213\341>[y\272>\224\2538>\376a\372=\265\013\223\276\267\000\347\275\017\302\200\275\304\3341;\014>\254\275\322\344\002\276\374\2327<\213\237j\274\364\354m\276\360W\340\276\357VH\276\310\226\361>=\031\210=K\316-;\301\021\376\275\'\221\330\275\201x\036\277\376\230\211\276\035\372\365\275\322\272\034>\357\t\241\276!\231\375\275sv\247\272\026\031\223\276\024\020\021\276\2004\005<\206\221\024>\370\306Q\275\343\037p\276\245 \024\277t\037\027?\276\n\302\275QeE>\260\375\032\276/;\277=r\243/\275\3710V\276\036\314^\276\036\002\251\274\200\356\241>\013h>\273\314\260\250<-\203Z\276\314S\246\276\300&\227\276\t\361\313=\331.\222\275)|\n\276\346\246\n>\356X\\\276m\0066\275\346\243\030>&\366\240\276\201\261v=J\353\255\276\342\303`\276K)\352\275h\325\235\275\263\200K\2769\234\324=\352\274\023\276\007\356d\276\001\365\364\273i\331\244\275\227/\267=\227E\\>\2648d=\340\033\306\276z\313\340\275\361ek>\000\266\204\274\217VF\276\\\322\315\275\360\322\r?\034\312?=\375\353\333=\300Q\005?\345*\362\275\203\016\301>\356\'\320\275\r^\017>{\212k\276\324:\337\275\2124t>W\222i>\210p:>\263\326\r\276)\002\321\274\374\2407\276\342=\200\275\004\337\214<-\232a\274\371:\273>X\371!\275\207\033t\276T\301\213>0\267\235\275\237\022J=\357\234\t\277\257\212\254\275=\336)\275\037@;\277\226\257\241>\232\277R\275y\347\237\276U7\n\\\276\204\307\213\275v\3622=\235\250\r\274 WR\276Z\'\267\275\315\331\316\276\353\001\260\276\354\276\341\276\264H\016\277\320%\220\276\372\370\360=\312&\346=\312\377\306<\262/K\275E\3111\274c\317\217>\343\020S=\204\371/>%Oc?\n9\355>\'\022M\275\275\177\310\276\227\375a\276\202\361l=\363\033?\276V\035\343\276\333\201\364\276\267\324L=:Q\242>\317\032\342=G\213\236\276R\353\244\276\244~\273\274M\264N\276\257+\236\276+?\232>~\363\256\276h\214\216\275=\275\221\275\314W\375\275\016\252B>\022\203\244<\377\343R\276}\255M>\321\311\373\275Tp\001\276\020\353\306=\022]\240>\314K:\276.\001\221>\301\240R\275F\324\277\275\223K\325=\211\2170>\367t\310=\026y\250\276!\216N\275\233q\006\276P\305\365=\342t\210=B\333]>\'x\323=1\'\245\273)\305#>H\334b>\336\272\272>\325\215`>\245;@=\363\2477<\212\342F\276\324\"\220\274\215S\017\275D\212\250\275\244\354d\276\027#I\27417\013\276}\214\027\276\245\033\373\2758\243A\275\225\212\217\276Y\263\305>?\246\243\276P\241\354\275F\032R\275\237m\223=\315\271\343>Y\226<\276\344}V\273\240\334\255>\220.\357=^\245\333=\204d\n\276\224\310\304\274\3546\210\360\212\030\277d\273\220\276\252\221\261\275%\237N\274\367H\262\276t\205<\276Fd;\275|?\251\275\250\205\220\276\177\033r\276\014)\014=7R\352\276\252\324\255\276la\216>\376\364\317\276H\305\326\276\263\224\215>X\370\365<\206)\253\275\220\212+?H\202\277\273C\356\253\275\234I\321>\312\2427\276_\"(>s\346\374==3\257=\032b\034\276F\034\342\2748\233\243=\366\343\207\276U\204\022>%9\271>u\325\234\276\210\312\202>Z.\212\276\026r\261\275\212)z\274S\310\370\2730\0209\276H\035\251:\024\016\376\2739f\323=Wv\034?uc\256=ee\217\276\353\031B>@\365\353>\213a0?\207\002\253=\017\316\206\275\025=\241>\352\366G=\236\214\003\276a3\026\276\304ug>I\331\217>\023\204\225>f\314\200>\334\035g\276\002&\203\276\240D\364>A\031g\276W[\347=K\300~=\341\037\340\273]\313\224>\025\020\352>?i\242>\201#\262\276U\201\351\274s\315\230<\315\362O?43\320>\336\\\313>\235\252\330\276\371\274\363=A\3715>\333\334\207\276\014\360\357=\266Z\206>\014b\341={\307,>\205\001Z\"5W>\032L\342=8\177B>\010\022\'?\004%R?NQ<\275@\2766>\000\301I=\217\275\202;>J\236=\325\300\207\276\254\350J>\237\254A>\260e\027?Z\307\022?\257\032\303>\010\364\316>m6\255\275\364\365\270\276%j\266\274\361\215\305\276?\036\005>\014\017\206>\003pt\275|.\267>\362t\244\276\030~\305\257\255\263>L\n\301>8\027#?\225\337\347>\'\340\235>\242\016\263\270\213\324\024?\347\020\020?\236\034j\276\177\255\343>\304\375\031?V\222\241>:\306\371\276m\005\257=\235\246X\2766\212\n\276hY\256\275\000\271\222=\271\305\340\275n)k>E\244E>\342\352p=\366\267\016\274\267\237\214\275}\316+\276\375\363D;w\016\202>7\327\266\275\276\274e>\376,`\275\031es>\'\306\322>\217E\263>\210%\000>\320\357\213>l\263\271>u\200U=\216\272\237=Q+\337\275\370aT\275\342\307\214\275+\342n\276\350\275\272\274\374\367\344\275\352\324\264>~-\200\275\323\253\371\275\221_\326\276\"\210g\275)lD>\371\305\005\277\273\362b\276w\246\245\276\342A\225>\352\232\317\275\355\222\223={\202L>WmV>^\002_>\361\346\350\274P\0132?\355~\236=\035\232@\276\267i\224\275\035P\341=\212Dz>\365\251\323=ZQ\006?\241r\035=\323W6>=\302\006?GuO\275bq\001>\374L\360;>vQ\276\343sH>\376\230\316\274\230\321\010?\347)\007\276\\\264\346<}-}>\265\006\247>\263\330\202\276\034p\367=\326\307\004<\rc\027?\314L\201>{\021\340\275\345\312\274\274+\230\277>\242\2677\276\336\230\221>#\231\032\275\260]6>\030+;\276h\330\254=\252\300\252=&m<>\346x\002\276\322\240\373\276\202\021\345\275L.T\275\205\003\226\273`\007\232>7\343\027>>$\224>\254*\002\275N\0064\276\324\220\256\275\311\344(>\221\370A>\363\247\347>^\221\036>\r?\240=\246l\242>W\026\013\276\356\230\203\276Y\3178\2779\342\263\275\345;\204\27587\266>\217_w=\204\025:>\320\007\316>e\304:\276\2274\302\276\334\232\026\276\033\206%\276\0062\222=v@\375>>\335^\276\304E\013\277o;\304=\372\346%>p\3467\275\225i/\277\231\002\263\275\324\330\352>H\'\207>\245@\200>-\235\221\275\366>P>\314\035}Ok\325\275\r6H\276NC\013?\023\243g>\321\2417\276\232q\r\275\203\251\270>s\247\357\276\323\314\014>A3W\275j\302<\276\332\034\257\276GZ\037\277\362J3\375d\223\276\377\235\206>\302\342\214\276\377\226\353\276\362\003\323\275\375\223\244\276\260\315\036=\264\273\t?\314g#\276\r\373h>\223\222\201\275\355/\264>\364NV\2769\376\002\276rc\313>\3764\210>6l\005\274\000)b=\243\240\234\276\2121\266\276\342\335\264=\2532G\276H\323\373\275d\346\350\276>ON\276\317\354\375\276\242fQ<\205\327\023>\"9\343\274\264\225\314=5\252\274\276\202\340\362=\000Fb>Q#\225<\335q\320\275N\020<\274\277~\374>\340:\314\276ov\203\274\201\006J>(D\234\275\335\322\201\275\002\205\301\276P\260\337>x\241\002\276\262@\341\275\377a\373\275\331\022P\275\200J\206\276t8D\277\007lh\275\003o$\275\332\261\n\277J\340\310<\241\004k\276\\\201\034\276n]\220=\265\004\205=8\0316>\270\352c>s\233\004?\017\201&\276\315\336\307>u_\247\276\t\t\217\276\357XX\276\200M\022\276}\302!>\364\316\330\276\301m\334=\342.\020\276\316\323\371\276v\376I\276\3709~>F\205a>\326j\022\276C&\212\276\3663\315\274>\263\234=\20239\276%\242\244\275\350\300\202\275\261\3178\276ozM\276\001\'\375\275W|\017=b)\253\276\210\236\255=Y\271D>\372\315e\275Q\327\255>\256m\302\274C\314\031\2765\3357\276\033\350\323>]z\232\276\277\205\375\275\004\306L\275\243\222-\276\347z\202\275\251\301\326=\344s6\274<\314\212\276\242\264\335\273nXq\275:\356\327=\2534\002?\rl\230\276&\212{>\321^\n\276\274\031$\276P\373B>\374\307\334\276\366\223\221>\241\357(\275\2000\207\276Q;e\276\2748\334=\344\252\257\276\277\r\014?\177\'\212\273\371\237V\276#\032\356\273\263-\251\276@d\013=\013\361x=\374\304\276\276\357\225\005\277[^i\276\311\330\221\276X3 >\210Q\214>!\n\232\276q\244\316\276\206\213\301\276 \201C\273\254\000\204\275\245\345\021\276&\241T>\325\320\022\276\323\021\371\276\342\267 <\037\031\367\276\3565\306<\016\t\351=K\032\214\275E\306\204>\373E\217\276`\303\002>%zQ\276.\310\226\276C\"\210\276B])>\341Q\237>\270\304\234\275\254\337\215\275qX\217>s\203\207\275\035\222\001>6\344@\275\347\315$?\277D\247\276;\225u>\263\264\007>\366 W=\327\326\216\276\274+\266=\304S>=\274\330\200\276#\350\210>\354\302\316\274KU\035\276\265h\033\277\377\004S\276\007\355\t\275\226D\274\276g6v>^\274\207>4\257\361\275\333o\003>\224\270\306=\027\t\230\276p\220\260>\372|\234=\rVk>\277Z;\276Q\261<=\310b\255\275\031T\237>\301\365*>K\2026\277\353@\273>\337\260\354>F\350)\276\224v\"\276\306\363#\275xHI=\247\313\335=Nr\343\276\305\303\364\275\206\355\345\275\203h\252\276SC\017\277\204w\003>y\326\222\275\377s\n?\024e\t\277\262\320\355\273i\2516>T\333\\\276\342\336\301>Z29\275po\314\275/\006T>\306\240\332=r\320\224\276y\350\275\276;#G\275\30346?\207v\335\276\361\214\006?\030@\243>\215\203\016<\356\307\373\276\220\346\004>\221\"#=\021r\314\276=\344$>\217\006\350=\374:\300>9\207\347\276\335\241\224>\0170\257=\333\301Z<\314G5?\324-\303\276\364\264\245=\374\224\270\276d\0247=\364N\305\275\257\301*>\200P\242>N\340\017>{!\005\276\350\355\223\276\214\272\252>\221\263\360\275\246\303,>\253&\227\276\3762\204\276\215\365\200=\370\002\026=\360\263\245\276<\300\216>v-\310=M_\264=t3\210\274\014\226\223\274F\343s\275\212z!>\366\234\230>\266\021\254=j\317u\276K\301\201\276\225_\333=d/<>\361\275&>z\347\341<\370p\365;*\277x\276l\357\342\274c\367\224>~0\232>qy\314>^\023\204=V\3421=\277(\000\277\371q\244\275\3160\370\276X\347\211\273\203\321\225>\262\315\236\275%\267\\>[Y\223\275) |>b\242]>>\262\263\276\230S\240>\0377\307>\261\273\203>\232N]\274\256E3> \223&>X\256\255\274\273\240}!\276\363\251\201=\242\214\265=\221\3243=\3511W>(\230\036> \023\r>\276\351U>\200\260+>Y\202K>\255q\r\276\013\020r\275\024\300\341\275\243\375\204>\300\005\353\275\271\007f>\204\221b>\240\215\250=\236\006\214>X\247_\275\346\246\314\276w\302\205\276[\374G\274\234\355\202\275u\3434>b\221R\275A\306\341=\273\264\r>\367\n\365>%}\002\274\003\234\000=\014;\r?\257\264\330\276\375\374x\276\352B\241>\311,\025\276\2168\275\275\360\270\206>\246}\356\275QaI>YP]<\235\214\221\275\314\275\254\276\223\316\364=\353s$=\300\274\005?\261\243\265\276ba\273>\364\237\255=\334\203X\275&Ns\276$k\007\276\364\311>>\313A*>\321\337\310\275\357wh\277\035\242?>}\317\037>VK\220=-\274\252\274i\203\243=>\002\r?\"\263\274=[O\351=S\255O=\271#\332\275\332V\250\273\014\340\r\276\331}w\276nQ\304\276\177\312\247\275\233\351\270\276\264g\260\276\261\233\010\276\301mt\276\364X\372\274~\020{< \214>BQa\275\231\211\202=\217\320\323<\'\312\207>\3201\213=\276\t\335=\312\326\300\2769\017\357\274\256\317\317:\227\003\025>\375\350\230=\022\020\013\230*b\275H\356\261\275\006\372\213\276\232\005i\276\020t\352\276\323\355\023?\223\022d>\032\330\312>\263j\036\275\256\227\177=P\211\352\276\004\305\360>\322%g=\037\312=\277\2178\373\276$\200\331\276\010\260]\275\323\344\202\275\354X\207>f\002\205>\275\005\236=B\226\247\276\016\373\013>\215\321\350\275\031\364\375=\255\026\256\276\355\337\344>\226\232\331=\033\021\257\276\255*\037?[\n\202\276\244\374\274> \350\001>3\274\263\276\314\220\252>i\246\216>\230#\322\273\3424\0339\201.\211>\342\363\205=f\214$=\201\377\014?L\005\006>6\2578\277\032\241\275\276\331)\230=\337,\242=p0(>\270\345\327=Zc\266>\250\363\033>s\r\355=\331\356D\2768\340\212\275\2629\271=\270\274\006;\253\006\270>-\367P>E*\\>]\342\272>A\333\275\274\327\016\256>3~\231=\272\007F\276\206\270\235\276\213,\262\275\001)\242\276U\352\032>d\340\034\276~)\031\274\330(\377>C\222\003\276Y\032Q>\037\342\332\275\034\243\032\274Yr\200\276\373\300\220=\247\335\342\275\026\334\372=\216\177\270>\\\220\257\276\352\027\321\276\275\326\316=EJ\333>|o\214\275\343\272\356>_\231\325\275\217\365\216=\235\276\t\275I\367\033>\244\343`\275D\217[\275\234\337\337>\341\246\214\254T5>\276@\245\275\005\264\251\276\227\033\342;\217\265\244\275G\351\232\276$\037\035\276\360\343\254=9g\217\276J\353\013\277\365\310\230\276\246`\201\275\203\310a\276y\276J>\232|\345=\255\353h\2765\377\300>:\231\307\275\264a:>!\305\261=\256y\213\276\301{\201=\317\240\336>M\341\235\274T\335f\276\023d\363=o\257\351=V\312\246\275\365\272\362\274\314\203u>\355x\202\274\344\022\202\275\236}!\274\214$\244\276>\200\035>\007\361r>\200G\024?y\002L\276k\236\352=\005\002#\276\272\230\232\275\301\256\023\274\020\342X>f\003\321\275\233\356\n?LtH>\331\'\016\277\3746\207\274\207\035\334=\246\301\205=\225^.\275\307\211\025\276\276\214\241>\307\247\016=3\370\266=\2432\230\276I\300\333\275\220^J\276\3113\235=\346\337[\275\264\253\020?\307\325B\276\271\"??\226\331I>\260\022\306\274\373\006\240>\213\326\256=\224IH>;2v\275\005\252(\277\372\201\001=9\240!>\334\032\207> \276\323>D\216a=t\307\022>\214\354\336=\276%\357\272\005\021\235<{$\217<\317\201b\276\233l\215>S6\352>\274`\274\2745\034\021>T#\244\275\221,\261\276\002\335\276\276\014\233\242\276\030=&?\263\277\022?p\266\307>\237\256\260>:n\303>\333\241\030?\216\'\037\277\332x\330>\021\205|>\222\362\306>\024\003l>iZ\335\273%\300\340=\023\215\353>*\312\267>`\367o\274\233\371\251=0<\203\276c\035\300\276\207\345\212\275\275%J\276Nq\336=9\253m>ld\026?\360;\244\276j8}\275\006\336!\276`\363\221\276\013\204\200>\271\251\312\276\203\221\236\274\370k\177?\235\326E>9\312\232>*-\177\276\327\213\245=h\'\210\274\342d\212>\353\014\245=3\332\310>?\001\200\275<\001\224\274\352\270\252>\342\321\301>0\305\316>\362\0059=s\231\333>E\256\024\277+\367\002>o\366\"\276\215\223\317=U\030\342\275\333oH\276\351|\210\274t\216\231\275\177F\r\276\305\355I>\233\365\247>\207\0246>!}\226\276\222\004\202<\224.\331=\222\260\034>\313 \266>\357\221\010\276\261\002\305\2752b\255>)\332\262\276\321\016\027\276\256.\206\2765\257\037\273\361\215\360>\216<\203>\300\272.\276\'[%>\010!\257>\250\215\316>\372\3007>\035|I>\313?z\275[\003\326=\235\266\316=\272<\265\274\t\352\347\276=;\036\275\234z)\276\352]\350=\345\006}\276\235\337\317\275t\202\002\277\332Nw>\227\204\337\236\276&uD>\233Q\027>+\371\230<6\232,\275\3678\273\275\342\237\246\273\377\256 >\330\220\267>\251uC\2767\276\035\276\243\233\302=\330\006\312\274\243L\273>\t\256\244>6\264\322=!\035\311>\254D->\1779\263\275\270s\272>\367P*\275\217\3076>\\]\347=\251\215\302\273\027\374\n=a\240!>\027\374\033=\351\023\336<{8$=\356y/> @\247>\332\335^\276\340\022\251\275\311\377\035>\021H\224>\371\255\240\275\024\026\245>\373W\360\276\223\274W=\227]c>\354\254\031>>r\255\276Y\253/\275Y>\213\276\014\350\203\276\271j)\275\301\230\336=\201\301#\275\005\263\365\375\346\300>6H\276\274\004\224\353\275\241\2145>\232\221\247>jZc>\307\001\215>\351\337\313>P\177\206\274E\000\016?1\367\027>K\273a=\231\363\270\275\250\372\254\276\264$\356>g\242\202>\366q\245\276Dt\027?\331L!?Vd\035\276\255\331\310=\000\336\277\274#\367\236>JQ\262>\327\254h>\257\203\250\275\264[\n>\220.M\276&\032\201\274\307\001\003=S=\221\276\027if>\177\243x>\330\0005\276=\336\313>\235?E>KQ\302\275dE#=:\220a\275\210\221\265>\374\n\336>&|\225=s\235\027\276\004n:?|\320\252=V~\201\276E\257V>\222[\214\276b\337\212>W\233\367=\264\231U>\266\006\314>\305\347\360=\334m\304>E\025\221\276\274\326\003>^\"\262\276\212P\017?\207_(\276L>\306=\335\354\360\274Q\004L>\031\024$\276\2378\374<\240\303\271>K\237\332=}\'\014?W\010\215=A5\021?gb\241\273+?l\276\336\025\204\276\377\266\'>\363\322\246\275\342v\232\276!:1?VC?>\\\016\237\276\177\337\355>\250c\026?\270&\330\275@\327\213=DB0\276H\202\337\275\227A\021>\303\006\353=\005\234&?\221\316\374\274)\305\344\276\017\3326>F\035\202=iX\323\275%\2037?\227\210\223>C$\223\275B\222\211\276\304\212\220\274\322\034_>\371\264\201\275Jm\324\274\347\220\002\277^\260\314>3/\242=\022\217\353>\033\225\230\276[w\300=<\213N\2767j\351=Fp\005?\002;\240>\215\313\257\275\021\374Q>\337Y$>\211\016(?fw\266>\377\314\311\275\236\227N\276\262\275C>\376\037Z\275\263\305\205\275\037\357\006>\244\212\357\276\021\240\317=\314}\263\275\336Rv\275&\240\"\276\337y\352\275OIH\276\362\215\206\276\231{\212=a\345\200>y\247\320=\220\344\343=\262e\270\275\245 `\275\263\316\250\276\263\264&>\201\312\255\275\210\314~\276\333{l\275\311\333->\324\367\027\276\265g \276fE\314\276\366\2160>\263G\340=\362@\210\275\005@\004\277\325\347\035>Z\235m\276\325\312+\275\223\366\253>\252&v=je\204=\000\360\254;\345\272R\2767\010\352=\\\004\263>k\256\204\276&\252\375\275\350\223u>u\313\325=*\272\200>\224\363\330\274\333<\022?\004\037q\2766L\200\276\246h\005\276)\215:\276\324_\021?\341v\237\275\254\026\266\276`m\036\276:\230\272<\314\034q\276\245\352\330>\315B\344>\371\260\361\274\025\277m\276U4L\276k\224\217\275]\246\306>\001\013\372=\356\ry=yb\273\275so\277\276L7 >~j\t\275U\243i>\3032\277\275\347\266~\275\265\344\364\275\034M\234=\355\370\010\275\004\314\017\276T=\035={\036\202>\363\334K?\366\n@>\310U\016\276\261H&\276\017\2768\276\257\361\014?5E\033\277\233v\216>\005\222\276\276\267\316*\277n\222\265<\351\336\226\275\263\337W\275p\324F\276\001\256q\276\303\214\275\275\255\001)>\355\r>\274\030T\234>\202f+>\226\346\026\277\377zn\276\242\263\252>\313\365\357\274\010rG\274\026?\353\2764\026\201\276\272\307\222=\373\310\301\276\272\347\320\276\265\360\352=-?\257\275\267\241\202<\271S \276\346\375)\277\371\027F\276\033\372\321\274\242\343Z\2773k\206\276\234\302\367\275\320\2345\277\301\337]\276\227\207\201=J\005`\275\201#\223\276\355\2311\277\000\256\210>\021\005&>\3414\177>:&\242\276%r\200\273\200 \033\276Un\013>f~s>\335\200\304\276\220\2465>\371>7>\33498\275`\272\376\275($\220\276\024\314:\276\351E!\277\255\026d\275\366P0\276\231;\214=\244\222\233>[\237\355=w\270\205>\251\252\217\276\275\250\260\276E2\215\274\260X\221>\341\346\211>Wa\372\276\202{^>\232mk>\344|\240\276\355hN>tj\227\276\301\303\237<%\263\010\275&\013\275\276\"\032\373>\224\372\355\254\227A\276\021s\212\274\001\214W\276v\330\216\274\372\355\224\276 \212\232<\316cY>\031\021\032\277\270%Y\276?&\247\275\333\363\035\276\t\355\027\274\235\261\002\276\006\260\200\276\340\006\257\2749GJ\275\370L\322=\t0^>&\"\"\277\350\004@\276\017\346\027\272V\234g\276v~\247>\215\243\207\275\310\225\274\276L\270\203=\223\352\017\276q0x\275\205A\323<\320\361\200\276XI\n>\225\027\207\276\207\207\225;7\314N\275!\014g>\216p]\276\016\235\004?\246%\327\276\366*Q\276\327\220\325\276\n\311\036\277\251\215\350\276\304\322\221\276J\354\303\275 \354\323\2755\310\037\276I\340H\276-%P>\024\306\022=\325\2267?|\221\202\276\002\204\275\275(\\\363=\275\327k\276Qg\370\276\010O\243=7\305(=7\306\236\275\243\034g\276\303\r\214\275q[\243>\374*0\276\242\034n>\207\005\253\276\3444\370\276@m9=I-\334\274C\025\255\276$\2712\276\324^\210;\317O\214\276yr\270:\223Hm>$\351\016\275\222\261>>[Y\306\275\n\355\025\276Er\222\276\346+\234\276uc\261>\355\006L\276\340\236+>\344\376S>\206\220\034\276\203n\212\276KJ\251>\353/_=G,:=cf2=\325X1>\344\241\221\276\311\300T\2764\303\221;\254;_=9:\002=Q\245\273\276\305~i=\030\2672\275\220\271\273=\315\233I>/\0364=1{\026\276IRV\276E\t\201\276?n\337=\347\210b\2777\230\210\276\206\204\204>\343\326\263\276qM\330\276\256\'$\277@\335\243<\354\243\241\276\t/\365\275^-h>\013\225*\275\"F\330\276\235&\305\275k\277\'\276\347\370\020>:\021\343\274\316\261\263\276sB\250=\306\224\275\273L\332f\275m-\301>.\304\331>4\364\210\276\2470*\276\265\232\003\277-\003\266>_\205\354>\254\276^>K^p\276\331\nm=\311&0\276)\224\004?;\267M=\035\351\353\275\2546\342=\316\211\374\276\004dE\277k\223\020\276\323\213w\273P\221\000\277\364Xo>\003~\031\276{\313d>\235\363\227\276V\"!>\311\266\233\274\373\334\200\276\250G\\\277Z\206\336\275i\201\323\276\273\367c\276\220`@><9\212\276\342\302H>\340\016D\276\300\222\243\276$^\374\276\00422\276\001\337\275\276\336\226\304\276\032\224*>\262\325o\277V\226\302\276&i\341=\212\315z>N\264\214>\215a$>#\'\207\276\017\\s\276g\002\345\274VG\325\276e\244\007\275\355\211u\276\014M\202\276\2650!>\233r\037\274R\024\270\276\252\034\236>SO\013\275\251e\260\276_\002\236\276\002\311N>\2360\263\275\310\230\305\273\253\344\'\276\350\355\367=\335\006\205\276\017Y\273\273\302\255/<\310\241\014\2768\274\202\276\332&\034\275\241h\203>\230\345v=\364S\316\276\237JL<\311\303>\276\007s\301=\300\023\224=\212(F;QK\023\276\246\001\222\275\255\342\342\275\255\202\251\276JS\300>?\331\202\276\026\351\200>v\225=>\362\332\220\2769\037\347\276\036\333F\2762c\245>Y\302e\276\207H,\277\270t`>\204\3525>\005\342y\276J_\022\277\2127Y>cd!?\206x\245>\n\261\321>W!\200>\031\277\326\276\'\205\215=\2705S\276IK.=\361/\374\275\272\034s\276T\210\321\276\3751\340\276\234\274\003\277\340\035\024:2\267\201\275\272G\336\275\372\316(>\360\315\276\276\345\366\365>ksx\276\253\\\020\275\336nT\276w=\003>|\250\315\275\250\377\220>RI\206\276\277?\355>\003E\362\276\364i\271>\211t\026?\342\240\217\276\255\261\315\275\"v{\276\267\036$>\302l\302\276\365@\022>WH\034\277ma\322\2767\231\226\276\\\n\251=\265\214\321\276\205J\312=\207\371\256\273Y\3452\272\005_\016\277\023\347\263=2\225^>C\201\331;\017\210\016?\210.\274=\220\230v\276\001}h<\321\301\213\274\001g\212=\030\261\'>\205\373\201>~\036\'>Y\242\013?\224G\211\276q\302\201\275+}\026?u\n\003\276\272\302\270\275\364\244S\276\\0D\276\265/ \274A\016\215>f\255\266\276\210@\030=m\363\324;o\361K>\346\361]>\3373\315\275\035&\006\277\246)>\276\322v\241\275\202?\335=\002?\324\275(\272Y\276L\300\272\2762\330<\276#hX\276+}M\274 V\014\276 \270\\>\377\307\316=\005\2355>q09\275E\017Z>xS\343>Va\004\277\276\340\304>\223\360??x\022\225\276-\027\335>\220v#\276\277P\224>!\367\210\275cW\013\274\337\307\256>k\222\211\276\"\003\361\274\323\213U\276\2454\260\275\240y\303;\221\327\366\275G9N=\013\267\301\275\230\245%?\363\004\005>\013TP\276Dt\304=\224\255l\276\300S\347>\263\255\231\261\263>\017r[>>\324P?`\241.>\303\333*\277\316\356\350>\334\253\235>\023d\311\276\230\343Z?\243V\023\277{\273\016\276\355_\255>|\362\005\277\257\317\223=\001Q\353\274\036\030\001\275\311\035g\276\205`\270=\312\333;\275l\376\">\234\275\267>\253&\030\275\031^Q\276{\343E?\243g\003>\215Zb\276(M\325\276\321cZ>O\264!>\347S\004>\246\3428>\335\3332?u\255\276\2751\204Z\276\253\277\361=\254\322\344=\245Y\021\276\030\033\223\275\252\315\004\274\230US>\0052\242\276\331\226\275\276#\375\351=\217\367\t=\023\314Q>\026X/>J\0171\276K\361w\276\312\252_>5m\300=\017\017\224>\014\030\256=\023\262\r>g\264\022\276j_\010\277\324)B\276Nk\"\276\216\202\023\276u\312\025=\331\273\326\276.K\177>k:\210\276\327d/\276\275 ^>\250.\261\276f\340\303\276\327\017\013?\370)\036=jh\211<\202\206\224=\366\304\356\274\267\027D\276\315\252\255>\347\356\212>\237\271\342\275\371\327\035>\025o\231\276\003v\347>CI\266\275\346d\315>\356\016\325<\252\303\362\275\274-\257=^\335\024<\001\272\321\276\345\2441=`\204(\276\360\022\243\276\010\261\233>;\242\004\277I\014P>\372C\256>\371\037 \276q\315\377=s\256&>\361\366O\276\335@\204\276\371\331\001=>\320N\275\203\302\220=}M\022<\252H\003>\217\212\330\275\251\343\n\275\226,s>\357L.?\262Ql\274t\002\210\276\016\241\270\276\374\257\220\276\374\332\352\275\021N\275\350a\241>Jp\356>\233\354\266>\005i\215>\321\306\262=\353(\027?|\316\"=t\206G\276rY\346<\325\301\022\276Y\341\002=\361\353\362\275\205\362;>\2368\023>\226Z_>W\316>\276^\021\250=\177l_\276[\230\364>\247\r+\274\246\373=\275u\366\255>\367\235\333=\203\363\305>\246\234\003?\331nt>\245\216C\276\306\365v=\223\334S>I\344\267\275&\363\360\275\231\323\222>\217\0260?\206\234\314>\274\350Q=\020;\264<\217I\227\276\333\242\255\275\347\013\250>l\327\325\276\363\263\316;y\244>\204P;>|\246\253>\n\347\307>R\373\233\016?\353\241\255=n\276\\\272.\271\306>\372\227*>_\275\270=\022\274\306\276\254\231\264=\322\200\232\276\341\305\333>t\0172\275}\347\203\276U\037\250<\260H\257\275\362\307\020?\241{\361\2766\331\326=\322\343@>\276j8\276Rb*>\021\231\333>\247\337\256\275|\266\350>\241\256c\274\200p\205>+\245\207\276\016\377D\276\330\322\270>/q\332>\334\031V\277\375f\034\276\253x\326=f\225\037\277\316\270\036>d\013\033\277\256\305\254=\377B\353\275R\330\225>\021\373J\276\306\337\206>\266\277\007\276\265\307\255=\336\273\353\275Y\032\303>,z}>VgN\275/\346L?\014\240\303>\275\017\032<\361\017\026>\275\246\230>P\324\027\276\350B\253\275Z\005\244\276cB\036?\314\252\273\276\254\331\266=\211\210\016?\342\244\016\276CL\t?\007Q\024?O\354\344>\222\377,>C\330\207\276\345h \273\301\304\314\274\003xt\276\025[9\276\034\244\005?\233\2434\275\312s`\276i\0247\276=e\035>\342\261\003\275siP=\302\276\027\277\246\372\343=\265A\214\276\226\255\"=\'a\250\276\261g/>iB\255>\353IO=\355\324\353=\235\334\362\276\037\371\266=d\023f>+K\000\276E\024_>:\277\200>\001\230R\276\216\0362\275Zx\021\275\372\271 \275\0340\034\277\024\1774\274\245\001\336\2749\321\366=\300\335\320\275\217\232)=\300\3038\276\257\205^\276\356F\006\276\340\376\376<\357\244\251>\257;\323\275dh\217\275\266@\237\2764\321\264\275\"o!\275gy\315>\334\241\310>x\035\320\273\022Y\234\276\032p\354<\350|*>l\365\331\276\204\317\014>\301o\231>lR\230=v\'\003>&D8\2748\376\304>Z N>\205\206\233>\257\375\005?Pu\"=\324\006\272>uD\037>V\201\375\275\2631e\276<\201\\>\323\354\377\210\330\367\275\260\237e=[!\330<*\202\365=\032\252\234>:k\257>ok\211>:\374\236>y\317\314\275\257\315\235>\333\030Q=\352\220\222=\3676\216>\377\320\251=kE\341\275>\363\001?\230\r!>m\273|=\\\273\260\204z9\276\326n\310<\336\251:\276\177n\352\276\320\244\032\276hB$\277\203R\230\275\255A\374\276\200t6\276\211\004\210\275\335G\007\277\212\265\006\277\347\020<\276\266\255\036\277\346\320\023\277q\374\245\276\035\315\343\276oA\022\277\363%\334\276\350?\344\276X\247\267\276:\223\003\2778<9\276\216\366\333\276CK\352\276\366{.\275\235s\265\275t\333\023\277\2403F\276\313\037%\277\307u\225\275\271O\253\276z-\344\276\353\202\230\276\232=\361\276\033i3\2778\355\264\276\025\"6\277_\224\343\276\264\277\017\276\334\254\247\276\346k\020\277\316\020d\276N\313\263\276\244\267\021\277\265\t!\277U\314@\276#\336\023\277\233\307\002\277Fe?\276-\320\376\2761\311\200\276\270\232\r\277\377\275\204\275Ah\365\276@\006c\276\031$\372\276\253\310\230\276\013\"x\276\035?P\275\251$\035\276+<\252\275\017\370\242\275\364^\234\276m\206\325\276\351\231\007\277\244\017\340\276\'\262\334\276\262\303\256\276\244\014\362\276\022\277\323\276\'\204\321\276v\221\306\276\234]%\276\237\270\366\276iJ\344\276\003\003\204\276b\r\251\276\361\351\230\276R\370!\277x\223\021\277\314v`\276[\2007\2773\250\254\275\222\365\353\275\352\270\271\276@?\025\277\262+P\277\201\035\340\276@F\223\273\216\356\224\275#\307\037\277\177\374\302\276\002\2475\277\006f\337\276/\370s>\250^7>\316\334!>HpA>0\343\254\276_\034\003?\276\032\223\2765*\n\277:\347X\276\005\316\204>=\220*?\345K\t\277k%\321\276\275\256/=\317\221\356\276D\034\303\276\225\323\224\276h=\213\274Lpo<8\262M\276\357\022\346\276\312|\352\276\367\334\022\276d/\030\277M\264M\276\355$8\276\300\244\214>\3547\356>\344v\033==\"w\276{\352\022?pW\377=\304\330\023=@\307L\276dL\237\276\273\311f\276#\314\037\277,\220\265\276C\336\251<\225t`\275\245m\t\277\026\277b\276\254\006\277<\241\361<>\2366G\276\016a\344\245\252\216\276@\ti>$\305\002=#\347\231\276\367\217\307\276P+\307>\374\301\224=D\270\200\276\242\260\227\276\353\210\375\276\326>\207\276\0375\226>M\350\337\276[\277/\277\010\264G\276\330T\304\276\376N\010\275\241\243\021\275\307\033\320\2746\263\376\276\363\242\210;\343<\334=\374\366v\276(<\207\276 \204?\275t\014\375>\204A\212>\"\306M>p\247\004\277@\214\241\276\225\320\024\277\327\030\306>\334\365\230\276\254\376\312\275W\341>\277\325\001]\2754\265\021>\025\336\316\276\307\323\251\276{\014\331\275\"|\245>\230)+\277K\031\024\276p\205\235=\'\262\332>\3156\320<\262\220$\306\240\216\276\355\325w>\017BW>\325r\262\276ji\316>\005v\315\276G\323|;\337\252\246>!7\277\276\2108,>\364\255\204>\343\265\253=%,\t>\005\335D=B2a=U\234\256\275\305H\207\275[r\005\275\221vP\276\315\243\372\275\214\"\206>Me?\276\277V\030\277\\\236\222\276HQ\t\2773\242\364\276\310\255\224\276$\217\210\275\005\345\010>\264\241\232=\240\377\337>\235\277\207;{=\232\274\3414\256\275\354H\032?\203\231\376\274\203\021\217\276\233#%\274A\306\342\275\020\200u\276\003k(\277I\037\373\275\274\"\333\276\006\024\334>\0165\303\276-\333\211\276\306\002\346\3535\223\2762,P=\353\261\306>Xe;>\377\355\210=\263\261J>\246U\246\276\363w\313=-3\223\275L\274q>\205{r>\300\204\302\276\372H\361>\244\207\315\276\000\033h>t\360#\277\006W}\27688\217>\253RD\277p\233\021\276\313\274\223>\265\340\373\275\244z\201=\206\270[>%\375\211\274t*\013?7\n\227\275\205\022\017\275Nf\037>\277\207\007\277F\'?>_\205\200t\325\234\275\271\2256\276\333\342\000\277\210\241\215>^\335\033>D\213\000\276W\201\323\276h\253\201<\336\204\226\275\360|\233\274\211\\\005={k\225>;\t*=q\264y>-\346\360=8\234\332=!\2029\273Aek\276,\014\212\276\232\260\375\276\272\"->e\007\005>?\302\271\276l\370r\274\315\235\024>N=\316\274\023\375H>\346\312?\275s_y>\306d1\276\324<\234\276\003G\323\273\\\200\202=\250\371\003\276R\320\030\276\201\311\245\275\355t\032=\225\010\023\276&\2531\276Ig\251\276g\224\261\275>\270\247\276d\350\333\274s\001\343\274qfV\276\275$g=Sx\021>\362\177\213\276\222\177<\276\2301\310\276\356\245\340=nF\331\275\242D4>\320\t\255=\000\r\221>\372\307\243<\365\007\276=Mvm\2761\360\251\275\3204\234\275\357\325k=\226\037w>\017u\230\276N\244T>\202\352\217>\312L;\276\"x\020\276\273g3=49\205=\2230\022><\215\017>\372x4> P\233=@,m>K\303>\274\361\201\227\275\203\236E>m\356\303:\021\247\307\274\337%*=+\016\003>\313\200\206\275\365D\223=\307\377\233>zM\037>\244\356\001?\2328\001=\337pE\276k8c=m\231X\276ZB\005\2771X\021=8M;>\235\033\034>\311)\262>\220\361\265=\372@\310>2|F\277\366\021\250\274\333\014.\276\245\322I\276\270G\311\276\237\260\237\276u\236\272\274!&\311>\200\302\242\276Z\3111\276\317~{=2\016$\276:6O=\010]\022?G\247n\275Z\266K=k\374\352\275{\234\247\275\204%)>9\240\327>\332E\364\275\303\222\346\275\236j\220\274\207\211\213=(\341\247\276\210\247\">9+5\276p\227\272\276\204?\014?b\022p>\322@\227\276\232@\032>\232C\345>\222ze=\344O\221=qh\330=\340$\344\276\234|\027>5\026\251>\220\177\025\276`;\207<\324\221\317\276\352\206\354=\244\242A\276\373\353<>\177^2=Q\207\227>|X\271=\\(\300\274\211\227:\275\246\260#\274Mhk\276\324z\211\276,\225\'>\0313K?`:\214=\235\367\315\276\003?t>\255l->\037\\\327\276\201\000#\276p\236\001\275\370\200L>\214\005\260>R\346\246\276\2631\034>k;<\276\203\242$>o\244Y\277{\315\002\276\022\226\242;\"w;>\215pA\275I,\025>\347\013P>\"\271\310\274\261\370\250>X@<\276\002\240\021>V\270\372>\351\341>;\345<\335=\263\315\277>\020\314\021=H\327\021\276\323\242\026>\2314-\276%\002\004>^9\335>4@d?\223\013Q\274\035\022L\276\303|N?8\2727>\217\312\205>)\263\277\276\244\020I\276J\037\355\275\313\356\342\274\334\351\255\275\305R{\276\215\312\201\276\376\233?>\025W\t\276\004^\233\274?\263v>\366n[\275@\345=\273\343\024\371=\230\222\035<\030\343\256>bS\237\274\270\206l\274m\206\210\276noa\275Bh\346\275\271\325\006\275\276\344\264=f_\234\275C\255\200\275\006_\005>@F\230=<\017\264\276\270\300^=A/\344=\347\200\221;\203\303\206\274\3768\255=H\330\225\276-\246\002\275\373\325\006=\266\237\"?\202^4\276\277$d\276\266Y\013\276\032-\325\276\271\267D\276\227)\312=.#\263>\347\353E\276x^\230\274\370\213\320\274\354\357\240>\274\004\265\276\002O\216\274\327\345\340\276G\263\274\275\356\r!=n\272Q>\257\273\022=\\\004\032>\267\014\273=\000\200\324>,GY>Y\326\013\273m\355 \277e\177\243\276_O|=7e\373\276\346\333J>\261\237\354\275\"@\245>\006+\345\276L#\330=\177*\234\274\336\031\014\276|u\234>`}\231>\274\377\255\273\211\362\217\275\377\241;\276\\s\306\274\211\000\335\274`\1776\277d\320$?\216\347\372\275\317\262\227>\021\034\213>_\342}\276\234\374\303<\206B\233=\rS\211=O\245I\275\341\371\371\276.\256R\276\311\2365=\231\345\"\276\265\306\201\275\226\323W\276B\322\232\276d\0274\2766\323\340\276\263\370\343\276\254\013\246\276\255_\206\276\024:\273>*\006\032\275\033>j\276\321\245\252<\000D\245=\2222\204>\245\272\r\277\373\002\004>\024O\241=\2639,\277\004%\007\277\226\201\036\276\004\377\035\276\223sZ\275R&\254>\206\304\032\277\220],>\314h\344\276j3I\276=KW\276ogt>\330!\314\274\026u\226> \365?\273\006S/\276\032O2\276n\003B>\005\376\215\275D\026I=tX\n?p\323\020?G*d\276@\217\333\276\226\374\252=\320q\277\274G\244\252>?\336)\277\366\\\203\275\263R?\276\211(\332\275\255f\210\275\274\362$\276\003{C>\236\007\267v\327C\276y\2326>\003\352\\\276\244]\345\275&\"}\276\331R\027\277\031i\013\277\245\252\317>\367\032\225\276y\372\312\275OK\'\276\233~A\276{<\246\276\237\325_\276\327\222\316\276}\225.\277\334l2\274\241\342\361\275\031\276\220>\350\026!\276\032\270\233>\2558J\276\243/\365\275\257l\270\276<\235t\275\363\001\244=\270\003o<4[\260>\306\373\266=x\355l\274\022\021\223\240u\240\276*\365\232>\n\245[=\210\316\222\275\'&\305\275N8 \276UI \276s\366\004xI\221\276\0035\364\275\202\226\363<#6\322\275k\300\250>Ny1\274\215Eh\276\230\225\322\276\014\327\334\275\204\211U\276\234\212^\277z\340\337\274\3551\363\275\3373\340\275\261Xg>\261\324\254>(\005P\275\024E\037\276\004\256\354\275\326v\245\276y\203\255\2763\240\316>\361\374v\276fS\350\275K2G=\023\031\357\274\310R\267>\376\263\363\276\2567\301\276\304\356\232>\037\371\243\276\006\016\300=\265\355&>\267\313w\276z\n \276\364\272\275\276E\307\201\276\267>\016>/\304_\276\023\270\342\276!\277\273\275\233mQ\276\016\316\321\274\227 \302> g,=6\265\307>\370\333\306\276\311/q\276>}N\276\034\353\240\275H\343\351\276\203&Z>E\224\271\275\311\254\271\276\267y\351>\373\337\300\275\357\276\245\275\340\007h\276\373\271\374\275\026\223E\275\006\035\021>\340\337\r\275\322\376\034=\243\237\276\2753dU\276\227\322\214\276V]\037\276\235\244\252<\005\343\322\275\245\200\217\276k\\\327\276\205\376\'\275Q\004\246\276\345p\334\275+B\013\276\361\007\304=8\213\214\274P\331\001\276\034A\007=\204\201\227>E4\272=\350[B\275\320N]\276\223\034\320>\355\342\226\274:\033.\275\276\300\365\275\005{P\276\337\374]\274`\345\021;\307\377/\276\342\252\212\276+\302\202\275*T\270=\324\320~>@\350\370;\245\314\244\275\357\375\014\276\371!\264>\326\374\274=\035\223\024\273 \250\330\276\230lh\275l&9>\205\021\215\276\007\225\023?\263\n\002>&\3142\275\336\372\013\277 -\017\275)\336K\276m\251\010\276>\314n>\375K\233\275h ]\2768}\214\276:\265|\273\377+\320\276\263\202e\276(0\365\2750e\016?\200\314\316\274`O\001\277=\021\017\276]\207a=\317hM\275\214\025\355\276)f\201=\260\253\230\276\263\006E=k!\021>\353\352n>\223\007C\276\225L/\276\356\312q\276Os\313\276\376\214\325=\345\317\254<\362\230\274\276\346G\347\2764\304+\276\231g\251>+\216\221\276\364\300\020<\353Z\020\277\024\200\323\276\341\314\335\276\354\332a\275\215$\215\276\0144O=u\235x\276\177\274\226\276\0331b\276\006v\255\276\275Q~\276Ir\233<\200oF\277\303\020\267\275\232\374\005\276\261\001\375\275\236`]\276A\316\204=\005F\224\275G\370\207\275\312\331\304=\224y\270\276H\300_=\200\247L\276\303@\016\277\331\221\335\275\020e\241\275W\013\343\274ga\217\276P\372\220\273\245\305\034\276\260\341\205\276\321r\236\276\n^\245>\031\367\000\274\331:\000>\024\\\020\277\017\363\301\274\252\302\006\277/7\025\276\231\353a>\373]\027\277\327W\354>s\233\\>\"\036\336\276\263f\231\276\233\202\020\276Rpl>\375M\266>\\\023\223>\267=(\276\256Q^\274\277\333w>:\214S\275\254{\376\276\000;d=\2379l=\333\352\033>\265\234\322\276\277\241\343=\214\366\233>\307\235\375>l?d\276\207\232\206>\254o\304\276\323^\337\276Ab\255>\276@\234\276\274T\260\275\016\261e\276#N\013=0\373\220\276?h\'\276\027\307\213\276i\313f>X\364\271\276\356\246$\276\366\314\225>\373Y~=\266<\312=\313\253\310<0l\324>\334R\203>\354\257\313\276\215\256\323\274g\265\213>\362\205\233=\177\266)=\2014Q>\036\343a>\266\363\261\276\205\271\232\2766\327\001\277\371\036\226>C\236\365\275\'\206V\275\227=\357=*o\312=Z:\257>0\317#\277\017\001L=\310\353^\276\215?c=\271\031\\\273\360\245\210\275%\001d=\211\260\243\276k?\356\275\324Q\211\274\204\267\031\276\253\005\000\277|w;\276\254\370\003?+\n\345\276\206\330\025>#^5:O\216\253\2765d\205\2756-\037\276\275\017v\275\331\341e=\363\021U;^\030\224\275\003]\357\275q\316\034>\376g\307>\215\211\330=\272+~>Hm\250<\227\000,\276\3764\271\275\275\301\203\275\200\211\033>\224\r\224=)\306=\276!K\217\2767x\202\276Ie\346>\n\317\020? \024%?\263\031\226=\n\344\365\275\220\335\223\276\237\213\306\273\234\3301?^\244L\276\026qD\276\003\353\006?!:\363\275i\375o>\235\314\253>\245o\307>\373\022\200\276\020T\266=f\235d=\335\035\021\276\313x\220=g\020$>\333\301\030\274\0338\020>n\371\034>\354\250\334=\255\345\277\275L\020\212<\212\260\310\276\000\027\350<\273\251\274\276^/\025>\006G\271>\314\023\003?y\370\006>7\t\250\275\363\002{\275QC\265\2758\222\031>p\272\224\276\036\276h>m\266\310>(\033/?844?tUV\275\224\033\021?\335\235\201\276\267i\216>\365\205\017>ie\334>\317\361\227>2\346`\276\374\267\000?\225\334\034\274J=\242;\216+h>-\326\272>\316\001k\276\014\372\032>\360\301X=Uz\224\2766\241\361>\2516\242>X\223\227<\006\270\315\276\204\005\347>\242\205\023>\223A\267>m=\333=\250\302\205>,\362~\276\251\2415\276\317\224\005\276\177Y,>;\3672>\323\262\014\276\rn\020?y?\303<\006\316\375<\036\364\375>\324\322\222>/\327\263>\270v >-Yj\276N\033\036?\316\323\212\276\355\270=>5D\244>w&\304=V\2421\276\223\035\206>3\036\277=\214\234\271>\007I\361\276\222\231\237\276\211z\236=y\214\307\276\326\223M>\377\377\372>/\026\177>\303\250\354\206\325\373\276\\*\'>=B\214>U\277\000\277\3427\260>\362\2379\274t\265u\276\023\330\336\275\214\030\237\276>\007\034\274S\324\352=\342\234\326>@\365\243\275\257\3250>V\004\347=\352\241\336\275D\327\003\277\334 \217\276\353\0001>O\372\036>\\\375\206>\373\251\311>\343}N>\020\n\004\277\333\250\273\276A\322D>9\362\210>.\360\310\274\033\257\350=\023\327=\275X\360u<\315.\234>Oig\276\334\303\244=\333\325(>[\002\005\274\026\354w>\264\031\201>\344;\355=x/\212\2750\303\362;\376w%\276\215\370A>tx\317>\316\272\245>\237\341\321>\325\242\262\275&,\321;p\210P\273\243\222\262>\322\230u\275\033\000v\274\266\035\243>\337\334\357\275\212\030c>\016\307\227\276\037\224\365=\265|\366\2743Q\332=\213\022\236>\355\335\013=\254\033\033\276\000\245b>\215\r\350\275|\272\312>\235\314z>]7\317>\306e\311\2756\254\241>\377\362\305\276%\371\202>\261\225B>\215H\034>\253T\205>\374\342t>\376\311\021\276o>\212=`cQ\275Ll\016\276\221\206\240>\276\225y=Ud[>\370#\264\276]i\300>\362\032\237.:H>fG\n?\233\034\350=\334)\203>\277\212\275\274\270\t/?.\267\233=<\3438\276\\\202\236\275\234\302\312\276\334\254\272>\212\244/=\252\204\014\277O\317\016\277C\257\310:X\247\"?\036\222\246>4\2274>@t\330=\006\030\331\213\242^\276m\377\233=\340\031\211\276/\026\375<\367\252\245>V[\317>\236\321\207\276\004\307v\274\231Zv>`\216\314<\2116\376=\212\345\001=\352\301\232\276\271\014\205>\314\000@>P#\"\274O\032\014\277\233\275q>\314\217\\=\301\002d>\303\365\241\276$\311b=\366\302\353\275\274\345\241\276\016\217\266\276\374\234A\274\216A\022\276\262l\022\277\314\335\310\275\266\022.\276Zd\320\276\210Q\340>\366\355\373=lJ\351\276\214\230\036\275\303\232\231\275\230\004\367\276\210\250v>\272\300\230\276\313\216\020\277mX|=\035:\330\276&6\206<\361\367\230\276g\206h\275\364l\305>\222\305\013\276@\254.>\250\201\305>\211\241w>\364\374\340>P\274\034>}\242\213>\260\366\210>\324qV\276]\347\370\275\034\370/>\346\364W\276\302\030>?S\327\322EM\212=8\365\203>\233\3325>\272\247\331=\261\324\t>f_{\276\367\237\322\275\217\035\320\275v\265,>\355\375\213\276\023\r\002?\250\200\226>\261e(\276\300o\311\275>w\373=\374;S>.\357\235=K\ni\276\326\\\210=\233\305-\275\251\321\"=\0006%\274\337~\230\276\352,d\276,\226\202>\177V\n?\337g\014>T\263\227\276u9\255>\223\010\020?\027\243\331>\302\017\356<\300`\021>\317\234\271>\253j\214>\217\260I=t\256\334\274\361\237\331\275\226\243\260>\201\313\363>F]j\276\017\037e\275w\237\237\275\370\212\324=\215Y\274\275\370\252\211>4.\244\276Y\020\316=\374j2>Jf;>\316\303\215=u\2474>\372\2555>\361\351\375\274\366\244.\276\035&\205>z6(\276\355\353\331={\376\256>n\ta\276\337m4>D\235\037\277Z\260l\276_4\206\275\030\353\300=i\025\302\275\007M\357\275#\377B>\267$\347\275f`v\274\027\273\267\276R\021\014?mn\350\275 K\227:Z\\\301>A#\016?2\204\032>\271\3313\276\202\3203>\'\230\226\276\315\313*>1\373\367=Z\340^\276\315\344\306\275\372\252\034\276\035F\202\276\244\2700\277\332\211Y>\323n\025\276\002x\245>\375\216_>?n\352=\303\262*\275\234\"\311=\362\277$\276Cg\n>\237\245\016=\202\241\001>\324D\021\276\234\221\303>Ctt\275\364\356\336<\360\322\312\276g0\030>^$\254>\235\374f\276\321<,=\021n\305\276\246\311\314>\301{\325\276\352\311`\275\221Eb>\254\213*\2755\306\270=\237\236\367\274\215\260\027\277\255l\317\275\232\031\207>*\266\333>\021\277N\276\373\373{\276^\300\301\275i\216\366\275 \373K\275\371:\265>>v\213>\007\341\r\276\027\305\212\274\306\214W\2765\341\263\275\033#\271\276\'\376\371=/\345f\274\322\307\004\276H|->&\034k\276\371W8\2766a\273\276O\360\376\275\370d\023\276\266\"\205\276\304f]\275\013\270<:\223\263><21\265\276\032\373d\276\\T\004\276\3053\234\276=\003P>+\362\326\276s\364\255\236\325\255\276~iQ\277}\357p\275\'\312\377=\247e\274\276\334\235\240\274\225\311\323\276\035\332\232\276\204\005\317\275[\205\366;\023\254I=\221\n\310\276\202\311_=(\265\261\275\230\325P\276\236\253\032<^\365\261=h\252\344\275:\225z\276W\035\020\276\245\227b\276M\251\314\275\2267\323\276\204m>\276\021\270T\2777\372B\276\256A\223\276\306\303\302\276\014\213\267\276\262\344\014\277\361\203]=6R\362\276;lO{p\022\277U}\205\276Ar\023\275\216\0208\275\256t\376\275\025H\025\277\316-*\276;8\010\276\221\367\221>\306\364K>\007\3372\272v\307\222\274JZ\302\276\261\177\001>\333wr\276Q.\300\276t@\230>\341(\310>I\211\212\275m\273\200\275w\265\'>\277\326\373>=j\237>\375\\h\276\356\241\317\276Tj\033\276\300\211\307\275)\356\220\275\206\375\023>\244\252\274=z\267\036>F\003\237\276\033\327\226\276O\374\241=p\214\343=\227\225\233\275\353\354\300\274/\016\204\276M.D>I\032\210>\"\031|\276\203\234\333>\221\3230\277\r;\353=s\032\346\275\356\321\200>\320n\026>4\3416\276\237\037x\276W\237\274>+\332\343>\350u\013\276\253\303\214=\327\334\304>\271\253~<[j\255\275S\221\262\276oK\342\275\260$\304=\022\t\"\276\265,o\276\376\351K\276\334\372\033>\201r\216>\373t\233\276._\243\276\330\306\366=,\027.>\263\272R\2773h\007\276\204\244\276\275\373p\037\276\277`\262=/\357\016\274\317v\274\276\300/@=@C\271>\035~h>$\024\272\276\025<\206\276\233t\204\276\024\363\305\276?`\235>-\243\255\275\013\346\271=\210[\213\276V\3314\275\230 9>\257\210A\276\225\360\374;\002a\013\2763\304;\276,\n\004?\370\200\211\276\030\242\264\276d\0216\276e8\203\276\215\016\277\276\337\353\377=a7\340\2760G\273>\334\304j>\"\013\313=\'S\202\276\207\343\001\276\317H\017=\262\266\320=6Bp=Y\204\032>=\240\021>\374\'q={?\000>Lh\334>d\252\006?.\n\241>\317\227\245>W?\033>%\022\031?\365\005\217>y\376\200\275\330|\365>\345\360 \276^\2616?g:\305>\330\354\017>\266l\356\275\242\n\\>bN\022?\265\203\353=%\345p\275i\305(\276~\303\202\276Bre>\032\222\275=H\231i>\\\343\267<\356\355\007>\nL=\275\214\253\225>\376e\231\275[w\221=\3056?>]\212\270\275FT\331>\337\302\224>\321\3521>\016\304\265>\236\330\206>h\014\030?n\376K>\022\341\t>\345B\037?6\351\345>\226\037\030=\312\360@>\236\230\243=\261r\227=\212\265\315=\332\337\000>~\327\032?O\336\350>\336\344@\276\345\363\372>%)\317<,#\226>\344\2055\275\323\253\207\275\350M\244>\346K&>\025\275\306=\2662\222>\036\213\021?I\206\004?\322\206\233>\'\276\344<\025\366\007>mL\002\276\3000&?\353\321\226>y\265\"?R0/?\276\204\202\275\353\311\365<\202\332\365>\232\233s>\005\304\342>Pg\230>l\356\262>\265\223\247\275\270\356\236>)\311V\275\030\251\250>\215\325\273>\217n\355=\320\226\356>\3136\247=\013xA>\007\207z>\247\027\320>\332\027\231>\324\014B\276\375\373I\276\277JK\276\256\240y\276\222=\002>^OF\274d\203\254>T\357\206>\246\211\214>\005\\:=\224\030u\276\331\037\007=$D\236\275\222\240.>\331\017\367\274\250\366\373=\214\373.\276\235\241 =\347\255\234\276B\373Q>sq\262>q*\252>1\3153\275\243N\366=0\345\202\276$=\014>O\235T>\232\346\237\275\220\276\271\275\3617(\276E\000\226\276o\311J\276\370\242\257>Lw\016>I\362\365=\\\317\240\276u\305\003?l\241\340>R+|\272\017\203g=S\000m\240>\336\367\263\276\202y\016\277\277\246\213\275L6\267>\232F\233>\332\0207\276\020\033\204>\276\342\363<\315\310\272\276\233e\270>\'\275g=*\006\227>\374W\247>\353\223\202<\346\377\210\310\270\004>\034-\200=r#\356\276\350\352\014\274\327$d\273\373\r\203>=0\207=\253\302\357\275\251\321%>\\\361\001?W\316s=\'b\013>\375\017\355\276T\334\256>Zf\241>\013\207\243\274p\t\366\275\014\020\361>\212m\230>\236|)\276\300vQ\276\001\223\306>_\331\002\275\214\224\273=\036 -<\\\2468\275\251#\321\276;=\216\275\217\362\t?\010Kh>\271:\004>D\373\205\274\362w4>\347\224\251>\332\321\004>\253\210\016?2(\255=\001L\272\276\374\035^>\341\201\365=q\215\243>\237\204\355=\017\234\205\276\362\244\013>\323\266\222>@\303I=\205g\264>\304\372\233>m78\276\273(,?\364rQ\274\330>\376\274\320\325\261\2768\002\213\276\033\274\031>\210\023\003>\013[$\277\275(\007>Kk\215=\005\225\374=\3506\307=I\351|\275\214\325\006\276\234\375\023\273a\213\217\276\340\003y\277\307\352\300\276?S\022\274h\227a\275\002N\237\276\001\343\322>\225\207\305\276\355r\336\275o\017\250>%\246\227=\334\365n\276\200\271\320=\242\2062=\035y=\276il\216\276\311\2436>\326FB>\016\223\271>+\310N>\316{\310>\016\215;\275}xj=\305\312\321\274p\345\265\275oW\225\276:\303\234\276z2%\276V\316g\276S\337\017\276\343bd\276-*E\275\266&<=\330\251\321>\365\330P=\242\230#?y\014\224\275\033\373#?3\2678\276\220\316K>\346\263\252\276\001=\007\277\3129\032\277\241\341c\276\270\366\250>\021\300\275>\233\223\374\276\273S\313>2\341r=\312\210\307\2756\204.\274\036\301\013\2757E\264=\373w\344=\375\036\354\276L\212|\273~p\262=W&\037\277d\010l\276\340\010*>\004\342\243\276\277\003a\276\020\303[>\355)\322\272I\376\326\275Y\000\000\277)X^\276\252\270\215\276\270T\334=1\205x>\225@\210=\177zS=\223\217\217>.g\273=%6\213\276\032\312\272\275\325\321\320\276\334\036\235=1\r&>9N/\275J\034\301\275\317\004H>T\2528>\257\325\241>\010Wt>\232\002\010?\2512d\276\232u\244\276\177\240\213\276H\353c\275r\tf>\232\242\225>0\211\344\276QD\276>8\335\205>G\3249\276\354\223@>2\"\033>\024\337$\276sTP=J<\214=\233\300\342>k\226\005>\223\033@>apF>n\313o>\203\245\033\275\n\023.\276\325i\262\276\377c\025>{\214\022?\216\275\232\276\357\304}>\310\366\233=u\302S\275l\311\034\277\024B1>k\264\210>tH\322\276\357m|\276\307U\215\276\211\225\036?\266\3774>L.\246w2h\276\371\353\337\273\362]\232\275\364\361\t<\266\2764>6g\t>\272f\001\275\377\223\202>\033[\273\276\373\260\177=.\375k>\006\326\020>S\210\234\276\007\034\020?/w\217\276+R\353>9\255\370=I@\231\275\357\2405>\352\365\224\276\312\246\226\276\236dh=\275\351\242\276\204\247\265=K\001\222>\211\277~>\033\357\221=1&n\276\261u,>\260\226{\276\257\257D>\\\316\243=>\033\004\276,\336\016>\031E=\276\333Kv\276\027\250\024?x\301\226\276G\n\355\276\r\275\200>\323\341\026?\332q1?\255\310\021?\277|\030>x\251|>d5m\276.\305|?\303\022\027\276\026U\276>\002\244->\230\331f\276s_E\276\3762\342=_\307\277=\310}\226>\361\377\245>_\313\202>l#Q=5\376\346=\203\035\026?$\214~>;e\220\276O\353\220\276\205+\350=\032P.>A\243\331>\377\313\007\277^\216\240>\236L\177\276\"\206\r?\243\1771\275\nht>\361\347q>*\217\t?\027^J\276\327Kv>A\2560>yWK\276\240\016\313\275\322\230\220=v\202\267\274\025k\260\276X\276\007?9;\372\276\326\243\347>Tk\224=\020\210\230>F\344$?\373\020\357>m\027\311\276`>\225\276\026+o>\335\247\247=\373\366\006\274\347\r\212>N+u=\020\323=\277\220uC?q.0\275H\177\275>\032\323\240>&:\034>\310p/\271_l4\276o\n\354>H&\003\277\rh\241\276\253\224\271\275\2174\004\276\375\334[\276\251\031\220\276\371)\275A\276g\177\013\276\222g\322=3\014\032\275P\234a>\316\333\005\276\247\004\313>\250B\215\276k\r\236>#\317\036?(\315\366=\347m\363=\366\017\321\274Ah\205\275;\365T\276\035\333\257=\203\032\223>\247T\000?q{\304=\356\315\300=mW\301\276\223q\246\276T\021\254<\020\202\235\276:\235\214>\236\332y>\210\307\032>\246l\334\274\013Pn>r.B>\025Y\202\275\334p\2279B\312\003>C\360\213>\022:\016>\252\345\362>\031\317\007>\323\315\361=\257K\316\275\216&\225>\354\262E=\232\244o>\331m\261\275\\\317k=^\357\361<\376C\256=_\306\224\275\271)\234=\216\373N\276\357\r\010\277JX]>\223\224A\276\277\363!>\226Z\263\273\260\016K\276q\227s=i\276\216\275S\253{>e\r\267>\006{\313=u\232\230>U\023\t>\271\362\307>\310=\370\275Z\223y>\243sl\276\335\256$>G;\021?\331\347\332\274\252\003\024?\002K\231\276Fs\236=\347z\010>!G\234=Bl&\275ai\205=\013\020\263>\366\227\014\277RL\010\276\355IC>\006\234<>\267\336\023\276\227u\000?\255\2633>\374\242e\276\014\341\266\276\331\221\377\274y\307@\276\364\331)\276>\351\226\275\240\253?=\031\243\232>\322b\212>\244i\235<,\365K>\205/\246\276N,\207\233>\340\206\013>~\231\032>\376\242\201={?}>\213\257\236\2766N\317>\327\234\271\276~\227[\275\250\255|>\216u]\276\365\004\372\276\021\216<<\252\305\271\275\200sM=\261_\303\276~B\301\274qt_\276x\354\206\276\216c\257>\251(\363\276X\013e\274\345k\237>_\230\036\2764\004B=\032h\212>\316\277\325>\303\321\004\276\036bg\276E\211u\276\322\353\316\275\254\341H>\220\002\245\276\020\312%\276=1\304=\367,\273>\344o\036=\256\2031\276\343\336@\2759yk\276\237\025<\276\013\351|\275\213\312\r=\233\304\252>\326=\204>\340#0?-\217\306>J\336v\275Y\324\t=\327O\251=g\207\270=\247\334\215\275\214\357\222\276(\"Z\273\217\267\275>\016.\340<\310\357e=\305R\021\275\"(S=\203\003\014\276\342G\336\273_yD>N\337N>|Ak\276\266\010\333\275\007Z\275\001$u\275\312\227\246>\3649m\274\'\340<>\315fN>\234\331\215\274\343\351\205\275\307\242\243\276\225\277\265=\033\222\240\275\313\247(>\245\345\t>\317,}\275\355\365\007>3\330\331\274\255\352-<\235\007>\276\272-%>\001\323\335\275;\370R\2764q\005\276u\233\217>&\326M\3553<=\321\301\236>\300\n*\277\301XP>\357\261\033\276\014\203\035\276>~\021\277;\302\346=\237wW=\367\277\030>L\366w\276rF\336\272(A\271\276\215`\211\275p\213\034\276b\306\376\275\365\336c\276\3551\344\275w\033B\276\320\025\327\275\224\3551\274\342\271\320\276Kh\024=\214\356X\274\250\3347\276%\027\016>v\313\364\275\010\256}=\345\317z=\377\327,\2761{\014>0]F\2764\376\236=\250q@\275\346b\014\276\313\340\032\276@BB<\357\236F\275\230%5\275\253\224\354=\2464g\275Q\327\203>\177\3468\276\340s\265\275\034\007\305\276\376W\314\276t,N\276\2214\025>B\327->Z6\340\276\206\016\263\275\230K\204\276D)\370=\226l\371\275\266G\245\276\023\036\337\276\013\226(\276\023\307c\277\362`\014>\243:\266>}\207\220>\270Y\216\276\210\311\216\276|\273J\277\361\231-\276\252\302\267>*R\270\276\266\231B\276\271O-\276\327\376\035\274\326!\274;K\311\202\27680\356\275Ha\227=kG\277>b\\u\276_\353\026>c\340\230\276\3163\302\275\203\030]=\033\307\274\275\030\321h\276I\233\270=\337\336\306<\\T\263\276\345T9\276\366,~\275|\013\225\275\360\205X>\276!\"<\322\266\177\2766b\337>\203\304\216\014\353\350<\261\236\t\277z1K\276&`\032\277xG\020\276\242\344\007\276\356\315\215=\337\242\205\276\336C*\276EI\361=g\016\333>\302\362\260\276\257\217\343\274\23091\276\275\350\257\275o\350\021\276\220 r>\035H\220\275DqX>\335\021\273>\317j\271=S\242\221>G\340\'\275z\271\371>\235)\000?l\314\030>g\262\322\274\227\251F\276+p\200>\000o\252>\320\033u>x\223=>\232\324\253>\031\200\311>4.\207>\252G]>\357\177\020\277\206s\t?\362\351-?Y\177\023?\005V\332=\373\025t>\203\320i\276\030)a>uh9?a&-\276\325wg>*\260k>D\313\304>\300\311\262>\355k\251\276\241\354\324>6\310\324\275\r\3429=\003\245\243>S{\201?W\2023\275\";\203>\301\212\014\275\033\177\222>\233p\251>\004\373\016>\322\017,?\r\361*?Mh\254>\203\235\254>zj4=\307\313\236\276\331\177\320>Y\355\320>5\331\032=\231\262\326\274\242f\001\277\272e+?4\026\'\276\235\350O\276\230d\"?\301|\r>%\214$>\301\270\305\276fT\270>\373\033\304>\241Vm>\274\247\004\276\337O+>\255\201\232>W\230Y?\365T\007\2770Kj\2753}\341F\353\010>\031\204\347>u?\365>u\200k?\373/\256\275\2407\306>1r\t\275\240\253\203\276_\200\021?\271B+=Of\206>@\374\215>R\311\031>@&\311>\307\322\">\262t\034=\324#\265=-P\007?\230G\374\275vy\346\274\261\314\375\276\215\201\227>j@W\276\356\242\311\275Q\247\275>W\003;>\021\317\300=\016\032\252>\216\003_\276\222\032\205\275\373 \262\275!\231\306>\244\362f\276\341\300\325>\\\244\036>\252\300\205=\350\343\332\275\250*\362\272\341B\205\276D3\252=\307\227K\276\352\276\240>\261\257\234\275\360h\'\275\265f\352\274.\237\003\277\235\312\306\276\240-k>\313-\206\274g&\007?Q_\333\273X\275\256=\031\264e;\264\354a>\331e\255\276\020,\016>#\206o=\216\311\262>\351\365\262\2745\023\002\276(\206\240=\304j\335\275%\342\257=}I\346>\247\'8\275\013\367P\276\320\016\014>\0336^?\333\211t>\316Y\375\2765\323\276\276\205\317\232>\206V\251\276\316\375\245=2\370\301>y|\352>\214\006\230\275\035\325\277\275\004P(=G\313\017>\231\271\017>\3152\031\276\232s\346=\270c\203\275\273\027\216>\016\000\310\274{\255P\275\026S^\275\325d\365\2766\374~\275\036G\241\276\372\366\t\276T\275\223\275;N\272\276\271\004\346>%\327\346>_\363T=5s\n>\304\372\244>\026\263\035\2761\027\213=\357\204\324>\305u\311\274\234\317Z\276\224?#\276\312{\356\275Z\262\243=\207G\003>\347\237jSE\004?\375\252\223=q\\\201\276B\205Z\275b\375\273\276\372X!\2776\352\203\276n\310\210\276\031l\242>.\014\266>3\022\005\277\331\317\350=y[V>\020|\n?M\300\306\276\023I\347=I\266e\274\316%\023>\367\356\032\276)\010&>Z\007\205\276^\230T\274B\362\n>w\267\">RQX=\247\'\253\276\220K\351>\263f\203=^\032\243>.\'\340\2759C\244>\017a\034>\004\226A=\371\312\314\276\021:\371\275b\222\213>\222\264\227>:\r\215\273\345\017\013>\235\232F>\001\366\376>\311[5\276D\003\306\276\256\231\264\276\320\235\347\276\240c\212>_\225\206=|_\216< \2146\276K\366\247>[\016\341=\007\014g\275 \313\304>\246e\247<\360w\210>\337\242=\276\343\371<>^\376\243>)V\340>\213J\027\276\221\262\333=\376\254\230\276\201\017\264<\376a\221\276+\376\302>\354\245\316=;\356\236>K\350X\276\262l\014\277`\256$>s\325M\276\364p\223\276\252-,>H\233\242>\330\305E\273\220\217\236\276\204\177\t\276\300\325\275\276\201\361a>q*C>\350\n\244\276H\301\335>w\026\201\276\244\336\210><\273\314\276\220&\273\276\312n3\276\244$\335>\323x\201\276\307\264A=?\331<>\3415\332>\034\253\225\275\210\340L=h\023\231\276\242\031z>\265\035\014>\354\310\324>\367hm\276\206\366\224\276\234\371P\276\265\310\227=\007\2072\275\323\203A\276\033\204\263>X!\267\276\315\315\341>Y\237\262\275\334h\302\276\343% ?v\204\232\274k\327\320<\350)M>\331\027\374\276f\254\273\276\371\nH\276G\037\267\232un\276\020\004\016=n\365\234>M\271\227>x?\371>\237]r\276\036\021\340>\3319\303>\020\233\234\275Q\211\264=\254\301Y>Mp\333\275\262U\203=&\232<>Eb\360=\037\354\207>\016\345B>\366\352\327>+\201\004\276\353c&\273\315\333%\277\355\212\265\275:\303\261>\372\202R>\263>\205\275;\272\211>w\3516>a\352e>\246d5>t\257j\275yN\310\275L&\233>*\263\247<\321\346\334+\035\374\275R\240\227>G\215\210\276\311a0\2764@8>\034@\201\276?\333~>A5i\275\350\177\217=N\275G\277B\n\035\276\356n6=\216\352O>\2600x\276\311\326\016>\213\304,\2764\220\216\276y<\022>E~\"\276\356?P=S\377\327=!h\002>\016\356B>_\217\004\276\345\270\211\276?\265h\276\305\nw=\254`\207\276+\001\252\275\372\214J\276\267\312\362\276\266\226\020>\001b\323>\353\032\352=\252\262\303>\354\341\303>5\037\226\275(\365}\276\020\020\363\276\374\330\261>\345\215\372\276\327sY=[\'{\273/\255\022>8=6\276\220\240>>){\001>T\034G\276\353\324\244\276^1r>\210oq=q\367\002\276s\227\277\276\021\237k>\036\312\005>,k\213\274\265.\021?,Q\245>\007\347Y\276>\362\236\275f\306\276=3\301\014>Rb\353\273\304\220[\276\371\2447=\362m\315\276\250\033\334>|\235\253\275\314B\007?\307\303\251\276\325\264,=m[\310\274\263\211\021?\272\312B>\210\377\216>\332S\004>\204\270,>\007\220\266\275\222\313\346\275\023\304%\276^\234\333>\365\301\207>\267\320[\276\211E\003\276}\025\213\275\242<\027>N\337\313>\260d\203>;\005\007\276\323wi\275\206/P>b0Q=\362\360[<\302Q.>i\346\241=z\202*\275\300\031i\275_\003\354\276\363a2\276\217vc>\"\331\017?\331\006#\276\035\276l\276\236\202M\275\016M\332=\266r\210\276s\256\204\276\273\274\006>\332#Z>\265e,<\247\334\336>\376\271\213<}W\177\276\274;\216=\270\220\302\276\354\322\376\275\305\023\214\276\250\316\302>\276h\301\275%&r=\352%\343=\320\366R>4\177\275>}:\351\276\240\231c\276\216\371F\276P\203\036>\362\250\032\276\035D\330\276\367\3246\276!]\r\276d\223g>h\003\325\275\357&\366>\356}w\276\361@\344\371\'\250=\262\3623\276Q<\210\276\361\256\275>\000\362\262\275\003\371\357<\256\014\022;\200\206\311\275i\3304>S\327\330\275\200\200\313>\212\267^>\250\215\322=\213(m>\230\337\350=\241Q\003>]\244p>t\3510=\322\366U>]i\200>H\212d\276&\037\024\276\3577;\276\345\302\337\275\215\234(\276\236\227U=\254Km\276`\266\023>e\340#\276\227j\010\276\217\324\353\275{N\324<\201Gf=c\206\017=\366\232a>I\257\233\276v\3638>\266.\216\276\233#\r>8\220&>\272pt\276?\247}\276\243$\301\275\371N\370\275\365v\214=\235\240H>\240H\036=\205\373?>\363K\276\275\261E\254\276\325\216\207=\330m\251\275\004\n,>ct\007\276\245>\022\277\227XT>\324\027\241\272\327\020\264=\026N\260=\331\214\302=\361\211M=}[\017\276\271\371\362>7I\212\275\320\332\370=\300\256\305=\252:\031>\252\344T>\026Z\316>\206\247%>\006U\322=D\r_>z\262\020>\367\2054\274\271\252J\276,s/\277\351Q=\274L\016\250>{\315\365=\006\032\037\276\3162.>\242\214\225=v\212\202\274\250Z\026\276\270\205<\276N\376\254\276I\031\372=\324\272Q\355\004\223\275h\000Q>\234\372\036\277<\016\225\276\202Q@\276\351K\302>~\260\020\277#\030\205>%l\r=\237\223\'\277E%\266\274\370\334X>s\370\226>\270\207\265\276*9\227\275\316Ao\276dh\317=0\351\312=\016\266\262>\350C\274\276T\367\351\276\301\331\332\276l\263O=\356\257b\276\317J\027\276J\303\304>\260/\021=@\225\324=@\034\024>NH\204\276\362\232\257>\033n\211\275\020\261\232\274\312\r\274\2458X\276\352xU\275\211E\362\240\261R=\261\327=>\301\'\257>\266\322\016=\211\336\260\276C\257\320=\251^\004\276\016\336\333\276/\327\\\275\021\246\006\275K \374=\000\001\342\275\244\362\233\2762\360\314>\261i(>}\220\345\275\350\343\341\276\031\235\273>\244>\247\275\005\005\177>\252 \361>\224\023\355\274\t\356\230\276\204\367\240=x2\025\275\227\026\233\2769\210\240>h\005\336\276\177\232\345\275\340\340\213>\204\332\277>\356m\270>t\314\224>\022Q\370\276d\340\037>\035h/=fs)?\343\211\275\224+\354<\036\345B\276\356-\211\276\243\227\305\274\033y\236>I+\016?\003[\033\276%\261\221>\026O\266>\010\277\247\275\227@\\=8\336\316=\017\274\240>\337Q\'\276\266\213#>\214\261\013\273\305P\241>\325\030\310\276\"3{\275J\200`>\231\'\026\276\272\300\375>Zd\241\275RQ\003\277\230\177\213\2761\264\003\276.d\216\276\361\003_\276\210\364\2768\365%\211=J\316*\276\257\252T\276\271\036\303\276\232\366\313\276Q\344v\276\027\031&\276\034\227\026\276\346\347\211>R~\243\275\031\266W=\373\022\365<7/\225>\036\234\341\276\237\022Z\275\010\002V\276\236\252\343==9\242\374\307\203\275\203V\374=\035|\207=\344\373\021>\260\343\224\276\207\305;\277\177\260\237<{g\246>\003\234a>\312)\352\2747\307\372\274;=`\276\253\032\237>\2046\220>?\237a=A\335\021\276\200\247\003=\354K\302=\245\343\020>\313\376\205>\376\033D>\202\260\177\276\017\001\026>R\302\243\276\205\352<\275\037\347\226=\307C\235>\331\346\226>\2077\231<\"\374\372\276\364\355\263\\\313\007\277\342\334\250<\356s\355=\216\r\227\276M\333\257>\374\0257\277\006h\247>\244^\251\274F\"\316\276\220\253\'\276.\376\004\277\214\307\364;\3221\031\277\371\213\277=h@\247>w|/\277:\213\036\277\246\263L>\377\021\220>\034\300\216\276\"1\032\276f\213\316\276\353\337\320\275\272\031h>\321\345W=@\372\316\274\231\031#>\327\017;\276\215Y\237>t{\241>\007\377\253\276\254\215\">\024\247\002=\273f\310>\'MI\277\2348\310\276\335P\311\276\371\276\306>\\\202\031\276\345\360$>\237\3107\276\305\241|>\205\250y\276\360\377\201\276\243\212:\2761\272\024\274\365\214\337\275:\027\005\276HG\316\276y\354\344=/qH\276\256\200\226>\364\017\213>K\274\351\276(\232\025\277\377\203\251\274\306\302\300\276@K\263\275}\265\346\276b\001\345\276\271l\245\276Y\332\270=p\332\301>\020\333\336\276\350A\374\275:p\213=\357\027\270\276^\273\343\275\347f\260>C\355?\276\201\345y\276\330\031\310\276\201oD>\nZ0\276\226\035\347\276\240K\255\276R\037e\276f\266\235\276\001\276!\276\021\033\000\276\371\325\013?\260\346i\276^33\276`F\007<\257\363z\276&JO>\325Q\233\276\312V7\275\323\270\271>\260\310\361\276\177en=$\206t>\315\207\006\277\252\232\010\277+\021\201<\026kO>\310\211\254\275z\312\363\276\215=\r\276\232\264\222<\014I\200>.\027\310\274\376\334\322>\n\274\313\275\332m\003=\301\206\014\276W\365\031\276r(\267\2750\225\025>\334\315z\276z3\273>B\204\336\275\017\004\211>\233a\214\276\346\023+\276\236\263i=\306Qp\275\311\317\026\275\310\221e\276\337\377P\277\331\3542>4\001\024=\250*\347\275\333\263\264\275Z\227U>x\243f=\231\313\310\275\235k\222\275s\247 =\217\322j\2757(_?\022\304m\276\217;\r\274\326\370\263\276oV\r\276\037\217&\276\255i\264=\217\016U\2766\275\355<* =\276\307Le\276\266\375r\275\357b<>K]\370\275\330\232;>\000X\321>\343X\'=\372$\000\277|)Y\277q\007\027=\223R\241\275h;\327\271Z\343\243\275\230\234y>2M\316>,UJ\276\247\234\010?\022\262\025=\240_\031>\365A#\272\017 \314=\244\371\213>\355\316\357>\267\266P\276\203\034d\276\325,\371>\261b\204>\303K\252\275u\216F\276\334\203\347\275nf\367\276\356\275\320\275\330X\215\273\260\020\031>J\355/\276\026\367:>\360\376\311\275\205\207o\276\\\202\343\2751\037\302<\343.B?\216B\216\276\231H\001?-i\252\275\310\016t<#\023\216\275\345!x\360J\202>\031\220\257=\240l\326;\307w7\275\336\341O>\341\025\002??\326\027\276\021\036m\276H\222m>\360\177\267\275\004\227\r>.>\317=ct\372=-Q:>\215\255\313\276\240d\261>T:T=V\273\366=\266=\355>\212\252<>\031\200\366>\353\305\254>\232c\276>kz\201>\360\2150\276\312<8>0\224\336>}\321\016>7\033\356>||\240>\360g\343>\265\360\302\276\266\315v>\r\345E\276\336\001+\276\177\034\305>\204\234T>\265+\207=\371\277\036>\326\3268=+\t\303>\005\336\375\275\257KL\276\275~\325\312FM=\254\"\225\274^\300\255>\273\324G?~X\341>\260Ys\276\374|\\\274%|,?f\270\373>^bL\276?\003\227\276-\237c>\220\362A>\274\376\211\274\037\321\260\274\374\252:?\246\000\310=\003\232\204>\221T\030?\220\255\371>\336\357\244>\022\032%=\"o\217<\212\335\226>\354_\231:X\032\224\276a\247\316>\210\212\341=\252$\245=c\201\245>1\302\201>\033\215\005?\244\200e\276\317\023\014>xh\017>l\357\314=\313\240\032=\3227\027>\263\004\204>\363]\226>|\354i\273\247w\025\277U\020\306>\2230v<\032\337\201>J\365\213>\363\321\006?\032\237`\276\226\234\330\275i\003\234\275Y\223\357\274\027v\241>\332_\003\2775#\334>\377\372\272=\313\304\313=\337\302\310\275\023\346o\276!O\033>\336\303\217>\351R\225>T\262\215>X\372\214=yo\025?\345\311)>H\'\222\275\353Cv\276\">\002?{\311\376>\345\263\274>xl\r>N\356\276> \2715\276\013}\010\276\007\304\217\276\335\t^=\346\225\270=\240\007\205\276-y\t\275\211_\376=\254`\314=uy\005\276r\207\213<(]\014?\266P\000>\365H\212\276\353m\211>\220r\010?T\351\361\275\250\370N>\260\352\377>\342YD=\376\214\335=\352e\224>j\254\271>\237\334\240\273\345\037\366>7AC\276\025v\261\274\332m\221=\';\255\275\230\364`=\032\334\313\275\376+\325>\353Z$\277\236\240\027;\362\227\346\276v\377f=\270\020\334=\314\277\216>\347\202\005=\025\016@>x\254c>\033[\371\275Dcc>\303\356e\276\306\"y>l\216\230\275\314\364\216>\264\360_\276\375\343\213>*Q\305=(\257\322:.\336\377\275\020\254\235\275\252\352\017\276y8U\276\274\364X>y\356>\276\3450K>T<\373\275\033\217K\275\002\234\366>\352\331\224>\352\007\302>r\007\313:\265\022a>\017\316\203\274\267T;\276!Wd\275\340\361\351=\251m\251>\265,\024>\300#\210\276^\307\207>\306\220\n>\342G\234\276\267\340`\276\327d7\275\027\252\267\276uU\344\276\246\026\022\276\274>\246\275\336\001c\276\266\242`\276\314\220q\276&\272p\276]\360\274\276\302\356\332=W(>\276\370\r\264<\207iW>\250\000\211\276\035\022\310\276R=\310=\205\260v\276\177e\217\276\322\334\021\276+\202\265\276\340\274\006\277\345B\232\275\020E\033>oT\024\275\267\235\304\276+]\366>J\"\036=yG\"\276L\226]>y\\\364=-\311\262\275$\362\223\276/M\305\276<\302H>\236DD=\232\204 ?2(\335\276\036\333:>sP\356\275f\021d=OM\363\276\223u\316\275\323\235+\276\214\001\233\275\271#$\277xz\n\273Z4m\277\221?\333=\250\204\247\276\245\006\026\277\240\227\345\276\035\177f\276\241!\005\276d\343g>\225\332\314\276r\270\366\275\346\220L\275\342/\305>EUW>gz\310\276\251<\250\276\247z\366\276\023\227\304\276\311\246\357\275\307m\351>\327\020\312\276w\277\351\276\"4\277\275,\212 =\332\355;\276\177i\033\276z\267Y\276\236j\027=\362\252i\276\232\327\347\276*\331\177\275\354\312\357\2765\244\302\276&y%\275\237\003\020<$D\225\276q\345\305>\"\341\024=S\3512>\207\353\215=U\\u>>\312.=\347\330\004?\230\203\205\276\311z]>\272M\033\276\3143\345>B\020&\276=\341G>\363\003\205>\345K&\276\343g\274\276\304\3778>P\230\250\274},\206=\260\203\t\277\271\265\221>\302\2040>.\3675=Q\220\256=\273p\244\276\214\301\210>\253c+>v\352\224>\010\032\r\277\000\260v\276\261\362\275\274\266\272\017\276\256rS\276\262\037!\276\337\021\004\276\014\263\323<\311\330\"\276\3119\311>\361\354\252=\344C\\>m\016`\275/\367\302\275\206F\354\276\311\354_\275\333\266\302=\364\271\244\276\036\314.\276\223\321\220<\334\324\005\276\322\214\372=\325\"\212\276\005\016\007\276\315\302T\274\352\376\002\277tA\"\276y0\n\276=\317\220\276\315\243\300=lf\224=\210\200\004\276\262\320k\277\254\r\264\276\250O~=\220\252\031\276l\305\205\275\370 \206\276\007\320\237\275\003\233*\276\036\370\344\275\327\036L\275\353\300\r\276\006Q\331\276\200\247:>\020\020\234\275@ut\276\347\344\346\276\263\240\374\274\265L\257\274\r\000\235>\000\300\345\343\275\226\227z>k\216}\276\2246\257\2768\314Y>a\220\314\275\244\233\005\276\276S\304\273\346\344@;Y/<\276$\001$\276\232\337\003>\200\365\000>m8Y\2765\214\206\276\235\010\035\277f\271R\276\"/\370\275\233\310}\276\002\247\252\276-}<\275M\034/\276\260\203\242=.\344\372>7\'\n<\215\376\006?\204?\322<\240\233\267<,\3557\276\336\221p\276\351\301\023\276\2129\217>$yh\275h\214\023\2754t\217\276\032\200\315>\355B=\274\'\3166=\263J\'\273\035w\242\276\"\035 ?Uia>\355\306\327>\024n#>\030p\016> t{>\243t\374>vN\321\276\205\300R\275Ft\206\275\274\365\360>S\325\000;\005\025\307>-\016\256>\354\345\226>\265\273\014>\346\237\202\274\237\256D=\002\tg>\267\271j>\227\003V\275\367\024\332\275\300 \352>\214r\016>\234\214a\275\336;\217>g\310e>\340%P:\347\262\201\275_\336\214>z\212x>\335\013\034?t\001B\2750l\034?\260B\r\276\302\0354\277\"a)>\326\203\257\275\336\222\003\276-\222o>\200(\003>9\220\304=\224\314\t\277\275{\263\274]\366\202>\270\332d>\227\257\010>\237{\276>\332-o\276\355j\356>\320A\300\276%;^\276U\226*\2765\031\016?5L\247> ?q\275R\376b>F{X>1\004\311\2747s<\276\276c\215>jn[>\007Ns>\242\017\330\275L\373\000=\200\324\377\275\372\177\210\276O\260U\275\210T*=-\010_>y0Q\276B\322\245>\355e4>\230\'\216=\343\231\277=|\032C>-\241\234\276\036H\204=\014\030\004>\210\242r=\255[*\275l\030\350\276\307m\273>\216|\020?O\376+>\345\314v>\n\357\314\275\033;\270\276\233\301\255\274kg\257\276\274\3354>\310\264\201=\010\302\013>\246\034.>\245\261\254<>\327X>\241\334Z>c:\202\276\344\343|\276\251p\014\276\033lf\275\\A\245>P\320\027?\r\3510>\347~\344<\277k\257=\272\234\353=l\3631>\217\233\253\276\035w\333\275U\206\266\276\3233\212=L\343\"=<\244%=\354\325\002>h\007\254\275\320\330\310\275\224\023\232>\327\237\r>&D&\276\027\353\255\276\246\267O>\225\027|\2764\270\017\2754\233\r>7\342\005?\260\314\002\276$\003\252\276\265F\023>BHc>\233s\335\274l\035D>\377\324\340\2740\026\370\275GI:?\302\237\t>f\200\251y\006\214>7\374.>\214\242\334\274P\250\247\274$\347\315>\326\343\306\275\247x\365=\204\372Q>7\320\270=\2772F>\301#%\277\r\0370\276\251\236b>\365\247\203\276\375\257\254\276\323\357m>\247Z\313=\317\253\307\276\014L\226\276)\236\334>7Ea\276\'?\205>/d\301>b\023;\276Jg\260=\205W\227\275D\363\223\276\020\033\366\276\223V?\276c\237\376=\302\334\000?\360\325\325\276\276\204\354=<\'G\275\241\364\221\276\210\211x\275q\307\206>rG\310>\007\314\230\276\363C\212\276g\342V\276\251\350\013\276c\342\367>\255E\211\276\331q\234\276q{g\276\210\372\255>\344\246\216>\321\027\014\276k\271\350>29\251>\236}\243>\203\037Q\276\251F\354>\260\204\325>W\006\236\2762\020S>\\@y\276m\356b\276\340\002\257\274\223\363/>*q]>.5\316\274E,\324\276\200M\331\275\276\234\207\275\3771\270\276<]~>\036t\234;P\341\274>\250\370&\2776\'\035\276\305\032\214\276\210s\271>h`\232;\265\346\340<\315\n\035>|\222\275\276G\217\345=\202\325\220\276\3355\265\276p/\024\276M\t%\276\024\273^?n\341\023\277\250\201O>\335\216}=\261\235\016\275%\336w>\266l\016\275Y.\243>C\245\274>\305\032\317=\305\312)>\006#Q=\027\225\242\276\037B\013\277\321\032\010\276\213\363\304>\262\237\303\275\335%\251\276\\\304,\276\345\247\276\276\366\233\263\275`B\322>g\350f\276U\336?\276\"&A>\n$\017=\374\264\035\277\177\245\t>\364\330\252<\303\013\252\274\314\304\251\276\355\032\320=\365\361\215=\277c\217\276S]\201\276Uu\210\2760T\177=\312\222\304>*\004\314>\217\021I?\361\310\000\276Q,I\3579\303>\030n\304\276\300U\311>_b =\271\266\200=\346,\276\276\326>\216<\032\272\236=\306[=\277\217\317\212\276\222\254\236\275\024\323>\276iL\256\276\306\014\021>\326\016o>j\"\252=x|\316\274\224\261\365\274\"1\233\274.\213\020\276\202\210t\276&g\351\276d\360`>\022\254~> Q\272>\367c\256\275\302\202h\276\221!\272\275U\344\001?\3777\235>\004\372Y>\005\224\227>\r\335v>IfI>\214\356\253=\326\237\363=~!\314={\3032==\027^\276\006_b\276\245D\002\277\254\266{\276\250\277\245\275~\037\217\276\0061:\275\325\264\022\276\005C\301\273n/_>md\000\277\326W\'>\260Y\242>Q[\226>\210}\002\277k|*>\\\016\243>cI\205>\371\221\255\273K\261\323\276?\031L\275\352\342\037\276\314\314\342\275D\336K>z\302\310\275\022T\325=\342\257\203\275\255\220y\276m\331\301=#|\246=\212~\216\274\243\242\266>a\324\032\277\347\031\310=W\324\206>d\374]\276\005g\024>D\207\021>Z\324\216>\226\260\035\276\326&\"\276\217\341\024\276|H\263> \371\371\276\201\016Y\276\244?\255>\204\264G> %\370=\006\373\244>L.a\275\007\366\261>\361\020s>\006\257\203\276\027~\370=\367\376\007\276\233r\324\276:\320P<\344\361\017\273SW\320;YlY>2t>\276\225\315\205\275c}\233\275o\374\347\276\251\231E\274\334K\362<]\215`=\212\333\243>\365\033\325\273\357\273\003?\337yE>\267\273\223>L\236\275\275\034\"&=x\202\202\274=K\272=X\371\232>\374\335\267=\374\250\016>\225\216\020>V\t\300>\344\337\346>=i\206<;\031;>\310_\257>\036\020\007\277\264/\206>`\206U\276\312G\332=d\344\010?\227k\204>\210sy>\246O\301\2744>a>\263\317\276\274\006\363\217\2764\006v?\024L\237\275\261\316\025?\324[\177=\234\277\351>]VJ=\010\361\203\276O-\206\275{\t\215>I\334L>\323h\204<\261\0304<\017\204\270\2753\336k\274\260\313F?jK3>P\030\270\274e\014\205=s\306\340<;\007+?\2346o>\273X\267>T\225H\276v\265#?\353\313\000\277X\262\002\276`x\203>8\250\333\276\0175\r>3%\014?T9\000\276\325\3765>\304\366_>F\324\365>X\r\220\276\351(&\275\260r\252>\003\006=\2767\202\353\274\223\333\306=\201\214a\276\225\253\017>\217\036X\276\006Z\034=\273Kd>\306\353\235\276]0\222>\275vR>?\321{\276U\\2\276<\261k>\262,\241>\307\237\234?\327\2077\276\001\321\303\276\2108\301>\355\375\273>\327\037\277>\261\376.>\210\226\220\274\252^F\275\233V\207\275\255\231\254=\364{\250>\355@\017\277\341\250\231>5\240\254=\272}\324=\373Y\272>\016\267\317\276\274`\201=\013\'\224=&\014\231\275\n\030\316\274\210\332->\350R\216>Eu\224<\327.\305\275x\205}>\311\013\321<\264\214\316>\034\271v>l(\t>\024\256\224>\375\\\331\275p:{\275j>\301\276Z\340\201\276\337\005\035>\237o\360<\240|^\276v\220\345\276\002`\035=*\305A>\266x\024>\257!\327\274&\315\000>\371\333\007>ym\022>\020\331\267<\2171:\276\'\352\006?\334+z\276\203\242\316>g\272\255>\023\035\235>\037C*>c\312\016?\273\324\035>\250&\375<\365z\367\275aR/\273\370i\211>\374\020\301\275\207\250\327=(/\306\276\202\320\'\276\262\311\220\275\311\033\210=\232\236B\277l\300\260\276\217x/>9\231\030\277\260Mc>\366\016\334\276>*\006\276z\263F\277\342\nY\276cY\277\276>0|\275\257\032\r\276\020Q{=\203\332\013\277\347\010\323\273{z\304>\256\375\275>\260vn> \2265\275\277\021\246\275\370\026\\\276!\344\000\276=<(\275\354\007,>K\271/\277R\005y>[\203R>3O\034\276\224\272\177>\212A\033>\256\276\036\275V5\232=\007T\031>\267d@>\204T\342\275\243\032\026\275\351\271Q>^\326\330\275\311\336p\276\254\343\033\277\362\225>\276\374~\323\275q|\323\275>e\016\276\260,\217>}T\312>R\226R\276\"\371\373\275U\276\244\276L\324S\277t\307\302\276\336\356\321>h\032\246>\271HX\2763\201E\276\231\354\244\276\234\314\337\276\253\364\351\2763D\375\274/1r=}.\302\2766\357|\276\333\253\356\275jOp\275\303\267\241\276\301@\033\277\262\027\217\276^j\233>\216\320\360>7\363\032\276\221\227\201>\3466\225<\215b8<0\363\314=\006v\322\276\001f\177\276\351!\326\274\036\235\273\276\346z\350\276C\223`>\307!\316\276\253\334\r\277\037\212_>\241\255\344\274\246\353\224\276\355^0\276\371\215\316=\213\360\363\275>Z\351\276\352t\326\276\210?\203>\r\313\003\276\326\226\365<\323\201\005\277\336;:>z\371u\276J\243d\276\333\344a>}\003\'>\340sH\276\013\005\337\275\333\2125=\334\373\354<\310E\201=\002os\277\334\224j\276p\216M\276V+{>\2040q>\240s\234\275.\270,?\312Y\316\275\257\032\255\276\2349\005?\374\031\224<\024\r\022\275X\024\225\276\237\205\001\277-!y\275\333\001\225\275\330,\267>\324\324;>\220\211\325\276\275\271\226\275sa\305\276\025\027{\276+\221?>\326T\222=\303s*\276`\367\321\276\366{c>\270\243\253\276\344\361\023\276\242\251e\036\032:>\303\256\033\276!\001\250>\321M\320\276\r6s>3\200;=\212\220>>\2044\t;\343K\206\275 m\355\275\236\267v>0\021g\276\337Ky\276\013\220\013\227H\351\276q\235\334\276\252\211\200>\002[\340=\271>\315>jT\n>1\314q\276G\0148>\253\010\031\276\026\345b>\026`$?\014;\266\276\202\013\\>\326&\346\273\206 \311>+\307y>\020\263\003\277t\331\215\276L\007\211\273\225\236=\276\373\232\336\276U\030\210\276\260w\303=\221V\316=\252)g\276\361\365\273\276\304\226x\274\302\331\222\276\350\024\264\276\307\036\033>\005\'N=\r\241\237<\336\003\346\275$\335\343<\031\010D\274\335\352\025\275B\244\227\276\217\324\345\275\265\234\326<\225\320\034>ppE\275\306h\367\275\270\302\321\276\347Qm\276\025)7>\374f\027\276x\2118q\323\024>\217\274\237\276\345\326D>i\034\300>rR9>\201\030\265\275;rK\275\030\325\222>\353h\211>d\221\327\275\311\233D\275m\237=>\016\333\276\275\322\360\353>\332\212F\276\255\3477>3\351\201\276/\224%>\315\351;=\272rT\275\354Q\225\276\031\253]=|\311\036\277\325m{\275\2317q>\031\345\036\277M1\214=\002\346\t\276\006\246T\276\014\310\207>\223\021&\276\303\037\'>\346\223\213\275\220\370\376=\315$i>F\033\250\276\362\342\373\274g\007\237\276\272*\321=\037x\354\276\271\254\304\276@\370\220\276\345\t\031\2769|<=\277\205y\276\214f\346\276\235d\221\275\372\033\251=z\3377\276\235?\027\277.\337t\2759\3706=>\273\260\276\374b\217\275]R\030>\250\r\033>\307i9\276\2446\027\276\234\251\226\275\301\326\343\274\266\374)\277\276LS\277\244\247\030\277\306>\266;~C\006\277z\351\253\276\t~H>l\304\232\2753\273\006;?\242\267\276\273\253m\276}\344$\276{\341\376\276G\030\003\277p\345\247\275\217]\004>F\210\213\275[\324\347\2767Q\026\276\331\2013>\327\007\272\276\213W\023>\364n\016\276\275\375\232>\343w\300\276\306\n\353=q\314\214\275nS\370=\006\227\333\276l\0379\276\226\340\265=\272)(=\221\341\233\276 \3058\277\367\177u>\367\2656\275\022b\320\276\003\243K\276r;\355\276\332:\334\276`}\247>\225E\177\276\353\207\032\277\030\223S\2762u\\\276BY\247=k\002q=\200Q\201=\3556\203\276\\\262\013?\343\314\363\276\356R\030>d/\374=x\0219\277\2536\304\275`\333/?YD1\2774oU\276\367\362\240\276\206.J\276\254;\026\276\232\220\014\276\024U\364\275\013h\214\275\221\216\260\276P\321\006\275\226\253p\274\377\254\246\276\262\r\266\276\361\370\232>\354\227\250>QV\333\275\1779B\276\254\215\377\275\231\361\020=\324[}\276\013\235`\276\362\204g\276\0101\200\276\347\236C\276\300Q\270\2767D\275>\373\354w>\321\321\262\275\363~v\276p\311u\274\t\036\344=] \036>/\300\036>\320_\236\276\260\372\202\275\370B4\276OsU\276\342U!\276\3679=\277\010\251\267\276[\204\037\275\202\231\323\276V\000.\276U\'i>)a\311={\206\344\275Ck\263\275=\356)\276F\275\254\270\302\036\313\276\347\317\030\276\344f\303\276\252\017\234\2766J\035\276\360\302m>!\343\333\274\2663\233\276\340\331J\276v\347T\276s\225\315\276\227<5\276\r\277\260\274\241\234x=\322\377q>\344\032\371;\223Q6\277\250\313Q>>\301\242=zX\345\275\276\353.\276\261]\006>\2001;\276\353\366-\275\177\244\016\275e\215w>\t\223\014\276\344\237\001?\363\244\000\276\333\201`>K\022\210>gR\204>\206\223\326\275\002\376+=nv\203\276\317\364{\275\213\"\217=\035\003V\276\035\231\221\276\034\367\351S\226\274\276\230\257,\277\036\320\354\276\275\362\275>\260\357\305=\371/\233>ei\034\277\242\251\003\276M\252\224\275LP\353=\326\235\322=\\6\203\276@#$?\310>\221>\003\226\302=}3\342=\321P\r\277\020\312M>\227]\333=\362{\016\277\021\241\230\274\326\007\"\277\362Z[\274I\037\311\276*\231%\277\354\020\022\276@\376\324=\2540)>\276\252\275\276a\250\265>\355\212@\274\371\241u\276k\030\024=t\316\363\362o\312\274\022\260`\275/\315\331\275S\274\261>i9\014>\2274\232=\372\332\344\276\206\264\210>*\363\005\277\324\242B\276\263\'\013\276L\370(\276\274\350\254>1\017\216\275p\375R=\307F\006\276\020\343\370\275F\247H>3i\375\276\366f]>\346\'q\276\371\347%\277d\233\360\274n.V\276\023\356\007\276\217\346[\275\367A\223>7\330Q=}r3\276G\263;>\267R\237\275\241\2051\277\242\217\017\275e \214=+?\237=\313\206\304\276\024\\\002>\024.B\276fL\201>\375\207{=\236\311\247=\223\2048\276M\301\204=\203-N?Y\256e>\366kX=2HW==\272\261\276\275\207\221\276\213\016\347\275\'\016z?+\204A=\035\277K\275\306\"\206>\214\206b\276\014\016*\276\323\233\217\276\237&\232\275\232\371\342=\021\020\215\275\313\017\274\276a\356\300\276\021\236\000=n\252\336>\227+\257>f\275\205>\\7\304\275<\344\203\276\365\014\177>&\355J\276\214\251\006\277@\340\216=n\274F\275\265\231\315\276i\273\r?\270\254\325\276M\342\250\273O\036m>\010\354]>\267\244\350=\326~\374\276\034\037\014\275]\362\255\276\224A\023\2769\026~>\210;t>]\214I\274\033\005}\274\223I\016=C\311\270=\357-u>\n\215\261=X\3243>\317\326\221\276\250\332\276\275\331_6\276\332\343\355\276\250\347\004>O\024\244>N\203\023>u\3117\276Z\010\313\276\367!\t>=<\006>\034\236\246\276\333\033\220>\373\'G\275\337\035*\337\204\275\237\203\334\275\240c\235\275\327-\021\277f\327\354\276\275k\341\276Q\354Z\276\010a\206>\217]\363\276\033\245\342>\177X\371\276\247\327\024\274\240\250\355\275\351\331\245\275}-O\276v4\202\276\020\304\037\276\356>\243\2756O\203=\344z\014=\014L\347\276L\271\200\276\237?\266>\\\312{\276\276.\226\275\325<\r\276\325{\273<\037\365|\276\215\300f\275\3651\010\277v\024\334\276\230\231<\277\375SX\275\'\026\330\276\032n4\276\024\345\305>\343\2374\275\024S#\276\233\323\370\276\266c\004\273\027\024d\276\240qP>e\340\331=\277:D\277\216\352\"\275\346\276\332\276\271[\013\277\36404\275\\X\372=\0167\213\276\223\223\251\275\207\346\217>\266k\275\276\000Z\024\274\013\213\373<\3555\r\276\252U\344=\255\001\033\276\006\2639\277IH\000>>l\363\276\305;u>bPF\276~\006\027\277\343\325e\276\321x&>p\000\366=\344\275\364>@\017\321\275vY\251nu\312\275\325\311W\275\004:\035>a\271=\276\344\260&=.0%\277;#\253\276\252EZ\276|W\\\276\311t?=\0261\221>\372r\006\277\025\320r\275\230\330\022>\022pk\276\375\254e=\324\341\315\276\306N\030>\025\352\201\276\252\217\252\275l\307L\275 L\336>\246\374\365\272\205qu\276\317\265\351=\356\234\262\276\205\312\300\276\007Vk\275\374}\242>\036\314E\276^{\247\275\331|<>/\355-<\302\265\217>\276^\245>W5\236=\026\276\271>\253\000A>\337\273\344\275\203\236\215\275\347\n\330>\265c\032\276\2770\326=~L\241\276)\304\005\277\022\010\267\276I+\267>\223X\035\277\274G\263\276I\3432<\251\265l\276\330\207\350=\231s\202\276\035\355\024?\225\330#>\237\240\010>:\305\013\276\036\372\227\275\340\322\202\275\365\356\303=\277\033h\276\270a\365\275\317\345\355\276\203\207\240\276e\207\217>\336\237\036\276\n\204S\276%Ck>B\254\241=\212Yq>\374d\317\276Or\373\274n\221n\276\023\256\334=\265i\">\311\0276>u\224\230\276\317:\034\275f\337A\276~Y\356>g#~=\232,;\276\346&(\274\001\200M>\231\263i\275\003L\264\276\346\224\256\276\\\273(>\021\306%\273\201\025/=p\025\315=\016F3>\371\241\203=\327\035!>\211\210t=q\355\363>Y52\276i7o>\177b\377=\375\267\205=[\275\245\276\020\211\024\275oqV\276\226\227/\276\347\306\260=\357*\016\276\331\275\255\276M)\305=$@\326\275\014\361\237=\016\022?=\027\274\252\2759\346\031>\030\353\206>\222\347\021\276\303\315C\275\373\302\233\275p3\321\275\373i\236>\2243\253\275K\037@>+\227\'>Y\023\351\276#\211`>0\214+=\202=\377=\274\013\266<\200\232{<\000Vf\273\300P\266=<\352\023>\336\001\023\276\274\251\341>\024\324\235\276\253\360\326\275\322&\227=5\240\224\276\256\206\240=#\370\r>\245\304q>\225X\267\276?%\211>6\033*=\256\353}<]\206\202\276\272\005p\276BM|\275-\221\237\276v\275\230?\202M\266<~\260\257=(\353\373=\374\003\366\276r\305\212=\311`\267<\320\322\304=X\261S>\370\253X\276JY\213\275=F\032?0\340{\275\270Cy\275]]\235>d\337\352>P\027?=\322\334\317=oK\345;Wae>\365\030\243\276\225\324\277\275\023S\271>i\277u\274\356R\241=\233\270\017>\242S\342>:>\211\275U7$\2772+\025?\3754\355>\202_\010>\360W\356>\205\2332\276\335O\013?\367\321\003\277\306t\374\276\322rg\276\241R{>*\217\241>\030\212d?\237g\324\275\331SU?\222\3657\276M\027\323\276\333\202\267<\337\305:\275\266\377\331\276\2100i\276\243x\200\276E\310\377>\257\241\233\275\300\230$\275\347\202\235\276\246\023\n\277\356\351\000>/]\254>\371\210>?[\370\327>\261\014\263\276\177\241\034\275\233\255\370>^j\237\275h\024x\251\255U?\265l#\276\361f\257>0\266.\276r\003\246>0\272\245>\276\027\'\276\034\324\244>\314\244G\276I\206\232=\030\035\007>\223\035\210\275\371v\246\275\000n7>\331\230\343>\315\350\260\276\211Xy>\275\0249\276\016\236\006\277\027l\305>,\361,>\027U\017\277\024\307\223>\311\260\002\277\304\216\343=\272q\357=\003\350\322\276\223j\314>\302R\213>^3r>\253H\344\275 \006\024>\300h\003\2753\344d?\020\263\034>\272/\272\276\2269J\275/\236\226\275n3?\274\261\200\357\276\257u\032\276lU\002?R3\226\275p]\306\273\372\ne\276\336\246$\276\2331\366\276E\231\226\2767b\322\275]\271{=:\273\371Z\375\013?\032\204\016>\261ES\275\226\245\305\276]\253=\276+\324d\275\301\236\327\275\243[I\276\222\246F\273\342\266\207=\000K\250>\004\1771\277\323\363\000\277vmJ>W4\265>\270\210\344>\243M\313>D\331&\276\312\262\"?Q\371@>kX5\277Y;:\276\340m\267=\214FJ>\n\245r\275\337\343\021>9\261\205\2767\000\312\275\177.\377\275f\000\205\274\024\331\211\276\263\206j\276\220\004\220>\217\001%?\275\343\266\276\215g\027\277\227\032\334X1\301\2761r\036\276\t\276\255>\363\253\272=\232~\300>k\\\026\276\367\365V<+\"\370=,\373\004\274\340\034\202\275\021\212)>\254J\355;\322\263j>\005\316\355\276w\301!>\243\316\325>\255\333\325>C\333\013?Q\220A>b\271\322>\\\251\220=\022\006z>g\256\373\275F|0>\246\265\231\275Y\206G>\301\374u<\347\206<\274 \331K\276\240\220\350;\345\233\026\277\355\226\246=M;\001=\027\020\323\276\331\365\014>\001~\204\274,\013\316\276\t3\226<\274*\006\276\207\005#\274\232\202\302<\371\260\213>\243K\213=?v\324;\342B\010\275\243:\246\276\375d\344\276\005\240\230\276*\304H=^\324\201\276\000J\006\277\221\031C\276Q\210\r\276\027\224;=\270\233\375\276\\\370\250\276\266\224.\276\302\203\203>\374K\026\276rC\006\276\317S\343\276Wa\343\275\365\317F>~xA\276Lmj\276s\373\350>\252\257\253\275LEA\276\372\027\245;\363\005\336\276\014\004\022\274\241\221V=\204L\305>\351\004o>J\334\026\275\331\354\325\276\364!\257\276d7\210\276\257L\340<\230\365\304=\251\324\321=k\\\261\276\217\353\020\276\250\211\031>\232\220\016\277V\246k\275E\327\242=Q\212\261\275\355\026\224\013\223\257\276\363\037\234\275\205\234\373;\007x\357\276k\301\244\2763\330\034>\2704\254\276g]\021>\345\324\035\275\031?\363\276,\310e=\305PR\275\211-\336>\364\260J\276\234\372\323\276\232\227\301\276\234\003^>\330\2776>\255\201\322\276\204\363\026=\307\341$\275\374\302\227\276\237\367\344>\200\022\013>\302\260\031\276P\250\265\276Df\276=4]j>\274\326\021\276C\373\240>\217\0039\276\207=\001\276\254\203\266\275\3301\036\277\266\211\341>>\342X>^\0005=s\213\'>\2478\253\276\340\366~\276\201:\251\276\213\022o\274\324\344\346\275#\342\251=XP~\276\223&\266=]\203\225\276\326\325\016\272\004\303\230>\246h\301\276\3323\014\277]\253\377\275\310\256\021\275~\007\202\275\206>\232\275\324\277\302>\004\001\353\276\236jh>\263+\305>U\210\206\276\007\367\332=\004\\A\276}\005\006\276&\335\234\275r\306\211>\302I]=7\225\022>\0246\200>\332\033\223=\315|P\276\210\240=>\266E\275=\243\002g?\325p\216\276\332\340;\2750@p\275\247\177&>d\272\254\275\361\304\307>\2762==`u\374\276{\200\244\276\001_\315\275\376p\301\276=uj>\346\002\332=\204\035\272;f\2313\276\212\271}>f\346\275\276\004\302\314\275C\007\333=\257n\006\276\2259\210\276\027F\274\276\264%\204\276\236\266\271=T\361\202\276\253\327\252\276\324;\020\276\352~\261=\322l:\277!\212\223\276\276!4\276\343\360\177\2760\"\037\276x;\256\276\355\354\250= \356\000>=\274\354\276\225\032\312\276l=\007>\\\003L\276m\367\220>\277\272\353\276\354nx\276\323\372N=\301\315=>\200\314\356\274\342\016\344\276A}\317\276\030F\254\276/lF>\250\246\027>\204B\334<\0376\373\276\023\177\211>\205\014\340>\233q0>\232\325\304=\372\212\365\033?\204\323\345>\261\'>\274\372\037\332\275&\222\225<\246\267\251>)\253#\276\254\022\004\276\223\257\377\025\217\216=y\345\211\275\256\330\314=c\037&\275|\216\204\277_\301\214\276\311\n\266>G\301\006\277\376\014\036>\030k;\277\203\310\355=\245\235\005\275\002%\226\276\326dc\276\362\255\017\277\242\020\372\276\222#O\276\212Ti=K\210Z\276\021]\014\277\201\203\022\277\372@\235\276K\241\030\276Y[\255\2760\245\325> \214\217>\016\223%>u\324\"\277R\r\373\275\006\024\265\276\272\2312\277\220\001\265=>\314\024\277\347\210\317=\377\013\372\2745C\255;\357\242)\2765$\000\276\277\320\374\276!{@\276E\360\213\276\275\201\253\276\300\364\237\275\023*b\276\022\355\216\276\246\032\222\274M\220\211\276l}\017<\351_/\276\347x\034\276\037qM\276+\375\332>p\t\033>\203[\233>8\370\031<\212\t\311\275\321\215\340\275o\356\335<^\t\227<\254\2724\276_\235\364\276\252\020\245\276\253\000\202\276\3473w\276\260\222\227\276\336\206\227>\020\t\342\275\241t\343\276H\351\366\276\256\306\226=E\330\256=(]P\275-\254!\276\311\003\330\276\031l\366\276\225\361\335\275\234\336(>Lj\220\276\241\366*\274\235\2725\276\313\036q\274a\212\270>\210\251\010?\223\032\023\276\271\371\037\276 r]\276*\300\031\277\035cS=\305*\010\275\000\367\t>\343\235\002\277{&\314\2761\264\177\276\203|f\275B\266\350=3\362\364>\014T\225<\313\352\275\275\r\206\263\275\to\004\276$\'\004\277\271\250\277\276j\022y\276\004O\314\274H\351\027>SZ\215\276ns|\276w\252(\277\356\220\217=\375\177\347\2767QO\276\370L\306\276k\006\276>\234O\005<\372_\033\276j\206\312\276\330[\254\276\377\301\253\275\353B\215\276}4,=\010\330\251<\366\353\367=\n\034\307\276\020\235?>\225\017\022>\332\241\305=\3352:>}\230\027\276\255\002\245\276[\254\264>\017\254M\277g\333\n\275_\306\230\276\303\251\234\275\370ig\276\204\031\260\276(f$>\3173\377>qB\261\276\265R\005\276\005\255\241\276*\\\317\274R0\036\277z\001\222\276\247R\032=\353mU\275\331\213\013?\355\0237\277\343\332\'\274\010\006n>A\341\210\276\207^`\275\255$*\276\026Q\371=\354?\330\274,\312\312\276\'\345R\276W\270\217\276\211p\307\275\222r\247\275\320a\217\276\037\330\337\275\255\213\260\273\276e\300\275\\6\256;\025\251\266\276J\003)\277\242$u=i\252\335\274\300\\\r\277lZ\035=/\330\240=@\325u\275\340w\302\275\222E\030\275Z\225\254>\303\201f>Q2D\276\233\236/\276\314\356\250\276\260\263\225\275\241.\360<\032\304\020\274\203\211q\274R\010\265\276\346\225\364\276\315\331\313\276+Q8>\340\203\r>R\342d\276\020\'\350=:/{>\351\032\267>_9Y\276~\333\263=X%\255D\004\333\276\363\263\212\276_\3654=\367\022\013\276\377{3\2764K{\276\331\000\232\276\032\344\377\275\014F;=\023\235\322\276Je\034=\021(\"\274v^\200\276\261v\n\276\212>\013\277\026\271\256\275M\272\026\276\214\216+=\3405\331=\362\243\256\276\235\355\031\275\236\222(\276\307\270\276\275\221\251\300>\237\275\234\276\226!-\276\221\246\223\276\316\344\363\276\201\201B>\003\252 \276&\363+\275!\251\203>K\271$=\272\257\255=7\234\020\277\005b =\036\221\206\276\254\335\334\275\22462\276\260|\200\276B\000\007\275\203\342\227\276\020\2376\277&L\204=\"~8=\016Y\343=\016\305\321=\347^T\276\200)\212\2769\223\370\276\355\272|\274:\336Y\276\330\277\237<\2302\r\277\201\032\016\277c\3570<\233X\251\276\006o\n\276\022\\\202\276.\377\261>\361\313V\276\014\272\017>na\334\276,\031;\276/a\361\275\326\344\025\277\302k\020\276\267\271\256>?\004\233\273\010Y\270=*w \275\317\347\033\277\363Jt>\020\343\326\275YS\235\275\240>t\276\344\241\202>g\217\232\276t\322J\276\224\257\034?\313US>`kq\276>2\261\275\375\306:=\354\014\004>a\210\217\275\271\356%\276P`~=\225\022\231\276\020\270!>\317\0163\276\361:\034>\260\301K\276\032\245\252>\344\263m\275~\001\352\2769R,\276\315$\214\276\023\271\332\275i\212\255=\300j\313\275T\021\203>_\003\"\276Hw\341;\267\365.>/E\261\276\213\007\032=\207\221\r\274\206\340\316>\356\243\242=5\346\234>\204\225\304;\244}\217\276\255Y\273>O\'\037\275\221\305\221>\351\373\250\272\276n\304\276e\324C>\254\000\336\275\343\013!\275\326\230U>#\220\245\276\361_\003\276k\376\321\275\323\"\210\275\315{S\274\006\004\212>`Hw\275\226\222H\275\031\333\263>\025F\264\276\252\357\004\276s\243.>\002W:\276<\300\023\276\025(\223\276/\003\317>\305O\313;\354?{\276\033\223\266\276\t\265\372\276o,(>\343T\336\275Y\030\300\276\275\022?\277\251O\t\276*K\311\276\007X\322\276=3\311\276 \347\211\276\372*\273\275\371\211\200:\354n\352\276\243\330#\277\003\354\246=\30498\276\211\363\342\276\363\220\225=\244\221\031\277$\307\204\275l\372f\276-Uh\275.\234\266<\200\362\303=\0231|\276\221m\252<\333\376\220=2D]>\265<\245>\273\371\231>5\265z<\366?}\276\251\3053\273\324i\001\276`(\347==&\205\276\223\014\240>[Y$\275\345c$\276i`\244=2\213\251;\320\037\303\275\020-;\276\333\233k\276\303\207\217\275\320-\310\275\271<\217\276e\337R\276\275\3459>5K\\=\373\204\304\276yK9>\316\317<\275X\215.=\377Yl\276p\006B\275~\3606\275Q\031\262>ik\204>DU\234>\177\262b\275\250\027\306>\377\331\007\276i\231\004?iV\350\275\234\274\322\276^\317\325\2766\207S>\367#\033=9\260\241>\257}\027>\363q7\276\335Z\213\276N\177\342\275\341\230/>\205\3012\276_\375\030\275\317\330\344>\030:!;-\331\312t\315\010>\212aa\276\021d\037>{S\216\276WR\214>1j\030?\307\'\311\276\225\024\210\276$\333\311\276\306]\230>\215\270|=JU?\276\003\303.>v\2011\276\272\316]\276\261W.>\3021\316\275\277V\202>\340`\250\276\242\033\351\276\211Rl>g\220\217=@\\\234\275\365-0?\276\027\322\276\220\203,\276\304\rr>\322\207G\276\350\343\234\276d\356Q>z\220\361=\355\036\316=\316\233\002=g\025Y\276\227\247\366>\354\026\355=\317\223\247\275w$\010\277\277\262\243>=\375\231=*\026\324\275Z\320\010?2L\024\277\334\345H\276\300\213d>6\300J>R?\036\275\315S\250\276\210\236\031>\tWX=!&\003?\002,\217\275\270b$\276\257>\034>v\362\200=\357\220\263\275A\275\215>:\336\033\276\245\353\212>\245\014\331=s8\203>F\275@>\316)\240>,^t\276\031\241\377\275\310j\254=h\363I=?\263\361\275XKH>\225\226\271=+)\r>\336J}>\374d\347\275\250K4>\201\233F>To\030>\024\033\030>\320u\265\276\377\202\014>I#h>\203\203N\275D\301\334\275\314\177\276\273\263\030>\276\244W\260\276\334j)\275\333\215d>\264m\325\275\304\331q=n\343\206\276\336K\207\273\205\225\362=\271\'\321\275(#\244\274\n\364\261\276\337\361|=\364u\246=`C\003\275\2479^\275\213\351\243>h\032\024\276\375\373\305=s\234\233\276A\262\201=\301U\331\276$}\207>\203\216\205\276\213\373\266\276<\003\207>kL\202\276\202\251\361\275\031\303\243>\001\373\371=T\350\305\276\010\304\320\2768i\032\275\250v\350\274i\226\373\275\030\302\303\276\345\370(>_\247&>\265\344\367>ku<>Q\255\246\275\010\014>\276\377\026\037>L\037W>W\307\301=\020k\352=\177I\250>\352\214X\276\270\334#>\344\202\321=ry\021\276HO\270=\"\025\311\276\301\337l\2764\201\366\276h\301\266\276\336\020\200\276J\303\204\276\3269]\276\221!M\276%\221\037\276\261\304\327\276\203\273\363\276\\\205\252>\253F\311\276\236\304\034>\240\017\257;\236\302\236\276\267|\271\274\353\re\276J^\212\275^\025\201>~\272\025>,F\304>Z\241Q=\234\2356\276\227\250\212>$\265{>\002\227\221=0\r\357\276\250\312\r\277\223\226b=\007\232\367\276\365\230.\275__`\276\204\017\020\276H\267X\276>I\223\275\257\\\217\2753\275K\276\245\3555?\013>\320\275B\352\275=\3516]\273O\331\250\276\360\265\347>\253\305\215=i\205`\276s\031O\276\246{)\276o\274\317\275 \0168>\032b\t\273\267\331\362=\244>9\276]\375.>Eb\204\276\371\275\323\276S&u=JU\334\276\014\362\370\276\017+\206=g\270C=\002\024\230\276f\037\247=\220E\341\276D;c\277\340\002m=$\037\177>\035\n\017\276\234z\304>\223\354\351;qbV>\222+^\275\037\273 >\001\274|\276i\376,\277A\021<=\251\353\217\2763\210\305\276\345Q\006?\336\315\220>\251\261\257\276\'\271\240=\224\256\325=\217\035\236=\343a\214\276\207u\370\275@\353\240\276\'\002\333\276p\201k\276\256/U>\177^\\<\311~V=\305\312\376\275\243\230\013>mcJ\276\207\237\265>\203\265\357\276_\345\333\275\255\333\346=\244\232.\2763:`>_#\026\277\303\226\315\276u\351\021\274\321\235`\276\377\024^\276\260:\t\275\002|\227=\036\014\003?\272j\002\277P\033\304<\267*t>\243\236\021\2764t\226\275r@_>\347\030.>:>\252\276~\355Q\276^(\036\275\t\362\204\276E?\340>i\003\022\276X\033\251=d>a\276\344`z\276\311}\024\276c\305\346\276\343h\004\277;\024g\274&\203\320\276\023\303==b&T>\265\205\305<\222\324\340=[xI\275u|\360\275/\321\\>c\232\262\275\357\376;\275\373\r\"\276,\016\005\276\342\371\257;@\024\330=\034\251w>\252\262\224\276d\307y>\373\006\001\276\223/,=\330\302\326\275\311\2413\2762\332:\274q\221\362\275p\\d\275X\201\327\276D3\334\276\360\240\317=.F\360\275\212,\202\275\203\010\022\276S\244\241\273p\305\211;<\2248\274E\\d\275J\223\241=o\002\031>\235>\371>\227J\210\276j\236I\276}\342^\275[\035\t\276S\360[>>\330\207\275\317\345\277\276\340r\242\276\017p\242\276D\373E>\023\330<\276\213Q\201\275\331\225\355\276\310d\352\275\010\326\333\276\001\t\200=\267\003U\276\232\241\305=\312\275\301\275N\177\224\274\001\330\017\276?t\216\276\371\253k\274\206\277\310>)=5\275v\211\372\276\245aa\275\203lX>\236\271\253\273.\321/\277\'|\t\276\332\347Y=\272\036a>Cqf=kj\205\274ZV\004\276n|7\275B/a\276B\306\346\275\253\357p\276\004G@>\336/\361\275\236W]>\tN\016\2773\236\351\276\242\031\014?\316<@\276\t\332\030\277\224\254\342\276b\020\311\276\276\253)\275\363\3237\276),H\275\355\322\'\277\006\347\337\276\323\325\030\276H\3343\277\311\202\020\277L\374j\277\240\306\021\2768\372=\277M\230B\277\305\371\261\276\216\241\243\274\027:\016\277\2436\273\276\273\213\014\277\021\366\021\277>\367L\276\202A\010>M\177\314\276j\262\'\277b\2551\277\024\336\006\276\306\030\030\276\364<`;O\1772>\34216\276\231\374X\276\266\351\036>\010I\312>\224\313\003\277\347v\352=\367\026e\276PT\302\276\331!n\275!\267>\277;\r\311\276\304@\001\277:\372\355\276.aV\277\206`\026\274\344\237B\276\331\005\303\023=_A\313\276\02213\277\334\250\241\276\324n\004\277\347\017\351\276a\326\354\276\235A\t\276\313\032\022\277\344\006&\276\316\221;>\"\355\337\276\t\\\r\276lMU\277\\/\212\276Q\344\325\276\312\345+\276\213b\300>z\371\n\277\204\t\211<\3403\301\276\266N\246\276\310n\323\276\353\016\240\265\'\206\276\216v\272>\240\030\345=\325\227\330\275\3566\311\276\204u\032\277\320F>\272\222\334\323\276\333\022U\276\231Z\365\276\261\237\031\277\200\340\266\275y\026\207\2770\235P\275\223\346\003\277=\322\026\005\237\227\276(&\204>\002\003\001\277\352_\237\276o*\322;$\2648=\010\365\210\274\n\336\254\275<)L>\031\270\330\276\346\243Z=1\2540\276\372\022\307\2762\353;\277\r\271\207\276{\230I\2767\326R<\r9f\277\323\240\260\2763k\r\277h\336#\275\216\177@>J\261\363\2763*\234\276Z\237\210\276o\254\\\276\356\326\237>\r\272\335>9\226\212\275\003\221\343\276x\312\200\277i2\355=\233\272\014\277\345\224*\276\245x\233>l^\236\274\035\257\006\277;\000\245=p\303\n\276XB\336\274%\300\320\276$\010\312\2768\202\331\276\307S\203>\035\3333\277\317Q\201\276\366\245\261\276\036\216k\276\270H\266>\025\321\314\275/\024\023\277a\377(\276\344\357\002\276\031S\243\275\024\275\355>\376V\363\276\305b\003\277uX,\275\036\213g\275\3662\345\276Wj\340=U\314\276\276W\2002\277\225bo\276\337\031\256\276\237\016G>g\"\257\276\017\317\001\275\241\353\335\276/\346\316=\365\253\240>\333\222\237\276J\"\310=i\350\210\277\232\266\210>O\377\007?\320\251\347\275\331\003\026\277\322,\220\276$x/\277\177W\225?\271)G>$J\271\275\243H\220\276H\277\024\276\244\337Q\275=\356\374<\321F\002\277a\364\305\275(\2210\274\214\372C\276\253\370\007?\201-\351\275H\312\255\275\033O\001<\023Y\312=\035B\251\275M\324\214=,\354\256>\215\234\214=\326\0346>(\250\352\276\202]\r=v\240\345>\007\005\340>\007w\312=\2516\274>b\033R>\021z\005?\002\013]>t\225\370=\257t\231\275\345\226\367>\322\220\247=\243\201,=/R\343>\253\025\225>a[\232>|\304\227>\364\340\033=\331\026}>\034\247w=\312\216W>Z\200\366\274\243|\211\276)\321\354>j\342C=]\032\226\275\025\200\205>\313\215H\276\317\352$\276\272e\264>\034o!>`\331\224\274\206\335<>\210T\315>\\\204S=\355^*?l\376\027?z\346\325:\035^\263<\233\220\226;\316V>\277/\000\013?(\225\017?\342\371\212>j1<\276I=\372>\020F\201\275\2060H?k\220\201\276\'\245\033>\352\330\312\274#\201-?\003\261m\276 \316\316=\260~\213>\240\235\017>h\240\354\276t\372E\275*\324\237=\220\rO>n\242\277\276\027;\302=\373)(\337\366-?\033\000\205\276\334sw\274\373L\216>n\312\367\275K|\261>\363\310\217\276;\371\001\275\202\330\265=\310}\333\276\177g\207\276Jq3?O\006\005\274\026\r\212>HRY>-\017N\276\360\376K>n\016\253\275?T\311>\366\342\267=\346:\246=\023-\217\276[\257F>\360.\304\274\234\246\271\276-\246\342\274\307\020_\276\243\355\323>[\245M>\376;\206\2767\377r\276\227g+>Y\3545=\354f\017\277#J\r>\030\275\272>\n\2352>\031D\206\276\r\024\214>\310\332\027=\177\\e\276\000\267,\276\026M\273<\314\322\203\275\347\353\261\275\201\273>=\003\300<>\234nb>g\021\035>\022\356\275=\302j\000?6\270\265=\234w\357\272\025\207\245>\246\266\274>]+\245>ub\007=)\201X>\340*\251>\224\211\266\274\374\275\035>\357)\276>\241\274Q\275\374\275\370=q_\222>\301\034>>\331\335p=r\177\273\276t\3274>\r>\212>\277\314\354=\360\272\260\275F>\177>\307\365\037\276\n\030\230\275\215\210Y\276\275\263\335\274O\310\343>\270\237\225=r\353\247\301\007\314>A\005\303>\034+\301\276\034j\266=\035k\303=j\212\000>\267\204\317=\316\036\255\275r\037\253>\262\242p\276PJw=\"w\200\276\262\344\226>\374c\204>.s]\276\025\323\364\274:/0\276\327\317\327=}\310\304<\222\274\005>\033o?\276\313\343:>)\341G>-M\327> s\374=\363\026l>R\203\020<\271\"Q\276\300WM>s5\207\276\376Mt>\303^h>\002\243\226\276\037f\221\276\021s6\276\262KC>\206\335\351>&\026Q>\273\014\356=9\000\253>6\r.>\344\237\000>\244\221\210=\252\271\307\276\355\235\246>\372K\302=\343\336\301=\321\020\203>\321\240d\276p\211p>\365\351->[\306w\276\016\357=\275\224\203e\2769\367?\276\267-\271>\247\220\032>\357}\362\275`\033\376\2754\'#>\'\347\240>,\307\227<\0254\261\276\240\341D>j\377\010>\245%\357=\216\203\340>;\367\276=\250\370\002?\200B\343\275\326\244@\276\265\276\305\276p$\200=K\354\227\276\374V\016>6\234\202>\200\235k=\204B\304>AE\356=w2@\276\211\002\003\276=\323\002?|\346\037\2740Q>=\377w\204>\262Z\314\274L\030\267\275\021lG>*\327\017?\213\007\357\275\226;x=\347\303=\275L\250\253=\244\312N\273\372\020A?\352\031\335=S\177\204>t\177\333;\273\010\001\276\020\250\n\276\227:\331\275\356\315\337=\201\r\017>\300\024w\276z\244\244<\'\200\364\274}\037\310=m\3616=\327\010_>\215\326\\>hc\300>\025\001\020\275<2j>\207\004\272\275\326%O>\034\362\202>\300\345\213>\2250\020\276\340\305L\276\030B\010\277\306\010\026>\001\245\026>\366\333\246=\247\321`>\027\217\231>=\376\217>\002\255 \276\302\310\004?\257\214\372\276\235{\007=\377\311\236<\367y,>f\030\035=\335\274\206>\253g.\276\'\256\263=\213`5>\250\014\270\276F\021^:<\361(>]7\220>\207\217^=\370\227\232\276?0\267\275\317\233V\2757\\\031\275\214\251j\276\226\313\344=\225\201(>\305{\340\276P9\207\276\006/\222\2769\307\203\275\0318\341=\322\035?=w\262w\276\243p\\<\204\3413\276\251c\027\275\032`\237\275Cmp\276\344\346\211<\222\375\244=\335\022\007\276\356\222\304=K\207\271\275\227P\322\275\240\3570\275\242\312\020>\203n\312\275\323\373m\275\355K\374=\031\353\312>^\256\311\275C<\304\274\231#&>W\343\301=\010\253\245>\216\274\020;|\300\342=\026\'\303\275q\\\023>\315\335\013\275\031\375\325<\003z\356\276\236\370\254=\273\231A\276\374\321\265\276\364\334\273\276\356f\004=q\215\237=\346\3730=\374d\301>\330\317\324=\036\316\201=cl`>\374\374\350\275\035\350\302>\307\273\036\2752\234\313\276\300\366\343\304\272\373*\233=8\224\002>2ef>\032S\207=U\260\317\274\014`N>\272\217\220>\223\022\313\276\266\354\221\276\352\257<>J\334\246\275#\212\276>\010e\205=\216>\217\276\370X(\276\203\033\211>3q\204=\312U\202\275\346\234A\275\336\223\n\275\247\035\024\276\323\307\301>\347\350<\276YL`\276\323ul\274\235\260\342\274\340\211=>D\272X>[3d>rb\356<\220\021#\277\301^\n\277\375#G>\322z\336\276\241\367-?I\325\240\276.\330\373\275r\343\367>L\211\014>\3378\336;+a\345>N\014\234\276=\265\204>\003v\273\276\352\032`=\224\001%\276\027\\r\276\247\310\275>\376?\232>\260\014`\274\027o\021\276\214\223\210>\r\365B=\277\362\006\277.\007\351\276E \300>\244BD<\023:\215<\243\033l\275t=\344>\276R\237\276h\0340\274GJ\025=\024\263\224\276.4\017?8j\370\275\005;\302\275g\271\235>\230,\246\276eD\031\277\316t\363=\217\263\277\276\366\267\333\2766\210U>\n\371b=\327&\222;9\203\336\276\300^E;t\201\215\276H=\260=|O\213=ARK\276\017>\036?\335\312 ?\363d\002\277,\243\377>\235\3503>\324\r\216=*8q=nA\351\275\271\366L>\350i\210>H\324\322;@a\327>BF\243\275\002\215*<-\216e>\235\233\236\276.y\004\276\347\014X>\315\270\027\276n1\340=R\367\313\276\035(6>.\177\030\277\256\361S>wV#\2761\230\231><\256\217>\226kd\276\217m\304=\266\276\342\275\315`\344>Ur\240>\342(\265>\271\3460\276\014\213\203>2>\376\274\320\370R\276>\234\345\275\203\365\t>\262v\347\276\326,#=\236\303T\276\214L\212>J\013\202>\004o\006\277_&\273\276\032\177\001>\367\313\266\276\367b\335\274\322\320B\276\362\223\021>\037\327\246=\262\356\002\275 \327U>[*\265=U\347\n=\337\331\304=\251\245\'=,f\311\274X\351,>f\026\032\275q8\034=\303S\203\276\272\021J\275vJ\030>r\375\246=[YD\276[\271\325<%\347\222>\1775\243=l\002\235\275\320 e>\361\304O>\253\350\267\275\3203\343=s\000/\275t\001\201\274\373\252A>\006hx>\376\270\357=3\374=\275\024\337\206>\006\031\303=\300\002L\276QX\033\276g02>5\333\354>;\355\215=\016.,<\317E\005\276\352\n\221=\233\221\233\276Lj\202>\240[b\276m\027\\\276+L:>\313\203`\2769$\206>j/\013\276jp\224\276\301+\331=\341\2252\275\265\235,\275Y\354\210\275\"D\031\276\347\235[>\343%\222>\006B\232>\272\212\017>\021$\352\025\031&\275\250\331l\276_\267\275\276\016v\276\276R6\222\276\t\ta>S\000\006?\272\327f\276\027<\252<\014}\331\276-,\205\276\001s\213\275\177i\212>\201~\362>\001L\272\273\3736\340>F\304\227\276\0373\355\276\277\326\346\275G\344\352\274\275\243?\275C\243\253\275r\377\311\276\207\237\306\275JL~\275\247\203\253\276\267\014\220\275\261n\024>\215\372@\276\331F\206\275\345\265\352=|\005$\276\0076\277\274\263\002\013\277\035(i\276\n\350\207\276\251\245\007\2774\363\266\275H\317\336\2762\024\247\276HH\211\276\375\251\343=\362\010\346\276kf\255=n\346\224=V\261^\276^\255\205\276\344\347\276\276\256}\013>T\361\344>?\377\276\276\0275\301\276\323\250\034\276\365_\346\276\022J\203=c\350\372\276g?$\276\313 \250\276\373*h\275 \207\345>\374\257X\277\335.\364\276\346\303\001\276\021\222\243\276\263\2404\276\016\323\257\276\331U\274\276\344\306\346=\221er\275n\221\261\276c\215\010\277\020\007\304=Y\302\363=\247~\025>\213?\340\276\255\013\303\276\236\r\017>\237\250\225\274\026O\224=\215-\345\275\220\3250>\253\355l\276\232\257F\276\365\364S=\207\251J\276\327\200\357\274r\334\243\276\376;@\276tW\206I\333\234=\243^H\276VI}\273j\243)<4B\246\275\\\023\365\275T\253g>\006R\231\276\223IC>F\373G\276f\370\231\275Q\340)\274\365t\203\276i\014\310\275Bn\257\276\334U\272\276@W\272\275\363\324K\276\306\235\254\275N3\200\276\003\215\261>\275\373\222>\032\227\017>\301\244\234\275\266\306\313\276\214(\270\276Z\272\204>}\376\023\275y,G\274\315\317\230\275F\353\014\277\'KQ>QB\310\276?\200\353=2\370\241\276\352w\220\274\277\324\"\276l}\361=`\373\034>t\327\303=\302\365\264=\230\376\225\276\367\0255>\243\0077\276\205\2015>]\027q\276\261\034\035\277\373\030M\276\243\0320\276\362\003\315\275e\010\031\276\263\325\320\276\030\010\020\2776T\252>\253\266\366\276\327}\014>ux\225\276\316g\312\276\340_`\276F\210\343\276\233\276\342\275TdK\276\016_!\2770\213\006\276\213\363\222>\221\t\207\276\005m\'\276(\272.\276i\212\000>[\271\003\277\302\370\267\274\236\226\343\2765\342\245>9y\355\275\010cc>b\271\017\276z\347\246>\326\334\025\274\330h9\276\231&[\275\013\021\256\276\362bS>\234s\370\273f\345L\274h\013C\277d\315\215>\343\'H>\002\206\200\274\231\371;\276}>\356\275\030\204\254<*\177\316\276k\"\323\2754G \274\017n\203\276L\271[\276/+\314=\0354\035\276\004e\030>\271[\001\276NJ5>K\303\360\276av\007\276\355@\035;\255\210\270\276\212:\266\276S\203z?\325\202N=>\321\302=\rm;<\227\255\266\2758\217X=\346\275\242>\344R\231=\217T\361\276BJ\203\276\362\315\310\276\214k\320<\022Z`\275\215\\\230\276\314\301\260>\245\000\241=\305R\227>\372\263\t>\360\177\030\276:F\274\276x\310\332=\317a\353=\254\367\274=\265\033\200>\001\002\204=\342\036N?\267\216\037;\302\006\213\275\000i@>\222\324\'?\2337i>\032h\211=\307\001\202>\006\230b\274\226w\263=\037\235G?^e&?)\271\312>&\316\370\275\252\007\\\275\315\251+\275\014Y8?TY\353=\3730\\\275\342+\266\275\217\274\004\276\270\275\031?S-\337>\177\205?\276\r\371\261=g@\326\275\345\004\217\276\364\360\347>3\033\003>S\332<\274\344\330\014>\315sK>\037\217|>\235\213\243=\327\3740?\320\213\235=\267\232,>8\336\244\275o\322>\275\307\263\343=\306\007\347>\250\251\023>\3039]>\376o\203\276\274\370\373>\032\020{>\272,\034=\210:\021>\271!\031>:p\341=\347e\260<\200y\234\275\336\211\024>4i\307\276\350x}>}\361\n\276\262!\344\275}\263,?\356b\035?\rv\266\275\272!U\276x\377\363\2766\333\201\276\252<\310>\274D\312\276\036\224!>/\033\010?\374`\356\275y\234\014\274\375jm>\376\370\312\276\357\305\243>\261\243\274\275\305\213\360>\256\347\215=\267\025\017?\373\025\276\036\203\207=\315\277#\276\234U\337<*\306\320=\327\3257=\3114\354>b<9>\r\201J\275%y\237\273j\207\250\274\315\303\304=kQ\211>\215p*=\212\311\230\276e\\\014=\\\202\350>\303V\236>\370\025\201=\372\246\326\276\233\326\250>\376d\234>u\317\320\275O\301\205)\024\311>7{\004=\270\351\362\275M_1\274\266\363,\276\271]\371>\021\323o>\003\013\243=\316\242\234\276\235\256j>`\375\314<\213i\365=\322\254\023?\377_\024>\367=_\276|@b>v^\341=\254M\215>,\3432\275~&\355\275\352\020(>VX\032?K\233\221<\216\235\231\276\366\343\215=\235\242\304>jm\032>7\024\315>\263v\350>e\207\005?\014u\254=\217\031_?\370\245\332>\356\210\243\275\nw\222=\366\256\237>\300\223;;Nt)\276R\032\016\274\200\353\005\276\303ks>d#\023\276?ZF>\000m \276]\235\311>\271\345\347\275\370bN\276\343f>=,u\363\000\010=\276\247\r\210>Z\244\004>:\377N>\327\265\033\275\207E\367\2754\323}>\262\327Q<\230U\271\276d\020\037\275e/\014>\374\314F\276\363Q,=5\276e\276\376\261T\277\222\265>>\270\2176\276hVA=r\221\267=\272\252\360RB.\276|\246\275<\256L\330\276\257H^\275\r\215I\276\375v\210>\237Tm\275\363\000G\275\226hf\276W_\241\275\303\324\312\275RzL\276\264\260\n?\270\273\035\277\322\n\361>\033\356\010\275L#T\276.g\257>\321\253\246\276=3\251\276V\212\241\276\224\004\267\276uq\203\276\374w\201\276\340P\261\276\347\247\177\2760\310\252>\314Ud\276~\357%> \211Q\277\360I\240=\327\334\241\276\013T\360=q\004\357\273\2738D\276\t\207\210\275U\350\333>e\227\310\275QI[>s\220!\272\236\237\213>\034g\177\275\"\315\000>\217\231\003?e\233\\\276\343\253\327\276\033\231\207>\322{\261>\371\212\022\277\221B\261\276\006Y\255=\264\002\027\277~\342\277\276\271\242\222\276\307G\305=\017S\331>\375\315\">\331\260\275/K\004>\027\305\024\277g5\212>\243\262\337\2763`\207\275>\245i\276\272\017\225\276C\225\346\273\0000V\276\216u\347\273\017>D\273M\200\247\276z\227\355\276\322\202\356=\251\326Z\275=\026G>S\017\342\276\312m\034>\t\252\233;Y\227\333\276e\001\215>8\037\377<\254j\250\222\227b=Z$\315\274\245\365*<5k\201\276\023\375\365\276\220\033\'\275\355\334\337\275u\313i\276\372\247\212\276.\221\335\275\366\377\327\276&\311d\276\235*\211\276\026\336~<\240\305\346=\020\266\030\276\203\216\010>;\005\221\2767\373\206\276*\333\020=\033c\373=\246X\302\276\007\260F\275\367\256\335\276\'\312\204>I#U\275\024\003\315\273\306p\370\276\t[+>{R\004\276\306\002#\276c\243\024\275v\312\247\276\272\244\347>i??\277\275p&\276\216\366\r\2777p\224\276^\220\020\276\016\273\370>\365\270\336\276\363\247\347=\2718\230<\214\352\212\276\355\320\203\276Z\r\236\274\3718\214\276\224\234e=\233\320\345\215\223\301=\207\273\032>e+\001\277iu\312\274QO\210>\322\204X>\254\345g>\315\257\022>\225\235\233>\342\250\227\276\r\177\330\276\271%I\276\356\301\273>~x\247\275\030\036N\274\334\t\350\275\204\236\373\276I\2449\276^\252\005\277\346\037\005\276:\234M?\310\202\016\277+`.\275\240?\345>\315,\307=\275O{\276\266\303\241=\204\315t\276{7\334>\220\331\376\275\233\345\036\276Z&\254>\r\210 \275\356j_\2758\357\331=\230B\313>\216\274h\276\026\256x\275\201\325~>\234\2309\276\034Y\221\275\336\005U\276\024{\373>\230\206\035=7b\'>ml >\231\362:>Sm\n?\005\3428>-yK>[F\223>\365\233\237\276\r\301\257>\n\000\364=(\353\374\274\207\257\270\276R\225D\276PGo?\361-c?\311\217\232\276\260\357\337=\024\220\027\275\322\034\007\274\002\303\210\276?\322\323=\036\276\314>\246\354h>\246O\200\276\344\332\204;\336\377\t>\323\270!?n\347\001>\261\006\331\276\374\004\277=\001q)<\255\374\214\274\206\234\205>\346\002,>\037V\307\274\263\2550<`\302\305>\024\210!?T\"O>\211\345\026>\333\263\205=\262\263z>@qo>l\r\311<\272\235\237<\n\272\314>\316\005\202;\035}\307=\356\226\371=@\237\324>\254\016\251=\336\307u>\240\326K>zp\372=.\217\017?\014D1\276\265\301\300>\371\037\010?\3245\341\276\313\363V>\007\360\373\275\370\236\251<\263\364\210=D\n\007\276\361\233\251\275\035\206Y>e\332\002>\363\335\221=\233\266k\275\234X\215>`)q>u04>\003\376\375\275\266\317D?\33157\275M\037Q\275X\007\353\274C]h\276\354L\355:\306Y/\276\216\344\244\275>\202\311\275\016C\351=Rt\206\276s\266\r?\351\036\302=_\354\347=Z\266\253>\312\263T>Y\224\017=\025\"\234>/_\232<\260\207\030>\335\347\276>\271\335\003\276B\200\374\275\246\027\216>\226\326:>\323\325\316>\023\356\207\276$q\300>f\316\373=B\032\254>\3577\007?F\352\235\325\323g=\224N&>\303_\202\272\200\3658\276\205\3060\276\337\243\027\274f\225\226>]_%?\364\205\233>\364\006\337>\332\256\331>Z$\233\275\246\034\020\2764\313\315=\222!z>\302\217\007?\277\3706>\216>\200\275\377U\000\277\266$\021?\252\365\252\275\203\013\023>{%\217U\340\336=\330\013\201<\333,A>\334\315\255\276\321\274\025=M\024\205\276\202\024\034=\365\356\316=\260\\\'\2760\245\232\275C\244i\276\276>\323>\211$8>\341\377\246=\234T\204\275\020\2462>h\003\256>jd9>\306\2702\276\215v\255\276\263{T>T\250[>\033\336\364\273\010\244\375w\236\013\276\202d-\275c\250J>L\346\"\272 >\230\275\260\206 \276K\3333>\326\255\276=D\324U>.\017\325=\255xv>q\240\316=\252\201\362>-\374I=\026\014\211\274l\315\200>+;\275=\270\272\303>\3159F=\204\267\014>\210t~;\2272\032\276\016\0334\275\177E\204\276\245a\326\263\263g\276r\362D\276\020\241\254>~\252F>D6\261>\220M\320\275D]~\276h\263\205>\231\226\361=\345\241\231\274\234\035\320\276>\233\330\276\021\240\253\274\346\224J\275\007\215\231=\007\007\006=\304-\255\276\227\243\271\276`\252\002\274\026\003\024\275+{\333>\343\277M\275&\207\356>L\266\267\2756s\021\276r\013\226\276\212\265 >K\031\264\001\252H\276l$E\275\256\260\326>\231\357\004>\2724\010\276\253W\322\276\267v8\277\230\355\334<\210\221Q\276\243\224\317\276 \\n>\302\324\n\277\177\256\007\276Uf-\275\245\016\302\275\323\274\341\275\324\034\361>p\261\014\277\212\315z>g\223S\276\242\310{\274\2414\304>\354A\231\275\033\334\240\275\224\373\226>\375\257\361=\232\014\234\276\230[\244\276\263y3\275t\345\204>\265\t\263\275\374\324D\276O\366 <=c{\006\301\005\276\271L\242\276\330J@\276\205u4\276\350\213\226\276\2150[\276`\340U>\241<\367\275\216\313\001\276;Cs\275\257}\365\276V;\031>\256\337\374>\211N\370=\305T\310=\227\257\014>:\2206\276\276\362b\276\235\257\247\276S\211=>\177\343\323\275\360\r\010\276,%\033=CL\021\276m\032\303\275\303\265\207\276t\205@>_\277\007\276yl\t>\376\003!>\316\002\324\274y\032\270\275wD\217=\\y\202>\006qI>\252\3165\275\261~\214>]\253J\276h\030\022=&\235\003>:#N>8\\\366\275#Y\032>\257\217\266\276Y\205\324\274\202\035I<\323mR\276\231@\222>[\270\034\275|\344\027>\312\030{\274\201\003J<\262\350\230\276\017\357\001\277Xc\306\276|>0\276\313\314\250=q\204R>\301\3018>\211\354\343#V\377;\363\\\266=?\200\214>\250\006\332>\242\322\347<\242\365\305<\322\252\224\276\370b\301>\201\036\261\276m\016\220\275}\246\264\275\310\366\302<<\357\221\275\340M\211=\265\340T>J\367\263\273\210o\201>{e\346=\233\376h\275J`\235\276\300\2102>UP\215=\351A\251\276\321\241j\274\337\377\017\276\242\341\272=\346\220s\276\221}\210>\325\235\304\276\216\000c=s\037\254\276\354\315l;)!\250\275\307\234\017\276" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/gates/kernel/read" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/gates/kernel" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/gates/bias" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 192 + } + } + tensor_content: "|\365\036?D\307\005?q\250\304>BT\210?\255\313[?\242B_?\274\366Y?\273\236 ?\361b_?\271\311\374>\276\2605?}j\032?}\331%?0H5?du\024?-\r\271>\303\0146?eE\336>\036\267\331>gV6?\030Y\030?\367D\307>\330\343\006?\020\351\300>+X\025?\204g\251>7\241\032?\264H\005?\017\254\334>X\341O?@\310~?\347}\000?+.\376>\257%\346>\254\225,?\2433>?A\350\035?\035\201\030?n,b>pq\356>\243\215\035?&e\245>\372Q\324>\3561\331>o\2713?\001I\231>\006_9?\352\311\270>\347\350\004?\226\004\315>B\205P?+\321\n?\032\252,?\323\0019?\0306Q>\352UU?\246*\345>p\215.?\274\366\003?\331\020\010?\3162\260>\300\213Y?\024\006\010?\22652?]=>?lD/?H\035\005?\275\005??\007q\357>\325\351\001?\332\031\246>F\333\365>\331\026\007?\177\321\322>\220\373\330>\223\330e?d\000#?!A)?\3128\220>O#\r?\215\013g?\273n!?\"Z\013?\257\200\375>\237D\362>B\037*?\366\325\226>\332cx?/\',?\362\3478?\336| ?G\344\303>\303\016\326>\240\202\\?\272/\013?\265\244k?\241\026\370?Bb\314?\'\366\000@\007\251\364?4\036\024?\006\303\241?\261\2373?\377\001\000?H\205\221?\0164\314?\'\367\315? \3468?\200A\213?\365\263|?\010\213\341>\000#\036?5\246\206?\376\271\212?\241\301k?x\0239?d\267\241>`\003\352>\232if?MQ\'?\003\200]?\241\204\376>`\245\330?3B\323?0(A?\271\342:?\211e\312?$\327\357?\3055\212?\262t(?\332=\024?\350\271d?x\036\247?5\2654?\314S\327?\306\\!?\"g&?\374 \253Q?\350\224d?\247\\\016?\006\272h?\221:\254?/\255\201?\200\347=?\331\246\023?\363\2458?\260\027\212?\351\023>?z\315e?\277<\007?a3\177?\350F\301?\357F\217>\222\206\222?\020\312T?\206\254R?A\336\207?\310l3?\305>e?\341\373\177?\234\244\244>\250\365\014?#\236s?\222_\220?\303%\362>\324\244\314>\036\326\277?\251P\365>\000\026w?\236\204\264?\356f\363?\204[\217?]\230\255?\242p\000?i/#?\222(B?\3016\352?9\3111?\332\030_?\331\317p?8\033\243?B\315\254?\345\254>?\037E\200?\262\036[?" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/gates/bias/read" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/gates/bias" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/candidate/kernel" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 192 + } + dim { + size: 96 + } + } + tensor_content: "\324\317\343>\214V\223\315,`<\300\036\302\276\037e\211\276\006\334\004\277e\371[>\262\"\236\2741\032\270\275\347\021~>\264\214j\276d.E>\367\350\003?2q)\276\266\004d>\230y\n>r\221\326>\\K]=\265`}>jF\025?\262\346a\275s\251\236\274*\001f\275/\005\210\274A\033j\276\2031J=\220\356\\=\354\263D\275[\377\210>Q8F\276\2234w>\352w\251>\327\t\317\276\003\202A\275\362\232\001>\356\361l==C\254\276Zu\223\276\024\005\247\276\033X\253\276\331ha\276\301[8:\224\305\t\276)\352\351\276\231\340\371\275\236\236\003>\325\352\034>po!\276W\034\207=b\002\357\276\177\341\t?!F}>\n9\021?l\275\231>\231\247\242\276\360\026\021\276\0054\020\277Ap\216\275\366\2576<\374\021G\276\023\351\275=]#\203\276\000\211\204\2740\260\305\276\276XS;\236\243\031>X&\030\277s\312\227\276\005+\226\275\210\014\217\276\253H\027>\211\021\301=\001|\205\275\213&\314\275\315\203h\275\344\017\215\275\211\272\273=\274In\276\256\233\234\276\257\310\033?R\257=\276\017\201\277>VG\317\276\320\202\251>\330\362Q>\267\250\371\274\024e\206>\256k\024>\247\224\350\275\313\257\222\276;\236\317\275\226\032\334\276\372\034\323\274\272\312\333>\030j\303\275/3\341>\010\3553>\017\225\243\274\224\262\226>\234\033\351\276\341\335\007\274\331\254\026>\372\036\211>\036\2559>\016\371\205\275\027s\217\276\3662\341<#c\366\276\230I\254>\26150\276\010\367\001\276\004\034d=6\025\260=\3761M>4\017\023=u$\246\276`\351P>\354V\267>s\3243=]W\242>w\206\252\273eI\215\276I\\\363>\024\220&\276_i\036>{\021\212\276u\001\006>\324\313\202<\323\306A\276a\334\326>&\245\254=\001T\245\276\213g\330=%\325i=UP\315=h\006\223\276\013\276\327\276\222=\037>\247\354\032>\366\267\372\276\324\331h=\\\270\206<\364\302\032>7\177S\274mVC\275\2336\376>\246\200\250\275\205B\212\275\343OO\276k=\300>\325?\034?\222\231\014\277\025\005\326=\214!\346\275\306\362\230\276gs\250=\325\371\370=\272\202\332\276\037\321e\276\325=0>k\336S\276\031I\206>qJx\275(\353\266>\361t\013\277D\210\203\276{\267\351=\032\317>\277\035O\317=\275\3441\2765!\227>\375\256v=-YI>\020\313\351\275H\242\200?\322fo=>\206 \276r0\321\274\301\346\223>\3618t>\262\214\213>\306\024\006;\377\310C>\223\264\246\276\307I\r?\373\026b\276y\317E=\316\356\245\276p\334q=D\361\275>Q\357\216\276\033G\276\2766i\210=\\_\300\276\017\374)?]\220\267>ST\225=\233\005T>\025|:\276\232M\320\275\245\004\362\275\037\307\372>\277\0030\276\026\327\342\276\337\212\327=\306\013\352\276\274\036\"\276\340\036k\276\314\203\235\276\334\t\n?4\031\255\275\tw.?\013\366\031\277\250\204\301>\243\3468=%\205\326<[7@\2403Q>\326\325\212>\310\201\032\276`\237\"\276\362\217$\214\230/>\r\016\314>58\241>\266`\311>&\216\203>@\271\225>2\031\346\275\365Qo\276\323\341A>XYR=\253<\303= N\256>\213,\206=\304F\354>\300\303\177>}\2405\277\035\264`\276\210:\263\275\344\314\310\275a\250\235>g\t\307\276[\033:>e\367\236>,v\017\277\271\230\305\276\253\034\223\275r\262\022\277,\024D=HR\004\276\243s\274;\201\323\223=.\342\230:t\266\t\277\237\177\311\003e\237\276k\263@\277X_\n>\037X\002\277\2046\177\276B\256\030\276\210\002s=R\367\210\276\356>N>\262\363\021?\362\253\227\276{\260\226\276\325\021\207\2767X$\276\373\020\364\275\2038d\275\037P\017>9\247\323=\216e\247=\250\210\314\276U\363\'>C\367\007>u\013o=\3574\334\276\313\352\256>9y)=\2413\004=~\310\367\276\026\373X>\244\340\214\275\345\216\'?\017\316\207\276v\274\027\276>\300\004\275\033\216\366=S\233.\276\324a\323=\nC\226\275\202\333\025=\023\206\313\27588i>\035\007\354\275\t\031`>\333\274}\276\315k\244\275\376\022\231>?\006\201\276\231&\017\276\013D\213>^\223{>\215px\276\322\330\324>\326|\004?\333\360L\275\335]\374>\376W\216\277\342{\233\276(Uy\276\234\212\216\275r\242\256>7\203\346\275I\000\272\276\026\330y<_\n\037=\376\021->\230<\233J|\276\232\320\006\275\204~\267\276\306\250\217>\264\332\214=\344\315a\275\273\036E>i\366\354\274\021IV>\232\357\247<>\026\205\276V\355\024\275\206\314\250\275-K\354>,\223\221>`\210\366;q\302\211\276\312\361a\275\215\365\024?I\216^\275/_^\2758\022\236\276\365\032\255>l\3764>\001\036\343s\276\355>\014\277\256>h\020J\275k\026\244\274{c;>tbQ\277\274i\036;\275g\035?\021\014\360=\256\033\302\276\341y\013=X\2708? \014\306>\261:N>\241C\372\231\351\312=N\312p>\260\246b\276@\275\264>\320\266\214\276\342\034D>cf\001\276\010!r>\371n\311=\354\324\004?fv\361=6C\233>\366\343\020>+\362\367=\221\352\253\276K[\002\275\204j\344=\275\231\336=\324\033\037\276B|\227\275n\320K>0\340&\276\375u\357>\315\003\227\276\324!\250\276\370\354\316>\270\346\033>9\211q\276\363\366\311\274\305\227\350\276\363\265:\276V\331\267;1\300\023=\320\241\027\276\021d\270>r\342\373\275B\0271\275y*j\276\225j\210>\244H\261\271s\255\222\275\313m\236\276\333\265\224\276\340\374\026\277O6\236\276\372\324+\276\226\202S=\302+*\277m~\323>\036\005\233\276!\003\301>\253)\327=\021\325?\276n\225\333>\306lQ\2754DV\275\224\322G\274\356\013\031?\220\271\225>y\264\021=tq\224>v%\346\275mtH\275:p\311>\270\231I\276\3616\323>\367\333\037=\023$\340>\264\010\217\276r}h>\305\327\305>\250:j>#\021\362\275\274\rb=\300\027\354<\274\260\301\276\231\375\027=?-\035>\271\266.\275\036\377\366\275\367\335\226\276\364kr>\321\t\037>\303X[\275\322\026\270<,\252\252>\240\\\347\275\305\236j>\322\031\251\2743\247N\276\372J\016>\022\316\016\276\002J\'<\253\311\201\276\025\272l=0\203\013\277\270t\351>\021\3639\275z\010b=v\027\000>|@\177>\222wV\276\315\247\275=\277\323\361\276\274\345q\276\352\266\222>\372vh\276\003\241\260=\217l\240\276\025\n\247>\357\217\022>\325\206\027\277\027\303\210\276\330=\204\275\226q\202\276\310\220\241>\241\034\263\276$\344\241>\237\030t=\344\007\316>u\300\270\274Y\210M\276\306\031%\276-\022.>$j_\276IN\017\276\255\000\211>`\266\215=\341b\240=\273Hv\275\366\337/>\0355\361\276?\356\275\276\207\245\223\275\272-\275>c|\213\275\233P\231>5\023\206?\322\223\337>\304\315\033\276\311\014\n\277\225\3421>\350\010\n>\314n\257\276$\0059\276\235\032\310\274\2549\004>u@w>\377z\210>\367\330u\276h\343\216>\244\242m\275\234o\014\277%s\211\2762=\257\276\332\375\373>\371c\217>jnN\276t\027\243>\356;\302\276\272\013S\273\331\347\010>\376\360\234\276\367\273G\274\226.N?id\337\276\244\237\177\276\027G\205>\021i\203\276\211\217\204\275g\274\310>\241\261Q>\337Z\311\276I\035\2059\334\016%>N\370\233\276\240\3471\276\337\271\223;\217\344\227\275hA\370\276\226\271\246>\'/\330>\247\262\231>+\364\333\276\321d2\276\365\035]\276o\325\247\273\214e}\276\306S\377\276\264}%\266AQ>JFX\275G\227\301>RW\245\276\321\rH>{:\352\276\026\245\351>\034\240\222\276\255\242\264\276\264\177\346\276`E\211<9\206\201=\340\036@\275d8@\276\027-)\275G@\233\275\353\244\234>R>7>5\033\013\276]\362\234<\372\350\377>\223\3078\276LB\311\275=j\253\276P\262F\275\301\213\210\276j\375\337;~\300\033>+\332\027?)v\007?\335\3157\277]u\224\276v\271\324=\337\036w=\370\363\345\276 e\214\275\255i\234>\227\201\237>(\273\340=c\337\342\2764\3046\276.\013\202=\273 X\277\031x\016=N[\347=\245\345\374\276B\365\307=/(\250\275J:\n\352\361::/\275\004?\016\324\206>\365\313Y=|\270\271\275u\371\222\276\335\002\362\275\366\032\332\276\262\021)\275!3F>\225[a\274*\371\201\275\255\350\345\275p\373\304=\334\004V\276\0313q\2764,\313\275l\347[\275\354\313\367\275\236\210\240\276\343\203\246\276\255\364\243>h\021W\274 \030\204>\204aC>\375\232\230\275\235L\024>kQF>^\320\316\276\010\223)\277\r\243\214>\342M\315>\237\026\302\275\335D\213\276\025Vf>k\225\026?\017\354\230\276\313U\222>+1\260>\222\274\027\276\001\027/\276\333\377\315>\247+\200\275\205\216\003\277\337\375j=\304b\250\275\255\r\033\274\260\220#>\246\256s>\331\017\031?D\227&\275d\3357>J\267\213\273\277\211\377=\003\372V>0\310\363\274-$\014=\252\333\371>\030?\211>\242\266\022>\332\335\212\276\373eP\275\037\220A>.*\201=\340p\212\275\321\337\324=\243F)>\365V\272\276O[\237=\027\022\361=Ar\014\277/\037\213\276l!\360\275\"\265\252?7\201\207>4\216\025<\226\002\254>/5\301\276\223<\270\276\240x\201>S\301\210=\020\371\350\276\364ie>\032\355\005\277\244\301\004>\357,\220>\360\274\337\276s\360#\276\037_\356\276\266\315\026\276\005\364\212>\223\217\353>HS\010\275\211\032\222>\2343\037\276\233-)?u\253M\277\263\234\252>\242\207.>\356\2143?\273\361\322\2766\202!?\370u3\274A\272\322>\3523\245>\214\227\007?\230\215\035\275w(\234\2758z\301\276\261\231\275>\324\271U>\361\224\345;V\361\030?\346\367\216\274\251e\000\277\223\320j\276\007\026\322=F\343\207\276\321\312\300\276x\212O?\205~\216>5\217\036=\331M\t\276^\222\313>\036\375\243=\300\350\'?\371\371<>\250A+>\346\377\240\275Z\025!\276\232K\375>[C\007\276\305g\332\276k\\\247>G9\311>1\240\330\276h\'\037\276y\'.\274\250\010w\276\270\254A\275ns\314\276\256&\013?\027O1\276\\\271R\276\0310\315>\3348D>\035\330\330\275\331\201b\275\373\326\232=pJ\307>A1\256\276vW\361<\302\032?>\321v%\276\003\335\370\276\224\021+\276\271\022\241\276\320\223\260=v\374\201\275\220\333\230\275\177r\263\276\002\374\002>P\263\377>s\204\273\273A\237\221>\240\331\335>\241J\317\274ZD?\275\t\214\271\276[\322@\276g\340\363=\375\200,\275\355\240\027\277\320v\017?\355\234N>Z\306\004\276\260\177C\276v\226\211=\367\331\242>\336\271\020=\322\',>\375\257B\276\373$\202\275\371\\\364\275.\002B\276\355v\n\276\310\025\333\2750\271\365=\361\316\'?\346\202\022?\1773:\276\221y\214\276i\014\267\276\360~\"\272h=\302>\231t\276=\025\223\216=\306\013\210>\334\321\262=\341\223e\2762L\"\211\333\275FY\353\2752\272\355\275I\350\371>-\362\205\274\252x\332=\341\262\241>\023\010\335=7x\212\275\265\335k=qRc>\231Q\200\276\021\363\345>\243V\370>\014\023\312>\263\001\365\275\0009\313\2763T+\274A\"\260\273y\356\342=\374\312P>\216\325\313>\327\2113\276\023$.\276\271\002_\276\327\335\324=g7\302>JJ\033\277\360\206\272\275f`\241=\337\223\304\276\322\036\231=P&1\2778\221\313\274\261)X>t\030\242=h\030,\276\2732\227\276\250\344M>b\366g\276\256\320\213\276\335K\026>\036\304\315\276W\213\206=5\0209>1\242\266\276\312LB\276\316\226\321=\376\'\367;\027\232\221=\364\277\037\277@\3364=!i\030>\206\326l\276j\2721?\205\177\216=/\310\200=\333\366\017=i<\260=\300\235\255>\201:7\277\310\326\213\276E\240*\277\232\3572\276q\227\222\276\246\351G\276\360\270\032?.\020\244\276K@\013>\036\331\366\275\272\215\030=\000N9>\205\250\\\276\243P8\276,\321\226\272\261B\027\276A\260\270>S\261\313\274\263\t\274=r\251\205>FpL>\"J\242>\324a)\277\000\261\351>\303\262j>\377\275\312\276-\244\002\277\271\322V\276/\014\017>\312\226r>\313\363\356\274\260(\000\276\364&\374\276\021\013\341>\206F:\277\034\"\233>\376\226a\276\177d%?\r\326\264\275d]\327\275\007\024\321;\370\336\005\277>\2637?;\325\256\276w\207\234>\274\033\233\275\222\004\240\276\010 G?\267\222\271\2766\226\227>=+M=\203\244%\277C\210\363\276\357\317\320\276\272\346\225>\361s\313=v\023\265\276\004\377%>\313\327\233>G!\302\273[~\026\276\363\347\323\274\r\375\247=c\306\254\274\355\342\267=4\237\244\275\247\005\252\2768\304\230=\221?o>O+\032\277Ic\206\276\217\257Y>\322D%\277\013!\014?\334U\037\275\271\0021?\"\014c\276\013\005w=\234\225\031\276q\230\n\276\245(\236=\002\226\205>\007\332\223\275\200\335\335\2762y\026?\3140\275\275A|\017?\345\n\337>g\304E\277[D\275\276.\314\326>\313W\204\276\252\357\025\276Y\225\362=\260\262%\276\263\235\310\275\223\224L>\240\217%\276\364a\322\276U`\034?B\244l=O\376\252=\240\250\204\2763\'&>\363U\030\277\242\344\025\276R\270D?\305y\020\276\275z#>\373\277\336=<\330\214\273\331\tN\276\347\337\223>0\374\272=s\253:\274\365\034\236=EE\233\276\216<\363<\320!r>\245\024C\276Wv\032<\25562\276\336\364N>\224\274\373\275J\243\306\274\347\256\006?\006\223\016\2765\314\026\274\304\211&>\034\300\217<\255\\r\276\264&n>\026\275\033?}A\234\275u\003Y>D\366\033>\361\361\027>d\305P\275$\323k\276R\264v>-0,\276KX\217\276\257\2428\276\330\272\004>\223j\207\275\003J\013=\031\273\005\276\262)I>pA\271>\273\342=\275\264\001\245\276\226yA\276\327\010\361>t[=>^\315\251\275\202\325\311\276\335\264\203\275\364\265\273>\276\377\025\276P\0257\276U\'\361\276#z\301;(\317\373>\2717\353<\303\266\374=\336\033\271>\306\350\006?\203\313\007\274\t?\003>Y\t\301=\212\307\261\276\350\353\360\274\'\336e>o\353\273\275\214?)\273\2369\336>.\356\347\275\341p\203\276\246\027G\276\001:\343\273Qr\305= \2078\275\224\314\037\276\236uv>&\315=\275\242\"\355\274 \332\316\275\"e\325<\336\321\006?`-g\275\311\346\250>&{\013\277\031\356\376\276\210\013\022>&\007\301\273\353\313k>\223\"\203;\026G(>2R\267>\r\210\357\276\225\221R>\003\034Y>\310\027k<\226\271\344\276\375wO>\'^\252>3\372C\277*\262*\276_P\016?\274F\323=\017\002G;\200\346\330>\242B\022\276\t\252\027>m\324B\276\330\210\002\274\312\273\373\276\265z\222\275\240\352\323\276\262*S>\222]\221>\372\270]\276\231\343\317=_\322\227\275\215\224\274\2758\250\232\276n\231>>\340`~=\346\205Q<-\001\r\277\235\263\021<\276\005\366\275I\024\254>T\014\361>\213r\'>2\006\333\2759\023*=\366\216{>\312\351\250<>\214\255\275\2051\346>=\316\230=\202~\n\276\332\265\360=\266\335\343=5\206\246>\356\232,\276\035\364[\276\032\010\273>U\245\303\275\264\301\377=\217x\212>\325\r\034\275\302\257H\275eb\004?$\004\310\275\356\270\350\275&7g\276\007\017\224\276\250\010\315\276B\243\236\276eE\344d\274\356\274\013`\200\275e1z\274\022 \036\276\233,\217\274\377&\307\274\355N\256\276\017\031G=\312\324\246\276\320j\262\275w\252\007>hW\006\277,v/>\356\030Y>\210\263\310\273\324\262>\247\315\263\275\365\320x\276\365\360\014\277\220q\327<\005~\013>]q\004\277\266\232\017\276V\017q\276v\317\221>~\032\205=\300H\375>\327\031\375=\246\025\206\276\025\265&\275\314\321\366\276\021\344X\276\204\312\311=\254\355\322\276Ea\"> \262\206=\222\246\353>\251\337\366>\242\235$\276\211\277\306>\200\274#\276\\\363\250=\241\2167\275\365t \276\321\364\256<{\025\253\275\t\233\377\2758v\373\275\230\273>\276\277K\200>\023\263\016>v\031\253\276u\210\260>)Z\253>e\013\231\276BX\266=E\367\212\2758s\212>G\272\204\275n\345\301\276\300\022\334=\336H\005\277Sv]?G\225\342\276\007\251 <{\256^\276\310\336>\276\333C\003\276\237O\005\277\367\302\220>\037|\241\275\246(\333\275\326W\005\276\267\262s>#\245\222>\354\262{\275W\323J\276K\\\356=$\256\204>\303\310g\275\024\355C>5\231\310\276\006\376\241>[!g\276J\372\345\275\304G\006\277%\001\002\277\232\276H9\034^\277>\310=\322>\r\207Q<\002\337&\277\325b\216\275=\235\n\276\245\347\214\274cap>>C\201\276\223\260\027\277~2\220>K\340\214=|\000\315>]2\023>\230S\372>\324J\332\275\"\236\270>]\225\355\276:8\036\275._t\276\241\336\312>\336\370\330=\360y$??M\225\276\373?\001=\234\247\326=\232:\025?\n\216_>\253\031\300\276\235\211q>\255\034\307\274bq\230\2746\033\014\276\317I\251\276\037\036\034=\355b\365\276\022\036\343\274\354\340u\276NSb=U\377j\275&\206G=k\272e>\000\3308\275\240\205\317\275-\234\023?\2037\246\276\267\r<>?\247\366\275\343\351\020\276\307\222\225\276\315\313\360=\273\003\306\276q\367\302>\330\313\230\276\226d\010\277\210\361\">N\302\333\276\t\332\002\277\2564Z>]\253\254>&\233 \276\245\336\'\2771|O\276\332?=\276\035L\277\276y\267\n>\024B\233\276 \373\034\276\214wF>t\265\033\276t\220\330\273J\010\033>h\016\274\276\364\322\230\276\024\316\232>\365\237\261>\345F\n?[\217!?\366\356/>\340\035\357\275\337\247\207\276\000\365\344=7\243\004\276C\230^\276\220\327\317<\274\314\225\276\013\272\265>j2)\276\326t\341>U\217\301\276\267{\014>\360\263\254:\267\346\016\276\'J\224\274j\3247>4\276:>]WE>\036P\255\273_UP\277Ie\017?\331\222@=\365(\210\275\343\210\001\275\310\205-\276FDI>Ml\323>\304%\202>e1\217\275\314\031\354\275\232n@\2769\336\026>5\317l>\224\242t>\223\000N>\342\344\301>O\355\t>\310vy\275\n+\002?{!\247\276\006O\341<\223\352<\243\245\346\274\024k\024\272mm\367=\0220?>\013\275\207=-\\\243>\265\004-\276 6r\273Sn_<\335\272\260\275Z\344\226\2763\030\334>\2653\212=\273\006\203>\223)\336=_\021\211>\342\226\232\276\371fX>\2771j<\327\334\252\273\212\3319\275(\206\227\276\206e\247\275\327\326\017\277FJ\225=h\307??\204\274te\333T>p_t>\256f\252=d\355\213>\207^\002\276\224\244\001\276\260\273A\276\324\325\240\276\021\232\273;\227\236\212\275\020\343\342=\212\231$\276\242\026\276>\2201g\276\177\031\230>?\\\016\276\213*\255\275\025u\223>\037i\262=\225\225\231\276\221\005\223>NT\211<\371\255\001>\306\301\232\276y5\232>X\353\222>}B\036\275\334i\302\276d\002N\276\257Q\256\276\033~\301\275\234\303\024\276M\250\244\275\227o\301=\231/\325\275?s1\276P,U\275\r\000+\276pv\326\275f\371F\276\004Yn\273|$\311\276\260Y\">\211\361\326=:n\221\276]\302\352=\355\235B=6\253\235>jiQ\275\327E\241>\036\240\006\277\027\330\'\276\351\333\246\275+e)>\002\322\014>b\316\240;f\253\252\276\356\241\365\274u\211\025\277\314\352F\276\335\333\031<\312(^\275\220|[\275\313\025\246\275c\302\362\276CSY\276\263Y\320\276\376\361\220\276\025 \223\276F\255,\276i\313\372\276\003\033t\276H\2050=\027S(?\316\343\n\275\2558\260\276!\235\353\276[\251\222\275\313\026p\276\027\\\002>\227\366!\276_~\'\275]\272\036\276\263p\330\276}\005\017=\304KI>\247\2470\276xz\t>P\317\236=)V\315=J`\240>\230~A=`;\203>\213\356\217>\215\250\237\276\302\240\250>z\010\002?\371\214\r?0\261\257>\316N$?\305\021\267>\000\315\260>m\002\257\275]Y&>\306\224\312\275cZ\227\2762?E<\370\200\256>\310\343\223>\005fy\276\026\273\247\276\t\261\371>\276\234\357\275+o\233/{\313\275\236\354\373\276\376\323\276\276\260\271\203=\307AW\2767\221,\275m\030\203>a\202\303>\364\030\215\276\304\316\207\274\256XT\276\005\325g\276\360~\266=E\261\t?$\205\025\277\311\014!?\nB6\001\253}\276>\365\240\276\230\232\350\274\256\262\340>\325\021\030=\376\2508>\224\365c=\367s\366\275%\247x>no\254<7]\305>\310\250\214>J\353\211<\267c\362=\226G\257=\004\263\357\276\374\270\331=\314\034\323\275\373`\205>\367=\023?\331~u\276\252<\275\275\213\020U<\262\251\214=1E@>\333\275-=\274\233\223=\200\315\211>\01629>\001\224\301=M\212\347>v\023\310>|\"\n=\274=\271>\335\014\021\276\341q\212>\367\335\212>\244\212\003?\017\221\336\276d\211*\273T\037h\275\245\"\231=\212\022\212\275$\336\223=\210\261\024>f\000\345\276t\223l>)$\016?\004\257t\275\016\274\016\276\352\352\347\2756\232\037?\276\320\022?\014x\207\276\310\274\033>hL\213>\271\003\027>\230\023\216\276[\204\252\276&\337\220=\354\240*\277\216*j\276\363,\301=Z\372\2509\221q\342\276s\025\032< \351A\274\265M\257\276\272\000\245\275K]\361>\032\r\317>\240\003\022>\331\361!\277\302C/<\352<\204>0\314\310=1\233\022>q\331w=b\260i\276\377_\267>\333\r\023\276SU ?@\200\'\275d`\337\276\227\323\225\276,\017r=\242\265\354\276f\274\002?\374n\210=P\261\006>\222T\306\276\027\317<\276\306\017:>\302\232k>\313B\262\276\346\020\213<\343\032\273>R\210T=\266\252\304>\363\247H>\361r\372\276\224\202y\271^\'\310=\005\256\005\277#\rj\277\265P\237\276>\270f>\2319\003>\217(\341>\210\244\331>\007\303\002\277\021%\232\276\332\377\353>\331\000\341<\365\327\225\276\036\350b\276\367\234\r\276\334\232\000\277\032\247`>\005\231\377=\034\023\213\276\310S\335\275\031B\203\275\264\354\273=\241\177\306=|,\"\276\235(\334\276\237\034\001\276\035\205\031\277\341%h\276\242\223U?\225\001\305\276o\231\251\276\221\341\035>F\2011>#\356\255\223iZ>\364\355\264\276H\311\350\275\030\021|>m\355\220\276\020]}>\004Cx>\201i=\277\336\274\225\276w4\030?\257\317?>\244\212\343=\217\357\365>^\254\214>\242\235\357\2764H6>\032!\212=S\260\311\2768,;=\221\360\210\276@\014\273\276\030\273\331>\326\251R\275R:\032\275\204\330\221>Ub$\275\377a\332;\345z\227\275R\227L\276&\340-\276\032*(?kvi>\222\r\320\276\353Pj\276\346\264\010?\325TW=\003\2072\276\t\341\243\276K\210\230=\274\006|\276\371j\321=y\215\312>\254\322\233\276u\371\365>\225\021\">fr\255\2737\2621>\036\002\345>/\202p\275\361\267\264\276\207[\246>}\307g>4\027\270\275e\314\267\2768\265E\274\350\334\314>\370&o\276P\232y>\331\334@\277\340f\366\276\200\211\366>\360\342\344\275\025\033\261>jC\241=*\221\247>\334\265\336=\203<\016\276\273\0207\276\033\210\273\275\355\3378>\374/\203>V{#?\007Q\261\276\211N\266>\347%\233\276\220\320\357>@\273+\276w\276z\275\"\303\232\275\242\373\235\276b`\225>\006\323}\275\341!\033\276\020\360\304\274+\310\263\276\211\215i>8L\034\275\312\255\033?\223\266\027>\331g/\276fJ\207\275w\2529>t\207L>\243JL\276[\362\312\276\233\221\253\275\333\362\253>@\027\025\2769\361\326>\236\013Y=\024\273\025>/Q6>Q\320\244\275\267\217F\276R\342#\276\314\225\270\276\2635\220=\031\005c=\257\376J>},\376=\211\212\255>\305x\323\276\223+c\274\214\351\256>\215\004#?c\227\034=Vo\262\276\365\341\304>\000@\347\276\021\027\334\276\254\205O>\035\n\304\273\303\226\272>\017\206H>=\376\t\276N\3155>H]\316\274\376\231\262<\245X;\276\256_\242\276(\367\227\275#\336\370=\336\221\354>S\343\235\276\217\317\211\276\325\302J\275\257;Q\274\\\255K\277\006\350\037\277\302\301\224\275\274\010G>\215I_>xE\255>\262\216\"\276\"\223\201\276\17793\275\265\226\302>\275\264\357\275:\'\321\276\205\3437<\010z>\275\353\274\017?;<\373\274\2175\254<\003\237@\277\325!\322\275|\225\003\277\323\010\210>\244f\017\277\216]\211\275\207\217\243>h\275\233\275\334\247\223\276\314!\315\276Y\232K\276n\342\337=\177\335\211<\315\201e>rc\372<\213\0241=\365\206\350\276\376\241\001\277\374Di\277\346\204\210\276\202\250\350>\321I\350>\004\265\026>\243\327V=\221\024\277>\333R\036\276<\326\237\276\r\261\341<\231\023\256=t\226\341=\312\364\255\275\303\003\245\276u8\017\027\036;=\031\337~\276B\217\034\276\304\247}\2767\341$>\036w\275>\232\315\276>\356\336\326\274\017x\373\276\255\036\376\276\0220\233\276 \264b>r\210\226\276x\207\305;\016\223}\276\350N\020>\316\271\027?!\351{>n%\026=\t\021\020\277\335 \225=\024#\215;\242&_>\367*7>\275\344Y\275\271l\024<\260\242N>*`\271<&\252\221\276\367A\211\276\336\301\302=\247\310\363>%\310\240\276\322\327\335\276\225\302\204\276\300\363\217\276\261?\230=\320\210\373=\354\r\241\276\327\323\342>F\217w\276\r\357\265m\016\246\276\361\373\215\275\321\234\307=\020)E>\024A\t\275b \220\2751\334w\276594\276>\350B=\210I)\277\334\032\032\276\275$\245\276z\260\246=\352\010{\275]|\242\275dfG;H\365\235=\260hN\276\246e\322>R;e\275\rb\211>\307\021\001?T9\225>JO\036=\213Q)\276\022\036\261>\266\203\025\276j\361\366=z\004\017\275ER*\276\365\030c\276\323\221\014>\321>b\276z\324\210>\224P\000\273NR\004>2(\236\276\006I)\275\374\277\361=P\374W>\201R\276\272\342$v\276\275\262\003>5)\353\2750\3308>\245b\r>\323\256\022?\036\367\323\276\376\217\030\276\223\355\306\275~\320(\277w\004U\276{\366\002?V!\037>\330\326g>\302b\217>\357M\244>q\301\270>\244\374\240>2\315R\276\2664\244<\017\371\275>\343`Z=\245\306+=\264\037\013?P\276t?L3\r?\000\307\352<\257\333k>a\336Q>\242\006\246=\347e\t?5\341k=\302eR\276\252Cg\276\221lr>\312\361\322\274\275g\001>a\244\203\275\361V\026>\260\256\223\276*Y\201\276\004\324.=\r\272\213>g\330\001>\020\300\261=\360\025\204>\235Z\271\276\344 \375\275~2\316=\027\016A\276\022\221\323>gjO\276\364a\006?\310|\t<\22169\2777\277W>\335\033\022\277\342\203\007?\375\366\000\277\254\344\252\276\371\247\214>\352}\364\274\362F\234>\362\2119\276i\323$<\325\343\375>F+5>\370x\240>\337\334\021\363\205\331\274&\001\014\274_\242\245\276\367z\203>k\305|>P\310A\276cOg\2769\267\242=K\256\301=>\265#>V\n\017\276\274A\347\276\262\007\222>\007\033u\275P\316\362\273F/\002\277\222\003\003\276\276\342\303>\220\006\210\273\370Y\r>\321\264\216>_x\303\275mH\021>\321@\037\276G\346\214\275<\307\272>\361_\020\276j\207t\276\320\327\223=\244\0268\275\250\317b\275Z\205\340\275\363Z\355=U[\217\276\351\363\210=\245\335\336\275\223\256\211\275\2316n\275=q]\2768\202s>\374\002\271\276l%\345=+\001\257\276\321\004\233>\231~\032?\322\305\215\2764=\221\276\200\002\230\276\250r\355=\337{\214\276\346\361\263\275\307\276\215>\236\216\227=M\360\331=e\216\264\275\333&\204>\254\315\226\276\205\214\035>6\244\231>\235\021P\2755\362\265\276\177\037\324\276J\002\360>\263c*\275(8h?2~%>\206Z\340\275e\034w\275\317\320\231=\242\261\035>1\334\357>.\262\300\276\214\014\205>\022\024\353\275\006\367S\277\306\342\350\275VD\216\276\207\324\322\275\375f\341\274k\n\377=\032\327\216\2758\034\303\275qc\267>/e\264>\016\306\306>\020&\361\275\0355\020\276~G\300\276\310\324\307=\022u\266=\374\202\262>s\312\017\277\031\335\225\276\372\014\371=\312[\010>\306\330\002>\202@F>\212d\002>\252\024\321\276\222S\226\276#T\255\276\363\213\261>\306K\241\275\007\337\230>\356f\225\275O}\213>\"?8?\265/Z\276\254\330\314>\204$\226>\033\203\306\276\225\024\003\276\246\263|\276Nb\215=\376\222\372\274Y/\223\276\235M\023\276%\335f>\265\3539?\316\206\212\276V\347#\276I\343\373<\304y\201>\205h{\276\026\277\314>\367pq<\333\351\305%\346)>\305\325\334\275\356\323\372=\376\353\021?\242\231H\276i6o>9/*>\226(\304\275J\345W>D\303\022\276\375\273\340\276\262\332.>:\351\027>\3538\014>r<6>\303\214\013>\305\037\264>\037\037/>\027]\204>k\302\323\274\275\332\217\276\221\235\241=o\340\260\274\347W/?\321\353\207\275HB\214\276:\240\234\276\216\222\321>\035o\006?~]\367\274k\276\246=A\316\357>\001\237&\276\334m\304\276\204\tM\276\301Y\\\276i\001j>q\362\346\275\003s\225>\352\236\310\274\207\n\244>\310\237\331>CQ0\276v\252\256>\222\030V\276Z_\254>\035\364\326\275\240/M\276\342\034\317\275\3102\323>\227\336\254>\345\000\031\276[l\302=\326\315\200>\r\016\341>\271\246\211>\360v\361\275c\237`<\000f\204>\3703\035\275\231;\350\273\303V\251=\227vs>\353\375I>\177\200K\276P%\025\2761){>fO\005?\035;\300\276\022I\354<\2142\031=W\027\304=\000 \251\275\231\337\212>\370\265\020>5/\030\275\200\030\304>\036\017q=\r\"\317>Y;\255>|\325W>\343\246!\276\321/\242=\320\335\364>\254L\212=\362 ,\276Q*\300=)\362\264=\372\263\317=\027\262\004=\331\272\206\275\217\337$>\257\026.\276-\025\361\276;\374\320>8\307\206\275\361\256\000?\241\2770>\312La>F\022&\276\353\267\253\276m\002\342\276X\344\270\276\200s\254>\335\201a\276\367u\265\274\021\360Q>\347\226\243\276`\251&\274\215\346\371>\263\333\177\275y0\200\276\334\301\026\277&7\310<\345B\000=\277T\037\276R\\\356\272\302\014\334>x8\320\275z\014\240\276\005BI=K\242r>\265\025^\275\000\231\331=wt\235>%\203\254>\305-Y\276\251z\313>\212\261\027?<\327\003\276\241\241\327>v\324\236\276j_\016\275\232\374F\276C\035\t>\017\372\235>\014\342\350\276)\002\272\275$\353*>\205?\032=]\027\256\276(\210d=\300f\314>+\242{=X\310\006>\330\200E?#\354\214\276IN\014<\365\333R;\313\020Q?:\t\271>Y\341}>M\213\264=4\316\366>\241\272\345=\371.\036\275\006\227\312\275\356\333\036\277\346mM\276 U`=6\177+>\207.\255=\333h\006=L\353\242\275:\0233\276\3663\001=l\006\337\275\342\320\205;/}\245\275\233\310$\276\010\234\372\275\231\033\255\275p1\235>\315\343\230\276\332\367\223>\027\255\000\275c\256C>\271\344\320>R\3554\276\332\317\246<6\334V\275y\230\210>VQ\360\274\233\216\242>)n\374>\303\n\t\277\354.\243\276\024\364\273\276\305&v\276\2219\250>\352o0?gSH>\250\324\235>uzP\276Li\274>\326\327\007=\177\023\006>Yg\331=\027_\260>\340\337\020?5\223\273=\305q\303\276*\250\r\276b\373:\276n\n\027=\216\377\370=\004O$\277\302\353\270>\276\255\305\276\357M\330<^\237\267\276N=\206>\352%~>A(\301=\344]\201\2763\276-\277\214\255#<\371\316%=\356\320\232=u6\222>\023\0349\276\003\305\003?\265\321~\273\237K\004\274\272sO\275L_\265\276Y5\266\275\315\\A\276d+\305\275)\214\\>!X3\277G\362n\276\242\215 \276\\\333\007>\215\370\024\276\355\314\245=H\r\266\275j\321\257=4\225\026?vye<\370n%\275\034k\322\275\275q\327\275\332.U\276\355\277\037?\264\202\221>\316\006\221\276\321\201\330\275\340\017\274\276\206/ \276%$\260>\243\'\264\274l\211~M\376\022>E\270\243>\335\327\225=+\246\211<\2447\362>\244a\264\275T\345\226\276N0\353\276\322\251\'?e\243\342=\332\300\016>\267\211S\276\372ic\276P\025,>G\017(?,\344>\275=\271\022?\245\001\263\2762\225\005\276p\263\n=\355\307[=\362_\312=\220i\347\275\252\327\375\276\215$\202\275\207\240t\276iG\005\277p\264\324\275\303\213\026?\013/9=\224j\255\274\242\245\364\275\33091>j\027^\275F\007\246<[yb\276e\346\225\276k`D>\006\3636\274\373\020\321\275\372\213\204\276\324\253\203>\0223\234=\"\344F\276\004@\214\276\272\344\232>>\373\310<\3647O>\251{v\276\004\316]>M\224>\276U\025\301>\341d\304\276\010#\362=\005\003\027\276tW\013>\004\371\211>w\253\017\277Lj\360\275\002\334\346\275\321xI=\230\215\303\276\203\246G\274\361\340\023\276c\267\277=\355\n\332>\030\366\331\275\357\022\344=ye\016>\261\326\230\276\243V\261>\344\206\206\276tP$>\002\275\263\275\302\363\224\276\364\312a=\254\n\335\276\307\315\265=\205T\331>%+\236\275\031\220\276=\255q\001>\211do=l\223\351=\3774\316>S\272O\276\245\365\276\276$F\366\275\357$p>D\021\034?\27499\276\360< >Q\230\275>;\346\036>\016\314\201=ds\211>\334q\004\275\013\326\'>\220\343\340\276\t{\227\276Q\352\216\276\310R&>Y\227\215\275\250\246\355=9X\230=\230\350k\275\321\331\210>0\303\241:\305Z<\312\216L>\240\022\017\275\222\306\267\276\317@\251>l\302\211\276\020\266?\276\0049h\275\260\020j=\212\307u\276\035\356\016>AR0;Q\365\004>\301\317\006?~\t\244>\244\312)?\320\033\035>\274\301\205\276H\231\330>|\377\317\274\023\356\007>Cj\262\276\246c\336=B\256\032>\231\r\336\276&\327\311\276=\353W\275?W\335=\232\370\254\276=\261\207>\031g\233\276Q-\322<\341\274\203\276\030=\271>\223\nX>;\230\315\275(\240\207\276\225\0260>\214\004\024>\366\314\302>Q\'\243>\022\331\202\276\004:\210\276\352\313\321>\221\366R=\264\327\275>\231\301l\277 o\204\275W\302\274=\213\245\200\276q\2638\276\335\273\333>\257\331\r\276?\017@\274\214R\212\276f\212I\274g\272\317>~\337\002\277%\260\334>\332\202\263>\274\240P=\261\320\224>G\024\257\275\026\362\264\276Y\270\325\275\346\006\226\276|\266\016\276\033V\217=I\345\311=e\0360=_\324g\276W\200\360\275\177Y\366>#\352\001>]\002\310>x\261\235\276|\002\211\275yc\316=2|\013\276\330\021I\2766\221\243\276\344!0\277z\277?\276\036\244A\277\320\262 \275\241\342C\276O\230<\275a,\355=\334\305\214\276\256\nA=<_\310\276\252wk\275)D\325\276\246y<=A\027n\276 v\007\276\227\353\204>\\Y\370\276\n\350\253\276\361\325?N^\256\276?|\225\276\014B\315>\345,\350\274\t4\337>\217G\202>\022Uj>\337\327\324\276\361\215\032\276`D\r>\223\321`\276\215\026\253>8\374\000>\233(q\276\3708\326>fex\273!\027\375=\301\274\010\276\270\205F\2753[\030\276j\254\330=\246\323\032\276\3066\216>\333\263\322\276\271\347\307\276\260\310\016\276\014\"\263\275\354p\210>\247\033\200\276\222\377v\276\177\367\247=uB\276\276\301`,=\332P}\276\273\017v\276S\322\003\277\034\323\3328kWK\274\331\263\'\276\303&\240\276\306\211\226\276C\363\252>d\2072>\274\266\021\274*\351\367\276\347\314\363=\212W \276\310F\010>?\253\'>o\372z\274re:\276\302\3677\276\3661\324=\365\236\206\275\033\243\002\276\307b\217>F\326\\>\273)\362>\2513\354=\373\024\253\274c:\241>VE >H\233i>\376\235\302<\235\257-\276\030-O\276E\242\026\276\370\202\212\276\257yV\276K\356j\276\232\324\216\276ON\022>\315\315\252>EP\035\276\032\336o\276\210I\312=\245-\351>(X\331>\330\274\245\274/\223K\001W\377=\234\311\331\275\364\272\271\2762n\226>\204\230\251>V\031\327>\241\316\202\276\213\006\354\276\010rc>\262\371y>\234\230\002?\274\306\005?\267\345\236=1<\220\276\211\370\361>\312S\324>--\310\275y\024\241=z$=>go\235\277\275I];\346U\202>\342^R>\226\310\020=\322\033\010\277\355\357\327>1\025\276\276\007\322$>\337(\247><\262\027>jE\245\2764gt\275\017\317\024?\031.\216\276fH\275\276`\363\252=P\227j\276\352\264B\276\302\274\211>A\327h\275\273|\227\275NEC\276\t\240\251>:\376w>SH\264>\353\255#\276!\224\342>P\354\265\276h\360s>n\333\320=6d\'>+\243\021=;(\251\276x%\202\276z\350A?\037\223\326;Oj\372:\031`N\275\273h\240\274\246@\364\271Ens>6\247%?\260\232\023=\276\273~\276\343\335\317\275F\r\003>8\326]>\251\250\002\276\315\001\377\276\\\371\375>\235\024N\276\0347L?\327\033\005\277u\036\\\276\002\311\314\275\\\203\355\276{Y)?\353|\273=\350\210\233\2769\222B\276\242E\262>\267\005\342\275\343\306\"\277\377\345_\276\365\277b=\235\2540\276%\371\t\277\316\326\237>\373{\330\275\267\022\276=.\215\026>\234\373\300\276\317\202\332\276\267M\324\276*\275\230=\237\215\023?\231\025\270\275\325\032\351<0\214\312\276\026-\246=\320|\317\275\262`\005>\tyB\276\205\260C\277\243\344\300\276#\013\232\276\224\307\317\274\230^$=\217H\223\274\360\357\236\275|\352k\276&\251\325\275\014(\310=\256\234&\276NU\250>\001\312E>\301m\007?\340\257\027?\330n\362=\n\216F\276k\313\331\276\365\n7\276E\261\353\275x\365\372\274Y\342o>x\"R\274\304k\004>UQ*>\256r\205\275H\252\375\275\023\232\243>\242:\311\274\375a\327>\247\250\203>?}\337\2751U\003\277\222\341\327\275y\034\027\276\246\306\377\275\256\024\347=\225z\376=\360\322%\277A\240e=_\202\020\276\362\t\203=W\035P?s\201[\275\025!\371>\224s\261<\217\224\244>\204\t{=)\265Q>\261x\231>#\242\033\276 \241\330=\377\241\225\276\244\361#>\231-\276\275[\302\345=\256\364\245\276\246\024\324=\023\020\213\2756\201[\274\256\000%\276c\204\016\276ht`?\022.\006?v\300\212\274\375B$?P\216\204\275\005\000\225>\365\334\204>\232\344\336O\\\023>LRx>\210F\r\275\024\313\203<\300\261\211\276\251\300\357>q\031\003>\\eK\275}o[>O\362\307\276e\016\260>\251\370\206\276%\251\241>_\036_\276\202\232\267\275a,\341>\'6\221\276UA\373u\277b>\033\253\350\276\223_\223\2740\274\022?\2704!\276\326\305\350\275\264x8\276\3412\021;\370I\240\275\367{\334>\212\332:\276\212-q>\272\302Y\276\345\347\372=\026f\022>\275\336\031>\325\320\232>)\351/\276\210\222\002\277\364\257\207=\211l\200\276\3611\014>\261\'\037\275\221\317\253>\236\244\252>\030\201\023\276J\344D\277\032\004\224;O\315(\275}4\265=Z\350\223\275\366\030u>\271\017\305>\345\206\317\275+\205\253>\236\377\r>\323\321\030\277Z@\007>S\253\257=UB\275<\337M\034>w\241\021\277\305v\221\276\216%%>mwh\276\274~\312\276KX\017?\223\007\257\276m\035\326\276\350\245\030\276\351\243\242=D\332\'>\365\023T\275\212\007\221=,\213@=h\364\256\276\244\306\225\276\243\337M=h\0100=\252+q>emR\276^>\261\273T\356\210>\t\002\033>\034\032\022>Gb\251\276\252\207\222\275\276\024\345>\000F\330=\214\373\357>3\274x\276vn\231>\246\304\025> \256\213=@I\371>y\022\240=\340pD\276q\337b\276\326\277\220\276\'\300]\275\326\255\302\275\330\220@?U\013\034\275|{\226>\001\035\224>\324\362\334\276n\326`\276\204\010\300<\360\177.\276\247\302\005\272\237\362U>\206\352\230>e\216\201\276\362\347,>\\\342q>\221l\007=Iv\033\276\355\213E\276\027s\273=\023\001\241\275\002x\232>\372\367\312\275\247\013l>KPI=\3028\307>\315K\314\275\345\217\033\274\327W\263\274hP\016\276j\0359?\305\267\021>\206\310\020=\256\275\224=xK\377>O\013\031\273\020\017B\275\350\213\220\276\375*n\276\014\033B?]\n\267>\203\2163\276\016\240\346\275\303\010\357>\321\217K\275\242\216\014>1\220\247=\260\263\021\275]d\267=\360-\005?\230J\223\276Q\266\237>\213},>\t\177\030\277\311\356/\277\233\276\227>\327_\232<\204\327\002>i5c>o\250\307>T>\332=$\302\246\275\3261\031\2753\2035<\214\035\013\273\021\307\007\277z]\262\276\367\000:>\315\374\330\276\255])\274\\\226\"\276\037%#=\220\363g\275\0220\027\275p\245R\276\274\344\204\276:J\016>y\356\001?\325W\362; ws>l\353\222\276su\214\274b\346\324\275\230\212\216>q\215o\276x\323x=\237w\367\276\263\373\220\276\315\355h\275\343\272\350\276\026\257s>\275\3738\277\177s\363>N\207\215\276HC\234=\236\277\223\276`\021o\273\270\036\230\27693B\276\345r\003?7\253\311>w|\014>\312\227\026\276)\341f<\375\371\007=\340v\205>\"Q,?B\204%\276\320C\373\276c9\200\276\336\250\246=\207\206\177\276\210\027\356>\323\0021>\200P\022\277\306\340\030>\364Od\276\353B\273>i\310\305\276@\000+\276\323;\016\275?{H>\021\347\277<\324\270I>_\275\344>\301\262\316\276\t\263\007?\230f\032\276.\3037\275ze\313\275Ry\216\274\355F\350\276a\321\255=V\304X=\236Q\237=M\203\017>\320\323\207\276\346\234\330<\312\"\"\2776\364\204\273\317}\201\275\336\237V\276\022@#>6\020\003?\301\223\031?}\303\021=\007\341\005\276\303r\212<\013\376\'\276P5\322\274\315L\365<\005v#\276\375\331\322=\203\245\006>l\342\211\275X\365\324\275\234\307\253>\371W\032?\206b\307=l\224=\277\271q\n>%\016\307=\036\247\234\276\253\033\232>\335+\224;\301\300\021\276\024\316\n\276;\336\306\275\365&\310\274\n$\212\276\022v\351>\032\265\374\275t\235\227\276\",\025\277\010\362\243\276\314C@>\031\217\244\2764\007P\277-~\257\276\001\024V=\007>\233\274\301\264\032?t\314\236>\026?V\276\233Gg>\220lp>\220L\010=\'\226\330\276\331c\250\276ne\203\274\014p8\276\314\256\372\2769\371\033>\017\001\341_\354%\276\036\230w\276\350]\207>\303\372\017?\010\261\230\276\326]\267=Mk[=t \351>f(,>dn\256\276\367$\220>g\340\300\275\200\025\307>D\023}>?\212W>W\236c\276\"6\261\276\275N><5\030\247\275Kfv>\354\334M=\030\3164>\027\200\260\2750\236\036>\034\366\354=\357t\030\276r2\273\275\tR\376\276\204\224!>\271\026\256=\353H\r\275\203\266\330\274\2331\261>\350dW\276\303\222Q?\3032%>\353x\000\276aj\240\276\"\337\023\273*\327R>n/\311>\334\027\307>\307gV>-N\374=\300p\360\004\334\244\276\277u4>p\010\252>\263\004\335>\203\351\342\276I*\211\275>\311==Y)A\276\374\256$=\262\333+?\006_\236<\377x3?\016\237r>\200?\316\276|\222<>k\266N\276\222\264E\276\365\316z=(\363\236\276\340ZN\276j\326*>\230k\250>u\2529?\002y\202\277CA\344>O\014\273>\312\300\031?\271\364\353>\322\275}\276\265\t\030\277\346\2169=\254oM>8\245\007\276\272\202\266\276\312\021\326\275\330\036\200\276O\223B\275\3273D=\345\363\246=pu<\277\t\271>\276\\\277E\276\301R\006?\233%n\276\014\276\326\276C\343\334=7\266\327=~f\211>\342\327\244<\217%P>#\370N\276\371\215\304\276\2345\204\276\376J\315<\271\325\214\274\241\311V\276}p\201>\364r\237\275.\257\234\276b\271\024\276\024\324\n\277\331\016\367>\312\365\242\275\313B@\277\320\372\013\276[\364\200>\0131\000?I\224\023\275\357\254\255\276\306\305k\276\201\250\r>G\306\272>x\212 \276\345F\312\276\025\230\323=\263\225\317\275L\021H>7\231\037\276\1775\240<\315B\270\274\216v\274\276i\221\205\2763\031\213>[\213N=\231\307\307\276\334\356\243\271\3272\277\275\240\313\r>\373\203\331=\304uN>\235\271/\276\212~N\276Z\2139\277\303*\212\276JM\000?\220\032\331>\364\323\330>;8\353=4\352\310\276\263\226\203\276^\200\204>\314\036\260=C\032\232>\000\253\265\274\\\005L>\240\327&\276\300\353\035?\005\233@=\236\346B>BG\037>\215}\366=\233$\253=\002\360U\277\234\014\333>\274\367\254>\256\226J>\001\030\336\276k\332b\276\212\026\314\272p\317#\276\334\204E\276z\243\263>\245\tP=I<\025>V?\352<\216\026\315\275\314\310\227>\341\335\242\2758eN\276;\232\225\276LV\326\275\257\332\024>(I+\275\225\361\351\341\272}\276\014\016\205\275:>\004\276\273\272\350>\024\215\010?oU\341\276\274\225\320\275\023-\304\276-C\243\275\215\017\214\276\324D\036\275\372\315?=\302\332\216>\177\216V>\227\031I\276\217\306->\341\214K=0\223{>Q\357\326=\272f_=\311\301;?OR\352\276\375\030\330\275\205\222\267=\210\213\007?G\230\201>Or\304\275QO]\2751\201\367\274T\370\033>7\365\372\276\207\027P\274\215\275\"\276\265\312-=\262\236\n=\350\336\375=J\001\277\275\236\001L\275\3645\222=\221\361}=yg\002\274}\n\306=F\352!\274\234C\320<5\374}>W\005V?\353\315\337\276\304|\370=}U\177\2766\010\276\276\n\255Z=\315} >[b\\\274\360\244\344=q\315q>\331D!\2770}\215\276X%2>=\253\234\274_\316\304\274\305\221==/\'3\276\347J\245=\374f\240\2753\254I>S\222\373\276\377B\351=na\270>\322\375}=\256\t\002>\362\202(>\322\205\341>:\307\355=gS\333\276O\357\222>\324\262s>q%\313=\313\221~\275\002\333\353\276\343\'\231=\306\335\024\275\221z*<\201\377\267=\021\307\002>T\344\304\274\365|\007\276\302wP\276\2363\036=\013\232$<\365\207\312;z\210\320\275\320\255\031\275\010\000\346=\300\312\306\275l\201\004>\r\346x>,\235>\275&\355\236>\035[e\277s\314@?\023\370\000\277{v\363=5\tX\276\211\031W\275\346\021T>\230?\250>D\010\004\276\006\244a=\206\332\010\277\347s:>.\316\374<\225\223\020\275g)`>\024\021m>LM\212>\202\016\326\276\313\307\343\276aH\334>\363\225\352>Q\231\231>z\214\033>\024\216W>\332,\274>\314\301(>4\347\270>\017\305\027\275\256\371\275=~\2640=\374v\017>8\305^\276\216\264\322\276\312Q\245=\366O\235>\202{\r>c\237\222\276\373\222p=O\347t\276\222\253\204\276\227\314\252\276=Q\202=\346C\024?\333\024\255\273\234\325\325\275\312N9>\234[\214>\234\243\037=\365\363\333=\022E\312\275\305H\212=\2266A>\323\'\343>\276A\256>\253\276k=N\227_>zd\007\276vdr\276\314\373\335\275\262J \277\265#\242=U\332\320\276\231Y\336\276\331\013\220\275\000\201\222>Y\370\261>\3423\r\276\302\267\223>W\224M>\022Z\242\276q\220\177>\261b\006\277\214\002%\276\256a\215\274Yo\317\275e\311M\276k\376@\2772\267\006\277\032m\307\276\273\362\272\275\256\344\260>!B\201\276-\235\202\276\353\320\324\276{\360\236>\255^t\276y*g\276\340c\232iCw\276K\003\277\276\227^F\276\030f\223>\304\210f=\034T\310\276\034\020\231\275\213 \314\274@\370\265=2\224\025\2760\320t;+\212W>\333\263\203\276.\272\014>\251Z<\276Pi/\275J\007\327=\364(\255=\264\r\304\276{\3061\277\216|1>z<\203\276\355\330l\276|9\320=\302\240H>\306O\332>\345\325}\276\255Z\r>\227z\264=\212ee\242q\331>\344\354\272<\205\215q\275\034a\350\276\331\321\246>\000Q\r\275Bty>\266N<=[\264\337\275\200\tC\276\310\365\316>\310\347\201>\263[\370iH1\276:\\\206\276\272\274\374=\215\201\345\177\341\244>?\332\304\276\306C\271\274R\363X\276w\305\216>\364\335v;\300\222\256\276\033z\344\276Y\376C=\2579>\276\010\336\006>\020%\305><3\027\274\340\374\244>~\030$?%>&>>\306\321\276N\371\021\276Z\214\233>\301\177\366\275\361\200\"\276\305^\343>\010N\313\274\210\214\231\276\205\024>>\250\254\317\274p\021\'>\275\244\215=\260\304\004\277\355W\365\275\323U\212>h\353;\276j\275\305=2\243\373=\t\333\347\275!\2768\275\325\024\303=:\224:\275;\210\260\276\360\216\024\276o}\244\275\275}\363>\2251\030>X\275\204\276;\211\017\276\272\007\211\275f\311\313\274\201\301\220\274\246\007<\273C\001\036\275 1\276>\001:\006\277\032\270\306>\031G\026\2774aW\277\361\3654>\231\356\n>#\256c\276h\361(\2767\272\207>\211\301X=\024my\275\310\243\276\276\276\360\350\275d\244\355=\353\035r>/\376\034\276D\326 \276\006>\016\277\022)\005\277]\317j>\302<\341;bl\301\276b\237q\275\004qE\274\230K\031\276RFI\276\263\006B\274\325z\327\275#\335\210\2763\270 \276\225l|\276\';\234\275\003\030\267\275q\321\032\276\260\251\377=\276\303\203>\217\361\234=\255\351\016?5\317\331\274T/\320\275=\204\275\275\214\220N>c\211;>i\355\302=\202\232\360>L\342\310=\221\267\010\276X\247+?\031\004e\275e$\267>\031\237x?\354\323\214\274\363i\305\2761f\226\276<}\271>\330\"\356\275\204?\314=3\003\274\2767\340\365>\337\243\027?<\344\210\276\256\3468\276\212c(\277\241^\241\275\375\327\375\276p \341\274U\344\002=\020\310\374=\241h\376=bi?>\303\354\277\274\033\375\376= \224\331\276^2\321\276k\014\232>)\242\344>p_)\276e\310\202\276\251\234\000\274\242\270\235\275\340\246\216\276\252(\247\276\023F\037\277W\005\027\277jhR\274`\331\t\274\235\033%\2756\276+\277h\035\310=\\\364\203\276\226\241~=\2143\236=f\205a\276dY\377\276\360\206r=\250#\254\2766\250?\275}\222\227>\242P\203\276\235\025\221=\333\201\034\277z\255\224>\214^\007>\371\213\037\277\246\371\263>;\327\330>\361\300\261\275P\206\016<\240p\333\276\315\311\r\275X;\245<=\222\261>F\356\274>\n\337O?\004\361D>\212\352,>H\216\177=\250\255C\276\255\000\214=.B\211=\270Q\002\276Q\253[>\013\236D=^\316\006>\274wZ>\313yF>\224\334\200=8\302O>\213o\231\273\261\277\021\277\023\017\246=\256\0167\276\216a\371=\361B\374\2761\301.=\022\267o\276\034\362Q=B\264\025\276\323\r\020\277\332gL=\0326\177=2\202\222>\320;\026=&i\372={\331\351\315s\246=\020L\003\275J\334\240=\264\214\243>\0108\225>` \352=\024\364\000>@o\220>g(\310<\024\312\314\276\273I\254\2759j\210>*;q\275@3n\276\255\324\371>\037\350\214>u\313\256=N\023_\2763\202\351\275\275\251r\275g2\026?8?\317\273Z\377\316\276Z\307\266<\010\344\376\274?\267\325>\273\332f\276~Y\301>\252\373\310\276\256\202{\276\304\310-\276\334\313Y>\003\255\261\276*\330\336=\0250*>\367\360\010\276\202)[\275\273\273\353>\250\302\227\276cV\020\276\375\256N\276\253\205\205>\237\247\257>3\243\226\2767\202\204\276\002\330\343\276\241f\232>\241\227\235\2761\266\226>\353!i\275\037\346\022\2762\027g\275d\243\245\276\245L\031>=p\021\275\024\335\014>\352\255\344\275]\226\\>#k-\276\375 \275>\362\227\\?\"T\273\276\305U\n\276\3153A>\274\255-\276D\212\233>\346\346\227\276\264[$>\335\364\366<-?\177>\266C\356\276/g\333;\306ah>W\253\037\2760U.\274\267?7=\177\204\307\276{\365r>G\216\r\276Q\301I>\312*\327>\233X\376>\213k\214\275\213\246\225\276B\327\323\276&\365\004>_mp\276\347\023\322<\273A\r=\250\2479<{\377\231>pt\241\276I\023\251>>\240\220\275\356\344\013>J+\223\275F\267\302>\260\365\177\275\317JX\276z*j=\333\206\002>\333\273\020?\013\302\n?\'\013\241=w\374\201>\312\363\301\275h}\244\275\227\270\030\276e\314M?w\304Y\276A4\021>\032\302\205>\216F\024\273\203\306\205\276{\315\217\276\256\251\237>\370\216\355=\346B\232\276&\022\330\276\225\334\203\310\025\000>[\230#\277\004\005g>\255\270Y>\340\032\237\276\247\017<>\370\313\310\276]\242\230>\322\252\244>X\234#\277\316h\214=l]\366\275x\317Y\276\363\272\205\276\004\302\027\276\341t-\277}\253\270=\363M.?\237\005\330=\200\231\224>p(\261=\254\220\025>O[*>\302\217S\276s\020\031\277\263\356<\276\347U\354=W>\307\275q\311\303=)\322\253>9.\226\276\252`\252>\245\3436=\333\242o<\016\2579\277\3746\343>e\031\036\276\305\350,\2770\322C\275\ng\243\276,\231$?\010-\016\275$\372\355=\352\275\336\274L\025\206\276\265\370\346\276\353\213\203=\033\274\347A\201\324>gYt>?~w\276\246\332F\276%\350\231>\202\336g>\271\270\371\276>\025\r\275Z\215`;\332\027m=G\034%\276\225\330\210\275\201E\022\276\347\231\003?g\362\331>>\214f>\004\242\276>IU\334\276\377\326@>\231q\363=\237\260\242>V\306\242\276\374\240\350\275P\214k\275\357\314\277\276\301ce\276\016\032\213\276H\t\210\276\265\315\276>#\212\246>\304%\311>\371m\253=J\033\354=\366x\027\274\376[d\276\225\370\251\275~\360\017\276b)\253\275z\373-\276\307\352E>\233\261\234=\267\355\255\275\217\234\005>\253\255\214>rn\361\275r\306\234>\201\'H>\362\200\t\277\353\277\244\274\233l\252<\373\372\257\275\371\216\206\276\315\316\255<\nN\324\276\227N\207=\014p$>\266\276\020\276\335\013\263<\300\237\003?\251\210N\276o\026\276\275\375vH>\260\203\233\276)\037Y>\007\233}\273V$\252\275\014\363\242\276`(,>,\014\260\275\234\177k>\177@\\\276\374\257\200\276q\232t\276G\031\210\276\013\215@\277\322\373\266=V;3=\257\2467\276\216\343\231\276\256\214\206=\252\267\277=^\223H\277\362v\226\276\026\035h>\016\206\032=4\261\211>\360LI\276\310\320)\276\014c\024\273\370\272\004\276\371\343\354\275\256\033\265\2766)\347>\204\317\036\276\264\341\222>U\226S><(\323\276v\247\377=*\2503=3\\\023\275\007\350\322\276\237s\330\2753 L\276B\264\265>3\025\026\276~\227\241>8\331\301>#+\020=\033\364\'>1\377\236\276\212+\343\276\373q\001\276.\026\316\275+2:>\000\260N\276\n\235\001?\376\350\006?\377n\364>\332\342\000>0|\023\276\340\334\201>8\251\242\276\306\345 \273\006<\201=?8\346\275~J\371<9\337\022\276~\006\222>\212\3254\275V\247\205>\237\245\236\275/\202\320<\257\206\264>P\340!\275\255\232z\277mkG\276\207\021\252\276\007\376\005>\230\'\377\275\316\006\202\276\363\237\253\276P\314\264\276l\215\227\276f\014e>I\370|\276\t />Y\273:\276\377\203\360\274\203\003\320\275\344|\n>\317\304X>\207\241\231\276\226@F\276\t=\222>\017\254\320>\032\355 \273!\024\307\274\225\177D\276u\372\222=\210i\206=\321\333b\276[\"\037\276f\006\345>\341\3256>\000\210\016=X\250\335\276h\336\020\277p\254\376>\236]\305\276\t\370O\2747\320\330>\233z\023\277\205\201/>;\027\231<\245\206s\276X)&\277Hqj>c5\357<\340\341\224\275\270\366\250\276_`\257>\3633\233\274\327M\020>\ng\272>8w\254\274\274+\207>B\250\357=c\354\365\275\034\036$\276i\256\220<\301\351\031<\204\330\205>\343+\317=$\351\240\275\\\221s>~\313\214=\024Z \276\364\303\314>S\252\030>G\334\202\276\372\243\374\275\223\325q\276\307\203\035\275\303U`>\336\233\326\276\315I\t>\326\342\300=\271B\"=%V\236\276\306n\203>&J\257\274\236\322+\276\353\034U\276o\334\370\276\023\t+\275\265z~>\375k_\277\261S9>\267\230\231\276\331tZ=\'\347\351\276\363\006\220>\352\376\364\276&u\332\275\246\327\370\276\313\320w\276X$\231>0\305\310\276\330\337\026\277J\265\213>F}1?s\303 \276N\037\037\2768\334x\275\315\365\030>\341\205k\272\274\365\263=b\370\033\276R\212W>D[\377>\032\0332>^\206\007>O\037\220>:\016\332>\214\242\014\275Fzo\274\324\364@\276\3522\327=\331\236\203\276\240)\023\276\026\355;>l\301\210\276Y\206\263\276{\004\314\276_\017\352=L>\342\275\213\371\221\276\337\022\216\2759P\r>h\240\247>,\022}<\312\010\265\274\275k\030=\321?\230>U\330\\\276\351\327\376=\265/\257\276M\032\203\275}\327*>\204\215t>\004\231\215>\207y\037>y\314/\276,\030\007\277\361\035\253\276\016q\002\276\0025\310\275\242\225\024>\023\363\002>\020\261{>\371\323\233>\322\375\277>G9X\275\235\225\345\276\252^D>H\316\265\276\212\235\325=\370\016\263=(\177\276=\374D\026\277\357V\272\274\263\373\304>\2207\020\277\360\016\227\016\\`?\327\312\274\275\355\376\204=\232\037m\276\243;]\276~\021*>\225~Y\276#\214\245>\036\307*\276 H\312\276\004\2237>\034\216\336>\251q\275\275\342\357\020=\200\332\031>\211?1>\010\365P=Z5\373>\0233\021>\275\251\000?\362i\"?\222\362\346\276fg\013?_1\336\276c\252p\275\330b(>[\035\213\275\277\201:>\014Ek\275_oQ\275\017\222\351=\250\315\026?\267h\204\275\271\035\372>~\303\246>t\311\277=.\363\311\312\310\034>mG\311>\304\336)\277\237\0321?,\245\177=\266*\374\273\302\t\356\347\331\376\276;\302\226\276\325:\371\275\376\222\343=\361\301p\275)\265\022\276\343\371\335>\017`\230\276-\340\031\277\021\365\322;\250\370k<|\007\365\276\315\314@\275\235M\301\276i\177\216\275C~\243>$\023\265\275\361\177\267=\232r\360>\312s\336\273b\212\241>\005\003\010?\364\355\006<\235e!>\366B\354\275\252\222\027>\024\323\203\2766\273\303>\302\206q\276S\201V\274\325o\007>\212\035\035>d\213\254\276\254\007\253>Q\177\232>\224\007\002\276\002\034\213\275#>\004\277C\265y\276\300\325\331>M<~>\007\200h>RP\031\276\264ZU\275DD\336\275\250A\"\276\260.\217\276\023H\025?F\2118>o\342G\276\354[\370\275\277\263R>P\001[=\330\3770>\251\270\304>\374\007\322\276\216\216\276\272\002\021\277K\210\215=\021s\202>\274\362\216>d\327\306\276\211\030\017>3\023\234\275=w\216\276\226P\201\276 \345\004?\211=\207\275H\"\310\276\223\316\311>[v=?Xo\333>\322y\314\276\"u\004>\351Z\020\277\211\002\267\276\014\226\314\276\251Q\000>\177g+\276\305L^\276\361\033 \275\313\370\004?\222\275o>n\243\030\276^t\034>:\000\355>P\273,\277A\252\227\276X\205\242>\354\013\214>\261\345F\276\\\201\232\276\310\n\317>\346\356\226=(G\t\277A\2449>\231\0142\274\235\217N=\370\003~\275\030\220\273>\007]%>\036\"\346\2768\302\311>\247\240\242\275\351-\226\276gv\356<&\201\312>c\333\273>-y\212\276\323\200\254>\3136>>]\273\244>\367\377B?\242\364!>\354N\304=\252\376\016\274\323\032X?L\020e>\026\312g>\264t\026>\341\231\257\276I^\226>6i\222\276\367@\001?\220\212\303>Q\320\256>~\211E=G\247\243\276-\334\025=,\351\177\023a\021\276\031\260\261>4\237G>\036A\247\2751V\027>j\371A>\206\247L>n\210\r\275\035\331&>\314|T\276\\S\356\274\245\320\212\276\355\363\316;\302dc>\362\251\023\276\311\207\227\276\311!\224>\322N\031>\326 5\276\210\270\315\274\256\004\016? \370P>i\262\262>\371\242\200\275\367\006\336=\000w\233>\364\021\236\275=\247\000\2765\347\007\276\2711\033\277a\225\023\277A\001\365>\355|/\276\361\016\025>D\006\203=)\336\346>\230P\300\276\r\250\300>\375\251\305>0\311A>\266:\013\276\233\241i\276\366\350\261;\231;\362=\217\211\226>\007\331\203\276n\353\020<8\260\016\277\2701&\2769\321<\276~*\200\274\013\000\364>\004\362\274>\013\222\'\273\243\234\023=\201\004\257>v\005z\276~\356\270<&M\204\275\004\374?>\277G\362\275\014/\254=a\327\013?\223\000\351>\242\364K\276\356\004\235\275\226\327\002\276Q\373\314\276\303\330\"\2775\255\325\275\212\273/>\213\021\360=w\327\224=\265V\223;A\354j>\327\216C>\333\264$>\276*~\276\312;\360\276\346\371\221>\236\233\177>Q\262(\274\250\221\'\277\371\216\026\276\030\343\311\276rz\021\277\264\215\251\274Nq\222>\1771\206>\376\006\330>\374\036\221=\345ug>\266\313g>\331\340\315\275\232s\r=B\255\267\276\235%\256>\001\n;>\375\315\007\276 l\000\275n\252\244=,\236\304\274\035C\031>h`\375>\366\272\347<\333\306\217>)\341\202\276\327\202\305=\2745\377\274\230]D>;\322\260=<$J\276\357DN\275\317D\014\276\n\204k>#v\270=\265\373\254\273\212k\215\276X\212\317\276\312M\222\276\357ph\276\376<\232\2756:\r>B\347\240>G\374\n>\332a\242>\270\3255>\315\353\266\273m\261\314\275\357\005_\276\337\254\215\276)\331\314\276\213\377\265=J\001\004=\275\372J$t8\275\234B\337=e\032,>CM1=\245S3\276\233\247{=\356\305w\275}\225i\276\233\222\306;\036\2404\276A&\363\251L#\276\026x\034>\255\307k\276|\273\303\274\350\273\377\275\216\307\276\276\2400\220\276\177\006\202\276\256\374\023>{\202\376=\365\025\350\276\2330h\275\212\270H\276\367\212\020\276\016\377\355\275\377\007\314\276c\344\300>\234\211\226\275B[>>\213\3473\277\270\361\007?\033\356\226\276\351M\234>\353\034Y\276\016\031\036>N\031\217\275/\025\323>\276\203{\276\352\001V>5^\206=\211\232\005>6\006\200>\371|\235>\223H\014\276\334\n\004?\357W\340>\227\346\370\276?\217N\276\221=~>w*\031;\210\240\233>8\212\200>L\342\004\277\026\026\'=\n\351\252>\314\377\251;\317\323\217>\303\204\264>m\326\315\275w\306\357=V\177\000\276\036t0>3\223\026\27711\260>\302\320~;tXT\276\005z\251\276|\035\023\276Q6\263\276\346]\263\276~\275\232\276%>\'\277{\240\317>\242\177\244\274u\033R\274\031\356\"?\243\327\324\276cZ\252=\230\020\004\276\223R)\276V\212v>\212\3020\275\301Y\365=L3\307\276\205\261Z\276\227\0339\276\213\363Q\276\361\232F=\026\221O\276\247-\016\274\021[\230>:4}>LHp\276\033\366\214=\327\000c>1R\221>\312md>X\350-\276\363\214\202\276\224\302\224\275\213\\\036\277\014\253\260>\366H!>\365TM>5y?\275\025\005\254=\355l,\276\241\270\314>e!\354\276\031\341@>\202D\033\277\360\372\000?\001K\001\276\357\361b=y\034\224\276\226R\277\275\020\037S\276.\230{=-\335+>\316\301x>gH\006?j\211\273\275\'-1\276\200\252\005>N\326\201=$\3337>MU!\276\335\254\201>\346\024\352>\250\371\306=0*\351=j\374U\276\227\2647>\006\227\342\2750\302t>#n\211=.+H\276_f\251>Cx\006>\006\360\241>F\303[\276\226\252\023\276\002X:\276\262\274\371\275\\\306\271>\300\271\260\276\311\003\035\276\330a\257\276\031\234\014\277%\270\230>.#\362>\213\300\014?\304^C>\333\350\t>\230\261\002\277\267\234\230>\206\324\356\275\332\200\215\274\337\312&\275_\004\245\276\344\311\010\276\017\356\t\275\373R\035\275Y\237\214=\374\307\241\276\215\274\005=\023\"+\276\323\216\260>\267\007>?h`\202\276\017I\222>\031j\245>\0240\334\276,^\336>\236\320\2549\034n\006\277\213\036\242=C,\010=\320i\312\276\2554O\276\221\205U\276\350m\013\277\215\316\215=h\215v>\201\030\272\276Z>s\274\247\031]>p\273\"=\376dw<\006u\253>\352\203\337>\254\247h>\257\261\273\276.\323\357<`^\207=\0144\252=h\265\225\276\025Y\200\276\303x#\276\332\312\334=-\252<>\350\002p>\334\301\266\275\365\3750\276q\000+\276\014\177\270\275b,\357\256\230\331\275\365\352\330\276h*w\276Gt\343\276\245\202\331\275\347\315\370>%%o>M2\020\276\267UE\276\256\373*\277\001\377\002\276\316\335\351>\\\025\033=:u\315\276i\254D\275\'\275\250\276\337\342\227\2765\3470\275]A\035=\204\004\366=\357\200\203\276\224\021\247>l\357\255\276\016\247_>\322ck\276\001V\265\276\342\215\271=.\006\004\277\000\245\326\275\272o\034?\336\000\243>\372\335\277>\235@\250\276\002\276\225\276\367\023k\274\002x\005>&\266\233;\3770\276>\355\022\341>\035@e\276\342\310\017>\2711\370>\274\226J=8,b>\026\211\343\276\037R\270>\3224\r\277h=\n\275\265PF>i}\025\2770g\036>Fg\276>]\304\204>\323.\321\276e\314\310\2762V_>\343\002\023\277\366v\352>\205\210i\276G\361\227\276\206\310\261\275W;u<\262m\257>h\250\311\276\017\303\003\277d\034W<\004\357^>/\032\\>~\340,\276\246\026\376\274\222\002\267\274\250\3016>\365\205\315\276\213\002\265>\244\244\275=\314\263B?Z\255\224\276a\317\005=v<\367>\022a\024\276\363\334,\276?m\211\273\350|\351\273\3671\030?\205\200k>,\227\274\276\'\005\373\275\360O\306=\336N\313\276cd}>\346X\376=\014S\017\276y\345\375\275Wv\225>-\372\233\275\215\371\030\276\025#\315=\245\357\020\275i\367\031?kdh>\241 \254\276Xm\267\276\236P\n\276A\254\265\276\346]M\275\350(\276\276\354\005>\276\320\304E\276\205N\276>k\263\234\276\010$a>\337>\243>Xl9\276\001WX>\201\267\177=a\352\005\2778\027\'\276\"U;\276\203\377\014>\347\220J\274\023\033\323\275\014\033\022\276\343z\226\276\"\037\223\275\270I\210>\245\\W=e\300\211=W\221(\276 \355\257\274\002Z\021\276\264v*?D\344\263>M\230\260\274}E\357<\312\312\230\275\321\036\327>\371F\312\276\n\014E\2764s\205>*2\213\275\205!\330\272\023a\203\276.\352\n>Z\262\230\276\004;\265\276\352|\206>K\233\300>\302\215\266=\236\321\357\276\206\233\256>\207\204@=P\346\346\276\217\350\001?-\035\333\276\211\317\252\275V\267$?j;\262\275\277A@\276\346\273\261>\005\224%\276|\315\035>\342\203o\275\246\367\251\275\027M\025?$t\200\276\256\037Y=\270\307\n>\245\265\240>\336\217\246=\363s~\276\222\342\211\276\177\014B\276\037\020m\276\247\321\254\275%\034.\276\200\326\222\276+\363I\276\376)\217\276O\005\010\276Sx\273>\n\r\017\276s\231M\274\023(\251>\320\347\336>\035\360\342\273\206m\263><\312t=\245\226\324\274Ehp\276\007\227!\275s\021h>\376\325\271\276\261\026\257>\341\230\321\275t\253D\276\247\235\036>\3247\031\276B\225\265=\031\366M\276T\360\316>\223\344z=a\216\216>\021G\334>\365\306\317<\232gJ\276\313\252\211\276\323U \2743\260\307\275\312!\244\276V\375Z:o\200J>\241o\225\275O\345\024\277\032\257j>i\233w\276\023Wm=]\371\305=]\322\000\276\333\271w\276~f\330\276\001>\313=\005/\242\274yN\013\277\027\354\n\277\314\341\026=\311\245j=\225u\325\274\310\3636>\033;^\276\245N\213>\274\347\231\276\237S\031?\307\344$>\332\316\317>\345#\262\276\250\330\251>\354\362^<\273~T\237\3407>h\347\'\277\320{$??\332M>\213\315\252<\241$\035\275 \330\017>\024`\346\275w\371\347\2750\326\205>^$?>\016z\004\275\003\367\000=\307\014x\275qv\327=\221}|>(\217m>\022\246>\2759d\327>\207Y`\276\337\271\322<\tf\272\276\365{(\276wN\363\275F\2020=vC\026?;\330\356=o\026\r\274\003\201R\276F\235\223=\314\356\027\276\365*.\2764\274A=O+i>nZ\246\275~\351\227>\236\3522=($\t?\215\002j>\t\340`>\344\362.>+\014\003>\326\356\016\276\212\370\252\275\206|\244\275\251\276\202>\035\305p\275\256\353\232>\323\335\253\277\207\006\'=\365\020(?\322\032\317\276\301\262\314\276e\315\215\276\2067\235>\337x\243\275\234\253\026\275`\203\037\277\322\220z\276\035\262\317>)\324\010\276\237\255\000\275\254-\222>\350U\273\276\244Z\342\274H-\353\275\233\\~=5\240\236\276\037\252\033>\227\004\270=z\233\244=C\014\242\341\207{>\360d\242>pa\r>\242\261\r=\037,\271>z4\272\275G\314\313\276a\333\320\276$\354)\275r\353\243=m\250\002\nu\033\277p\320\343>_\325?<;\322\"\276\273\254\016\277\357\333\220>hL\326\276L\347\306\275\325\334\022;\201\301!>ON\032\275\340\333\324\276A\305U\275Z\031Q>^\252\272>\021\234\346=\3006O?RI\364=d\257\376\275\340p0>g\025\234>_\351b\2765\337W\275\321dr\276mLc\277y\306\223>$\000\r\2771\330\201=y\332\000\277\211E\233\276.+\312>\030O\243>l\023>\276\215\301\356<\005\303\320>C\335\200\275\202\322\232>\356\036[\276\325o\334=2\261:>\205\331\272=\207\220r\276\255\215\360\275\200\020\242>\037\030\247\275\315\210\246\276\237\355u\276\200\020\323\276\317(5\276\007\207j;\252\332\316\276\225\027\270\276/\245\373\275\177J\371>\334X\216\276\253\230\204=\320\026\002>\246\013e\274`\314\031\276\274B\207>t\242\255\276\340,\202>\022\013\261=Rp\233>\374\036\n\277{\365?\274@\016\036\276;#\000\277`u/=\302\201\t>\330\200v>\246Z\225\276\263_?\276\227B\324\276\272j\374=\375%\364>G*\255\276\355q\247\276\207A\007>\021\227}>\3611\246>\274\313\303\276T\232\007<\2348\314\276\3304\366\276\305\017\341\276G<\205\276\363\333*>\320\025\201>y\310\222=(\230B\277<\353\322>\007\252\316\274Hq\001>e\316\272\274\300\244&=\256\'\346\275\347\301\225=X\341[>\367|\037\276\r\372\t\277;\366\005>V\367\036\276\340\004b>:\322j\276\0241n=T\017y\276vwI>n\253\222>\345&\204=>h\003=\234;\203\274\366\354\266>\3633\331;\300\330\200>\207\266!<7\371\226>=\271\023>\225p\033\276\363\304\372\275c\250\203\276\305\377\224\275\246n\207>\212j\006>\364\242\370=_al>A|\021?\003\270m\275,\2422>8\260|=\346p\263\276uC\213>5\257\263\276x\334\332\275z\244\366=\'\247x>\"\233\010>J\271i\276\013r\033\276\252\257\362>\033M\206\276\313\231\027?\nH\210<\374\244\302\275@\335\271\276\253\227\010>q\377\010>\306\330m\276\304\266\201\274\375^A\275\\(\207 \001\230>@v\037\272\314\010\025\275\006i\036\275P6\264>d\201\311\276\244\277J\276k\245\271=a!y\276\263\341W>\344\360\\=Z\277\365<74\013\276!\252\323\276\255\341\236=4\264\271>B\250\255=\200\036\037\276k\274\213>[\3755\276^h(\276\301\231D\276D\334\332;j\316Y\276/q\241>\t\314\024>}\010\251>)/[\275-\270n\275n9\206\276X\363+\276\224\t\026?=R\\>\243^\222=\360w\227>\327a\254\276;\223\007\2765\032\025=:\263\223\274\"(8>Cp\272>\353\377@>@\265\273\276\374\330b>\341<\203>f\366\277=(\245\273\276m+@\276s5\r>a\\\224\276\263\340\305\276\334\362\000\275m\266\337>WKP=jW\202=\340\021\013?\356\236\350\275:\370\204\275H\302t\276\312\315\200\275^\276\'\276o\300\035\275,\177\330\275\363\'Z\276\253(\375\276f\303\220\275\300\224\003\276\204\232Z\276\225\207\303\274K\004\267\276\271\020~\276\023\206\323\275\013ly\276\315\320\261\271t\n\013\276\246Y\264=YJ\246\275}\365\317\275\342\231\030\276\000H\030>\362tn\275\315\360%?Q\372\020?\346\275\204>9I\374\276t\016\365\275\253\313\010\276t~\343\274\213\341\236\276^\3160\276x\037\203>\373\214\374>\247Q.>Q\265\206\275k\262\236\276\356t\356[LK=\273\323\266>\227W\320>w\215P\274\320KJ>\223>\007\276>\037\021\277f\027l=\"#9\275v\265\304>\227\316n=\205\226$\276+\252\021\277J\037\244>\t\261u>\212\177\300\276Kl\235>\220\200\'\276\317D\344\276\331\203\003?k\223\310\275p\3308=\010\3070=\351K\326>\316\376\010?\302c,>\306=O>Nb\204\276\366\226\366\274\006\r\325\275Z\351\344\275}\230\230\276h~j\276\374\220<\277\'\022\254>\207(\216=\303YP>\227|\220\276\367C\322>\226O\004\277\006\341\271< \301\344\275\035m\304>}\254\313>6\366\004\276Kh0\275\270\362\263\276W\330\213>\251\2765>\232\344\024\276\214\025N>\322\216\022=>\362\341\276\261k\331>\013r&>\253&C\276\227\210\035>\nj\213\276\256\311\367=Bq\237=\214b\006>\3376=>\305\000&\277bH\201\276>\305\n\276\307\254\033\276\320%\215=^\370\321\216@n\276\020U[\277\231\236F?@\327+?\221\263\010\277\n\335\236\276\274$\360\276\214\205\340\275\233\177N=\334\253e>\254b\001=\303g\361\275p\350\205\275k\341\206\275\357\357;>\247\330\212\274\262\0178>\027-\206=\365\302\331>\033\224\032>\335\213\366<\357\342H=\250\215\216>\322\347\031>\273g\363\276\225|\250\276\370\213b>\353\021\314>\376\026\031>2~y\024)\270>\\\352\022\276\223\177\020?\316A\242\275\2557\315>\332\212\273=@\2263\276\021Y\240>\244\\.=C\016%\276\\>d>\247\372l\275\322@\213=NU\337>\0014+=\377`\r\277U\344e\276Mq\236\275e\361\327\276\252\037\342>&!S>\272\234\327>9\243*\276X]\177\276\\b\020\276X@G>\243W\301\274\025)g\276\267\311\326=\024(\017\277\354L\231>\355\214j>\311j/\277\2728\021\276!2\234= ,.\276\273\016\335\276\010i\353\274\354\346f>\0260\002\275G\365\036>\324\251\317<\200\367\004\277\207\232!\276yK\225\276\016\253\355=o6!>\377\310a>\224\253\374\274Ne\324\275`\247\337=_5\272\273I\275\">\366I\212\276\300\016\013\276;\225\323<\357b\253=\364YO\276=\204\220=\204#\257>\264 K\276\257\210B\276\327\031\020?lyJ\276\177\207\006\277\207C\355\035\021\352\275\3600k\275\202O]>\203\3031>\354y\205\276\307@\304=<-\251>Jh\206\276\241\222!>\t\242\022\276\034H/\274\232\346\000? ?\276>1\307\235>\202\020\230\275\022\000{=\274\271r=\216\214\220>f\260A=Z\331\325>\267\244\360\275\235\016N=\3572\0071?\360o\266>p\304v\276\023\'q<\323C-?\236\214}>\323\355\245\275\nGe=z\2351\277o\272\275\275m\347\357=\034$\225\276\177\245\200\276\020\376\267\2762\223&\276\035\315\330>s!?\276,\0100\2768\254\246\276\312\n\267\275\237y\'\276\224\\\203<\352\250\344\276\222\322P\275\001\313\231\276>v\222\275\265\240F?\325\250\021>\312#\305>\370\n\243\276\2305\330\275\351\001\027;~?E\276\322\247\242\276\322\366\217;\242\327\366<\257\365\346>\211k\220>\026\222~\276fg\020\277-\337c<\367,\031>\375\025\265\276\267\235\023>\301zU\276lI\326\276\204\307o\275\344=]>\333lT\276\034$\345>MR*?\243\273\300<\201\030{>\324\310`>\'a\203\276\237\014\037\276\267\310\360\274\246\367\371\276\315\014\014\276\342W\220>\'s}>r\254\225\276\372u\376=\321\372)=\315\372\022>\001\231f>\n\306\016>\251\302-\276\006\316\336<\003\204\203\276\342\360\370>\013\315\\\275\233\027\222=\367\037\304\276T\270\"=\245\020:?\204\3452>\014o\277\302>uM\r>t%\013>\351\326A?{`\202\276\032\010\213>5\231\227\27684\241>\360^\362\276e\261\374\276\325>\312>\263\324A\2762p\325\276\021d\\\276\007\364\241>\300.\250>\250+\n?\277j\302\276\352\032\214>\3470-?g\224\314>\274\302/\276\257$$>w\337\264=\310I\346\274\212\315v=C\257\312<\265\323\\\276\n2q=R0\252\276\272\321\266\276/\254\202>\212\331\222\274\326\356j>\n\301]>\035m\225>\314\366\217>h\260\277>\2629\021?\001\246\212=\3140\021\277\216\273\033=\r\346\222>E\270\232=HE\\>;\036\017\276\312\r\245\275\317\017\201\276\330iy; %\025\275)\035&>\033r\177=/\352\235\276z\200\205=\020\277\327= C\254\270\226i=\276\374\3656\275\003e\331>\020\016\310\276\210\365.\276i\323|\276\202\0309\275\221\351\273=|\217\t\277\340g\177>\311\261\312\275\220d\037\024\2531>\023\325M>r\035\0059#tE>B\303\013\277x[+\276G\236.>\374\326*\276[\254\027?\027\233\347=\013S\244\276\250t\256\275ea\204\277\206\210^?w\303\225>\n7\\\276(M\204>G\021\263\276\3603\213\275)\301\242\275W\2371\2765i\001? p\235\275\216]\212\276Y\331\274\276\252\365\241\276\226n\311>]\321}<\272i\212\276\003^\177\276\245\271<\274\300\023\354\274\212\333t>\225\213\026=W\035Y\276>\007\t?e\342\316>hk\255=\210\320\006>`\211\021\276r!\312\276\246\233\204>jM\234>\340\257\037\275e\026,\277\367\036*\274\246\025\232\276\343|4>l\212\252\275$\261\037\277q)l\275\351[5>\300P~>i\352\213>\3533\004\277\310\233U\276|\356\310\276\330\337\265>\313\037\303\275Y\264]>t\337\241>f\257\003?x\245\220\276v\000l\275^\340\214\276:\323R>\375\211\007\276 \347\323>;\361\241\274\t\247\265\276%\216\216>\221\352\037=j\236\247\276\177\333k\276.\263n>\360\r\373=c\010<>\363Ee>\273\316\300<\223\'\263>\247\031\006\277\256\224 ?!\244\354>\017\273\225>\340\n8=\263\361\">\217(_\276\364\227^\276\223v\240\276\367\246\341>e\005\223\276u[\203\275}\306\264>l\250\274\275B\246\\>7O\203>E9\217\276nN\361=>F\364=\371$\232\275\034y\374=\004\241\306\276\335\271Q?\021\"\317\276\235\250\033\277]\320B>\017\261\316\276\321\355\261=\026rN>\tG&\2770\201\311\275V\364\222\276\213\352\237\276OI\013\2779\322c\276\330\241\010\276\305)\257=\025\372/\275\276\t4>+\023\302\275\304\273\234< \026\220\276\340l\030>\r\223\027\275\302\232\004\277_\345\244\276\242\371\323=mL\007=L\206\236\275D\234\300\276\302\0212\276\271\3616>\303r\220=\322lU\275*8\323\274ro\244\274EF\263=\362C\3329KIY>\023{\371=\234\"O\276\322~S\275\343+l\276\206\366\210\275\263\366\315\275|q\312\275\323\331\361=\352\213\356\275\\\n?\277\304\013\001\277\255c\017\276\3059R\276\236\350\004\276\244\373\245=\215\373\031>$\001=>\211\344\356>\2713\244=\315\2523;\235+\007=n\365\002?w\311\214>\202\327\006=\013r-\276\037&\000?\3602\207=e\236\262\276\313\323\315>\202\352\326\274\356\320p>\t\257\274>\274y\257>6\355\223\276\203Lh>\027\340\260\273\006\032\353>\000\342\257\276rPx\276\026\nn\276+\035`\276\310-f> \210\375<\006h|\276\376\227\311\275*\354m>\r=\014\277\246\t\024?C@;\274~\345a\276\306\001\303\274\247U\214\275\036\272\301\276E\272\001?\262M\n\276$\250\375;\334f\247=\005\002\256=O\216\244=\276N\006>/\365\314\275\'b\211\274\334\356m\276\003h\026?@cb\276\315<\214\274.\213M=\031\206S=\310a\324\275[\324R\275\206> ?\267\223\'\275]b\274\275*_\300=r\356:\275!\317\025<\037\n\320\276\311\265\273\275#R\344>D\245\023>\312\002\034>\326\377G\276\204\240B\274\302\323~>\265\n\354\276\374\300->\325\n\371>Zs\350\2763\276u\276\033\357\233=\\.\246\276\031\366\001?/\336\232=3\027\251\275\375\254\272>\252\\!\274\326b\212\276^\336\n> \306\242>Cq\247\276\242&\245>\032\032\274>{A1\276g\373\310=\277h\004\276G\312\241\276\003P\216\275\037LG\277\325\371\231>BzW>O\000\200>\337\245\230>\242=\372\276\024B\025=\217\215~=\213J\217\276.f\330\276\3308\211>\n\324\201==\2149\276\345\264\215>\202\252\315>[\203n\276\366:\341=\033\030\212\276\362\212\235\275\232tk=\232\321\207\2765o\332=\250\353\304;=~\005?#_\264=\317\242\200\276&\365\261\2766?\210\275\334\273\215\276\224x\211\277}d\030>(Z/>\354\341\275\276\014\345v=\227\336\236>k\026v\275\223\032&=8:\306<<5\347=H\004\341=\323\256\001?\364X\354\276\300\014g>\273%z\276\264\213\206\276\013z\213\276\237n\205\274\006O\301=t\031c<6\377X=\ng >k\343\003?\317\243\276\273#N\265d\373u\276V+\274<\310\342\354\275\306\3318?\024|\214>\t\362\346=\300L\033\275\305\226o\276\254\013\363\275\352Y\347\274q+\344=A=\243>Y\230\262\276_Hv\276\264\233\373=>\306Q\276f\026\220=\221\213\327\276\034\343H>\017m\336\274\311u\340\276\374\276\210\276bQc>\001^\216>pb\257>m\277\356\276\375\226\310\274r4n\276}\037K\276\260\010\223>6\000x=l4\257>\355\265#\277:\313\221>\004N\216\275\232\313\206>\007\220b\276\320@M\276\035\365J>\ri\310>\t\005\256>\365\357\254>\302\332_\275\031U\001>\271\251\215=8\017\013\276\353\243F\276\257w\315>\313\007\027\276\235\254\200=\006#\340<\376[\251=v\243\203>\253\3247\276n\216\000?\250%\233>f\037[>6\321\233\276u\305\270>\240#w=\035\317J\2763\203|\276\230(\261>\267\333\240>\273\327\327/;\037\235\302=\2248=\274\207ri\276\227\313\243\276W\340==\265\347\252;\352\371\325>\217\241\370\275\226\013\356<.4\224>\344\331\020\277\031\251\202\276\263\304\252=\\G\310>dQ\220\276SR\203>\354\233\245>\217\341\260=\032\210\205\275\020\020\337\276\214\004\345\2750\346\372\275\371a\017?\351\311#\276v\227\235\276\246\352\005?\022IH>KQ\372\276\0140\254=\342\376\200\2764\360\361\276^\361.\276X\234.?e5\216\275\214\361\360\275l\342\371\274}\300\024>om\003?\331\313\302>A\247\027\276\030\016\212\275\304X\216>\217\271\200\274\345J\'\276\2574\243=\t\0145>\237\245E>\206\244E\276&\021\323=<\257\r?\026y\354=^\340c\275c}\237>\361\371\373=Y\277j>\357a->\213\347\202>m\215\204\276.\363A>\305(3=\220\222k>\361$\263\274\307/\t>\301\252<\274\347\360\030\276}\322\242=o\251\334\2754c\034\276\261\347\005\275\275\346\026>\231\254\367\276\013\001\257\276$l\241I\223\307>]+\374=\275\336\367>\215\227\262\276c\007\212\275\n\320I\276gK\022\276k\340\266\276x\322\027>+\233p\276\224\2749>\332X\315\2764&6=\326~\230>\001)m>K\211\037=\330\233>;>\324M=\010\260\025>\220\273@>-\261\037>\333\250\262:V\337q\275\036\304J?\264\2555\276\264\257_\276&\235\350<\004f\252>|\320\202\276fF\243\275\003\307\214>\374\264\306>\317\223\177\276\223?\002=\230UN_\326<\\\311\220\275\254p\016\276\014tR\276G\346\377\276Y\020w\276\035e\273\276;\026\024>\334=\364>\357\266\241\275\260\275\201>\326R\223=\313\353\240>\313\270\002\277\024\237\n\276\255\345\233>\3429\365=lF\215\276\361\017\224\272\347i\327>+x\200\276\003[L\276=A0>/4{\27602\225>\035\244\010>[Vp\275\204\226?>-\211N\276\363\033\272>)\300\221<4\334\237\276,\377\346>\366y\234>\306S\024\276F\230\237>\026\037%\276}\232\367<\345\005\027\276.\266\346= &\034>\262\306$\276\217\006#\276\215\0204>\227\324i>\007\245\255\275\331\026\333\275b\212\030=$u\037=\237\353H\276S[\312\275\315d2\275\026\347X\276%yl>\340\266\214=P4\226>\005\326\214\276\275n.\275\252\271@\277\301\005b\276\246]\025>\334D\337\275XS\233\276\002E\263\275\000\357\217\275;7\245>\215i\214=\313\016\321>~\325\276\275H \357\274\006\272\002\277X\205\314>\257\340\004?\351\366H\276\344}$>\020\253C\276\332)v>\026u\317\2767:\370=A\350\310\276\343\344\204\276\327j\017\276\2136\225\330\257\002=\317\307\347>\220\241W\276+4\000>v\005\034>\275\'\307\2762\241r>`\246\230>\320\010W\276^\251->1\006*?\342\245\207>\263\354\202=\332\"\010?\310\346\021\276\241\250\007<\271m\247\276\225&\366\275!\311\227\276\205\356\300\275,\331\304=\2722\225=f\311\373\276\223\007\341>u &\273\3533T=\260\207~\275\311\214\240>lX\225\276a\311\262\275\320)\000>\n\232\017?%\375+\277^Q\317>\004\276-\276s\324\'=\373\234r>hGY\276s\363\017\276\236^\271\276\345\357\007\276\204\223\371>\014\245\236\275\243\370\305>\361-j\276\263N\326<,\221\335<\022U7=\227]\030>\201i\225>b&}\276K$\244\274\276@\242>$t\267>\004\374\377=\r`\273>\250\226p\277\224\004\340>\334\025\317\274\373\236\231>\t\210F\274\356\031\320\275\037\260\020\277#\347\357\276s-\336=7\361\233\276C\357\325\275{\000&\276`F,\275\\\3746?B\304\001\276\314\336\313\275\030-\300\275\245\213\277\276\236\350\237>\263\036\335\275&-{=4L\205\276\305\"\007>K\252\310=\303\374:>\312\362\370=51$?\031\257\306\276e\352$?\250\200\231\275$<\217\276e\267W\276`\021\223<\020?/=p\210%\276.\240\262>\033\263\264>D\223C=#}\024\276LK\202\274\211\342\027?6h\"?\010&A>.6\275\275\'\344\005\277/\336\260\276|f\302=)\363\240>B\221d?}p\320=\376%\006>5P\206>a(\234>\024\234_?\346\334\224><\302\355=\347\256\343\275\344\321\007?B2\\>t\253\266\275\322\271:\276\27166>\016\271\224=\244\010+>\320\345E=?\266\'>\330V.\276\037\213 \276\250\210\317>\021\354]>\355\342\014>\321R\210\276#\370\320\276_\013\342=p\235?\277X\314\213>)\354\361>d\337\262>|)\341>!Ni\276\204\2242\277?\001k\276\222\221\202>\302\222\016>y\021\016>\224\375\031\275q\343U\276X0\203\276\037\016\363\2755\013\032\276\365\226`\276\350\324\275>\240\276\264\276\2525\231\276\337\222.>Z\255\004?u\267\025\276\243!\312=K\330\370=\314\221\271\276\312\210 >m\372\346\276\326\342\233>/\242r>j\350@\2765\302r\276\235\217\322>\3448\n;y\236N\275\252Z\260>\001\231\232>\032\032\340>\315\324\201<\271\262p>5*$;\223\"\263=\242\363C>\363\274\264>\322v6\276\225>\237>\3736\r>\016[\340>\023J&=\2026\301\275\251?\234\276\005>y=U\305\003\276\303\326\035\276\253o*\277\345\245w\274\342\366\000\277\356\233\353=\370g\241\274\2615\334=Z\321\211>\204\277t>\026^)>ip\207>E\257\010>zF\032\276\347\377\236>\357~\272=\006\245\217\276\307@\021\277\275\363\324>X}\013?^$\010\276/*\204\275Q\365\354>>?\265>\252\235\033?\272\255\201\276Xl\376>Y\200\024\276FP\210>-\253\025\276@\"\270\276\247\325l>Jj\005\276/\371\334=\r\243\302=\241\317\232=}j\220\276\031\"\364\275_\321\032?\301i\002\2764\t\227\274\242\3312\276\030\361\206\276[\023\211\276?H\"=\314\000\360<\215\225\205\276K\202\210\275\177\254\256=\357\203/>_\363\031>\251\301!\277\353h\016\277\202\223\301=\241\252j=\273\353\253\276~ek\276/\370\351\275\374\250\333\275\264\365s=l8\256=nS\"\276fB^\276l^\261>\221>\220>\024\256\001>,wv=\262\023\022\277\003:\354\275@\353\210>\331\272\037\021\231\210>\233\235\n?\347\201\276:\233q\257=2\266.\277\232\217\336\275h8A=\\p\240;b\305\227<3\375\204>\250(\301=\270\0339>\243\035 \277\247P\250>\225\322\022\276\354\272\340>\210/\217>D\330\002?I5z\275\336\304\303>\212\273\323>\025\035*?1\271H\276\367\233\240\276\213\221\034\275\266\204\344=V\314\203\276\226yv>\347\305\217=\nA\254=\377\360\315=\362\021\331=\"\322\222<\031\214\272\271\017\\->u.\007>\016\003\374>\311\304\251\276FF\031\273r\256\225\201M\222\276\177\260z\276\273\267v>*v\364=\353\241\314\276@\327R\277\205;{\276\310\242\215>t\272\243= \2442\276R\000\223>\004\310)\272W\204\226\274\256L5>\"\222Z\276\201\226}>\366o\252\276\201\273\316\275\222\214\037\276>\026\240>\206\224\340\276\001\313\025\276`>\370\275\317f<;y\032\334\276\337\350\004>t}E\276\033\367\332\337\264\262\275\224\272\344\276\354\277\330=jC\251>\0349\033>\004\307\246=\346UZ>6\245a?\372\332f\275\200\034%>\215F\026\276\023\275\263\276\262I\376\276\215\261\226=g\245\251=\250\364\331\276K\356\243>w\002w>\373\301\352>7\334;\276fo6>\230\323)\277Z\177\334\275o2\200\276\263A\001\275us\267>\306\253M=;\001\306\276_\033\363>\034\323\212>\345\351\301\276M\245)>\020\233\005\276J\3651=\234\205[\276\360PT>r\370\210\275\201\254B>\3113i>\372)\276>\361(\026\277\206\300z>\347S\">B6\354>E\013\006?rZ\n\276\007\361\223<\367W\235\276\017#\014>ey&\275\330\233\324\275Z4G\276V\277\317>\220\rF?\351\243S>\305\320\222\276\323\320\006\276)\220\246\2769{G>v\333o\276\344B\272\276\307Z\355=\270\245??\345\376 \275g\020\306>)\255\270\275\036.\010?L\016\227>5\302\n\275\337\367\275\274[\032\000>\227k;=t$s\275r\351\324>\301\026Q\275\262a|\273(\312\222\276\201\302\347;\023\266A>\2571\321=w\237|>\333S\344\275\316\247\252>X\237\033\277\340\017\335=\177$3\276_\2175>\304(}=Y\014\036=\331\240\"?}\346\266\276\361\330\007\275u\362_\277u<\336\275\300\335\262\276\246+\207\276\367\016[\222\344\237\276\027\306\'\276Hr\367\273_\005\345>\003\316\331\274A\r\230>\220\330?\277,\274\370=U\325\031\277\366<\204<\313p\213>\331i\026\275\203V\035>Bp\376\275\313\231\020=&.\211\275^\203\002\274\277\327\370=\201\371\356=\260\277$>\217y2=\315\004\206>\212\361\233\276\241\3153\276\244\004\016>\016\240\201\276Q\364+\277\333\177\036\276\323\020\227\275\234)X=\271\014\326\275\322\0107>\261\'\302\275\020)\262>\177w2>\313\014\226\276$K\271\275\276\t\264\276}\210\344<\333j.?/\360\226\276\240s\204>[\341\313\275\217\305\025\276.R<\276/\004(\276\355\227\344>G\221]>\266\374\232\276F\021\213\276\302\006C\276\2363\276>d\201\207>l\027p>{\016t\275\25733\277\263\010\005\277\021\265\231>\221\003d>\245\236\025<#\317_\276-!\300<\007\376\253\276h\312\021>G\"\355;\254\276\323\275\305\263D\275>\340)\276\355\310P>E\301\035>\315(\213<\007\2271\274Vm\223\275\246\363\362>,{\"=r\372\376>\272\276\354\275\371Et\275\032J\264\275\177f\221>\260c\021\277T\232\364\276\316Z\326\273\375\036\007?\006\235\310>\233z\210>\322E\035>\036\010\311>\252\252%\275n?\376=?/\376\274\260\026\351\275i\220\367<\261o^>4a\237\275[\364\270\276\366\3372\274\376\'~>\020\023:=\303\264\025>/fG\2769\235\270>\307j\300\276\306j\025<\234\002\030>\177\230\010\277\341\204&\276tZ\213\275\362\347j>o\252\361\275eEF=^\250_\276r!\007=F\263\016>z\260T?\256\276\211\275\256\247*>\363\265\237\275\2123]>\214\203\350<\r\236\245>q\276\350\275o0\002>\324\207\207>\353C\030\276\222\013\237>\221j\227\275\370l$\275]\nZ>\274\271\r?\2537\003\275\021\333\004\276\207\315\257\276\006l/>\302\303\370=\217\302\321\276e\374\345\275,\263\236>\027y\034>\241w\264\276|\350\260\276VQ\233>J[\000>\320\227\257\276|\030\321\276\373=\230\275\364\307I>\261^g>iN\345\274\223o\211\276\355\016\311>\010\215\t<\204\3007\275k\344|\275\321\303\365\275\375\360 ?\014v\364>\204\377.>%\315\376\275\253\'\'?]\264 >Z\246\262\276zs\324=:+g\276\014\273\335;f7\227\276\367\370e\274\004,\036\276\360\034\335\275a\020{V\217\230w\020\225\276\251[\312\275a\355\234<\254q\277\275&\262*=\004\207\215=6\261\222\2765\216\201>&\307\277> \023A\277\351\021\362>K\331\030?\330\010A\276\177\370&>\211\264\257>\240\367\361>\270\315\344 C\005\276\223\032\354\275Lg%?F`\212\276XN>\276r\233Y<\310z@>k\352\023\276\250B\273\276C,\206\274\315\270\022\277>J\233>\257G\234>\276\016\251<\'\206\227\275&\302\360;\362\236:\276\020 \327\274Y\253\006\276\247|\377>\004\327\013?\305\324Q\274J8:>\037\314+\276_w\037=\221\223\027>%w\210>\230\006i=r\253\224\276y\315\312\275\351r\023;@.\204>\326\310m>i0\003?nVT><\365\330\276\000\361\027>\342\263\370>\360\345y\276\312a\225\276\345\340\366\276x\020\266\2769;\020\276\r\345\376\2750\213\353\275\243n\023?\364\360\237>\201\372L>\007\3607\277\211\032\377\275t\335 \277\277aX\275\247,\212\276\342kq\276Y5\326=|\006\245\276\251UC\274\t\001:>\374\300\233>\364Z\003\276\002\000\343\275lS\312;\214W\346=d_\021\277\372\324\203>\224`\022\277\243 \337\273\330\262\215>o7\034>\017\033\327\274\335g\220\276\366v\013\276\177\373\216>\341\225\036\277\240\355\237>X\024%>x\377\314=k\273{?3G\030=\211\304\212\276\204\037O\275\rA\327\276\\\215\275\276tr\010>\021\353\361>\236\210\351>\245\037X=\204(\004\275v\320\023?\312\215p>\245r\032\275@\313.\276\262\202\r\276h_\321>#\364)?\276\211\343\274V\217\200>\236\365\234=Y\223\262\276@t\021=09I\276\330\243S\275\213\'\353\276\360e\325\276\214j\372\275\273\364\000=\347ay=\277!\036\2761*C<\240c\207>\354\336\215>2\307j\275\253\320\007?\331\246G\274vJ\247\276)\234\240>E\325\206>\014|\343\275v%\217>\302\234\322\275\372\374\343\276\333\222\">\260\315I=\315\364\216=!LU=e\213Y=\240\227\013\277g\377\367\275\206R\022\274\243\370\215>\207b\017\276.\377+\275\250J\013\276\275\361\216\275\346S\345\206\034\352=W\355\324\276\364\227\005\276\3250\014?Sw\252>\321s\325\276o\367\t\276J\024b\275t\231\330=\303\377A\276\003{\020?\256\353\001=p\335\226>\004\326\347=\211`\370>H\002\232<\377\227\026>\226$\037?#\241\360=\360\231y=\306\322\237>\362N\224\276\332\371\357\274\376W\263<\235\265\200\276\331\357\327\276\275\321E>\022O\206>J\000?\277\241i1\277)\332\357\274pd\235\275O\246^\275^r\204>\361,*\276\002=*>\204\212\221>\255\245\320>\223B\367\275\032\355\231\276\313T\255=|H\330>\205t\216=\347\344\243\276\336\330\345\276\317\337\254>nv\316>\300\202:>\263\325\235=~\334\316\275\336\253=\276\212Wb\276\001\324\016?\350\251\241\275\004\3028\276{\203\310=\204u8>\361\232\232>\327\260N\276\205\345\270>,#e=\007\266m\275l}\325\2750\334\234\276.\025A\277\265`\033\276\335:\312>Hz\253>\361\014`>-\322\213>\226M\363\275?\230\303\273_\221\034?\027d\020?JI\024\277\315\020\005\276\014\tt\276-\010\026\277\362\262\345>\023J\301=\013t\336=\232g\273=nJ\266\275q\033\205\275\232l\341\275\333\204\244>CT\031\276\220\037\320>r\344&\276u\340\254>i\313I>\331\227\314\276\245\373\036=\265\355\225\276YuM>\225\003\037?Kq\r\27702\371=\254F\t?E\006\200=0}\257\275$^\326=1\270\244>\262\006\311<\351S\207>\351\357\337\274b0\262\276g\252\261\275\235\326\364\276\366\227\037=\215\005\304\2763;\032?(Io=\361#\304\275v\007\241\276\013\264\243=\034\014\340>\357\346\252;qg\215<\277\027\311>\332\235\216>]\te>n\033\301\276YT\223=\235\220\035\276f\356q>\305\251\367>8Q\026\275*\375\023\274\273\273\231=9+6\276\207R\307\274|\371\000\276\304\244&>\335\366\370\275\020\271\315\275HK\013,\330\023?-\020\030?Y\026O\276\235\302\031?\"_\033?\022\305\375=\324\031\316\276\267\303\207\276\256\317\363=\234\3651>\r\305\003>z\002D\276\351F!>0Z7>\311\013\231\276\031\275!?lZ\231\275p^7>\346-\304\276\362\033\007\277\302B\254\275l\'\370\275+\005\275\273\020{!\275d8\312\276\377\271\237>\013\262\254\276x\332,\276K\351\215\276:}\345=qq\271\276\264\272\006?\337\304\212>\233\247\243>9\313\032>6\374}>PL\'\277(\213\221=\205+\007\275\321\343a>\370W\304=\271\263\232>\253}#>\035\331\306\276\"\344\223\276\"\200\332>v\372\223>\332\'\305=\371_\177;\322\004\331\276[Zf>\334\240p\276\260\311\037>\"\207\351\275\037\213\005?\361\350\036\276z\346\005?$QM=&\340\245>\314\366\202==\251\215>\025N[>S\356\025>\006\252\004\275a\300\322\276\013\312}=3\235\343.\307\224>\2271\003\276X\230\002\276A\257\366>\336?<\276\204;\321<\016\350\267>S\311\350\276\177i\364\275\354\3350\271H\2056\276\230$\322>D6w>\377\251\021\275,\353\321\275\341f*\276\332\242I\273\346\247f=\352\347F\276{%\263\276\235\244)?.\255\371=I^\272=N\013\227\276\215\224\377\2764\346\004\276\262Q\362>\261\356\026?2v\361\275\030\315\306>\365 Y>7\253\n\277\020c\364=|{\255\275FD<=\362\217\225>I\233\254\276\242Q\313>\"\272\345<\252i\335\276\320\345\223\273\316\264\337\276!z\034>\227\266\224\276\244\211;=}\302l\276p\223\350\275A\273\204\276{O\300>\024\250 >\"5g?\363B\001\275d_\203\275t\\w>\242\364\027\274\007\000D>\3561\256=\345[\316\275\252U\241=\372\262\212<\354\276\003\275\030\263*>H\3331\276\271\223\231\275\340#h>\364\206\353\2763:\226\275\372\320\221\276\327\267l>\036\026w\276\033\035\231\276\221+e\275)`\003\276\017\303\032\276\000Z[\276U;n\276m\344\013\277\223\t\312=\235<\317>.\223\213\275\0172F\276\255\002\244\276\025W\227>\356\256[>F\324-=\353J\270\276QZ\022\276\2364}\276\240\257L>\013\256\235=)N\234>\351\037}\275\2433)>\t0\237>\035\211\200\275\301\224\302<\t7\n>*\305<\276Q\262\030>a\005\252\276\202\022\276\276w\216\177=(\315\233>ps\353\275\002\217==\240j\331>6\372\210\276BM\215\276\342\001\260>d\244\270\275\364\236k> \306 >\207\262\231;\303?J\275\334V\241\273%\210\337\276\000\373\017=)\264(\275\310\253!>\375O\002?\r\017\257\275\334\267\347=\306\273\215>4\336q>!\230\244>\266\3617>\312w\220>\361\351!>\236q\205\275\"\304\332>\014\260\353=>\003P\277\036I!>\340h\000;?\240\374>XGY=\334\005\267>cM\323=(_S\276\364k\006\276\210R\032\277\036(\376\275ZF\005\274/(!\277\231\327Z>4\010\330>Y\207\216=\204\254\277>\276\245\330=89\"\276(,\371\276\023\367\200\276\331\t\214\275\234j\231\275\301\320<\276\004\200\326\274\233\262g?\225+!\276\330l\320=\270\377\264=_/\240\276\375G\254\276\221\336\256>\035\036\321=llO\2769\357\237>!mR=\3747\206=\274\244\257>\375h\354=\001\327\252>\027\366\345\276\016\211\014>\310\362i\275\0100\020>\356\263X=\322<\222\276km5>[\341\304\276L\005\322\275\335\347\265>\021\307\212>e\343(\276i\210z\276\361\353}\274\363~+\276\t\275\346=Z:^\276\034k\220=\2636\342\275\320\215\314\276\216\306==U8(\276\242C\024\276\314\371\231\276S9\252=0\026\243>Q\334\005>\360\275 \276\202p\212>\370\317\347\276K\276\225>\005\026\256\275\361\001\207\276\361!\233\275^\220\224=\303\252\334\275\020\235\265\275\211\341\354>\035\"\253>h\210\332>#Du\275\226\254\026>DY\324\276\025\247U\277\200CR\275\373\265\010\275~P\202>2\020\257\276\023>m\276!\332\321>~\031\001\275$\377g\276)\207}\276\334\211\031>\034\214]\276\370y\232>\023Cw\275\222\312[>\323/\320=\243\252\017\277\204\377|>\"\315\350>\'G^>k\357\227\276\225\255H= `\027\273i&l?\356\314\221>\233\210\325\274,(\376>\244P\225>\376\343\237\275\360\241\272=\370\034\261\276\274\216\370\275\245\350\252\276\276!\007>\004\\\203>\001\231d=\260=d>\204\335&\276 \261c>\244\322\260\275\210\313\316\276\307\371\352=\251\321\006\276\033\322`\276y\335\270\276\302\227\215\276i\365\243>\022\366X;_V\354\274\013\336]\276\344Q\246\276\304O\361=>\263\202>\276I\"\275g\033\232>3\025\221>W\261\222\275\211-\302=\352\326\257>~-v\272)\265z\276\000Z\350\276\t\213\221>\373\255\234\276\276\3129>\263\212\347\276\001\034\260\276\267bn\276K\307#=\252\337\353>\032$Q\276\276\371\220>\230\021\003?c\376\245\004.\302\275S\247T\277\302\365\237>yve\276A\232\202>)\300\025;\340P\361\276\344k\004?_D(>\357\032\025\277\244d\245=\365\366\341\276\234\021\343\275\005GN>\243!\246\276\3554\005\276\277\212\t>\210\014\\\276\027\341Y=c\r_\276\"\217\224>\027\311\000?\262\263\265\276\270\254X;\2230\224>9\335\265>%\020\314=*\352/\276\3532\263\275\277\251\305=\323]m\276\247\206N\276I\206\257>8\235\254\275\3353\351>\370p\022\275$\267F=\302k\274\274\206\300~=\350\250\262\276\343\270\211\276\215~\370=\301\010\016=\370YX>\374\204\251>&\005\351>\217rS>\3649\234\275|\260\003?p@\237\275x\031\223\276K\213\216\276\312\031c>O\273w\276\243\233\357\276\370\326\000=\341:\222\275\021Z\313\276>\331\321>\320\303%\276\311,\337\275r,O\276\273\251\262>\357\317\234\2755\274\215>\251V\005\277\t\3661\276\303\263l=v{\037\276W\031\257=B\341d>\273\3149>\262\004\252>9\300\330=-\3636>\255L\351\276\262g\010\276\240\224\253>\032Y\222fF\210\276\376\235\265=\335\n\236>j\354\213\276R\305\327>bG\244\276?\331q\276r\316!\276S\233\247\276G\014\034>\220\0171\276\273\331\313=5\254\001\277\027M3?\277\363\345\274\271\345\210\274\334\255\373=\023\264v<\260{\340\275\020\354\001\276\025!\253=\221\250!=\262\216p\2760\332<=q\023,=\307rM=(\367\273<\273<\032=X~5>\013\304s>\335\364\t>\311!0\275\'Dr>\245\343\005>\004\375\217>\354G<\276w\377\271>\245\337\321>#^\340\275\233_\270>:\314\'>\025\305\321\276R\213G\275\303c\320\2744a\010\277\236\207\223>\323\346\035=:\273\230\276\335\250q< )\302>\t\227d\276D\360!>\320\263\214>\315g\253=\213\0104=\322\037\036\275#a\003>\033$\362\026\003\253\276\313s\246\276\023\331\212\275\"\026\337>f\305p>\270Kx\276yqj>+\221/=N\314\266\276\242\177\013>\350\032Q>\322\276T>+X\005\275\335,\240>\325\366\335\275P\0102\276v\240\033\276\3068#?\272\207R\275\023\231\326\275\344\357\037\276\\CR>\235=\215\276Of\221\275\223\022\367=c\242\266=\004\250\321=ZYx\276\010\330\215=d\312\337=\216&\261>\304\333\014\277jw\353<\201\034\360\276M\347\250\275\276$W>\021\256\t>6_C=\t\337H>\347\335a>t \200\276\001@k>U\024[\276U\260\264=\325\212&\276\250\"\032>/%\007?\337/\363\273k]\324\276\301\270->\305\302\232\275\341\343&\277\3026\215\276\000\212U\2773\\X\276#\275\245=2\213\213=\005\030r>\342\027\210>\354\232Z\2750\230s\276\345lI>\324\327\005=b@%>k\234\272=\207\362\242>\227\220W\271\246)\360\274\004\214\016?\216\242\212=\243\376\365\275\375\003\356=W\371\244\276\277\236\324>]J\200\313\225e\276RgO\277\373\243h\276c\230\000?\257\370Y\276y\343\037>\003C\023?\206q\201>B\300\267>\345\313F>11y>\365\004\310\275\267n(\276\257S\242>=^t\276\364)\254>7\213\211<\331\030\245>\231Y\210\276\",\310\276Z\256(?,@8\275\n?\\\273\232/\231\275\246T\330=\225\376\300>\343\317\036>\343\342\325\275\320?\r>\004\206$?\304D\201\276%K\037<;i\355\276\271\315\243>4\266\217> \004?\274D{3\276y\204`=\247\026\004=B\333+>9\036\317\276\036\262\007?P\330\377\276c\250[?\001\372\032>{k\000\277\330|\363<9xK\275\271u\031\276P\346\334\276E\206,\277a\214\266\276I\310\273>\260\2347?d\271%>AQI>\250CV?\263H\"\276\026\330Z>\352@C?\272%\003\276\352QZ<\r\241\240\2763\337;\2760\017\014\277\233[E>t\305/>\303\010\016\276\264\247\004\276\215\277J\275\334\225\274>\370\345\233\275cw6>@d,\276\346\304\250\276t\252\\>\235\305\327\275\246\361/?]%\274\276\301\036\270=\373@\233\276g\274V>\344\r4>9i\002\275\214\006+\276X\257\033\276\303V/\277\025\222\303\276\222wF\275\275$\375\276\216\352\r=\251@\347\275\230\017\227>\374\016\034?\022\271\020=\240\203\264\275\271\215I?\356\026A=\227\373s<\231\372\362\275\315\325(>Z\253\005\277\362\252T\276\211\325m>\022\215\263\276\214\352m>\"\\\322\273\371\236\237\276V\212\275\276\332H2>\310\276\207\276\366\346\366\276\327\250|>\356V\203\276\250\236\225\274$\250\325>W\314\265\276\374\022l\276>c8>`F\356\274\257c\241\276e\366\275\276\365\310\034>!\220w=B\255!>DZ8>\003\001\022>\217\335E?6\007\342=b{:\276\310d >A\"P>M5\"\275\376\220\225=\210\347\330=\222\231\001=2_\354=q#\206\276\200\200\353\275U\004\350\274\222\200:\276\237Y\230\276%\030\214\273\377\233\t?P\371\032>\213\031\222\273m\255\256>{\004\250\273\231\203\271\275\237Q<>\364\272\275=0O\007>\255\262\376<\351v\276\276\367\334D\276e>\244\275\276\005\263\276@\003_>U\356D>\211\370\007\277\005JR\276\250\257\221>\264T\246\276\271\344\022\277>\"\010=\004J\314=wCw\274\037\t\177\276\031\0372\274\306Z5\276\332;\342>\032\243\245\276\370?\361>\305\307\222\276\003\233\271>\264\r:>\030d\022?\177[\206\276\017\355-\276Yk|\276\234\0249>\276\023\322\276\275\002\370\275\266\306M=\244\241\376\276\251\345\351\275\225m\376\275\362\252\251>c\316z>/\177\263\276\210\370\244\276\360Z\032\276A\277/=\"\023+\276\303\371\241\275\253n\206\275g\364\036\275p\215\031\277[q\010>FE\005\276\3172\206>/M\215<\302\323\243\276f\364\275\275\330O\205>\013\212\361\276\313\342K=\360A\216=\231\227\331\275|2\024\277:\277\000\276\251\272O\276\275\273~\276g\2618>\031/\001?\rg\032\275\232C\265\275\224V\215>\221!\232\276\031\014\315>\373\246d=\344\277\r>\2633\201\276\241\0141\274R(\270>\037\037\027>.\364{\276\327j\202=\262\205\364\276oR^=\244\212\241\276mN\r\2774\260\"\276\3121\341>TG\262>\2064\243>#4\244\274}n\251=Y^\032>$L\307\275\204\311a\276\326+\003\2778\325\025\276e\224\250>i\337\002\277\251M\316\276\232\354\353=\364\237\261\276\207G\250\275\231\245\022?\222K\256\276\202X\310\275e S\276\207w\014\275\305\240o>\rY\231\276(\304)\276\375\242\331\276\376\366\'?1K\217\276\r\351\333\236\257\370=\214sd\275\352\320\247>^}\232=\337\346\025\276\2276\264\276\340\267\337\276\266\035d\275\366\257\177\277\201\375\236\273z\307\243\274\240\353a\276\204\376\370=3\233\001\277WB\006>\213,\177\276\267L\221>\223$\304>\226U\215>\rh\335\275\226Q{\276\033{|\2752a\000\277\337\331C\276L\240\257>\210\334j>$\370\237\276\251K\307;\007\002\030>\321\302\304\276\334D\013?\310\t\r=r\017\351\276\001V\222\274\361\241\013\276\023\332\000\276\276y\276\276\224\007\223\276\375\204\234<\032\320\203>f\016^\275\212k\021>N\346\202\276=\3406\276\340f\006>4yx\276\272_,\276i\022\277\275\r\241\357>j\210\026?\214Z\204\274\244\376\277>y\2155\274.\rm=\343)\316\276g|\242\276\030eZ\275;\3509?!\222&>\34250>\247\203\254>\023\250\010\277|\255D\276\212\350w>\363\034V\276\277W\254=v\211z>v\346\271=\207SJ\276\347^\004>Zx\276>\331\260o\276?\232\273=O\031\322\276\356\"$\276#R\341>\341\004\361>\357h<\276\321\275\324\274\277M\267\276\221J\330>C\347\312\275\255\373(\276\004R\203\275j\2066\276l\021\344>5\004\243=\023Y\220>\252r\237\275\357\020[>8\231<\277\355Zn>\257\022\003\277\363S\374>\201\3608>\036\207U\2753\235(=L\264D=!\315\0365\257\220\275\037\240;\276\323\207\313=\314\203\304\276K\204\241>\014O\226<\336\004\033>\023,\322\276\032\340\222\274\021\367\307\276\327\242Y>\201\322\300\276\262C\211=`\353\234<\330@\322\276\231yV\276\3108\026>\211\313>\2761\322V\276U\256r\276\r\020\320>\027\316\210\276\302\310\367\2747P\313=&~\013\276\376\222\033>\360B\211\276o\234\310\274\035\023K\276\334\205 =\326\030\007?\354Kk>\374\004\255>*V\374>\340\247\033>\227\202\232=\331\274A\276\002:\220>\272\001\270>\360B\335\273\271\211\344\275\275\360\275=\206\222\321\275\303\204\221=\220g\353\274\277\227\321>\244\375\260\276+\211\211>\203g\230\275\217\036\330\275\350\323\274\276\036\005\355!\305\335\276i\307<\276n28\276\211\327\263>\225\013]>\321\253\264>\351=\204\276-_(\277_=->mK\004=@\236\245\273\367\321-\275\357\037!=\235\365b=\026\335\350>@:\014\277.$\240\275q\335\217>\315\007\342;\210\023\266>U\023\227>\350\031\211\275\335\325-\276\212\212E=\227zi\276\037It>K\\x\276\300\353J>i\276\242>\320\310C=\325V>\276\215j\205\276N\305\370=\005G\377\275m\360\013=\221?\267\275\210\323\336\276\244\377\001\275\336o\202\276Kz\340<\367\375\341>\312\225\214=\325Xs>\351#p\276\334\317\307\276\245\225\323>\232X\377=\ra\030>z\263\337\275\2466\227=\241`\024>\261)\035>v\034\204\276=D\255>J\315D>\020\216K>\311\236\006>d\221\215=\033w\275>\354\306\232>S\352B>\326\260k\276\321\337\024?>\253\246\276\'Qx>\311\267\225\276q\250\232\276\362\033\233>P\325\347=\362\013\266\276\370\013\217>\375\321\262\276\221\031#\276J\371\035>\317\372H=\350%\017\276\260SY\275QUq\276\216#\275>6,R=4\223\352=\323u6>>B\261=^-\367\276\251]\375\276\261%%\276$,\330\275\216^|\275{L\323>\222\037#>y\320D>\251[\\?\372\335\330\276Q\260\212>\017d\203>\\\274\211>]\320\032>/\2770>\304\375\035>F\316\216=\326\253 \276\225\312\225\275\305\264\016\275E\256\267\276^\345\030>\265\216\212>V\276\213>v\240\236\276?\030\325;\237*\035>)\302\362=\t\026\267\276\375\342\014>\316\330\313>\340}\014>\rZ\245>$K\251>u\245\234\275\202\251->\224\035\206>\312\tL>\213\375\217\276\0246\322=L\300W\276\013\336;\276\314\245\001\277v,\026>\356\034\332\276f\310X\276\237\375{?\312\311,\274\333\337\266\275\362\335\251:W\351\246>\214eo\275\371\315\371J#\372\274\020\322\223>\335X\244\276\354\"v\276?ep>\370\376p\276p\207\212\276A\244J>\251,\261>\021\007\306\276\266\357\244=\220\340\245>\014\316]\276\007\237\302\276{\363\003\277j2\322\276~\377C\276\316\210\325>\326\214\220>\354\3247>\235\317\351\276\217tJ>\312\215,\274t\225M>\360\036\031\276,\022\216\275\231\034\302\276]\352\262\276\004\\\272>\226B\243>\335\301H\277b\316\321\276\216\333A>\353\347!\2776U\266\276O\233\356<,\343t=u\312\'>fE\214>\227\200\333>S\246\350=\225\355\235=\001L4\276\006\247\201\276;d`\276\360\362\325<\367\007\205;YN\245>\323\240\331\275\352\237\002=\263>\342>\001\027\000>(U\310>e\240w>L\353S\276\242\\\375> w\016>\3357\224\275\243C\304=;\000\037>\314\210\235\276\352eR\275\331b\033\274\240I\251\276~\270\343\276D\315\001?\373\014\377>\244.\312\276%\006\n\276\262\204\263\272A\277.?\264\364&>\016|\251\275\023V\225\276\227M/\276\032.F>;Ni\276\\\023I=\235\237C?\016\224\342\275\223EF>\203\201\356\274\255.*>\"(\022\277>\0036>\227\345*\275\355$\201>\022\265\341\276\023\377;=\270|\204>\221\344\330>\271\226\233\276\342\314\237\275_\261\274\276\035\351\240=\330\027\357\275\240I\253\276\306\220\234>\204\201\236>\317\266\027>Z\306\025>\233P\310\276\\\244M\276\260\200N\272w\225\217\276N\362\010>\2722W\275\307\234)=\332j\325\275\200\317\267\275\222k\226\2769\274\257\275j\326\314=u\377^\277\373U\250>\346\242\236\276\301\341\331=\320~\315>\210\361\233>\254<\026\276\375\242;\276\200\232|>]\340\001\277N\242`\276\257\201\220\276\332\004\273\275Z]\222>~C\261=\212\0139?d\331d\276\247\003\203\276wdu\276\014=\311\274\262\247\302\275@\213P\276\374\302\315>J\237V>\350\220\226>T\215\025>\\\260A>\000?\304\276\317\"\r;\014\357D?\343?\235>\214\027\252>M\325\330>_\2120?KX\217>c\363\357>\217\001\326>\245\350\314=mEr>\025(]<\211\320\222<]L\264>\212p\036\277G$G>D>`=\201)\002\276\304\021\006\277\\\365Q>t[\263\276y\221,>\234\037\230>\264\267\014?\364\216\003\272\326-\032>F5=\277\030\266\271\276\277_\334\274f\021h\276\226\253M\276\220j\265>\254y\013?\317o\204\276J\264\345\275A\210\'?\351\377n>\t\342;=\250\374\237\273\240j\007?\220s\002\276l\344q\276\303L\362;\032\023\">\2673\333\275\321H\235\276\220\373\032=\205\204s>\027\217\220\275\3634\222>\245\272\223\276\222K\024>,\334\325\276\030\356v>\374\250\233\276\315J\247>\337\272\354=\303\230\021\276r\327\251>\030\320\343\276\001\201\227\275\tp\'?p\376\311=\006\027\205\276\031\212\200\274}\260c\276\366\206\030\277\255\343\243<\371\344\037\276\037\020\227\276H\363\201>\254\253\266\276\2003\373>\243\301\213\276\367\221\030\277\353g\206\276\227\211\375\276\2467H\275\256\303!>\2071\211>\232;\343=5+\026\276\356\236O>\372\366\302\275f\203\371>\036\036\003>\024\177\267=\205\\|>_\034\006>V\310\025\276\000\250\265\276Fl\223>\216|N\276\240\247\372=\346\375\232=JC\216>i\321\225\274Z\332\263>\253\374\230=\266\200\324\276\202\ne\274\325\325\333>\224&\313\275\3130V>\233. \276\244\377~>\256\002g\275\220\235;>[\"d>q\342\276\275\243\334\261>\345_\210=]J\302\275\250\241\204\275\022w\225>\023P]\276\025\235\203=/\371s>\257\342\000>\361@\315xZ\237>\363\013\241>\370\347\376>\360e\007\277\001\227\262\276q\305d>sh\010>y\017f=\346\001\323=\230\332\"\277\311\227\010\275:K\201>\372\027@>G$S\276\352\2718\276\375x\306\276h\004\275\276\3404\235=\250 \276\334D\'\276\314\277C\276y\374G\274\010M\367\276f\026\353\275\037Y\322=\267i\231=/w1>\314\033\264>4\355\005\276\340\3614\276\003\000\326>\331\231\226\275\002=\235>\231\242\202\275k%\000\277-\270\021?fW\033\276\247\260\210\276\323$\236\276\323w\221>\177\024*=O\217\237<\263\377\303>w*\212>\335\337]>yG\002?-{\204>\210N\311:8\247\322=\010zR\276X\352\260>\272\330\311\2765v9>\005\223\304;\206\327?>\212\236z\276k\007\205\276,\2766\276\001\216\215\276\017n\303>\262\277 \276\305\262\307=x\235O>F&W>\277\000\013\277r\231\256=\251\006\212\275\251+\376>\2029\204\276\235@n>\261\262U\276\223j\261\276_\337\267\276;v\255>\323KX\276\215\256<\276\263\253\223\275.\326\310\276\222\004@?s\362\276>\367\370.\276\372\345;>at\302\276\230\\+>\316\275\245\276\021\307\254>B\243&>)\271M=:7\226>\177\333};\212Z\327\276$\323\325\275\360$\233>\235\230\200>\031-a>&i\267>\202\277H>\204W\313>\226\314\255=L#\312>\205\331\247\276\336ai\276:\360\246>\336-\252\275\247\263\214>\342Q\t\277\261\332\">\371H\253>h\277\236<\233\005\216\276\026{\321\2751\334\032\276\0310\363\276\030\212\354\274\007\230\250\276\363\3566\273t\307\214>\371KX>r]\354>>\334\327\276,`!\276\236\331m>7\027l<\003\372P\276\021V\206\275;\377\241=\320W\221\275\307\274F>\361\233\240\276F\253\353>Z\365\347=C\325\321>\203\355.\276\022\0323\276\345\346\014=\020\202\255\276\264{\314\275=\353m\276\372Ap=\001s\204>\217W{>T\010\301\276\247\357\375\274\026Y\007>\205\356\256>t\367\273\273gN\\\276\340@\257>\262@\312>\344\307\226;\203\341\230=\302\370_>l\377O\2759q\014\274<1\206>\000\230\010\275\034>\227\275\305kg><\377?>\330\220\323>\032B8\276\352\217\371>\035YV>)R\342\275+\340O\276+\315\232\276\277\355\224\277\276\364\217\n58>yP\207>tt\204\276\377\2735=\031\352\000?\344\321\311>~1\303=\243\025\314=\304\2723>\321\214F\275\355H\324>\"\363\242>\264\224\263\274\177\222\250>\000@ >mLd\276\231h\250\272\275\004\245\275\305$\224\276\214\204\275>\371g\323A\034I\277\342\326i\275\300C==/]i\275\207h\276\276\331\013\005\275\005.)\277\251h\212\276mR&>\213b\373=\312\017-\334\275\335M^\275\026\'Y\276=\035&\275\371\320 \272\036\207C=\356\352:=a9\317\275N\363I>\236\336\355=\345\373\261\2766%\025\2767\337(>b\324\325\276\344\261\230>\027\221.=\341Z\375=\276\021\016?c\020\032=\372\025B>\236\2606>\020{\021>6)\357\275\326\004+\274\241cb<\261Y\000>\273E\207\276w\371\272<\017\256\207>\227\275\301=+\272\375\276\357\030\303>\177\246%>\022\326\023\276kk\204\276\024E\271>\356\244\206>\205\354*=\216\333\254\276z\377\360>T\374\001\276\345\006}=\332\265\230>L\177\200\272\034\350\263\276\nt\233>VV==\231v\322\276f\035\214\275\303X7>JP\226>\037h\245\274\347\206\324=v`|>v\356\351\276\023\377\212=\320\341\013\277\0032\030\277\353\367\032>z\241\006\276\013\324Y\275L\303x>\306h\033\276\275\037\242\276\027\036\234>\006\035\017\275\326W.>\232\374\231>\376>\353\276\003B\210\276q]\'\275\250I\340=I@\025>\367\343\333>J\261#>\311\006\260>\273\344\317<\370\200,?\275\217\327>4\016\002\276\221\235\217>\026\013~>r3\337\275I\315\210\276`f\007\276=\317L\276\231\255\276\2764\341\342>\010\226\214>6\000\225\276\366\365\020>\251\332\322\276\016\t\311>+\227\013=\347\302\033?\002\200\254\276)\301\372\275\331`\246>_\333\251\276%\021\353>\232\367a=\267\244m\275\333\263\224\276eZ\267>\224\325+?\277\310Y>w\212\273\2743\"\206\276@\264\225>Y3\266>\265\000^\275\017\304\202\275\335DE>.\353\246\275\227$#\275\0367\210>\215\223]>GDi=\363\250e\276H\345\000\275U\314->M\366\031\277\020\225-\275S\251\020\277\326h\365\275h\375U>3\036!\2763b\256\275\233\356\304\274\317_\303\276&\232\235>\346\003\203\275\231n\361=N\215\366>d\204\257>;#\n?\302\002\035?O\251a=\276\036\241\276\330\255\221>o\277\003\277gL\336=\324\353\344\276\256:O\276_\371\216\276OG\200>\332T\206=D\024\337\276\335 \036>\224\375\305\276\246\277\204<\344\001o>\233\367\232\274\357\275\300\276\376\206\321>7L\206>F\374\205>i\251c\276v\361\365=\014\\\272\276\024\205\315\274b\275\324=qy\314>\235b\241\276\225f\265\276=2\225>\335\331\010\277\304\373\275\274a\272`> \355\036>\277\340\361\275;`\024>\253\324\347>\212;\363\275\273P\306\274<\376\372>\311\225\232\2764\001\230=Eu\222\276\224:\214=\272\327\247=\330\254A>\320\304|>\246$z\276\340\364\246\276e`o\276~\266\203>\0218\256q\t{>M\260\311\276^\216[\276\t\206S\276\005\201\333\275!\2214\276\273r\244>\260\270)\275\022cl\276\233`\355=\345h\313>J\222O=RRr>\301!\362\2759|\336\275\245\304\357\276\202\031Y>\037\001\034\276\n\315\371={\314\032=\265\237v>\007b \275\3412\254=\320\003!>\332\373\030?,\242h>\020\261\245=\300\333\273\276\323\313\010\277\230\337\006\277~\020\371=\003\332\273\275\026V\030?\356\250\331>\266\301\203>\031\273\370=\243=`\276K\3764\277\220Y\323>\272\247\"\275\217Y\326>\tp\310=\252d\322\275\316N\017>1\372t>\275\210\210>\257\246e>\301\337\376\276\033\n\004\276Q\311@\276\032\202T<\024\007\005=j\316\177>\342\340\016<8\313\202>\356\211\221>t<\220\276!V\202\276\251\235\241>\320o\362>9d\330\274\010\233*)\001\275<\252\221i>\310V\233\2743\222\023\277\224\314(\2773\367y>\217\210\362>&\365\212=+\226\'>;Z\322>b_\260\276\3273\266=A\320\017?QQ?\275\200\270\014\276\206\032\263>P\370K\276\375W;=:\354\262>\316\276u\276\037\240~>\'*\250>\035rw\231==\276\367\261\225\274\'\347U\276\237K\265\2754j5>9L\233>\035\220\355\275\272\274\212>\205\233a>.\270.\277\214\353\246\276\006q\t?\306\245\223\275\355\2476\276Z\211 \277\302\355]\275\375\225\376=W\261\014\2768\223\007<\342\261F\276\340\024\373\275%OF>\225\307\002>\352\001u\276&\366\336>\311|\200\276L\320x?X{\244\275\204<\376\276\370T\362\274a=\275\276\310\266\025\215D\256\276\235\275\307\273\237\321\027>\370\377\201=Y+\321>\027\327\310\276Y\204g>-\024l\276\372\377\362\274\270x\207?\205\363\r\277\250WY\276\312\357f\276\324^+=l\033}=dJC\276\330\310\033>\216\340\317=z\276m\276\r\265Q>6\025U?bq\213\275c\325\271\275\007\001\224>\244s\233\274ie\233>\321E\341\274-\201\243=\0269\t\277\340\0074\276x{\370>\2411\r\2769\201A<\206\362\333=o\211\211>b}\235=\030\350\203>\327\242\260>\'|\001?\213a\262>\307\207\261\2765|-=D8\312\276\274\300\273>\303\321j\276G\222\370>\2033Q>\334\256\207\276J\371\204>}%\032\277\031G\275=\222\267\301>OD\262\276\021\273\277\275\353\275\343\276\227\340\234;\321 \021>.p\032=\340>\332\275\272\230\234=\025\033#=\321\337\213>E+\"?\315:\251\275X\\\357\276\024HW=U\017\221>Pu\305\276\tM\322>\331\271\224\276\210\020==\321en\276\335\336\325=\356Q\226\275\007k\200>\372\243\350\275\n\312O;\226\230j\276\004\211\361>Q\3165\276\316u/\276\n\210?\276-{\003\274Q\340\235\275xlf>:\214k;\260\314\345\275\375FF>\311H!\276=X\320\275s\324[\274\300\t\010\277\355+\265\274\265\316\352\275\261\361\271\276\203\313\345\275E%\261>\260B\326>\344?j>9\270u>[\260\245<\035\3765=fg\237\274\251}\020>\261\265\034\275E\006\211=TA\254=\177{\263\276\0040Z\275-\252S\276\337\261\014\276\246\002\007=\374\256\266>q\230j\275F\325\255\275)\256\r\276F+4\276\010]\003\277i;->\274\017\025=\007R\225\273LF\310\276\205B\325\276\300m\372>\025\327S>\001\001\'>\272\325#\276\327i\026>gI\264=\275\263\244=\325o\020\276f\016\004\277MK\'\2763\323]>\254\034\241=\315\254\326=r\033\370\275|z\256\274#<\370<\267,\230\276M,\266>+a\307>\307\313\200>\321\'\035\277u\001\010\276\240\215\273>\372\004\241\276\340Q\034\276\303\354\020\277\210L\251\276-\347\356>k\345\246\276\367\343\371=\237\300\271\275\330\245\335\274\350/\363>\003v\017\276\206\272\024?\340A*\276\365\275\236>\262\202o\276\266T&\276\324\tv>\300\250\216=\362\206\224\276\364_\211\276\205e\256>\302\252D\276\373\031\225\275$\322?\276RQ\216:$\002\210>\013\263\202=\333T\210>\267\344\304\276\312\017\372\275\311X4>l\321\026>)\000\373=\246\254\n?T\236g\276J\322i>\026\305[>Y\265\252>\317\355\236=\341%\260\276U\351\203\276N`c\276<\243\035=\344\027\246\276;\254\214=\314\301\266>\036\302\216\276\312\333\322\2752~o>:\265\336\276\265\n\202\276\256\362\005\276\362j\274\276\201\306\273<<\300\372\276\307\020\267\275\256\217\346>\227\262B\276.3\254\276\304\r3\276\257KN\276\325\347\265=\241\3148>\n\210\274\275W\312\256\276\034?\315\275\325\312\343<\325g\226\2765\264\360>G\'\257\275]\376F>\001\204F\276\\\231\223\276\204\023\001=s1u\276B\375\207\274\372\034D={\352\355>\232^\301\276\264\231h\276\335\200|>\263\r\226<1%g>\370\332\332>s\344\375\276\232T?\277\3014@\2769\215\354=\300\033\205>*kC\274\032\322|:\222N\366\275\202\205\001?\"r\036\277a!\232\275\362\232\310\276\341x\335=\3424\246\276\3365^\276\030\356d\276\304\224\346\275\251)\255\275\224\321\"\277Kxr=\355L)>\010\321\370\276?\236\277>=\000\265\276\372\356\263>]\372\220\276\003o#\275=\274\036?\374\370\354>g\275\345\276|\260|>\232zV>}CC\275;\312I\275D\002\027\275\206\203\262\275\245\3659>\246\363\201\276M\364\264\275\241\304G\276\006\252\202>P\257\243\275a\301\241=U\355\030\276?`\372>L\307+\2766\0212>v{Y;\303\027?\253N!>\306\250B\276\016M\322>\21102>\002\251\312\276\010\215\376\2762,\224\276\024\231\352g1\325>\211\305B=\232\336\242>\231;\361\273l+\207>\265\257\245>h\317W>\035\235\004>l\342\213\275\360\177\357>8\223t\276\237\006\205>\026F\017\276\214\025\313\276\222\217\024?\242\266\342\275\007\000W\275|\3618>\362~\326<\005&\251\276\230\360\364=\203<\254\275H\033\003>\271\330\001>SI\320\276\2361E=*\331z>\354:\337\275Z\274W>h\354\311\275\253\255g\276\326\323\340=\220\204\364=E\230M\276\340\307\357=\2404H\275\241\307{=\367\327\270>\253\"\033?\250\267\207\275i\263\376=,\300h\276i\2043?o@\325\275\205T0\275\273dK>\323 \n?M\340\307>\006\r\001\277\225wW\2757\343E=\312\352C>\365\027x=\302\364\033\276\214\230\022>\361\247\252\275w\'\223\276\261\340\232\275\0103\331\276B\2141>m\035\201\276\013\211\226>\231\200\360>\334g\274\234\177[>E\001\273>\004\235f>]\361V>\267\233\254>&\202\242>RcQ\275)\344\233\276\3039s\276|\030\005>\201\036\007=\007w\003\276t\227\211=\n\347\026=p\256\205>eI\263\276\n\014\215>ll{\276\337l\201\276m\200\245\276\214\033\216\275AN\374>\265\312\n?,\370\247\276\300\005\202=6-(\276\324X?>\027\362b\274\024[[>b\206\244\276\370\006\273;\322h\267\275\362j\331\275\214\036\r?\336\363\014?3M\264>\357<\243>_\311&\276!\016|\276\374S5=\3073\353=;\352\276\306\201V\275f\265_\275~\274\214\276\373tW>\347\004\270\276$\035\\\276z\217\345\217=\207\000\271\276\276\200\245>w\315\034?\337\323\207\277|\237\327\276qIS>\375v,=\016C)>\336\254\225>\337\341Y>\226\246p\276\304\257;>AC\347\276\233\303\244\275\362\260\253\276\000YP\275\235G\014\276\376\233\004>t\261\252\274\036=\221\274\037J\016??69\276\223\014\246\275\377\222\242>L\321>>-U|\275tv\031\276\014\234\354>&Q\034>\221\250\016=\377\315\306>\333V\345=5u\031\276h\020\240>\022\'\220\276\207\221l=\267]\361>\242[\033\277#\320\241>3\224:\276\263\000\306<\243\231\021<\243\362\256\275\022N\205=\r\321/\276A@I\274?\242\240\275\313\375\227\275#\275\346\275\205\007\032\275\371\352\201=\326=\211>1n\'\276\254\"\211\276Gm\343=\203F\033\276\364\215\314\276X\233,;\337\344\214\276_\327\276\276\353\013\366\275\202:\215>\312C6>\377\360\277\276:\227\302=\342\271\367\275,\025\316>\243\222\266\276\231\313\335\273\223\'\317\273\365g\322;\363\372\364>X|\'\275\2778\241\274\251d\231>\036j\261>\225\205\256\276\342l\367<\316)\200>\345#\201\275,\302\302\276\003?\004>1\276\200\276\345\r\302\276\370\0338\274\0331\306\276Z\212\321;{\237\021>\223\354R\2761N:>\347\267\302\275Y\204\245>\177\014\275>\250\256\231\276\235;\240>\247Zk\275\271\374\270>\326\202\343\276\002\230\n\276-\t\273>\020\3646>z\tT>\335t\326<*\307\024>\245N\031\276\366\217\231>\337\032\204=h2\301>\005\363\373=m>1\274\2369?\276!\030\261>\242\360\254\275\031\026!=\"\235\210\276\270y\241>c`{\276\336\277d=\202\335\005>S\021\007\276:,\206\275\024f\373=\247W\256;\251\034@\274\250\255\200\277@5G?\357#<\277\337.\317=\375\205\271>\024\254\232\276\020\337m=\327<\270>OR\304\276\315}\344>y\255Q=lqO>i\371\340\276\266\257\266\275!\2104>zC\n>\332\334\006>/i\036\276\267`|>\204z`>\353{\233\275\"\\\r\276?\314\277=P\021\336>{\360X\276\263\003\305>\207?m\276\313\270\215\276\224^\003?\300cW=:\202#>9\024-\275\016h\216>]\325\355\275\244E\240\276\035\236H\276\355k\224\276\332\244\312>\277\037\202\276\217\256\025\276\025\204O\276\327\240\372\275\354\'O\275DrF\275r\312p\275\365z\014?@\313\024\277\231(:=*!\317>BX@\275\"\263t>r\340H>\2721\005>\373P7\275:\253\200\275m_\371\275\350C\237>\323\243\205>\223\256^=\202\261\340=\344|\034>\374\221\212>O?\245=\376\212\200>YO\343\275\355\213\334\275\033\017\304\276\315\026^\2756\323\333=\366Zu\276\333\217\025>\252/\246\276\320\342\023\276)\273\326>\000\036\330\276\234\031\203\276AXT\275\0270a=k\3718\276\313\351\020\277\227\263[>S\225\314=\2224\006?{B\246\276\027E\336=m~\250>}\341I\276\256\305\206\276Z\235b>.\230\362\276\334\335\310>ku\300\275\214\026\313\276,z\262\275\3751\301\275\264\276N\276la\372>a\364[>@\375\303>\207\323\r\276O\024!\274\246\3467>\311\226\254>\201\'\317\275(\215A?Q-\032\277!\243\223>o\251\361\274#1\240\275\021B\345=\325\014\330<\tW\213>t\351\376=\013\370<<\221I\362<\344^{\274HR\232\276\324M\265=\237&\234\275\007\311\215=_p\251\276\245|\255\276a\227\316=\"c\030?\245\n\024\277N\207?\2763\266\226\276\344\227n<\217\302\007\277\017J\377\275l\265\334=\302\345\254\276\377U\031?\222\211\212>\235\207\'?\323\235o\276\300\377\261\275\010\344k=\343\020\256\276\276\204I>\272\206\026=\222\230\303=\305\311\237>[8.\2766\244\032>\204\305\352\275\210\032K\275\034\230M?KP\247\276\254\370o>O\302B\274r\3559=d%\016>;\3347\275\340\0246=u\232\333\273\224T\300\276\274_\211\276\333\352\207\276\372\312\376=~r\232\2764\244a>\031\262B=\260\204\003>\263s3\277\r!}\276\261\311\234>\312\225\311\276\372#=>+\376\200\2752C^\276\030\263\301\276T\264m>\212~\254\276p}\260\275`g\340<\374`\337=X\363<\276\355\347\026\275\377\237\004?\373|\225=\310y-\2774\233\344\275\031\242\001?\337\306\231>\010C\343>Ad\242\275\376\333\311\274\264\251Q>\342\022\252\276\223d\215=\021\265y\276\344\2438>pt\266\276\237\372s?i!\026\277\330\237w\276:O\227>\t\305\207>\243\223>\276f\243\247\276\237{\326>\336\320\272\276j\360\302\275\027\177!\275?ju\276\322\274\215=\276\336\213\276\305\034m;W\022\365=\266[i>\323\300\246\275%\000\226=\t\265W\276\300Q\205=I\227\325=\354\363B\276\261jw\276A\010\002\276\347\346\311>\321\016\232=\333\256\006\276\353\306\331=\006\311\343==V\344>\"\026\237>P\007/\276\262\314\217>,Dq>\352\323s\275\226\367\022>G2u\276\3436\003\276Z\300=>\243\264\022=\242\000\327>\353\353\324\273\272\014V\276\364\2739=_\031\213\274/\035[>gz\010>cm\222\275\033\272\255>&.&\276\254;\345=\350\257\220\275wJ\344\275\241&\375=\350\307\203>\302\357H<\225\324\226\276\033\033F?N\264\356\275\201\333\337>\370\021\264>\277z\237=\030r\000\276\002\266\372=\356\245\221=\n\263\262\276*\212?>\366\362@>f,\305\275\222R >\2631\232>!\317\342>\027\"\273>\357\001&\273dO5=\007\360,>\374Cr\276|\331\216\275\306S\243\275\345\345\247>#^\234=\353X\006\276m\224\261>M\233\270\276\371>t>H\346K>Z\2453?\260\364a>\177L\352>gx\\\277\300\365\010>[\322\004\276\377\202\266\2759{\032<\217*\253\276l\0367>\372S;?\211\360\275>\335L\r?\343\222\327\276\305\334\224\276Q\332\036\276s\263\010\277\241?c?\201\235\376\276\275\\\266>Z\260\244>x\272\264\276\0004\324\275)\2260\277\376\312U\276T[\265\2764\0173?\217\236a>\310c2\276\244\373\352\275\330\017->\203J\262>\351\344\364\275f\025\244>\255\315\314>*\366\n\277k\254\027\2778\351\203=\203\315\340> \033\222=\\\242\222>`k\242\276~\370M\276\'\351->\222\022\232\275\006I\240\276\004\376:\276\031k\030>#$\277>\360\n\022<\314\366\320=\241\377\023?\265\334\267\276\212.\356>\243-)\276m\321\315\276TG\231\276\347\257\003\277\0277\221\276~\252\301>xT\016>\351E\230>|6\226\276\030\252\026>\375\371\306\274C\332\021?\315\036}>L\366\332\275\035]A>S\256t>\3272\214\276\263p\325\276\2779b>\227J\325\351:\033>u:\272\275\227f\241>=\032\035>\2469\023\277\3235\265\2760\t\">D\221J\276\241\201\035\276\373\262\004\275\037>\270\275LG\275>aaD=B\265\236\276%):\276\3331\021\276\312\257\200\274\276\301\307\276\032\340\032>\035\272\346\276@l\256=\365\210\251>\355\004\300\276\325\"\026?\255i\304\274\305b\244>\340\020\026\276.\231\322\275\256\374\304\275\272\351\207>\373\321\217\276\355\351\'\277\365i\371\275\251+\235\276\361\010W\275\\\374z\276O=\353\276\267i\357\276\000\177\277\276xN\270\276\254\267q\275\'\270\025\277\252\030\342>_U%\276t_ \276\200\312y\275MD\335\276\360\003\254\276\264.D\275g\206C\276\323\275\311=\374\322\254\274\225\032\200>\206\204\"<\336\004{\276p\270\245>\216\010b>\221R\334\275\027\320\221\276|\231\212\276\016*$>\0310R\275\255f\362>\200\376\232\275\"\376v>\336\313\001\276>($\274\271\306Q\275\272@\344\2756\233\023=\306\240y\276>\304\016\2771:U\277\206\313\000\274L\251\335\275\217\376w>Q\006I=\254\t\233>\247\014m\276L`Z>\350\010F<\267]\303\275mq\241\273\251\006\034\275\260\0051\2772E\356=\224\0375\276\2653\035\277\354\246C=%\023\317\275p\3507\276Y:\325=@\006\253>\275(\210=w\234O\276\016M6?\323\240<>\262\226\275>\rrn\275\"\276\305\306\312\217;^!b=\366\345\230>\316\225m\276\344\316$>\313h\352\276\rq\020\277\372\021\223=Z\342\023>\257%\216>\221\252\332N\375e>\027\234\242=\273c\227>4\217\243=\243\364\214>\231\227^>\275\021=>\247\000N>\003\330\000?K\317\001>\274Wp\276\374\023\270>\222\262\036>\274>\217;*U\344<\340\272\200<\022\343\361\275\272:G>\'\251)>~\035}\276\225}L\276Y\235\365\274\200,\022?\033\250G\276\361\025\326\275B*\314\276n\323Z>\301\344A>\267]\214<\365\347#\344\007f>\016\233\325\275\033Kq>\332.\024\276\213\263\216\274\013\246=\276\026\310\003>\010\035\021\277\303B\035\277T-\221>\335=.>\242\322\336\276H\366$?:\007!\276\035-\302\275\315^\250>u\021\305=\372d,\276\353&F=\351\007\263>9\230\320=\033J\255\275\200\301\234>\346\360X\275\204\267\362\276\022\031\371\275\352\270%>jf\331>\346g\005>\326\277\241\276\034\342i>\324\353\253\276\341\215\013>T\203d\276~x\213>\'6\327\276\215\214\240\276)7\023\276\025A\n\276\230\004\334\276\346>&=\2535\271=\225\310\r>\366)\300\276\257\200\215>\312\235\240\276X\262\253\276\274\201u\276\000\235+\275\360\244\242>w\257\037\277\210\233c\276!%\354>\211N\277\275\017\353\207\276\322\210O\275\035\217\203\276d0\342n\004\272\276^@\013?d\"o>\006^C\275A\312\240\275N\177\241\276d\r\333=\315\013q=\3525\231>\364\n\262\275\204\004\263\275@\005+:\212Y\335\275\217oF>\337\323J>\257s\230\271\3340\272>\3034w<\304\353\001\276\217R&\2751\003\036\276\336X\007?\231r\215>\334zK>\031\307\205\276\007\004\031\276\250r\031?\033I\343=C1s\276\203\365\311=\256\222\251<\270M\214>^\374\246\275\217\230\000?\230\265\243>.\233x\276B\320\213>\227\235U>\254\"\264>*\\\325\275\251\324V>\312\205%?=\217\t=j \234\276[\324G\276\375\337\203\277\250\202C>\367\252\362\275w\325\336=em\004\277\350\346{\276@\006\361=>\3036\276cS\217\276=\210!>\324\253&<\202)\024\275}v\277=Bb\313\275\226T{\276\3416F>\020I\212=\2212\234\275\365.X>D\030\261\276\026\272\243O\3218>\257\264\327=\\\005\352>)$\240=G\225\177>zr\203\275\010\304\024>\035\237\303;~\3542\276k+\203>(\265\313>\342G\306>\022`\"\276\257\307\001=|~P\276\267\366E\276\340\221/\275\025\253\256>\342I\342>\365\023\276\276/\351->+N\311\274p4\215>Q\200j>\370\303\202=Fr\204\276\365\346\'>\241\353\025\277}\316\250\274\361 \000\277\214\357\263\275\335\016\013\277\001\247\026=\213U\016>\361\036\262\276\020\371\266\275\240a\231\276\025U\317b7e>\346O\306\276p\230/\275aL\026?\021\223.=\206g\016\276\365}\004\277\217\247\303=?\036\245>d\300[\275Ci6\277\252\t~\275\031\222^=\304\330\303\272\225rF>*\251(\276AU\272\276\232\246\225\275\326q\021\274\332\354\240\276(\252\036>\030\177\254\3340\031\275\1775\307\273\001\347\255\275.?\222\275\260\213\030\277\270\255\002\277\307\305\020\275:O\306;\272\341H\276#\031\274\275\3524\222>\276_\364>\354\242\010\274\261Q\336\276\013\375V\276\033\225\265=?\026\244>m\256\016>\327\325L>\376Q\003\274\030o\340\276U\021\326\276\002\244W?\n\\\325\276\337\260\235=Y\255O\273\332\032>\276S\333\263W?o:\253\276q!\230>\223<\026=\264\225\245>^\3452=\224\233\271=\035\251\235>\315\365\313>6\321k\276\316\220\246=\365\"\373\276\376\307\234=\2136\360=yB\257\273\312lH>\305\321\253\276\247Qz\276&\252/\277\240\200\354=\362\333\362=8L7\274\213\207l>\276e^\275d@\225\274h\225\362\2764\345D>|t\214\276\324\265\201\276\333&\232\275\013\3042=\242\216\t\2772\374\353\276z\261t>\032\364Q\276:H\266\276\305\010\316>\235`\343=;\203\017>Vk\030>.\211J\276\n\365\332=\332\013\267\276.\315\211=\036aS=\326\330\262\276 \230\222>\267\236\007\277\016c\003\277\002 \234=\365\256\351\274\301h\221>I?\004\277y=S\276jg\r\277\006o\357=\364V/\276\007\021\244>p~\273\275\277d7\276Ed\214\275\233\013c=\234\\6>/\205\036>\353\303\240<\2613\207=\3715w>\224\270\210\274\004\301P\276\013\323\314\276\212@\206=]\240\274>\270\374*\276L>\221>\247p>>\211h\251\276p7O\277\274s%>+\330\276>\025\217}>\364\372H?\345Ok>\"1\251\274g\272\311\275D1\r?\356+d\276t\330\210\275VNV\275\334\220D\276\227\260\004\276/\202|=\0232\362=\341c\022\2750\237S\276\332\234\205>\260\342\256\276\212\327\276\274\221\237\305\276\265\306\017\276\315Q\373\274&\335\037\276\317\313\034\276A\311\007\2771\266\361=\325\277\205=\277\242\361<\352\004\356=\030TT\275n(\236>\204\356\222\275\036\020P\277\313\276^\276\375\207\306\276\314\034\211>\261L\035>3\033\023\274y\302\341\275\013A\260>\373+\333>j\020\365=JK\261>\347\264\021>lQ\313\2760\017\001=\177\240\255;{\027\027\277uo\206=\006\215\212\276\246!\306\2765\302\366\274\225\367\243\274\333\'\216\274\367\227\033>l(\253\275\351\302N\276\277\363(>No\231>\2441/\276\323\001R\275\345\001H\276Sa\352=d\354\207\275\227\353*=\335\330E>\026:\035\277d\224B>n\317\312\275TAK>\302\016\026\276LR\374\276+\346\374>\037G4>\313i\371\273\245\253k\276\363t&\274\320c8>$61\277\321\336[>\274\306\033\277J\303\t>F\211\335\275\000\346\236\274\263\3308\277\2456\312=\002\034\203>|\252*=q\014\370\276\253\250\271\276/%\305>\277\301\377>\215\262L\276\037%\267\275\2727\322=_%\013\276T\245\\>\250\1775\277\365\210\313\276b\252\314<\304\206\312\275#\003\364\275F\350\242>I\037\036>\215i\212=s_\376=\340-\207\276nk\003\275\032y\030\276N\306\251\276\006\254\322=\021T\243\2763a\373<\215\027\'>X\"`> _9\276&Y\337>\206@\351>\251\331\327<\310G\221\275\240\233B\275\334R\260\275J\263\263\274\000C\325=\211\240o\276n\260D\275\216\214\200>\212\202\251\275<\305\001>\227\354\273\276X\035\006\2759\243\013\277.\240\343>\232\021\230=l\311\325\276,\'t=F\210\322\274\344\004\325\276\305\233\304\276\360-5\276\275\274\313\276mG\"\277\246/M>h\337<\276z\321\272>\306+D\276\333\265\317\276\271\301\351>E\301k\276\373\340>>>\342M\2777\006\316\275\026\n\311\274\370\265)>aB\002\276\335\274\000>;0\333=L\212T\276\314\312\266\276$\253\275>\222\006\213\276>\207\216=\030f*\276\277\322\327>\342\263U>V*B\276\344\245\233\275\3310\321\276\352\"#>B\332\352\275*\220Z>\016\254\032<9\344\212\276\033\2615>\371^\277\276\232E\376\275\'(\340>{\263\257=lu\245>sC\244\276\240\301\257>\237\215\231<\021\351\010>\323\024w\276\205\371\212>\3269\277>\350/\206\276+h\235>+\253\271=lI\014?]=9>\331\203\312=\"+-\276\315\356\276\275,V\213\275D\202:\276\304E\233\276\212\307Z=m`\013?/\034\303>\250DC=\374\276\000\276\202\303\375\276Mp\316<\371\372\336=NI :\2730\362\275\000\016\355\275\325\245\325=\037\356\013\277\340\226\247=\003d\215\2768\313\007>_z{>G\263\374\276y\034\010\275\362@\331\276\232:\204\276\274\303*\275\2752\226<\034;?>\324,\216\276K\200\265=\225\326Z\276\300\327\210=Q\222\222\276\320\315\005\275wp\345>\t\023\244>\243t\253>\323W(\276\"J\302>\t\017\352=\271Z\326\276\354V\317>\301+M\273 \375\235\276\313\034\377\276\260=J\276\254\014[\276\366\255\233>\361~\206\275\232\2621>\330\216\251\276\350\027\003\277\2405\266=\205\262\302<\352\256\026=z\353\343>q\233\254>B\020$\274\\:\305\275\332\253:>OM\206>b\342U>;C\247\275\273\353=>A\217\352\276 \252f>\007\004\312\2752\333\341=\313\022X>\315c\010=\0269\213\276(\231\317\275\234\267s\277Vp\314>\272\243\001\276S\206\024\273\325\273\307>\324Im\276\346u3>\271\326M\276-\013\362\275 ;\n>\220\304;\277s\200\320>\254:\005?A\373\237>zc\371\275\214\327\365\276\204\313\323\275D\350\206\276P\333\226\276\224\351\256>(\347 >\360^\320\275L\251}>\224\226\023\276\210\266\223>0\221(\276\326\337\235\276\271\245i=\t\277m=U\002\341\275\341l\363\274&7\364\276\252\342\213>\357\257\234>\366\251\204\276c\257\014>n\372I?<\030*\2756L$=\005\336\214>\367\262\017\275\375\362\215\275\275\271\261>P\220\232\276\241P\264\275:\202M\276\001\214G=\274[{>\005\211\367<<*\027?\317\333\006?\2639@\2748h\377<\236{\024\276\205|\016>\000\276\261\276nj\273=9\212\200=ru\323=\216\327\347=\2105\030\276\177\237\206=bTJ>\007z\236\274x\257\024\277\024\300\256>\361d\200\275\302]\r\277\020\353Y=\376z\201\275\237\025R\275\333~\243\273\343\333\333>t\344&<\225\222\316=\257K\302\276l\300\201\275\246\305\201\276\026\031\376>s\376f>\\\273$=\301\246E\276\366dC\275\004\335M>\203\033\003?j\330\321\275\304\023\213\276\310P.\276H\325;;H1*\276t\334\033>\371\016q>\022q\345>\301\001\344<\307\370\212\276T\356 >\310\032\035\275\335\341\245\2763\"1\276\017d7>H\361\202>z\251_>SDs>\316\242\354\275\261\360\241=\255Q\256>k\337\005<\217\252\010?\337\321\020=\007\265\254\276\022\001 \275u\266\367> \367\003>-6\n>\316\325\036\276\017Nt\275#>e>X\346(\276 Oa=\250O\241>.\265{\276+\357\'>\20037>\231\210\177>@\200~>\304\307d\276\334\020\231>\371%\247;\317\336\213\276Q\256\344>\377\307\310=\003\364\351>\264\327\002\277_\257\017>\305\306\321>\251<\327>h\335\213\276\360+2\276\n\352\360>\243@\007>\037\351\033\276\202\273o>\242t\235>\247k-?\315\232\007?\254\335\317\276\212\363\261>{\336\371=\344\335\024?jHJ9\341\371\022>\035\251\254\275~G\252\276\037\222\301=A%f<\022\222T\276 |\304>q\271\257>a\016\346\276y\374\303=\364\243\310>d\361o>\334j\300\276\244\327\307>\277F\220>):\006\276\\\266*\276\366\006\206\276\314\001\004=lo\247>\273\320\314\276\321*\375>\347\237\">\247\004\225\276\263\325y>\345}\226\276\246\022\014\277\302\225\205\276\034\233\361\275\343t\300\276\377\021\254>\371\277\307\274R\212\005=;\202(\275^<\004?\021\266\356>M\263\216\276x\251\307>\211\024j>s8\025>B\3410\276\275\205\250>~j\351=\301\014\003?\nP\025>J\206\\\276\374\237\214=\226\302<>C\022\335\276\026g\202\275d\tJ\275\301\323\"\275xi\310>\373\225\311>\247\343\360\276\370fM\276C\025\263\276\315t\256>\211d\202\276\231\361\374=Y\240\003\276\241\001\261\275ul\222=s\350X\275r\215\\\276?[2>B\267]\276\241\251\327=\346\033\\>\3027\026\277\300\357L>[)\231\276\3215\301>)\021\254>[\316\261<\257\306\343=\305\364\350\275\244\357\364>\313\007t\276\220\025G>C\031\005>\217\225=\276\336\3116\276\226\207\007>\235\204\256>\025\254\203\276ll\230>\364w0?/\037S=p\024\265=\331M\337=C(Q\276\355\277\024\277HR>>\276\356\372>\205\311\003>+\353\204\276J\024Y>\254T\230\276\024\022\013?1,D>\031Lw\276\310=t\2764<\346\276r\342\270>\026A\022;,&\331=\252xf\275-\r\271;\202n\350\276\312\210\\\276\227\034\220>[\263\237>\331s\261\276\r\364\217>\23188=\2432u>V\336\310<\360\257|\275=\243\347\276\3215F\277G7\332\275\341\033\025?\016\257B=\177%p>#\221\272\275T\370\321\275=\023\205=\035*\310\276\\\253\206=\034\024\202\276\324\310\315\276/\270A>\025\001U\276\370G\037\276\030!\033?\246|j>\266\250\016\276\241&\352>\334\243\212\275\316o\354<\036\366@\276\373\314\335\276\205n\003\276\320\366\202\2752\310\"?\336\220\265>w\025:\276\234\177\255\276\215\254\201>6\005\215>\3255,\276\313_\310\275\376\347\013\277\262\254&>\370\216Zd\356\351=P\036\037>\347\020\345<\021\246\372<\334I\347>\211\253R\273\217\250k\276\254(\225\276\r\001h>\222\336v\274\232\261&\2763\032`\276\360H\326>kh;>\260\273\231\327\310\227=&\363\240>O\0307>g\342)\276\356\021\343\275\314\026\005\276\371\231\034\276\211\335\325\275N\016Z\277v\344\372:u\272\233>\240\330\177=y\014}=\365\303T>\000\003.>Q:%>\25559\276\201:0\277\312\216\254=n\262y>~%\367\276e\225\335>V\364\'\276,.\311=\262\000\013?g\025@?Gn\024>\002\363\243\276\022\022\020>\271\253F>\202\352\004>\014.m>6\344\373=\371W\035\275\215\242W>\205\272\005\276%\025\344\274\204n\225\2761y\010\276\257\334k>\247\350\353\217\337\264\275\236\205O=[\322\203\276k\353\237\275\311\3441?\035\231,?\333\207G>jJ\225;LGS\276\371\007\005\276M\214c\275w\2018>\231\272\003>n\301\031>\365Z<\276\317\327J<\335\257B>\261\362\234>\220+Z>4\376\316\274\003\020h\276\367&\266\276\024\203\010?x\217\217>\004\366\021>\001Z\000\276\035x\265>\003\222\304>\247\302\235\276\363G\207\276N\312\246>%\305\014\275\0141\216\276\261L*\276j\301\245\276\022\3760>\312\031\252\275\321I\221>\006\355\345=2yU\276\264\301\026=#\010\362\273\323ao\276X\257\300=\030 ,?\271U&=QN\310\276\337\005:\275\000\323\323=s\340\214\274\247\272\026?~\351\374>\323\002\266\276\273\346\224\276\312iw\276\023\226\320>\203\0145\276s\014\201>\256\0252\276\375\354\206>\2534t>4MJ\276\250\005\013?\236RB>\272\274\017\276[m/\275L\346\315\274\274\r@\277X\262R\276<\254\277\275\313\276\224>\326\351\315=\262E\271\275+\247\322\276z\361\314>u\247\316\276\263\340\313>\306\374~\276\'Z\023\276\336\260\216>K.\226\276Z\247\227>\277\t(>\254\353\020>[\016\245\275\200\021\251>\256\t\216>\217\227L>.\324{\276\003\264\302\275\3604\240\275\0223\225>\272\312 \277\313\360\223\276N\\2\275\213\0032>\210\3023\276\372\031\014=\035\317\353\275T\327B\276^\215\204>7BJ=\034\301`>2N\352\2741\235N\276t\014\242<\276\023:;g\370\217>tj\366\276\354!\354;\026\372D\275\013\021a>\347|\023>\347\254\242\276\344\350y\275\007\273\371>z\365\224=\240\365\327\276\316A\314\275r\327\247\276%{\031>A\326~\275\315#\362=\357c\260>\272\356L\276%\0061\276\276&\243\352\246O\276\223:\035>c2l\275\006\001\322\275fr\206\276\002\352&>\315O\206\276\335\177+>\206\267\000\277\236\302\211>.I\001\276i\220\332>\000(\302>\333U\202>&\306\204\276g\024\235\276\304\327\236\275\220\031\361>?)\227>\214\0238\276\376\255\263>y<<>\355\251\301<\304Z>\276\252y\311\276\376\251k>\272J\"=\331\347\211>\354\273\002\276:\331\256\275e\242\243>l\035\221>A\251+\276\016h\375\275\201\301\t\277\307\244\\>\2632\207<\3615Z>\343h\264>\013g\021\276\037\357\356>L\371{>\342\202\370\274bJ\"\276w\226\376<\326\275\250>\320\262\352\276\013\017\377\274O&\036\275\334\342\255\276\231\233\202>\353H\n={\304\017\276W(\214>*\220\226\276dt\222>\035\312\317\2751\302\203\276\347\370O\277\2666\247\275\241p=>\301\353\024\277\364\357Q\274h\t\260\276\350F\020\276\361\014\330\276\254P\001\276\364\000\036\2765~\222\276:\265\227\275|\206C>\001\003\207\276r6\241\273\204\256\337\276\017\341\031>\217\326\220=\263R4\275\256\304\375<\323\311\n\277\253\304|\276\246v\305\276,\264l>\342\271\002\277\215\366.\276F\376\032\277?\344\371\276\004\004\236>\n$\267\276\342\022\212>\260Zr=\036\320\250>W\r\371\276\227#Y>$_\210>\204\305\010?\034LD\276\231\212W=90\326>`\"\262>\274\340\333\273\266\360\026>\215\211\002>\231ok\276\364Mw>\305\013j>\231\353\"\277#/\037\277\377r\356>>\343\226\305\3526>\350N1\272\273wx>,}\233=\001\3640\276\200\355\005\277\351\202g\276\222\245\224>\253\226\'\275r\363#>\026Q\323\275\374\351\006?b\322\361\276~\275#\274F\033.>\3721\302=F=\371\276\354\303\231\276\361\215\370=km\220\276\360]\022<\036u\035=\221l\236>&\315\264\276\207\313\300=D3\035\276\240=\246\276<\"b>\025\333\223\276\017\307\260>u\320F\276\020p1>\013\200\356\276G\"\303>\205\350\036\277@\2526>\246\006\351>+\334\225\276\233\261\346>\354\242\216\275\377\273.>\244\"@\276t\334E?h\372\227=\342b\016>@\357m\275\312\353\307>\350\177\204>2\005\010\276D)F\275\253\361\322=WH\377<\023\337\223=\252\330\262\273J\022O\275\"\323\200\276\226G\303=\321\227\276\276\363\250\003\277\377s\301>\3508\217\276\022\275*?Xn\344\273\226\246y\276\266\337\002?\276\206S\275VR2\276KZo\276\320\351\353=^G\266=\022\273\035>!)\266>\247U\217=L\031\374=/\'\232\276-M\371\275#\265\r\276\335=\273>yQ\275\275\027\345\243\275\263\322\200\275\335)\311\271\020\tr>\321\2568=\363\316\223\276\017s\345\276\207\313\014\2767\215\231>=^\327\2744( >S\360\234>\205(p\276q\327t\275\355\257\335=\346\204\301= \013\020\276\243o\236>\201\212\264>\270\001\326>\205\330\224\276\304\271\'?w\0349>dh\036>\376\034\030;\365\240\000>\344\373\201=\277\246\217=\321\342\">\031\222A\276\233\235\250\274D\301\361\275;T#\275\366\273\230\276).\346<\211\215\035\277I\'\t>P\331\230\276\231!{<\312\217\032\276$\210\306;\304:x\275\306Ze\272W\036\241\275m\317\326\273$y*>\367\256\003>\200^\243=\245\372\236\275\035\356\365>\374\352\210\276\177\261\241>\023\255\237=\364\352Z\276\271\377\337>\224[\255\276\327\206`\276\333Gc>\356\200\212=[\245C\277\2025\276\274\247!%\276\373\310\002?\016o\253\275\334\266\223>\272m\214\275\002K\320\276\357\"\212\005\235\347>\341\266C\276\007\276\t>\274\220j>-}\255>\311\260/\274R\372=\276h\241\204\276iy\233>\010\365\241<\370R\347>\364\364w<\370\272\213\275\020\022/?\220\260\207>\0238\223\275\251Y\020>\203\237\320\276n\370f?o\377^\276\306\310\230\275\245\310\356\274\205\233\244\276\265\205\231>w\025\237=\020G\031>\324OR>\323t>\274\316\271\223>+\315\223>:\325\337\275\326\374\236>\2260\214<\035\007{>\316\217b>b\362C\276@-n>\203\024\325>\343?\231=\\\322I\276\245\203\254\276\225J^>9C\315\273^h\003\276#\021]>\246!w\2762\344\003?C\221\234>\350\325\305>B\215\016\274R3\310>\326\212u\275\346\036\371=>\032 \277\243\376\022\276\261(\261=l\324+\276-\346i\276-\307\276\2761x\006\274\377\241\336>.+\352\276\224\250\317\275e0E>u\357R>\317\264A>D]\234=\254R\253>AB\234\275G#=\276j\227\325>9\354\265>&\351\025\275\304\363I=\252\3247=L\221\004\'\353\362=\266\357_>b\352\265\276\272\316\355\275c\271\033\276\"05\276\250>\371\274\314\335\002?\2005\332>:\014;\276\203c\023>\020\246\217>\241m.>\"X0\275\304J#?;\271\001\275\237s\345\276\320\231\302\276\017D\002>\216\022\216>\3253\223\277\366\213\006\276\271k\312=\020\216\357=X\342\354>\325{\031?d\002\304\276\256NP\276\305\035\224\275\2618\324\274$\320\321\275M\337\377=O\000\304>B\031\252>\354\326$\276\373\007\363\27552g> \312\000>\277\322\341\2714\237\271>\036L\016?\255\013-\276\2566\013\275\014\336|>\254\205\213>F9n\276\247W\312\276\264\034\004=#\357>\276\341h\320>L_\351>N\n\033\276\260k\204<\225\016\361\275\372\276\237\276\220\334\221=\001X/\276\341\352\224\275\334\220=?\351\r\331>9n%<\351\014\263>}\377{\276\347@~\275\030b\247=\252\316\256\275\240\032\241>\326\216\335\276\352Y\302>\006\367\n>q\372\002\277\007\324V>\372{\202:\206\241\307=\223\351\333\274\203\265\316=\266\357\226>\345\t\373\275\221_\200\275\014\262E\276\242\323\254\275\240[\016\275w\002r=\244\203a>\345\257\214>9o\217\275\271\337U\276\256\230\013>[\321\004>\307\213\217>\0379\200\362h:>Jt\037\276\304\254\210=.4\211;\204\024k>eC\364\276\354L\254\276\271\220p\275pb\235\276\341\240\211\276\005Q\236>a\330\334\276&W\262<\356\267]\276:\2300>5\231\357>&y\225\276Y\246\215\276\211\270\022\276\263\272U\276=\025.\276^\230L\274\025}f\276\320?\262=\027xE\276\331b\240\276|\273\303\276\235x\006?qw\221>lP\265\276\263\261\225\275>\247\247\275\362sh\276\211R\222\274\220\033\350\275\"\035>\276\362V\017>,v\236=\177lp=\206\267(\275\037\230\235<\302\354\372y>\243\362\367=\321p\255>5b->\326\r\331\2767?K\276\035\231\250>\330\245\277>\216\353\215\2764Y#\276\312\023\261>\030\2664>)\212=\274\374E.\2752\277\245\276\223\260\246>\373\373\010\276\026\025\312>\317\317\266>\000b\032>7[\001>\236)\016?z\0307\276\003\037,?+\243?>\205\363\330>\223\336\333\275\365\236\223\276\224\301\002>P O>.\377\'\276\223\321\n\277\035\367\267>@#\377>\021y\302=\014\212I\275\301/9\276\217\002\351\276\254\234\016>|9\220\2760\337<\277\312\341\246:cj\254\276WwY\276\347\003+>\257\032m>\265\351\222\276=\221\032=X\322\313>\027=h\275\276{\024\276\240G\375\275\373DL\276\002\277G?c\356\036=\265\244\224\276\013\326!>\226\304\267>\036\250\363\275\223V}\276D\350\350\275\220h\242;\021\200\014\276\3122\253:\270B\224\274\213\305\225<\2462\200=\360q\350<\214\242\'>\275\257\017\276\221\312\017\277\022\004\021\277\355\351\276>~H\205\275Rq\262>M\002T;@d]\276,7\243\276s\2477>\261\034\353\276\202b\002\277\336\211\320\274A;b=M\3267\276\277\233\322\273\357\023&\276\270-\324\276\275\216|\276\352\345\204\275\206\262\025\276\255+\377\275\250\217\345\275C\r\225>n\347T\275EMM>H\326\004\276\300\027=\277\276\034\263>{\233\207=\007\'\206>\374H\365=\313\273\256\276\240K\031?\252\023T>\222\323V\275\246x\273=\333u\234=8;\002?k\360\240\276;\nI=1\030Q\276\336\023:>@\230\027>\331*\373\273\331D:\276i\224Z\276\205j\210\276\251\"\r\276\306Q*<\252\267H?\037\256\003>M\300\245>\033o\227\276\017\260\356\274)\247\201>\201\323E\276\306\340\033\275\020_\243\275\342\221\221>2:d?\010|\221;{\252\237\276[:\206>^z\210=\363\344(;\300\325\212=:/\323>\271\267\242\276\331\035\250>)+;>QoI=\360\303\365\275:L.>\215\242N>\033\341I>Q\343O?%\273D>\370(@\276\224\303;\276\030q\003\277/\234$=\333J3>\215\021\374\274\205\214\230\276I\037\332>r~;>\177\036\027?\365\221\324\276-\316\345>Y}\030?H\344\t\275\200f\355>e\026\331>\2349\375\275\253\313\201\275S\\\327;\010pz>\274)k\276L\234H>\253f\363\276\275N(\276\225\335\223\276\255V\220\276\371r\226;\371v\021\276\027+\210>\330y\261>]J\344\275\301fY\276\\i\202\276l\n\352\275\232l\235\275=\005\347>>\2571>\302yt>\277\014\314>\036\263 >\213\276\200\276&WY\276\366\214\021\277\207\231\373\275\363!\314\276\324\276\305>)w\216\276\323}\211>\022\377r>\035\'|\276R\311y\276|E5\276\212\306\236\276\217\212O\276`H\330>\314\023\327\275#\214\343>\226\342\213>\332\026\002\276\377\3456\275>q\262\276\021\311\325=\252\354\227\276\217E\017\277\027kC\276\027\254\\\276\366.\217=\205x\236>\220\344\351\276\277\006g\276\231W?\275Z\272\265\275\254\004\263=\247\365\r\276$\367C\275\345\240\242\275\371\207,>\022\376m>DI\017\275\t\200\321>\014\t\303\276\241\3312?\221\2746?\332\r\227>\331i\016=\364d\267\275\212w\321\276\3711\235>\342\023b=\250S\214\276f\323\316\2751D\005\277\001\332@>\357\324\322\275\366\342\025\276\035N0>\025\321\347\2762\336\253\276\001\233#\277\324\244\267>Rl\'\277\372\234\021\276\216Lm>4k\031>[\036\220>\030\266\375>\273\037>>\242Y\256=l\373\373>\260\031\033\277\362\275\206\274\372\001\004>\265&\370=\360+G>y\230\031\277\300|\304>2|b\276^I\027\276b\016\222>\346$\330>\205S:=\227\222\231>\236\036)>\316\"\375=\352\032\214\276\362\"w\276\337\241j\276\226\027\323\276\237\247\302>(\363A\277}\333\363\276\3459\225\2763\206 >\374#\005\276\302\250\234\276\253\255m=\256\253\020?\276\232\344\276\332\325\363\233\031\005>\236\206\214\276\273?\027=\207\3457\277\023\337r\276\023\311\233>\3156u\276*\273x\276|\237\235>;\310\252>7\014\307\276\320{;\276\352\320\305\276\302\343\021\274wW\343>\343\316\303>\323\251\357\276=\210\275\276>o\324=9\365\252>\325Z\222\275\316r\201>h\201\202=\324lC>\260y\260\275\016[ >7\363$>\036<\237\275\024\027\021\277\216\272]>\275Zy\276\342\222m\276\341\205+=\034\0210\276\247\211\216>i\014\251>d$C>\212\210\220\277\263\260\177>Z>\030>-\331\245>\367g\021>\367\320Q\275\377\317\206<\330?\031>\367Tn>\020\327\010\275\2509\234\276\034\214\262\276D;\313\273Mo\316\276<(\206=$q\273>\200&\345\276\351\303\375\276\"\232Q=\361\275\303>\227\337,\274\376\252\212>\r9Q\276\004~\344\276\204\341\205<\227^\236>\324\275\251\276\004X\302\212\360\027\276\010\027\353<\214\347\225=8\361\264>F\305\223>\372=\006\277\272r\233>\375\372\210=ag\264>\201}\264\276\367\241\311\276m\353\332\276\350\036\230>\237*\231>\366\034\316\276R\361\250>\361\256\347\276y\003\360>CD\343=\014\255=\274XG\002>\234\331\202=\252\364u>\224l7\276\273\320\"\276\307\302\221>|\024Z>T\306\370=\253\275\026>\215\203\035?\326\005\304\276:F\373\274SR\214>\302\214#>\260\230v\276lUr\275\253\274\025\276\312~,\276\344\356\207=r\307\333=\256\336\311>\211\220\252=g\014\024?\013\350+?\254\334\246\276rf\370\275\246\003\213>!Ty>E\021\000\277\035\334F>\027\366\317\276\214\304m\274\036\220\371;\263\002\235>\377\021H\274\324Sq\275iA,>D\331\n>\t\222\252=S\032\327\276W\326\r\277\375\257\274\275\314\222\004\277\252\336\204\276\004;\303\276|#|\276]\346\010\276\317\214D\276t\305\013>\320+\266\276)\206\375\276\020+9\276O.\314\275\373\037n\275\005F\226\275oW\200\276\331\\\264\275\206\317\337>\215\226\224\276\277\225!\276\035\344\267\276\240\206\033?\026/\277>\027\314d=4\321\007?\332\371\205\275\341\372\n\276\274\342\220\276@\217\264\276\261\357\014>K\3442>)\251\312\273\321\252\020\276\253\307\361\273\253\204\216\276\365sm\276i5\030\276\233b\007={\230\356\276\321fC>\350d\027\276\346\344<>\021O\251\276\332\025\307\276\351x\231=\234)\213\276\241\030\224>\020Xb>\276\025\276\276\335\265F>\251\276\341\275i<\312\276)\307\r?u)\302\276\2668\264>Y\010\273\276\034\002\202\276\n\177_\275a\327g>\264\025\200>\236\261\205\276\204K\'>\030p\005\276\377\264\270\276\276\272g>)]\026?u\211\275>\341\310\377<\305M\237\276\370\224E<\354\005\234>\"\201\237\274|\341*>\373\344\366>\316\356V\275\204t\375\275\265;\t\2765\204\210>vY\026\276w\010Q\276\245UZ\276\211\352V=4&\r?m\311\244\274\374\255n\274`O\303>\014S\000?$$\002?\302\265\237\276\317\217\223\275\340l\037>\017[\240\275z\313\363>n\302\333\276\353$\213>\376\342\230>\034\373\351<\253J\005=\243\267\205\273\026\373\217>\023\326\327\276\205\366p>\016\267%\277\220\275\360;T]\360\276II*\276AK\244=\243\000W\276y\314\262\275\231\240;\275.\314\322\276\320\250\275\276_\031t\276\275\324|>2nF\276QS\244\276\2515\n\276\032\207s=\275S\201>*\201\313\275\326\014\365\276H#\271\275\374/\221=\035>\261>nu\306>\240\340\220\276\254\243C=k\210$\276\\\303\362\276\245je\276-n\245\276\204\002\324=\374\301\362\276\346\300\200\276pyN\2763\317B>\372Y\211\276\236\030\033\275j\325)\276\235S\212\276e\264\224=sv\242\276\300y\352=\362\'\034\276\366\263\215=\027\n\005\276\025Xz=HX|\276\225\377\301>\242\313\305\276Q\337\345=dr\n\277\322\250}\274\213\235\324=\177\0050>\341\374\205>\370\036\201\276\204\256\301=\233^\004>#PD>\343\013\034>\323\216y\276q\245\2720d\333;\247\357=\276\224\036\255=@\362\257\275\013\203\036\2765\021\236>7\305\t?.\250\267;\274\025\222=?\350N>6[\004\2771\221W\276\360\313\022?y*\267\275\273N\273>\274\214\'\276\034.\264\276\332\232\t\277lQ[=\030\353{>\247\231\334<\025\341\205=\310n\314\276\350\303\214>_\230\362\274=\372\276\276\261R/>\270\231\326\276\217z\275\275;\230\002\277\\\351\016>\332\303\232\276\362\310\302=\340&\267<\230\030\002\276(\035 \2762\305\326>\327\235w=]\001\r\275\016Y\222>\222\321\236=\363\375O\276\266\254\255>v\3400=\315 L\276\206\257\216\2763\200\236>\307hF\275D\301\332\275\273y]\277\350\346\305\275\270\213\202=\201~\240>\3243\336\275\261\245\006>h\313O>\327f\220\276r\304_\276R\204\022\276\243\017F\277\327D\326\276{\372\241=W\210\036>&\332R>\312T\264\276Q\225I\2772t\035\275{\337\354\276iO\002\274\300^\273\275Bx\260<]\007\330\274\375\035\220>\254\323\333\276sd$\363U\'\276\334\314\037\273\371\233\007>\370 \204\276\2304\326\2767\2258>e\353\250\276\257\346\215>\264\002\003>\032Q\365=n\372\034\276cc\245\275[\353\230>\214\330\031\277\300.\005?z0\003>y\360\355=\277n\000\277[\240\003>x\312\317\275G\010\341>\254\206\\\276]\236\302>)\204\352>\265>`\276\342sm\273~?\327\276\247\256\312\276<\002\023\276\007Z\361>\235.\250=6v\202>\327M \276\276\025\200\275I\237\206=\262\261\227>[\222{>uk\203\276O\372+\276k\323\263\275\255\360\215>&\n\010>1\201\275>\306`\313\275\306\232\331>\024N\017?d\\\364\275R\033)\276\271\021\177=\240\365\035>Z\230\220\275,g\333\276\017Y\272>\003?\223\273r\235\013>\312R\235>EDv>\014\226\024\277\243*\013\275\371\230\237\275F\232\036>\300\353^\276\236\265\226\276\263o\205\275\020\257\213\273G\350\201>Ns\256\276=\371\241>\347\324\324\355_\002?\'N\014\276.\265B?\301I\211\276,\212\333\272\001\374\006>~\221\025>\375\317\344>\220\025]\275Y\367\251\276r\303P\276\303q\334\276\204c\321\275wf\230<\310\254}\275\005\343\"\276\341`\201>\0302\214>\267,n\273@o\">\277\t\314\276\336\350\337\275\021O\035?\020,\204\276\256\255&\276\"\246\276\276\314s,\276\014i\203\275\202`\236=\260\301s>\207\272[\276C\010\373=\244i\272=\235|*\276\333\262!\276\256\376\353\275\352%\253\275\230\250\361\276\230\3768>(b2\276\330\251\001\277\262q\r\277\033\311\312=\354[\020\275\320\232\332>9\331d\276\021\025\310=R\367r>0\227\245\276\271e\002?O\327}>\034\311\240\276Y\'\317\275\"xb>,\234\270\275\331\231\224\276\316{A<\033|`>\213\371s\275)\024\006=p6;=\353\361\353\275y\322\304\275K\203\023\276\373t\002?\372\n\235\276Z\303\321\274\023\362\342\276\203\215G\276O\220\013\277P\301v\276\337\227\327\276\020F\201>qh\364=\030E\242\276\031q\315<\000\013h?\356\2371\276\336\222@\273Uy\027>?\r\232=UX\000\276\304g->\301\264\351=\204%\322=\314O!\230\236G>\201N\313=\034\266\337\212I;?\332/\026\276\225\212\255=!\224\243\276\362\177\032\276\274\005\214\276\003X\265\276\353\305H>E\353I>\013\255T>\034\213{>\377\2776\276\345g\243>nT\333\2767?]\276\215CW\276!\232\361@\216\024\277\211w\265\273\346P%>\017\256$>\215\"\005=\350Z\317\275\034\257n=z\257\025>4X\212\276\213\246\275>\262\340\212>:\335{>)T\314=\325\227\345>SzK;\276\315\246>\342\007\000\275\341y\214\276\222\275E\275\271\340\036\276\217\346\374<\016n\247\276\342\264\363\276\254O\034>\274\034;\275:\223 \275\001\371\007\276Z\017\265=\300^q>,0\326\275\247\371\262=\216\223o9\017\277\242=\201\325\001\276\272w\020>\243\267O\277\3031l=\210\235R\276O$\277\276C\331i\274\350qK=^\346\303<\226\327\322=\304\024\206<\306\021-\277\021V\004\276\371\314\303\275qkT\276\240\301o>I\355O\276\020\264^>8\246\002?Lm,\276\227 >?\201\334b>\304\274\261=\000\0022\277\177_\247>\037\347f>\001IU\276l\322K?\356m\270=\355>\250\274\275q\024\275d\374\325\276o\375\276=]\2220?<\300\274=\224\302\002\2760\325\000\277\005\207\003\277\336\274\030\277\356\013\036>\256k\226\276\3625\211\276W\346S\276\267\344\352\2764\275N\274\203\272\246=\rQ\270\2759\230\226\276\373`\007?O\271\251\276\333F\r\273n\306\306\275\245\366\021\277]oW\276QC\355\276\273\313\367\275YA\002\275\037.\242=\252,8\276\242\244\277\275\233\\\254\275)MW\276\210}\245\275e\275v\276\246\001\022\276\240*l\276\037\005\260>\310\341\262\276\013*\351=\\nf>\246\307!\276j\r\276\275<\376\214=eY\273>\367\341\000?\275\303W<-\\\025>\314X\206\276\272\374\002>w\336K>{\235q\276\t\345n\276.Z0\276\037\006\312\275\2330\r\276\356\313\303\275\231\372\002>\0355;\276\313\224\233>\262\235\014>\302Y\260>rDa\275\275\017T>\223q\212>\377\363\347>\367\344\225>\246\016\250=#\325\031\277\206\260\'\277}\"&;\261k\001?\353:\345=s\261W\276\204\362\n?]j\254\276I\324\267=iF\266\276mI\035?ZQ\254>\033l\272=\004\330\270=\373 \262=\2759\301\276qg\036\276D\344I\276\303\010\215=~\006\t\277\350x\203>:\036\374>\226\237;>J\005\355=(D\265\276\317\372\034\276\002\007\225\276CB\210>B\0364\276\226\004}\275\013\033\035?\351P\r>\330\223\323\275\334\241\243=-\352\035=e\360j\275\006n\022>\370\374\203>\'\023\307\273\205\r\027>\245\017\242\276\221\215H\276\251\310O\275\222Z\336<\327\010\273\276\312o\356=\316\316S\2759\354\220\277\205e\213\275\356V\203\276b\016\327>}<[=0\367\250\276\014\234\235\2769_I>\31450>\354\323\314>\276vL\277\rS\231<#w\377\274\267\t \275\277\010e\276\311\221/>Eu\214\275O\272K>]\302\267\276\263k#?\262\300\263\2741\215T\276%\031\361>a\257\037\276\266R\247>\007\253F>\013\277Y\275-a\233>\274\274\306\275\010g\305;;\233W=XV\245>\313\t\246\275\230\2517\276\235z\260>\311\257\004>\370;\276\276\346r\327=V(\223\275\333\243}\276-wn>\354\266N>\365\272\321>\375\245\254\276Sx~\2752\345\256\273u\312\205=\242\361\023\275\244\215<>\313[\346>\330\027!>7\323\274\276\257\247/\276 C\247\275\341<\236\275Y\322]=P\204\327\275\034\371\356>\263\'m>\315\204\034\276\214\260\306\276\346\214\361=\224\337\270\274\024\254\316>\003X\265=\223%\230\276g;|>\002\301\006\277\317\2011>2R\224>\336\017\256\276\316\351\375\276\324\'+?\304>\271=c:\201;\rE\372>_%g<\306j\017\277#\204\375\274\3040\325\275M\331\267<\004\256\246\275F\217\345\274\322\360\263\274\327\2077>\314\355\234>\344P\270>\347y\247\274\221\371\313\276\277a\004\276|+\210>\230\356\337\276\372\331S?\017\2525\276\333\214\230=@\212~=\332H\332>R\221\010\277m_u\276\342q\253\275\245c-\276\020M\262\276\272\241\266\276hr\364=\262\315\007\276\214\n\365\276\255\274\223\274\313@Q>uT\215=\007\345h\273\354#\340=\361\225\200\276A\203A=\017~_>\377\351F\276\005\0030\276\337\267\253>\3064^\276\257\245\231\276\301\033\007=\247\3741=]\325_>S\314\270<\3306\325=\242\200\005?\232\022\026\275um\203>dl\337>\177C\374\276<\250\272=\321,/\276\207g^>\366i\376\276;\266%>,\346\021?\026P\206>\211\'\374>\235\354\232=\275\315\310\275\260\311D\276\342\305\357\273-m\325>\246{h\276>\317\230>\227\211r>\277\254Z\276,X\364\275\025}\020\277\320\024)?\323\306Q\276\362\330\251\276fX_\276\333d\251>$\224\200>\273h\354\276 X\002=\006\201\220=\355\312~\276x\331|>\022\237,>\251\374\310=yTU\276\376\240\370\276w\007\243<\305\351\302\276\371`\223\274\216\353\232=\375*\264\276\202\016\273\275\003\203\210>\\\271\334\275\375~\017\275\225R\270=\222G\361=;6\235>\243;6>\300`E\276[\337L\276\231\240\014?\365\0041>6E#>]Q\005\277i`\366\276\361\210\342>\306\277g=|\252\013\277\001\335R>\313\312\317\276\251\212h\276\215E/=r+\371\2758\000V>\366\234\371\276{Q\256>kH\010\276^\004(>-L\016?\227\236\200>\"\213J\275hdD>~\222E<\'\014\334\275\006_G\275`\230\333=v0\204=\037i\177>\317\303\364\276\004\211\254>\024\330\332\275\254>\006<\357f\212=\300\014\330>L\022\255\272nS?\276\'\337\t\276\235\305Q=xjf;\257d\243\276\024{\216\276\263\354~>\370\341\213=\312_\002?R:_\277\247 \362\276\372\016\250>\336z\250=u\254\305=\320\023\203>\244D1\275\321~\026>Zvu\276\213\245\317>i\275\032\276\200v\307\2759S\206>zu#?\234R\331\276\202\343g\276\272e\301=\315=\274\276\037\353\003>\003h\202>\370j\037><}\363:s\001\243\276O\035p\274w\033\226>\357h\025>8\000\305>\375\242\016\276\007\312\201>\027\262\265=\244ut>\367\177#=I\2542\276\221[\334\275 a\024=rN\177\274\341\024\372\273B\3601=\300W\217\276C,\316=\21125>\316\232\220>_\222y\276|I\361\275\\\306\273\275\033\371\216<\304x)>\336\211\323=\005[ \277\304x\306\274\360\n\374;\014\247\227\276\002P\023>\241+6=m\266\213=v\035\202=TX\021>\204`\245>\372Ve\275\266\301+=\307\235k\275\317\347\256\276(\001\214>\"\256\037\277\363\250\033\276\002\001\222=\000b\262\275FUv>P\344K>kP*\277\233b\336\275\370\326e<\006\225\003\276\256\206\003\275\355\361\002>6\203.\277\256\013\037>\021\302\207<\344\332k\276<\240\225=\'\266==w\256\013\276\366(\221\276\021gE>\325D\307>3x\"\277}%\013\276\210\222\014\276\005\265\303>p\342F>\031o\276\275\005*$>4;\320\272\014T\212\2763V\036>\332\236\220=\356\3639\276\002\367\340\276\330\351\206>I\3707\276\014\310\016\276b\327\002\276t\303\227=\355.\213\276\021\212C\275!\212\202>U\375\013=\226\013\303>\206\036\267>b\362\201\033\252I=\246\007\001\277\316\333\244>vr\201\276\371\022\n>q\"*\277\020\342W>\014\232\214=A\360\016>2\337,>SQS=Z\022\177>\357\013\214\275l42?:(\320\275t\250\267\276\362j\022> XF\276\223v*\276\227\030\327=\246}Q>9}e\274!\303\224\276\370\'\307>|\375C\274xH\357\275P1\213;\200\005\247\276K\364u=1\264\220?l\014\336=-\n\007?\3255\006?\013F1>\354\326\306>\216\314\244>$\213\327>\253{\346=R\277A\276\276#f=D\245A\276\340\304E>Z\2331?\032m\304>\261\214\353\276r\363R\275\376\240\232\276u0\200\276\246yJ>\214\335S\275/5\021\27686\007\276=-\342>\362r-\277\010\374I\276\276\003q>\014/\017>]\257\225\276\240\261\340\276\017$R>9\350\315\276\206C\354>\274\017\335\2764DO\276E\340l\2755\250d\276\343\361\252>\201\227\032?\030\364F\276\000\004\267\274\037D\240>!\345\264\273\266#\312\271\022\264B=\321sI?\230NP\276K\343\374=]\326\257=`RA\276\260\030\027\277L\352\234\276\261<\220=\345\201\222=\025\2660=m\365\273>\030\317\253>\332\344+>mz\223\276}TW\276\272\336*\277\217\002L?F\tE>\256\027\213\275\200\226\324\275\333\243\231\275\3065F>\212\323\255=\242q\036\277gL\303\276\335\005\255\276m}\355\275%G}>\341w\000?\274\007\230\276\213l\256>J\256z\276o\006M>\347\223\216\276\204\257\223\276\303\262+<\306\204K\277}\364+?\351\254K>s\311\020?\243\321]>\312:N\276\023\277\326>\213\315\016>h\001\\>\371\017\211\276\374w=>\207\032?\275\222e\203\276\003j\313\276a[\347\272\304\255\242\2765\216\265\275\226N\346\276v6\230>\231NY=~z\000\276I\331r=\203\263\206\274N\350;=\252\032\317\275\354\260\343\276\250\273#>J\235Z9\356D~>\210\357\213>#\031\226\276\202G\203>\276r5>\263\255\245<\224\205\221=\007\t\016>\333\227\203\276\277o\225\276\245,F\277\215~\356>\252\245\347>\373!\024>\226\356\301\2753\373\374>2\004K\2766\342\341\276\264\3149> \263,>\360n\212\276x\342\322\276\3447y\275\200\016\322\274\021\230\323\275\031\360\n\277L.B>\223\030\247=\271\375h\276R\215\365=\002\246(\276L\014\r\276\":\312\275\373\336d>M\265\374\276\351Y\002\276v\036\207\276\264g\236=\017\022N\275\324\272\021\275\262)\n\276\037\n\026>\342o\373\275Y\367\027\275D\270\371\274]1C>\251K\312\276`\215\370\2732\000\'>\272\004+\276\024\322\336>\214?!?\226W\220\276t\346\034\275y\361?\275\246\220\324=\265\302\303=\306\\\023>u\0275\276+\262>=[\313\213>\353U6\276Z\335)=\006\350\374=\305\310K=P>\201\276\257\340\277\275\344\264\246\275\213>\001\277\212\203\307>\361-\344>\355\325B\277\204ry>l\212\220>\221x_=y~\223\274\203~\223\276\235\243T\275\224\245\317=Am\227\276V\257\313>\326\312|>\325le=/r\355\2764\231j=\206A\243=\253*\214>\037\313\n\276\203r\032>\\\006z>-\355\217\276\274\276\305=\010|\255\276]$\026\276\264W\037?\323X\315\274zb*?\021\207\206\276\0373\207>\253r\021?\372\326=?\010\2121\276a\233\002?\'O\270>\223\021/>y\204\250\276\004\241\304>\236,3=\235_\211>\371\2248>\330o\332\275\236l\372>\242\307\306>B\3060>V\003\001>-\303\005>vsp=\214T\301\275\220R6\276\312y=\276\210\000b>m\275\026?u\312\036\277\334\340\016>\002\r\350\276\3147\006?J0\001\277\003\307\320>\201u\305\276\263\277{\275\335\r\330\273o\264\336\275\257\3018\274>\020g>K\344*\276\034-\337<@\364e>,^\002\276S]\347\276\335\211\010\276\214SW>\232w\245>\300i\230\231\345\227\276\316\013\003\276\005\350l>\273\237_=\214\357R\276\013E$\276\337\302l\276;\222\001?\"\020o>FM\331\275\302\253\201>\237;\033\275\206\363\346\275\312/\313\276\240\030\252>\021\343\007;\371\371\241=\300\027O\276\t.\255\274)\357\t?\275d\305\274\227\'n\276\246\225\020>\345Hx\275K\202\272\276\346\001m\274\224\025\020>\333\016\277\275\271\255\334=\204\322\331\275\3028\021f\312\365\276\221\373\001>\201)\024=\317\330\260\273\021\245\002\277C\205\202?0\345V>f\362P>8\371\224>w~c>?*]\276T\345\240>6t\310\275\330\271\010<\237\224\336>\030\237\310\276\016,$\275\023Y >\210*h>E:\275\275j\364z\276\335\305\213\276m-\344<\257\241\242=HD\320>\236\216\212=\267\261|\276\347\n*?\361\373\242\276\317\301\210\276\002\t\302\276\312\363\340=\264wV\276\n!N>\007)\263>\274\n\350\275\246\312p\2748\017\235\273\002\367\306\276\252\210\026>\215F@>\261\020/?\031D#>\314v\353>\022!v\276\340\317\267>\236\036\"?\227\2525\276KJf\276\322-\244>c-6\271#\022\035\277\305\020K?\031\267\372\276\343\225\247>B\311i>\244\204\206\276\350\310\316\275\305\250\016\206D\031>\234\340\335=\205p\013\277|\341\306>_\312\004\275\320\304b\276\272\013t\274`\234\222\276\231\222G>\'%\177\275\022\370\260=\271D\017>K\023\234=)\361\016>\352}\224\276{\252\204>\'\004\226\276\216\332\017\275\032\027\274>\347\"\324>\302\350\262=X\3659<\027\266\254>\362;\225>>,\304>XG1>`j\315=\202\340\341\276\223\010\213\276\266\t\006\2767\207\202>\024\027\327\276\216\243\\\275\313\016#?3F\022;(\321%>\t\315S>\220\020\255><\373\277<\211\324\n\277\025\252x=\250\252\264>\243X]\276@d=\2756Y\343\275\010\230\361\275\232D\315>!@\231\276}[\275\276\'\270K>18f>\273y?\276\177\266:>6\263>\2766\035\020\277*\230\243\276\257\025\210>\377\n\360<3f\034\276\264|\277>}\333\334=\037\256>>\321kQ\274\037\006\022=>Z\352\275b{\000\277\355\"\235\276(O7\276\266U\201\276\177\260\026?df,\276\263\344\246=\226\307\363=\005\000/>\363\342\252=B\021\200\276\260\032e\275D\332\024\276X9}\276\017 \034\275\252+\313\276j\223\274>\377\\\210\275\356p\016\277t\271\001>\224C\214<\3375A\276\007SC>\033\311\300\275\032a\314\276j\377\010\277\205\255\270\275\262\250\321\276U\344\360\276\356\204)\274\316\264\315\276\236\330\225>\003\023\300\276\212Z\216>\230\210\321\276\037W\013?E\235\345>\"&\234\274\310\314V\276b.h\275\207z\255\276\004\324\324>\177*\235>\005\026\357>n\241c>\344\023\037>\2755i\275\021\0372\276\003\r\327\276\354\006\023\277\315G\014>\236HP\275\233\267\312\276\035R\271>0\352\026\277z\2363\276\030\202\313\274\334\000\346>\351\260\243>z\261[>\036\312J<%\237\007=\350\361\'\275T%h>crJ\276?\260\217<\205\360\033>C\240\014\276o*\261\276\256\272.>\321[\363\276k\025$\277\234\234\364\276\004Z\220\275\311\224\272\276\257j1?(\330\255>\233\r\034\275Xcs\2731\210[>\3345\255\276\031YO=\306gF\274^\376*>3\340+\276\303\232\000\277\266\266\030>\221U\212\276\236`\204=\335\035Y>37\034\277>\010\251=\017\275\217\276\206\343\235<\343u\256>\255\013\177\275\0346q=\001T\007>\024\254,\276\256%\202\276&M\351\275\306\353\221\276\213\032\275\276\340N\267>;\214\212>\200\010\346\275{F\021>\320\r\271>\332\243Y\274j\t\363>\306\324\271>\0360\252\275\314w/>fIW>O\202U\276*\377\223=\r\231\271\276\023\212\272T\006\323=\270^O\276c\235\343\276\273A1\276,\013\t>\200\207\035?\237\366H\276\310\302\205;\323T]\274<\313\031=l\255\253\275\377x\364>\355\342\231\276\224\225\277>\\@r=\345\351\215\276\2374e><\230A\276Q\033\247=\361j\035\275\321\203\224\276C\343\240\275\025\362\373\275\370\315J\275\263GO>\256\007^\276\203\310`\276\035\034\211>c44\275z\317\203<\206\347\017?\303\303\372=\350\374\031\275\264\370}>j\273\203\276p\227\265=\313\335\367=\207(\300=\211\215\260\276\210\367\274\276\215\310\347=\350\272\372>\313\010L>\225\335 \275\\o\350=c\251H\276W\307D\276F\331\323=\305\354T>\341\025\004>\334\234n\276\360^3>\234\235\267\276^.4>\1775\376=\233\317D\276Q?\016\2779A\362\276\363\274s\276\3755\315\272\303\204\241\276v\016\261\276V\215z>\2407\241>.\036r>$\010\376=\023\033\327\275\021Q\265>\340\317\206\276\367m\206\276\207~\337\275\275\026\021=\2470->\273\226\237=\261\026\332:K\341m>Lf\331\276\263\t&?\247D\210<\267\217\212>.\254\214>C\306j=\376><>\247C\355\276 \377\352\276E\253\211\275K\320\370\274\331\260z>\016tK\274,h\003>\3373V=\371\217\270>\260}9<\230v\353\275\273\211\264\275\202=\222\275PH\277>\346vp\275\347\365\237\276c\245\352\276\227\255r>)\234\237<9a(\277\360\r\243>zc\263=9\263e\276\354RW=\006t\216\271\363\024\253>\033\026(>\362\252\345>w=\014\2778\177\010\276\312\006\366=b;\351>\373O\260\276\016\326\360\274\372\360\300D>\227\311\364=\300\245\027>\'\213\231=!P\223\276\376a\213\276x\235h>1Z\246>\363\010\327>l5\262\275\200F7=\220n\023>\242w\024\277\363c4>\352\003\230>`\003c\276\034h\273\276\316F\261>\347b\275=.^M=z\327\221\276_C\t\277\024\020\302<\373z\226=\2031&>\020y]\275{i0>\213/\334>\254#\222\275\'\277\204\276\317b\t=\001\034\243=-,\313>\2357\307>\267\204\232\2766%3\277\000\270\223\276\364P\210\275\211\200\275\275N\027\023\275\355nK>\266\200\302>\256\233\202\275\344\330\241\276y\240\304\276\366\2638\276\365\303z>?\362\214\276i\317\313\275\222\325\276\274\212\223\007=)\213\001\276RlK\276\267\243b\275T\375\226>\232\202\020>1|\177\2767\0000\274\272-V\276l\271\335>\262\305\276=\024\004|>\345\314\370\275\340o\247>t\031\342=\222t_\276my\215<\252\n\310=\275\220z=\376\373z<\317\363=>\326n\273\275\304<\372>\332\213)=\224LX?sp\337\276)cV\275(\220O>c\030X\276\306\217t>f\276\300>.>:<\213\326D>wd\314\275\261\374\036>\257^\361\275L\010\233>\302\317/>\373\363\324\275\2231\245>\n\010\214\276ek\226>\305\377f>\014\254B=\337K\226\276\322\325\010>B4\342=3}\247\276\324c\355=\t\0200>\233R\341>}\376\013\276kf\007=j\n\222\275\213\312\237>\264l\252\276*U\014\276Y\"\006\277\000A\001\277\267&\206\274U\335\256\275\253\371\037>\371L\254\2768\002\031?V9\266=*t\254\276\227I8\277\240\313\274\276a\204\022>mE\030>\372\3356>\315\326\233\276\331\rb>\034\263\027=\023\305\037\277\035)\314\276\250|\246\276=\023\025\277U\006\322<\310\316\212>K\255~\276\364\"\222>[^\263\2762\310\266\276\343\355\215\275\227\245\236\275\266\334\245\2758\274\031?\357\344=>n\223\224\275\303\230v>\277\026\212\276\351\340\373\276:iF>\203\240\036\277n\323\213=:yi\276\270\241\033\276\275\n\247\276y\224\003>\327A\212>\312\343\317\274\273t\330\275~j\002\276\256\264\274\276\360\313&>p\356\026\277\341}\'<\273\325\037>%\332\263\275w(\226>\336\014q>\233M<=&\244?\277\376\327\322>\214\357.\276\206\372\201;+|\345=n\010\360>\203\346\244\276\235\0249<\000p\276=zx\273>.\227K>\353AT\276Br\274>\265\003@>\267\204\320=\307\356\343\276\330\345!>SS^\275\304d(>\344\313<=x\035\263>\303\242\016\276H\276\016\276m;#\277y\3644\276D$0>\203\030\343>\265\r\037>^\217\366\275\263T\275\276\361p\026\274\340tz>\237\3211?G\227i>\034gR\276\225\374\310\276\204l\342<\2653\324\275_\260\361<\343\3271\276\252\'\273\276~7\232\275\"\317\233=\355#\300=\221\332\033\276\267)\314\276oAEo\314S>F\310\255\2752P\221\275\362>B\277\313d\025=E[\034>\311\337\301\276\002\353b;X\344\027\277\212\271&>)\314\347\275-\306\266\276nB\"\276\273_\275\274\002\250\204=\010U\372\276\320!\304\276g#\200\276!\340a\2746\036\272\310\315\261>o\250[<\354\330\033\275G\n#>A\255(>\317NI>\265s\002\277\370\215o\276\231\343\242\275\"\251\366\275>\306\017\277b\230\022\276\3472\256>\266E\322=\220Kw>:\026\010\275\250\235\226\276\277\353\020\275`\"\322\276\370\0315\276\351\323,\275y\224^\275\351~\033\276\267\200\263=\253\230\356\276M\270\243\276\246~.=\302X\210=\301\024\271\275\320q\337\275\3420\277=\312\244\241>\023Sr>.\277\225=ub\245>/\033b\276\027$\315>u\375\220\275\321\236\263\275\354\325\210\276sa\000\275\201\221O\275\312nV>\032\252\224\276\360\217\227>e*#?@)\032>\026\250b>3\025\234>.\242\213\276\177\302\312=\300\013?\275\323\000\005>\276\247\033\276v=3>\274&\325\276@<\263\275\035\t\251>\037\212\325>\"\211\005=\031vC=\374\240\243\276A\036\276\276oGr>X{K>\335\035}>/\351\217<\007Z\037\276\025S!?\220\351f>\374R\207>\374\324\014\277O\233\021\276\340K\346>\nC\r\277\026\204\365\276D\'\027\275\016\'\021=,`\227>\256\tv\277P\036\252>\215\023\362\273\345\321\274\276\241\275\336=\336\367\236\276\277\013\027\277\332\370\344\274Y\036\303\275\257*\360=\243\235\223>Kx\315\275m|h\276^\206\324\276\022\354\320\275\351\243\205\276\313D2?\032?\272>\263\302\327\275\026\324\312\275X\304\332>\030>r>\037\260\345=\266\257\335<\243\354\332=\231\365\033\276\030\245s\276\336\254R>\363\336\253>;>=>\335\213a\276~\312\005>\325\343\007\277\252\346\361=\362%.>\266\010\371=f\361\222=kE#?\256m[\275\334\357\345\273\335\243\022\277%A\177\276\033:\214>\311T[\275\305\370\013\2745\202\225>\034\006\030?\264\033\346=\303{\273>\331\032\224>\364t\256\276\207\262\365=\305\222\017>m\027\327\275\016\270\225?\272\277\273\276\002C\204>.\006\030\276\354\347\246>%%\245\276\337d\271\276j]a>[\233\037\277\016_z>\225\376\251>\203\200|\273(&\255\275V\027\211\274\260zM>\207r\365>\251\301\266>k\227\224\276\3775Q\276\3310\206=s\220h<\341\034\223\2764\347\204>B\371/>\331\337C=9\\\010?\036\272\321<\366\203`\276E\323\020\275<\371\267>!\321\323\276Z=\213=B\246]>\271G\325\276\204\223\207>\200\261\005\275\364\321S\276\273\345\234=\021\230:\277y\327K\276\307\023*>\354s\323\275\037\r^=\002T;\276\006\350\245\275\037M\016\275/\364q\276\034\316[>\330 \336;R\207\306\276RW\316\275\235F\355>\364\003\203>\266^w\276\023\352\353\276\324\377\347=\360i\235\276^\373G\275\301\227V\276\264Cl\276\210\335&\276ql\021?<7\033\275+\356\272\276\376\270\226>+\347d\275\365D\026\274E\266Y>*\314\311\272\273`=\275\235_\206<\321?\220>14D\274TD/\276R\255G\275X\222\331\275\306\000\262>\341\036\031\277\303\304\032?\262Y\022>\377\3709\275\331(e\276Q\310+=\214Wn>Z\331u\275u\204\240=v\035\025?W.\001\277\3110\022\277_g4\275\207e\276\2765\305k>\345\251s>`t\313\276\273\375\354\275/\302_\276\206\017N>L\035\247\276[\017\005\276\026\305\315\276+z\360\2740\327\341\276\245*\033>\311\271K\274%?\222>\335\276\177\276\004\022\211>\337\266R>\305N\327\276\233\025j\276\327.\224>\320\030\236\276\351\002\004?\223\027#\276\tN\004\277`\336c=m\r\207>X[\261\272yt\210\275\241>1\276\373\032\305={sS\276M\270\274\276\007F\320>\373\031e;}\030\275=\327+\220<\225^_=\036\237\356>@\2224\277$T\010\277\341\\\242=\234\342+\277J\371\357=\\k\203\275\035u\316\272\317\357\311>\263\341\236\276\344\247\013\2760b\262\275\271\341\217\276\236\021!\275lQy>\336\226J>a\267\226\275\2334\310\275\342\260\261=\251\214\004=mE\214>\020g\244>O|\201\276\371i\356\275\246\315\262\276\330<\003>\363\322\022\275\375m\274\276K+`\275\0027\304=\324\324\310=\366\2423>\020\314\235\276\367d\240>\272\003\201>\256a9>\rB3>{]\316>OS\032\276Y\r\030>\344x\202\276,\212q\275\214\3246=\2710>\274\017\n(?\251\243\006>\376d\225\276qcZ\276\257w\021\276|\341\211>\036|\377>\375\021\327\275\334\357\247>\362\005\256\276\242\261H>\231\226\324=\362\261G?\321v\024?\315\323\225\2765\023\245>m\302,\276`\2733>\270\355\340\276u\241?\276\264\356\365\275\001\376\250>G\0373\276\253\027a>\362\234f\277y}\014=o}\026;\t\252\024=\270\3156>\354\231L>\360\360\255\275\271*\341\276\200\000\211>\007\204\354\2751\375\347\275,r\355\275\261\270\223>\331\201\002>\312\004\212>m\346\247\276@\347i>41\336\276\264|\210\276\302\332\360\276U\302\364\276\275\230l\276ZB\004\275\270\016\321\2758R\014\277E\342A\276\366\027\020\277\265N\257\204\343\006\277\000\t`>\035\202\365>\236\361\206\275\311\326\320>\017\217\235\276\240C\320\276}f\376\275\251\335m>\335|\034\277;\346\367\276\253\316\333\2762\322\215=\235\362t>K\237\006?\251#\345>?\301\341\276\270\255C=\377\027c\276\375\255\373>\372By>\233\\\021>0#L\273`I\224<\270D\354=\024/\340<\250\245\332\275\337_\252>Q\344\200\275\254s\244\276\214\351\017?\303J\256\275\237[\032?\263M+<\327xR?\374\204\262\275K\330>?\365C\022=\374\365\271\275\365U\347\276\304\216\264>\237\\\341\275\037\233\255\275\237\211\272=\336\200\351\276\332\205\033\276\331\376\344\276\344\365\010\276\202AG\276+\224\324\275I\017\215\276I\220.>\373\276\214\275\325c\"\273,\000\036\276#z\347\333\330\257\276\262\377\354\276C\272\035\276?\361L>\336\360\225=\345\032\357\276|%\\={\346\375=\300\2212>F\3170\277g\244\354\276i\210\277>\357\331\001?\026F\372\274\334\305\016>&N\004>G\231\246\276\315\023\336\275\354\017/=\"7#>!\026\236\2765\324`=p\023\222>\2363\r\276#j\346>rvX\276~\337\314>\003\210#\276:\306\357\276\266\"@?e\013\204>P\230\004?\314.\341\276\264\334H>\362\230E\277u\'\225=\324\330\003>\350\013!>f\016\374>]\217.?*\013?\276inz=\322](<\025\355\331>D\360\270=k\244k=L\250\264\275T~\327>\363?\\=76\263\275\t\225\"\276\344\272\347\275W\276\261\276\210\324x>\033\351J\275>\333\203\276g\014\273\276\340\305\222\274j\207\274\276A\301\000\277\346\205\213>\234\002\003>\350q\240=\355\220\364>]\275!\277]z\260\2744\372C\276p\305a>\031\356\225\276\300\030\201>\276\271\320>\266Z\356\275\022\033\267>:y\376>\003\356\355>\3574\376=y+\026\276\334Q\213>\013\361\231>\327\316{\273-\300\362=\307\272\246=H\005_\276\023\351\274>\315j\271\275ox\354>\262\347\247\274\236+\007?\037v\212\276\320D\226\276\364\277\006\277\021w->\017b\037\276\270\024\343\276\t\022,>\200\'\271>|\222\235\274s\353\013?\246;/>AB)>\261VL>\003@\373\275B\305,\276M\232\203=\'\030R=x\316\226>\026b\030>[\315\"=k\332\350\2768m\373\276\220\340\336\2752,\207=\314z\342=z1\264\276\026\334_\274\267;\376\274UGR>\357\366\353\275\254\024\233\276T\342\243>t\206\265\275Y\334:>#\347\177\276h#\002?\361\374\227\276Z-\032?\261@\255\274)\263\225\275\250\254t>d\271\344\275\370\234\216>\031\220\235>T\242k\276\342C\211\276\023\306\247\276]W\224>\265(*\276\004lW\276 \316\317>\221\026\254\275u\374\035>\306s\006\275*\323\306\276\222UU>\302\232\352\276\304Nz\2444\030?\032u\220>\204\276d>\316$\371=o\020\253\275\317\304\325\275P\301\210\276\275\332\320\275\035\271\245\276\357A\230<\005\362\001\2770t\001>\\\345~\275\017S\241\276\214FJ\276\375\355\373=Z\345\340\275[g\253>\314\363\344=0C\321\275\362\226\026>2d\017?\346\257\202>]H\253=x\343\031\277\3474\201\275\320Jd\275G\263 \276(\263,>v\230\221>\207>\243=\352\357\302\275\376_\321=Ur\314>\322\214\226>\362B\324>\254\372g\254\202\006\277<\021\003\276x\212\032\274\373\261\254\276F5X>\363\007\264\276\332j\371=\377\307q=]\267\013?j\\\357>\330\210\225\276\204\306\215\2768>\241>\331\275\030\276D\363\010?\203\245\302\275g\272X\276\025\323>=9\356\253>|5\320<\310\262R\276!G{>q\326\255>\335:6\276\374\240\307\276_U\006?\177\371\243\276\253\370d>\377\002\024\277cSD>2/\023<\024\333D\277H^\261\274\224V\335=\243\323\'\276r\247\232\276\305\013\322\276GqO=\244\265\240\275y\007P>\375\344p\276\253%\211\276m\034\"\276r\303m\276\354\032\246<\362\204H>\213\233\325\276\237\340\310\2759&\220=\235L\030\274\376\221\267>k\006\033\277s\024\232:\204:\275\245bc>\252\217\312=e\305h>\014\207\007\275\214^\354\274DnQ>\004\375\376=\020\246\003=\311\3431\276\371\363\226>\212c\373=\022\345>>a\2444\276O\220\327\275\271\335\257\276\224K\351\275\252\347\004\276\372\256\t\276k8\234>\033T\013?Q\203\022?\234\307w\276N\013\343\274\347C \276]\353\244>\343\302;?g-\222\276y#\002\274\006\361X\275 \276\300f\000>(;\025\276K\277\201\276\2458\304>\347\262F\276\211\031n\276\004\206\233\275\"y0>*\311\326>!\263\365<\ry\321\275\337\006$\276\004\245\323;\334]\304==\266\324>W\342\374<\206\235F>&1\t>^v\373\276\266\030\310\276\322\227\003\276\310#l>\254\245\036\276AI\325=\\\035\334=\305\224\332=\306\206\274\276\235\237\320\276@\270\320\276\243\260!>\177L\224>\177\225\224=\031\301\207>\207\215\'\276H\202\244\2742\013\200>\263\'\273=\322C\236>\003\247\366\275\325\005\255t\231\275-\276\021\260\r\277\273\311m\275\002\312\273=\215\207\347\276\231\223\200>0\222\350=\304\006O>D\300\244>\234B@\276\260\215\361\276\302N\307> m\021\276su\302>A/\324>\237\316n\275#\324b\276\305\335\r\276y72=7\034\261\274\372H\260=5\321\002\276\207e\247\276\256\034\377\275j\026\004\276M^\207\276\240\342\016\277\3218\220=:\014\312>NO\261>\217\263E\275\337\024\016\276\010\224\r\276\255A\t?\343\332\250\276Zx\204\274\376\004\301\275\261)V<\226D\252\275\275X\211\275\325\221\004\277\031\375Q=\037\026\235=D\216\261\275\262:R\276\242Y\026\276L\2564\276v\030U>h\301\371\276\3522\265\276o\020\273\275\300\331\244<\'\245\337=\001\312\201=\020\235\004>HP\300\276Fs\260\275O-,=\333\267Y>\210Uz=\244\353e\275\010\326\305\273\344\210s>1\0367\276\304\353\237\275i\200\231\276\326\302\022\275\222\030\024>\353\327\235>\214\256\216\276\306A\320=/\244\344\275\013rH\276A\236\203\276\275\'\225\2765\263\246\275\334\351\n\275\027*!\276\002KR>\3412\270<\350\340\326>f\327\211>nK\032>r\335\003>\313*:=\345\277\311>h\343g>\306\030\000?q\276M=&\356\274>+\316?\277>\216\247\275\230\215\213>\357\032\367\276B?\200>\210\245E={T\207\273\327R\002?\250\250\262>3\274\033?\214\267\n>\215$\270><\0176>\252\377w=\nZ\203>\276\362\326\275\014\350?\276\337\351\027>=l\353\276(\362\221>)\007.\277#>\352>\221\326\233=g\277-\277)\2673>\014\007\267<5\336\364>\257hx>l\204\223=z\377\233>\236\035\206\276\276\361\257=\316\013\002\275,%u>l%\334>\026\260\'\276\237\323\255=W\233\203>\016\224\217\275\337)\035>&T\227>\330\232>\277\316\233$>\000\306\327>\016M\254\276\254\000<\276\336\313\023\276\024J\354\275t\320\262\274oc\276=\332;\370<\275\037\267=\222\312x>\006~L\276\\\365\333\275\375:+>|\026\034\276it\233<]\310\255\276\350v\311=\374l\204\276\345\242\302\276\232\230\223>\265\3228\276\221\213\313\276~Te>M\221\261>$\274/\275\236\305\336>x!\252\276\325]\243>\265\271\017\276\036\037A>:\345\237\276\323\317\226\276\235\370n<\376^\334>\024\205\006>\267lW>Qy\265\276\366J<\276\226\n\252=TB\375\275&\333\260>\254\006\266=C[\250\275\370[\314\276\203\370\221\276\315q\212>\020v\306\275\376\210\373\276\233r\034?\272\006\221\276\363Sy\276\t\324\264>\313,\020\276S\341\337=\223M\263\276d\326S>\263o\241>\024\2421>o6|\2756q\247\276c\351V>\3403\">\263\310f>:\264\210\276\001\256\252=\013\365\000?r/\t\277\306\300\024>\006\362\250\276\213\246\227>\352-\353=\322h,\276Ag\201\276(\272\322\274y\t\244=Z\206\262\275\263\205\n\276\246\244a\276_\301\231>\\\007\305\275\264\r\215\276\371\013\260\276f^x\276\325\267+\276\216\025\277\276\325\374\263>\3616 >w_\224\275p,\305=\016j\315=\022\266\340>f\272\322\276I\313\341>\017wH<=\366\235\275`\260\036\276\354\262G\276\014\213\001\276\210\322\250>\331B\332\2768\n\267\275\363\272H\276\025e\255=\361)\277\276\005I\333\275\200;\023\276S,w=\315\322;>2\277\233>qM\203;A\036V\275\037E\325\276\353\335)>H4\"=\356b\241>\271#0=L_\226>5|\220\276\273\001\215\275\354\226V=\335\233\200\276H\321G<\016\005\234\275\200\n\320\275I\262\t\276\306\311~>\326\314H>+\n\035=Uv\265>\'\211\253\276u\2053>\200E\226>\303{\n\276,\223\035>]\221C=4\277\342<&\023x>\036\021{\276z\010T\277\223\316\017<\275\332n\275\343R\326\276\014\250\n>a5\252>\022\234V>Mv\020\277\217\226,\275\"\260\377>|\356\301\276\225\232\034\277;.6\277o\263-\276?\330\210=\352\017\235\274\243\320\230\275\'|\014\273\211a\004?\"\006\016??\013\267=\006\260\275=\024\030\"\277{RR\2759\242I\276l\354W<)\201\266>H\"C=\365\'j?\241T\205>\311\360\303=\225\343\347<\254v\256>w\013\000\277\301\341\230<\007\344\375\275\226I\370:GJ`\276z\344l<3\023\326>\313\364\253=\366\203C>\r\014\347=\275u\023\276\372!\366\276W,\314\276s\032\247=fcX>\231W\204=\265\227\257\276\021\272q>\300\031\036?+B\022?m\255Z\275D\314\274=y%\233\275\251\374K?\265y\316\274@\320\231\276\211\242X\276\306\347\007\2766l\344\276\320C\242>m\017\325>\320\2529\276w\223\271\2769\350A?@\347\">\351\337/\276\021p\323\275\341t\227\275z\004 =\327\211\276\275\372(\301\276\017\244<\276\224\020\027=B3\254\274\364\275\255>/3)?\243s\320\276\323\250\341\274\267\033\007>wb\230\275\347w\330\275\246V\000?\327\221\322\274w\017/?\303\3140?\334\352\374\276*\360*<\336\257\354\275pL$>mW\245\275\273j\001>{\250\226>\274`5=\227X\357\275\216\356\014?o\231\220=\337\244]\276\373\300\020?{\342\223>\205`\341\2767:\326\276.*\t\276\366w\365>\211\3363?\313\376\240>\373\332\216\275\322\304;\276\021\244\343>\004H\023>\024+_\276n\263\033\277,\217X\276\235 \227\276\351\345&?\257\316?>\224AO\277\r\351U>\234\347\210\276\270\026\323>.\226\343\274\362\246s\276\352r\362=\210\244\322<\353\205\362\276\0355f\276\2073V\276\023\321\227=\032\346s>\2320T\2765\017v\275\331-\204\2765hz\276\003{\301\275G\215\370=\326\203i\276b\346f>\036\376a\276\206jE\276\3208n\276|B\350=\205^\307\275\300\001\252\275\024\362\003\275Q\275\200=\273\373\267\275So\316\275KB\227>\220\235\006\277l\r\216\2766\230\333>\277\232\356=w5\354\365\034\\\276|\276i>\2356=\276XH\004=\007:1?\336S\225>\206\355\224>\261\337\220=\0020\227\276\350\322\013>HNu\276\274\007\037\275\3105S=K\306\332\2766OD\275\324\225\240\276\270\244\216>\242\357n>g<<\275\024\177\241\276\3212\252\276(\355*>\373\275\354=H\346\005\2762\002=?3 \241\274\200\256\327\276K*\213=\315\237\331>\353\214r>\307~\317>^\026r=\375\315\267\275\323\341==\225\215\230\276\270\221\266\275Y8\037\276\272\207\261\276[\036#\276[\\\323;\216\377\337=\"x\277\276\220\370P\276r\252o\276\342V\277>\357\2349?\367\365O=P{\223\275I\3112>\017\352\260=\307\314\026>\231\225\016\277|\320\337;\336\312\252\275\267.\315\274_3S\276\342lP\275\365-\334\276\037\027#>\305Y\377\275\360\nX>w\276\245=k`\307\275\223M\233=D\226\233\275\231\223\232>0\256J\275CaS\276N\231\277=\351#\332\275\210\215\023=\214\376v\276\206\351f\275\350u\217>\202\337\206\274\352,\213;1\357\'=\245g\370=\365\202\305\276\271\344\367\2754\037$>\201#\312<\314w\245\276\342\375\013>\342O\274=\236\203\333=%\244K=\232\264\n\276\203\241)\276&E\244>\311)3?\306r\270>\225\264,>\t\305\267\276\033\242\363\274z\315P\276\257\300~\275\004-\253\275\214\267&\275\013\000$\276\322\033\215\276\022E\244>.\226\021\274\346 \332\276\004=\236\276\227R\034>\253\376\352\274\2513V\276n\327w?\327\300\267\274\247\343\223\274\216\345B>\260\247\214>\250\314\033\276\235\301\244>*\353\007\277\201\324k\275\250\000\034\276*[\352=\0052}>\267{\342>\204.\345=\247\275\307\276j\321\223=\253\355\276\275\177\360\001>\373\335\222\275\032f\315\276Y\2304>x6L>\325#\010\276\240\343\265>\r\331\025>\206/\341\276\371\323\304=\276\322A\276\n\255>\275\004\333\270\276b\037\353\275\2120\203>#@\366=@|\343=\002W\352=\360\351\013>\254\357O\275E!\365\275\276\032\037\277\245\322\013?\026\034\205\275.\007\020\276\023\321?>\220t\230<\372\227\357>h\327\224\276=\023D\276@\265\256>o\001l>GY\276\276\362\364\251>\2042\247>r,*>\'\031a>\005#\022?\322\310\307\276\271\313\273\276\003\302\'\275\006\302^\273T\311\212\276\013\271\211\274 C\264>\216\337\020\276\'\233!\275*\371\244>\000\221C?\002\254\360\276\361\256\007\276\2448\">?\t\307>\002\303\254\275=\0348\276\232u#?*\340X\273\007\354\332\275M\210\307\275\376\313{>S\ty>\301\006Q\276\355#\241>\330\017\025?Kd\353\276\311\366\030>\324K\206>\2013/>z\022(\276\203Yr\275\031(\306=d,:>\014\357\026>z\3078\276\016\337O>X\252;\276\221\347\360\275\361\304H\276\211O\306\276`Z\t\276&\263t\276\265J\301>\315\263\'?\'\014G\2765\256\230\272\001\030=\276\262\027R>p;\254>\032\022e\276A\222[\276;>\237\276xt\021>L\275[>\217\356\201=\"0\246=\352J\325=\025\301\372\275\262\224\'>\350\251\362\276Y\240\300\275\361\025\224\276\n_\265\276\203\267\016\276\244\033k>\376\260\027?\021\307\007=\203\200\232>\216>C>\307\356(\275\030g\205\2763|\272<\324\272J\276?\321\210=Z[\210\276\234\310?\275\273\ty\203\3445\276\265\003\201\276d\255\361\276G\370\031\272P\344s\276\233F69<\374B>U\333\353\275\251\205\n>\320\244\231>\357\333\354\275i\264\271\275\322\263\200>\306\016\237\276\212\024\343\275\366\233\326/\363\302\276=\003\227>\310\356\372\276\304\261\212=%\374\350\276m\335f=E\350\r?\357\237%?\214O@\276\354\216!>v\2533\276x\021\343\276\235\207}\275\316bI>\375\250\270\276#\'\034>\376\273\262\272e\224\342\276\0207\263=\210\023\304\275\215\240\354\271\350\346\227>\333e6\276\303\363*>a\314\320>>A\260\276\310\320\367\275\374@\306>\344\2702>KV\340<]n\345=@g\366\275\207\031\030\276\353;\317\276\322\022{\276\305\3661\276}\030\210>~A\256\276\220\234\250\276\n\316u>~\333_\275\371M\242>\232\252\034?\256\334\271\276_}q\275p\244\201=2M\250>\253\024x\276\021\346\301\276_~\223;\212v\023\276j\037\351=t<\022>\273x8\276:\232\002\276\310\023\023\276\335\010\373\276\204V\343\276[\331\032\276\202l\001\276\342p>>8\201R\275\334w\203\276\247nL>n\310\206>\346\237\323>\006\364\302\276\221J >\256\020\013\276~\264\336\276\206d\320\275\036\020/>(\272\024>\354\215@>\245ir\276\277\317\271\275\223x\340\276#@\014\275\273R\203\276\247\226\250>\234\270\212\275\323\2117>\271{\234>yh\252>>l\030>\200\251\207=\346E\030\276\022\r\327\275\2363\316\275Q^\026\276N\306\025>U\260\204=\032\255\301>V\334\010\277\261\366\360=\363\021\202\276?\013\246\275v!\223\276\r;\242\276\201$\022\276ic\233\276\217\236\273>\335\037\237<\315\373\253=\013L/\276a\233:\276C\363\036\274Fa\232>b\250\242==\004\362\275k\311\375>)wY>\327\2639=\333\251(=\217\2429\276>\344\273\275\206;\305\274\3537\t\277\244AE=\270\340\275=\314\342\232=o\352v=\274I%\276\246\215\227>\2561F\275\010\2140\276]\2169\276\362Z\262\274\253\372\\=\230-\217\276\321\200\320\2740\214Z=\255\362n>[>\315=J\301\226\276\372\'\006\276e\006\217\276\030\244\003\276\313\364\001\277O\237\231=K6\032>\363a\206\276=s\307\276j\247\220>\236\244\237\275\230h\354=7\361K>qmG\276ANh=\243\322\016\276\341\377\332\276\324\036)?\243s\241=Z\253\260>\247\213]>\345ka\276\022\224x\276\247g\267=\010\350t\275\026W\216>\321\2142\275/\t\214\276\302\374\334\275N\013I\272\261\353\257=\204\022x=\312#\r\276\243qu\276!\024\337>\227\267\237>I\260\232>6\222\316\276\222`+\276\260Y\314>\302\020+\273\370\\S=\266\340\235\275pW\332\275\330\212~\274;\350\353=\212;_\276u-F=#\230\002>L 8>wkH>M\203*\277\367\275\030?\231r\366\275y\313\000\276\017OL\276TM\222\275\351\033\300>\373\321+>\366\2069\275?\315\211<\332\247\274>5(#\275i\317\026>e}1>\032\210\351\276=C\022?\236i\324>\225\020|=\2202\016>]\005\214>K\375\243\275\272\233\354\275xf\006>\235\241\222\276{\0138\275\310\246\224>\317\313\031<\317\330\335>\"\271\325\276,\313\301>\276\204\261>9\377*>\306\032m\276n[ >yI\225>\200Wd>\313n\210>J\004W?H\031\037>\345\246\377=^.s=4\237m=q\241c\276\021\224\200\276\177\346{\274\2614\337=\030\272\253\276\374gK>\\N\275\275\364u\224\276\251S\020\275\377\356c\275\326\334\006\275\\\013\001\276\221\202\036>S}\247>W\314r\274~0\333>\276H\025?\204K\213>e\267\265=\253\223\211\275\377$t\276\0377\257\274T\367\236\276\010-\232\273\360\0018\276\252k\243\275\205:!?\344K\003\275#\242\230=`^\256\276\026\005\204=0\231\214>Q\242\353\276W\013\032\276\307W\252>;\022\273\276\t\013\332\276b9J\277\210\251\203\276\331\204\337\273\272cy=\252\032\030\275\335\257\245\276\\\251`\276\211\036\317=\343eu\276\233\273\033\276\226\274\266\275\321\311\222\276\363m\377\274\035\010G>\266|\237>\023\262\273\274}h\005\276\233\351\220\273\307\277\025\276\336l\375\275r\304\342\276\016M\246=\210\307\363\376\216\245\276}{\320=\337\241^>k\020\212>\034\n\235<\261`\250\276R\325\223\276\364;c\275e\266\256<\335p\255\275\374w\024>\316\362\005>%\310\327>\305d;\276fE\351\275\341\354\213>Mr=?\212\333\220\275}fq>yZ\254\276!\021\025\275\325(7\276\264o!?\360\nC\275\365\332@\276\334\222#\276a\037!\276#\247\254\276Oe.>H\352w>MU\205\274\376\216\265>\232\001\372>\267K\031>\377\266\203\276\246\275\310=@\000%<\004\244\024\275\025\236\270\276\221\0036=!Q\363=\264\010\237\273]\354\377>\325\261\275\275W\301\022\277\022\220\256=\335\016\315\276\353\311W=\267e\373>\"\342C=}w\265\2765\231\234\276\007IK\276\033\213(>\003\212\263>\020\223\312=\322\030.\275g\341\032>H\035o\276\271P\376\276\014\350\001>\202\211\203\276\231\275=\276v\004*?\353\203m>S\277\346\275\020\2773=\024\017\356\276\223xb>\000\346\232\275\353j\016\275\030?F\305\231>\353\233\246>\371_\221>\214 \r>=\210\036=}\345\304>\025\366\302\273q\220$\276\224\226\267\276O\373\342\275\334\251\022>\3720&\276\346\1777\276\017\326\373\276\3754\305>}\323\013>v\317\023\275{\314\250>\002\313\243>\006y\014\347\270\000\277\250jP>Y^\325\275\030\337\267=\202\361\217\276\016$\002\276\266?\332=\271\t\276\275\333\353\307>Y\260\025>\305KQ=\220\2664\276\243B\033\276@0\377\274HV\234\275Z\016\301>\363\005\277\275\252+\201\276\355y\351\274+f\260<(h\346>\tf\025\276#\314\340=\222\243\365\275\361i\035\276P\343\214>\251\266\307\2756\031\265\275\211@Y>dk\350\276\200\236\373>\315p0>~*j\276x`\004\272M\266\004\275,\355\237\275\347so=@\326\300=?\337\206\275H\237A>\353\202\254>\344!&>\213\260\270\275O\375b\275\032\324I\276D[\270\276\336\343r<\244\013\222\276\004\247\324<\335}F\276L\344u\276\033\3731>2\345V>F\362~\276\240\361\233\276\215rH\276\315\000g>\267\323\035?\336\004\211\273a\341\346<\222O \277Q\240\250\276\005=\346\275\346\357\321=\2101\242=\201\347\315\274\257\304\265>\372$$>WYA=\363\354}\275\230\325\003\276<\005\372\276\347P\327\275p\245q>\250P\227=\265\207\013\274~\270\004>\342\233\026>[\214\221\276X\376\264>\336\200\026\277\232G\311>\270\014>>)K\302=\310E\235=_\214\274\275\360]G=#\036\236>j\323h>\207\364W\274\316b\313<\022)u\276\004q\r\276Pb\373\333?\236=>\327\350=\361j\350>!g)\2773\364\224=\330\237\177\276\305\336\223>|4\275\275\025\330\311\276\314S\366>\266b\240\276P]\300\274\351\212q\276\343\252\017?R\304\340=>-x\274+\340(>\265)\242>\222\030\204=q3;?\232\313\262\276\014\222@\275F3\336>A.\005\277\"so=\017\371\014\276\345\221V>.\217\244>\315\336\372\276\227\324\353\275\377:\006\277\377\034\003>f`\024\277\2073z=\017]\237\276\017\307\231\275\'\311(\277\243\214\022\276w\257\267>\340\241#>p5\261\276W\t\265>\237\203P>\231O\277\276a\342\037?O\305G=c\373e>2#\233\276\275u\013=\235\375\375=\257{\010>\003q\022>\241\265\210\2759\030`\276u\366&\275\252 \342\274\355\246\013>Q\253\343>E\324\320\276Ko\004\276\027\354\271\2764H\221>\005\321\253>\314^\362\276\376\005\340\276P\223\302\275zX\374=\211\354\333\276\202u\310=\310\237\371\275Qe\354>\202\2212\276_\371\353\274\001\220\367>\025\266\337>)\037Z\275\300\233\277>=G\250>\275\263\001?\330<\271>\022q{\276\242\330\016<#YV<\035\212\252>\276\003e\277\255\3202>&\270\200\275\312\341\210>\355\024G>_[\363\275{\rS>\326W\277>\352\277\367\275\225I\217\274\326\266\304\276\022\223\230\276U\226\226>\246(\361\275\026\004\312>\335\340T\2768\355\337=\263\307^\276\207j`\276v\2043\27624\300\275\371\024{>\244\0058?\265p^\276@\237\330>\t\371\032>\241@u\275\206\024\365\276|f\034>\272\'X>\305p~\275D\376\216=\016\355\241=\373\225@\276\351\231V\276eG\275=\023\302z\276j\2214>*\274h\275GZ\233>$\330\233>a\314\222>\312\256\323=\355s\024?\351\273\037=#\010V=\007K\355=\030\026\017?\271{E\276\3772E>S\'\n?\240JR\275|js\276\263\263M>\346\227\224\2755\342\376\276W\031$>\263\206\231\276\307\313*\277\254U >F\270\224\276\257P\221\275\2441l\275\322\242\243\276Z\250\262>!v\277=\310\253^>\357\"\232>/C\252\276\361!\210=\310/U?\253\327\257\276\242/.?\253\336\373\2740\300\\\276$\213\320\276\257p\227=\363\344\326>R\033r\276a\203\002\275e\206,>\312\241\366=\321\263Z\275\366\216\335=<\236\033?ebO>\337\\\276\275\311\355\233=V\200\321\274\004\256\n\276\334\324\206;L\266\267\275D\364K>\304\026\374=8r\236>\373\330\301\276\303\306\360>(hp>\374\313\253\273\250\320\031>x\002\265\274%\3145>\274\345h>v\207C>e\372b>)b\347\274\330S\254\275$\261\233=\307\350&\372\276\034v\026\276\007::>\025\243u>}\002\320>R\242\224\276\003\337s>t\336\211\276\027\200\021?\256l\254\276\000\356\230\274\210\026\302<\242y:>*\330\273\276\232DA>J#\343\276\032\257-\276\275\342~\276w&\316>(5\204=\371\216\346=\360I\265\2762Q\366\275\310\362\367=\304\202\020\276\273\321\277\273\026\013K\276b\321S\276\241\272\n>\342D\362\275\250\246\341\274\326\n}>\034\000\244>\242\330\251>\216\256\022>S\213\177\276H\343\350\276>\364\031?K?\250=t\305$=\020&1\276\177\351|>\305\336\361>\013$\265\276Y\211\360>\221Zj=\337\226\345\276\365?\205>\276j\266>\366\263\303\2769Ff\276\312\\\033\276\314f\227>\325\\\\\276\272\000\304\275\036C&\277\310\311\274<\221dV\27574\021\274/<\216\275@\226\302\276\344E\305\276\013\031\007?\275\233\277>+\204\032\275\223@F=<\375\311=\007\323\360=\330V+>O;\314\276\002\'G\276\257\001\333\276\373\'\227\275\304\032\210>\231\264\001>\266\014\224\275T\n\030>\237\210\316>\227\216\322)q\322\274\363\t\347>L\3008\276\233\211I\276t.\346\275\351s\317=?z\323=\3112\207>Zh\237\274\247\350\250;8\352\217=.\325\206>\260\365\277\272\036\236\234>\245\242(\276\367\263\006\276\255p+\276\272\305Z=y1\024\276\265\261\313=s\377\206>,\017\365\275\'5\275\275\315\354\265\276GH\255\275\222\"\344=u\005\343>\366\262\303\276\272\274G\275\037\334\334>=\302\215\276\020\n\376<\016p!\275\272\261\266\275\022->\276n\252B\275\256\315\255\276\337\303\217\275\031\023\010=\327;\236>U\246\315=CUE=\335\222\231>\334\261\025\275J6\370>\232t6>\214\020J>m\240\273\276J\355k\275xJ\323>\255h\266\276\365sh>\317T\001\277y\026/=\201F\023\277\324SX\276\336\367\201>^\366\364\276Q\374\243>[\336~>\341!L\276\362\223~\275\352\027\316<\003\302\371>\212\017v>MR\235\275\305\370\304=q\340F>\014+H?\264\262\273=q\270\360\275I\362\317\276\341tn\276IF\272>o\332\227>\231\257\253\275\006\022\326>\177q\374\275\226\256g\276Hb\230>~\366L\276\252{>\276\343Q\"\277\315\250\370<\265\304K=\267\2641>\037\210\035>\17715>\304$\256>\361N\001\276\305\324\301>4\307:>\235\223I>gig>\246Q\365=\332\307q\2761V\027\273\002D\341\275m\305\250>\020\034\006\276\022\021\243\276\344\357\213\276\331\tm\276\026\204\341\275l\315\331\2739\307\201\276>\024\337>\355\215\210\274#\226\215\276R<\211>\366\321\244\276$\211;>\306\025.\276o\316Y=\006\230\220\276\204\275B\276\231!\240\276\266I\301>0\3627E\245(\276\2702O\275\325\362\202\276\246\257\272=\371\025\335>k\256\220=LM\340=\300|f\275\3060\305>f\373\000?1\213\002\2762\314\324\021?\250\205\207>hz\200\276\322\013\200>\277s\037?\025\352\340:V\243\300=*\246g\276|\232\335\275\225\374K\276\004\323\002?\017\247\214=\311*\213>\244ZM=1w\210\350_\253>z\343\321=27\032>\253\271\000\274\037\212\026?\223\315\024\276\377 \022=qWi\277u\273\253=\207w\334\276\332\310*=\331\344\265>;B\267\276\301\225\014?\237\304\r>+|\017>\257D*\277\233\256p>\202\245\205>)\300\002\277X>\'\277:\247\362\276\003\320\230>8*[=\305c\325\275\274\001\246\275\217\322\010\276!6\344\275^\250\242\275\350RD\276\254}\204\276\340\020\037\276K\324\024>\271\034\300\275\377hX>\344rm>\230\201w\275\377\227u\276\372}\023\276\277\234\000\277K\232\"\274J\010\233=p(/=@l`<\007q\n=\204\253\263>\342B\274\275u\361\354\276\241\272C\276\301_\200>O\367\310\276\272\244w>\343\377\330>-\342\000\2765\351\032>\206\006\352>)P\006<\354\311\020>\377p\340\275-\247\224>\271\232\014=Xl\017?\340\006\337=\253@\236>\240\014\210\276q\363r\276W\017j\276\255*\330\275\352\213\031>\222\362\273=\364\362\216\275\332\323\034>z\\>>1\310\263>1w ?S\273\334\275?f\257\276\006\371\310\274?E\r\277\266%4\276\342\370/\276\340\350W\275\305\032\215>*\354m\275K\320\'\276Rb#=i?\020?\314w:?\226\202\023\274\252K\251\275\313JV\275\200\030^>\360\247!\275t\2458\276\344\256\300\276gb\003?\363tF>&:\250\276\323)\213\276\355\306\353=\353\341m\275\241\373\270>\240\037\3219g\303>\007\274\204\275/0\312\275d\304\203\276\210\031\002?4\232\361=GJ\004>gY\200\275\025\354\323=\263.\000?\266\235}\276U\020\311=.\351\341\276\222\007\251=\267\234\223>\325{\211>\372\316\036\276\336\241\375\276\371\2374\277\305T\025\274(\203#>B\341\306\276\203F\301>\025\311\237\274Y9\314\275\216D\013\277j\037\266>\035^1>\367\250/=rv\353\2760\037K\276\353o\037\276\200Pr>\020\336@>\007p,\276l\320\013?\354\336\231>7\214\301>\346\036\307=3\305)\275)\213Q\275\252\322\372=\216\247n>\301\364\357\275\224\214\213<0n\245\275\237\032\351\275\017\2616\276\371\"\314>\032\031/>\026\214\313>\021\332\035\277\242\337\332>\363\034\365\276\370\302\326>T\024\207\276\344\016\223\276VY\207\276\277M5\276\376N\206>7\334:\276U\327t>qe\010\277\334\246\006\276P\365\223>\007\327\275\276{n\364\275\027\374\315>?\020\002>\200(\312\276\205N\373<\311\025\004?L3\001\277\013\016Y\276\263zh=\027\261A\277\310\001e\276\363\2401=\272\230O\275L(\230>9n\254\275w\317\363\276\010\230\340\275](\000?_\310.>y!\324=\206\320\364=\223>\377\275\312=S\276\316K\224>\234\364\">\0043E\276\310\307\325\275\3444z\275U\330i>\361\316\215\276\316\024=\277\002F\270\276\354\341\226=\017\305e\276\322\216\341>\226\206B>\307\023g\276\337\302^;KM\025\275-\261\026\277\020\337R>\301\203\017\277\243m3\276\016\377\246\275\034*G>G\233\000\276f\304\\\276\214\250\376\275\273\033/>\365E\275>\211W\205\276J\254\236>\362\216\254\276\016L\234\276\241ug\276\371\271;>cr\000\277\262\203d=\332\242.\2762\264\304>\375\327|>D\254\007\277\371\365\312>\335H\266\276\304s\201\275\352n\010>\3763\251=\210#\256>=D\210\276Z\355\366\276h\031\247\276\364|f\275\377m\305\275d\320\211>\306S\212>\364\352\214>\333\002\341\276\231\267\314=\274C\260<\027\266\237>}\375\255\276\036\305\242\275\355q\330\275nn\327>\214\273\207>m\225\035>\244\277i;a\241N\274j\004\315>&FW\275*\021+\276!O\\>f\244\274=\357\275\203\276\010w/\276\032\206\222>\211\375\034\277m\300\261\276\3307\257\275\250\317\374;M\374\303>\225I\354<\220\254\344\275g\224\312\275r=E>\314Z#\277Z\3151\276\277q\372>\246:b\275v\272\234>\324?\000?8\371K\276\014\036T>}\335<\276\262\243\261<\225t\230\275>6y\276\030\2365>K\277\215\276o\3104\275a\000\320>\223I\201>$R\003\274\304\352\">\366C\002\277]B\333=m\224\203>\356\014\014?\317/\327>\243\242\234=\305\002\002\277\013Q\016\277<,\210\276\246\374\331=\025(\333\275!\210\221\276\034h\007\277\027\306\227>eU\264\275\"\006\222\273z?.?#q\306=J\212\304>R\251\217=6\261I>\207\2653?./O\276>\357-\275\336FR\275\350\327,\276$HT\274\006\316\017\276B\244\216\275\256g\351\276\377\301\352\276\227\240\177\276\241\234\232>#u\256>\377\006\240\274\034\350\257\275\352\321:>\037\200\023\277\305\273\223>\027~\340\276x\347\212\275Gn\313\274\372\313\022\274\226\010\212\275\"\024`>Ii\206>\006\262\002?Q\035\272\276\020e]\276H\026\316\276\004\227\332\275\275\227\361>\005\370\253>\240M\020\2766\035\014\276\310hC\275\301\355\317>}\313\347>,o\223\276\025\363\343;\252t]\274&f\352=\215\207\177>\257f\364<\235\032\024?\014\341\205;\n\006M\275\031\215\t?\003\027\215\276+4\032\276m\251\010\275\277\0031?\257\031\375\274+\366\205=\312\205\\>o\273\034>Dx\375\275\305c\230=\331\237\003\277q(g>n\302\300\276\203\200\354>Q\211\303>5\255d\025f\204\275zl\277\276\r\013\020\276\3603\252>\346g%>0\316\357=\036\310\344\275\252|\327=\360N\224>\2245\030\277!\343a=K\325\203=\320\363\030\276@\3744\276\315\232\215=\257\337\300=\306h\323=J\255\037?\225s\364>\340}\202\276\323z1>\242\370\305>@\t\000?\315\254\271=\315i\335\274$Mw\275q9\203>\234\330 \276#\241\201=\343d\037?yX\353\275\232E\340\276\020\255\222=S\210u>\027Sn>3\264l>s\352r\275SEy>v]5\275\270\"3?s\036\371\275R\266\207=U\267\345<\016\272\242\276\227[\215\276x\277O=\351\203\236>_b^<\321\004,?\204\323\264>\205\223\263=N\350\253\276\336YH\276\3370z\276[\036\335\276\206P\000\277\321E6\276\261\017\234>\273\200\306=\021\231\033>\tj\377\274\022\305\023\275\003\207&?\264\037 >\030\010S\276]1l\276\300\207\252=\367ds>$!\210>\256\341\337\276Rc\311>p\265\253=y\330\257=aS\203>Yf\365\275\001\332\224=\236\2154<5\332l<>E\320\275\372\266\360\276`\034\276\274Z\354\300\275G\024\326>8\314\216>\322D\010\277\307o5\275!|\034>\006[\216\276\360n\214\2751\000]\276\367\375\306=\002}\223\276-\001\311>\271\332\276>\266\321\207\276)\356\305\276\365\\\252;\201\2407\276wn\005=0w\312\275\257\207\006\275l\270i=\230\241\032\275\263\353&<\021\036\370>\204\236\234?Sn\307>\326\205\223\275vC\216=\211\003c\276\257\327C\275z\217\263\275\343\265K\275\330\033\014=\030\355S\276\320\212\263:\032\355\356\275\016\020\004\277\336\232\302>6\227\362=\316X\210>\275\005\">\251k\375\275\236^\251\276\245YF=>9@=i\010\312\247U$?\277\257\353\275\226\216\245=\004R\276\276\203\270\216<\322\3671>\274\"\225=~\006\331\274\3549#=\007[\366\275\265\205\354\274\302\0065<\372\215\270\276Y\262\021>]\370\253>\3743\253=D{#>\312f\237\276\277\010\000?|\020\'\276\032,m>\314e\231>0\334\355=\036\006o>\327hj\275\253\037\222\277\004\035\242\276\226|m>\206\322\035\276\317\204\211=\225\247E>\013\363\332<\351}\202>i\306\207>\024\"\347\275\260\255\237=N<\305>\331\311\202>7\242P>\334Wx>\321\032\215=yP#\2766T\010\277\256Z\226=\371+/\276\350\202A>\363\264\262\276\t\310a\274\203\'\371\276\3254:\276\005\032\010>\260\260\237\276\302#\253\276a%\211\275Q\301\255\276\354\005G?cH\373>\220!\024>\311\275\250\275\362w\254\276\343v\021\276\355\034\202\276\246P!\274n7\212=\022\204\022>4\261o>\214\343\016>j\342%\277\240G-<\206xG>\247\005\257\275\344%0?\005\025\272\275[#\304\274v\311\032=\236\362\026\276\035\301\225\276F\366\377\275\226*\220\276\024\356J>\364\315\264:+j\005\276\245Q\334=\245$\031?\210E.\274\020\315\365\276\025S\367\276\246\010\025>\326`\'?}h\201>\235\214c\276\036\342\026\275\261\202W>\016\305!\274\r\247w\275\263v\377\276#GY=\346\274\037>\344\357\"\277\364o\301\2760\0349>\236R\323=\241L\273>E\227\235\276\332\356\256\275\325\357a\275\0130\275\276k\024K\275\311\216I>\'\344\304=\272\031\300\275A\2071\276s\355\216>c\211\">l\002D\276\325\346\262>\032G(>\303\333u>\225\255{=\362\367\347\276\321\322\256\275\247|\323\276\234\311\246\275\364\003\030>z\262\202\276:P\356\273z\326T=T\253\253>?\374\304=K\201\202>\215\035\000\276\343:\310\276\3360W=\304\3316=.5m\275g\357\202\276`\341\371>\223;0\276\3469\331>\323\365W>\023H\226\276\324o_\274\326w\355>\200)\017\277B\334=<\337\331\201=\037eJ?\200\305A\276\361t\211\276\033\364\273>\322\000\215=,\323v\276\373.\321\273\000\"\242>\215\305\270\276\365Xf=$6(\275\177\303\277>r\263\366\274\024v\346\2767\201.\276\253|\223>\261/\372\275\225\352\306\276\002\233$?6X\220>Q\245\224\275\005m\353\034\350g>\025\313\324\276\266\264<\276\317\201\277\2759\006\231>,\014\020\276nJ\303\275\311\032,\276\203\255\305\275\206\031\243>\307\206\320=/o2\276\203\277\365\276\3231J>\3410\001>\206\003\337\276\375V\212\276\262\327\005\276\226\264}\276b\250\336=\035\3479>8\237P>M0^=~\016\233\276\030|\013<\253u\007>\257\371\300\276\223g\025=\353X4\276Qw*>\372\025\244=C\224\004>\rx\024>+\262\347\275M\370\351\274\254\375\332=\272\003\262=\010W\223\275\020\214\316>3\rA\277\027a\230=i\265=>\314\205~\276`\331P\275\037\226\206>\316\020E\275\255\034\215\276IQn\276\313b\241\276(`x\276\367\357|\275\0036\261>\361\322\027Q\315\037>p\255\254>`\340N>\227\333\033>>e\337\276\323\034\317=)\326\222\276\r\347K\277\024v\205\276A\243\242>\235\300\210>C\2744>]\006/\276g\245\232\276l\000\030\276z\"\330\276 k\207\276\202\320\315>\305J\205\276yG\035\2758\301\371=\242\327\224<\313G\254\275 \034\374\275\361\005\326\275\3349\372<\300\333\234\276h\276\353=l\263@\277\232\214\245\276F\247\001\276\226*\215\276P\362\356>\211y\366\276\177j\332\276B\364\234>\270\224>\276m\246\330>u\340\307>\2573\310\276\224k\203\2765/\316<\305@,\276b\375\274=~\341\001\275\301i\017=\000\214\340\274\234)\217\276cI\203\276p|D>\347<\036\274\352\223\266=\2766\022?\221\223\212>P\375\230=:w\207\275\307\237M>\237\306\203>\225\337\320\275z\223\302\275\360\016\032\277\325\251\332\276+\343\277\275\010q\337\276\322E\224\276\267\010E>jN\225=(\177\254>\203mY\276\212z\035>\264U\250\275H\376\023?\334\375\203>\272\014\306>\017\242\013>\320A\000\276\315M\277>.\260\270>l\260\200=\263\220r>av\221>\211\377[\276\0107\242=\267\255\320\276\353\262!>\362\016/\274-\207\r?\233V\235=d\032\222\274\312\211T\2752M\016>w*%?@\272\177>d\216K>\231\270\033?\316\025B>\230\033z\276\227)\241=\265Au>I\263$>\336\326\340\276)X\307\275p\206\001\277\326\213\372\274T\265|>A\367\250>Y\207\001>\234$\375=xM\221\275\233\205\265>\021\006Q>\322\202\337>/bj\276!m\030=y>\233>\340\356\016\275\230V\221>58K\2769\217\201=\316\223\364>T&\251\276\352\350E\277\377\361\025\277\240\277\211\275}\013o\276I\242\313>\267\351t\2738\275\240\275\277j\326\276x\337\202\275\203\317\330\275NA\244>\367$2>\232wf\276\216\0232\2766\206U>\300\265\376=\355N\237;#3G\276\326\277n\275\330\0317>9\334\010?\004\005F\277\003\344\360>!\244\036\275\211\241\311\275M\201\322\275\024\221m>\365\341\244\275:\362-\276\342\347\216\276\233y\235\276\360\212\243\275\217\376\240>\"\323\206;&\2116\277\337\366\027\274\265v\022\274vW\330=\2741\370\300\323\014\275\304\013\355=\234\307\351\276\212Q\"\277B\331F>\324X]\275dJ\037>\001\307-=p\346\206\276\002hM\275Nvj>\276\202\014\277\033=s\276\270q\232>\277\205\344>\256\260K\276\007\354\025=\022p\013?\223\305\211=\333\276Y=\207\353\r>\tHs>)\030\007\277$C\r\276\214L\275\276\223\317->y~\000>\005U\003\277W\223y\276\006\022\305\276\275\3159;\342\231n>\266\347\026\275\254T\263>\037\344\"\275:\242\345=\033\r\333>\341\006\301>\207\177X>4\301\313\275\262a\310=r]t\275\366\353\016=\275I^>\305X\264=x_\017>\376\373\217>\274q!\276\357\351G\276?\346\204\276Vy?\276\017\354\177>J\325#\276\357\001\016>\353K\022\276\337\0358>\255\334w\276\253\017\372=\303\262w\275=\r\342>\022X\333>\336\'.>\353t\200q\240,\276?}\303\276\267\250s>O\265\332=q+\272;T&/>Mb\234>\363p\367=a9\261\275\367~\232>RM\237=\356_\010>\377\317==?>u>\350\326\203\276<\347\t\277zy)\275\231\354r\276~\301k\276\357K\010\277\322h\360>\213\365\034>\203\345\007=]so>V\364V\273\347]\260\274S<\305\276\2623\313\275q4\247\276&\331T=\351\202\276\275\332\257\275\276\331W\'>\005\030K\276\326\230I\276\303\322\347\275_\010\255>dc\313>1*\236=\335\353\253\276\024(q\276\226.\205>S\271\002\275.\250\256\276\304\270\273\276\013\201M>\032\354\\>[vW>\275\2501\277_5\376>\337\276w\276a\256H>\034z\302\274n\347\221\275\312\243\224Fj%\275\202\366\006\277\252\377\354=\353\3703>U\364\277;0\202\006=\275)\212>(\243\324=W\377h\276\361\253&?\304\375\007>X\220e\275\'\276\264>\246\311\365:\223\025\355\276s@5>\023\324@?\366\316\004\275\367\243=\276o\364W\276y\352\230>\341\n%\277\321\266\036=\352\252\356<\317\243\332=\272>\236\275JD\313\275\343\305k\275\364\310n>\335\3745\276/\376\300>\361\237\330>5\252\031\277!\277\253>e\321\243\276 S.>3\244*?\262c&\276\021\025\005?\271\370,>H\246,\276&?k\276\1777\203\276\034\267\264\274\177X\250>l\235\235\276nJ\033\2768}\325\276IF\352>\371\312\263>\234Z==\013@O>\030\346\271> \204]\276O\210\034?\016;6?\225`\317>\346\332\201\276\2371|\276\2675!\274g\370\000\277\256`\365>\332c\226\276B\377\345>8\2349\276\370s\274\274\000r\036\030S\273\275\220M\366\275\207\326{>\264p\227>\004\t\353\276s\277\001=]\220\252<[X\343;\346\0141\275\215\273\301\276J^\251>\000k\305>\236\030\236\275\375\315R>b\023\205>\304\025\027>\003\003A\275y\213I\276m\277;>q\213 >\213G\254>\306\004\273\276\030\243\263\275\2060p\276\177@\304>Fl\026=\303\035\225\275\216\024\010\276\200\005\032\276\374\204\303=\201U\005?\242\201\025\277\277B\327>6}8\275:\356\351\276F\317\225>\337\214\314=\211\275\007w\213\214<\335Md>\020\343\023<\320Vg>\363\327\244\276t\365\243\276\343\373\001\341\275Jt\260\276\006N\301<\017\304\214\276\315\221\264:x0|\276\307\333\274\276Z*2\275g\226\004=\201$\203=,\367\010\276r\177\212\277L\032\254\276@\337\004=e2\377\274\251g\246=\352\200)\275\205}D>\004\274\211=\343\244\007?\270_0\276=\266g\276?1\026>\207\341@\276\334(\253>\001\263\222=\334\206\303=\372Y\247\276\020\253k>\377\347{>R\n\206>\364\272\203\276Y/\343>32X\276\344!\010?:Hz>\320\362F>U\372\240\273Ab\005>\312\360\314\276\274\365\245\275\013\"\014=\234e\3037\336\202\350(Z=\257\366\241>\271\342S\276\243\321\020\276\362)X>\027A$?q\237\002=\234\304V\276\344\220\035?\014\353\216\276\2103\371\276y\350\315\275\002\371\242\276\274kl=\017\003y>%\034z>\363\231Q\275*\277\353\275\234\221\215>*j\243>w\364e\276\230\203H\276\234+9>w\211\276>!\313\307=|\311\213>\325\001\221>\2341\375\276r\213\210\275\320\003\210=\216\336\250\275\025\267\\\276\247\326\364=\332\335\315\276M\271n>\027\326\026>\004\233\212>\336\372L\276t\0276\275*\331\n>{\010\321>D\001\250\274L{\212\276R%\231\276R\361?>\031\234P\276\330,}>Sz,\277\221\024\370=\372\246\322=\271+\032\275\256\206m\276\266\021\326\275\263\321\324\275\022\247\021>\036\020\261=\035\232\341>\332!}>hWM\276\333\305\\\276e\212\010<\260\243\023>5ap>\376\234\004\275\2010\034?\230\316\336>\203.\037\276jQ\264>\177\316\345\273\034\365\267>\343N\214>\203\027\200\276>\236\257=\240\225+\273mT\330>\351\342\r=%\356\256<\331\376(>\255\"\030\277F#\246=5tT\276\303\021\366=\255\222t\276,T\005\277\360\002\226\275\362\'\002?\t\005!\276\367\\\335=\255\306\233\275O\002\353=r\300\017=h\252\345\274\360\210\232<\233\232\331=\354}\254>\014\332>?\302\315\237\275O\227\322\276\376!B\2763\006\260\276O\362\304\275w\225\016>W\232\230>\326F\274>k^!>\034\025q\276\265\235\036\276l\024\227>q\3722\276f\266\205>/2V>\331\3749\276\004m\036\276^\251\232\276\034b\363\276\272\224\274\276\273\275\256>\345\301\366=.)\270\276d\316\333\276{\2246\277\360\245\'?\222\275\220>\212~\305>\320\205\245,\275\233|C\276\306_r\276\242&%\276\372\276M\277\021\365\215\273l\205\272>\032\000\253\276\217\277\003>c\315\302\276\216\352/?B\264&?\370\n\313\274v\254\023\276sm\303\276F\360\206=\333\240\335\275\352W\213>\324\004\035>\334|e=\260\211\207=\325\315\201\276\245\177\r>\313\350\304\275E\344\255\276\265\213\207=\200\334\2247\374\201\341>\270\311\265\276VO8>\252\017\225=f\333 >\004\032\266<\276Y\343\275\270\356N\276\220m\035\277\270&\253\276\005\005\227\275\r\ni\276\036yP\275\342\026\021>\211s\307>\324{Z>\265\300\202\2748z\022>bf\261\276\032AX\275E\241,>\342\243\217\276\245~\226>i\211]\276*\000\341\276T\014\202>\213\240\225\276O\340\342>3\266\022>K\236\234\276\305cq>\032\211\314\275Jg\306>\230\207\212\275\236\016\n\275p\020\324\275\244\311#=p\201\216\275\222\233\247\276\260\004\357\275\373\232\277=\336\226\352\276\010\n\315:3\276\271\272\0331\364>_V`\276\273a>>\300o\201\275\321\362\001>\212}\205\276\220\325\202\276$\r\027=3\206\206>\031\242_\276e\217\362\276\361\262\333\273\273yZ\275\246\273\035?\210V\266>\272|H\276\022\003\305\276l\314\210=$\336\306\275=\017d>\262\321\226>A\247\355\276\016u\313=\326ao\275\300\001\177>\321\215\372>@L\325=\336\226\346>\356\260\232>B*a\273#\254B>\036\036\212>\206\032\033>\302\177g\276\366J\220\275\372\325c\276\324\251}=\254qy>\t\035\200=\016(M>t\201\210>\033$W\276\327\344\370;~`\000\2774d\205\275\321\237\343>~\r;>|\216\353\276}Q\315\275\014\230\023\276\237\035\242>\376\231\033>C\247\001>n0C\277.\326.=\220\225\304\275\327b\275\276\224\206\213>\273S\325>}\355\254\276\036v\300\275\2470\247>}\277\013\275\326\337u>\031\355\305\274\216\225c>\375H\204\275*\277\217>\340_\"\276\277\331\333\276\332\"X>+\215\320>p\326\314>\3756\253\276x\267\030\277\341U\256\276\031>\030>k\227\321\276\265\242\027=`\337\356\275\215\300\305\276\033\346\202=yl\203\276\347\273\307=\216\362O>\304\241\030\276r\224\251>\345t\302\275m\033b\276\352\301\232>\r\341<;\255W\234\276\332&\324\275\364\247\\\274\004C\300\275\371fv\276\372.P\276\234\007\357=\373)I\275*4N\276K\243\246\276\237\363b=fN\037>\235\2041\276B\024\317=Y!\252\275\225+\034=\264\006\245=\342\214\213\276@]\263\276y\362\270\276J\353z>\276\006\223>B\226&\276WO\354\275\217`\252\275}\004\036\2774y8\276\257?\313\275\337\204&?~\223\377=!\203Z\277(\022\340\274\337\241\215\2765\035\005\277|u\024>\264\370\224\276\277\314==u\251\332\276\313\366\344\325\224\274W\237\007>\226\323\207>5qP\275\022I\177\275\304^\375\274\366\203\321>\214s\026?\377\257\331=F\200O\275\327%\266\275\327R\004\276\277g\230\2762S%\276\000MN\276`\003\233\276\353RZ>\264\207\036\277Y+\240>2\323\205\276v\367\211>/d\275;~\206\266>\212>\374\276\271\232\032\277`n\004\277k&\003>\255/\265;\223{\367\276\244`\013\277v\346\n>\217k\304>\350\232=\275D\222T\275IJ\026\277\302\355\001\277S\275\261\274}V*\276f(\014\275\026{\227>\021k5\277\233g\271\276\215!(?K1\031>\021\351\347>\357\263s>\252b\332>yb\007\276Y\351\202\2754\251\373>\235\357u\276T \016=\362\t\003\277|\270\275=\300\002\267>\005\225\377\276/\024\347=f\265K\276\260_\227>\340\337\263\275B*\357\275\007\270\030\277u\213\200\276K(;>\3520S>\026S\014>]\034\310=\236\347\373=\270\374\341=\277$\272>K\212l>\367\263\264\275\032\242\216\273\376>m\276(\330\347>GM\317\276\257\216l\276\311\224\261\276\363\357\200\276\315.\036\275$\305\000?\227ju\276\332\232\004\276\272y+\276\n\201H\276l\003\013?\304Eh\275U\327\t?\264.\257\276*\'C\276\264\340=?1\033\233\276s\216|>w\356\007\277\203r2>n\026\310\276\313\242/\276\352\002=\275\225\332z\274\"-\202\276a\261\240<\330\362\240>}\354\327=\333&\023>\325\313\364\276\321*\004z\002>O\254\246>\267\016I=\021\360\r=\240D\210\275\\`\324>[\212/\276\247\203\376\275_\"\241=\264\230\023?\366\222\317>8-\323\276\350\224\376=\345\010@\276\246\017\341>\371\217\262\276\\\332C\276\356f\315\276\213\374\252\276;\2435>E:\214;\377\341\205\276=\257\306\276]$\371>\351\363\337\275\335\356_?\021\211\005=H\203R>\304Z\226\276\251N\026?\235\334\363\273g\t\005>\231\235\026?J\223\342\276R\365\314=e-\372=x\344j\276\002g\350>l9\321\275zB\020\277,SC\277\300@\253>\251x\030\274\266}\301>\300\312r>\304\013\251\275lJ\202\276.\323\r=\311x\224\276u\272I=\254\320\342\275m\222\311=:\233\272\275?\2570=A\005:\276\313Q\247=&xJ?(<\"<>\261\351>\243`\025\275\272\"\224\276n\0078=\013\206\302>&l\305\275)\364\371>\030\017\361\276\231z\377=%\026I\276\264\3651>\350F\316=W\234\321>\357V\377>\005\005\200=\373\250\347;\302\024\332=\323\215(>`\271d\276\303\250&>Uo\362\275\270m\t\276\372\213\374\276\305cl>7/:\274\t\273\371>=`\204>ze6\277\215\003S>;\266O>\210Z\210\276\263\360\273\275\345Ao\275\005\016\330\275\345\344/\276\017\346\335\275\345\2562\277\213\316\264=1\335\010>\247\247\326>\016_\211\274\321\360\254=\342\342\311=\3442\240\276P\177]\276\356\004Q>z\334\211>=\227\251>*\'\372>\n\243\207\274\3636\206\273Kx\270=\203\276\307>\026o\022\275D\213\272\276\360\363!\276\307\016\370>\217/\036?C\227Z\275\\V\337\275bi\277\276\374\233E?\230\276\270=\255\206\320=7b\301>\377t\242>/\277\330\276C\036\210>b/*=^\236\273>u9\005>\326\361\003?_\352H>\373\372\277\276U\325\311>\232\325\270\276\026\2411\276v\354r\276\036=\212>5\331\033>\275\374\217\276m5\257\276\216\2247>Q\362(>\262cW>\374F\031;\241\177Q>\300he\276\314\262\306\275\257\276\205>!\367\360\275\360\233\277\276\202\035\223=V\014\212=\362\344\364\274C\337Q\276\332r\245\275\265\344\003=\025\346\234>\206s\t>\036\032\032\276\213\370\264>G\020\350>n\353y\274:I\321;\242\245:>\366\002\022\277\263\374y*\372(?\315\230\231\275\333z\207>\031\217/>fm\346>XIE\276\344\360\034?\'j\347\276<\306\332\275-\242\340\275\023\275[>\034\344\227\276\315\304\322=\301\'\302\276\234!\250\276\252\216r\255\351*\2749\201\033\276\3064O?_[?\276iF\245\276\334}S;a\203\342>i\316\023>\002\203\005?\357p\214\276\205\335\303\275\370?g\276\333\367\214\276\237\243\303>\345Q\241=\252i\001\277\237\237\366=T\345\177>\266\214\242=^M\n\277\373g;\277\245\342\345<\312\213\007=\306\306\">)*=\277B\303\234\275i\320->y\346z\275\367k\025=\314\250\350\2761\002\257\276\245\273\320\274|\007\246\274\320X\204\276s\230\n=0\210+\275\314R\007>\241i\210>\362z\330>Dj\031\276.\261\227\275$\362\264=\221\203\023\276Jk\323>B\3442>\034\242H\276\030\276v=\213\372\260<\2427\002>~\022\277>\022\330\237\276\025\277V>\264\317\347\275bZ\265=\326l\270>w\241\341>\216\346\221>\032=\213\276\366\237\021\276\222F\277>\277\270\005\274\354\016\373=@\230\354\276\376\351\315\275+$L\274O\267\232\276\035\036\027\274e\224\247\275>\023\263>~\354\235>\013\361R>\230h-\276\035N\242=\035j\321;G\264\253\275\245\031\257>\233\253}\276lg>>3\326\372\276\343\204k=L\363;\276gO\242\276\003\324\275>\203\246\363>)X\036\277\230\354\343;\327\312@=\235\341\010\276\373n\325>\235\307\322\275p#\357\276\375%a\275\277\026\215=\007\036\316\276\331\373\252\275\360`\240\276\242\324\233\276u\251\333>M\331\321\276\253M\000\275x:\021?n6\037>\262\253\240\2762\275\343\274\224O+\277\253\211\341\275*\370\207\276#\320\321=\351\373\246\276\034\2518\276e\351\266\275\331\233\243<\247\t\234>~\254\334>\331`\262\275\361\215\031\275nB\372>b\007\225\276P\230\370\006\260\251\276{\272\262>\270\035{\276\255\321e\276\220\326\370>\310T{\274\315J\027?\303-\203\274\202V;\276c\365y=8K\237\274\020Z\24391N%=r\204i>\371J\261\275d\242E=\"2\221>\336\335\260=\234\330\265=fH\370>\273Z\371=\327Mq\275Fz\026>\007\372\233>$\207>=ks\324\2754\330\361\275\030m\t\277\025sV\276\263Q\243\276\255\206)>Y\247\373=>J\342=\342\342\'>\2167g\275\261\023|>\001\327a\275\255\007\027\276\2058\236\276s\262`?\237\211j>\201\260G>d\203\311\2750b\212\272\303j \277L\302\214>\300\221=\276Y\3564\276\305\010\223\276\247\027\'\276$\032\213\276E\223\024\276\237\313J\276" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/candidate/kernel/read" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/candidate/kernel" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/candidate/bias" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 96 + } + } + tensor_content: "\261\272\026>\211\326\370=\342\317\022\276\352\304\261\276t\002.>\\\nt\030\273E=\3218w\276\341\271q\275\217\341\n=\274.\235=\262\321\326\276\213\237\304\275,\020\014\276\024\273[>\267\321%\276u\317\217>i\000\252>X\2736>\364\351\001>Y\231E>\301\023\256=x4\250\276\030\321\305\274\0017\326\275\264y\215\276\211\207\271>w\333w>Z\224q>^\260\006>jX0\2769\256\177>T%!\277\223I\207>\302\000/?V\360z\276X\020\036\276}\342\334\276\\O*=\300\177\244>\374\245\237\276~\010\035>\276\221\253\275z\316\215\276bhN\276\274\201\324\276\030wf>W\324\271=\r\242\230=\365ao=q\215\221?$\344K=\235\022\240<\n\357\314>\313\240Z>2\274\026\275\372Vc>\374\320\354=\320\323T\277w\253c\276#o\252\275\337e\347>\321N\332=\264\3253>\334\302\242>Ai\036\275!/\006?\304)\006\276n6\325=\250\265Z>2\341\020>\244\203\247\276\302\212\203\274\026\263\345>\030k%=6\262\277>\257_\227>F\233\3007\370\200<3\211+>\244qD\274\231w\240=\211q6\274\200\027\275\274\261X\314\275\361\345#>\366\006c\2759\264\237>\027\t\027\276\202\316m=" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/candidate/bias/read" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/candidate/bias" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/concat/axis" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/concat" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayReadV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity_3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/MatMul/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/gates/kernel/read" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/MatMul" + op: "MatMul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/concat" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/MatMul/Enter" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/BiasAdd/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/gates/bias/read" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/BiasAdd" + op: "BiasAdd" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/MatMul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/BiasAdd/Enter" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/Sigmoid" + op: "Sigmoid" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/BiasAdd" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/split/split_dim" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/split" + op: "Split" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/split/split_dim" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/Sigmoid" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "num_split" + value { + i: 2 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/mul" + op: "Mul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/split" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity_3" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/concat_1/axis" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/concat_1" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayReadV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/mul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/concat_1/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/MatMul_1/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/candidate/kernel/read" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/MatMul_1" + op: "MatMul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/concat_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/MatMul_1/Enter" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/BiasAdd_1/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/gru_cell/candidate/bias/read" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/BiasAdd_1" + op: "BiasAdd" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/MatMul_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/BiasAdd_1/Enter" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/Tanh" + op: "Tanh" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/BiasAdd_1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/mul_1" + op: "Mul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/split:1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity_3" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/sub/x" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + } + float_val: 1.0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/sub" + op: "Sub" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/sub/x" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/split:1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/mul_2" + op: "Mul" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/sub" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/Tanh" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/add" + op: "Add" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/mul_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/mul_2" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayWrite/TensorArrayWriteV3/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray" + attr { + key: "T" + value { + type: DT_RESOURCE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/add" + } + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayWrite/TensorArrayWriteV3" + op: "TensorArrayWriteV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayWrite/TensorArrayWriteV3/Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/add" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity_2" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/add" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/add_1/y" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/add_1" + op: "Add" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Identity_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/add_1/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/NextIteration" + op: "NextIteration" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/add" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/NextIteration_1" + op: "NextIteration" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/add_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/NextIteration_2" + op: "NextIteration" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/TensorArrayWrite/TensorArrayWriteV3" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/NextIteration_3" + op: "NextIteration" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/gru_cell/add" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Exit_2" + op: "Exit" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Switch_2" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayStack/TensorArraySizeV3" + op: "TensorArraySizeV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Exit_2" + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayStack/range/start" + op: "Const" + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray" + } + } + } + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayStack/range/delta" + op: "Const" + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray" + } + } + } + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayStack/range" + op: "Range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayStack/range/start" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayStack/TensorArraySizeV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayStack/range/delta" + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayStack/TensorArrayGatherV3" + op: "TensorArrayGatherV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayStack/range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/while/Exit_2" + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArray" + } + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "element_shape" + value { + shape { + dim { + size: -1 + } + dim { + size: 96 + } + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Rank_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range_1/start" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range_1/delta" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range_1" + op: "Range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range_1/start" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/Rank_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range_1/delta" + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat_2/values_0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\001\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat_2/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat_2" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat_2/values_0" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/range_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat_2/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/transpose_1" + op: "Transpose" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/TensorArrayStack/TensorArrayGatherV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/concat_2" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tperm" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/ReverseV2/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/ReverseV2" + op: "ReverseV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/bw/bw/transpose_1" + input: "rnn/stack_bidirectional_rnn/cell_0/ReverseV2/axis" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/concat" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/transpose_1" + input: "rnn/stack_bidirectional_rnn/cell_0/ReverseV2" + input: "rnn/stack_bidirectional_rnn/cell_0/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} \ No newline at end of file diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/fake.pb b/tools/ovc/unit_tests/moc_tf_fe/test_models/fake.pb similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/fake.pb rename to tools/ovc/unit_tests/moc_tf_fe/test_models/fake.pb diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/future_op.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/future_op.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/future_op.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/future_op.pbtxt diff --git a/tools/ovc/unit_tests/moc_tf_fe/test_models/model_add_with_undefined_constant.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_add_with_undefined_constant.pbtxt new file mode 100644 index 00000000000..37dd135ccfd --- /dev/null +++ b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_add_with_undefined_constant.pbtxt @@ -0,0 +1,58 @@ +node { + name: "x" + op: "Placeholder" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "shape" + value { + shape { + dim { + size: 2 + } + dim { + size: 3 + } + } + } + } +} +node { + name: "Const" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 3 + } + } + } + } + } +} +node { + name: "add" + op: "AddV2" + input: "x" + input: "Const" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_add_with_undefined_constant.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_add_with_undefined_constant.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_add_with_undefined_constant.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_add_with_undefined_constant.py diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_bool.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_bool.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_bool.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_bool.pbtxt diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_bool.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_bool.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_bool.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_bool.py diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_bool2.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_bool2.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_bool2.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_bool2.pbtxt diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_bool2.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_bool2.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_bool2.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_bool2.py diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_fp32.frozen b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_fp32.frozen similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_fp32.frozen rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_fp32.frozen diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_fp32.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_fp32.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_fp32.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_fp32.pbtxt diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_fp32.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_fp32.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_fp32.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_fp32.py diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_int32.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_int32.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_int32.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_int32.pbtxt diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_int32.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_int32.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_int32.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_int32.py diff --git a/tools/ovc/unit_tests/moc_tf_fe/test_models/model_mul_with_undefined_constant.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_mul_with_undefined_constant.pbtxt new file mode 100644 index 00000000000..e4a6470f3d2 --- /dev/null +++ b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_mul_with_undefined_constant.pbtxt @@ -0,0 +1,52 @@ +node { + name: "x" + op: "Placeholder" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "shape" + value { + shape { + dim { + size: 2 + } + } + } + } +} +node { + name: "Const" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + } + } + } +} +node { + name: "mul" + op: "Mul" + input: "x" + input: "Const" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_mul_with_undefined_constant.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_mul_with_undefined_constant.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_mul_with_undefined_constant.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_mul_with_undefined_constant.py diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_oneshot_iterator.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_oneshot_iterator.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_oneshot_iterator.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_oneshot_iterator.pbtxt diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_switch_merge.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_switch_merge.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_switch_merge.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_switch_merge.pbtxt diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_switch_merge.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_switch_merge.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_switch_merge.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_switch_merge.py diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_three_inputs.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_three_inputs.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_three_inputs.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_three_inputs.pbtxt diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_three_inputs.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_three_inputs.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_three_inputs.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_three_inputs.py diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_with_convolution_dynamic_rank.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_with_convolution_dynamic_rank.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_with_convolution_dynamic_rank.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_with_convolution_dynamic_rank.pbtxt diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_with_convolution_dynamic_rank.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_with_convolution_dynamic_rank.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_with_convolution_dynamic_rank.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_with_convolution_dynamic_rank.py diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_with_if.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_with_if.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_with_if.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_with_if.pbtxt diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_with_if.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_with_if.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_with_if.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_with_if.py diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/model_with_variable_v1.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/model_with_variable_v1.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/model_with_variable_v1.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/model_with_variable_v1.pbtxt diff --git a/tools/ovc/unit_tests/moc_tf_fe/test_models/mul_with_unknown_rank_y.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/mul_with_unknown_rank_y.pbtxt new file mode 100644 index 00000000000..42061cf6fd9 --- /dev/null +++ b/tools/ovc/unit_tests/moc_tf_fe/test_models/mul_with_unknown_rank_y.pbtxt @@ -0,0 +1,50 @@ +node { + name: "x" + op: "Placeholder" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "shape" + value { + shape { + dim { + size: 3 + } + } + } + } +} +node { + name: "y" + op: "Placeholder" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "shape" + value { + shape { + unknown_rank: true + } + } + } +} +node { + name: "Mul" + op: "Mul" + input: "x" + input: "y" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/mul_with_unknown_rank_y.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/mul_with_unknown_rank_y.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/mul_with_unknown_rank_y.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/mul_with_unknown_rank_y.py diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/placeholder_with_default.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/placeholder_with_default.pbtxt similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/placeholder_with_default.pbtxt rename to tools/ovc/unit_tests/moc_tf_fe/test_models/placeholder_with_default.pbtxt diff --git a/tools/mo/unit_tests/moc_tf_fe/test_models/placeholder_with_default.py b/tools/ovc/unit_tests/moc_tf_fe/test_models/placeholder_with_default.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/test_models/placeholder_with_default.py rename to tools/ovc/unit_tests/moc_tf_fe/test_models/placeholder_with_default.py diff --git a/tools/mo/unit_tests/moc_tf_fe/utils.py b/tools/ovc/unit_tests/moc_tf_fe/utils.py similarity index 96% rename from tools/mo/unit_tests/moc_tf_fe/utils.py rename to tools/ovc/unit_tests/moc_tf_fe/utils.py index 4e73b1d3aae..9c79f467626 100644 --- a/tools/mo/unit_tests/moc_tf_fe/utils.py +++ b/tools/ovc/unit_tests/moc_tf_fe/utils.py @@ -6,7 +6,7 @@ import os import numpy as np from openvino.runtime import Core -from openvino.tools.mo.convert import convert_model +from openvino.tools.ovc.convert import convert_model def basic_check(input_model, argv_input, input_data, expected_dtype, expected_value, freeze_placeholder_with_value=None, diff --git a/tools/ovc/unit_tests/ovc/__init__.py b/tools/ovc/unit_tests/ovc/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tools/ovc/unit_tests/ovc/bom_test.py b/tools/ovc/unit_tests/ovc/bom_test.py new file mode 100644 index 00000000000..b4a6ad2d8fb --- /dev/null +++ b/tools/ovc/unit_tests/ovc/bom_test.py @@ -0,0 +1,125 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import platform +import re +import unittest +from itertools import islice + +from openvino.tools.ovc.utils import get_mo_root_dir + +dir_patterns_to_skip = ['.*__pycache__.*'] +file_patterns_to_skip = ['.*\\.DS_Store$', + '.*\\.swp', + '.*\\.pyc$', + 'requirements.*\.txt', + 'version.txt'] +full_name_patterns_to_skip = [] +if platform.system() == 'Windows': + full_name_patterns_to_skip = [i.replace('/', '\\\\') for i in full_name_patterns_to_skip] + + +def is_match(name: str, patterns: ()): + return any((re.match(pattern, name) for pattern in patterns)) + + +class TestBOMFile(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.existing_files = [] + cur_path = os.path.join(os.path.realpath(__file__), os.pardir) + mo_path = os.path.abspath(os.path.join(cur_path, os.pardir, os.pardir)) + with open(os.path.join(mo_path, 'unit_tests', 'ovc', 'package_BOM.txt'), 'r') as bom_file: + if platform.system() == 'Windows': + cls.existing_files = [name.rstrip().replace('/', '\\') for name in bom_file.readlines()] + else: + cls.existing_files = [name.rstrip() for name in bom_file.readlines()] + + # dirs_to_search is the root directory where MO is located, 'openvino_project_root/tools/mo/openvino/tools' + cls.dirs_to_search = os.path.normpath(get_mo_root_dir() + '/ovc/') + cls.prefix = os.path.normpath(get_mo_root_dir() + '../../../') # prefix which is used in BOM file + cls.expected_header = [re.compile(pattern) for pattern in [ + r'^# Copyright \([cC]\) [0-9\-]+ Intel Corporation$', + r'^# SPDX-License-Identifier: Apache-2.0$', + ]] + + def test_bom_file(self): + missing_files = list() + for src_dir in [self.dirs_to_search]: + if not os.path.isdir(src_dir): + continue + for root, dirs, files in os.walk(src_dir): + if is_match(root, dir_patterns_to_skip): + continue + for f in files: + full_name = os.path.join(root, f) + full_name = full_name[len(self.prefix) + 1:] + if is_match(f, file_patterns_to_skip): + continue + if is_match(full_name, full_name_patterns_to_skip): + continue + if full_name not in self.existing_files: + missing_files.append(full_name) + + if len(missing_files) != 0: + print("Missing files:") + for f in missing_files: + print(f.replace('\\', '/')) + self.assertTrue(not len(missing_files), '{} files missed in BOM'.format(len(missing_files))) + + def test_bom_does_not_contain_unittest_files(self): + for file_name in self.existing_files: + self.assertFalse(file_name.endswith('_test.py'), 'BOM file contains test file {}'.format(file_name)) + + def test_deleted_files_still_stored_in_bom(self): + deleted = list() + for file in self.existing_files: + if not os.path.isfile(os.path.join(self.prefix, file)): + deleted.append(file) + if len(deleted) != 0: + print("Deleted files still stored in BOM file:") + for f in deleted: + print(f) + self.assertTrue(not len(deleted), '{} files deleted but still stored in BOM'.format(len(deleted))) + + def test_alphabetical_order_and_duplicates(self): + sorted_bom = sorted([x for x in self.existing_files if self.existing_files.count(x) == 1], key=str.lower) + if self.existing_files != sorted_bom: + print("Wrong order. Alphabetical order of BOM is:") + print(*sorted_bom, sep='\n') + self.assertTrue(False) + + def test_missed_intel_header(self): + missing_files = list() + for src_dir in [self.dirs_to_search]: + if not os.path.isdir(src_dir): + continue + for root, dirs, files in os.walk(src_dir): + if is_match(root, dir_patterns_to_skip): + continue + for f in files: + ignores = [ + '^__init__.py$', + '^caffe_pb2.py$', + '^.*.pyc$', + '^generate_caffe_pb2.py$' + ] + if not is_match(f, ['.*.py$']) or is_match(f, ignores): + continue + full_name = os.path.join(root, f) + with open(full_name, 'r') as source_f: + # read two more lines from the file because it can contain shebang and empty lines + s = [x.strip() for x in islice(source_f, len(self.expected_header) + 2)] + # skip shebang and empty lines in the beginning of the file + try: + while s[0] in ('', '#!/usr/bin/env python3'): + s = s[1:] + for str_ind in range(0, len(self.expected_header)): + if not re.match(self.expected_header[str_ind], s[str_ind]): + missing_files.append(full_name) + break + except: + pass + self.assertTrue(not len(missing_files), + '{} files with missed header: \n{}'.format(len(missing_files), '\n'.join(missing_files))) diff --git a/tools/ovc/unit_tests/ovc/convert/import_from_mo_test.py b/tools/ovc/unit_tests/ovc/convert/import_from_mo_test.py new file mode 100644 index 00000000000..362d02dca48 --- /dev/null +++ b/tools/ovc/unit_tests/ovc/convert/import_from_mo_test.py @@ -0,0 +1,100 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import tempfile +from pathlib import Path + +from generator import generator, generate +from openvino.runtime import serialize, InputCutInfo, LayoutMap + +from unit_tests.ovc.unit_test_with_mocked_telemetry import UnitTestWithMockedTelemetry +from utils import create_onnx_model, save_to_onnx + + +@generator +class ConvertImportMOTest(UnitTestWithMockedTelemetry): + test_directory = os.path.dirname(os.path.realpath(__file__)) + + @staticmethod + def create_onnx_model(): + # + # Create ONNX model + # + + import onnx + from onnx import helper + from onnx import TensorProto + + shape = [1, 2, 3] + + input = helper.make_tensor_value_info('input', TensorProto.FLOAT, shape) + output = helper.make_tensor_value_info('output', TensorProto.FLOAT, shape) + + node_def = onnx.helper.make_node( + 'Relu', + inputs=['input'], + outputs=['Relu_out'], + ) + node_def2 = onnx.helper.make_node( + 'Sigmoid', + inputs=['Relu_out'], + outputs=['output'], + ) + + # Create the graph (GraphProto) + graph_def = helper.make_graph( + [node_def, node_def2], + 'test_model', + [input], + [output], + ) + + # Create the model (ModelProto) + onnx_net = helper.make_model(graph_def, producer_name='test_model') + return onnx_net + + @generate(*[ + ({}), + ({'input': InputCutInfo(name='LeakyRelu_out', shape=None, type=None, value=None)}), + ({'layout': {'input': LayoutMap(source_layout='NCHW', target_layout='NHWC')}}), + ]) + # Checks convert import from openvino.tools.mo + def test_import(self, params): + from openvino.runtime import convert_model + + with tempfile.TemporaryDirectory(dir=self.test_directory) as tmpdir: + model = create_onnx_model() + model_path = save_to_onnx(model, tmpdir) + out_xml = os.path.join(tmpdir, "model.xml") + + ov_model = convert_model(input_model=model_path, **params) + serialize(ov_model, out_xml.encode('utf-8'), out_xml.replace('.xml', '.bin').encode('utf-8')) + assert os.path.exists(out_xml) + + def test_input_model_path(self): + from openvino.runtime import convert_model + + with tempfile.TemporaryDirectory(dir=self.test_directory) as tmpdir: + model = self.create_onnx_model() + model_path = save_to_onnx(model, tmpdir) + out_xml = os.path.join(tmpdir, Path("model.xml")) + + ov_model = convert_model(input_model=model_path) + serialize(ov_model, out_xml.encode('utf-8'), out_xml.replace('.xml', '.bin').encode('utf-8')) + + #TODO: check that model is correct + + + def test_unnamed_input_model(self): + from openvino.runtime import convert_model + with tempfile.TemporaryDirectory(dir=self.test_directory) as tmpdir: + model = self.create_onnx_model() + model_path = save_to_onnx(model, tmpdir) + out_xml = os.path.join(tmpdir, "model.xml") + + ov_model = convert_model(model_path) + serialize(ov_model, out_xml.encode('utf-8'), out_xml.replace('.xml', '.bin').encode('utf-8')) + + #TODO: check that model is correct + diff --git a/tools/ovc/unit_tests/ovc/convert/meta_data_test.py b/tools/ovc/unit_tests/ovc/convert/meta_data_test.py new file mode 100644 index 00000000000..755116cca0f --- /dev/null +++ b/tools/ovc/unit_tests/ovc/convert/meta_data_test.py @@ -0,0 +1,90 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import tempfile +from pathlib import Path + +from generator import generator +from openvino.runtime import get_version as get_rt_version +from openvino.runtime import serialize, convert_model + +from unit_tests.ovc.unit_test_with_mocked_telemetry import UnitTestWithMockedTelemetry +from utils import save_to_onnx + + +@generator +class MetaDataTest(UnitTestWithMockedTelemetry): + test_directory = os.path.dirname(os.path.realpath(__file__)) + + def test_meta_data(self): + def create_onnx_model(): + # + # Create ONNX model + # + + import onnx + from onnx import helper + from onnx import TensorProto + + shape = [1, 2, 3] + + input = helper.make_tensor_value_info('input', TensorProto.FLOAT, shape) + output = helper.make_tensor_value_info('output', TensorProto.FLOAT, shape) + + node_def = onnx.helper.make_node( + 'Relu', + inputs=['input'], + outputs=['Relu_out'], + ) + node_def2 = onnx.helper.make_node( + 'Sigmoid', + inputs=['Relu_out'], + outputs=['output'], + ) + + # Create the graph (GraphProto) + graph_def = helper.make_graph( + [node_def, node_def2], + 'test_model', + [input], + [output], + ) + + # Create the model (ModelProto) + onnx_net = helper.make_model(graph_def, producer_name='test_model') + return onnx_net + + def ref_meta_data(): + return { + 'Runtime_version': get_rt_version(), + 'legacy_frontend': "False", + 'conversion_parameters': { + 'input_model': Path.joinpath(Path("DIR"), Path("model.onnx")), + } + + } + + def check_meta_data(ov_model): + ref_meta = ref_meta_data() + for key, value in ref_meta.items(): + if key == 'conversion_parameters': + for param_name, param_value in value.items(): + val = ov_model.get_rt_info([key, param_name]).astype(str) + if param_name in ['extensions', 'caffe_parser_path', 'input_model', 'k', 'output_dir']: + val = Path(val) + assert val == param_value, \ + "Runtime info attribute with name {} does not match. Expected: {}, " \ + "got {}".format(param_name, param_value, val) + continue + assert ov_model.get_rt_info(key).astype(str) == value, \ + "Runtime info attribute with name {} does not match. Expected: {}, " \ + "got {}".format(key, value, ov_model.get_rt_info(key).astype(str)) + + with tempfile.TemporaryDirectory(dir=self.test_directory) as tmpdir: + + model = create_onnx_model() + model_path = save_to_onnx(model, tmpdir) + + ov_model = convert_model(model_path) + check_meta_data(ov_model) diff --git a/tools/ovc/unit_tests/ovc/convert/meta_data_test_actual.py b/tools/ovc/unit_tests/ovc/convert/meta_data_test_actual.py new file mode 100644 index 00000000000..1ba198e14c8 --- /dev/null +++ b/tools/ovc/unit_tests/ovc/convert/meta_data_test_actual.py @@ -0,0 +1,86 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import tempfile +import unittest +from pathlib import Path + +from openvino.runtime import get_version as get_rt_version +from openvino.runtime import serialize, convert_model +from openvino.tools.mo.utils.ir_reader.restore_graph import restore_graph_from_ir, save_restored_graph + + +class MetaDataTestTF(unittest.TestCase): + test_directory = os.path.dirname(os.path.realpath(__file__)) + + @staticmethod + def check_meta_data(ov_model, ref_meta): + ignore_attrs = ['version', 'optimization'] + for key, value in ref_meta.items(): + if key == 'conversion_parameters': + for param_name, param_value in value.items(): + val = ov_model.get_rt_info([key, param_name]).astype(str) + if param_name in ['extensions', 'caffe_parser_path', 'input_model', 'k', 'output_dir']: + val = Path(val) + assert val == param_value, \ + "Runtime info attribute with name {} does not match. Expected: {}, " \ + "got {}".format(param_name, param_value, val) + continue + assert ov_model.get_rt_info(key).astype(str) == value, \ + "Runtime info attribute with name {} does not match. Expected: {}, " \ + "got {}".format(key, value, ov_model.get_rt_info(key).astype(str)) + + for key, value in ov_model.get_rt_info().items(): + if key in ignore_attrs: + continue + assert key in ref_meta, "Unexpected runtime info attribute: {}".format(key) + + def test_meta_data_tf(self): + def create_tf_model(out_dir): + import tensorflow as tf + + tf.compat.v1.reset_default_graph() + + with tf.compat.v1.Session() as sess: + inp1 = tf.compat.v1.placeholder(tf.float32, [1, 2, 3], 'Input') + inp2 = tf.compat.v1.placeholder(tf.float32, [1, 2, 3], 'Input') + relu = tf.nn.relu(inp1 + inp2, name='Relu') + + output = tf.nn.sigmoid(relu, name='Sigmoid') + + tf.compat.v1.global_variables_initializer() + tf_net = sess.graph_def + tf.io.write_graph(tf_net, out_dir + os.sep, 'model_bool.pb', as_text=False) + return out_dir + os.sep + 'model_bool.pb' + + def ref_meta_data(): + return { + 'Runtime_version': get_rt_version(), + 'legacy_frontend': "False", + 'conversion_parameters': { + 'scale': "1.5", + 'batch': "1" + } + } + + with tempfile.TemporaryDirectory(dir=self.test_directory) as tmpdir: + model = create_tf_model(tmpdir) + out_xml = os.path.join(tmpdir, "model.xml") + ref_meta = ref_meta_data() + + ov_model = convert_model(model, scale=1.5, batch=1) + self.check_meta_data(ov_model, ref_meta) + + serialize(ov_model, out_xml.encode('utf-8'), out_xml.replace('.xml', '.bin').encode('utf-8')) + + from openvino.runtime import Core + core = Core() + deserialized_model = core.read_model(out_xml) + self.check_meta_data(deserialized_model, ref_meta) + + restored_graph, meta_data = restore_graph_from_ir(out_xml, out_xml.replace('.xml', '.bin')) + save_restored_graph(restored_graph, tmpdir, meta_data, "mo_ir_reader_test_model") + + mo_ir_reader_test_model = core.read_model(os.path.join(tmpdir, "mo_ir_reader_test_model.xml")) + self.check_meta_data(mo_ir_reader_test_model, ref_meta) diff --git a/tools/ovc/unit_tests/ovc/convert/utils.py b/tools/ovc/unit_tests/ovc/convert/utils.py new file mode 100644 index 00000000000..739450263a9 --- /dev/null +++ b/tools/ovc/unit_tests/ovc/convert/utils.py @@ -0,0 +1,52 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os + + +def create_onnx_model(): + # + # Create ONNX model + # + + import onnx + from onnx import helper + from onnx import TensorProto + + shape = [1, 3, 2, 2] + + input = helper.make_tensor_value_info('input', TensorProto.FLOAT, shape) + output = helper.make_tensor_value_info('output', TensorProto.FLOAT, shape) + + node_def = onnx.helper.make_node( + 'LeakyRelu', + inputs=['input'], + outputs=['LeakyRelu_out'], + alpha=0.1 + ) + node_def2 = onnx.helper.make_node( + 'Elu', + inputs=['LeakyRelu_out'], + outputs=['output'], + alpha=0.1 + ) + + # Create the graph (GraphProto) + graph_def = helper.make_graph( + [node_def, node_def2], + 'test_model', + [input], + [output], + ) + + # Create the model (ModelProto) + onnx_net = helper.make_model(graph_def, producer_name='test_model') + return onnx_net + + +def save_to_onnx(onnx_model, path_to_saved_onnx_model): + import onnx + path = os.path.join(path_to_saved_onnx_model, 'model.onnx') + onnx.save(onnx_model, path) + assert os.path.isfile(path), "model.onnx haven't been saved here: {}".format(path_to_saved_onnx_model) + return path diff --git a/tools/ovc/unit_tests/ovc/main_test_error_log.py b/tools/ovc/unit_tests/ovc/main_test_error_log.py new file mode 100644 index 00000000000..cd77f27ead9 --- /dev/null +++ b/tools/ovc/unit_tests/ovc/main_test_error_log.py @@ -0,0 +1,30 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import argparse +from unittest.mock import patch + +from openvino.tools.ovc.error import FrameworkError + + +def mocked_parse_args(*argv): + # Mock parse_args method which generates warning + import logging as log + log.error("warning", extra={'is_warning': True}) + argv = argparse.Namespace(use_legacy_frontend=False, + use_new_frontend=False, + framework=None, + input_model="abc.pbtxt") + return argv + + +@patch('argparse.ArgumentParser.parse_args', mocked_parse_args) +@patch('openvino.tools.ovc.convert_impl.driver', side_effect=FrameworkError('FW ERROR MESSAGE')) +def run_main(mock_driver): + from openvino.tools.ovc.main import main + # runs main() method where driver() raises FrameworkError + main() + + +if __name__ == "__main__": + run_main() diff --git a/tools/ovc/unit_tests/ovc/package_BOM.txt b/tools/ovc/unit_tests/ovc/package_BOM.txt new file mode 100644 index 00000000000..93885c3f9e0 --- /dev/null +++ b/tools/ovc/unit_tests/ovc/package_BOM.txt @@ -0,0 +1,31 @@ +openvino/tools/ovc/__init__.py +openvino/tools/ovc/__main__.py +openvino/tools/ovc/cli_parser.py +openvino/tools/ovc/convert.py +openvino/tools/ovc/convert_data_type.py +openvino/tools/ovc/convert_impl.py +openvino/tools/ovc/environment_setup_utils.py +openvino/tools/ovc/error.py +openvino/tools/ovc/get_ov_update_message.py +openvino/tools/ovc/help.py +openvino/tools/ovc/logger.py +openvino/tools/ovc/main.py +openvino/tools/ovc/moc_frontend/__init__.py +openvino/tools/ovc/moc_frontend/analysis.py +openvino/tools/ovc/moc_frontend/check_config.py +openvino/tools/ovc/moc_frontend/extractor.py +openvino/tools/ovc/moc_frontend/layout_utils.py +openvino/tools/ovc/moc_frontend/moc_emit_ir.py +openvino/tools/ovc/moc_frontend/offline_transformations.py +openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py +openvino/tools/ovc/moc_frontend/pipeline.py +openvino/tools/ovc/moc_frontend/preprocessing.py +openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py +openvino/tools/ovc/moc_frontend/shape_utils.py +openvino/tools/ovc/ovc.py +openvino/tools/ovc/telemetry_params.py +openvino/tools/ovc/telemetry_stub.py +openvino/tools/ovc/telemetry_utils.py +openvino/tools/ovc/types.py +openvino/tools/ovc/utils.py +openvino/tools/ovc/version.py \ No newline at end of file diff --git a/tools/ovc/unit_tests/ovc/unit_test_with_mocked_telemetry.py b/tools/ovc/unit_tests/ovc/unit_test_with_mocked_telemetry.py new file mode 100644 index 00000000000..9200267b697 --- /dev/null +++ b/tools/ovc/unit_tests/ovc/unit_test_with_mocked_telemetry.py @@ -0,0 +1,19 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import unittest +from unittest.mock import Mock + +try: + import openvino_telemetry as tm +except ImportError: + import openvino.tools.ovc.telemetry_stub as tm + + +class UnitTestWithMockedTelemetry(unittest.TestCase): + def setUp(self): + tm.Telemetry.__init__ = Mock(return_value=None) + tm.Telemetry.send_event = Mock() + tm.Telemetry.start_session = Mock() + tm.Telemetry.end_session = Mock() + tm.Telemetry.force_shutdown = Mock() diff --git a/tools/ovc/unit_tests/ovc/utils/__init__.py b/tools/ovc/unit_tests/ovc/utils/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tools/mo/unit_tests/mo/utils/args_to_string_test.py b/tools/ovc/unit_tests/ovc/utils/args_to_string_test.py similarity index 96% rename from tools/mo/unit_tests/mo/utils/args_to_string_test.py rename to tools/ovc/unit_tests/ovc/utils/args_to_string_test.py index 09cd68c19c1..755019d910d 100644 --- a/tools/mo/unit_tests/mo/utils/args_to_string_test.py +++ b/tools/ovc/unit_tests/ovc/utils/args_to_string_test.py @@ -4,10 +4,10 @@ import numpy as np from openvino.runtime import Layout, PartialShape, Dimension, Shape, Type -from openvino.tools.mo import InputCutInfo, LayoutMap -from openvino.tools.mo.utils.cli_parser import mean_scale_value_to_str, \ +from openvino.runtime import InputCutInfo, LayoutMap +from openvino.tools.ovc.cli_parser import mean_scale_value_to_str, \ transform_param_to_str, str_list_to_str, source_target_layout_to_str, layout_param_to_str -from unit_tests.mo.unit_test_with_mocked_telemetry import UnitTestWithMockedTelemetry +from unit_tests.ovc.unit_test_with_mocked_telemetry import UnitTestWithMockedTelemetry class TestConvertingConvertArgumentsToString(UnitTestWithMockedTelemetry): diff --git a/tools/mo/unit_tests/mo/utils/cli_parser_test.py b/tools/ovc/unit_tests/ovc/utils/cli_parser_test.py similarity index 99% rename from tools/mo/unit_tests/mo/utils/cli_parser_test.py rename to tools/ovc/unit_tests/ovc/utils/cli_parser_test.py index 7f44d2066bf..d0e4d03dcdc 100644 --- a/tools/mo/unit_tests/mo/utils/cli_parser_test.py +++ b/tools/ovc/unit_tests/ovc/utils/cli_parser_test.py @@ -12,16 +12,15 @@ from unittest.mock import patch import numpy as np -from openvino.tools.mo.utils.cli_parser import get_placeholder_shapes, get_tuple_values, get_mean_scale_dictionary, \ +from openvino.tools.ovc.cli_parser import get_placeholder_shapes, get_tuple_values, get_mean_scale_dictionary, \ get_model_name, \ parse_tuple_pairs, check_positive, writable_dir, readable_dirs, \ readable_file, get_freeze_placeholder_values, parse_transform, check_available_transforms, get_layout_values, get_all_cli_parser, \ get_mo_convert_params -from openvino.tools.mo.convert_impl import pack_params_to_args_namespace -from openvino.tools.mo.convert import InputCutInfo, LayoutMap -from openvino.tools.mo.utils.error import Error -from unit_tests.mo.unit_test_with_mocked_telemetry import UnitTestWithMockedTelemetry -from openvino.runtime import PartialShape, Dimension, Layout +from openvino.tools.ovc.convert_impl import pack_params_to_args_namespace +from openvino.tools.ovc.error import Error +from unit_tests.ovc.unit_test_with_mocked_telemetry import UnitTestWithMockedTelemetry +from openvino.runtime import PartialShape, Dimension, Layout, InputCutInfo, LayoutMap class TestingMeanScaleGetter(UnitTestWithMockedTelemetry): @@ -1154,7 +1153,7 @@ class TestModelNameParsing(unittest.TestCase): exp_res = 'model' self.assertEqual(exp_res, res) - @patch("openvino.tools.mo.utils.cli_parser.os") + @patch("openvino.tools.ovc.cli_parser.os") def test_model_name_win(self, old_os): old_os.path.basename.return_value = "caffemodel" old_os.path.splitext.return_value = ("caffemodel", "") @@ -1312,7 +1311,7 @@ class TransformChecker(unittest.TestCase): def test_single_pass_with_args_neg6(self): self.assertRaises(Error, parse_transform, "LowLatency2[key=value") - @patch("openvino.tools.mo.back.offline_transformations.get_available_transformations") + @patch("openvino.tools.ovc.moc_frontend.offline_transformations.get_available_transformations") def test_check_low_latency_is_available(self, available_transformations): available_transformations.return_value = {"LowLatency2": None} try: @@ -1320,7 +1319,7 @@ class TransformChecker(unittest.TestCase): except Error as e: self.assertTrue(False, "Exception \"{}\" is unexpected".format(e)) - @patch("openvino.tools.mo.back.offline_transformations.get_available_transformations") + @patch("openvino.tools.ovc.moc_frontend.offline_transformations.get_available_transformations") def test_check_dummy_pass_is_available(self, available_transformations): available_transformations.return_value = {"LowLatency2": None} self.assertRaises(Error, check_available_transforms, [("DummyPass", "")]) diff --git a/tools/mo/unit_tests/mo/utils/error_test.py b/tools/ovc/unit_tests/ovc/utils/error_test.py similarity index 93% rename from tools/mo/unit_tests/mo/utils/error_test.py rename to tools/ovc/unit_tests/ovc/utils/error_test.py index 9ac2ffc2fa1..bbd1361f208 100644 --- a/tools/mo/unit_tests/mo/utils/error_test.py +++ b/tools/ovc/unit_tests/ovc/utils/error_test.py @@ -3,7 +3,7 @@ import unittest -from openvino.tools.mo.utils.error import classify_error_type +from openvino.tools.ovc.error import classify_error_type class TestingErrorClassifier(unittest.TestCase): From deb62313294f209cd0af90b386ef8183b30e70cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Do=C5=82bniak?= Date: Fri, 30 Jun 2023 16:41:11 +0200 Subject: [PATCH 25/25] Removal of opset12 from ngraph (#18282) --- .../include/ngraph/op/group_normalization.hpp | 15 --------------- src/core/include/ngraph/ops.hpp | 1 - src/core/include/ngraph/opsets/opset.hpp | 1 - src/core/include/ngraph/opsets/opset12.hpp | 15 --------------- src/core/include/ngraph/opsets/opset12_tbl.hpp | 12 ------------ src/core/src/opsets/opset.cpp | 10 ++-------- src/core/tests/op_version_tbl.hpp | 2 +- src/tests/util/visitor.hpp | 1 + 8 files changed, 4 insertions(+), 53 deletions(-) delete mode 100644 src/core/include/ngraph/op/group_normalization.hpp delete mode 100644 src/core/include/ngraph/opsets/opset12.hpp delete mode 100644 src/core/include/ngraph/opsets/opset12_tbl.hpp diff --git a/src/core/include/ngraph/op/group_normalization.hpp b/src/core/include/ngraph/op/group_normalization.hpp deleted file mode 100644 index cce1e3b13d4..00000000000 --- a/src/core/include/ngraph/op/group_normalization.hpp +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include "openvino/op/group_normalization.hpp" - -namespace ngraph { -namespace op { -namespace v12 { -using ov::op::v12::GroupNormalization; -} // namespace v12 -} // namespace op -} // namespace ngraph diff --git a/src/core/include/ngraph/ops.hpp b/src/core/include/ngraph/ops.hpp index 7b21ae3ad91..79a4d26adae 100644 --- a/src/core/include/ngraph/ops.hpp +++ b/src/core/include/ngraph/ops.hpp @@ -82,7 +82,6 @@ #include "ngraph/op/grid_sample.hpp" #include "ngraph/op/grn.hpp" #include "ngraph/op/group_conv.hpp" -#include "ngraph/op/group_normalization.hpp" #include "ngraph/op/gru_cell.hpp" #include "ngraph/op/gru_sequence.hpp" #include "ngraph/op/hard_sigmoid.hpp" diff --git a/src/core/include/ngraph/opsets/opset.hpp b/src/core/include/ngraph/opsets/opset.hpp index fce3a525e4b..443de5714e4 100644 --- a/src/core/include/ngraph/opsets/opset.hpp +++ b/src/core/include/ngraph/opsets/opset.hpp @@ -67,7 +67,6 @@ const NGRAPH_API OpSet& get_opset8(); const NGRAPH_API OpSet& get_opset9(); const NGRAPH_API OpSet& get_opset10(); const NGRAPH_API OpSet& get_opset11(); -const NGRAPH_API OpSet& get_opset12(); const NGRAPH_API std::map>& get_available_opsets(); } // namespace ngraph NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/src/core/include/ngraph/opsets/opset12.hpp b/src/core/include/ngraph/opsets/opset12.hpp deleted file mode 100644 index 4394731fde3..00000000000 --- a/src/core/include/ngraph/opsets/opset12.hpp +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include "ngraph/ops.hpp" - -namespace ngraph { -namespace opset12 { -#define NGRAPH_OP(a, b) using b::a; -#include "ngraph/opsets/opset12_tbl.hpp" -#undef NGRAPH_OP -} // namespace opset12 -} // namespace ngraph diff --git a/src/core/include/ngraph/opsets/opset12_tbl.hpp b/src/core/include/ngraph/opsets/opset12_tbl.hpp deleted file mode 100644 index f5db03d2593..00000000000 --- a/src/core/include/ngraph/opsets/opset12_tbl.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#ifndef NGRAPH_OP -# warning "NGRAPH_OP not defined" -# define NGRAPH_OP(x, y) -#endif - -#define _OPENVINO_OP_REG NGRAPH_OP -#include "openvino/opsets/opset12_tbl.hpp" -#undef _OPENVINO_OP_REG diff --git a/src/core/src/opsets/opset.cpp b/src/core/src/opsets/opset.cpp index 7c9e734ea56..9b02d3edd66 100644 --- a/src/core/src/opsets/opset.cpp +++ b/src/core/src/opsets/opset.cpp @@ -7,7 +7,7 @@ #include "itt.hpp" #include "ngraph/deprecated.hpp" #include "ngraph/log.hpp" -#include "ngraph/ops.hpp" +#include "openvino/op/ops.hpp" #include "openvino/opsets/opset.hpp" #include "openvino/util/log.hpp" @@ -64,8 +64,7 @@ const std::map>& ngraph::get_ _NGRAPH_REG_OPSET(opset8), _NGRAPH_REG_OPSET(opset9), _NGRAPH_REG_OPSET(opset10), - _NGRAPH_REG_OPSET(opset11), - _NGRAPH_REG_OPSET(opset12)}; + _NGRAPH_REG_OPSET(opset11)}; #undef _NGRAPH_REG_OPSET return opset_map; } @@ -275,8 +274,3 @@ const ngraph::OpSet& ngraph::get_opset11() { static OpSet opset(ov::get_opset11()); return opset; } - -const ngraph::OpSet& ngraph::get_opset12() { - static OpSet opset(ov::get_opset12()); - return opset; -} diff --git a/src/core/tests/op_version_tbl.hpp b/src/core/tests/op_version_tbl.hpp index c64b10fcfdb..df476c0b363 100644 --- a/src/core/tests/op_version_tbl.hpp +++ b/src/core/tests/op_version_tbl.hpp @@ -67,7 +67,7 @@ _OPENVINO_OP_REG(Greater, ngraph::op::v1) _OPENVINO_OP_REG(GreaterEqual, ngraph::op::v1) _OPENVINO_OP_REG(GroupConvolution, ngraph::op::v1) _OPENVINO_OP_REG(GroupConvolutionBackpropData, ngraph::op::v1) -_OPENVINO_OP_REG(GroupNormalization, ngraph::op::v12) +_OPENVINO_OP_REG(GroupNormalization, ov::op::v12) _OPENVINO_OP_REG(HardSigmoid, ngraph::op::v0) _OPENVINO_OP_REG(Interpolate, ngraph::op::v0) _OPENVINO_OP_REG(Interpolate, ngraph::op::v4) diff --git a/src/tests/util/visitor.hpp b/src/tests/util/visitor.hpp index a274693eaeb..d6b9c4275d2 100644 --- a/src/tests/util/visitor.hpp +++ b/src/tests/util/visitor.hpp @@ -15,6 +15,7 @@ #include "ngraph/ops.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "openvino/core/deprecated.hpp" +#include "openvino/op/ops.hpp" OPENVINO_SUPPRESS_DEPRECATED_START namespace ngraph {

x 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%0D`*c)NehpyUs$*!_Zn-Bd2RKaZ??6r&K5< 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 diff --git a/docs/resources/supported_models.md b/docs/resources/supported_models.md index b9e917abad7..f79bf818b15 100644 --- a/docs/resources/supported_models.md +++ b/docs/resources/supported_models.md @@ -6,12 +6,14 @@ The OpenVINO team continues the effort to support as many models out-of-the-box Based on our research and user feedback, we prioritize the most common models and test them before every release. These models are considered officially supported. + .. button-link:: _static/download/OV_2023_models_supported.pdf :color: primary :outline: :material-regular:`download;1.5em` Click for supported models [PDF] +The list is based on release 2023.0, as of June 01, 2023 | Note that the list provided here does not include all models supported by OpenVINO. | If your model is not included but is similar to those that are, it is still very likely to work. @@ -22,30 +24,6 @@ before every release. These models are considered officially supported. * As OpenVINOā„¢ is open source you can enhance it with your own contribution to the GitHub repository. To learn more, see the articles on :doc:`OpenVINO Extensibility `. -The following table summarizes the number of models supported by OpenVINOā„¢ in different categories: - -=========================================== ==================== - Model Categories: Number of Models: -=========================================== ==================== - Object Detection 149 - Instance Segmentation 3 - Semantic Segmentation 19 - Image Processing, Enhancement 16 - Monodepth 2 - Colorization 2 - Behavior / Decision Prediction 1 - Action Recognition 2 - Time Series Forecasting 1 - Image Classification 68 - Image Classification, Dual Path Network 1 - Image Classification, Emotion 1 - Image Translation 1 - Natural language Processing 35 - Text Detection 18 - Audio Enhancement 3 - Sound Classification 2 -=========================================== ==================== - @endsphinxdirective From 1a60d40bf2f7213d2eea44bbd8a0dc4f660d49fd Mon Sep 17 00:00:00 2001 From: Mikhail Ryzhov Date: Thu, 29 Jun 2023 20:32:37 +0200 Subject: [PATCH 18/25] [GNA] Migrated the deprecated backward compatibility tests to the new infra (#15839) * Migrated the deprecated backward compatibility tests to the new infra * clang format * Fixed build of deprecated tests * Fixed code style * Reverted snake_case functions names * Added dependency on data * Moved exported test models to teh source path * Fixed old tests --- src/plugins/intel_gna/tests/CMakeLists.txt | 1 - .../deprecated/functional/CMakeLists.txt | 11 - .../deprecated/functional/gna/CMakeLists.txt | 51 -- .../backward_compatibility.cpp | 131 ----- .../functional/shared_tests/CMakeLists.txt | 67 --- .../functional/shared_tests/lstm/npy.hpp | 519 ------------------ .../functional/shared_tests/lstm/plg_test.hpp | 73 --- .../functional/shared_tests/lstm/rnn_gen.cpp | 319 ----------- .../functional/shared_tests/lstm/rnn_gen.hpp | 75 --- .../shared_tests/lstm/rnn_referee.cpp | 290 ---------- .../shared_tests/lstm/rnn_referee.hpp | 58 -- .../shared_tests/lstm/rnn_seq_test.hpp | 187 ------- .../functional/shared_tests/lstm/rnn_util.cpp | 307 ----------- .../functional/shared_tests/lstm/rnn_util.hpp | 36 -- .../functional/shared_tests/precomp.hpp | 31 -- .../tests/deprecated/helpers/CMakeLists.txt | 1 + .../deprecated/helpers/test_model_path.cpp | 4 +- .../tests/deprecated/helpers/tests_common.hpp | 2 +- .../intel_gna/tests/functional/CMakeLists.txt | 10 + .../backward_compatibility.cpp | 228 ++++++++ .../data/exported_models/export2dot1.blob | Bin 0 -> 8658 bytes .../data/exported_models/export2dot2.blob | Bin 0 -> 8659 bytes .../data/exported_models/export2dot3.blob | Bin 0 -> 8690 bytes .../data/exported_models/export2dot4.blob | Bin 0 -> 8703 bytes .../data/exported_models/export2dot5.blob | Bin 0 -> 8707 bytes .../data/exported_models/export2dot6.blob | Bin 0 -> 31638 bytes .../data/exported_models/export2dot7.blob | Bin 0 -> 15402 bytes .../data/exported_models/export2dot8.blob | Bin 0 -> 23451 bytes .../data/exported_models/export2dot9.blob | Bin 0 -> 30818 bytes .../helpers}/test_model_repo.cpp | 4 +- .../helpers/test_model_repo.hpp | 16 +- 31 files changed, 252 insertions(+), 2169 deletions(-) delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/CMakeLists.txt delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/gna/CMakeLists.txt delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/gna/backward_compatibility/backward_compatibility.cpp delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/CMakeLists.txt delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/npy.hpp delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/plg_test.hpp delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_gen.cpp delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_gen.hpp delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_referee.cpp delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_referee.hpp delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_seq_test.hpp delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_util.cpp delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_util.hpp delete mode 100644 src/plugins/intel_gna/tests/deprecated/functional/shared_tests/precomp.hpp create mode 100644 src/plugins/intel_gna/tests/functional/Import_export_tests/backward_compatibility/backward_compatibility.cpp create mode 100644 src/plugins/intel_gna/tests/functional/data/exported_models/export2dot1.blob create mode 100644 src/plugins/intel_gna/tests/functional/data/exported_models/export2dot2.blob create mode 100644 src/plugins/intel_gna/tests/functional/data/exported_models/export2dot3.blob create mode 100644 src/plugins/intel_gna/tests/functional/data/exported_models/export2dot4.blob create mode 100644 src/plugins/intel_gna/tests/functional/data/exported_models/export2dot5.blob create mode 100644 src/plugins/intel_gna/tests/functional/data/exported_models/export2dot6.blob create mode 100644 src/plugins/intel_gna/tests/functional/data/exported_models/export2dot7.blob create mode 100644 src/plugins/intel_gna/tests/functional/data/exported_models/export2dot8.blob create mode 100644 src/plugins/intel_gna/tests/functional/data/exported_models/export2dot9.blob rename src/plugins/intel_gna/tests/{deprecated/functional/gna => functional/helpers}/test_model_repo.cpp (68%) rename src/plugins/intel_gna/tests/{deprecated => functional}/helpers/test_model_repo.hpp (55%) diff --git a/src/plugins/intel_gna/tests/CMakeLists.txt b/src/plugins/intel_gna/tests/CMakeLists.txt index 9c52c514d33..cd02a93f74b 100644 --- a/src/plugins/intel_gna/tests/CMakeLists.txt +++ b/src/plugins/intel_gna/tests/CMakeLists.txt @@ -28,6 +28,5 @@ if(ENABLE_TESTS) endif() if(ENABLE_FUNCTIONAL_TESTS) - add_subdirectory(deprecated/functional) add_subdirectory(functional) endif() diff --git a/src/plugins/intel_gna/tests/deprecated/functional/CMakeLists.txt b/src/plugins/intel_gna/tests/deprecated/functional/CMakeLists.txt deleted file mode 100644 index 7fe518e65ef..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (C) 2018-2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 -# - -ov_disable_deprecated_warnings() - -add_subdirectory(shared_tests) - -if (ENABLE_INTEL_GNA) - add_subdirectory(gna) -endif() diff --git a/src/plugins/intel_gna/tests/deprecated/functional/gna/CMakeLists.txt b/src/plugins/intel_gna/tests/deprecated/functional/gna/CMakeLists.txt deleted file mode 100644 index 324c98c7d7f..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/gna/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright (C) 2018-2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 -# - -set(TARGET_NAME GnaFunctionalTests) - -file(GLOB TEST_SRC - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/shared_tests_instance/input_tests/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/shared_tests_instance/single_layer_tests/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/backward_compatibility/*.cpp) - -list(APPEND DEPENDENCIES openvino_intel_gna_plugin) - -if(ENABLE_HETERO) - list(APPEND DEPENDENCIES openvino_hetero_plugin) -endif() - -if(ENABLE_INTEL_CPU) - list(APPEND DEPENDENCIES openvino_intel_cpu_plugin) -endif() - -add_executable(${TARGET_NAME} ${TEST_SRC} ${TEST_INCLUDE}) - -target_compile_definitions(${TARGET_NAME} - PRIVATE - USE_GNA=ON - PUBLIC ${ARGV} - DATA_PATH=\"${DATA_PATH}\" - MODELS_PATH=\"${MODELS_PATH}\") - -target_link_libraries(${TARGET_NAME} - PRIVATE - IESharedTests - funcTestUtils - ) - -target_include_directories(${TARGET_NAME} - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/include) - -add_dependencies(${TARGET_NAME} ${DEPENDENCIES}) - -add_test(NAME ${TARGET_NAME} COMMAND ${TARGET_NAME}) -set_property(TEST ${TARGET_NAME} PROPERTY LABELS GNA) - -install(TARGETS ${TARGET_NAME} - RUNTIME DESTINATION tests - COMPONENT tests - EXCLUDE_FROM_ALL) - diff --git a/src/plugins/intel_gna/tests/deprecated/functional/gna/backward_compatibility/backward_compatibility.cpp b/src/plugins/intel_gna/tests/deprecated/functional/gna/backward_compatibility/backward_compatibility.cpp deleted file mode 100644 index b2e3526f1f4..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/gna/backward_compatibility/backward_compatibility.cpp +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include -#include -#include -#include -#include -#include "gtest/gtest.h" - -//TODO : need move to new test infrastructure @IrinaEfode -using namespace InferenceEngine; - -typedef std::tuple< - InferenceEngine::Precision, // Network Precision - std::string, // Target Device - std::string, // Name Export Model - std::map, // Export Configuration - std::map // Import Configuration -> exportImportNetworkParams; - -class BackwardCompatibilityTests : public testing::WithParamInterface, - public testing::Test{ -public: - static std::string getTestCaseName(testing::TestParamInfo obj) { - InferenceEngine::Precision netPrecision; - std::string targetDevice; - std::map exportConfiguration; - std::map importConfiguration; - std::string nameExportModel; - std::tie(netPrecision, targetDevice, nameExportModel, exportConfiguration, importConfiguration) = obj.param; - - std::ostringstream result; - result << "netPRC=" << netPrecision.name() << "_"; - result << "targetDevice=" << targetDevice << "_"; - result << "nameExportModel=" << nameExportModel << "_"; - for (auto const& configItem : exportConfiguration) { - result << "_exportConfigItem=" << configItem.first << "_" << configItem.second; - } - for (auto const& configItem : importConfiguration) { - result << "_importConfigItem=" << configItem.first << "_" << configItem.second; - } - return result.str(); - } - - void Run() { - InferenceEngine::Precision netPrecision; - std::string targetDevice; - std::map exportConfiguration; - std::map importConfiguration; - std::string nameExportModel; - std::tie(netPrecision, targetDevice, nameExportModel, exportConfiguration, importConfiguration) = this->GetParam(); - GenerateFunction(); - Core ie; - CNNNetwork network = CNNNetwork(function); - ExecutableNetwork executableNetwork = ie.LoadNetwork(network, "GNA", exportConfiguration); - InferRequest inferRequest = executableNetwork.CreateInferRequest(); - inferRequest.Infer(); - auto refOutputs = std::vector{}; - for (const auto& output : executableNetwork.GetOutputsInfo()) { - const auto& name = output.first; - refOutputs.push_back(inferRequest.GetBlob(name)); - } - - auto models = TestDataHelpers::get_data_path() + "/gna/" + nameExportModel; - auto ImportNetwork = ie.ImportNetwork(models, "GNA", importConfiguration); - InferRequest inferRequestImport = ImportNetwork.CreateInferRequest(); - auto input_names = executableNetwork.GetInputsInfo(); - for (const auto& input_name : input_names) { - auto i_blob = inferRequest.GetBlob(input_name.first); - for (const auto& infer_name : ImportNetwork.GetInputsInfo()) { - inferRequestImport.SetBlob(infer_name.first, i_blob); - } - } - inferRequestImport.Infer(); - for (const auto& output : ImportNetwork.GetOutputsInfo()) { - const auto& name = output.first; - refOutputs.push_back(inferRequestImport.GetBlob(name)); - } - CompareCommonExact(refOutputs[1], refOutputs[0]); - } - -protected: - void SetUp() override { - } -private: - std::shared_ptr function; - void GenerateFunction() { - auto param = std::make_shared(ngraph::element::f32, ngraph::Shape{1, 336}); - auto const_eltwise = std::make_shared(ngraph::element::f32, ngraph::Shape{1, 336}, - std::vector{-1}); - auto relu = std::make_shared(param, const_eltwise); - ngraph::ResultVector results{ std::make_shared(relu) }; - function = std::make_shared(results, ngraph::ParameterVector{param}, "ExportBackwordCompatibility"); - } -}; - -TEST_P(BackwardCompatibilityTests, smoke_BackwardCompatibility){ - Run(); -} - -const std::vector netPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16 -}; - -const std::vector> exportConfigs = { - { - {"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, - {"GNA_SCALE_FACTOR_0", "327.67"} - } -}; - -const std::vector> importConfigs = { - { - {"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, - {"GNA_SCALE_FACTOR_0", "327.67"} - }, -}; - -const std::vector nameExportModel = {"export2dot1.blob", "export2dot2.blob", "export2dot3.blob", "export2dot4.blob"}; - -INSTANTIATE_TEST_SUITE_P(smoke_OldVersion, BackwardCompatibilityTests, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values("GNA"), - ::testing::ValuesIn(nameExportModel), - ::testing::ValuesIn(exportConfigs), - ::testing::ValuesIn(importConfigs)), - BackwardCompatibilityTests::getTestCaseName); diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/CMakeLists.txt b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/CMakeLists.txt deleted file mode 100644 index fcb6dda144d..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/CMakeLists.txt +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright (C) 2018-2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 -# - -set(TARGET_NAME IESharedTests) - -list(APPEND SHARED_LIBRARIES - commonTestUtils - openvino::runtime - ngraphFunctions - ieTestHelpers - ) - -file(GLOB SHARED_TESTS_SRC - ${CMAKE_CURRENT_SOURCE_DIR}/lstm/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/graph_tools/*.cpp - ) - -add_library(${TARGET_NAME} STATIC ${SHARED_TESTS_SRC}) - -add_dependencies(${TARGET_NAME} openvino_gapi_preproc mock_engine) - -if(ENABLE_AUTO OR ENABLE_MULTI) - add_dependencies(${TARGET_NAME} openvino_auto_plugin) -endif() - -if(ENABLE_AUTO_BATCH) - add_dependencies(${TARGET_NAME} openvino_auto_batch_plugin) -endif() - -set_ie_threading_interface_for(${TARGET_NAME}) - -ie_faster_build(${TARGET_NAME} - UNITY - PCH PRIVATE "precomp.hpp" -) - -# Find OpenCV components if exist -find_package(OpenCV QUIET COMPONENTS core imgproc) -if(OpenCV_FOUND) - target_compile_definitions(${TARGET_NAME} PUBLIC USE_OPENCV) -else() - message(WARNING "No suitable OpenCV version detected, pre-processing tests are skipped in ${TARGET_NAME}") -endif() - -target_include_directories(${TARGET_NAME} PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/input_tests - ${CMAKE_CURRENT_SOURCE_DIR}/lstm - ${CMAKE_CURRENT_SOURCE_DIR}/common_single_layer_tests - ${CMAKE_CURRENT_SOURCE_DIR}/single_layer_tests - $ -) - -if(OpenCV_FOUND) - target_include_directories(${TARGET_NAME} PUBLIC ${OpenCV_INCLUDE_DIRS}) - list(APPEND SHARED_LIBRARIES ${OpenCV_LIBS}) -endif() - -target_link_libraries(${TARGET_NAME} PUBLIC ${SHARED_LIBRARIES}) - -if(ENABLE_HETERO) - add_dependencies(${TARGET_NAME} openvino_hetero_plugin) -endif() - -# developer package - -openvino_developer_export_targets(COMPONENT tests TARGETS ${TARGET_NAME}) diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/npy.hpp b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/npy.hpp deleted file mode 100644 index decf4deec61..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/npy.hpp +++ /dev/null @@ -1,519 +0,0 @@ -/* - Copyright 2017 Leon Merten Lohse - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#ifndef NPY_H -#define NPY_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -namespace npy { - -/* Compile-time test for byte order. - If your compiler does not define these per default, you may want to define - one of these constants manually. - Defaults to little endian order. */ -#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || \ - defined(__BIG_ENDIAN__) || \ - defined(__ARMEB__) || \ - defined(__THUMBEB__) || \ - defined(__AARCH64EB__) || \ - defined(_MIBSEB) || defined(__MIBSEB) || defined(__MIBSEB__) -const bool big_endian = true; -#else -const bool big_endian = false; -#endif - - -const char magic_string[] = "\x93NUMPY"; -const size_t magic_string_length = 6; - -const char little_endian_char = '<'; -const char big_endian_char = '>'; -const char no_endian_char = '|'; - -constexpr char host_endian_char = ( big_endian ? - big_endian_char : - little_endian_char ); - -/* npy array length */ -typedef unsigned long int ndarray_len_t; - -inline void write_magic(std::ostream& ostream, unsigned char v_major=1, unsigned char v_minor=0) { - ostream.write(magic_string, magic_string_length); - ostream.put(v_major); - ostream.put(v_minor); -} - -inline void read_magic(std::istream& istream, unsigned char& v_major, unsigned char& v_minor) { - char buf[magic_string_length+2]; - istream.read(buf, magic_string_length+2); - - if(!istream) { - throw std::runtime_error("io error: failed reading file"); - } - - if (0 != std::memcmp(buf, magic_string, magic_string_length)) - throw std::runtime_error("this file does not have a valid npy format."); - - v_major = buf[magic_string_length]; - v_minor = buf[magic_string_length+1]; -} - -// typestring magic -struct Typestring { - private: - char c_endian; - char c_type; - int len; - - public: - inline std::string str() { - const size_t max_buflen = 16; - char buf[max_buflen]; - std::sprintf(buf, "%c%c%u", c_endian, c_type, len); - return std::string(buf); - } - - Typestring(const std::vector& v) - :c_endian {host_endian_char}, c_type {'f'}, len {sizeof(float)} {} - Typestring(const std::vector& v) - :c_endian {host_endian_char}, c_type {'f'}, len {sizeof(double)} {} - Typestring(const std::vector& v) - :c_endian {host_endian_char}, c_type {'f'}, len {sizeof(long double)} {} - - Typestring(const std::vector& v) - :c_endian {no_endian_char}, c_type {'i'}, len {sizeof(char)} {} - Typestring(const std::vector& v) - :c_endian {host_endian_char}, c_type {'i'}, len {sizeof(short)} {} - Typestring(const std::vector& v) - :c_endian {host_endian_char}, c_type {'i'}, len {sizeof(int)} {} - Typestring(const std::vector& v) - :c_endian {host_endian_char}, c_type {'i'}, len {sizeof(long)} {} - Typestring(const std::vector& v) :c_endian {host_endian_char}, c_type {'i'}, len {sizeof(long long)} {} - - Typestring(const std::vector& v) - :c_endian {no_endian_char}, c_type {'u'}, len {sizeof(unsigned char)} {} - Typestring(const std::vector& v) - :c_endian {host_endian_char}, c_type {'u'}, len {sizeof(unsigned short)} {} - Typestring(const std::vector& v) - :c_endian {host_endian_char}, c_type {'u'}, len {sizeof(unsigned int)} {} - Typestring(const std::vector& v) - :c_endian {host_endian_char}, c_type {'u'}, len {sizeof(unsigned long)} {} - Typestring(const std::vector& v) - :c_endian {host_endian_char}, c_type {'u'}, len {sizeof(unsigned long long)} {} - - Typestring(const std::vector>& v) - :c_endian {host_endian_char}, c_type {'c'}, len {sizeof(std::complex)} {} - Typestring(const std::vector>& v) - :c_endian {host_endian_char}, c_type {'c'}, len {sizeof(std::complex)} {} - Typestring(const std::vector>& v) - :c_endian {host_endian_char}, c_type {'c'}, len {sizeof(std::complex)} {} -}; - -inline void parse_typestring( std::string typestring){ -// std::regex re ("'([<>|])([ifuc])(\\d+)'"); -// std::smatch sm; -// -// std::regex_match(typestring, sm, re ); -// -// if ( sm.size() != 4 ) { -// throw std::runtime_error("invalid typestring"); -// } -} - -namespace pyparse { - -/** - Removes leading and trailing whitespaces - */ -inline std::string trim(const std::string& str) { - const std::string whitespace = " \t"; - auto begin = str.find_first_not_of(whitespace); - - if (begin == std::string::npos) - return ""; - - auto end = str.find_last_not_of(whitespace); - - return str.substr(begin, end-begin+1); -} - - -inline std::string get_value_from_map(const std::string& mapstr) { - size_t sep_pos = mapstr.find_first_of(":"); - if (sep_pos == std::string::npos) - return ""; - - std::string tmp = mapstr.substr(sep_pos+1); - return trim(tmp); -} - -/** - Parses the string representation of a Python dict - - The keys need to be known and may not appear anywhere else in the data. - */ -inline std::unordered_map parse_dict(std::string in, std::vector& keys) { - - std::unordered_map map; - - if (keys.size() == 0) - return map; - - in = trim(in); - - // unwrap dictionary - if ((in.front() == '{') && (in.back() == '}')) - in = in.substr(1, in.length()-2); - else - throw std::runtime_error("Not a Python dictionary."); - - std::vector> positions; - - for (auto const& value : keys) { - size_t pos = in.find( "'" + value + "'" ); - - if (pos == std::string::npos) - throw std::runtime_error("Missing '"+value+"' key."); - - std::pair position_pair { pos, value }; - positions.push_back(position_pair); - } - - // sort by position in dict - std::sort(positions.begin(), positions.end() ); - - for(size_t i = 0; i < positions.size(); ++i) { - std::string raw_value; - size_t begin { positions[i].first }; - size_t end { std::string::npos }; - - std::string key = positions[i].second; - - if ( i+1 < positions.size() ) - end = positions[i+1].first; - - raw_value = in.substr(begin, end-begin); - - raw_value = trim(raw_value); - - if (raw_value.back() == ',') - raw_value.pop_back(); - - map[key] = get_value_from_map(raw_value); - } - - return map; -} - -/** - Parses the string representation of a Python boolean - */ -inline bool parse_bool(const std::string& in) { - if (in == "True") - return true; - if (in == "False") - return false; - - throw std::runtime_error("Invalid python boolan."); -} - -/** - Parses the string representation of a Python str - */ -inline std::string parse_str(const std::string& in) { - if ((in.front() == '\'') && (in.back() == '\'')) - return in.substr(1, in.length()-2); - - throw std::runtime_error("Invalid python string."); -} - -/** - Parses the string represenatation of a Python tuple into a vector of its items - */ -inline std::vector parse_tuple(std::string in) { - std::vector v; - const char seperator = ','; - - in = trim(in); - - if ((in.front() == '(') && (in.back() == ')')) - in = in.substr(1, in.length()-2); - else - throw std::runtime_error("Invalid Python tuple."); - - std::istringstream iss(in); - - for (std::string token; std::getline(iss, token, seperator);) { - v.push_back(token); - } - - return v; -} - -template -inline std::string write_tuple(const std::vector& v) { - if (v.size() == 0) - return ""; - - std::ostringstream ss; - - if (v.size() == 1) { - ss << "(" << v.front() << ",)"; - } else { - const std::string delimiter = ", "; - // v.size() > 1 - ss << "("; - std::copy(v.begin(), v.end()-1, std::ostream_iterator(ss, delimiter.c_str())); - ss << v.back(); - ss << ")"; - } - - return ss.str(); -} - -inline std::string write_boolean(bool b) { - if(b) - return "True"; - else - return "False"; -} - -} // namespace pyparse - - -inline void parse_header(std::string header, std::string& descr, bool& fortran_order, std::vector& shape) { - /* - The first 6 bytes are a magic string: exactly "x93NUMPY". - The next 1 byte is an unsigned byte: the major version number of the file format, e.g. x01. - The next 1 byte is an unsigned byte: the minor version number of the file format, e.g. x00. Note: the version of the file format is not tied to the version of the numpy package. - The next 2 bytes form a little-endian unsigned short int: the length of the header data HEADER_LEN. - The next HEADER_LEN bytes form the header data describing the array's format. It is an ASCII string which contains a Python literal expression of a dictionary. It is terminated by a newline ('n') and padded with spaces ('x20') to make the total length of the magic string + 4 + HEADER_LEN be evenly divisible by 16 for alignment purposes. - The dictionary contains three keys: - - "descr" : dtype.descr - An object that can be passed as an argument to the numpy.dtype() constructor to create the array's dtype. - "fortran_order" : bool - Whether the array data is Fortran-contiguous or not. Since Fortran-contiguous arrays are a common form of non-C-contiguity, we allow them to be written directly to disk for efficiency. - "shape" : tuple of int - The shape of the array. - For repeatability and readability, this dictionary is formatted using pprint.pformat() so the keys are in alphabetic order. - */ - - // remove trailing newline - if (header.back() != '\n') - throw std::runtime_error("invalid header"); - header.pop_back(); - - // parse the dictionary - std::vector keys { "descr", "fortran_order", "shape" }; - auto dict_map = npy::pyparse::parse_dict(header, keys); - - if (dict_map.size() == 0) - throw std::runtime_error("invalid dictionary in header"); - - std::string descr_s = dict_map["descr"]; - std::string fortran_s = dict_map["fortran_order"]; - std::string shape_s = dict_map["shape"]; - - // TODO: extract info from typestring - parse_typestring(descr_s); - // remove - descr = npy::pyparse::parse_str(descr_s); - - // convert literal Python bool to C++ bool - fortran_order = npy::pyparse::parse_bool(fortran_s); - - // parse the shape tuple - auto shape_v = npy::pyparse::parse_tuple(shape_s); - if (shape_v.size() == 0) - throw std::runtime_error("invalid shape tuple in header"); - - for ( auto item : shape_v ) { - ndarray_len_t dim = static_cast(std::stoul(item)); - shape.push_back(dim); - } -} - - -inline std::string write_header_dict(const std::string& descr, bool fortran_order, const std::vector& shape) { - std::string s_fortran_order = npy::pyparse::write_boolean(fortran_order); - std::string shape_s = npy::pyparse::write_tuple(shape); - - return "{'descr': '" + descr + "', 'fortran_order': " + s_fortran_order + ", 'shape': " + shape_s + ", }"; -} - -inline void write_header(std::ostream& out, const std::string& descr, bool fortran_order, const std::vector& shape_v) -{ - std::string header_dict = write_header_dict(descr, fortran_order, shape_v); - - size_t length = magic_string_length + 2 + 2 + header_dict.length() + 1; - - unsigned char version[2] = {1, 0}; - if (length >= 255*255) { - length = magic_string_length + 2 + 4 + header_dict.length() + 1; - version[0] = 2; - version[1] = 0; - } - size_t padding_len = 16 - length % 16; - std::string padding (padding_len, ' '); - - // write magic - write_magic(out, version[0], version[1]); - - // write header length - if (version[0] == 1 && version[1] == 0) { - char header_len_le16[2]; - uint16_t header_len = header_dict.length() + padding.length() + 1; - - header_len_le16[0] = (header_len >> 0) & 0xff; - header_len_le16[1] = (header_len >> 8) & 0xff; - out.write(reinterpret_cast(header_len_le16), 2); - }else{ - char header_len_le32[4]; - uint32_t header_len = header_dict.length() + padding.length() + 1; - - header_len_le32[0] = (header_len >> 0) & 0xff; - header_len_le32[1] = (header_len >> 8) & 0xff; - header_len_le32[2] = (header_len >> 16) & 0xff; - header_len_le32[3] = (header_len >> 24) & 0xff; - out.write(reinterpret_cast(header_len_le32), 4); - } - - out << header_dict << padding << '\n'; -} - -inline std::string read_header(std::istream& istream) { - // check magic bytes an version number - unsigned char v_major, v_minor; - read_magic(istream, v_major, v_minor); - - uint32_t header_length; - if(v_major == 1 && v_minor == 0){ - - char header_len_le16[2]; - istream.read(header_len_le16, 2); - header_length = (header_len_le16[0] << 0) | (header_len_le16[1] << 8); - - if((magic_string_length + 2 + 2 + header_length) % 16 != 0) { - // TODO: display warning - } - }else if(v_major == 2 && v_minor == 0) { - char header_len_le32[4]; - istream.read(header_len_le32, 4); - - header_length = (header_len_le32[0] << 0) | (header_len_le32[1] << 8) - | (header_len_le32[2] << 16) | (header_len_le32[3] << 24); - - if((magic_string_length + 2 + 4 + header_length) % 16 != 0) { - // TODO: display warning - } - }else{ - throw std::runtime_error("unsupported file format version"); - } - - auto buf_v = std::vector(); - buf_v.reserve(header_length); - istream.read(buf_v.data(), header_length); - std::string header(buf_v.data(), header_length); - - return header; -} - -inline ndarray_len_t comp_size(const std::vector& shape) { - ndarray_len_t size = 1; - for (ndarray_len_t i : shape ) - size *= i; - - return size; -} - -template -inline void SaveArrayAsNumpy( const std::string& filename, bool fortran_order, unsigned int n_dims, const unsigned long shape[], const std::vector& data) -{ - Typestring typestring_o(data); - std::string typestring = typestring_o.str(); - - std::ofstream stream( filename, std::ofstream::binary); - if(!stream) { - throw std::runtime_error("io error: failed to open a file."); - } - - std::vector shape_v(shape, shape+n_dims); - write_header(stream, typestring, fortran_order, shape_v); - - auto size = static_cast(comp_size(shape_v)); - - stream.write(reinterpret_cast(data.data()), sizeof(Scalar) * size); -} - - -template -inline void LoadArrayFromNumpy(const std::string& filename, std::vector& shape, std::vector& data) -{ - std::ifstream stream(filename, std::ifstream::binary); - if(!stream) { - throw std::runtime_error("io error: failed to open a file."); - } - - std::string header = read_header(stream); - - // parse header - bool fortran_order; - std::string typestr; - - parse_header(header, typestr, fortran_order, shape); - - // check if the typestring matches the given one - Typestring typestring_o {data}; - std::string expect_typestr = typestring_o.str(); - if (typestr != expect_typestr) { - throw std::runtime_error("formatting error: typestrings not matching"); - } - - - // compute the data size based on the shape - auto size = static_cast(comp_size(shape)); - data.resize(size); - - // read the data - stream.read(reinterpret_cast(data.data()), sizeof(Scalar)*size); -} - -} // namespace npy - -#endif // NPY_H diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/plg_test.hpp b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/plg_test.hpp deleted file mode 100644 index 0ce786773ac..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/plg_test.hpp +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once -/** - * @brief Base test class for Per Plugin tests - * - * Helper to handle test cases for all Plugins. - * @file - */ - -#include -#include -#include -#include -#include -#include - -/** - * @brief Container for plugin_name and test params - * - * plugin_name is mandatory field. - */ -template -using PlgTestParam = std::tuple; - -/** - * @brief Base class for per plugin tests - */ -template -class PlgTest : public testing::TestWithParam> { -protected: - std::map config; - void SetUp() override { - device_name = std::get<0>(this->GetParam()); - std::transform(device_name.begin(), device_name.end(), - device_name.begin(), [] (char v) { return v == '_' ? ':' : v; }); - } - - const P ¶m() const { - return std::get<1>(this->GetParam()); - } - - std::string device_name; -}; - -/** - * @brief Helper to print name - */ -template -class Named { -public: - Named(std::function clb) : _clb(clb) {} - - const std::string operator() (const testing::TestParamInfo> &p) { - return _clb(std::get<1>(p.param)); - } -private: - const std::function _clb; -}; - -/** - * @brief Macros to specify Per Plugin Run Test Case with parameters. - */ -#define RUN_CASE_P_WITH_SUFFIX(_plugin, _suffix, _test, _params) \ - INSTANTIATE_TEST_SUITE_P(_plugin##_run##_suffix, _test, ::testing::Combine(::testing::Values(#_plugin), ::testing::ValuesIn(_params) )) - -/** - * @brief Macros to specify Per Plugin Run Test Case with Cartesian Product of parameters. - */ -#define RUN_CASE_CP_WITH_SUFFIX(_plugin, _suffix, _test, _params, ...) \ - INSTANTIATE_TEST_SUITE_P(_plugin##_run##_suffix, _test, ::testing::Combine(::testing::Values(#_plugin), _params), __VA_ARGS__ ) diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_gen.cpp b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_gen.cpp deleted file mode 100644 index a5c27384934..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_gen.cpp +++ /dev/null @@ -1,319 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include "rnn_gen.hpp" -#include "rnn_referee.hpp" -#include "rnn_util.hpp" -#include "xml_net_builder.hpp" -#include - -#include -#include - -using namespace InferenceEngine; -using std::map; -using std::pair; -using std::vector; -using std::string; - -using Shape = InferenceEngine::SizeVector; - -RNNGen::RNNGen(size_t batch, size_t seq, CellDesc cell, Mode mode, Direction dir, int axis) : - N(batch), T(seq), cell(cell), mode(mode), dir(dir), - axis(axis), neg(mode == TI_CSTM) { - size_t effective_T = (mode == DYN_SEQ) ? T - 1 : T; - - referee = RNN_Referee::create_referee(cell, N, effective_T, D, S); - - st_dim = {N, S}; - id_dim = (axis == 1) ? Shape{N, T, D} : Shape{T, N, D}; - od_dim = (axis == 1) ? Shape{N, T, S} : Shape{T, N, S}; - seq_l_dim = {N}; - - state_num = referee->stateNum(); - wSzB = referee->wSize() * sizeof(float); - bSzB = referee->bSize() * sizeof(float); - - weights = std::make_shared>(TensorDesc(Precision::U8, SizeVector{(wSzB + bSzB)}, Layout::C)); - weights->allocate(); - - auto ptr = weights->buffer().as(); - SizeVector w_dims{referee->wSize()}; - SizeVector b_dims{referee->bSize()}; - w_blob = make_shared_blob({Precision::FP32, w_dims, TensorDesc::getLayoutByDims(w_dims)}, ptr); - b_blob = make_shared_blob({Precision::FP32, b_dims, TensorDesc::getLayoutByDims(b_dims)}, - ptr + referee->wSize()); -} - -string RNNGen::model() { - auto net_b = CommonTestUtils::V2NetBuilder::buildNetworkWithOneInput("RNN_Net", id_dim, "FP32"); - for (int i = 0; i < state_num; i++) - net_b.addInputLayer("FP32", st_dim); - - if (mode == DYN_SEQ) - net_b.addInputLayer("FP32", seq_l_dim); - - if (mode == CELL) - add_CELL(net_b); - else if (mode == SEQ || mode == DYN_SEQ) - add_SEQ(net_b); - else { - add_TI(net_b); - } - - size_t num_input = 1 + state_num + (mode == DYN_SEQ ? 1 : 0); - vector> edges; - - switch (num_input) { - case 4: - edges = { - {"0,0", "4,4"}, - {"1,1", "4,5"}, - {"2,2", "4,6"}, - {"3,3", "4,7"}, - }; - break; - case 3: - edges = { - {"0,0", "3,3"}, - {"1,1", "3,4"}, - {"2,2", "3,5"}, - }; - break; - case 2: - edges = { - {"0,0", "2,2"}, - {"1,1", "2,3"}, - }; - break; - } - return net_b.finish(&edges); -} - -static const std::string cell_type(Cell cell) { - return cell == LSTM ? "LSTM" : - cell == GRU ? "GRU" : - cell == GRU_lbr ? "GRU" : - cell == RNN ? "RNN" : "Unknown"; -} - -static const std::string cell_layer_type(CellDesc cell) { - return cell_type(cell.type) + "Cell"; -} - -map RNNGen::basic_cell_attr() { - map attr{}; - - // Prepare activations attributes - string algs, alpha, beta; - for (auto &act : cell.acts) { - algs += act.alg + ','; - alpha += std::to_string(act.alpha) + ','; - beta += std::to_string(act.beta) + ','; - } - algs.pop_back(); // remove last comma - alpha.pop_back(); - beta.pop_back(); - - attr["activations"] = algs; - attr["activations_alpha"] = alpha; - attr["activations_beta"] = beta; - - attr["clip"] = std::to_string(cell.clip); - attr["hidden_size"] = std::to_string(S); - - if (cell.type == GRU_lbr) - attr["linear_before_reset"] = std::to_string(true); - - return attr; -} - -void RNNGen::add_TI(CommonTestUtils::V2NetBuilder &builder) { - /// Generate TI body - Shape id_ti = id_dim; - Shape od_ti = od_dim; - id_ti[axis] = 1; - od_ti[axis] = 1; - - std::map - cell_attr = basic_cell_attr(), - rsh1_attr{{"dim", "-1," + std::to_string(D)}}, - rsh2_attr{{"dim", (axis == 1 ? "-1,1," : "1,-1,") + std::to_string(S)}}, - negt_attr{{"scale", "-1"}, - {"shift", "0"}, - {"power", "1"}}; - - CommonTestUtils::InOutShapes cell_inout{{{N, D}}, - {}}; - for (int i = 0; i < state_num; i++) { - cell_inout.inDims.push_back({N, S}); - cell_inout.outDims.push_back({N, S}); - } - - auto body_bilder = CommonTestUtils::V2NetBuilder::buildBody(); - body_bilder.addLayer("Reshape", "FP32", &rsh1_attr, {{id_ti}, - {{N, D}}}); - body_bilder.addLayer(cell_layer_type(cell), "FP32", &cell_attr, cell_inout, wSzB, bSzB); - body_bilder.addLayer("Reshape", "FP32", &rsh2_attr, {{{N, S}}, - {od_ti}}); - if (neg) - body_bilder.addLayer("Power", "FP32", &negt_attr, {{od_ti}, - {od_ti}}); - - // body edges - int last_l = 2, last_p = 6; - vector> body_edges{ - {"0,1", "1,2"}, - {"1,4", "2,5"}}; - - if (state_num == 2) { - body_edges[1] = {"1,5", "2,7"}; - last_p += 2; - } - - if (neg) { - using std::to_string; - body_edges.push_back({to_string(last_l) + ',' + to_string(last_p), - to_string(last_l + 1) + ',' + to_string(last_p + 1)}); - last_l += 1; - last_p += 2; - } - - auto body = body_bilder.finish(&body_edges); - /// body is generated - - bool fwd = (dir == FWD); - - int st = fwd ? 1 : -1; - int bgn = fwd ? 0 : -1; - int end = fwd ? -1 : 0; - - CommonTestUtils::InOutShapes ti_inout{{id_dim}, - {od_dim}}; - for (int i = 0; i < state_num; i++) { - ti_inout.inDims.push_back({N, S}); - ti_inout.outDims.push_back({N, S}); - } - - int &ll = last_l, lp = last_p; - if (state_num == 2) { - builder.TILayer(ti_inout, body, - /* frm_l | frm_p | to_l | to_p | axis | step | start | end */ - {{3, 3, 0, 0, axis, st, bgn, end}, - {3, 4, 1, 3, -1}, - {3, 5, 1, 4, -1}}, - {{3, 6, ll, lp, axis, st, bgn, end}, - {3, 7, 1, 5, -1}, - {3, 8, 1, 6, -1}}, - {{1, 5, 1, 3}, - {1, 6, 1, 4}}); - } else { - builder.TILayer(ti_inout, body, - /* frm_l | frm_p | to_l | to_p | axis | step | start | end */ - {{2, 2, 0, 0, axis, st, bgn, end}, - {2, 3, 1, 3, -1}}, - {{2, 4, ll, lp, axis, st, bgn, end}, - {2, 5, 1, 4, -1}}, - {{1, 4, 1, 3}}); - } -} - -void RNNGen::add_SEQ(CommonTestUtils::V2NetBuilder &builder) { - map seq_attr = basic_cell_attr(); - - string direction = dir == FWD ? "Forward" : - dir == BWD ? "Backward" : - dir == BDR ? "Bidirectional" : - "Unknown"; - - seq_attr["direction"] = direction; - seq_attr["axis"] = std::to_string(axis); - - CommonTestUtils::InOutShapes inout{{id_dim}, - {od_dim}}; - for (int i = 0; i < state_num; i++) { - inout.inDims.push_back({N, S}); - inout.outDims.push_back({N, S}); - } - - if (mode == DYN_SEQ) { - inout.inDims.push_back(seq_l_dim); - } - - auto seq_type = cell_type(cell.type) + "Sequence"; - builder.addLayer(seq_type, "FP32", &seq_attr, inout, wSzB, bSzB); -} - -void RNNGen::add_CELL(CommonTestUtils::V2NetBuilder &builder) { - auto id = Shape{N, D}; - auto od = Shape{N, S}; - - map cell_p = {{"hidden_size", std::to_string(S)}}; - builder.addLayer("LSTMCell", "FP32", &cell_p, - {{id, {N, S}, {N, S}}, - {od, {N, S}, {N, S}}}, - wSzB, bSzB); -} - -CNNNetwork RNNGen::net() { - referee->wFiller(w_blob); - referee->bFiller(b_blob); - - Core ie; - return ie.ReadNetwork(model(), weights); -} - -const std::vector RNNGen::fillers() const { - auto fillers = referee->getDataFillers(); - - if (dir == BWD) - // Reverse seq dim for input and output - fillers[0] = reverse(fillers[0], 1); - - if (axis == 0) - // Swap N and T dims - fillers[0] = permute(fillers[0], {1, 0, 2}); - - // filler for sequence length tensor - if (mode == DYN_SEQ) { - using namespace std::placeholders; - fillers.push_back(std::bind(scalar_filler, _1, SizeVector{N}, T - 1)); - - auto zero_shape = id_dim; - zero_shape[axis] = 1; - Filler zero_filler(std::bind(scalar_filler, _1, zero_shape, 0.0f)); - - fillers[0] = concat(fillers[0], zero_filler, axis); - } - return fillers; -} - -const std::vector RNNGen::checkers() const { - auto checkers = referee->getDataChecker(); - - if (mode == TI_CSTM) - // Negative data blob checker. Customization is negative Power layer at the end of TI body - checkers[0] = negative(checkers[0]); - - if (dir == BWD) - // Reverse seq dim for input and output - checkers[0] = reverse(checkers[0], 1); - - if (axis == 0) - // Swap N and T dims - checkers[0] = permute(checkers[0], {1, 0, 2}); - - if (mode == DYN_SEQ) { - using namespace std::placeholders; - - auto zero_shape = od_dim; - zero_shape[axis] = 1; - Checker zero_checker(std::bind(scalar_checker, _1, zero_shape, 0.0f)); - - checkers[0] = concat(checkers[0], zero_checker, axis); - } - - return checkers; -} - diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_gen.hpp b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_gen.hpp deleted file mode 100644 index f692b18d01a..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_gen.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include "xml_net_builder.hpp" -#include "rnn_referee.hpp" -#include - -#include -#include - -enum Mode { - CELL, /**< single LSTMCell layer */ - SEQ, /**< single LSTMSeq layer */ - DYN_SEQ, /**< single LSTMSeq layer with seq length input*/ - TI, /**< TI layer with LSTM body */ - TI_CSTM /**< TI layer with LSTM plus negative at the body */ -}; - -enum Direction { - FWD, /**< Forward. With stride 1 */ - BWD, /**< Backward. WIth stride -1 */ - BDR /**< Bidirectional. With stride 1 and -1 */ -}; - -/** - * Topology generator for some RNN specific cases - */ -class RNNGen { -public: - /** Sequence topology */ - RNNGen(size_t batch, size_t seq, CellDesc cell, Mode mode, Direction dir, int axis); - - const std::vector fillers() const; - const std::vector checkers() const; - - InferenceEngine::CNNNetwork net(); - -private: - const size_t D = 10; // Data size - const size_t S = 5; // State size - const size_t G = 4; // Number of gate - - const size_t N; // Batch - const size_t T; // Sequence - const int axis; // Axis of sequence - - const Mode mode; - const CellDesc cell; - const Direction dir; - const bool neg; - - size_t state_num = 0; - - size_t wSzB = 0; - size_t bSzB = 0; - - InferenceEngine::SizeVector seq_l_dim, st_dim, id_dim, od_dim; - - InferenceEngine::TBlob::Ptr weights; - InferenceEngine::Blob::Ptr w_blob, b_blob; - - std::shared_ptr referee; - -private: - std::string model(); - - void add_TI(CommonTestUtils::V2NetBuilder &builder); - void add_SEQ(CommonTestUtils::V2NetBuilder &builder); - void add_CELL(CommonTestUtils::V2NetBuilder &builder); - - std::map basic_cell_attr(); -}; diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_referee.cpp b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_referee.cpp deleted file mode 100644 index 878a64ac01e..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_referee.cpp +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include "rnn_referee.hpp" - -#include -#include -#include - -using namespace InferenceEngine; -using namespace std::placeholders; -using std::vector; - -class RNN_ReferBase : public RNN_Referee { -protected: - RNN_ReferBase(float clip, size_t D, size_t S, size_t G, size_t Gb, size_t ST_N) - : clip(clip), D(D), S(S), G(G), Gb(Gb), state_num(ST_N) {} - - const size_t D, S, G, Gb; - const size_t state_num; - const float clip; - - vector W, B; - - vector _d_filler; - vector _d_checker; - - const vector& getDataFillers() override { return _d_filler; } - const vector& getDataChecker() override { return _d_checker; } - size_t wSize() override { return G*S*(S+D); } - size_t bSize() override { return Gb*S; } - size_t stateNum() override { return state_num; } - - using Act = std::function; - - static float _clip (const float x, const float clip) { - return std::min(std::max(x, -clip), clip); - } - - static Act clip_before(Act act, const float clip) { - return [=] (const float x) { - return act(_clip(x, clip)); - }; - } - - Act act(ActivationDesc act) { - float alpha = act.alpha; - Act res; - if (act.alg == "sigmoid") - res = [=] (const float x) { return 1 / (1 + std::exp(-x)); }; - else if (act.alg == "tanh") - res = [=] (const float x) { return std::tanh(x); }; - else if (act.alg == "relu") - res = [=] (const float x) { return (x > 0) ? x : alpha*x; }; - else - IE_THROW() << "Unknown activation type " << act.alg; - return res; - } - - -public: - void wFiller(Blob::Ptr blob) override { - IE_ASSERT(blob->size() == wSize()); - auto ptr = blob->buffer().as(); - - for (int g = 0; g < G; g++) - for (int s = 0; s < S; s++) { - for (int i = 0; i < D; i++) *ptr++ = W[g] / D; - for (int i = 0; i < S; i++) *ptr++ = W[g] / S; - } - } - - void bFiller(Blob::Ptr blob) override { - IE_ASSERT(blob->size() == bSize()); - auto ptr = blob->buffer().as(); - - for (int g = 0; g < Gb; g++) - for (int s = 0; s < S; s++) *ptr++ = B[g]; - } -}; - -#define Vals(_name) std::vector _name(T+1) - -class LSTMCell_Refer : public RNN_ReferBase { -public: - LSTMCell_Refer(CellDesc cell, size_t N, size_t T, size_t D, size_t S) : RNN_ReferBase(cell.clip, D, S, 4, 4, 2) { - // Some random values in range [0,1] - const float H0 = 0.3, C0 = 0.77; - - const float Wf = 0.1, Bf = 0.35; - const float Wi = 0.2, Bi = 0.25; - const float Wc = 0.5, Bc = 0.15; - const float Wo = 0.7, Bo = 0.05; - - auto _f = act(cell.acts[0]); - auto _g = act(cell.acts[1]); - auto _h = act(cell.acts[2]); - - if (clip > 0.0f) { - _f = clip_before(_f, clip); - _g = clip_before(_g, clip); - } - - Vals(f); Vals(i); Vals(c); Vals(o); - Vals(X); Vals(H); Vals(C); - - H[0] = H0; - C[0] = C0; - - for (int t = 1; t < T+1; t++) { - X[t] = t; - f[t] = _f(Wf*(H[t-1] + X[t]) + Bf); - i[t] = _f(Wi*(H[t-1] + X[t]) + Bi); - c[t] = _g(Wc*(H[t-1] + X[t]) + Bc); - o[t] = _f(Wo*(H[t-1] + X[t]) + Bo); - - C[t] = f[t] * C[t-1] + i[t] * c[t]; - H[t] = o[t] * _h(C[t]); - } - - W = {Wf, Wi, Wc, Wo}; - B = {Bf, Bi, Bc, Bo}; - - X.erase(X.begin()); // remove first element (unused zero element) - H.erase(H.begin()); - C.erase(C.begin()); - - _d_filler.resize(3); - _d_filler[0] = std::bind(vector_filler, _1, SizeVector {N,T,D}, X, 1); - _d_filler[1] = std::bind(scalar_filler, _1, SizeVector {N,S}, H0); - _d_filler[2] = std::bind(scalar_filler, _1, SizeVector {N,S}, C0); - - _d_checker.resize(3); - _d_checker[0] = std::bind(vector_checker, _1, SizeVector {N,T,S}, H, 1); - _d_checker[1] = std::bind(scalar_checker, _1, SizeVector {N,S} , H[T-1]); - _d_checker[2] = std::bind(scalar_checker, _1, SizeVector {N,S} , C[T-1]); - } -}; - -class GRUCell_Refer : public RNN_ReferBase { -public: - GRUCell_Refer(CellDesc cell, size_t N, size_t T, size_t D, size_t S) : RNN_ReferBase(cell.clip, D, S, 3, 3, 1) { - // Some random values in range [0,1] - const float H0 = 0.3; - - const float Wz = 0.1, Bz = 0.35; - const float Wr = 0.2, Br = 0.25; - const float Wh = 0.5, Bh = 0.15; - - auto _f = act(cell.acts[0]); - auto _g = act(cell.acts[1]); - - if (clip > 0.0f) { - _f = clip_before(_f, clip); - _g = clip_before(_g, clip); - } - - Vals(z); Vals(r); Vals(h); - Vals(X); Vals(H); - - H[0] = H0; - - for (int t = 1; t < T+1; t++) { - X[t] = t; - z[t] = _f(Wz*(H[t-1] + X[t]) + Bz); - r[t] = _f(Wr*(H[t-1] + X[t]) + Br); - h[t] = _g(Wh*(H[t-1]*r[t] + X[t]) + Bh); - H[t] = (1 - z[t])*h[t] + z[t]*H[t-1]; - } - - W = {Wz, Wr, Wh}; - B = {Bz, Br, Bh}; - - X.erase(X.begin()); - H.erase(H.begin()); - - _d_filler.resize(2); - _d_filler[0] = std::bind(vector_filler, _1, SizeVector {N,T,D}, X, 1); - _d_filler[1] = std::bind(scalar_filler, _1, SizeVector {N,S} , H0); - - _d_checker.resize(2); - _d_checker[0] = std::bind(vector_checker, _1, SizeVector {N,T,S}, H, 1); - _d_checker[1] = std::bind(scalar_checker, _1, SizeVector {N,S} , H[T-1]); - } -}; - - -class GRUlbrCell_Refer : public RNN_ReferBase { -public: - GRUlbrCell_Refer(CellDesc cell, size_t N, size_t T, size_t D, size_t S) : RNN_ReferBase(cell.clip, D, S, 3, 4, 1) { - // Some random values in range [0,1] - const float H0 = 0.3; - - const float Wz = 0.1, Bz = 0.35; - const float Wr = 0.2, Br = 0.25; - const float Wh = 0.5, Bh = 0.15, Bhr = 0.33; - - auto _f = act(cell.acts[0]); - auto _g = act(cell.acts[1]); - - if (clip > 0.0f) { - _f = clip_before(_f, clip); - _g = clip_before(_g, clip); - } - - Vals(z); Vals(r); Vals(h); - Vals(X); Vals(H); - - H[0] = H0; - - for (int t = 1; t < T+1; t++) { - X[t] = 0.1 * t; - z[t] = _f(Wz*(H[t-1] + X[t]) + Bz); - r[t] = _f(Wr*(H[t-1] + X[t]) + Br); - h[t] = _g(Wh*X[t] + r[t]*(Wh*H[t-1] + Bhr) + Bh); - H[t] = (1 - z[t])*h[t] + z[t]*H[t-1]; - } - - W = {Wz, Wr, Wh}; - B = {Bz, Br, Bh, Bhr}; - - X.erase(X.begin()); - H.erase(H.begin()); - - _d_filler.resize(2); - _d_filler[0] = std::bind(vector_filler, _1, SizeVector {N,T,D}, X, 1); - _d_filler[1] = std::bind(scalar_filler, _1, SizeVector {N,S} , H0); - - _d_checker.resize(2); - _d_checker[0] = std::bind(vector_checker, _1, SizeVector {N,T,S}, H, 1); - _d_checker[1] = std::bind(scalar_checker, _1, SizeVector {N,S} , H[T-1]); - } -}; - -class RNNCell_Refer : public RNN_ReferBase { -public: - RNNCell_Refer(CellDesc cell, size_t N, size_t T, size_t D, size_t S) : RNN_ReferBase(cell.clip, D, S, 1, 1, 1) { - // Some random values in range [0,1] - const float H0 = 0.3; - - const float Wh = 0.5, Bh = 0.15; - - auto _f = act(cell.acts[0]); - if (clip > 0.0f) - _f = clip_before(_f, clip); - - Vals(X); Vals(H); - - H[0] = H0; - - for (int t = 1; t < T+1; t++) { - X[t] = t; - H[t] = _f(Wh*(H[t-1] + X[t]) + Bh); - } - - W = {Wh}; - B = {Bh}; - - X.erase(X.begin()); - H.erase(H.begin()); - - _d_filler.resize(2); - _d_filler[0] = std::bind(vector_filler, _1, SizeVector {N,T,D}, X, 1); - _d_filler[1] = std::bind(scalar_filler, _1, SizeVector {N,S} , H0); - - _d_checker.resize(2); - _d_checker[0] = std::bind(vector_checker, _1, SizeVector {N,T,S}, H, 1); - _d_checker[1] = std::bind(scalar_checker, _1, SizeVector {N,S} , H[T-1]); - } -}; - -std::shared_ptr RNN_Referee::create_referee(CellDesc cell, size_t N, size_t T, size_t D, size_t S) { - std::shared_ptr res; - switch (cell.type) { - case LSTM: - res = std::shared_ptr(new LSTMCell_Refer(cell, N, T, D, S)); - break; - case GRU: - res = std::shared_ptr(new GRUCell_Refer(cell, N, T, D, S)); - break; - case GRU_lbr: - res = std::shared_ptr(new GRUlbrCell_Refer(cell, N, T, D, S)); - break; - case RNN: - res = std::shared_ptr(new RNNCell_Refer(cell, N, T, D, S)); - break; - } - return res; -}; diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_referee.hpp b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_referee.hpp deleted file mode 100644 index 2c934144643..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_referee.hpp +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include "ie_blob.h" -#include "rnn_util.hpp" -#include - -enum Cell { - LSTM, /**< Vanilla LSTMCell */ - GRU, /**< Vanilla GRUCell */ - RNN, /**< Vanilla RNNCell */ - GRU_lbr /**< Vanilla GRUCell */ -}; - -/** - * Descriptor of activation function - * type : [sigm, tanh, relu, ...] - * alpha, beta : optional - */ -struct ActivationDesc { - std::string alg; - float alpha; - float beta; -}; -using ActivationSet = std::vector; - -/** - * Descriptor of general RNN cell - */ -struct CellDesc { - Cell type; /**< Type of RNN cell */ - ActivationSet acts; /**< Activations aplgorithm */ - float clip; /**< Clip value. 0 - no clipping */ -}; - -/** - * Ref scoring for some RNN cells - * Provide weight filler and in_data filler and out_data checker - */ -class RNN_Referee { -public: - static std::shared_ptr create_referee(CellDesc cell, size_t N, size_t T, size_t D, size_t S); - virtual ~RNN_Referee() = default; - - virtual void wFiller(InferenceEngine::Blob::Ptr) = 0; - virtual void bFiller(InferenceEngine::Blob::Ptr) = 0; - - virtual size_t wSize() = 0; - virtual size_t bSize() = 0; - - virtual size_t stateNum() = 0; - - virtual const std::vector& getDataFillers() = 0; - virtual const std::vector& getDataChecker() = 0; -}; diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_seq_test.hpp b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_seq_test.hpp deleted file mode 100644 index 804f39ce26d..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_seq_test.hpp +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include "rnn_gen.hpp" -#include "plg_test.hpp" - -#include -#include -#include - -using namespace ::testing; -using namespace InferenceEngine; -using std::map; -using std::pair; -using std::vector; -using std::string; - -enum Reshape { - RESH_NO = 0, /**< No reshape step */ - RESH_B = 1, /**< Reshape for batch dim */ - RESH_T = 2, /**< Reshape for time dim */ - RESH_BT = 3 /**< Reshape for both batch and time dims */ -}; - -using rnn_param = std::tuple< - CellDesc, /**< cell - Descriptor of RNN cell */ - float, /**< clip - Clip value */ - Direction, /**< fwd - Direction */ - Mode, /**< mode - Modes of LSTM representation */ - size_t, /**< N - Batch size */ - size_t, /**< T - Sequence length */ - size_t, /**< axis - Dimension with T */ - Reshape /**< shape - Apply reshape. +1 to original dim */ ->; - -const Named test_name( [] (const rnn_param &p) { - CellDesc _cell; Direction _dir; Mode _mode; Reshape _resh; - size_t _N, _S, _axis; - float _clip; - - std::tie(_cell,_clip,_dir,_mode,_N,_S,_axis,_resh) = p; - - string res = _cell.type == LSTM ? "LSTM_" : _cell.type == GRU ? "GRU__" : "RNN__"; - for (auto &act : _cell.acts) res += act.alg[0]; - - res += _dir == FWD ? "_FWD" : _dir == BWD ? "_BWD" : _dir == BDR ? "_BDR" : "_XXX"; - res += _mode == SEQ ? "_SEQ" : _mode == TI ? "__TI" : _mode == TI_CSTM ? "_TIX" : "_XXX"; - res += (_clip == 0.0f) ? "_c0" : "_cX"; - res += "_b" + std::to_string(_N); - res += "_s" + std::to_string(_S); - res += "_axis" + std::to_string(_axis); - - res += _resh == RESH_NO ? "_reshNO" : - _resh == RESH_B ? "__reshB" : - _resh == RESH_T ? "__reshT" : - _resh == RESH_BT ? "_reshBT" : "_X"; - return res; -}); - -using RNNSeqTest = PlgTest; - -// disabled due to transition to ngraph transformation -// DO NOT DELETE, part of the functionality is still needed -TEST_P(RNNSeqTest, DISABLED_SingleRNN) { - auto p = param(); - - auto cell = std::get<0>(p); - auto clip = std::get<1>(p); - auto dir = std::get<2>(p); - auto mode = std::get<3>(p); - auto N = std::get<4>(p); - auto T = std::get<5>(p); - auto axis = std::get<6>(p); - auto resh = std::get<7>(p); - - if (device_name == "GPU" && cell.type != LSTM) - GTEST_SKIP(); - - cell.clip = clip; - - /************ Test Body *****************************/ - - RNNGen topology(N, T, cell, mode , dir, axis); - auto net = topology.net(); - auto fillers = topology.fillers(); - auto checkers = topology.checkers(); - - // Reshape if requested - if (resh != RESH_NO) { - const bool resh_b = resh & RESH_B; - const bool resh_t = resh & RESH_T; - - auto shapes = net.getInputShapes(); - for (auto &pair : shapes) { - // Blobs with data - if (pair.second.size() == 3) { - if (resh_b) pair.second[(axis+1)%2]++; - if (resh_t) pair.second[axis]++; - } - // Blobs with state or Seq Len - if (pair.second.size() == 1 || pair.second.size() == 2) { - if (resh_b) pair.second[0]++; - } - } - net.reshape(shapes); - - // Also need new fillers/checkers for new shapes - RNNGen resh_topology(resh_b ? N+1 : N, resh_t ? T+1 : T, cell, mode , dir, axis); - fillers = resh_topology.fillers(); - checkers = resh_topology.checkers(); - } - - Core ie; - auto execNet = ie.LoadNetwork(net, device_name); - auto req = execNet.CreateInferRequest(); - - ASSERT_TRUE(net.getInputsInfo().size() == fillers.size()); - ASSERT_TRUE(net.getOutputsInfo().size() == checkers.size()); - - int i = 0; - for (auto &info : net.getInputsInfo()) - fillers[i++](req.GetBlob(info.first)); - - req.Infer(); - - i = 0; - for (auto &info : net.getOutputsInfo()) - EXPECT_TRUE(checkers[i++](req.GetBlob(info.first))) << "Error with #" << i << " output"; -} - -const std::vector cells = { - /** LSTM modifications */ - {LSTM, {{"sigmoid",0,0}, {"tanh",0,0}, {"tanh",0,0}} }, // default - {LSTM, {{"tanh",0,0}, {"sigmoid",0,0}, {"relu",0,0}} }, - /** GRU modifications */ - {GRU , {{"sigmoid",0,0}, {"tanh",0,0}} }, // default - {GRU , {{"tanh",0,0}, {"relu",0,0}} }, - /** GRU linear_before_reset modifications */ - {GRU_lbr , {{"sigmoid",0,0}, {"tanh",0,0}} }, // default - {GRU_lbr , {{"tanh",0,0}, {"relu",0,0}} }, - /** RNN modifications */ - {RNN , {{"tanh",0,0}} }, // default - {RNN , {{"sigmoid",0,0}} }, - {RNN , {{"relu",0,0}} }, -}; - -#if 0 -// All combination of next parameters -const auto workload = Combine( - ValuesIn(cells), // Cell desc - Values(0.0f, 0.7f), // Clip arg - Values(FWD, BWD), // Direction - Values(SEQ, DYN_SEQ, // Representation mode - TI, TI_CSTM), // - Values(1, 3), // Batch - Values(3), // Sequence size - Values(0, 1), // Axis of sequence - Values(RESH_NO, RESH_B, // Reshape mode for batch, sequence or both - RESH_T, RESH_BT) // -); -#else -// All combination of next parameters ( small subset for fast CI testing) -const auto workload = Combine( - ValuesIn(cells.begin(), // Cell desc (only first 5) - cells.begin()+7), // - Values(0.0f, 0.7f), // Clip arg - Values(FWD, BWD), // Direction - Values(SEQ, TI), // Representation mode - Values(2), // Batch - Values(3), // Sequence size - Values(0, 1), // Axis of sequence - Values(RESH_NO /*, RESH_B TODO: migrate to ngraph reshape */) // Reshape mode for batch, sequence or both -); -#endif - -// All combination of next parameters ( small subset for fast CI testing) -const auto dyn_seq_workload = Combine( - ValuesIn(std::vector {cells[0], cells[2], cells[4], cells[6]}), - Values(0.0f), // Clip arg - Values(FWD, BWD, BDR), // Direction - Values(DYN_SEQ), // Representation mode - Values(1, 8), // Batch - Values(3, 100), // Sequence size - Values(0, 1), // Axis of sequence - Values(RESH_NO /*, RESH_B TODO: migrate to ngraph reshape */) // Reshape mode for batch, sequence or both -); diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_util.cpp b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_util.cpp deleted file mode 100644 index 3daed5b5f58..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_util.cpp +++ /dev/null @@ -1,307 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include "rnn_util.hpp" - -#include -#include - -using namespace InferenceEngine; - -#define T_LOOP_RANK 5 - -/** - * @brief Iterate through tensor values and do action for each - * elements. - * - * Signature of action is : (data_t &x, int *i) -> void - * x - is reference on tensor element - * i - array of logical indexes - * - * @tparam T action functor type. Generally is lambda - * @param blob to iterate through - * @param act functor to apply for each value in tensor - */ -template -void T_LOOP(Blob::Ptr &blob, const T &act) { - - const auto &td = blob->getTensorDesc(); - const auto &dims = td.getDims(); - - const auto &blk_d = td.getBlockingDesc(); - const auto &strides = blk_d.getStrides(); - - int D[] = {1, 1, 1, 1, 1}; - std::copy(dims.begin(), dims.end(), std::end(D) - dims.size() ); - - int i[] = {0, 0, 0, 0, 0}; - int &i0 = i[0], &i1 = i[1], &i2 = i[2], &i3 = i[3], &i4 = i[4]; - - int s[] = {0, 0, 0, 0, 0}; - std::copy(strides.begin(), strides.end(), std::end(s) - dims.size()); \ - int &s0 = s[0], &s1 = s[1], &s2 = s[2], &s3 = s[3], &s4 = s[4]; - - size_t off_ = blk_d.getOffsetPadding(); - - auto *ptr = blob->buffer().as(); - - for (i0 = 0; i0 < D[0]; i0++) { auto off0 = off_ + i0 * s0; - for (i1 = 0; i1 < D[1]; i1++) { auto off1 = off0 + i1 * s1; - for (i2 = 0; i2 < D[2]; i2++) { auto off2 = off1 + i2 * s2; - for (i3 = 0; i3 < D[3]; i3++) { auto off3 = off2 + i3 * s3; - for (i4 = 0; i4 < D[4]; i4++) { auto off4 = off3 + i4 * s4; auto &off = off4; - act(ptr[off], i); - }}}}} -} - -Checker negative(Checker checker) { - return [=] (Blob::Ptr blob) -> bool { - auto dims = blob->getTensorDesc().getDims(); - auto layout = blob->getTensorDesc().getLayout(); - auto new_blob = make_shared_blob({Precision::FP32, dims, layout}); - new_blob->allocate(); - - float *new_blob_ptr = new_blob->buffer().as(); - float *blob_ptr = blob->buffer().as(); - int size = blob->size(); - for (int i = 0; i < size; i++) - *new_blob_ptr++ = -(*blob_ptr++); - - return checker(new_blob); - }; -} - -static void copy_with_reverse(Blob::Ptr &src, Blob::Ptr &dst, int axis) { - IE_ASSERT(src->getTensorDesc().getDims() == dst->getTensorDesc().getDims()); - - const auto &td = src->getTensorDesc(); - const auto &dims = td.getDims(); - - const auto &blk_d = td.getBlockingDesc(); - const auto &strides = blk_d.getStrides(); - - int D[] = {1, 1, 1, 1, 1}; - std::copy(dims.begin(), dims.end(), std::end(D) - dims.size() ); - - int s[] = {0, 0, 0, 0, 0}; - std::copy(strides.begin(), strides.end(), std::end(s) - dims.size()); \ - int &s0 = s[0], &s1 = s[1], &s2 = s[2], &s3 = s[3], &s4 = s[4]; - - size_t off_ = blk_d.getOffsetPadding(); - - axis += T_LOOP_RANK - dims.size(); - - // to iterate through tensor with reversed one dimension we need to - // make stride negative and update offset. - int reverse_str = s[axis]; - s[axis] = -reverse_str; - off_ += (D[axis] - 1)*reverse_str; - - auto src_off = [=] (const int *i) { - return off_ + i[0]*s0 + i[1]*s1 + i[2]*s2 + i[3]*s3 + i[4]*s4; - }; - - const auto *src_ptr = src->buffer().as(); - - T_LOOP( dst, [&](float &x, const int *i) { - x = src_ptr[ src_off(i) ]; - }); -} - -/** Make view blob (ROI) on parent blob. Doesn't hold parent blob */ -static Blob::Ptr make_view(const Blob::Ptr &src, const SizeVector dims, const SizeVector offsets) { - auto src_dims = src->getTensorDesc().getDims(); - IE_ASSERT(dims.size() == src_dims.size()); - IE_ASSERT(dims.size() == offsets.size()); - - for (size_t i = 0; i < dims.size(); i++) - IE_ASSERT(dims[i] + offsets[i] <= src_dims[i]); - - auto desc = src->getTensorDesc(); - auto b_desc = desc.getBlockingDesc(); - - // move T desc to specified offset - const auto new_off = desc.offset(offsets); - TensorDesc new_desc { desc.getPrecision(), dims, - BlockingDesc { dims, - b_desc.getOrder(), new_off, - b_desc.getOffsetPaddingToData(), - b_desc.getStrides() } - }; - - // TODO: Only FP32 supported here - IE_ASSERT(desc.getPrecision() == Precision::FP32) << "Current limitation. Only FP32 is supported"; - return make_shared_blob(new_desc, src->buffer()); -} - -Checker reverse(const Checker checker, int axis) { - return [=] (Blob::Ptr blob) -> bool { - auto dims = blob->getTensorDesc().getDims(); - auto layout = blob->getTensorDesc().getLayout(); - Blob::Ptr new_blob = make_shared_blob({Precision::FP32, dims, layout}); - new_blob->allocate(); - - copy_with_reverse(blob, new_blob, axis); - return checker(new_blob); - }; -} - -Filler reverse(const Filler filler, int axis) { - return [=] (Blob::Ptr blob) { - auto dims = blob->getTensorDesc().getDims(); - auto layout = blob->getTensorDesc().getLayout(); - Blob::Ptr new_blob = make_shared_blob({Precision::FP32, dims, layout}); - new_blob->allocate(); - - filler(new_blob); - copy_with_reverse(new_blob, blob, axis); - }; -} - -static void copy_with_permute(Blob::Ptr &src, Blob::Ptr &dst, const std::vector order) { - IE_ASSERT(order == std::vector({1,0,2})); - IE_ASSERT(src->getTensorDesc().getDims().size() == order.size()); - - SizeVector prm_dims, dims = src->getTensorDesc().getDims(); - for (int i : order) prm_dims.push_back(dims[i]); - - IE_ASSERT(prm_dims == dst->getTensorDesc().getDims()); - - size_t stride_2 = 1; - size_t stride_1 = prm_dims[2] * stride_2; - size_t stride_0 = prm_dims[1] * stride_1; - - float *src_ptr = src->buffer().as(); - float *dst_ptr = dst->buffer().as(); - - for (int i0 = 0; i0 < dims[0]; i0++) - for (int i1 = 0; i1 < dims[1]; i1++) - for (int i2 = 0; i2 < dims[2]; i2++) - dst_ptr[i1*stride_0 + i0*stride_1 + i2*stride_2] = *src_ptr++; -} - -Filler permute(const Filler filler, const std::vector order) { - return [=] (Blob::Ptr blob) { - SizeVector perm_dims, dims = blob->getTensorDesc().getDims(); - for (int i : order) perm_dims.push_back(dims[i]); - - Blob::Ptr new_blob = make_shared_blob({Precision::FP32, perm_dims, blob->getTensorDesc().getLayout()}); - new_blob->allocate(); - - filler(new_blob); - copy_with_permute(new_blob, blob, order); - }; -} - -Checker permute(const Checker checker, const std::vector order) { - return [=] (Blob::Ptr blob) -> bool { - SizeVector perm_dims, dims = blob->getTensorDesc().getDims(); - for (int i : order) perm_dims.push_back(dims[i]); - - Blob::Ptr new_blob = make_shared_blob({Precision::FP32, perm_dims, blob->getTensorDesc().getLayout()}); - new_blob->allocate(); - - copy_with_permute(blob, new_blob, order); - return checker(new_blob); - }; -} - -Checker concat(const Checker checker1, const Checker checker2, int axis) { - return [=] (Blob::Ptr blob) -> bool { - auto dims = blob->getTensorDesc().getDims(); - - const size_t split_size = 1; // counting from end - - SizeVector dims1(dims); - SizeVector offs1(dims.size(), 0); - dims1[axis] -= split_size; - - SizeVector dims2 = dims; - SizeVector offs2(dims.size(), 0); - dims2[axis] = split_size; - offs2[axis] = dims1[axis]; - - auto blob1 = make_view(blob, dims1, offs1); - auto blob2 = make_view(blob, dims2, offs2); - - return checker1(blob1) && checker2(blob2); - }; -} - -Filler concat(const Filler filler1, const Filler filler2, int axis) { - return [=] (Blob::Ptr blob) { - auto dims = blob->getTensorDesc().getDims(); - - const size_t split_size = 1; // counting from end - - SizeVector dims1(dims); - SizeVector offs1(dims.size(), 0); - dims1[axis] -= split_size; - - SizeVector dims2 = dims; - SizeVector offs2(dims.size(), 0); - dims2[axis] = split_size; - offs2[axis] = dims1[axis]; - - auto blob1 = make_view(blob, dims1, offs1); - auto blob2 = make_view(blob, dims2, offs2); - - filler1(blob1); - filler2(blob2); - }; -} - -static inline bool cmp_near(float res, float ref) { - constexpr float eps = 1e-4; - auto ref_abs = std::abs(ref); - if (ref_abs > eps) - return std::abs(res-ref)/ref_abs < eps; - else - return std::abs(res-ref) < eps; -} - -bool scalar_checker(Blob::Ptr blob, SizeVector dims, float val) { - IE_ASSERT(blob->getTensorDesc().getDims() == dims); - - bool res = true; - T_LOOP(blob, [&](float x, int *i) { - if (!cmp_near(x, val)) - res = false; - }); - return res; -} - -bool vector_checker(Blob::Ptr blob, SizeVector dims, std::vector val, int axis) { - IE_ASSERT(blob->getTensorDesc().getDims() == dims); - IE_ASSERT(dims[axis] == val.size()); - - axis += T_LOOP_RANK - dims.size(); - bool res = true; - - T_LOOP( blob, [&](float &x, int *i) { - if (!cmp_near(x, val[ i[axis] ])) - res = false; - }); - - return res; -} - -void scalar_filler (Blob::Ptr blob, SizeVector dims, float val) { - IE_ASSERT(blob->getTensorDesc().getDims() == dims); - - T_LOOP( blob, [&](float &x, int *i) { - x = val; - }); -} - -void vector_filler (Blob::Ptr blob, SizeVector dims, std::vector val, int axis) { - IE_ASSERT(blob->getTensorDesc().getDims() == dims); - IE_ASSERT(dims[axis] == val.size()); - - axis += T_LOOP_RANK - dims.size(); - - T_LOOP( blob, [&](float &x, int *i) { - x = val[ i[axis] ]; - }); -} diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_util.hpp b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_util.hpp deleted file mode 100644 index 1613808b66b..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/lstm/rnn_util.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include "ie_blob.h" - -/** - * Checkers section (Blob::Ptr) -> bool - */ -using Filler = std::function; - -/** Fillers conversion */ -Filler reverse(const Filler checker, int axis); -Filler permute(const Filler filler, const std::vector order); -Filler concat(const Filler filler1, const Filler filler2, int axis); - -/** Some helpful fillers. To use with std::bind() */ -void scalar_filler(InferenceEngine::Blob::Ptr blob, InferenceEngine::SizeVector dims, float val); -void vector_filler(InferenceEngine::Blob::Ptr blob, InferenceEngine::SizeVector dims, std::vector val, int axis); - -/** - * Filler section (Blob::Ptr) -> void - */ -using Checker = std::function; - -/** Checker conversion */ -Checker negative(const Checker checker); -Checker reverse(const Checker checker, int axis); -Checker permute(const Checker checker, const std::vector order); -Checker concat(const Checker checker1, const Checker checker2, int axis); - -/** Some helpful checkers. To use with std::bind() */ -bool scalar_checker (InferenceEngine::Blob::Ptr blob, InferenceEngine::SizeVector dims, float val); -bool vector_checker (InferenceEngine::Blob::Ptr blob, InferenceEngine::SizeVector dims, std::vector val, int axis); diff --git a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/precomp.hpp b/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/precomp.hpp deleted file mode 100644 index dfcf51fe79f..00000000000 --- a/src/plugins/intel_gna/tests/deprecated/functional/shared_tests/precomp.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include diff --git a/src/plugins/intel_gna/tests/deprecated/helpers/CMakeLists.txt b/src/plugins/intel_gna/tests/deprecated/helpers/CMakeLists.txt index 93155838a37..1cc11ac2a02 100644 --- a/src/plugins/intel_gna/tests/deprecated/helpers/CMakeLists.txt +++ b/src/plugins/intel_gna/tests/deprecated/helpers/CMakeLists.txt @@ -21,6 +21,7 @@ function(add_helpers target_name) target_include_directories(${target_name} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" + $ $ $ $ diff --git a/src/plugins/intel_gna/tests/deprecated/helpers/test_model_path.cpp b/src/plugins/intel_gna/tests/deprecated/helpers/test_model_path.cpp index f12fa7be996..fe183cae6e7 100644 --- a/src/plugins/intel_gna/tests/deprecated/helpers/test_model_path.cpp +++ b/src/plugins/intel_gna/tests/deprecated/helpers/test_model_path.cpp @@ -6,7 +6,7 @@ // Created by user on 19.10.18. // -#include "test_model_repo.hpp" +#include "helpers/test_model_repo.hpp" #include "test_model_path.hpp" #ifndef _WIN32 @@ -39,7 +39,7 @@ static std::string getDirname(std::string filePath) { #endif static std::string get_models_path() { - const char* models_path = TestDataHelpers::getModelPathNonFatal(); + const char* models_path = TestDataHelpers::get_model_path_non_fatal(); if (nullptr == models_path) { ::testing::AssertionFailure() << "MODELS_PATH not defined"; diff --git a/src/plugins/intel_gna/tests/deprecated/helpers/tests_common.hpp b/src/plugins/intel_gna/tests/deprecated/helpers/tests_common.hpp index 1ed74fb7c1f..ca003407d4e 100644 --- a/src/plugins/intel_gna/tests/deprecated/helpers/tests_common.hpp +++ b/src/plugins/intel_gna/tests/deprecated/helpers/tests_common.hpp @@ -21,7 +21,7 @@ #include #include -#include "test_model_repo.hpp" +#include "helpers/test_model_repo.hpp" #include "test_model_path.hpp" #include #include diff --git a/src/plugins/intel_gna/tests/functional/CMakeLists.txt b/src/plugins/intel_gna/tests/functional/CMakeLists.txt index 696fd1e18cf..da06dc85ee6 100644 --- a/src/plugins/intel_gna/tests/functional/CMakeLists.txt +++ b/src/plugins/intel_gna/tests/functional/CMakeLists.txt @@ -11,6 +11,8 @@ set(TARGET_NAME ov_gna_func_tests) addIeTargetTest( NAME ${TARGET_NAME} ROOT ${CMAKE_CURRENT_SOURCE_DIR} + INCLUDES + ${CMAKE_CURRENT_SOURCE_DIR} DEPENDENCIES openvino_intel_gna_plugin LINK_LIBRARIES @@ -19,3 +21,11 @@ addIeTargetTest( LABELS GNA ) + +target_compile_definitions(${TARGET_NAME} + PUBLIC ${ARGV} + GNA_DATA_PATH=\"${CMAKE_CURRENT_SOURCE_DIR}/data\") + +if (ENABLE_DATA) + add_dependencies(${TARGET_NAME} data) +endif() \ No newline at end of file diff --git a/src/plugins/intel_gna/tests/functional/Import_export_tests/backward_compatibility/backward_compatibility.cpp b/src/plugins/intel_gna/tests/functional/Import_export_tests/backward_compatibility/backward_compatibility.cpp new file mode 100644 index 00000000000..5c1c76d192e --- /dev/null +++ b/src/plugins/intel_gna/tests/functional/Import_export_tests/backward_compatibility/backward_compatibility.cpp @@ -0,0 +1,228 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// +#include + +#include +#include +#include + +#include "helpers/test_model_repo.hpp" +#include "ngraph_functions/builders.hpp" +#include "openvino/core/model.hpp" +#include "openvino/core/shape.hpp" +#include "openvino/core/type.hpp" +#include "openvino/opsets/opset10.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" + +using namespace ov::opset10; + +typedef std::tuple, // Export Configuration + std::map // Import Configuration + > + exportImportNetworkParams; + +class BackwardCompatibility : public testing::WithParamInterface, + virtual public LayerTestsUtils::LayerTestsCommon { +public: + static std::string get_test_case_name(testing::TestParamInfo obj) { + ov::element::Type input_prc; + std::string target_device; + std::map conf_export; + std::map conf_import; + std::string name_export_model; + std::tie(input_prc, target_device, name_export_model, conf_export, conf_import) = obj.param; + + std::ostringstream result; + result << "input_prc=" << input_prc << "_"; + result << "target_device=" << target_device << "_"; + result << "name_export_model=" << name_export_model << "_"; + for (auto const& conf_item : conf_export) { + result << "_exportConfigItem=" << conf_item.first << "_" << conf_item.second; + } + for (auto const& conf_item : conf_import) { + result << "_importConfigItem=" << conf_item.first << "_" << conf_item.second; + } + return result.str(); + } + + void Run() override { + SKIP_IF_CURRENT_TEST_IS_DISABLED() + functionRefs = ngraph::clone_function(*function); + // load export configuration and save outputs + configuration.insert(m_conf_export.begin(), m_conf_export.end()); + LoadNetwork(); + GenerateInputs(); + Infer(); + auto outputs = GetOutputs(); + + auto output_refs = CalculateRefs(); + Compare(output_refs, outputs); + + for (auto const& config_item : m_conf_import) { + configuration[config_item.first] = config_item.second; + } + + const auto compiled_network = executableNetwork; + auto model = TestDataHelpers::get_data_path() + "/exported_models/" + m_export_model_name; + + const auto imported_network = core->ImportNetwork(model, targetDevice, configuration); + + GenerateInputs(); + Infer(); + + ASSERT_EQ(imported_network.GetInputsInfo().size(), compiled_network.GetInputsInfo().size()); + ASSERT_EQ(imported_network.GetOutputsInfo().size(), compiled_network.GetOutputsInfo().size()); + + for (const auto& next_output : imported_network.GetOutputsInfo()) { + ASSERT_NO_THROW(compiled_network.GetOutputsInfo()[next_output.first]); + } + auto outputs_imported = GetOutputs(); + + ASSERT_EQ(outputs.size(), outputs_imported.size()); + + for (size_t i = 0; i < outputs.size(); i++) { + Compare(outputs[i], outputs_imported[i]); + } + } + +protected: + void SetUp() override { + ov::element::Type prc = ov::element::undefined; + std::tie(prc, targetDevice, m_export_model_name, m_conf_export, m_conf_import) = this->GetParam(); + ov::Shape input_shape{1, 80}; + ov::Shape conv_shape{1, 2, 1, 40}; + ov::Shape split_shape = {input_shape[0], 2 * input_shape[1]}; + ov::ParameterVector inputs = {std::make_shared(prc, split_shape), + std::make_shared(prc, input_shape)}; + + // split layer to split inputs and transpose the part connected to convolution only + auto axis_const = std::make_shared(ov::element::i32, ov::Shape{}, std::vector{1}); + auto split = std::make_shared(inputs[0], axis_const, 2); + + std::vector reshape_pattern{1, 2, 1, -1}; + auto reshape_const = + std::make_shared(ov::element::i32, ov::Shape{reshape_pattern.size()}, reshape_pattern); + + auto split_0_reshape = std::make_shared(split->output(0), reshape_const, true); + auto split_1_reshape = std::make_shared(split->output(1), reshape_const, true); + auto input_1_reshape = std::make_shared(inputs[1], reshape_const, true); + + auto add = std::make_shared(split_0_reshape, input_1_reshape); + auto relu_1 = std::make_shared(add); + + // Convolution to test nchw->nhwc + size_t num_out_channels = 8; + size_t kernel_size = 8; + std::vector filter_weights = + CommonTestUtils::generate_float_numbers(num_out_channels * reshape_pattern[1] * kernel_size, -0.1f, 0.1f); + auto conv = ngraph::builder::makeConvolution(relu_1, + prc, + {1, kernel_size}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + ngraph::op::PadType::VALID, + num_out_channels, + true, + filter_weights); + + auto relu_2 = std::make_shared(conv); + + // Memory layers + ov::op::util::VariableInfo vi{}; + vi.data_shape = ov::PartialShape(conv_shape); + vi.variable_id = "test_variable"; + vi.data_type = prc; + const auto var = std::make_shared(vi); + std::vector initial_state = + CommonTestUtils::generate_float_numbers(ov::shape_size(conv_shape), -3.f, 3.f); + auto initial_state_node = std::make_shared(prc, conv_shape, initial_state); + auto read = std::make_shared(initial_state_node, var); + auto mul = std::make_shared(split_1_reshape, read); + auto assign = std::make_shared(mul, var); + auto relu_3 = std::make_shared(mul); + + ov::SinkVector sinks = {assign}; + ov::ResultVector results; + results.emplace_back(std::make_shared(relu_2)); + results.emplace_back(std::make_shared(relu_3)); + + function = std::make_shared(results, sinks, inputs, "universal_export_model"); + } + + std::map m_conf_export; + std::map m_conf_import; + std::string m_export_model_name; +}; + +class BackwardCompatibilityLegacy : public BackwardCompatibility { +protected: + void SetUp() override { + ov::element::Type prc = ov::element::undefined; + std::tie(prc, targetDevice, m_export_model_name, m_conf_export, m_conf_import) = this->GetParam(); + ov::Shape input_shape{1, 336}; + + auto param = std::make_shared(prc, input_shape); + auto const_eltwise = std::make_shared(prc, input_shape, std::vector{-1}); + auto mul = std::make_shared(param, const_eltwise); + + ov::ResultVector results{std::make_shared(mul)}; + + function = std::make_shared(results, ov::ParameterVector{param}, "ExportBackwordCompatibility"); + } +}; + +TEST_P(BackwardCompatibility, BackwardCompatibility) { + Run(); +} + +TEST_P(BackwardCompatibilityLegacy, BackwardCompatibility) { + Run(); +} + +const std::vector input_precisions = {ov::element::f32, ov::element::f16}; + +const std::vector> export_configs_legacy = { + {{"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, {"GNA_SCALE_FACTOR_0", "327.67"}}}; + +const std::vector> import_configs_legacy = { + {{"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, {"GNA_SCALE_FACTOR_0", "327.67"}}, +}; + +const std::vector> export_configs = { + {{"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, {"GNA_SCALE_FACTOR_0", "327.67"}, {"GNA_SCALE_FACTOR_1", "327.67"}}}; + +const std::vector> import_configs = { + {{"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, {"GNA_SCALE_FACTOR_0", "327.67"}, {"GNA_SCALE_FACTOR_1", "327.67"}}}; + +const std::vector export_models_legacy = {"export2dot1.blob", + "export2dot2.blob", + "export2dot3.blob", + "export2dot4.blob", + "export2dot5.blob"}; + +const std::vector export_models = {"export2dot6.blob", "export2dot7.blob", "export2dot8.blob"}; + +// Those tests should not be run in CI due to dependency on model blobs +INSTANTIATE_TEST_SUITE_P(OldVersion, + BackwardCompatibilityLegacy, + ::testing::Combine(::testing::ValuesIn(input_precisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(export_models_legacy), + ::testing::ValuesIn(export_configs_legacy), + ::testing::ValuesIn(import_configs_legacy)), + BackwardCompatibilityLegacy::get_test_case_name); + +INSTANTIATE_TEST_SUITE_P(OldVersion, + BackwardCompatibility, + ::testing::Combine(::testing::ValuesIn(input_precisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(export_models), + ::testing::ValuesIn(export_configs), + ::testing::ValuesIn(import_configs)), + BackwardCompatibility::get_test_case_name); diff --git a/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot1.blob b/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot1.blob new file mode 100644 index 0000000000000000000000000000000000000000..f468203d7182f6bf346422e90eb859035cc6dd14 GIT binary patch literal 8658 zcmeI!KaV3t5C!m=G5#al0Rg#@E+QqL0A0XH2*d{=yUlJ?<9;^Anu-a$e!N>jU6{N8R0Xulv|~nx6DS z_im26=))iX=-)#hTOa-A{fD(4gJ{34f7OBiuLJ+)yF9dCz3spMdiefWX|-NzVM`f8p%7$ zS?M2l_-G`r5BlNB4$l+X&K54U`0eQnE_pqq#txf)V8U;wZ5MZj3kK(HkK$r_NDY2x z{RfZ3S$}#7=PkcDJ_{~2?zrNcxVu_fcN6V-ICYk|C1#e?(}u+(7wy#I zRd3I1sdblgkB(lWgF`MF;_@`oLp0%N$c00lzARcE7)w3ut!{d@s|{W~PD@N({D>YN zoZ%ODPfdEVhaUzvt;8}ToVXnZKknN-bEQ9e^6FrDB4^#^$=hL)a~6lojP|U= zn`UVH?YJ6O)BKa@y18!7`@?cv9e11>SJ(OX(qaDbaadkAr}cS%+>NWDy>8sk`+lpc z-(D7{b-z_Pb?5zc({I(C*2mq{9hUf~?y|Tnh8FXAKmU)+Jmc!JIPZ(H*tj|@OJweD zzW3XHd)y84Po>$F9R->=ag8hdhh@vTNrC-r|!Cuzbwi`xTenixRWuH z$uX!o?@#NYHIvBH6-GR!g{LHLY7;>gJUxBO6n`%ZKJZ2#dM*y&;14ykls8~X6YA!$ zEOYXrIBULA%^B|qtD5q54oj2qlG|qLx8=>4Qf!44paxK1J!}* iKy{!xP#vfaR0pa9)q(0jb)Y&>9jFde2dV@A#esK`0WCEE literal 0 HcmV?d00001 diff --git a/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot2.blob b/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot2.blob new file mode 100644 index 0000000000000000000000000000000000000000..9e892d794ee8f6515372ada0ac2d570487042217 GIT binary patch literal 8659 zcmeI!FRv?A6b0~^mj21K0)ZbA6dFB(Aee+e_yAa{@dyZ{21rJu@zqEYbRDFcFVTd@ zAI;QkBdT_zMQ+~?7j9{d#~wB`u<1ne)vw)G>iG){CU%#rfExficd*}pMU+~ zy@xMuh&gEdSYcaopO(;k{>xh*+~Z!m;eL8lYMS8WSMv!^#BVhJ81y}UZo1Fyr|FY< z=sxc8n0@u1C;c1rx&6^^UVpXLa}e#9^c zcikTUaL(U-|9gM@>`%4hx5JBYx~sdZC(4~RZ@<(B4@W~DE}S%@<@xgU8xQ(CM^oLi z9(j=t9By@-YMC96Lo+ku(3g4SVdT@N9-JKBdyHJ_^c;M2^qS2*J7mwynYr*}ej2HJ zR&z2x?(oq_-5m78lL*ff+MXR;dhv^y3odmtq(_9!JTT!GX^Zln;ex?=Kcl>y8PbE_ zv-yL^;n{p<3Fke(JU$05J?^;To4mVTT6o3yEM~^ck^bz415TeK@5tFD{j_26s6{)y zc=e0fExqn)?$I%8ba1FeLtdRmW{4&n4YhFSGnYfl2gcD4d#{_BMZLl6$LYxFiyzU$ zgERc{?&--)V)$Wj(@HKo!pVy;_;KII?3MZGsq2H~iJEg?Q&*!2r!K;z=2;#tJBm5U zH_g}%-C=!LPxDWr>-M@m@B7tZecW;Cu)fZ}m-_j~N58smPn+}pxI3)J_PTXH?}tv; z&|Q|N&Cuzb7U%tSJ9PR^o8xX;^eg<+;KmQ+@c@FE#^1Ls~a)))lDw%n@ z`95?*cifHhPo>$F9R->=aUIt9`&H2>Y-2mNaJX;`9gH)!)8e{Szbwl}xTb~sai?M@ zn`6*(-k&yOYbTj$Q5f;q7M_y4t!)HZ@bt{BQvAIv`M?`lQr>_qZD^W) zRrcgXan^pNn={@KRz2nI^edb3lG}C~y7Fdha@u&aRLxX+F&C#fHZAOfrM%JW_OgV> zs6xy9Wwx>PBxBcUaoS``4*3>vjKlV%UvA~QK+hy@d@XKz6Xy2KtDovXb)Y&>9jFde j2dV?rf$BhYpgK?;s18&Issq)5>Ogg%I#3<>FAn?-lLRd_ literal 0 HcmV?d00001 diff --git a/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot3.blob b/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot3.blob new file mode 100644 index 0000000000000000000000000000000000000000..780b152dae87694669ba07d6f22e2b1466b5740f GIT binary patch literal 8690 zcmeI!v8&`%6bA4l?&{7F75X|d-&v&M-M;0 z|7P{YFR#6K341A}!G3~IPr$_2X$5Wcrskg>xa;Spjl1G$dZHh?*JE8rU;O7*|EBb= z_|UIjezDeFD(WxGzv96E*MWcYTOR9={~Ese?df4NKeMK}tk30BiL|z~C zgC}tBrot1iziOUEEn+)Zo1AQCv(9fx+*r|ER~|tUtX3 z=Ow>5K1*F-+;N3(;_k4t@Y=&?d-NE61U_cNp$^Uxx5Ug6c-m_5$c1)b@xt3y9SynQfYX;n%cI7ES9_@&J=Q$ooOPL#m!qjp-mWHc&f@A~MtiJ?SJhY# z-C=XsOzD$oX_t21_v^#v==&`FZ(Y*&QlCCP`t{PDw)6hDJ8Z^!Y2D}j&_NB|d3D+j z9pu!^`=uQ^xYPEyo0@)&e`?OF^J=Uy&*_^H&tY?3&HJn@cG&dm97)}!`_K*DaW|$< zrR2(v0!^H_4jcUaI%{OMu^wx6xNr=e8f&blW@+Wm>C@IkxTePaxRWuH$uYpp`_p!; z%_K54nGug^)l(8TwTV>bdV2bn$^M>KeBg~f^qd{Q!5?a7$#1}vCe%&8&U5l2J8Qm- zHidVD6(+x(er+;da@$Npm*0#@PFru5s-7|yb9S0zQ)3=1`He2^d8Hns3@!cV-p1NV z#H>?u+D4Zg@+;sNhs{Yp-|}yPo=)8On%(p!^zA*Br#Mg?C=L_{iUY-g;y`hrI8YoY a4ipE91I2;jKyjcrP#h=@6bJr`1AhZ1RWr~4 literal 0 HcmV?d00001 diff --git a/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot4.blob b/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot4.blob new file mode 100644 index 0000000000000000000000000000000000000000..3159a652f832a9e811c31385d481f263f2fc7b28 GIT binary patch literal 8703 zcmeI!v8x;y^i280M9#6oOD*+zw_t?joI zOTl_NWo!S50b@*@-@ETT)*{4bWpU?m_uhNX`M&R*Z}!2y`~KT^-ztitDqdPXi(5X5 zqD@F49)KyzF;B zyZ`8u2lqc;fNvIG{QCNP=RnN>{)}OH0w}&-RuKQAABE3(E{Bu5YUHMPnx5!~?&V;Y z(HDPQ>tB`L6d(Gu*he;xQY-{rpi=vnv8?~jMg^u!v!`spd$Tp#|l zrtiN0qdh$MOYZP(_c%D+<=y3D7dvj>cmk(h9Sw1H!AUc;oKIiB_7u)JH07OP#O-v{ z;g-iK7ro=LXhzRC;G!RKHR6Gjk2*2D=QU!Hr)S}#1FJXpm?7qjKBF%@(LasIJIh(o zKkne85qW*k51!c7^Mtmug$owHJ^E4?c|8Qit~UBn6a04Cc5!EQQG@fmM{zMd1O~se z{-Yj;v;OoFoag-F_$+mSamN+DiMzwn!fOwo?a^cO5%`!5hdMY*+!8ZO;AyMHBNy6% z#S3qb*#he>=N>wG4ILbEp&>3$BYFr;bu{FH15RHSEsq)tUhTPV^lXQXdU%|c7+m-f zdU$XKzqor~q9=RstHDhxVlksSal0D)xX<^PEBd1+52uzVa@KiHUXG?ZdApj(Ig6`{ z8SSwmUKD-VHN$4ujLT1=xt{B3->!$vVaKUqGcUiF+U3VbyPoUgcG@3y!=^9i+I`x0 z4OG{hR>y7EK#tY4pX;uHJ8loVv1-@&$Lh2?t@;x4v|s*57M@{qT21?;EH-S~b&4$A zE%&bJn!~PNekv`l>?qL0iEG&4Z`Vm9vGrwNs>6k&Yt&eMIaYHme_Ex9aE+DwVJBlI zlVgCH_Q!2snn`4=5+feds;4AwY7?nU_4M>Dll(oc_`n-|=s7ungFn>FlHPzRO{kl8 zo#y04a@Kqa%^B|qD@=Mj?b>9#zZc(i@%Y(@H%? z8Cv>Jz4fJ&h*`(#xQ#A3D9mo!32eJd%f$TtbAUp719QYeG)HQMd literal 0 HcmV?d00001 diff --git a/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot5.blob b/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot5.blob new file mode 100644 index 0000000000000000000000000000000000000000..427b8c020ed8671cfd4506c71654fadfd67da68f GIT binary patch literal 8707 zcmeIwF$%&k6vpw_q9Ewt5d<$F-ar%_q~g-Kbm$;dkWvS6(7SjM!7J!_G_Pr@h)}u- z{!_?W+LKC+src1NyM|Is@0;~DEDpYnX-zrc$4Hw7LDY3KTpH(b;Q?w zO?K>BV#?zv(ls^MrTKcB?xV3BZo|cUtYx+}cG0{UE~e}HSaDRVubih0DA@I8bjsDCWMgRc>5I_I{1Q0*~0R#|0 Z009ILKmY**5I_I{1Q0*~0R;Y7;0YLfz#{+v literal 0 HcmV?d00001 diff --git a/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot6.blob b/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot6.blob new file mode 100644 index 0000000000000000000000000000000000000000..22a6b400a742a938ade775fe21ddc9e4470200bc GIT binary patch literal 31638 zcmeI5Uu;uV9LG<)wXAD5ipbmoj-s3F0b_A4@x`PIs85igfd?|#igp2o#Ec0~>Wwk+ z?}N#BaPl&<2ciUHh@uG(R85Q{XiN;S2s*aGGJ`}%w!zkxdVan4*LKTn@9odHK)z?W z_x9dxp%Dgw_1>jSJ4h854G9!zOk;_Q8(r+f}x5n{|DmC+S@$(&_Z;xk0fpL@N#dlm^h0MNGm)AjYwNf7L)SlB@L*Y9Gk5$&)$a4j|*}lo#XkIin=E2vC8D)7a z;AvOSJmQw#DbH+u%gCvo>l^FqXV8Q*0poa%X= zMn_Ix%G!=wdU9E6mi*ju%7R&{&KwITSuo3Zo}Si&-Nw%e70oH6EZNEFy5zYipXpF4 z%ZN1>r+Th$hm^2FCDs3U8--las9Z(!l|BF=4V;T zx-@p@MoeQMU-EG>9-a%cpl1!~*XfPlqx8prZCSnb4ny@xXZL%``nWY0s%@t(4~SXD zpEs|Np2lFeWxwMumG?F1rs z`~)$BrH>F9AOkr8tRgu>sRJ^Q5|rzaft;b#0U1aM%Js-V&QR)r45S3*dSoDHD0M&v zQi5_lGLSQrIv@inLAf3o$QeoHvx26Bc{2V@{6DAywcIYX%fGLRCK>yd$+q0|8xND0dI z$Ux5U&UY}Bq130-BXi0qtE*M@9{PnIG!Xco2xQiu+ejyrkzAWRq{^}W?2{i$r*2Yj z^OqWu%k3+zo)J~}&#|FHLE-94f49hVei`_7n!1?$4eNJMiiq-Wm!Ft`#}UtAU;XG8Glz$EHhegl2o3nIR&N;_ zPrNquN!2Fb`+*B{iK>}U<<*VBrzSQGN2g{lel+sxL+{)>^0&L`Tt#2w`KhkqW0P+N z;-2*r;a`LPTXU^fl)ty>y+H8Fm)=u1&Rkn{IeBYa^%JR|0@qXC$>6p2(fZ0CYcz_G z-Xf9a=4LwX>FV0enfsDsJBpFX0200@8p2!H?xfB*=900`Wr G1pWcp6eykm literal 0 HcmV?d00001 diff --git a/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot7.blob b/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot7.blob new file mode 100644 index 0000000000000000000000000000000000000000..720bc8b78b383548fd5b79aa411343331bff4e27 GIT binary patch literal 15402 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 literal 0 HcmV?d00001 diff --git a/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot9.blob b/src/plugins/intel_gna/tests/functional/data/exported_models/export2dot9.blob new file mode 100644 index 0000000000000000000000000000000000000000..48870871e2b8ee1e6470e9ba795983b4a1a426e3 GIT binary patch literal 30818 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 literal 0 HcmV?d00001 diff --git a/src/plugins/intel_gna/tests/deprecated/functional/gna/test_model_repo.cpp b/src/plugins/intel_gna/tests/functional/helpers/test_model_repo.cpp similarity index 68% rename from src/plugins/intel_gna/tests/deprecated/functional/gna/test_model_repo.cpp rename to src/plugins/intel_gna/tests/functional/helpers/test_model_repo.cpp index 46956170b64..0fbe800dc11 100644 --- a/src/plugins/intel_gna/tests/deprecated/functional/gna/test_model_repo.cpp +++ b/src/plugins/intel_gna/tests/functional/helpers/test_model_repo.cpp @@ -8,8 +8,8 @@ std::string get_model_repo() { return "models:"; }; -const char* TestDataHelpers::getModelPathNonFatal() noexcept { - return TestDataHelpers::getModelPathNonFatalDefault(); +const char* TestDataHelpers::get_model_path_non_fatal() noexcept { + return TestDataHelpers::get_model_path_non_fatal_default(); } std::string TestDataHelpers::get_data_path() { diff --git a/src/plugins/intel_gna/tests/deprecated/helpers/test_model_repo.hpp b/src/plugins/intel_gna/tests/functional/helpers/test_model_repo.hpp similarity index 55% rename from src/plugins/intel_gna/tests/deprecated/helpers/test_model_repo.hpp rename to src/plugins/intel_gna/tests/functional/helpers/test_model_repo.hpp index b31abe8b528..76994e4b6ef 100644 --- a/src/plugins/intel_gna/tests/deprecated/helpers/test_model_repo.hpp +++ b/src/plugins/intel_gna/tests/functional/helpers/test_model_repo.hpp @@ -9,13 +9,13 @@ std::string get_model_repo(); namespace TestDataHelpers { -const char *getModelPathNonFatal() noexcept; +const char* get_model_path_non_fatal() noexcept; std::string get_data_path(); -inline const char *getModelPathNonFatalDefault() noexcept { - if (const auto envVar = std::getenv("MODELS_PATH")) { - return envVar; +inline const char* get_model_path_non_fatal_default() noexcept { + if (const auto env_var = std::getenv("MODELS_PATH")) { + return env_var; } #ifdef MODELS_PATH @@ -26,12 +26,12 @@ inline const char *getModelPathNonFatalDefault() noexcept { }; inline std::string get_data_path_default() { - if (const auto envVar = std::getenv("DATA_PATH")) { - return envVar; + if (const auto env_var = std::getenv("GNA_DATA_PATH")) { + return env_var; } -#ifdef DATA_PATH - return DATA_PATH; +#ifdef GNA_DATA_PATH + return GNA_DATA_PATH; #else return nullptr; #endif From 1f7176031d5ae067ee368e26b13c664400f9db4b Mon Sep 17 00:00:00 2001 From: yanlan song Date: Fri, 30 Jun 2023 15:41:48 +0800 Subject: [PATCH 19/25] Bell/fix static scan issues (#18285) * change default value Signed-off-by: fishbell * fix case failure Signed-off-by: fishbell * fix post commit failure Signed-off-by: fishbell * fix sdl issues Signed-off-by: fishbell --------- Signed-off-by: fishbell --- src/plugins/auto/src/common.hpp | 6 +++--- src/plugins/auto/src/plugin.cpp | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/plugins/auto/src/common.hpp b/src/plugins/auto/src/common.hpp index aad311d8801..e13a5d12850 100644 --- a/src/plugins/auto/src/common.hpp +++ b/src/plugins/auto/src/common.hpp @@ -92,9 +92,9 @@ struct DeviceInformation { DeviceName unique_name; unsigned int device_priority; DeviceInformation(DeviceName dn = {}, ov::AnyMap conf = {}, - int nReq = -1, std::string defaultID = {}, DeviceName uName = {}, unsigned int priority = 0) - : device_name(dn), config(conf), - num_requests_per_devices(nReq), default_device_id(defaultID), unique_name(uName), device_priority(priority) + int n_req = -1, std::string default_id = {}, DeviceName name = {}, unsigned int priority = 0) + : device_name(std::move(dn)), config(std::move(conf)), + num_requests_per_devices(n_req), default_device_id(std::move(default_id)), unique_name(std::move(name)), device_priority(priority) {} }; diff --git a/src/plugins/auto/src/plugin.cpp b/src/plugins/auto/src/plugin.cpp index 2557885cff4..9cbbf4d3cf9 100644 --- a/src/plugins/auto/src/plugin.cpp +++ b/src/plugins/auto/src/plugin.cpp @@ -282,8 +282,7 @@ ov::Any Plugin::get_property(const std::string& name, const ov::AnyMap& argument auto ret = m_plugin_config.supported_properties(get_device_name()); return ret; } else if (name == ov::device::full_name) { - std::string device_name = { get_device_name() }; - return decltype(ov::device::full_name)::value_type {device_name}; + return decltype(ov::device::full_name)::value_type {get_device_name()}; } else if (name == ov::device::capabilities.name()) { auto device_list = get_core()->get_available_devices(); std::vector capabilities; @@ -538,7 +537,7 @@ ov::SupportedOpsMap Plugin::query_model(const std::shared_ptr& queryconfig.apply_user_properties(); auto full_property = queryconfig.get_full_properties(); auto priorities = full_property.find(ov::device::priorities.name()); - if (!priorities->second.empty()) { + if (priorities!= full_property.end() && !priorities->second.empty()) { auto meta_devices = parse_meta_devices(priorities->second.as(), full_property); std::unordered_set supported_layers; for (auto&& value : meta_devices) { From f52ab4f9efcdf440169ab2c723beaa5d851d35c1 Mon Sep 17 00:00:00 2001 From: Pawel Raasz Date: Fri, 30 Jun 2023 09:52:21 +0200 Subject: [PATCH 20/25] Optimize IE_THROW and IE_ASSERT for size reduction (#18284) * Optimize IE_THROW and IE_ASSERT for size reduction * Fix build issues --- .../openvino/inference_engine/ie_api_impl.cpp | 6 +- .../include/ie/details/ie_so_pointer.hpp | 4 +- src/inference/include/ie/ie_common.h | 59 ++++++++++++++----- src/inference/src/cpp/exception2status.hpp | 12 ++-- src/inference/src/cpp/ie_extension.cpp | 7 +-- .../unit/cpp_interfaces/exception_test.cpp | 6 +- .../tests/unit/ie_exception_test.cpp | 5 +- .../intel_gna/src/gna_infer_request.cpp | 10 ++-- 8 files changed, 68 insertions(+), 41 deletions(-) diff --git a/src/bindings/python/src/compatibility/openvino/inference_engine/ie_api_impl.cpp b/src/bindings/python/src/compatibility/openvino/inference_engine/ie_api_impl.cpp index 92a518b03cf..6f8a94b8854 100644 --- a/src/bindings/python/src/compatibility/openvino/inference_engine/ie_api_impl.cpp +++ b/src/bindings/python/src/compatibility/openvino/inference_engine/ie_api_impl.cpp @@ -511,10 +511,8 @@ void InferenceEnginePython::IEExecNetwork::createInferRequests(int num_requests) if (code != InferenceEngine::StatusCode::OK) { IE_EXCEPTION_SWITCH(code, ExceptionType, - InferenceEngine::details::ThrowNow{} <<= - std::stringstream{} - << IE_LOCATION - << InferenceEngine::details::ExceptionTraits::string()); + InferenceEngine::details::ThrowNow{IE_LOCATION_PARAM} <<= + std::stringstream{}); } auto end_time = Time::now(); diff --git a/src/inference/include/ie/details/ie_so_pointer.hpp b/src/inference/include/ie/details/ie_so_pointer.hpp index 6f99575264b..e3cbda07c50 100644 --- a/src/inference/include/ie/details/ie_so_pointer.hpp +++ b/src/inference/include/ie/details/ie_so_pointer.hpp @@ -164,8 +164,8 @@ protected: if (sts != OK) { IE_EXCEPTION_SWITCH(sts, ExceptionType, - InferenceEngine::details::ThrowNow{} <<= - std::stringstream{} << IE_LOCATION << desc.msg) + InferenceEngine::details::ThrowNow{IE_LOCATION_PARAM} <<= + std::stringstream{} << desc.msg) } IE_SUPPRESS_DEPRECATED_START _ptr = std::shared_ptr(object, [](T* ptr) { diff --git a/src/inference/include/ie/ie_common.h b/src/inference/include/ie/ie_common.h index 85fad630547..c933f3fab14 100644 --- a/src/inference/include/ie/ie_common.h +++ b/src/inference/include/ie/ie_common.h @@ -328,7 +328,14 @@ IE_SUPPRESS_DEPRECATED_END namespace details { template struct ExceptionTraits; -} + +template <> +struct INFERENCE_ENGINE_1_0_DEPRECATED ExceptionTraits { + static const char* string() { + return ""; + } +}; +} // namespace details #define INFERENCE_ENGINE_DECLARE_EXCEPTION(ExceptionType, statusCode) \ struct INFERENCE_ENGINE_1_0_DEPRECATED INFERENCE_ENGINE_API_CLASS(ExceptionType) final \ @@ -400,20 +407,45 @@ namespace details { /** * @brief Tag struct used to throw exception */ +#ifndef NDEBUG template struct INFERENCE_ENGINE_1_0_DEPRECATED ThrowNow final { - [[noreturn]] void operator<<=(const std::ostream& ostream) { - std::ostringstream stream; - stream << ostream.rdbuf(); + const char* const file; + const int line; + + [[noreturn]] static void create(const std::ostream& ostream, const char* file, int line) { + std::stringstream stream; + stream << '\n' << file << ':' << line << ' '; + stream << ExceptionTraits::string() << ' ' << ostream.rdbuf(); throw ExceptionType{stream.str()}; } + + [[noreturn]] void operator<<=(const std::ostream& ostream) { + create(ostream, file, line); + } }; +#else +template +struct INFERENCE_ENGINE_1_0_DEPRECATED ThrowNow final { + [[noreturn]] static void create(const std::ostream& ostream) { + std::stringstream stream; + stream << ExceptionTraits::string() << ' ' << ostream.rdbuf(); + throw ExceptionType{stream.str()}; + } + + [[noreturn]] void operator<<=(const std::ostream& ostream) { + create(ostream); + } +}; +#endif /// @cond #ifndef NDEBUG -# define IE_LOCATION '\n' << __FILE__ << ':' << __LINE__ << ' ' +# define IE_LOCATION '\n' << __FILE__ << ':' << __LINE__ << ' ' +# define IE_LOCATION_PARAM __FILE__, __LINE__ #else # define IE_LOCATION "" +# define IE_LOCATION_PARAM #endif // NDEBUG // WARNING: DO NOT USE THIS MACRO! Use openvino/util/pp.hpp macro library @@ -430,13 +462,10 @@ struct INFERENCE_ENGINE_1_0_DEPRECATED ThrowNow final { // ENDWARNING #define IE_THROW_0() \ - InferenceEngine::details::ThrowNow{} <<= std::stringstream{} << IE_LOCATION + (InferenceEngine::details::ThrowNow{IE_LOCATION_PARAM}) <<= std::stringstream {} -#define IE_THROW_1(ExceptionType) \ - InferenceEngine::details::ThrowNow{} <<= \ - std::stringstream{} << IE_LOCATION \ - << InferenceEngine::details::ExceptionTraits::string() \ - << ' ' +#define IE_THROW_1(ExceptionType) \ + (InferenceEngine::details::ThrowNow{IE_LOCATION_PARAM}) <<= std::stringstream {} /// @endcond /** @@ -452,7 +481,7 @@ struct INFERENCE_ENGINE_1_0_DEPRECATED ThrowNow final { #ifdef NDEBUG # define IE_ASSERT(EXPRESSION) \ if (!(EXPRESSION)) \ - IE_THROW(GeneralError) << " AssertionFailed: " << #EXPRESSION + IE_THROW(GeneralError) << " AssertionError " #EXPRESSION #else /** * @private @@ -470,9 +499,9 @@ struct NullStream { #endif // NDEBUG /// @cond -#define THROW_IE_EXCEPTION \ - InferenceEngine::details::ThrowNow{} <<= std::stringstream{} \ - << IE_LOCATION +#define THROW_IE_EXCEPTION \ + (InferenceEngine::details::ThrowNow{IE_LOCATION_PARAM}) <<= \ + std::stringstream {} #define IE_EXCEPTION_CASE(TYPE_ALIAS, STATUS_CODE, EXCEPTION_TYPE, ...) \ case InferenceEngine::STATUS_CODE: { \ diff --git a/src/inference/src/cpp/exception2status.hpp b/src/inference/src/cpp/exception2status.hpp index 398bb10b18b..4350a2b6c1f 100644 --- a/src/inference/src/cpp/exception2status.hpp +++ b/src/inference/src/cpp/exception2status.hpp @@ -59,15 +59,16 @@ namespace InferenceEngine { } #define CALL_STATUS_FNC(function, ...) \ - if (!actual) \ + if (!actual) { \ IE_THROW() << "Wrapper used was not initialized."; \ + } \ ResponseDesc resp; \ auto res = actual->function(__VA_ARGS__, &resp); \ if (res != OK) \ IE_EXCEPTION_SWITCH( \ res, \ ExceptionType, \ - InferenceEngine::details::ThrowNow{} <<= std::stringstream{} << IE_LOCATION << resp.msg) + (InferenceEngine::details::ThrowNow{IE_LOCATION_PARAM}) <<= std::stringstream{} << resp.msg) #define CALL_STATUS_FNC_NO_ARGS(function) \ if (!actual) \ @@ -75,8 +76,9 @@ namespace InferenceEngine { ResponseDesc resp; \ auto res = actual->function(&resp); \ if (res != OK) \ - IE_EXCEPTION_SWITCH(res, \ - ExceptionType, \ - InferenceEngine::details::ThrowNow{} <<= std::stringstream{} << IE_LOCATION) + IE_EXCEPTION_SWITCH( \ + res, \ + ExceptionType, \ + (InferenceEngine::details::ThrowNow{IE_LOCATION_PARAM}) <<= std::stringstream{}) } // namespace InferenceEngine diff --git a/src/inference/src/cpp/ie_extension.cpp b/src/inference/src/cpp/ie_extension.cpp index 525d4cdd9ca..a6bc2adc6be 100644 --- a/src/inference/src/cpp/ie_extension.cpp +++ b/src/inference/src/cpp/ie_extension.cpp @@ -31,10 +31,9 @@ std::shared_ptr CreateExtensionFromLibrary(std::shared_ptr _so) { ResponseDesc desc; StatusCode sts = reinterpret_cast(create)(object, &desc); if (sts != OK) { - IE_EXCEPTION_SWITCH( - sts, - ExceptionType, - details::ThrowNow{} <<= std::stringstream{} << IE_LOCATION << desc.msg) + IE_EXCEPTION_SWITCH(sts, + ExceptionType, + details::ThrowNow{} <<= std::stringstream{} << desc.msg) } IE_SUPPRESS_DEPRECATED_START _ptr = std::shared_ptr(object, [](T* ptr) { diff --git a/src/inference/tests/unit/cpp_interfaces/exception_test.cpp b/src/inference/tests/unit/cpp_interfaces/exception_test.cpp index c830f35cb28..6a236a6fbbd 100644 --- a/src/inference/tests/unit/cpp_interfaces/exception_test.cpp +++ b/src/inference/tests/unit/cpp_interfaces/exception_test.cpp @@ -18,14 +18,14 @@ public: TO_STATUS(IE_EXCEPTION_SWITCH( statusCode, ExceptionType, - InferenceEngine::details::ThrowNow{} <<= std::stringstream{} << IE_LOCATION)) + InferenceEngine::details::ThrowNow{IE_LOCATION_PARAM} <<= std::stringstream{})) } static InferenceEngine::StatusCode toStatusWrapperMsg(std::string& msg, InferenceEngine::ResponseDesc* resp) { TO_STATUS(IE_EXCEPTION_SWITCH( statusCode, ExceptionType, - InferenceEngine::details::ThrowNow{} <<= std::stringstream{} << IE_LOCATION << msg)) + InferenceEngine::details::ThrowNow{IE_LOCATION_PARAM} <<= std::stringstream{} << msg)) } }; @@ -72,7 +72,7 @@ TEST_F(ExceptionTests, throwAfterConvertStatusToClassContainMessage) { std::string refMessage = "Exception message!"; auto actual = std::make_shared>(); try { - CALL_STATUS_FNC(toStatusWrapperMsg, refMessage) + CALL_STATUS_FNC(toStatusWrapperMsg, refMessage); } catch (const NotAllocated& iex) { std::string actualMessage = iex.what(); ASSERT_TRUE(actualMessage.find(refMessage) != std::string::npos); diff --git a/src/inference/tests/unit/ie_exception_test.cpp b/src/inference/tests/unit/ie_exception_test.cpp index d04d9291fb1..1c5fd3e7354 100644 --- a/src/inference/tests/unit/ie_exception_test.cpp +++ b/src/inference/tests/unit/ie_exception_test.cpp @@ -36,7 +36,8 @@ TEST(ExceptionTests, ExceptionShowsCorrectMessageDebugVersion) { lineNum = __LINE__ + 1; IE_THROW() << message; } catch (InferenceEngine::Exception& iex) { - std::string ref_message = std::string{"\n"} + __FILE__ + ":" + std::to_string(lineNum) + " " + message; + std::string ref_message = + std::string{"\n"} + __FILE__ + ":" + std::to_string(lineNum) + " [ GENERAL_ERROR ] " + message; ASSERT_STREQ(iex.what(), ref_message.c_str()); } } @@ -46,7 +47,7 @@ TEST(ExceptionTests, ExceptionShowsCorrectMessageReleaseVersion) { try { IE_THROW() << message; } catch (InferenceEngine::Exception& iex) { - std::string ref_message = message; + std::string ref_message = "[ GENERAL_ERROR ] " + message; ASSERT_STREQ(iex.what(), ref_message.c_str()); } } diff --git a/src/plugins/intel_gna/src/gna_infer_request.cpp b/src/plugins/intel_gna/src/gna_infer_request.cpp index 299d8cd39f4..52473e70d34 100644 --- a/src/plugins/intel_gna/src/gna_infer_request.cpp +++ b/src/plugins/intel_gna/src/gna_infer_request.cpp @@ -62,12 +62,10 @@ void GNAInferRequest::StartAsyncImpl() { std::exception_ptr exceptionPtr; if (res != InferenceEngine::StatusCode::OK) { try { - IE_EXCEPTION_SWITCH(res, - ExceptionType, - InferenceEngine::details::ThrowNow{} <<= - std::stringstream{} - << IE_LOCATION - << InferenceEngine::details::ExceptionTraits::string()); + IE_EXCEPTION_SWITCH( + res, + ExceptionType, + InferenceEngine::details::ThrowNow{IE_LOCATION_PARAM} <<= std::stringstream{}); } catch (...) { exceptionPtr = std::current_exception(); } From f405ee2b9dab0b690cc9202c2d04ee8b503d6996 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 12:36:26 +0400 Subject: [PATCH 21/25] Update pytest requirement from <7.4,>=5.0 to >=5.0,<7.5 in /tests (#18233) Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.0.0...7.4.0) --- updated-dependencies: - dependency-name: pytest dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ilya Lavrenov --- tests/constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/constraints.txt b/tests/constraints.txt index ef82f17a906..3c71d9b3d58 100644 --- a/tests/constraints.txt +++ b/tests/constraints.txt @@ -15,7 +15,7 @@ requests>=2.25.1 opencv-python>=4.5 paddlepaddle==2.5.0 py>=1.9.0 -pytest>=5.0,<7.4 +pytest>=5.0,<7.5 pytest-dependency==0.5.1 pytest-html==3.2.0 pytest-timeout==2.1.0 From 60d5d57eced67630a387a6fcfcb078e14d16696e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Do=C5=82bniak?= Date: Fri, 30 Jun 2023 13:18:24 +0200 Subject: [PATCH 22/25] ScatterElementsUpdate downgrade transformation (#18306) --- ...rt_scatter_elements_update12_downgrade.hpp | 23 ++++++ .../common_optimizations.cpp | 3 +- ...rt_scatter_elements_update12_downgrade.cpp | 40 ++++++++++ ...atter_elements_update12_downgrade_test.cpp | 78 +++++++++++++++++++ 4 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 src/common/transformations/include/transformations/op_conversions/convert_scatter_elements_update12_downgrade.hpp create mode 100644 src/common/transformations/src/transformations/op_conversions/convert_scatter_elements_update12_downgrade.cpp create mode 100644 src/common/transformations/tests/op_conversions/convert_scatter_elements_update12_downgrade_test.cpp diff --git a/src/common/transformations/include/transformations/op_conversions/convert_scatter_elements_update12_downgrade.hpp b/src/common/transformations/include/transformations/op_conversions/convert_scatter_elements_update12_downgrade.hpp new file mode 100644 index 00000000000..a3679eabc52 --- /dev/null +++ b/src/common/transformations/include/transformations/op_conversions/convert_scatter_elements_update12_downgrade.hpp @@ -0,0 +1,23 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ov { +namespace pass { +/** + * @ingroup ie_transformation_common_api + * @brief Converts Pad v12 to Pad v1 + */ +class TRANSFORMATIONS_API ConvertScatterElementsUpdate12ToScatterElementsUpdate3 : public MatcherPass { +public: + OPENVINO_RTTI("ConvertScatterElementsUpdate12ToScatterElementsUpdate3", "0"); + ConvertScatterElementsUpdate12ToScatterElementsUpdate3(); +}; + +} // namespace pass +} // namespace ov diff --git a/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp b/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp index a9e5d971b94..57d229a5523 100644 --- a/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp +++ b/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp @@ -89,7 +89,7 @@ #include "transformations/op_conversions/convert_reduce_to_pooling.hpp" #include "transformations/op_conversions/convert_roi_align_v3_to_v9.hpp" #include "transformations/op_conversions/convert_roi_align_v9_to_v3.hpp" -#include "transformations/op_conversions/convert_scatter_elements_to_scatter.hpp" +#include "transformations/op_conversions/convert_scatter_elements_update12_downgrade.hpp" #include "transformations/op_conversions/convert_softmax_downgrade.hpp" #include "transformations/op_conversions/convert_softmax_upgrade.hpp" #include "transformations/op_conversions/convert_space_to_depth.hpp" @@ -215,6 +215,7 @@ bool ov::pass::CommonOptimizations::run_on_model(const std::shared_ptr(); ADD_MATCHER(fq_fusions, FakeQuantizeMulFusion) diff --git a/src/common/transformations/src/transformations/op_conversions/convert_scatter_elements_update12_downgrade.cpp b/src/common/transformations/src/transformations/op_conversions/convert_scatter_elements_update12_downgrade.cpp new file mode 100644 index 00000000000..1c9855154b5 --- /dev/null +++ b/src/common/transformations/src/transformations/op_conversions/convert_scatter_elements_update12_downgrade.cpp @@ -0,0 +1,40 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/op_conversions/convert_scatter_elements_update12_downgrade.hpp" + +#include +#include +#include + +#include "itt.hpp" + +ov::pass::ConvertScatterElementsUpdate12ToScatterElementsUpdate3:: + ConvertScatterElementsUpdate12ToScatterElementsUpdate3() { + MATCHER_SCOPE(ConvertScatterElementsUpdate12ToScatterElementsUpdate3); + + const auto seu_v12_pattern = pattern::wrap_type(); + + const matcher_pass_callback callback = [=](pattern::Matcher& m) { + const auto seu_v12 = std::dynamic_pointer_cast(m.get_match_root()); + if (!seu_v12 || transformation_callback(seu_v12) || + seu_v12->get_reduction() != ov::op::v12::ScatterElementsUpdate::Reduction::NONE) { + return false; + } + + const auto seu_v3 = std::make_shared(seu_v12->input_value(0), + seu_v12->input_value(1), + seu_v12->input_value(2), + seu_v12->input_value(3)); + + seu_v3->set_friendly_name(seu_v12->get_friendly_name()); + copy_runtime_info(seu_v12, seu_v3); + replace_node(seu_v12, seu_v3); + + return true; + }; + + auto m = std::make_shared(seu_v12_pattern, matcher_name); + register_matcher(m, callback); +} diff --git a/src/common/transformations/tests/op_conversions/convert_scatter_elements_update12_downgrade_test.cpp b/src/common/transformations/tests/op_conversions/convert_scatter_elements_update12_downgrade_test.cpp new file mode 100644 index 00000000000..b2920c26c6c --- /dev/null +++ b/src/common/transformations/tests/op_conversions/convert_scatter_elements_update12_downgrade_test.cpp @@ -0,0 +1,78 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; + +namespace { +using Reduction = ov::opset12::ScatterElementsUpdate::Reduction; + +std::shared_ptr create_v12_model(const Reduction reduction_type, const bool use_init_value) { + const auto input = std::make_shared(ov::element::f32, ov::Shape{1, 3, 100, 100}); + const auto indices = std::make_shared(ov::element::i32, ov::Shape{1, 1, 5, 5}); + const auto updates = std::make_shared(ov::element::f32, ov::Shape{1, 1, 5, 5}); + const auto axis = std::make_shared(ov::element::i64, ov::Shape{}); + + const auto seu = std::make_shared(input, + indices, + updates, + axis, + reduction_type, + use_init_value); + + seu->set_friendly_name("seu12"); + + return std::make_shared(seu->outputs(), ov::ParameterVector{input, indices, updates, axis}); +} + +std::shared_ptr create_v3_model() { + const auto input = std::make_shared(ov::element::f32, ov::Shape{1, 3, 100, 100}); + const auto indices = std::make_shared(ov::element::i32, ov::Shape{1, 1, 5, 5}); + const auto updates = std::make_shared(ov::element::f32, ov::Shape{1, 1, 5, 5}); + const auto axis = std::make_shared(ov::element::i64, ov::Shape{}); + + const auto seu = std::make_shared(input, indices, updates, axis); + + seu->set_friendly_name("seu3"); + + return std::make_shared(seu->outputs(), ov::ParameterVector{input, indices, updates, axis}); +} + +} // namespace + +TEST_F(TransformationTestsF, ConvertScatterElementsUpdate12ToScatterElementsUpdate3_no_reduction_use_init_value) { + manager.register_pass(); + function = create_v12_model(Reduction::NONE, true); + function_ref = create_v3_model(); + comparator.enable(FunctionsComparator::CmpValues::CONST_VALUES); + comparator.enable(FunctionsComparator::CmpValues::ATTRIBUTES); +} + +TEST_F(TransformationTestsF, ConvertScatterElementsUpdate12ToScatterElementsUpdate3_no_reduction) { + manager.register_pass(); + function = create_v12_model(Reduction::NONE, false); + function_ref = create_v3_model(); + comparator.enable(FunctionsComparator::CmpValues::CONST_VALUES); + comparator.enable(FunctionsComparator::CmpValues::ATTRIBUTES); +} + +TEST_F(TransformationTestsF, ConvertScatterElementsUpdate12ToScatterElementsUpdate3_reduction_use_init_value) { + manager.register_pass(); + function = create_v12_model(Reduction::MEAN, true); +} + +TEST_F(TransformationTestsF, ConvertScatterElementsUpdate12ToScatterElementsUpdate3_reduction) { + manager.register_pass(); + function = create_v12_model(Reduction::PROD, false); +} From a2b7d561e476736d4f56686bb1da7480e2b2d108 Mon Sep 17 00:00:00 2001 From: Yury Gaydaychuk Date: Fri, 30 Jun 2023 16:01:32 +0200 Subject: [PATCH 23/25] [CPU] Checking of nonbias port in FQ-ScaleShift fusing (#17555) * In FQ-MM fusing added checking of nonbias port during calculating channel dim * comment added * test added --- src/plugins/intel_cpu/src/graph_optimizer.cpp | 10 ++- .../subgraph_tests/src/fq_fused_with_ss.cpp | 89 +++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 src/plugins/intel_cpu/tests/functional/subgraph_tests/src/fq_fused_with_ss.cpp diff --git a/src/plugins/intel_cpu/src/graph_optimizer.cpp b/src/plugins/intel_cpu/src/graph_optimizer.cpp index 7c559049779..8abc45d1382 100644 --- a/src/plugins/intel_cpu/src/graph_optimizer.cpp +++ b/src/plugins/intel_cpu/src/graph_optimizer.cpp @@ -1996,7 +1996,15 @@ void GraphOptimizer::FusePerformedAsScaleShiftAndFakeQuantize(Graph &graph) { const auto &outputShape = child->getOutputShapeAtPort(0); VectorDims outputDims = outputShape.getDims(); - const auto channelPos = parent->getParentEdgeAt(0)->getParent()->getFusingAxis(); + + // We need to compute explicitly port with unfolded parent, + // because there is no guarantee, that the order of operands will be invariant + // (i.e. zero) after all transformations, which may cause wrong channel-dim in + // [Const-Schift -> Add <- Mul] topology with constant-folded schift, + // (Const node return 1 by default as channel dim.) + // Look into FQScaleshiftWithConstantShift test + const auto nonConstPort = (parent->getParentEdgeAt(0)->getParent()->isConstant() ? 1 : 0); + const auto channelPos = parent->getParentEdgeAt(nonConstPort)->getParent()->getFusingAxis(); if (outputShape.isDynamic()) { if (outputDims[channelPos] == Shape::UNDEFINED_DIM) { diff --git a/src/plugins/intel_cpu/tests/functional/subgraph_tests/src/fq_fused_with_ss.cpp b/src/plugins/intel_cpu/tests/functional/subgraph_tests/src/fq_fused_with_ss.cpp new file mode 100644 index 00000000000..229f3df7ef4 --- /dev/null +++ b/src/plugins/intel_cpu/tests/functional/subgraph_tests/src/fq_fused_with_ss.cpp @@ -0,0 +1,89 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "cpp_interfaces/interface/ie_internal_plugin_config.hpp" +#include "test_utils/cpu_test_utils.hpp" +#include "ngraph_functions/builders.hpp" + +using namespace ngraph; +using namespace InferenceEngine; +using namespace CPUTestUtils; + +namespace SubgraphTestsDefinitions { + +using FQScaleshiftWithConstantShiftTestParams = Precision; + +class FQScaleshiftWithConstantShiftTest : public testing::WithParamInterface, + public CPUTestsBase, + virtual public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj) { + Precision netPrecision; + netPrecision = obj.param; + std::ostringstream result; + result << "netPRC=" << netPrecision.name() << "_"; + return result.str(); + } + +protected: + void SetUp() override { + targetDevice = CommonTestUtils::DEVICE_CPU; + Precision netPrecision; + netPrecision = this->GetParam(); + const auto ngPrec = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + + std::vector mmShape{{25, 14, 14, 768}}; + SizeVector mmShape2{768, 2304}; + SizeVector sumShape{1, 1, 1, 2304}; + + // avoid eliminations + std::vector mmInData(768 * 2304); + std::fill(mmInData.begin(), mmInData.end(), 2); + mmInData[0] = 1; + std::vector sumConstData(1 * 1 * 1 * 2304); + std::iota(sumConstData.begin(), sumConstData.end(), 0); + + auto constShift = ngraph::opset5::Constant::create(ngraph::element::f32, sumShape, sumConstData); + auto mmConst = ngraph::opset5::Constant::create(ngraph::element::f32, mmShape2, mmInData); + auto mmParams = builder::makeParams(ngPrec, {mmShape}); + const auto mmOutputNodes = helpers::convert2OutputVector(helpers::castOps2Nodes(mmParams)); + + const auto mm = builder::makeMatMul(mmOutputNodes[0], mmConst, false, false); + auto sum = ngraph::builder::makeEltwise(constShift, mm, ngraph::helpers::EltwiseTypes::ADD); + auto fq = ngraph::builder::makeFakeQuantize(sum, ngraph::element::f32, 256, {}, {-8.0f}, {7.0f}, {-8.0f}, {7.0f}); + + ngraph::ParameterVector inputParams = {mmParams[0]}; + function = makeNgraphFunction(ngPrec, inputParams, fq, "FQScaleshiftWithConstantShift"); + } +}; + +/* Network with SS subgraph and FQ node. Shift in SS is constant-folded. + * Test that FQ-SS fusing works correctly while comparing SS and FQ channel dims. + Input Const + \ / + \ / + \ / + MatMul Const + \ / + \ / + \ / + Add + | + | + FQ + | + | + Output +*/ + +TEST_P(FQScaleshiftWithConstantShiftTest, CompareWithRefs) { + Run(); +} + +namespace { +INSTANTIATE_TEST_SUITE_P(smoke_Check, FQScaleshiftWithConstantShiftTest, + ::testing::Values(Precision::FP32), + FQScaleshiftWithConstantShiftTest::getTestCaseName); +} // namespace +} // namespace SubgraphTestsDefinitions From 5d399faa642cfafa6ee995bf689ad2dfb79bd7e3 Mon Sep 17 00:00:00 2001 From: Anastasiia Pnevskaia Date: Fri, 30 Jun 2023 16:26:14 +0200 Subject: [PATCH 24/25] convert_model() in openvino.runtime. (#18080) * Used pip wheel to build OpenVINO wheel * Added convert_model() to openvino.runtime. * Removed duplication of InputCutInfo, LayoutMap * Switched Model Conversion API tests to convert_model from openvino.runtime. * Small correction. * Format correction. * Small correction. * Removed duplication of moc frontend files. * Small correction. * Removed duplication of cli_parser, offline_transformations. * Code corrections. * Removed code duplications. * Removed code duplications. * Updated codeowners. * Switched layer tests to convert_model(). * Improvements * Small correction. * Caffe parser path fix. * Added python api properly into deb / rpm packages * Moved implementation to ovc tool. * Moved implementation to ovc tool. * Small correction. * Use cmake -E variant from cmake 3.13 * Namespace fixes. * Minor fixes. * Pylint fixes. * Fixed BOM file. * Small corrections. * Minor corrections. * Minor fix. * Error fixes. * Added telemetry requirement. * Improvements to fix CI * Some refactoring * Don't use developer package for scripts projects * Added exception in case when MO is not imported. * Removed exception from init. * Removed changes from cmake. * Added unit ovc tests, fixed minor errors. * Added ovc unit tests to azure. * Corrected imports. * Fixed path to tests. * Added missed files. * Corrected github labels. * Removed benchmark app from dev package. * Small fix. * Small corrections. * Comment fixed. * Removed changes from setup.py * Removed not needed change. * Removed duplicating unit tests. * Removed wrong change. * Removed not needed change. * Apply suggestions from code review Co-authored-by: Roman Kazantsev * Added ovc tool test, corrected imports. * Added legacy TF config test. * Removed not needed files. --------- Co-authored-by: Ilya Lavrenov Co-authored-by: Roman Kazantsev --- .ci/azure/linux.yml | 4 + .github/CODEOWNERS | 1 + .github/labeler.yml | 1 + src/bindings/python/requirements.txt | 1 + .../src/openvino/frontend/tensorflow/utils.py | 6 +- .../python/src/openvino/runtime/__init__.py | 7 + src/bindings/python/wheel/setup.py | 24 +- tests/layer_tests/common/layer_test_class.py | 5 +- .../common/mo_convert_test_class.py | 9 +- .../layer_tests/common/utils/common_utils.py | 15 + .../mo_python_api_tests/mo_convert_help.py | 2 +- .../test_mo_convert_complex_params.py | 3 +- .../test_mo_convert_pytorch.py | 5 +- .../mo_python_api_tests/test_mo_convert_tf.py | 2 +- .../mo_python_api_tests/test_mo_help.py | 2 +- .../mo_python_api_tests/test_ovc_cli_tool.py | 89 + .../pytorch_tests/pytorch_layer_test_class.py | 2 +- tools/CMakeLists.txt | 7 +- tools/mo/automation/package_BOM.txt | 17 +- tools/mo/openvino/tools/mo/__init__.py | 3 +- tools/mo/openvino/tools/mo/back/CutMemory.py | 2 +- tools/mo/openvino/tools/mo/convert.py | 13 +- tools/mo/openvino/tools/mo/convert_impl.py | 34 +- tools/mo/openvino/tools/mo/front/tf/loader.py | 2 +- .../mo/openvino/tools/mo/load/caffe/loader.py | 5 + tools/mo/openvino/tools/mo/main.py | 2 +- tools/mo/openvino/tools/mo/main_caffe.py | 2 +- tools/mo/openvino/tools/mo/main_kaldi.py | 2 +- tools/mo/openvino/tools/mo/main_mxnet.py | 2 +- tools/mo/openvino/tools/mo/main_onnx.py | 2 +- tools/mo/openvino/tools/mo/main_paddle.py | 2 +- tools/mo/openvino/tools/mo/main_tf.py | 2 +- .../mo/middle/passes/convert_data_type.py | 86 +- .../tools/mo/utils/class_registration.py | 3 +- .../mo/openvino/tools/mo/utils/cli_parser.py | 2015 +------ tools/mo/openvino/tools/mo/utils/error.py | 47 +- .../tools/mo/utils/get_ov_update_message.py | 42 - tools/mo/openvino/tools/mo/utils/logger.py | 158 +- .../openvino/tools/mo/utils/telemetry_stub.py | 27 +- .../tools/mo/utils/telemetry_utils.py | 68 +- tools/mo/openvino/tools/mo/utils/utils.py | 30 +- tools/mo/openvino/tools/mo/utils/version.py | 43 +- .../mo/back/moc_preprocessing_test_actual.py | 2 +- .../moc_frontend/moc_extractor_test_actual.py | 2 +- ...onvert_impl_tmp_irs_cleanup_test_actual.py | 2 +- .../unit_tests/mo/utils/ir_reader/ops_test.py | 2 +- .../mo/utils/test_mo_model_analysis_actual.py | 8 +- .../moc_tf_fe/check_info_messages_test.py | 47 +- .../moc_tf_fe/conversion_basic_models_test.py | 277 - .../conversion_incorrect_models_test.py | 31 - tools/ovc/CMakeLists.txt | 36 + tools/ovc/openvino/tools/ovc/__init__.py | 12 + tools/ovc/openvino/tools/ovc/__main__.py | 10 + tools/ovc/openvino/tools/ovc/cli_parser.py | 2045 +++++++ tools/ovc/openvino/tools/ovc/convert.py | 366 ++ .../openvino/tools/ovc/convert_data_type.py | 92 + tools/ovc/openvino/tools/ovc/convert_impl.py | 831 +++ .../tools/ovc/environment_setup_utils.py} | 5 +- tools/ovc/openvino/tools/ovc/error.py | 56 + .../tools/ovc/get_ov_update_message.py | 51 + .../utils => ovc/openvino/tools/ovc}/help.py | 10 +- tools/ovc/openvino/tools/ovc/logger.py | 163 + tools/ovc/openvino/tools/ovc/main.py | 38 + .../tools/ovc}/moc_frontend/__init__.py | 3 + .../tools/ovc}/moc_frontend/analysis.py | 5 +- .../tools/ovc}/moc_frontend/check_config.py | 16 +- .../tools/ovc}/moc_frontend/extractor.py | 35 +- .../tools/ovc}/moc_frontend/layout_utils.py | 9 +- .../tools/ovc/moc_frontend/moc_emit_ir.py} | 14 +- .../moc_frontend}/offline_transformations.py | 65 +- .../moc_frontend/paddle_frontend_utils.py | 4 + .../tools/ovc}/moc_frontend/pipeline.py | 35 +- .../tools/ovc/moc_frontend}/preprocessing.py | 11 +- .../moc_frontend/pytorch_frontend_utils.py | 12 +- .../tools/ovc}/moc_frontend/shape_utils.py | 7 +- tools/ovc/openvino/tools/ovc/ovc.py | 13 + .../openvino/tools/ovc}/telemetry_params.py | 3 + .../ovc/openvino/tools/ovc/telemetry_stub.py | 31 + .../ovc/openvino/tools/ovc/telemetry_utils.py | 77 + tools/ovc/openvino/tools/ovc/types.py | 159 + tools/ovc/openvino/tools/ovc/utils.py | 139 + tools/ovc/openvino/tools/ovc/version.py | 83 + tools/ovc/unit_tests/__init__.py | 0 tools/ovc/unit_tests/moc_tf_fe/__init__.py | 0 .../moc_tf_fe/check_info_messages_test.py | 134 + .../moc_tf_fe/conversion_basic_models_test.py | 328 ++ .../conversion_incorrect_models_test.py | 42 + .../conversion_with_checkpoint_v1_test.py | 0 .../moc_tf_fe/conversion_with_layout_test.py | 6 +- .../test_models/ctc_model_based.pbtxt | 5245 +++++++++++++++++ .../unit_tests/moc_tf_fe/test_models/fake.pb | 0 .../moc_tf_fe/test_models/future_op.pbtxt | 0 .../model_add_with_undefined_constant.pbtxt | 58 + .../model_add_with_undefined_constant.py | 0 .../moc_tf_fe/test_models/model_bool.pbtxt | 0 .../moc_tf_fe/test_models/model_bool.py | 0 .../moc_tf_fe/test_models/model_bool2.pbtxt | 0 .../moc_tf_fe/test_models/model_bool2.py | 0 .../moc_tf_fe/test_models/model_fp32.frozen | 0 .../moc_tf_fe/test_models/model_fp32.pbtxt | 0 .../moc_tf_fe/test_models/model_fp32.py | 0 .../moc_tf_fe/test_models/model_int32.pbtxt | 0 .../moc_tf_fe/test_models/model_int32.py | 0 .../model_mul_with_undefined_constant.pbtxt | 52 + .../model_mul_with_undefined_constant.py | 0 .../test_models/model_oneshot_iterator.pbtxt | 0 .../test_models/model_switch_merge.pbtxt | 0 .../test_models/model_switch_merge.py | 0 .../test_models/model_three_inputs.pbtxt | 0 .../test_models/model_three_inputs.py | 0 .../model_with_convolution_dynamic_rank.pbtxt | 0 .../model_with_convolution_dynamic_rank.py | 0 .../moc_tf_fe/test_models/model_with_if.pbtxt | 0 .../moc_tf_fe/test_models/model_with_if.py | 0 .../test_models/model_with_variable_v1.pbtxt | 0 .../test_models/mul_with_unknown_rank_y.pbtxt | 50 + .../test_models/mul_with_unknown_rank_y.py | 0 .../placeholder_with_default.pbtxt | 0 .../test_models/placeholder_with_default.py | 0 .../{mo => ovc}/unit_tests/moc_tf_fe/utils.py | 2 +- tools/ovc/unit_tests/ovc/__init__.py | 0 tools/ovc/unit_tests/ovc/bom_test.py | 125 + .../ovc/convert/import_from_mo_test.py | 100 + .../unit_tests/ovc/convert/meta_data_test.py | 90 + .../ovc/convert/meta_data_test_actual.py | 86 + tools/ovc/unit_tests/ovc/convert/utils.py | 52 + .../ovc/unit_tests/ovc/main_test_error_log.py | 30 + tools/ovc/unit_tests/ovc/package_BOM.txt | 31 + .../ovc/unit_test_with_mocked_telemetry.py | 19 + tools/ovc/unit_tests/ovc/utils/__init__.py | 0 .../ovc}/utils/args_to_string_test.py | 6 +- .../unit_tests/ovc}/utils/cli_parser_test.py | 17 +- .../unit_tests/ovc}/utils/error_test.py | 2 +- 133 files changed, 11059 insertions(+), 3017 deletions(-) create mode 100644 tests/layer_tests/mo_python_api_tests/test_ovc_cli_tool.py create mode 100644 tools/ovc/CMakeLists.txt create mode 100644 tools/ovc/openvino/tools/ovc/__init__.py create mode 100644 tools/ovc/openvino/tools/ovc/__main__.py create mode 100644 tools/ovc/openvino/tools/ovc/cli_parser.py create mode 100644 tools/ovc/openvino/tools/ovc/convert.py create mode 100644 tools/ovc/openvino/tools/ovc/convert_data_type.py create mode 100644 tools/ovc/openvino/tools/ovc/convert_impl.py rename tools/{mo/openvino/tools/mo/utils/versions_checker.py => ovc/openvino/tools/ovc/environment_setup_utils.py} (96%) create mode 100644 tools/ovc/openvino/tools/ovc/error.py create mode 100644 tools/ovc/openvino/tools/ovc/get_ov_update_message.py rename tools/{mo/openvino/tools/mo/utils => ovc/openvino/tools/ovc}/help.py (96%) create mode 100644 tools/ovc/openvino/tools/ovc/logger.py create mode 100644 tools/ovc/openvino/tools/ovc/main.py rename tools/{mo/openvino/tools/mo => ovc/openvino/tools/ovc}/moc_frontend/__init__.py (68%) rename tools/{mo/openvino/tools/mo => ovc/openvino/tools/ovc}/moc_frontend/analysis.py (95%) rename tools/{mo/openvino/tools/mo => ovc/openvino/tools/ovc}/moc_frontend/check_config.py (92%) rename tools/{mo/openvino/tools/mo => ovc/openvino/tools/ovc}/moc_frontend/extractor.py (94%) rename tools/{mo/openvino/tools/mo => ovc/openvino/tools/ovc}/moc_frontend/layout_utils.py (94%) rename tools/{mo/openvino/tools/mo/moc_frontend/serialize.py => ovc/openvino/tools/ovc/moc_frontend/moc_emit_ir.py} (75%) rename tools/{mo/openvino/tools/mo/back => ovc/openvino/tools/ovc/moc_frontend}/offline_transformations.py (53%) rename tools/{mo/openvino/tools/mo => ovc/openvino/tools/ovc}/moc_frontend/paddle_frontend_utils.py (97%) rename tools/{mo/openvino/tools/mo => ovc/openvino/tools/ovc}/moc_frontend/pipeline.py (92%) rename tools/{mo/openvino/tools/mo/back => ovc/openvino/tools/ovc/moc_frontend}/preprocessing.py (98%) rename tools/{mo/openvino/tools/mo => ovc/openvino/tools/ovc}/moc_frontend/pytorch_frontend_utils.py (96%) rename tools/{mo/openvino/tools/mo => ovc/openvino/tools/ovc}/moc_frontend/shape_utils.py (95%) create mode 100755 tools/ovc/openvino/tools/ovc/ovc.py rename tools/{mo/openvino/tools/mo/utils => ovc/openvino/tools/ovc}/telemetry_params.py (77%) create mode 100644 tools/ovc/openvino/tools/ovc/telemetry_stub.py create mode 100644 tools/ovc/openvino/tools/ovc/telemetry_utils.py create mode 100644 tools/ovc/openvino/tools/ovc/types.py create mode 100644 tools/ovc/openvino/tools/ovc/utils.py create mode 100644 tools/ovc/openvino/tools/ovc/version.py create mode 100644 tools/ovc/unit_tests/__init__.py create mode 100644 tools/ovc/unit_tests/moc_tf_fe/__init__.py create mode 100644 tools/ovc/unit_tests/moc_tf_fe/check_info_messages_test.py create mode 100644 tools/ovc/unit_tests/moc_tf_fe/conversion_basic_models_test.py create mode 100644 tools/ovc/unit_tests/moc_tf_fe/conversion_incorrect_models_test.py rename tools/{mo => ovc}/unit_tests/moc_tf_fe/conversion_with_checkpoint_v1_test.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/conversion_with_layout_test.py (94%) create mode 100644 tools/ovc/unit_tests/moc_tf_fe/test_models/ctc_model_based.pbtxt rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/fake.pb (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/future_op.pbtxt (100%) create mode 100644 tools/ovc/unit_tests/moc_tf_fe/test_models/model_add_with_undefined_constant.pbtxt rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_add_with_undefined_constant.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_bool.pbtxt (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_bool.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_bool2.pbtxt (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_bool2.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_fp32.frozen (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_fp32.pbtxt (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_fp32.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_int32.pbtxt (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_int32.py (100%) create mode 100644 tools/ovc/unit_tests/moc_tf_fe/test_models/model_mul_with_undefined_constant.pbtxt rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_mul_with_undefined_constant.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_oneshot_iterator.pbtxt (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_switch_merge.pbtxt (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_switch_merge.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_three_inputs.pbtxt (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_three_inputs.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_with_convolution_dynamic_rank.pbtxt (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_with_convolution_dynamic_rank.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_with_if.pbtxt (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_with_if.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/model_with_variable_v1.pbtxt (100%) create mode 100644 tools/ovc/unit_tests/moc_tf_fe/test_models/mul_with_unknown_rank_y.pbtxt rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/mul_with_unknown_rank_y.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/placeholder_with_default.pbtxt (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/test_models/placeholder_with_default.py (100%) rename tools/{mo => ovc}/unit_tests/moc_tf_fe/utils.py (96%) create mode 100644 tools/ovc/unit_tests/ovc/__init__.py create mode 100644 tools/ovc/unit_tests/ovc/bom_test.py create mode 100644 tools/ovc/unit_tests/ovc/convert/import_from_mo_test.py create mode 100644 tools/ovc/unit_tests/ovc/convert/meta_data_test.py create mode 100644 tools/ovc/unit_tests/ovc/convert/meta_data_test_actual.py create mode 100644 tools/ovc/unit_tests/ovc/convert/utils.py create mode 100644 tools/ovc/unit_tests/ovc/main_test_error_log.py create mode 100644 tools/ovc/unit_tests/ovc/package_BOM.txt create mode 100644 tools/ovc/unit_tests/ovc/unit_test_with_mocked_telemetry.py create mode 100644 tools/ovc/unit_tests/ovc/utils/__init__.py rename tools/{mo/unit_tests/mo => ovc/unit_tests/ovc}/utils/args_to_string_test.py (96%) rename tools/{mo/unit_tests/mo => ovc/unit_tests/ovc}/utils/cli_parser_test.py (99%) rename tools/{mo/unit_tests/mo => ovc/unit_tests/ovc}/utils/error_test.py (93%) diff --git a/.ci/azure/linux.yml b/.ci/azure/linux.yml index aac8a2da42e..3f619a386dc 100644 --- a/.ci/azure/linux.yml +++ b/.ci/azure/linux.yml @@ -449,6 +449,10 @@ jobs: python3 -m pytest -s $(INSTALL_TEST_DIR)/mo/unit_tests --junitxml=$(INSTALL_TEST_DIR)/TEST-ModelOptimizer.xml displayName: 'Model Optimizer UT' + - script: | + python3 -m pytest -s $(REPO_DIR)/tools/ovc/unit_tests --junitxml=$(INSTALL_TEST_DIR)/TEST-OpenVinoConversion.xml + displayName: 'OpenVino Conversion UT' + - script: $(RUN_PREFIX) $(INSTALL_TEST_DIR)/ov_cpu_func_tests --gtest_filter=*smoke* --gtest_print_time=1 --gtest_output=xml:$(INSTALL_TEST_DIR)/TEST-ov_cpu_func_tests.xml displayName: 'CPU FuncTests' condition: and(succeeded(), eq(variables['CMAKE_BUILD_SHARED_LIBS'], 'OFF')) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 4ff308d491e..25ab1cec3e0 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -99,6 +99,7 @@ /tools/legacy/ @openvinotoolkit/openvino-samples-maintainers /tools/openvino_dev/ @openvinotoolkit/openvino-tools-maintainers @openvinotoolkit/openvino-ie-python-api-maintainers /tools/mo/ @openvinotoolkit/openvino-mo-maintainers +/tools/ovc/ @openvinotoolkit/openvino-mo-maintainers /tools/pot/ @openvinotoolkit/openvino-pot-maintainers /thirdparty/open_model_zoo/ @openvinotoolkit/omz-maintainers @openvinotoolkit/openvino-pot-maintainers diff --git a/.github/labeler.yml b/.github/labeler.yml index a32a730b3c2..a8b556ac91e 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -87,6 +87,7 @@ 'category: MO': - 'tools/mo/**/*' +- 'tools/ovc/**/*' 'category: ONNX FE': - 'src/frontends/onnx/**/*' diff --git a/src/bindings/python/requirements.txt b/src/bindings/python/requirements.txt index 968d95b8760..55906b7f4f4 100644 --- a/src/bindings/python/requirements.txt +++ b/src/bindings/python/requirements.txt @@ -1,2 +1,3 @@ numpy>=1.16.6 singledispatchmethod; python_version<'3.8' +openvino-telemetry>=2023.0.0 diff --git a/src/bindings/python/src/openvino/frontend/tensorflow/utils.py b/src/bindings/python/src/openvino/frontend/tensorflow/utils.py index d7df293fdcc..e3aab79d5ab 100644 --- a/src/bindings/python/src/openvino/frontend/tensorflow/utils.py +++ b/src/bindings/python/src/openvino/frontend/tensorflow/utils.py @@ -5,9 +5,9 @@ # mypy: ignore-errors -from openvino.tools.mo.moc_frontend.shape_utils import get_static_shape -from openvino.tools.mo.utils.versions_checker import get_environment_setup # pylint: disable=no-name-in-module -from openvino.tools.mo.utils.error import Error +from openvino.tools.ovc.moc_frontend.shape_utils import get_static_shape +from openvino.tools.ovc.environment_setup_utils import get_environment_setup # pylint: disable=no-name-in-module +from openvino.tools.ovc.error import Error from distutils.version import LooseVersion import logging as log diff --git a/src/bindings/python/src/openvino/runtime/__init__.py b/src/bindings/python/src/openvino/runtime/__init__.py index 03a57cfea69..83de66dd249 100644 --- a/src/bindings/python/src/openvino/runtime/__init__.py +++ b/src/bindings/python/src/openvino/runtime/__init__.py @@ -67,6 +67,13 @@ from openvino.runtime.ie_api import tensor_from_file from openvino.runtime.ie_api import compile_model +# Model Conversion API +try: + from openvino.tools.ovc import convert_model, InputCutInfo, LayoutMap +except ImportError: + pass + + # Extend Node class to support binary operators Node.__add__ = opset11.add Node.__sub__ = opset11.subtract diff --git a/src/bindings/python/wheel/setup.py b/src/bindings/python/wheel/setup.py index 76d756b66cd..6feaa815196 100644 --- a/src/bindings/python/wheel/setup.py +++ b/src/bindings/python/wheel/setup.py @@ -175,6 +175,18 @@ PY_INSTALL_CFG = { "install_dir": PY_PACKAGES_DIR, "binary_dir": OPENVINO_PYTHON_BINARY_DIR, }, + "ovc": { + "entry_point": { + "console_scripts": [ + "ovc = openvino.tools.ovc.main:main", + ], + }, + "name": f"pyopenvino_{PYTHON_VERSION}", + "prefix": f"{BUILD_BASE}/site-packages", + "source_dir": f"{OPENVINO_SOURCE_DIR}/tools/ovc", + "install_dir": PY_PACKAGES_DIR, + "binary_dir": "ovc", + }, # "benchmark_app": { # noqa: E731 # "entry_point": { # noqa: E731 # "console_scripts": [ # noqa: E731 @@ -187,18 +199,6 @@ PY_INSTALL_CFG = { # "install_dir": PY_PACKAGES_DIR, # noqa: E731 # "binary_dir": "benchmark_app", # noqa: E731 # }, # noqa: E731 - # "model_optimizer": { # noqa: E731 - # "entry_point": { # noqa: E731 - # "console_scripts": [ # noqa: E731 - # "mo = openvino.tools.mo.main:main", # noqa: E731 - # ], # noqa: E731 - # }, # noqa: E731 - # "name": f"pyopenvino_{PYTHON_VERSION}", # noqa: E731 - # "prefix": f"{BUILD_BASE}/site-packages", # noqa: E731 - # "source_dir": f"{OPENVINO_SOURCE_DIR}/tools/mo", # noqa: E731 - # "install_dir": PY_PACKAGES_DIR, # noqa: E731 - # "binary_dir": "model_optimizer", # noqa: E731 - # }, # noqa: E731 } diff --git a/tests/layer_tests/common/layer_test_class.py b/tests/layer_tests/common/layer_test_class.py index 02a354fa457..f51ae63d8bc 100644 --- a/tests/layer_tests/common/layer_test_class.py +++ b/tests/layer_tests/common/layer_test_class.py @@ -11,8 +11,7 @@ from pathlib import Path import numpy as np from common.constants import test_device, test_precision from common.layer_utils import IEInfer, InferAPI20 -from common.utils.common_utils import generate_ir -from common.utils.parsers import mapping_parser +from common.utils.common_utils import generate_ir_python_api class CommonLayerTest: @@ -60,7 +59,7 @@ class CommonLayerTest: else: mo_params["use_legacy_frontend"] = True - exit_code, stderr = generate_ir(**mo_params) + exit_code, stderr = generate_ir_python_api(**mo_params) del os.environ['MO_ENABLED_TRANSFORMS'] del os.environ['MO_DISABLED_TRANSFORMS'] diff --git a/tests/layer_tests/common/mo_convert_test_class.py b/tests/layer_tests/common/mo_convert_test_class.py index f6086fd4d36..f49e9d2fb43 100644 --- a/tests/layer_tests/common/mo_convert_test_class.py +++ b/tests/layer_tests/common/mo_convert_test_class.py @@ -3,9 +3,9 @@ from pathlib import Path -from openvino.runtime import serialize +from openvino.runtime import serialize, convert_model +from openvino.tools.mo import convert_model as legacy_convert_model from openvino.test_utils import compare_functions -from openvino.tools.mo import convert_model from common.utils.common_utils import generate_ir @@ -16,7 +16,10 @@ class CommonMOConvertTest: output_dir = kwargs['output_dir'] model_name = kwargs['model_name'] del kwargs['output_dir'] - model = convert_model(**kwargs) + if 'use_legacy_frontend' in kwargs: + model = legacy_convert_model(**kwargs) + else: + model = convert_model(**kwargs) serialize(model, str(Path(output_dir, model_name + '.xml'))) def _test(self, temp_dir, test_params, ref_params): diff --git a/tests/layer_tests/common/utils/common_utils.py b/tests/layer_tests/common/utils/common_utils.py index dda6286c504..33f3bc30b62 100644 --- a/tests/layer_tests/common/utils/common_utils.py +++ b/tests/layer_tests/common/utils/common_utils.py @@ -2,6 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 import logging +import os import shutil import subprocess import sys @@ -46,6 +47,20 @@ def generate_ir(coverage=False, **kwargs): return exit_code, stderr +def generate_ir_python_api(coverage=False, **kwargs): + from openvino.runtime import convert_model, serialize + from openvino.tools.mo import convert_model as legacy_convert_model + + if "use_legacy_frontend" in kwargs and kwargs['use_legacy_frontend']: + ov_model = legacy_convert_model(**kwargs) + else: + ov_model = convert_model(**kwargs) + + out_dir = kwargs['output_dir'] + os.sep + kwargs['model_name'] + ".xml" + serialize(ov_model, out_dir) + + return 0, "" + def shell(cmd, env=None, cwd=None, out_format="plain"): """ Run command execution in specified environment diff --git a/tests/layer_tests/mo_python_api_tests/mo_convert_help.py b/tests/layer_tests/mo_python_api_tests/mo_convert_help.py index ff9c334b614..639e2478819 100644 --- a/tests/layer_tests/mo_python_api_tests/mo_convert_help.py +++ b/tests/layer_tests/mo_python_api_tests/mo_convert_help.py @@ -1,7 +1,7 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -from openvino.tools.mo import convert_model +from openvino.runtime import convert_model if __name__ == "__main__": convert_model(help=True) diff --git a/tests/layer_tests/mo_python_api_tests/test_mo_convert_complex_params.py b/tests/layer_tests/mo_python_api_tests/test_mo_convert_complex_params.py index 6208591a53b..c2400a5abc0 100644 --- a/tests/layer_tests/mo_python_api_tests/test_mo_convert_complex_params.py +++ b/tests/layer_tests/mo_python_api_tests/test_mo_convert_complex_params.py @@ -4,8 +4,7 @@ import numpy as np import os import pytest -from openvino.runtime import Model, Layout, PartialShape, Shape, layout_helpers, Type, Dimension -from openvino.tools.mo.convert import InputCutInfo, LayoutMap +from openvino.runtime import Model, Layout, PartialShape, Shape, layout_helpers, Type, Dimension, InputCutInfo, LayoutMap from common.mo_convert_test_class import CommonMOConvertTest from common.tf_layer_test_class import save_to_pb diff --git a/tests/layer_tests/mo_python_api_tests/test_mo_convert_pytorch.py b/tests/layer_tests/mo_python_api_tests/test_mo_convert_pytorch.py index 402f0d3a907..b519a0bc599 100644 --- a/tests/layer_tests/mo_python_api_tests/test_mo_convert_pytorch.py +++ b/tests/layer_tests/mo_python_api_tests/test_mo_convert_pytorch.py @@ -9,8 +9,7 @@ import openvino.runtime as ov import pytest import torch import unittest -from openvino.runtime import PartialShape, Dimension, Model, Type -from openvino.tools.mo import InputCutInfo +from openvino.runtime import PartialShape, Dimension, Model, Type, InputCutInfo from common.mo_convert_test_class import CommonMOConvertTest @@ -747,7 +746,7 @@ def create_pt_model_with_custom_op(): class ConvertRaises(unittest.TestCase): def test_example_inputs(self): - from openvino.tools.mo import convert_model + from openvino.runtime import convert_model pytorch_model = create_pt_model_with_custom_op() # Check that mo raises error message of wrong argument. diff --git a/tests/layer_tests/mo_python_api_tests/test_mo_convert_tf.py b/tests/layer_tests/mo_python_api_tests/test_mo_convert_tf.py index 849eb94d191..08589e3cbc5 100644 --- a/tests/layer_tests/mo_python_api_tests/test_mo_convert_tf.py +++ b/tests/layer_tests/mo_python_api_tests/test_mo_convert_tf.py @@ -666,7 +666,7 @@ class TFConvertTest(unittest.TestCase): @pytest.mark.precommit def test_tf_function_no_signature(self): import tensorflow as tf - from openvino.tools.mo import convert_model + from openvino.runtime import convert_model @tf.function() def function(x1, x2): diff --git a/tests/layer_tests/mo_python_api_tests/test_mo_help.py b/tests/layer_tests/mo_python_api_tests/test_mo_help.py index 3ac5a0444a6..e10ba33505d 100644 --- a/tests/layer_tests/mo_python_api_tests/test_mo_help.py +++ b/tests/layer_tests/mo_python_api_tests/test_mo_help.py @@ -6,7 +6,7 @@ import os import sys import unittest from openvino.tools.mo import mo -from openvino.tools.mo.utils.cli_parser import get_mo_convert_params +from openvino.tools.ovc.cli_parser import get_mo_convert_params from pathlib import Path from common.utils.common_utils import shell diff --git a/tests/layer_tests/mo_python_api_tests/test_ovc_cli_tool.py b/tests/layer_tests/mo_python_api_tests/test_ovc_cli_tool.py new file mode 100644 index 00000000000..af363c6e71b --- /dev/null +++ b/tests/layer_tests/mo_python_api_tests/test_ovc_cli_tool.py @@ -0,0 +1,89 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import sys +from pathlib import Path + +import numpy as np +import openvino.runtime as ov +from openvino.runtime import PartialShape, Model +from openvino.test_utils import compare_functions +from openvino.tools.ovc import ovc + +from common.mo_convert_test_class import CommonMOConvertTest +from common.tf_layer_test_class import save_to_pb +from common.utils.common_utils import shell + + +def generate_ir_ovc(coverage=False, **kwargs): + # Get OVC file directory + ovc_path = Path(ovc.__file__).parent + + ovc_runner = ovc_path.joinpath('main.py').as_posix() + if coverage: + params = [sys.executable, '-m', 'coverage', 'run', '-p', '--source={}'.format(ovc_runner.parent), + '--omit=*_test.py', ovc_runner] + else: + params = [sys.executable, ovc_runner] + for key, value in kwargs.items(): + if key == "batch": + params.extend(("-b", str(value))) + elif key == "k": + params.extend(("-k", str(value))) + # for FP32 set explicitly compress_to_fp16=False, + # if we omit this argument for FP32, it will be set implicitly to True as the default + elif key == 'compress_to_fp16': + params.append("--{}={}".format(key, value)) + elif isinstance(value, bool) and value: + params.append("--{}".format(key)) + elif isinstance(value, bool) and not value: + continue + elif (isinstance(value, tuple) and value) or (isinstance(value, str)): + params.extend(("--{}".format(key), str('"{}"'.format(value)))) + elif key == "mean_values" and (' ' in value or '(' in value): + params.extend(("--{}".format(key), str('"{}"'.format(value)))) + else: + params.extend(("--{}".format(key), str(value))) + exit_code, stdout, stderr = shell(params) + return exit_code, stderr + +def create_ref_graph(): + shape = PartialShape([1, 3, 2, 2]) + param = ov.opset8.parameter(shape, dtype=np.float32) + relu = ov.opset8.relu(param) + sigm = ov.opset8.sigmoid(relu) + + return Model([sigm], [param], "test") + +class TestOVCTool(CommonMOConvertTest): + def create_tf_model(self, tmp_dir): + import tensorflow as tf + + tf.compat.v1.reset_default_graph() + + with tf.compat.v1.Session() as sess: + inp = tf.compat.v1.placeholder(tf.float32, [1, 3, 2, 2], 'Input') + relu = tf.nn.relu(inp, name='Relu') + output = tf.nn.sigmoid(relu, name='Sigmoid') + tf.compat.v1.global_variables_initializer() + tf_net = sess.graph_def + + # save model to .pb and return path to the model + return save_to_pb(tf_net, tmp_dir) + + + def test_ovc_tool(self, ie_device, precision, ir_version, temp_dir, use_new_frontend, use_old_api): + from openvino.runtime import Core + + model_path = self.create_tf_model(temp_dir) + + core = Core() + + # tests for MO cli tool + exit_code, stderr = generate_ir_ovc(coverage=False, **{"input_model": model_path, "output_dir": temp_dir}) + assert not exit_code + + ov_model = core.read_model(os.path.join(temp_dir, "model.xml")) + flag, msg = compare_functions(ov_model, create_ref_graph(), False) + assert flag, msg diff --git a/tests/layer_tests/pytorch_tests/pytorch_layer_test_class.py b/tests/layer_tests/pytorch_tests/pytorch_layer_test_class.py index 9511225b263..ae30a7e3ed8 100644 --- a/tests/layer_tests/pytorch_tests/pytorch_layer_test_class.py +++ b/tests/layer_tests/pytorch_tests/pytorch_layer_test_class.py @@ -139,7 +139,7 @@ class PytorchLayerTest: def convert_via_mo(self, model, example_input, trace_model, dynamic_shapes, ov_inputs): import torch - from openvino.tools.mo import convert_model + from openvino.runtime import convert_model kwargs = {"example_input": example_input if len( example_input) > 1 else example_input[0], "compress_to_fp16": False} with torch.no_grad(): diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 89a14833d31..21bb17cdb56 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -36,10 +36,15 @@ add_subdirectory(mo) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pot/openvino/tools/pot/version.txt.in" "${CMAKE_CURRENT_SOURCE_DIR}/pot/openvino/tools/pot/version.txt" @ONLY) -# Benchmark Tool if(ENABLE_PYTHON) + +# Benchmark Tool add_subdirectory(benchmark_tool) + +# OpenVino Conversion Tool + add_subdirectory(ovc) + endif() # wheel openvino-dev diff --git a/tools/mo/automation/package_BOM.txt b/tools/mo/automation/package_BOM.txt index cfd0342aaff..d6e01875ac8 100644 --- a/tools/mo/automation/package_BOM.txt +++ b/tools/mo/automation/package_BOM.txt @@ -41,12 +41,10 @@ openvino/tools/mo/back/MatMulNormalizer.py openvino/tools/mo/back/MaxPool.py openvino/tools/mo/back/names_uniqueness_check.py openvino/tools/mo/back/NormalizeToNormalizeL2.py -openvino/tools/mo/back/offline_transformations.py openvino/tools/mo/back/op_versioning.py openvino/tools/mo/back/OptimizeTransposeReshapeSequence.py openvino/tools/mo/back/PackBinaryWeights.py openvino/tools/mo/back/pass_separator.py -openvino/tools/mo/back/preprocessing.py openvino/tools/mo/back/priorbox_mutation.py openvino/tools/mo/back/ProposalMutation.py openvino/tools/mo/back/ReduceMerge.py @@ -831,16 +829,6 @@ openvino/tools/mo/mo_mxnet.py openvino/tools/mo/mo_onnx.py openvino/tools/mo/mo_paddle.py openvino/tools/mo/mo_tf.py -openvino/tools/mo/moc_frontend/__init__.py -openvino/tools/mo/moc_frontend/analysis.py -openvino/tools/mo/moc_frontend/check_config.py -openvino/tools/mo/moc_frontend/extractor.py -openvino/tools/mo/moc_frontend/layout_utils.py -openvino/tools/mo/moc_frontend/paddle_frontend_utils.py -openvino/tools/mo/moc_frontend/pipeline.py -openvino/tools/mo/moc_frontend/pytorch_frontend_utils.py -openvino/tools/mo/moc_frontend/serialize.py -openvino/tools/mo/moc_frontend/shape_utils.py openvino/tools/mo/ops/__init__.py openvino/tools/mo/ops/activation.py openvino/tools/mo/ops/activation_ops.py @@ -1038,7 +1026,6 @@ openvino/tools/mo/utils/find_inputs.py openvino/tools/mo/utils/get_ov_update_message.py openvino/tools/mo/utils/graph.py openvino/tools/mo/utils/guess_framework.py -openvino/tools/mo/utils/help.py openvino/tools/mo/utils/ie_version.py openvino/tools/mo/utils/import_extensions.py openvino/tools/mo/utils/ir_engine/__init__.py @@ -1098,12 +1085,10 @@ openvino/tools/mo/utils/shape.py openvino/tools/mo/utils/simple_proto_parser.py openvino/tools/mo/utils/str_to.py openvino/tools/mo/utils/summarize_graph.py -openvino/tools/mo/utils/telemetry_params.py openvino/tools/mo/utils/telemetry_stub.py openvino/tools/mo/utils/telemetry_utils.py openvino/tools/mo/utils/tensorboard_util.py openvino/tools/mo/utils/type_utils.py openvino/tools/mo/utils/unsupported_ops.py openvino/tools/mo/utils/utils.py -openvino/tools/mo/utils/version.py -openvino/tools/mo/utils/versions_checker.py \ No newline at end of file +openvino/tools/mo/utils/version.py \ No newline at end of file diff --git a/tools/mo/openvino/tools/mo/__init__.py b/tools/mo/openvino/tools/mo/__init__.py index 8d998f261fb..84d80c1010a 100644 --- a/tools/mo/openvino/tools/mo/__init__.py +++ b/tools/mo/openvino/tools/mo/__init__.py @@ -1,4 +1,5 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -from .convert import convert_model, InputCutInfo, LayoutMap +from openvino.tools.mo.convert import convert_model +from openvino.tools.ovc import InputCutInfo, LayoutMap # pylint: disable=no-name-in-module,import-error diff --git a/tools/mo/openvino/tools/mo/back/CutMemory.py b/tools/mo/openvino/tools/mo/back/CutMemory.py index 3d2b0965f3a..e0ca8e59569 100644 --- a/tools/mo/openvino/tools/mo/back/CutMemory.py +++ b/tools/mo/openvino/tools/mo/back/CutMemory.py @@ -6,7 +6,7 @@ from openvino.tools.mo.back.replacement import BackReplacementPattern from openvino.tools.mo.front.common.partial_infer.utils import mo_array from openvino.tools.mo.graph.graph import Graph from openvino.tools.mo.ops.crop import Crop -from openvino.tools.mo.utils.logger import log +from openvino.tools.ovc.logger import log # pylint: disable=no-name-in-module,import-error class CutMemoryInput(BackReplacementPattern): diff --git a/tools/mo/openvino/tools/mo/convert.py b/tools/mo/openvino/tools/mo/convert.py index bc8e76fdd19..06855965e40 100644 --- a/tools/mo/openvino/tools/mo/convert.py +++ b/tools/mo/openvino/tools/mo/convert.py @@ -2,16 +2,13 @@ # SPDX-License-Identifier: Apache-2.0 import os import pathlib -from collections import namedtuple from typing import Any from openvino.runtime import PartialShape, Shape, Layout, Model from openvino.tools.mo.convert_impl import _convert -from openvino.tools.mo.utils.cli_parser import get_all_cli_parser -from openvino.tools.mo.utils.logger import get_logger_state, restore_logger_state - -InputCutInfo = namedtuple("InputInfo", ["name", "shape", "type", "value"], defaults=[None, None, None, None]) -LayoutMap = namedtuple("LayoutMap", ["source_layout", "target_layout"], defaults=[None, None]) +from openvino.tools.ovc import InputCutInfo, LayoutMap # pylint: disable=no-name-in-module,import-error +from openvino.tools.ovc.cli_parser import get_all_cli_parser # pylint: disable=no-name-in-module,import-error +from openvino.tools.ovc.logger import get_logger_state, restore_logger_state # pylint: disable=no-name-in-module,import-error def convert_model( @@ -68,8 +65,8 @@ def convert_model( # Caffe*-specific parameters: input_proto: [str, pathlib.Path] = None, - caffe_parser_path: [str, pathlib.Path] = os.path.join(os.path.dirname(__file__), 'front', 'caffe', 'proto'), - k: [str, pathlib.Path] = os.path.join(os.path.dirname(__file__), 'front', 'caffe', 'CustomLayersMapping.xml'), + caffe_parser_path: [str, pathlib.Path] = None, + k: [str, pathlib.Path] = None, disable_omitting_optional: bool = False, enable_flattening_nested_params: bool = False, diff --git a/tools/mo/openvino/tools/mo/convert_impl.py b/tools/mo/openvino/tools/mo/convert_impl.py index ab00c552cdc..7d183992f5e 100644 --- a/tools/mo/openvino/tools/mo/convert_impl.py +++ b/tools/mo/openvino/tools/mo/convert_impl.py @@ -10,7 +10,6 @@ import sys import traceback from collections import OrderedDict from copy import deepcopy -from distutils.version import LooseVersion from pathlib import Path try: @@ -19,17 +18,19 @@ except ImportError: import openvino.tools.mo.utils.telemetry_stub as tm from openvino.tools.mo.back.SpecialNodesFinalization import RemoveConstOps, CreateConstNodesReplacement, NormalizeTI -from openvino.tools.mo.moc_frontend.check_config import legacy_transformations_config_used, \ - tensorflow_custom_operations_config_update_used, new_extensions_used -from openvino.tools.mo.moc_frontend.pipeline import moc_pipeline -from openvino.tools.mo.moc_frontend.serialize import moc_emit_ir +from openvino.tools.ovc.moc_frontend.check_config import legacy_transformations_config_used, \ + tensorflow_custom_operations_config_update_used, new_extensions_used # pylint: disable=no-name-in-module,import-error +from openvino.tools.ovc.moc_frontend.pipeline import moc_pipeline # pylint: disable=no-name-in-module,import-error +from openvino.tools.ovc.moc_frontend.moc_emit_ir import moc_emit_ir # pylint: disable=no-name-in-module,import-error from openvino.tools.mo.graph.graph import Graph from openvino.tools.mo.middle.pattern_match import for_graph_and_each_sub_graph_recursively from openvino.tools.mo.middle.passes.convert_data_type import destination_type_to_np_data_type from openvino.tools.mo.pipeline.common import prepare_emit_ir from openvino.tools.mo.pipeline.unified import unified_pipeline from openvino.tools.mo.utils import import_extensions -from openvino.tools.mo.utils.cli_parser import check_available_transforms, \ + +# pylint: disable=no-name-in-module,import-error +from openvino.tools.ovc.cli_parser import check_available_transforms, \ get_advanced_cli_options, get_available_front_ends, get_caffe_cli_options, \ get_common_cli_options, get_freeze_placeholder_values, get_kaldi_cli_options, get_layout_values, \ get_mean_scale_dictionary, get_mxnet_cli_options, get_onnx_cli_options, \ @@ -38,19 +39,20 @@ from openvino.tools.mo.utils.cli_parser import check_available_transforms, \ input_shape_to_input_cut_info, freeze_placeholder_to_input_cut_info from openvino.tools.mo.utils.error import Error, FrameworkError -from openvino.tools.mo.utils.get_ov_update_message import get_ov_update_message, get_ov_api20_message, \ - get_tf_fe_message, get_try_legacy_fe_message, get_compression_message +from openvino.tools.ovc.get_ov_update_message import get_ov_update_message, get_ov_api20_message, \ + get_tf_fe_message, get_compression_message # pylint: disable=no-name-in-module,import-error +from openvino.tools.mo.utils.get_ov_update_message import get_try_legacy_fe_message from openvino.tools.mo.utils.model_analysis import AnalysisResults from openvino.tools.mo.utils.version import VersionChecker from openvino.tools.mo.utils.guess_framework import deduce_legacy_frontend_by_namespace -from openvino.tools.mo.utils.logger import init_logger, progress_printer +from openvino.tools.ovc.logger import init_logger, progress_printer # pylint: disable=no-name-in-module,import-error from openvino.tools.mo.utils.utils import refer_to_faq_msg, check_values_equal from openvino.tools.mo.utils.telemetry_utils import send_params_info, send_framework_info, send_conversion_result, \ get_tid -from openvino.tools.mo.moc_frontend.check_config import legacy_extensions_used -from openvino.tools.mo.moc_frontend.pytorch_frontend_utils import get_pytorch_decoder, extract_input_info_from_example -from openvino.tools.mo.moc_frontend.paddle_frontend_utils import paddle_frontend_converter -from openvino.tools.mo.moc_frontend.shape_utils import parse_input_shapes +from openvino.tools.ovc.moc_frontend.check_config import legacy_extensions_used # pylint: disable=no-name-in-module,import-error +from openvino.tools.ovc.moc_frontend.pytorch_frontend_utils import get_pytorch_decoder, extract_input_info_from_example # pylint: disable=no-name-in-module,import-error +from openvino.tools.ovc.moc_frontend.paddle_frontend_utils import paddle_frontend_converter # pylint: disable=no-name-in-module,import-error +from openvino.tools.ovc.moc_frontend.shape_utils import parse_input_shapes # pylint: disable=no-name-in-module,import-error # pylint: disable=no-name-in-module,import-error from openvino.frontend import FrontEndManager, OpConversionFailure, ProgressReporterExtension, TelemetryExtension @@ -491,7 +493,7 @@ def emit_ir(graph: Graph, argv: argparse.Namespace, non_default_params: dict): return_code = "not executed" if not (argv.framework == 'tf' and argv.tensorflow_custom_operations_config_update): try: - from openvino.tools.mo.back.offline_transformations import apply_offline_transformations + from openvino.tools.ovc.moc_frontend.offline_transformations import apply_offline_transformations # pylint: disable=no-name-in-module,import-error func = apply_offline_transformations(func, argv) if "compress_to_fp16" in argv and argv.compress_to_fp16: # restore data_type cmd parameter @@ -841,7 +843,7 @@ def _convert(cli_parser: argparse.ArgumentParser, framework, args, python_api_us elif 'example_inputs' in args: raise AssertionError("'example_inputs' argument is not recognized, maybe you meant to provide 'example_input'?") - decoder = get_pytorch_decoder(args['input_model'], parse_input_shapes(args), example_inputs, args) + decoder = get_pytorch_decoder(args['input_model'], parse_input_shapes(args), example_inputs, args) if model_framework == "paddle": example_inputs = None if 'example_input' in args and args['example_input'] is not None: @@ -951,6 +953,6 @@ def _convert(cli_parser: argparse.ArgumentParser, framework, args, python_api_us send_conversion_result('fail') if python_api_used: - raise e#.with_traceback(None) + raise e.with_traceback(None) else: return None, argv diff --git a/tools/mo/openvino/tools/mo/front/tf/loader.py b/tools/mo/openvino/tools/mo/front/tf/loader.py index 72acbe0dd6d..4e0035a76ac 100644 --- a/tools/mo/openvino/tools/mo/front/tf/loader.py +++ b/tools/mo/openvino/tools/mo/front/tf/loader.py @@ -11,7 +11,7 @@ from pathlib import Path from openvino.tools.mo.graph.graph import Node from openvino.tools.mo.utils.error import Error, FrameworkError from openvino.tools.mo.utils.utils import refer_to_faq_msg -from openvino.tools.mo.utils.versions_checker import get_environment_setup +from openvino.tools.ovc.environment_setup_utils import get_environment_setup # pylint: disable=no-name-in-module,import-error # do not print INFO and WARNING messages from TensorFlow os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' diff --git a/tools/mo/openvino/tools/mo/load/caffe/loader.py b/tools/mo/openvino/tools/mo/load/caffe/loader.py index 05426b49554..b9f0356dc26 100644 --- a/tools/mo/openvino/tools/mo/load/caffe/loader.py +++ b/tools/mo/openvino/tools/mo/load/caffe/loader.py @@ -1,6 +1,7 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +import os from openvino.tools.mo.load.loader import Loader from openvino.tools.mo.front.caffe import custom_layers_mapping, loader from openvino.tools.mo.front.caffe.extractor import caffe_type_extractors, caffe_extractor @@ -17,6 +18,8 @@ class CaffeLoader(Loader): def load(self, graph: Graph): argv = graph.graph['cmd_params'] + if argv.caffe_parser_path is None: + argv.caffe_parser_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'front', 'caffe', 'proto') caffe_pb2 = loader.import_caffe_pb2(argv.caffe_parser_path) proto, model = loader.load_caffe_proto_model(caffe_pb2, argv.input_proto, argv.input_model) @@ -42,6 +45,8 @@ class CaffeLoader(Loader): graph.graph['original_shapes'] = original_shapes graph.graph['caffe_pb2'] = caffe_pb2 + if argv.k is None: + argv.k = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'front', 'caffe', 'CustomLayersMapping.xml') custom_layers_map = custom_layers_mapping.load_layers_xml(argv.k) custom_layers_mapping.update_extractors( caffe_type_extractors, diff --git a/tools/mo/openvino/tools/mo/main.py b/tools/mo/openvino/tools/mo/main.py index d5fe1bcd08d..b6d3affa738 100644 --- a/tools/mo/openvino/tools/mo/main.py +++ b/tools/mo/openvino/tools/mo/main.py @@ -34,5 +34,5 @@ def main(cli_parser: argparse.ArgumentParser, framework=None): if __name__ == "__main__": - from openvino.tools.mo.utils.cli_parser import get_all_cli_parser + from openvino.tools.ovc.cli_parser import get_all_cli_parser # pylint: disable=no-name-in-module,import-error sys.exit(main(get_all_cli_parser(), None)) diff --git a/tools/mo/openvino/tools/mo/main_caffe.py b/tools/mo/openvino/tools/mo/main_caffe.py index 7086e44c7f0..a2a30426638 100644 --- a/tools/mo/openvino/tools/mo/main_caffe.py +++ b/tools/mo/openvino/tools/mo/main_caffe.py @@ -3,7 +3,7 @@ import sys -from openvino.tools.mo.utils.cli_parser import get_caffe_cli_parser +from openvino.tools.ovc.cli_parser import get_caffe_cli_parser # pylint: disable=no-name-in-module,import-error if __name__ == "__main__": from openvino.tools.mo.main import main diff --git a/tools/mo/openvino/tools/mo/main_kaldi.py b/tools/mo/openvino/tools/mo/main_kaldi.py index 15ce48009ef..2c29fa8cb08 100644 --- a/tools/mo/openvino/tools/mo/main_kaldi.py +++ b/tools/mo/openvino/tools/mo/main_kaldi.py @@ -3,7 +3,7 @@ import sys -from openvino.tools.mo.utils.cli_parser import get_kaldi_cli_parser +from openvino.tools.ovc.cli_parser import get_kaldi_cli_parser # pylint: disable=no-name-in-module,import-error if __name__ == "__main__": from openvino.tools.mo.main import main diff --git a/tools/mo/openvino/tools/mo/main_mxnet.py b/tools/mo/openvino/tools/mo/main_mxnet.py index 5481472358f..46c4d5f9a81 100644 --- a/tools/mo/openvino/tools/mo/main_mxnet.py +++ b/tools/mo/openvino/tools/mo/main_mxnet.py @@ -3,7 +3,7 @@ import sys -from openvino.tools.mo.utils.cli_parser import get_mxnet_cli_parser +from openvino.tools.ovc.cli_parser import get_mxnet_cli_parser # pylint: disable=no-name-in-module,import-error if __name__ == "__main__": from openvino.tools.mo.main import main diff --git a/tools/mo/openvino/tools/mo/main_onnx.py b/tools/mo/openvino/tools/mo/main_onnx.py index 06a8b48de3e..cb4ccc4a00b 100644 --- a/tools/mo/openvino/tools/mo/main_onnx.py +++ b/tools/mo/openvino/tools/mo/main_onnx.py @@ -3,7 +3,7 @@ import sys -from openvino.tools.mo.utils.cli_parser import get_onnx_cli_parser +from openvino.tools.ovc.cli_parser import get_onnx_cli_parser # pylint: disable=no-name-in-module,import-error if __name__ == "__main__": from openvino.tools.mo.main import main diff --git a/tools/mo/openvino/tools/mo/main_paddle.py b/tools/mo/openvino/tools/mo/main_paddle.py index 0807972d59a..6f5f393b4d3 100644 --- a/tools/mo/openvino/tools/mo/main_paddle.py +++ b/tools/mo/openvino/tools/mo/main_paddle.py @@ -3,7 +3,7 @@ import sys -from openvino.tools.mo.utils.cli_parser import get_all_cli_parser +from openvino.tools.ovc.cli_parser import get_all_cli_parser # pylint: disable=no-name-in-module,import-error from openvino.frontend import FrontEndManager # pylint: disable=no-name-in-module,import-error diff --git a/tools/mo/openvino/tools/mo/main_tf.py b/tools/mo/openvino/tools/mo/main_tf.py index 6bb7929a337..e68c8bda516 100644 --- a/tools/mo/openvino/tools/mo/main_tf.py +++ b/tools/mo/openvino/tools/mo/main_tf.py @@ -3,7 +3,7 @@ import sys -from openvino.tools.mo.utils.cli_parser import get_tf_cli_parser +from openvino.tools.ovc.cli_parser import get_tf_cli_parser # pylint: disable=no-name-in-module,import-error if __name__ == "__main__": from openvino.tools.mo.main import main diff --git a/tools/mo/openvino/tools/mo/middle/passes/convert_data_type.py b/tools/mo/openvino/tools/mo/middle/passes/convert_data_type.py index 38c9d8047c7..d72878f5c80 100644 --- a/tools/mo/openvino/tools/mo/middle/passes/convert_data_type.py +++ b/tools/mo/openvino/tools/mo/middle/passes/convert_data_type.py @@ -10,88 +10,10 @@ from openvino.tools.mo.graph.graph import Node, Graph from openvino.tools.mo.utils.error import Error from openvino.tools.mo.utils.utils import refer_to_faq_msg -""" -Packed data of custom types are stored in numpy uint8 data type. -To distinguish true uint8 and custom data we introduce this class not to store, -but to have unique data type in SUPPORTED_DATA_TYPES map -""" - - -class packed_U1(np.generic): - pass - - -class packed_U4(np.generic): - pass - - -class packed_I4(np.generic): - pass - - -SUPPORTED_DATA_TYPES = { - 'float': (np.float32, 'FP32', 'f32'), - 'half': (np.float16, 'FP16', 'f16'), - 'FP32': (np.float32, 'FP32', 'f32'), - 'FP64': (np.float64, 'FP64', 'f64'), - 'FP16': (np.float16, 'FP16', 'f16'), - 'I32': (np.int32, 'I32', 'i32'), - 'I64': (np.int64, 'I64', 'i64'), - 'int8': (np.int8, 'I8', 'i8'), - 'int32': (np.int32, 'I32', 'i32'), - 'int64': (np.int64, 'I64', 'i64'), - 'bool': (bool, 'BOOL', 'boolean'), - 'uint8': (np.uint8, 'U8', 'u8'), - 'uint32': (np.uint32, 'U32', 'u32'), - 'uint64': (np.uint64, 'U64', 'u64'), - - # custom types - 'U1': (packed_U1, 'U1', 'u1'), - 'int4': (packed_I4, 'I4', 'i4'), - 'uint4': (packed_U4, 'U4', 'u4'), - 'I4': (packed_I4, 'I4', 'i4'), - 'U4': (packed_U4, 'U4', 'u4'), -} - - -def data_type_str_to_np(data_type_str: str): - return SUPPORTED_DATA_TYPES[data_type_str][0] if data_type_str in SUPPORTED_DATA_TYPES else None - - -def data_type_str_to_precision(data_type_str: str): - return SUPPORTED_DATA_TYPES[data_type_str][1] if data_type_str in SUPPORTED_DATA_TYPES else None - - -def data_type_str_to_destination_type(data_type_str: str): - return SUPPORTED_DATA_TYPES[data_type_str][2] if data_type_str in SUPPORTED_DATA_TYPES else None - - -def np_data_type_to_precision(np_data_type): - for np_t, precision, _ in SUPPORTED_DATA_TYPES.values(): - if np_t == np_data_type: - return precision - raise Error('Data type "{}" is not supported'.format(np_data_type)) - - -def np_data_type_to_destination_type(np_data_type): - for np_t, _, destination_type in SUPPORTED_DATA_TYPES.values(): - if np_t == np_data_type: - return destination_type - raise Error('Data type "{}" is not supported'.format(np_data_type)) - - -def destination_type_to_np_data_type(dst_type): - for np_t, _, destination_type in SUPPORTED_DATA_TYPES.values(): - if destination_type == dst_type: - return np_t - raise Error('Destination type "{}" is not supported'.format(dst_type)) - - -def precision_to_destination_type(data_type_str): - for _, precision, destination_type in SUPPORTED_DATA_TYPES.values(): - if precision == data_type_str: - return destination_type - raise Error('Data type "{}" is not supported'.format(data_type_str)) +# pylint: disable=no-name-in-module,import-error +from openvino.tools.ovc.convert_data_type import packed_U1, packed_U4, packed_I4, SUPPORTED_DATA_TYPES, \ + data_type_str_to_np, data_type_str_to_precision, data_type_str_to_destination_type, np_data_type_to_precision, \ + np_data_type_to_destination_type, destination_type_to_np_data_type, precision_to_destination_type def convert_blob(blob: np.ndarray, dst_type: type): diff --git a/tools/mo/openvino/tools/mo/utils/class_registration.py b/tools/mo/openvino/tools/mo/utils/class_registration.py index 48777c4a0f8..e95c6ab6e0c 100644 --- a/tools/mo/openvino/tools/mo/utils/class_registration.py +++ b/tools/mo/openvino/tools/mo/utils/class_registration.py @@ -12,8 +12,7 @@ from openvino.tools.mo.graph.graph import Graph from openvino.tools.mo.middle.passes.eliminate import shape_inference from openvino.tools.mo.middle.pattern_match import for_graph_and_each_sub_graph_recursively from openvino.tools.mo.utils.error import Error, InternalError, FrameworkError -from openvino.tools.mo.utils.logger import progress_bar -from openvino.tools.mo.utils.utils import refer_to_faq_msg +from openvino.tools.ovc.logger import progress_bar # pylint: disable=no-name-in-module,import-error _registered_classes_dict = {} diff --git a/tools/mo/openvino/tools/mo/utils/cli_parser.py b/tools/mo/openvino/tools/mo/utils/cli_parser.py index 2efb7e0db2c..a9692746c92 100644 --- a/tools/mo/openvino/tools/mo/utils/cli_parser.py +++ b/tools/mo/openvino/tools/mo/utils/cli_parser.py @@ -1,2017 +1,4 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -import argparse -import ast -import logging as log -import os -import re -from collections import OrderedDict, namedtuple -from distutils.util import strtobool -from itertools import zip_longest -from pathlib import Path -from operator import xor -from typing import List, Union -import numbers -import inspect - -import numpy as np -from openvino.runtime import Layout, PartialShape, Dimension, Shape, Type - -import openvino -from openvino.tools.mo.front.extractor import split_node_in_port -from openvino.tools.mo.middle.passes.convert_data_type import destination_type_to_np_data_type -from openvino.tools.mo.utils.error import Error -from openvino.tools.mo.utils.utils import refer_to_faq_msg, get_mo_root_dir -from openvino.tools.mo.utils.help import get_convert_model_help_specifics, get_to_string_methods_for_params - - -def extension_path_to_str_or_extensions_class(extension): - if isinstance(extension, str): - return extension - elif isinstance(extension, Path): - return str(extension) - else: - # Return unknown object as is. - # The type of the object will be checked by frontend.add_extension() method - return extension - - -def transformations_config_to_str(value): - if value is None: - return value - return extension_path_to_str_or_extensions_class(value) - - -def extensions_to_str_or_extensions_class(extensions): - if extensions is None: - return None - extensions_list = [] - if isinstance(extensions, str): - extensions_list = extensions.split(',') - elif isinstance(extensions, list): - for ext in extensions: - ext = extension_path_to_str_or_extensions_class(ext) - extensions_list.append(ext) - else: - extensions_list = [extension_path_to_str_or_extensions_class(extensions)] - - for ext in extensions_list: - if isinstance(ext, str): - readable_file_or_dir(ext) - return extensions_list - - -def path_to_str(path): - if path is None: - return None - if isinstance(path, str): - return path - elif isinstance(path, Path): - return str(path) - else: - raise Exception("Incorrect type of {} expected str or Path, got {}".format(path, type(path))) - - -def path_to_str_or_object(value): - if value is None or isinstance(value, str): - return value - elif isinstance(value, Path): - return str(value) - else: - return value - - -def paths_to_str(paths): - if paths is None: - return None - if isinstance(paths, list): - paths_str = [] - for path in paths: - paths_str.append(path_to_str(path)) - return ','.join(paths_str) - else: - path_to_str(paths) - - -def str_list_to_str(values): - if values is None: - return None - if isinstance(values, str): - return values - elif isinstance(values, list): - for value in values: - if not isinstance(value, str): - raise Error("Incorrect argument. {} expected to string, got type {}.".format(value, type(value))) - return ','.join(values) - else: - raise Error("Incorrect argument. {} expected to string or list of strings, got type {}.".format(values, type(values))) - - -def is_shape_type(value): - if isinstance(value, PartialShape): - return True - if isinstance(value, Shape): - return True - if isinstance(value, list) or isinstance(value, tuple): - for dim in value: - if not (isinstance(dim, Dimension) or isinstance(dim, int)): - return False - return True - return False - - -def value_to_str(value, separator): - if isinstance(value, np.ndarray): - values = [] - for x in np.nditer(value): - values.append(str(x)) - return "[" + separator.join(values) + "]" - if isinstance(value, list): - values = [] - for x in value: - if not isinstance(x, numbers.Number): - raise Exception("Incorrect value type. Expected numeric value, got {}".format(type(x))) - values.append(str(x)) - return "[" + separator.join(values) + "]" - if isinstance(value, bool): - return "True" if value else "False" - raise Exception("Incorrect value type. Expected np.ndarray or list, got {}".format(type(value))) - - -def single_input_to_input_cut_info(input: [str, tuple, list, PartialShape, Type, type]): - """ - Parses parameters of single input to InputCutInfo. - :param input: input cut parameters of single input - :return: InputCutInfo - """ - if isinstance(input, str): - # Parse params from string - node_name, shape, value, data_type = parse_input_value(input) - return openvino.tools.mo.InputCutInfo(node_name, - PartialShape(shape) if shape is not None else None, - data_type, - value) - if isinstance(input, openvino.tools.mo.InputCutInfo): - # Wrap input.shape to PartialShape if possible and wrap to InputCutInfo - return openvino.tools.mo.InputCutInfo(input.name, - PartialShape(input.shape) if input.shape is not None else None, - input.type, - input.value) - if isinstance(input, (tuple, list, PartialShape)): - # If input represents list with shape, wrap it to list. Single PartialShape also goes to this condition. - # Check of all dimensions will be in is_shape_type(val) method below - if len(input) > 0 and isinstance(input[0], (int, Dimension)): - input = [input] - - # Check values of tuple or list and collect to InputCutInfo - name = None - inp_type = None - shape = None - for val in input: - if isinstance(val, str): - if name is not None: - raise Exception("More than one input name provided: {}".format(input)) - name = val - elif isinstance(val, (type, Type)): - if inp_type is not None: - raise Exception("More than one input type provided: {}".format(input)) - inp_type = val - elif is_shape_type(val): - if shape is not None: - raise Exception("More than one input shape provided: {}".format(input)) - shape = PartialShape(val) - else: - raise Exception("Incorrect input parameters provided. Expected tuple with input name, " - "input type or input shape. Got unknown object: {}".format(val)) - return openvino.tools.mo.InputCutInfo(name, - PartialShape(shape) if shape is not None else None, - inp_type, - None) - # Case when only type is set - if isinstance(input, (type, Type)): - return openvino.tools.mo.InputCutInfo(None, None, input, None) - - # We don't expect here single unnamed value. If list of int is set it is considered as shape. - # Setting of value is expected only using InputCutInfo or string analog. - - raise Exception("Unexpected object provided for input. Expected openvino.tools.mo.InputCutInfo " - "or tuple or str. Got {}".format(type(input))) - - -def input_to_input_cut_info(input: [str, tuple, list]): - """ - Parses 'input' to list of InputCutInfo. - :param input: input cut parameters passed by user - :return: list of InputCutInfo with input cut parameters - """ - if input is None: - return [] - if isinstance(input, str): - inputs = [] - # Split to list of string - for input_value in split_inputs(input): - - # Parse string with parameters for single input - node_name, shape, value, data_type = parse_input_value(input_value) - inputs.append(openvino.tools.mo.InputCutInfo(node_name, - PartialShape(shape) if shape is not None else None, - data_type, - value)) - return inputs - if isinstance(input, openvino.tools.mo.InputCutInfo): - # Wrap to list and return - return [input] - if isinstance(input, tuple): - # Case when input is single shape set in tuple - if len(input) > 0 and isinstance(input[0], (int, Dimension)): - input = [input] - # Case when input is set as tuple. Expected that it is always single input. - return [single_input_to_input_cut_info(input)] - if isinstance(input, list): - # Case when input is single shape set in list - if len(input) > 0 and isinstance(input[0], (int, Dimension)): - input = [input] - inputs = [] - # Case when input is set as list. Expected that it is list of params for different inputs. - for inp in input: - inputs.append(single_input_to_input_cut_info(inp)) - return inputs - # Case when single type or value is set, or unknown object - return [single_input_to_input_cut_info(input)] - - -def input_shape_to_input_cut_info(input_shape: [str, Shape, PartialShape, list, tuple], inputs: list): - """ - Parses 'input_shape' to list of PartialShape and updates 'inputs'. - :param input_shape: input shapes passed by user - :param inputs: list of InputCutInfo with information from 'input' parameter - """ - if input_shape is None: - return - if isinstance(input_shape, str): - # Split input_shape to list of string - input_shape = split_shapes(input_shape) - if isinstance(input_shape, (Shape, PartialShape)): - # Whap single shape to list - input_shape = [input_shape] - if isinstance(input_shape, (list, tuple)): - # Check case when single shape is passed as list or tuple - if len(input_shape) > 0 and isinstance(input_shape[0], (int, Dimension)): - input_shape = [input_shape] - - if len(inputs) > 0 and len(input_shape) > 0: - assert len(inputs) == len(input_shape), "Different numbers of inputs were specified in --input parameter " \ - "and --input_shapes. --input has {} items, --input_shape has {} item.".format(len(inputs), len(input_shape)) - - # Update inputs with information from 'input_shape' - if len(inputs) > 0: - for idx, shape in enumerate(input_shape): - shape = PartialShape(shape) - assert inputs[idx].shape is None, "Shape was set in both --input and in --input_shape parameter." \ - "Please use either --input or --input_shape for shape setting." - inputs[idx] = openvino.tools.mo.InputCutInfo(inputs[idx].name, shape, inputs[idx].type, inputs[idx].value) - - else: - for shape in input_shape: - inputs.append(openvino.tools.mo.InputCutInfo(None, PartialShape(shape), None, None)) - return - - raise Exception("Unexpected object provided for input_shape. Expected PartialShape, Shape, tuple, list or str. " - "Got {}".format(type(input_shape))) - - -def freeze_placeholder_to_input_cut_info(argv_freeze_placeholder_with_value: str, inputs: list): - """ - Parses 'argv_freeze_placeholder_with_value' to dictionary and collects unnamed inputs from 'inputs' to list. - :param argv_freeze_placeholder_with_value: string set by user. - As it was planned to be deprecated no Python analogs were made. - :param inputs: list of InputCutInfo with information from 'input' parameter - :returns (placeholder_values, unnamed_placeholder_values), where - placeholder_values - dictionary where key is node name, value is node value, - unnamed_placeholder_values - list with unnamed node values - """ - # Parse argv_freeze_placeholder_with_value to dictionary with names and values - placeholder_values = parse_freeze_placeholder_values(argv_freeze_placeholder_with_value) - unnamed_placeholder_values = [] - - # Collect values for freezing from 'inputs' - if inputs is not None and len(inputs) > 0: - for input in inputs: - node_name = input.name - value = input.value - if value is None: - continue - # Check for value conflict - if node_name in placeholder_values and placeholder_values[node_name] != value: - raise Error("Overriding replacement value of the placeholder with name '{}': old value = {}, new value = {}" - ".".format(node_name, placeholder_values[node_name], value)) - if node_name is not None: - # Named input case, add to dictionary - placeholder_values[node_name] = value - else: - # Unnamed input case, add to list - unnamed_placeholder_values.append(value) - - return placeholder_values, unnamed_placeholder_values - - -def mean_scale_value_to_str(value): - # default empty value - if isinstance(value, tuple) and len(value) == 0: - return value - - if isinstance(value, str): - return value - if isinstance(value, dict): - values_str = [] - for op_name, val in value.items(): - if not isinstance(op_name, str): - raise Exception("Incorrect operation name type. Expected string, got {}".format(type(op_name))) - values_str.append(op_name + value_to_str(val, ",")) - return ",".join(values_str) - if isinstance(value, list) or isinstance(value, tuple): - list_of_lists = False - for val in value: - if isinstance(val, list) or isinstance(val, tuple): - list_of_lists = True - break - if list_of_lists: - values_str = [] - for val in value: - values_str.append(value_to_str(val, ",")) - return ",".join(values_str) - else: - return value_to_str(value, ",") - return value_to_str(value, ",") - - -def layout_to_str(layout): - if isinstance(layout, str): - return layout - if isinstance(layout, Layout): - return layout.to_string() - raise Exception("Incorrect layout type. Expected Layout or string or dictionary, " - "where key is operation name and value is layout or list of layouts, got {}".format(type(layout))) - - -def source_target_layout_to_str(value): - # default empty value - if isinstance(value, tuple) and len(value) == 0: - return value - - if isinstance(value, str): - return value - if isinstance(value, dict): - values_str = [] - for op_name, layout in value.items(): - if not isinstance(op_name, str): - raise Exception("Incorrect operation name type. Expected string, got {}".format(type(op_name))) - values_str.append(op_name + "(" + layout_to_str(layout) + ")") - return ",".join(values_str) - - return layout_to_str(value) - - -def layoutmap_to_str(value): - if isinstance(value, str): - return value - if isinstance(value, openvino.tools.mo.LayoutMap): - assert value.source_layout is not None, "Incorrect layout map. 'source_layout' should be set." - source_layout = layout_to_str(value.source_layout) - if value.target_layout is not None: - target_layout = layout_to_str(value.target_layout) - source_layout += "->" + target_layout - return source_layout - return layout_to_str(value) - - -def layout_param_to_str(value): - # default empty value - if isinstance(value, tuple) and len(value) == 0: - return value - - if isinstance(value, str): - return value - - if isinstance(value, dict): - values_str = [] - for op_name, layout in value.items(): - if not isinstance(op_name, str): - raise Exception("Incorrect operation name type. Expected string, got {}".format(type(op_name))) - values_str.append(op_name + "(" + layoutmap_to_str(layout) + ")") - return ",".join(values_str) - if isinstance(value, openvino.tools.mo.LayoutMap): - return layoutmap_to_str(value) - if isinstance(value, list) or isinstance(value, tuple): - values_str = [] - for layout in value: - values_str.append(layoutmap_to_str(layout)) - return ",".join(values_str) - - return layoutmap_to_str(value) - - -def batch_to_int(value): - if value is None or isinstance(value, int): - return value - if isinstance(value, Dimension): - if not value.is_static: - # TODO: Ticket 88676 - raise Exception("Dynamic batch for --batch parameter is not supported.") - else: - return value.get_length() - raise Exception("Incorrect batch value. Expected int, got {}.".format(type(value))) - - -def transform_param_value_to_str(value): - # This function supports parsing of parameters of MakeStateful, LowLatency2, Pruning. - # If available transforms list is extended this method should be extended for new transforms. - if isinstance(value, str): - return value - if isinstance(value, bool): - return str(value) - if isinstance(value, dict): - # param_res_names dictionary for MakeStateful transform - values_str = [] - for input_name, output_name in value.items(): - assert isinstance(input_name, str), "Incorrect input name. " \ - "Expected string, got {}".format(type(input_name)) - assert isinstance(output_name, str), "Incorrect output name. " \ - "Expected string, got {}".format(type(output_name)) - values_str.append("\'{}\':\'{}\'".format(input_name, output_name)) - return "{" + ','.join(values_str) + "}" - raise Exception("Unknown parameter type.") - - -def transform_to_str(value): - from openvino.tools.mo.back.offline_transformations import get_available_transformations - - if isinstance(value, str): - return value - - if isinstance(value, tuple): - assert 1 <= len(value) <= 2, "Incorrect definition of transformation in transform argument: " \ - "expected two elements in tuple, provided {}. " \ - "Supported transforms are: {}".format( - len(value), - list(get_available_transformations().keys())) - transform_name = value[0] - assert isinstance(transform_name, str), "Incorrect transform name type. " \ - "Expected string, got {}".format(type(transform_name)) - if len(value) == 2: - params = value[1] - assert isinstance(params, dict), "Incorrect transform params type. " \ - "Expected dictionary, got {}".format(type(params)) - params_str_list = [] - for param_name, val in params.items(): - assert isinstance(param_name, str), "Incorrect transform parameter name type. " \ - "Expected string, got {}".format(type(param_name)) - val_str = transform_param_value_to_str(val) - params_str_list.append(param_name + "=" + val_str) - transform_name += '[' + ','.join(params_str_list) + ']' - return transform_name - raise Exception("Incorrect transform type. Expected tuple with transform name and " - "dictionary with transform parameters. Got object of type {}".format(type(value))) - - -def transform_param_to_str(value): - if value is None or isinstance(value, str): - return value - if isinstance(value, list): - transforms_str = [] - for transform in value: - transforms_str.append(transform_to_str(transform)) - return ','.join(transforms_str) - return transform_to_str(value) - - -ParamDescription = namedtuple("ParamData", - ["description", "cli_tool_description", "to_string"]) - - -def get_mo_convert_params(): - mo_convert_docs = openvino.tools.mo.convert_model.__doc__ - mo_convert_params = {} - group = "Optional parameters:" - mo_convert_params[group] = {} - - mo_convert_docs = mo_convert_docs[:mo_convert_docs.find('Returns:')] - - while len(mo_convert_docs) > 0: - param_idx1 = mo_convert_docs.find(":param") - if param_idx1 == -1: - break - param_idx2 = mo_convert_docs.find(":", param_idx1+1) - param_name = mo_convert_docs[param_idx1+len(':param '):param_idx2] - - param_description_idx = mo_convert_docs.find(":param", param_idx2+1) - param_description = mo_convert_docs[param_idx2+1: param_description_idx] - - group_name_idx = param_description.rfind('\n\n') - group_name = '' - if group_name_idx != -1: - group_name = param_description[group_name_idx:].strip() - - param_description = param_description[:group_name_idx] - param_description = param_description.strip() - - mo_convert_params[group][param_name] = ParamDescription(param_description, "", None) - - mo_convert_docs = mo_convert_docs[param_description_idx:] - - if group_name != '': - mo_convert_params[group_name] = {} - group = group_name - - # TODO: remove this when internal converting of params to string is removed - params_converted_to_string = get_to_string_methods_for_params() - - params_with_paths = get_params_with_paths_list() - cli_tool_specific_descriptions = get_convert_model_help_specifics() - - for group_name, param_group in mo_convert_params.items(): - for param_name, d in param_group.items(): - to_str_method = None - if param_name in params_converted_to_string: - to_str_method = params_converted_to_string[param_name] - elif param_name in params_with_paths: - to_str_method = path_to_str - - cli_tool_description = None - if param_name in cli_tool_specific_descriptions: - cli_tool_description = cli_tool_specific_descriptions[param_name] - - desc = ParamDescription(d.description, - cli_tool_description, - to_str_method) - mo_convert_params[group_name][param_name] = desc - - return mo_convert_params - - -class DeprecatedStoreTrue(argparse.Action): - def __init__(self, nargs=0, **kw): - super().__init__(nargs=nargs, **kw) - - def __call__(self, parser, namespace, values, option_string=None): - dep_msg = "Use of deprecated cli option {} detected. Option use in the following releases will be fatal. ".format(option_string) - if 'fusing' in option_string: - dep_msg += 'Please use --finegrain_fusing cli option instead' - log.error(dep_msg, extra={'is_warning': True}) - setattr(namespace, self.dest, True) - - -class DeprecatedOptionCommon(argparse.Action): - def __call__(self, parser, args, values, option_string): - dep_msg = "Use of deprecated cli option {} detected. Option use in the following releases will be fatal. ".format(option_string) - log.error(dep_msg, extra={'is_warning': True}) - setattr(args, self.dest, values) - - -class IgnoredAction(argparse.Action): - def __init__(self, nargs=0, **kw): - super().__init__(nargs=nargs, **kw) - - def __call__(self, parser, namespace, values, option_string=None): - dep_msg = "Use of removed cli option '{}' detected. The option is ignored. ".format(option_string) - log.error(dep_msg, extra={'is_warning': True}) - setattr(namespace, self.dest, True) - - -def canonicalize_and_check_paths(values: Union[str, List[str]], param_name, - try_mo_root=False, check_existence=True) -> List[str]: - if values is not None: - list_of_values = list() - if isinstance(values, str): - if values != "": - list_of_values = values.split(',') - elif isinstance(values, list): - list_of_values = values - else: - raise Error('Unsupported type of command line parameter "{}" value'.format(param_name)) - - if not check_existence: - return [get_absolute_path(path) for path in list_of_values] - - for idx, val in enumerate(list_of_values): - list_of_values[idx] = val - - error_msg = 'The value for command line parameter "{}" must be existing file/directory, ' \ - 'but "{}" does not exist.'.format(param_name, val) - if os.path.exists(val): - continue - elif not try_mo_root or val == '': - raise Error(error_msg) - elif try_mo_root: - path_from_mo_root = get_mo_root_dir() + '/mo/' + val - list_of_values[idx] = path_from_mo_root - if not os.path.exists(path_from_mo_root): - raise Error(error_msg) - - return [get_absolute_path(path) for path in list_of_values] - - -class CanonicalizePathAction(argparse.Action): - """ - Expand user home directory paths and convert relative-paths to absolute. - """ - - def __call__(self, parser, namespace, values, option_string=None): - list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, - try_mo_root=False, check_existence=False) - setattr(namespace, self.dest, ','.join(list_of_paths)) - - -class CanonicalizeTransformationPathCheckExistenceAction(argparse.Action): - """ - Convert relative to the current and relative to mo root paths to absolute - and check specified file or directory existence. - """ - - def __call__(self, parser, namespace, values, option_string=None): - list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, - try_mo_root=True, check_existence=True) - setattr(namespace, self.dest, ','.join(list_of_paths)) - - -class CanonicalizePathCheckExistenceAction(argparse.Action): - """ - Expand user home directory paths and convert relative-paths to absolute and check specified file or directory - existence. - """ - - def __call__(self, parser, namespace, values, option_string=None): - list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, - try_mo_root=False, check_existence=True) - setattr(namespace, self.dest, ','.join(list_of_paths)) - - -class CanonicalizeExtensionsPathCheckExistenceAction(argparse.Action): - """ - Expand user home directory paths and convert relative-paths to absolute and check specified file or directory - existence. - """ - - def __call__(self, parser, namespace, values, option_string=None): - list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, - try_mo_root=False, check_existence=True) - # Extensions paths are needed to be stored as list - setattr(namespace, self.dest, list_of_paths) - - -class CanonicalizePathCheckExistenceIfNeededAction(CanonicalizePathCheckExistenceAction): - - def __call__(self, parser, namespace, values, option_string=None): - if values is not None: - if isinstance(values, str): - if values != "": - super().__call__(parser, namespace, values, option_string) - else: - setattr(namespace, self.dest, values) - - -class DeprecatedCanonicalizePathCheckExistenceAction(CanonicalizePathCheckExistenceAction): - def __call__(self, parser, namespace, values, option_string=None): - dep_msg = "Use of deprecated cli option {} detected. Option use in the following releases will be fatal. ".format( - option_string) - log.error(dep_msg, extra={'is_warning': True}) - super().__call__(parser, namespace, values, option_string) - - -def readable_file(path: str): - """ - Check that specified path is a readable file. - :param path: path to check - :return: path if the file is readable - """ - if not os.path.isfile(path): - raise Error('The "{}" is not existing file'.format(path)) - elif not os.access(path, os.R_OK): - raise Error('The "{}" is not readable'.format(path)) - else: - return path - - -def readable_file_or_dir(path: str): - """ - Check that specified path is a readable file or directory. - :param path: path to check - :return: path if the file/directory is readable - """ - if not os.path.isfile(path) and not os.path.isdir(path): - raise Error('The "{}" is not existing file or directory'.format(path)) - elif not os.access(path, os.R_OK): - raise Error('The "{}" is not readable'.format(path)) - else: - return path - - -def readable_dirs(paths: str): - """ - Checks that comma separated list of paths are readable directories. - :param paths: comma separated list of paths. - :return: comma separated list of paths. - """ - paths_list = [readable_dir(path) for path in paths.split(',')] - return ','.join(paths_list) - - -def readable_dirs_or_empty(paths: str): - """ - Checks that comma separated list of paths are readable directories of if it is empty. - :param paths: comma separated list of paths. - :return: comma separated list of paths. - """ - if paths: - return readable_dirs(paths) - return paths - - -def readable_dirs_or_files_or_empty(paths: str): - """ - Checks that comma separated list of paths are readable directories, files or a provided path is empty. - :param paths: comma separated list of paths. - :return: comma separated list of paths. - """ - if paths: - paths_list = [readable_file_or_dir(path) for path in paths.split(',')] - return ','.join(paths_list) - return paths - - -def readable_dir(path: str): - """ - Check that specified path is a readable directory. - :param path: path to check - :return: path if the directory is readable - """ - if not os.path.isdir(path): - raise Error('The "{}" is not existing directory'.format(path)) - elif not os.access(path, os.R_OK): - raise Error('The "{}" is not readable'.format(path)) - else: - return path - - -def writable_dir(path: str): - """ - Checks that specified directory is writable. The directory may not exist but it's parent or grandparent must exist. - :param path: path to check that it is writable. - :return: path if it is writable - """ - if path is None: - raise Error('The directory parameter is None') - if os.path.exists(path): - if os.path.isdir(path): - if os.access(path, os.W_OK): - return path - else: - raise Error('The directory "{}" is not writable'.format(path)) - else: - raise Error('The "{}" is not a directory'.format(path)) - else: - cur_path = path - while os.path.dirname(cur_path) != cur_path: - if os.path.exists(cur_path): - break - cur_path = os.path.dirname(cur_path) - if cur_path == '': - cur_path = os.path.curdir - if os.access(cur_path, os.W_OK): - return path - else: - raise Error('The directory "{}" is not writable'.format(cur_path)) - - -def add_args_by_description(args_group, params_description): - signature = inspect.signature(openvino.tools.mo.convert_model) - filepath_args = get_params_with_paths_list() - cli_tool_specific_descriptions = get_convert_model_help_specifics() - for param_name, param_description in params_description.items(): - if param_name == 'help': - continue - cli_param_name = "--"+param_name - if cli_param_name not in args_group._option_string_actions: - # Get parameter specifics - param_specifics = cli_tool_specific_descriptions[param_name] if param_name in \ - cli_tool_specific_descriptions else {} - help_text = param_specifics['description'] if 'description' in param_specifics \ - else param_description.description - action = param_specifics['action'] if 'action' in param_specifics else None - param_type = param_specifics['type'] if 'type' in param_specifics else None - param_alias = param_specifics['aliases'] if 'aliases' in param_specifics else {} - param_version = param_specifics['version'] if 'version' in param_specifics else None - param_choices = param_specifics['choices'] if 'choices' in param_specifics else None - - # Bool params common setting - if signature.parameters[param_name].annotation == bool and param_name != 'version': - args_group.add_argument( - cli_param_name, *param_alias, - type=check_bool if param_type is None else param_type, - nargs="?", - const=True, - help=help_text, - default=signature.parameters[param_name].default) - # File paths common setting - elif param_name in filepath_args: - action = action if action is not None else CanonicalizePathCheckExistenceAction - args_group.add_argument( - cli_param_name, *param_alias, - type=str if param_type is None else param_type, - action=action, - help=help_text, - default=signature.parameters[param_name].default) - # Other params - else: - additional_params = {} - if param_version is not None: - additional_params['version'] = param_version - if param_type is not None: - additional_params['type'] = param_type - if param_choices is not None: - additional_params['choices'] = param_choices - args_group.add_argument( - cli_param_name, *param_alias, - help=help_text, - default=signature.parameters[param_name].default, - action=action, - **additional_params - ) - - -def get_common_cli_parser(parser: argparse.ArgumentParser = None): - if not parser: - parser = argparse.ArgumentParser() - common_group = parser.add_argument_group('Framework-agnostic parameters') - mo_convert_params = get_mo_convert_params() - mo_convert_params_common = mo_convert_params['Framework-agnostic parameters:'] - - # Command line tool specific params - common_group.add_argument('--model_name', '-n', - help='Model_name parameter passed to the final create_ir transform. ' + - 'This parameter is used to name ' + - 'a network in a generated IR and output .xml/.bin files.') - common_group.add_argument('--output_dir', '-o', - help='Directory that stores the generated IR. ' + - 'By default, it is the directory from where the Model Optimizer is launched.', - default=get_absolute_path('.'), - action=CanonicalizePathAction, - type=writable_dir) - - # Deprecated params - common_group.add_argument('--freeze_placeholder_with_value', - help='Replaces input layer with constant node with ' - 'provided value, for example: "node_name->True". ' - 'It will be DEPRECATED in future releases. ' - 'Use --input option to specify a value for freezing.', - default=None) - common_group.add_argument('--static_shape', - help='Enables IR generation for fixed input shape (folding `ShapeOf` operations and ' - 'shape-calculating sub-graphs to `Constant`). Changing model input shape using ' - 'the OpenVINO Runtime API in runtime may fail for such an IR.', - action='store_true', default=False) - common_group.add_argument("--use_new_frontend", - help='Force the usage of new Frontend of Model Optimizer for model conversion into IR. ' - 'The new Frontend is C++ based and is available for ONNX* and PaddlePaddle* models. ' - 'Model optimizer uses new Frontend for ONNX* and PaddlePaddle* by default that means ' - '`--use_new_frontend` and `--use_legacy_frontend` options are not specified.', - action='store_true', default=False) - common_group.add_argument("--use_legacy_frontend", - help='Force the usage of legacy Frontend of Model Optimizer for model conversion into IR. ' - 'The legacy Frontend is Python based and is available for TensorFlow*, ONNX*, MXNet*, ' - 'Caffe*, and Kaldi* models.', - action='store_true', default=False) - add_args_by_description(common_group, mo_convert_params_common) - return parser - - -def get_common_cli_options(model_name): - d = OrderedDict() - d['input_model'] = '- Path to the Input Model' - d['output_dir'] = ['- Path for generated IR', lambda x: x if x != '.' else os.getcwd()] - d['model_name'] = ['- IR output name', lambda x: x if x else model_name] - d['log_level'] = '- Log level' - d['batch'] = ['- Batch', lambda x: x if x else 'Not specified, inherited from the model'] - d['input'] = ['- Input layers', lambda x: x if x else 'Not specified, inherited from the model'] - d['output'] = ['- Output layers', lambda x: x if x else 'Not specified, inherited from the model'] - d['input_shape'] = ['- Input shapes', lambda x: x if x else 'Not specified, inherited from the model'] - d['source_layout'] = ['- Source layout', lambda x: x if x else 'Not specified'] - d['target_layout'] = ['- Target layout', lambda x: x if x else 'Not specified'] - d['layout'] = ['- Layout', lambda x: x if x else 'Not specified'] - d['mean_values'] = ['- Mean values', lambda x: x if x else 'Not specified'] - d['scale_values'] = ['- Scale values', lambda x: x if x else 'Not specified'] - d['scale'] = ['- Scale factor', lambda x: x if x else 'Not specified'] - d['transform'] = ['- User transformations', lambda x: x if x else 'Not specified'] - d['reverse_input_channels'] = '- Reverse input channels' - d['static_shape'] = '- Enable IR generation for fixed input shape' - d['transformations_config'] = '- Use the transformations config file' - return d - - -def get_advanced_cli_options(): - d = OrderedDict() - d['use_legacy_frontend'] = '- Force the usage of legacy Frontend of Model Optimizer for model conversion into IR' - d['use_new_frontend'] = '- Force the usage of new Frontend of Model Optimizer for model conversion into IR' - return d - - -def get_caffe_cli_options(): - d = { - 'input_proto': ['- Path to the Input prototxt', lambda x: x], - 'caffe_parser_path': ['- Path to Python Caffe* parser generated from caffe.proto', lambda x: x], - 'k': '- Path to CustomLayersMapping.xml', - } - - return OrderedDict(sorted(d.items(), key=lambda t: t[0])) - - -def get_tf_cli_options(): - d = { - 'input_model_is_text': '- Input model in text protobuf format', - 'tensorflow_custom_operations_config_update': '- Update the configuration file with input/output node names', - 'tensorflow_object_detection_api_pipeline_config': '- Use configuration file used to generate the model with ' - 'Object Detection API', - 'tensorflow_custom_layer_libraries': '- List of shared libraries with TensorFlow custom layers implementation', - 'tensorboard_logdir': '- Path to model dump for TensorBoard' - } - - return OrderedDict(sorted(d.items(), key=lambda t: t[0])) - - -def get_mxnet_cli_options(): - d = { - 'input_symbol': '- Deploy-ready symbol file', - 'nd_prefix_name': '- Prefix name for args.nd and argx.nd files', - 'pretrained_model_name': '- Pretrained model to be merged with the .nd files', - 'save_params_from_nd': '- Enable saving built parameters file from .nd files', - 'legacy_mxnet_model': '- Enable MXNet loader for models trained with MXNet version lower than 1.0.0', - } - - return OrderedDict(sorted(d.items(), key=lambda t: t[0])) - - -def get_kaldi_cli_options(): - d = { - 'counts': '- A file name with full path to the counts file or empty string if you want to use counts from model', - 'remove_output_softmax': '- Removes the SoftMax layer that is the output layer', - 'remove_memory': '- Removes the Memory layer and use additional inputs and outputs instead' - } - - return OrderedDict(sorted(d.items(), key=lambda t: t[0])) - - -def get_onnx_cli_options(): - d = { - } - - return OrderedDict(sorted(d.items(), key=lambda t: t[0])) - - -def get_params_with_paths_list(): - return ['input_model', 'output_dir', 'caffe_parser_path', 'extensions', 'k', 'output_dir', - 'input_checkpoint', 'input_meta_graph', 'input_proto', 'input_symbol', - 'pretrained_model_name', 'saved_model_dir', 'tensorboard_logdir', - 'tensorflow_custom_layer_libraries', 'tensorflow_custom_operations_config_update', - 'tensorflow_object_detection_api_pipeline_config', - 'transformations_config'] - - -def get_caffe_cli_parser(parser: argparse.ArgumentParser = None): - """ - Specifies cli arguments for Model Optimizer for Caffe* - - Returns - ------- - ArgumentParser instance - """ - if not parser: - parser = argparse.ArgumentParser(usage='%(prog)s [options]') - get_common_cli_parser(parser=parser) - - caffe_group = parser.add_argument_group('Caffe*-specific parameters') - mo_convert_params_caffe = get_mo_convert_params()['Caffe*-specific parameters:'] - add_args_by_description(caffe_group, mo_convert_params_caffe) - return parser - - -def get_tf_cli_parser(parser: argparse.ArgumentParser = None): - """ - Specifies cli arguments for Model Optimizer for TF - - Returns - ------- - ArgumentParser instance - """ - if not parser: - parser = argparse.ArgumentParser(usage='%(prog)s [options]') - get_common_cli_parser(parser=parser) - mo_convert_params_tf = get_mo_convert_params()['TensorFlow*-specific parameters:'] - - tf_group = parser.add_argument_group('TensorFlow*-specific parameters') - add_args_by_description(tf_group, mo_convert_params_tf) - return parser - - -def get_mxnet_cli_parser(parser: argparse.ArgumentParser = None): - """ - Specifies cli arguments for Model Optimizer for MXNet* - - Returns - ------- - ArgumentParser instance - """ - if not parser: - parser = argparse.ArgumentParser(usage='%(prog)s [options]') - get_common_cli_parser(parser=parser) - - mx_group = parser.add_argument_group('MXNet-specific parameters') - mo_convert_params_mxnet = get_mo_convert_params()['MXNet-specific parameters:'] - add_args_by_description(mx_group, mo_convert_params_mxnet) - - return parser - - -def get_kaldi_cli_parser(parser: argparse.ArgumentParser = None): - """ - Specifies cli arguments for Model Optimizer for MXNet* - - Returns - ------- - ArgumentParser instance - """ - if not parser: - parser = argparse.ArgumentParser(usage='%(prog)s [options]') - get_common_cli_parser(parser=parser) - - kaldi_group = parser.add_argument_group('Kaldi-specific parameters') - mo_convert_params_kaldi = get_mo_convert_params()['Kaldi-specific parameters:'] - add_args_by_description(kaldi_group, mo_convert_params_kaldi) - return parser - - -def get_onnx_cli_parser(parser: argparse.ArgumentParser = None): - """ - Specifies cli arguments for Model Optimizer for ONNX - - Returns - ------- - ArgumentParser instance - """ - if not parser: - parser = argparse.ArgumentParser(usage='%(prog)s [options]') - get_common_cli_parser(parser=parser) - - return parser - - -def get_all_cli_parser(): - """ - Specifies cli arguments for Model Optimizer - - Returns - ------- - ArgumentParser instance - """ - parser = argparse.ArgumentParser(usage='%(prog)s [options]') - mo_convert_params_optional = get_mo_convert_params()['Optional parameters:'] - add_args_by_description(parser, mo_convert_params_optional) - - get_common_cli_parser(parser=parser) - get_tf_cli_parser(parser=parser) - get_caffe_cli_parser(parser=parser) - get_mxnet_cli_parser(parser=parser) - get_kaldi_cli_parser(parser=parser) - get_onnx_cli_parser(parser=parser) - - return parser - - -def remove_data_type_from_input_value(input_value: str): - """ - Removes the type specification from the input string. The type specification is a string enclosed with curly braces. - :param input_value: string passed as input to the --input command line parameter - :return: string without type specification - """ - return re.sub(r'\{.*\}', '', input_value) - - -def get_data_type_from_input_value(input_value: str): - """ - Returns the numpy data type corresponding to the data type specified in the input value string - :param input_value: string passed as input to the --input command line parameter - :return: the corresponding numpy data type and None if the data type is not specified in the input value - """ - data_type_match = re.match(r'.*\{(.*)\}.*', input_value) - return destination_type_to_np_data_type(data_type_match.group(1)) if data_type_match is not None else None - - -def remove_shape_from_input_value(input_value: str): - """ - Removes the shape specification from the input string. The shape specification is a string enclosed with square - brackets. - :param input_value: string passed as input to the --input command line parameter - :return: string without shape specification - """ - assert '->' not in input_value, 'The function should not be called for input_value with constant value specified' - return re.sub(r'[(\[]([0-9\.?, -]*)[)\]]', '', input_value) - - -def get_shape_from_input_value(input_value: str): - """ - Returns PartialShape corresponding to the shape specified in the input value string - :param input_value: string passed as input to the --input command line parameter - :return: the corresponding shape and None if the shape is not specified in the input value - """ - # remove the tensor value from the input_value first - input_value = input_value.split('->')[0] - - # parse shape - shape = re.findall(r'[(\[]([0-9\.\?, -]*)[)\]]', input_value) - if len(shape) == 0: - shape = None - elif len(shape) == 1 and shape[0] in ['', ' ']: - # this shape corresponds to scalar - shape = PartialShape([]) - elif len(shape) == 1: - dims = re.split(r', *| +', shape[0]) - dims = list(filter(None, dims)) - shape = PartialShape([Dimension(dim) for dim in dims]) - else: - raise Error("Wrong syntax to specify shape. Use --input " - "\"node_name[shape]->value\"") - return shape - - -def get_node_name_with_port_from_input_value(input_value: str): - """ - Returns the node name (optionally with input/output port) from the input value - :param input_value: string passed as input to the --input command line parameter - :return: the corresponding node name with input/output port - """ - return remove_shape_from_input_value(remove_data_type_from_input_value(input_value.split('->')[0])) - - -def get_value_from_input_value(input_value: str): - """ - Returns the value from the input value string - :param input_value: string passed as input to the --input command line parameter - :return: the corresponding value or None if it is not specified - """ - parts = input_value.split('->') - value = None - if len(parts) == 2: - value = parts[1] - if value[0] == '[' and value[-1] != ']' or value[0] != '[' and value[-1] == ']': - raise Error("Wrong syntax to specify value. Use --input \"node_name[shape]->value\"") - if '[' in value.strip(' '): - value = value.replace('[', '').replace(']', '') - if ',' in value: - value = value.replace(' ', '') - value = value.split(',') - else: - value = value.split(' ') - if not isinstance(value, list): - value = ast.literal_eval(value) - elif len(parts) > 2: - raise Error("Wrong syntax to specify value. Use --input \"node_name[shape]->value\"") - return value - - -def partial_shape_prod(shape: [PartialShape, tuple]): - assert not (isinstance(shape, PartialShape) and shape.is_dynamic), \ - "Unable to calculate prod for dynamic shape {}.".format(shape) - - prod = 1 - for dim in shape: - prod *= dim.get_min_length() - return prod - - -def parse_input_value(input_value: str): - """ - Parses a value of the --input command line parameter and gets a node name, shape and value. - The node name includes a port if it is specified. - Shape and value is equal to None if they are not specified. - Parameters - ---------- - input_value - string with a specified node name, shape, value and data_type. - E.g. 'node_name:0[4]{fp32}->[1.0 2.0 3.0 4.0]' - - Returns - ------- - Node name, shape, value, data type - E.g. 'node_name:0', '4', [1.0 2.0 3.0 4.0], np.float32 - """ - data_type = get_data_type_from_input_value(input_value) - node_name = get_node_name_with_port_from_input_value(input_value) - value = get_value_from_input_value(input_value) - shape = get_shape_from_input_value(input_value) - value_size = np.prod(len(value)) if isinstance(value, list) else 1 - - if value is not None and shape is not None: - for dim in shape: - if isinstance(dim, Dimension) and dim.is_dynamic: - raise Error("Cannot freeze input with dynamic shape: {}".format(shape)) - - if shape is not None and value is not None and partial_shape_prod(shape) != value_size: - raise Error("The shape '{}' of the input node '{}' does not correspond to the number of elements '{}' in the " - "value: {}".format(shape, node_name, value_size, value)) - return node_name, shape, value, data_type - - -def split_str_avoiding_square_brackets(s: str) -> list: - """ - Splits a string by comma, but skips commas inside square brackets. - :param s: string to split - :return: list of strings split by comma - """ - res = list() - skipping = 0 - last_idx = 0 - for i, c in enumerate(s): - if c == '[': - skipping += 1 - elif c == ']': - skipping -= 1 - elif c == ',' and skipping == 0: - res.append(s[last_idx:i]) - last_idx = i + 1 - res.append(s[last_idx:]) - return res - - -def split_layouts_by_arrow(s: str) -> tuple: - """ - Splits a layout string by first arrow (->). - :param s: string to split - :return: tuple containing source and target layouts - """ - arrow = s.find('->') - if arrow != -1: - source_layout = s[:arrow] - target_layout = s[arrow + 2:] - if source_layout == '': - source_layout = None - if target_layout == '': - target_layout = None - return source_layout, target_layout - else: - return s, None - - -def validate_layout(layout: str): - """ - Checks if layout is of valid format. - :param layout: string containing layout - :raises: if layout is incorrect - """ - error_msg = 'Invalid layout parsed: {}'.format(layout) - if layout: - incorrect_brackets = xor(layout[0] == '[', layout[-1] == ']') - if incorrect_brackets or layout[-1] == '-': - error_msg += ', did you forget quotes?' - else: - valid_layout_re = re.compile(r'\[?[^\[\]\(\)\-\s]*\]?') - if valid_layout_re.fullmatch(layout): - return - raise Error(error_msg) - - -def write_found_layout(name: str, found_layout: str, parsed: dict, dest: str = None): - """ - Writes found layout data to the 'parsed' dict. - :param name: name of the node to add layout - :param found_layout: string containing layout for the node - :param parsed: dict where result will be stored - :param dest: type of the command line: - * 'source' is --source_layout - * 'target' is --target_layout - * None is --layout - """ - s_layout = None - t_layout = None - if name in parsed: - s_layout = parsed[name]['source_layout'] - t_layout = parsed[name]['target_layout'] - if dest == 'source': - s_layout = found_layout - elif dest == 'target': - t_layout = found_layout - else: - s_layout, t_layout = split_layouts_by_arrow(found_layout) - validate_layout(s_layout) - validate_layout(t_layout) - parsed[name] = {'source_layout': s_layout, 'target_layout': t_layout} - - -def write_found_layout_list(idx: int, found_layout: str, parsed: list, dest: str = None): - """ - Writes found layout data to the 'parsed' dict. - :param idx: idx of of the node to add layout - :param found_layout: string containing layout for the node - :param parsed: list where result will be stored - :param dest: type of the command line: - * 'source' is --source_layout - * 'target' is --target_layout - * None is --layout - """ - s_layout = None - t_layout = None - if idx < len(parsed): - s_layout = parsed[idx]['source_layout'] - t_layout = parsed[idx]['target_layout'] - if dest == 'source': - s_layout = found_layout - elif dest == 'target': - t_layout = found_layout - else: - s_layout, t_layout = split_layouts_by_arrow(found_layout) - validate_layout(s_layout) - validate_layout(t_layout) - - if idx < len(parsed): - parsed[idx] = {'source_layout': s_layout, 'target_layout': t_layout} - else: - parsed.append({'source_layout': s_layout, 'target_layout': t_layout}) - - -def parse_layouts_by_destination(s: str, parsed: dict, parsed_list: list, dest: str = None) -> None: - """ - Parses layout command line to get all names and layouts from it. Adds all found data in the 'parsed' dict. - :param s: string to parse - :param parsed: dict where result will be stored - :param dest: type of the command line: - * 'source' is --source_layout - * 'target' is --target_layout - * None is --layout - """ - list_s = split_str_avoiding_square_brackets(s) - if len(list_s) == 1 and (list_s[0][-1] not in ')]' or (list_s[0][0] == '[' and list_s[0][-1] == ']')): - # single layout case - write_found_layout('', list_s[0], parsed, dest) - else: - for idx, layout_str in enumerate(list_s): - # case for: "name1(nhwc->[n,c,h,w])" - p1 = re.compile(r'([^\[\]\(\)]*)\((\S+)\)') - m1 = p1.match(layout_str) - # case for: "name1[n,h,w,c]->[n,c,h,w]" - p2 = re.compile(r'([^\[\]\(\)]*)(\[\S*\])') - m2 = p2.match(layout_str) - if m1: - found_g = m1.groups() - elif m2: - found_g = m2.groups() - else: - # case for layout without name - write_found_layout_list(idx, layout_str, parsed_list, dest) - continue - if len(found_g[0]) > 0: - write_found_layout(found_g[0], found_g[1], parsed, dest) - else: - write_found_layout_list(idx, found_g[1], parsed_list, dest) - - -def get_layout_values(argv_layout: str = '', argv_source_layout: str = '', argv_target_layout: str = ''): - """ - Parses layout string. - :param argv_layout: string with a list of layouts passed as a --layout. - :param argv_source_layout: string with a list of layouts passed as a --source_layout. - :param argv_target_layout: string with a list of layouts passed as a --target_layout. - :return: dict with names and layouts associated - """ - if argv_layout and (argv_source_layout or argv_target_layout): - raise Error("--layout is used as well as --source_layout and/or --target_layout which is not allowed, please " - "use one of them.") - res = {} - res_list = [] - if argv_layout: - parse_layouts_by_destination(argv_layout, res, res_list) - if argv_source_layout: - parse_layouts_by_destination(argv_source_layout, res, res_list, 'source') - if argv_target_layout: - parse_layouts_by_destination(argv_target_layout, res, res_list, 'target') - if len(res) > 0 and len(res_list) > 0: - raise Error("Some layout values are provided with names, and some without names. " - "Please provide ether all layouts with names or all layouts without names.") - if len(res) > 0: - return res - else: - return res_list - - -def parse_freeze_placeholder_values(argv_freeze_placeholder_with_value: str): - """ - Parses parse_freeze_placeholder_values string. - :param argv_freeze_placeholder_with_value: string information on freezing placeholders - :return: dictionary where key is node name, value is node value. - """ - placeholder_values = {} - if argv_freeze_placeholder_with_value is not None: - for plh_with_value in argv_freeze_placeholder_with_value.split(','): - plh_with_value = plh_with_value.split('->') - if len(plh_with_value) != 2: - raise Error("Wrong replacement syntax. Use --freeze_placeholder_with_value " - "\"node1_name->value1,node2_name->value2\"") - node_name = plh_with_value[0] - value = plh_with_value[1] - if node_name in placeholder_values and placeholder_values[node_name] != value: - raise Error("Overriding replacement value of the placeholder with name '{}': old value = {}, new value = {}" - ".".format(node_name, placeholder_values[node_name], value)) - if '[' in value.strip(' '): - value = value.replace('[', '').replace(']', '').split(' ') - placeholder_values[node_name] = value - return placeholder_values - - -def get_freeze_placeholder_values(argv_input: str, argv_freeze_placeholder_with_value: str): - """ - Parses values for placeholder freezing and input node names - - Parameters - ---------- - argv_input - string with a list of input layers: either an empty string, or strings separated with comma. - 'node_name1[shape1]->value1,node_name2[shape2]->value2,...' - argv_freeze_placeholder_with_value - string with a list of input shapes: either an empty string, or tuples separated with comma. - 'placeholder_name1->value1, placeholder_name2->value2,...' - - Returns - ------- - parsed placeholders with values for freezing - input nodes cleaned from shape info - """ - placeholder_values = parse_freeze_placeholder_values(argv_freeze_placeholder_with_value) - input_node_names = None - - if argv_input is not None: - input_node_names = '' - # walkthrough all input values and save values for freezing - for input_value in split_inputs(argv_input): - node_name, _, value, _ = parse_input_value(input_value) - input_node_names = input_node_names + ',' + node_name if input_node_names != '' else node_name - if value is None: # no value is specified for freezing - continue - if node_name in placeholder_values and placeholder_values[node_name] != value: - raise Error("Overriding replacement value of the placeholder with name '{}': old value = {}, new value = {}" - ".".format(node_name, placeholder_values[node_name], value)) - placeholder_values[node_name] = value - - return placeholder_values, input_node_names - - -def split_inputs(input_str): - brakets_count = 0 - inputs = [] - while input_str: - idx = 0 - for c in input_str: - if c == '[': - brakets_count += 1 - if c == ']': - brakets_count -= 1 - if c == ',': - if brakets_count != 0: - idx += 1 - continue - else: - break - idx += 1 - if idx >= len(input_str)-1: - inputs.append(input_str) - break - inputs.append(input_str[:idx]) - input_str = input_str[idx+1:] - return inputs - - - -def split_shapes(argv_input_shape: str): - range_reg = r'([0-9]*\.\.[0-9]*)' - first_digit_reg = r'([0-9 ]+|-1|\?|{})'.format(range_reg) - next_digits_reg = r'(,{})*'.format(first_digit_reg) - tuple_reg = r'((\({}{}\))|(\[{}{}\]))'.format(first_digit_reg, next_digits_reg, - first_digit_reg, next_digits_reg) - - full_reg = r'^{}(\s*,\s*{})*$|^$'.format(tuple_reg, tuple_reg) - if not re.match(full_reg, argv_input_shape): - raise Error('Input shape "{}" cannot be parsed. ' + refer_to_faq_msg(57), argv_input_shape) - return re.findall(r'[(\[]([0-9,\.\? -]+)[)\]]', argv_input_shape) - -def get_placeholder_shapes(argv_input: str, argv_input_shape: str, argv_batch=None): - """ - Parses input layers names and input shapes from the cli and returns the parsed object. - All shapes are specified only through one command line option either --input or --input_shape. - - Parameters - ---------- - argv_input - string with a list of input layers: either an empty string, or strings separated with comma. - E.g. 'inp1,inp2', 'node_name1[shape1]->value1,node_name2[shape2]->value2' - argv_input_shape - string with a list of input shapes: either an empty string, or tuples separated with comma. - E.g. '[1,2],[3,4]'. - Only positive integers are accepted. - '?' marks dynamic dimension. - Partial shape is specified with ellipsis. E.g. '[1..10,2,3]' - argv_batch - integer that overrides batch size in input shape - - Returns - ------- - parsed shapes in form of {'name of input':tuple} if names of inputs are provided with shapes - parsed shapes in form of {'name of input':None} if names of inputs are provided without shapes - tuple if only one shape is provided and no input name - None if neither shape nor input were provided - """ - if argv_input_shape and argv_batch: - raise Error("Both --input_shape and --batch were provided. Please provide only one of them. " + - refer_to_faq_msg(56)) - - # attempt to extract shapes from --input parameters - placeholder_shapes = dict() - placeholder_data_types = dict() - are_shapes_specified_through_input = False - inputs_list = list() - if argv_input: - for input_value in split_inputs(argv_input): - node_name, shape, _, data_type = parse_input_value(input_value) - placeholder_shapes[node_name] = shape - inputs_list.append(node_name) - if data_type is not None: - placeholder_data_types[node_name] = data_type - if shape is not None: - are_shapes_specified_through_input = True - - if argv_input_shape and are_shapes_specified_through_input: - raise Error("Shapes are specified using both --input and --input_shape command-line parameters, but only one " - "parameter is allowed.") - - if argv_batch and are_shapes_specified_through_input: - raise Error("Shapes are specified using both --input and --batch command-line parameters, but only one " - "parameter is allowed.") - - if are_shapes_specified_through_input: - return inputs_list, placeholder_shapes, placeholder_data_types - - shapes = list() - inputs = list() - inputs_list = list() - placeholder_shapes = None - - - if argv_input_shape: - shapes = split_shapes(argv_input_shape) - - if argv_input: - inputs = split_inputs(argv_input) - inputs = [remove_data_type_from_input_value(inp) for inp in inputs] - - # check number of shapes with no input provided - if argv_input_shape and not argv_input: - placeholder_shapes = [PartialShape(shape) for shape in shapes] - if len(placeholder_shapes) == 1: - placeholder_shapes = PartialShape(placeholder_shapes[0]) - # check if number of shapes does not match number of passed inputs - elif argv_input and (len(shapes) == len(inputs) or len(shapes) == 0): - # clean inputs from values for freezing - inputs_without_value = list(map(lambda x: x.split('->')[0], inputs)) - placeholder_shapes = dict(zip_longest(inputs_without_value, - map(lambda x: PartialShape(x) if x else None, shapes))) - for inp in inputs: - if '->' not in inp: - inputs_list.append(inp) - continue - shape = placeholder_shapes[inp.split('->')[0]] - inputs_list.append(inp.split('->')[0]) - - if shape is None: - continue - for dim in shape: - if isinstance(dim, Dimension) and not dim.is_static: - raise Error("Cannot freeze input with dynamic shape: {}".format(shape)) - - elif argv_input: - raise Error('Please provide each input layers with an input layer shape. ' + refer_to_faq_msg(58)) - - return inputs_list, placeholder_shapes, placeholder_data_types - - -def parse_tuple_pairs(argv_values: str): - """ - Gets mean/scale values from the given string parameter - Parameters - ---------- - argv_values - string with a specified input name and list of mean values: either an empty string, or a tuple - in a form [] or (). - E.g. 'data(1,2,3)' means 1 for the RED channel, 2 for the GREEN channel, 3 for the BLUE channel for the data - input layer, or tuple of values in a form [] or () if input is specified separately, e.g. (1,2,3),[4,5,6]. - - Returns - ------- - dictionary with input name and tuple of values or list of values if mean/scale value is specified with input, - e.g.: - "data(10,20,30),info(11,22,33)" -> { 'data': [10,20,30], 'info': [11,22,33] } - "(10,20,30),(11,22,33)" -> [mo_array(10,20,30), mo_array(11,22,33)] - """ - res = {} - if not argv_values: - return res - - matches = [m for m in re.finditer(r'[(\[]([0-9., -]+)[)\]]', argv_values, re.IGNORECASE)] - - error_msg = 'Mean/scale values should consist of name and values specified in round or square brackets ' \ - 'separated by comma, e.g. data(1,2,3),info[2,3,4],egg[255] or data(1,2,3). Or just plain set of ' \ - 'values without names: (1,2,3),(2,3,4) or [1,2,3],[2,3,4].' + refer_to_faq_msg(101) - if not matches: - raise Error(error_msg, argv_values) - - name_start_idx = 0 - name_was_present = False - for idx, match in enumerate(matches): - input_name = argv_values[name_start_idx:match.start(0)] - name_start_idx = match.end(0) + 1 - tuple_value = np.fromstring(match.groups()[0], dtype=float, sep=',') - - if idx != 0 and (name_was_present ^ bool(input_name)): - # if node name firstly was specified and then subsequently not or vice versa - # e.g. (255),input[127] or input(255),[127] - raise Error(error_msg, argv_values) - - name_was_present = True if input_name != "" else False - if name_was_present: - res[input_name] = tuple_value - else: - res[idx] = tuple_value - - if not name_was_present: - # return a list instead of a dictionary - res = sorted(res.values(), key=lambda v: v[0]) - return res - - -def get_tuple_values(argv_values: str or tuple, num_exp_values: int = 3, t=float or int): - """ - Gets mean values from the given string parameter - Args: - argv_values: string with list of mean values: either an empty string, or a tuple in a form [] or (). - E.g. '(1,2,3)' means 1 for the RED channel, 2 for the GREEN channel, 4 for the BLUE channel. - t: either float or int - num_exp_values: number of values in tuple - - Returns: - tuple of values - """ - - digit_reg = r'(-?[0-9. ]+)' if t == float else r'(-?[0-9 ]+)' - - assert num_exp_values > 1, 'Can not parse tuple of size 1' - content = r'{0}\s*,{1}\s*{0}'.format(digit_reg, (digit_reg + ',') * (num_exp_values - 2)) - tuple_reg = r'((\({0}\))|(\[{0}\]))'.format(content) - - if isinstance(argv_values, tuple) and not len(argv_values): - return argv_values - - if not len(argv_values) or not re.match(tuple_reg, argv_values): - raise Error('Values "{}" cannot be parsed. ' + - refer_to_faq_msg(59), argv_values) - - mean_values_matches = re.findall(r'[(\[]([0-9., -]+)[)\]]', argv_values) - - for mean in mean_values_matches: - if len(mean.split(',')) != num_exp_values: - raise Error('{} channels are expected for given values. ' + - refer_to_faq_msg(60), num_exp_values) - - return mean_values_matches - - -def get_mean_scale_dictionary(mean_values, scale_values, argv_input: list): - """ - This function takes mean_values and scale_values, checks and processes them into convenient structure - - Parameters - ---------- - mean_values dictionary, contains input name and mean values passed py user (e.g. {data: np.array[102.4, 122.1, 113.9]}), - or list containing values (e.g. np.array[102.4, 122.1, 113.9]) - scale_values dictionary, contains input name and scale values passed py user (e.g. {data: np.array[102.4, 122.1, 113.9]}) - or list containing values (e.g. np.array[102.4, 122.1, 113.9]) - - Returns - ------- - The function returns a dictionary e.g. - mean = { 'data': np.array, 'info': np.array }, scale = { 'data': np.array, 'info': np.array }, input = "data, info" -> - { 'data': { 'mean': np.array, 'scale': np.array }, 'info': { 'mean': np.array, 'scale': np.array } } - - """ - res = {} - # collect input names - if argv_input: - inputs = [get_node_name_with_port_from_input_value(input_value) for input_value in split_inputs(argv_input)] - else: - inputs = [] - if type(mean_values) is dict: - inputs = list(mean_values.keys()) - if type(scale_values) is dict: - for name in scale_values.keys(): - if name not in inputs: - inputs.append(name) - - # create unified object containing both mean and scale for input - if type(mean_values) is dict and type(scale_values) is dict: - if not mean_values and not scale_values: - return res - - for inp_scale in scale_values.keys(): - if inp_scale not in inputs: - raise Error("Specified scale_values name '{}' do not match to any of inputs: {}. " - "Please set 'scale_values' that correspond to values from input.".format(inp_scale, inputs)) - - for inp_mean in mean_values.keys(): - if inp_mean not in inputs: - raise Error("Specified mean_values name '{}' do not match to any of inputs: {}. " - "Please set 'mean_values' that correspond to values from input.".format(inp_mean, inputs)) - - for inp in inputs: - inp, port = split_node_in_port(inp) - if inp in mean_values or inp in scale_values: - res.update( - { - inp: { - 'mean': - mean_values[inp] if inp in mean_values else None, - 'scale': - scale_values[inp] if inp in scale_values else None - } - } - ) - return res - - # user specified input and mean/scale separately - we should return dictionary - if inputs: - if mean_values and scale_values: - if len(inputs) != len(mean_values): - raise Error('Numbers of inputs and mean values do not match. ' + - refer_to_faq_msg(61)) - if len(inputs) != len(scale_values): - raise Error('Numbers of inputs and scale values do not match. ' + - refer_to_faq_msg(62)) - - data = list(zip(mean_values, scale_values)) - - for i in range(len(data)): - res.update( - { - inputs[i]: { - 'mean': - data[i][0], - 'scale': - data[i][1], - - } - } - ) - return res - # only mean value specified - if mean_values: - data = list(mean_values) - for i in range(len(data)): - res.update( - { - inputs[i]: { - 'mean': - data[i], - 'scale': - None - - } - } - ) - return res - - # only scale value specified - if scale_values: - data = list(scale_values) - for i in range(len(data)): - res.update( - { - inputs[i]: { - 'mean': - None, - 'scale': - data[i] - - } - } - ) - return res - # mean and/or scale are specified without inputs - return list(zip_longest(mean_values, scale_values)) - - -def get_model_name(path_input_model: str) -> str: - """ - Deduces model name by a given path to the input model - Args: - path_input_model: path to the input model - - Returns: - name of the output IR - """ - parsed_name, extension = os.path.splitext(os.path.basename(path_input_model)) - return 'model' if parsed_name.startswith('.') or len(parsed_name) == 0 else parsed_name - - -def get_model_name_from_args(argv: argparse.Namespace): - model_name = "" - if hasattr(argv, 'model_name'): - if argv.model_name: - model_name = argv.model_name - elif argv.input_model: - model_name = get_model_name(argv.input_model) - elif argv.saved_model_dir: - model_name = "saved_model" - elif argv.input_meta_graph: - model_name = get_model_name(argv.input_meta_graph) - elif argv.input_symbol: - model_name = get_model_name(argv.input_symbol) - argv.model_name = model_name - return model_name - - -def get_absolute_path(path_to_file: str) -> str: - """ - Deduces absolute path of the file by a given path to the file - Args: - path_to_file: path to the file - - Returns: - absolute path of the file - """ - file_path = os.path.expanduser(path_to_file) - if not os.path.isabs(file_path): - file_path = os.path.join(os.getcwd(), file_path) - return file_path - - -def isfloat(value): - try: - float(value) - return True - except ValueError: - return False - - -def isbool(value): - try: - strtobool(value) - return True - except ValueError: - return False - - -def isdict(value): - try: - evaluated = ast.literal_eval(value) - return isinstance(evaluated, dict) - except ValueError: - return False - - -def convert_string_to_real_type(value: str): - if isdict(value): - return ast.literal_eval(value) - - values = value.split(',') - for i in range(len(values)): - value = values[i] - if value.isdigit(): - values[i] = int(value) - elif isfloat(value): - values[i] = float(value) - elif isbool(value): - values[i] = strtobool(value) - - return values[0] if len(values) == 1 else values - - -def parse_transform(transform: str) -> list: - transforms = [] - - if len(transform) == 0: - return transforms - - all_transforms = re.findall(r"([a-zA-Z0-9]+)(\[([^\]]+)\])*(,|$)", transform) - - # Check that all characters were matched otherwise transform key value is invalid - key_len = len(transform) - for transform in all_transforms: - # In regexp we have 4 groups where 1st group - transformation_name, - # 2nd group - [args], - # 3rd group - args, <-- nested group - # 4th group - EOL - # And to check that regexp matched all string we decrease total length by the length of matched groups (1,2,4) - # In case if no arguments were given to transformation then 2nd and 3rd groups will be empty. - if len(transform) != 4: - raise Error("Unexpected transform key structure: {}".format(transform)) - key_len -= len(transform[0]) + len(transform[1]) + len(transform[3]) - - if key_len != 0: - raise Error("Unexpected transform key structure: {}".format(transform)) - - for transform in all_transforms: - name = transform[0] - args = transform[2] - - args_dict = {} - - if len(args) != 0: - for arg in args.split(';'): - m = re.match(r"^([_a-zA-Z]+)=(.+)$", arg) - if not m: - raise Error("Unrecognized attributes for transform key: {}".format(transform)) - - args_dict[m.group(1)] = convert_string_to_real_type(m.group(2)) - - transforms.append((name, args_dict)) - - return transforms - - -def check_available_transforms(transforms: list): - """ - This function check that transformations specified by user are available. - :param transforms: list of user specified transformations - :return: raises an Error if transformation is not available - """ - from openvino.tools.mo.back.offline_transformations import get_available_transformations - available_transforms = get_available_transformations() - - missing_transformations = [] - for name, _ in transforms: - if name not in available_transforms.keys(): - missing_transformations.append(name) - - if len(missing_transformations) != 0: - raise Error('Following transformations ({}) are not available. ' - 'List with available transformations ({})'.format(','.join(missing_transformations), - ','.join(available_transforms.keys()))) - return True - - -def check_positive(value): - try: - int_value = int(value) - if int_value <= 0: - raise ValueError - except ValueError: - raise argparse.ArgumentTypeError("expected a positive integer value") - - return int_value - - -def check_bool(value): - if isinstance(value, bool): - return value - elif isinstance(value, str): - if value.lower() not in ['true', 'false']: - raise argparse.ArgumentTypeError("expected a True/False value") - return value.lower() == 'true' - else: - raise argparse.ArgumentTypeError("expected a bool or str type") - - -def depersonalize(value: str, key: str): - dir_keys = [ - 'output_dir', 'extensions', 'saved_model_dir', 'tensorboard_logdir', 'caffe_parser_path' - ] - if isinstance(value, list): - updated_value = [] - for elem in value: - updated_value.append(depersonalize(elem, key)) - return updated_value - - if not isinstance(value, str): - return value - res = [] - for path in value.split(','): - if os.path.isdir(path) and key in dir_keys: - res.append('DIR') - elif os.path.isfile(path): - res.append(os.path.join('DIR', os.path.split(path)[1])) - else: - res.append(path) - return ','.join(res) - -def get_available_front_ends(fem=None): - # Use this function as workaround to avoid IR frontend usage by MO - if fem is None: - return [] - available_moc_front_ends = fem.get_available_front_ends() - if 'ir' in available_moc_front_ends: - available_moc_front_ends.remove('ir') - - return available_moc_front_ends +from openvino.tools.ovc.cli_parser import get_all_cli_parser, get_layout_values # pylint: disable=no-name-in-module,import-error diff --git a/tools/mo/openvino/tools/mo/utils/error.py b/tools/mo/openvino/tools/mo/utils/error.py index f1f6937f4cc..1daf27e6f1f 100644 --- a/tools/mo/openvino/tools/mo/utils/error.py +++ b/tools/mo/openvino/tools/mo/utils/error.py @@ -1,49 +1,4 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -import re - - -class BasicError(Exception): - """ Base class for all exceptions in Model Optimizer - - It operates like Exception but when it is converted to str, - it formats string as args[0].format(*args[1:]), where - args are arguments provided when an exception instance is - created. - """ - - def __str__(self): - if len(self.args) <= 1: - return Exception.__str__(self) - return self.args[0].format(*self.args[1:]) # pylint: disable=unsubscriptable-object - - -class FrameworkError(BasicError): - """ User-friendly error: raised when the error on the framework side. """ - pass - - -class Error(BasicError): - """ User-friendly error: raised when the error on the user side. """ - pass - - -class InternalError(BasicError): - """ Not user-friendly error: user cannot fix it and it points to the bug inside MO. """ - pass - - -def classify_error_type(e): - patterns = [ - # Example: No module named 'openvino._offline_transformations.offline_transformations_api' - r"No module named \'\S+\'", - # Example: cannot import name 'IECore' from 'openvino.inference_engine' (unknown location) - r"cannot import name \'\S+\'", - ] - error_message = str(e) - for pattern in patterns: - m = re.search(pattern, error_message) - if m: - return m.group(0) - return "undefined" +from openvino.tools.ovc.error import Error, InternalError, FrameworkError, classify_error_type # pylint: disable=no-name-in-module,import-error diff --git a/tools/mo/openvino/tools/mo/utils/get_ov_update_message.py b/tools/mo/openvino/tools/mo/utils/get_ov_update_message.py index 6768be91ebd..c1fb37e7723 100644 --- a/tools/mo/openvino/tools/mo/utils/get_ov_update_message.py +++ b/tools/mo/openvino/tools/mo/utils/get_ov_update_message.py @@ -1,48 +1,6 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -import datetime - -msg_fmt = 'Check for a new version of Intel(R) Distribution of OpenVINO(TM) toolkit here {0} ' \ - 'or on https://github.com/openvinotoolkit/openvino' - - -def get_ov_update_message(): - expected_update_date = datetime.date(year=2023, month=12, day=1) - current_date = datetime.date.today() - - link = 'https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit/download.html?cid=other&source=prod&campid=ww_2023_bu_IOTG_OpenVINO-2023-0&content=upg_all&medium=organic' - - return msg_fmt.format(link) if current_date >= expected_update_date else None - - -def get_ov_api20_message(): - link = "https://docs.openvino.ai/2023.0/openvino_2_0_transition_guide.html" - message = '[ INFO ] The model was converted to IR v11, the latest model format that corresponds to the source DL framework ' \ - 'input/output format. While IR v11 is backwards compatible with OpenVINO Inference Engine API v1.0, ' \ - 'please use API v2.0 (as of 2022.1) to take advantage of the latest improvements in IR v11.\n' \ - 'Find more information about API v2.0 and IR v11 at {}'.format(link) - - return message - - -def get_tf_fe_message(): - link = "https://docs.openvino.ai/2023.0/openvino_docs_MO_DG_TensorFlow_Frontend.html" - message = '[ INFO ] IR generated by new TensorFlow Frontend is compatible only with API v2.0. Please make sure to use API v2.0.\n' \ - 'Find more information about new TensorFlow Frontend at {}'.format(link) - - return message - - -def get_compression_message(): - link = "https://docs.openvino.ai/2023.0/openvino_docs_MO_DG_FP16_Compression.html" - message = '[ INFO ] Generated IR will be compressed to FP16. ' \ - 'If you get lower accuracy, please consider disabling compression ' \ - 'by removing argument --compress_to_fp16 or set it to false --compress_to_fp16=False.\n' \ - 'Find more information about compression to FP16 at {}'.format(link) - return message - - def get_try_legacy_fe_message(): message = '[ INFO ] You can also try to use legacy TensorFlow Frontend by using argument --use_legacy_frontend.\n' return message diff --git a/tools/mo/openvino/tools/mo/utils/logger.py b/tools/mo/openvino/tools/mo/utils/logger.py index 3f0a6145e1a..82ae3f15bda 100644 --- a/tools/mo/openvino/tools/mo/utils/logger.py +++ b/tools/mo/openvino/tools/mo/utils/logger.py @@ -1,160 +1,6 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -import importlib.util -import logging as log -import os -import re -import sys -from argparse import Namespace -from copy import copy -# WA for abseil bug that affects logging while importing TF starting 1.14 version -# Link to original issue: https://github.com/abseil/abseil-py/issues/99 -if importlib.util.find_spec('absl') is not None: - import absl.logging - - log.root.removeHandler(absl.logging._absl_handler) - -handler_num = 0 - - -class LvlFormatter(log.Formatter): - format_dict = { - log.DEBUG: "[ %(asctime)s ] [ %(levelname)s ] [ %(module)s:%(lineno)d ] %(msg)s", - log.INFO: "[ %(levelname)s ] %(msg)s", - log.WARNING: "[ WARNING ] %(msg)s", - log.ERROR: "[ %(levelname)s ] %(msg)s", - log.CRITICAL: "[ %(levelname)s ] %(msg)s", - 'framework_error': "[ FRAMEWORK ERROR ] %(msg)s", - 'analysis_info': "[ ANALYSIS INFO ] %(msg)s" - } - - def __init__(self, lvl, fmt=None): - log.Formatter.__init__(self, fmt) - self.lvl = lvl - - def format(self, record: log.LogRecord): - if self.lvl == 'DEBUG': - self._style._fmt = self.format_dict[log.DEBUG] - else: - self._style._fmt = self.format_dict[record.levelno] - if 'is_warning' in record.__dict__.keys(): - self._style._fmt = self.format_dict[log.WARNING] - if 'framework_error' in record.__dict__.keys(): - self._style._fmt = self.format_dict['framework_error'] - if 'analysis_info' in record.__dict__.keys(): - self._style._fmt = self.format_dict['analysis_info'] - return log.Formatter.format(self, record) - - -class TagFilter(log.Filter): - def __init__(self, regex: str): - self.regex = regex - - def filter(self, record: log.LogRecord): - if record.__dict__['funcName'] == 'load_grammar': # for nx not to log into our logs - return False - if self.regex: - if 'tag' in record.__dict__.keys(): - tag = record.__dict__['tag'] - return re.findall(self.regex, tag) - else: - return False - return True # if regex wasn't set print all logs - - -def init_logger(lvl: str, silent: bool): - global handler_num - log_exp = os.environ.get('MO_LOG_PATTERN') - if silent: - lvl = 'ERROR' - fmt = LvlFormatter(lvl=lvl) - handler = log.StreamHandler() - handler.setFormatter(fmt) - logger = log.getLogger() - logger.setLevel(lvl) - logger.addFilter(TagFilter(regex=log_exp)) - if handler_num == 0 and len(logger.handlers) == 0: - logger.addHandler(handler) - handler_num += 1 - -def get_logger_state(): - logger = log.getLogger() - return logger.level, copy(logger.filters), copy(logger.handlers) - -def restore_logger_state(state: tuple): - level, filters, handlers = state - logger = log.getLogger() - logger.setLevel(level) - logger.filters = filters - logger.handlers = handlers - - -def progress_bar(function: callable): - """ - Decorator for model conversion pipeline progress display - Works in combination with function: mo.utils.class_registration.apply_transform - """ - - def wrapper(*args, **kwargs): - for arg in ['graph', 'curr_transform_num', 'num_transforms']: - msg = 'Progress bar decorator is enabled for Model Optimizer transformation applying cycle only. ' \ - 'Argument `{}` {}' - - assert arg in kwargs, msg.format(arg, 'is missing') - assert kwargs[arg] is not None, msg.format(arg, 'should not be None') - - if 'progress' in kwargs['graph'].graph['cmd_params'] and kwargs['graph'].graph['cmd_params'].progress: - bar_len = 20 - total_replacers_count = kwargs['num_transforms'] - - def progress(i): - return int((i + 1) / total_replacers_count * bar_len) - - def percent(i): - return (i + 1) / total_replacers_count * 100 - - end = '' if not kwargs['graph'].graph['cmd_params'].stream_output else '\n' - curr_i = kwargs['curr_transform_num'] - print('\rProgress: [{:{}}]{:>7.2f}% done'.format('.' * progress(curr_i), bar_len, percent(curr_i)), end=end) - - sys.stdout.flush() - - function(*args, **kwargs) - - return wrapper - -def progress_printer(argv: Namespace): - """ - A higher-order factory function returning a configurable callback displaying a progress bar - Depending on the configuration stored in 'argv' the progress bar can be one-line, multi-line, or silent. - """ - def _progress_bar(progress, total, completed, endline): - bar_len = 20 - - def dots(): - return '.' * int(progress * bar_len) - - print('\rProgress: [{:{}}]{:>7.2f}% done'.format(dots(), bar_len, progress*100), end=endline) - sys.stdout.flush() - - def no_progress_bar(progress, total, completed): - """ A 'dummy' progressbar which doesn't print anything """ - pass - - def oneline_progress_bar(progress, total, completed): - """ A callback that always prints the progress in the same line (mimics real GUI progress bar)""" - _progress_bar(progress, total, completed, '') - - def newline_progress_bar(progress, total, completed): - """ A callback that prints an updated progress bar in separate lines """ - _progress_bar(progress, total, completed, '\n') - - if "progress" in argv and argv.progress: - if "stream_output" in argv and argv.stream_output: - return newline_progress_bar - else: - return oneline_progress_bar - else: - return no_progress_bar +from openvino.tools.ovc.logger import init_logger, LvlFormatter, TagFilter, get_logger_state, restore_logger_state, \ + progress_bar, progress_printer # pylint: disable=no-name-in-module,import-error \ No newline at end of file diff --git a/tools/mo/openvino/tools/mo/utils/telemetry_stub.py b/tools/mo/openvino/tools/mo/utils/telemetry_stub.py index 567a4adf814..0e1ba9a8341 100644 --- a/tools/mo/openvino/tools/mo/utils/telemetry_stub.py +++ b/tools/mo/openvino/tools/mo/utils/telemetry_stub.py @@ -1,29 +1,4 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 - -class Telemetry(object): - """ - Stab file for the Telemetry class which is used when Telemetry class is not available. - """ - - def __init__(self, *arg, **kwargs): - pass - - def send_event(self, *arg, **kwargs): - pass - - def send_error(self, *arg, **kwargs): - pass - - def start_session(self, *arg, **kwargs): - pass - - def end_session(self, *arg, **kwargs): - pass - - def force_shutdown(self, *arg, **kwargs): - pass - - def send_stack_trace(self, *arg, **kwargs): - pass +from openvino.tools.ovc.telemetry_stub import Telemetry # pylint: disable=no-name-in-module,import-error diff --git a/tools/mo/openvino/tools/mo/utils/telemetry_utils.py b/tools/mo/openvino/tools/mo/utils/telemetry_utils.py index d53b70956cb..23e69782c50 100644 --- a/tools/mo/openvino/tools/mo/utils/telemetry_utils.py +++ b/tools/mo/openvino/tools/mo/utils/telemetry_utils.py @@ -1,18 +1,15 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -import argparse from collections import Counter import numpy as np -import numbers + +from openvino.tools.ovc.telemetry_utils import init_mo_telemetry, send_framework_info, get_tid, \ + send_conversion_result, arg_to_str, send_params_info # pylint: disable=no-name-in-module,import-error from openvino.tools.mo.front.common.partial_infer.utils import is_fully_defined, unmask_shape, int64_array from openvino.tools.mo.graph.graph import Graph from openvino.tools.mo.middle.pattern_match import for_graph_and_each_sub_graph_recursively -from openvino.tools.mo.utils.cli_parser import get_params_with_paths_list -from openvino.tools.mo.utils.telemetry_params import telemetry_params -from openvino.tools.mo.utils.version import VersionChecker -from openvino.tools.mo.utils.utils import check_values_equal try: import openvino_telemetry as tm @@ -20,10 +17,6 @@ except ImportError: import openvino.tools.mo.utils.telemetry_stub as tm -def init_mo_telemetry(): - _ = tm.Telemetry(tid=get_tid(), app_name='Model Optimizer', app_version=VersionChecker().get_mo_simplified_version()) - - def send_op_names_info(framework: str, graph: Graph): """ This function sends information about operations in model. @@ -68,58 +61,3 @@ def send_shapes_info(framework: str, graph: Graph): t.send_event('mo', 'input_shapes', message_str) t.send_event('mo', 'partially_defined_shape', "{partially_defined_shape:" + is_partially_defined + ",fw:" + framework + "}") - - -def arg_to_str(arg): - # This method converts to string only known types, otherwise returns string with name of the type - from openvino.runtime import PartialShape, Shape, Type, Layout - if isinstance(arg, (PartialShape, Shape, Type, Layout)): - return str(arg) - if isinstance(arg, (str, numbers.Number, bool)): - return str(arg) - return str(type(arg)) - - -def send_params_info(argv: argparse.Namespace, cli_parser: argparse.ArgumentParser): - """ - This function sends information about used command line parameters. - :param argv: command line parameters. - :param cli_parser: command line parameters parser. - """ - t = tm.Telemetry() - params_with_paths = get_params_with_paths_list() - for arg in vars(argv): - arg_value = getattr(argv, arg) - if not check_values_equal(arg_value, cli_parser.get_default(arg)): - if arg in params_with_paths: - # If command line argument value is a directory or a path to file it is not sent - # as it may contain confidential information. "1" value is used instead. - param_str = arg + ":" + str(1) - else: - param_str = arg + ":" + arg_to_str(arg_value) - - t.send_event('mo', 'cli_parameters', param_str) - - -def send_framework_info(framework: str): - """ - This function sends information about used framework. - :param framework: framework name. - """ - t = tm.Telemetry() - t.send_event('mo', 'framework', framework) - - -def get_tid(): - """ - This function returns the ID of the database to send telemetry. - """ - return telemetry_params['TID'] - - -def send_conversion_result(conversion_result: str, need_shutdown=True): - t = tm.Telemetry() - t.send_event('mo', 'conversion_result', conversion_result) - t.end_session('mo') - if need_shutdown: - t.force_shutdown(1.0) diff --git a/tools/mo/openvino/tools/mo/utils/utils.py b/tools/mo/openvino/tools/mo/utils/utils.py index 17d3f47a413..fef2bf9c1cd 100644 --- a/tools/mo/openvino/tools/mo/utils/utils.py +++ b/tools/mo/openvino/tools/mo/utils/utils.py @@ -10,24 +10,7 @@ from typing import Callable import numpy as np from openvino.tools.mo.front.common.partial_infer.utils import dynamic_dimension - -try: - import openvino_telemetry as tm -except ImportError: - import openvino.tools.mo.utils.telemetry_stub as tm - - -def refer_to_faq_msg(question_num: int): - try: - t = tm.Telemetry() - t.send_event('mo', 'error_info', "faq:" + str(question_num)) - except Exception: - # Telemetry can be not initialized if it is used in MO IR Reader - pass - - return '\n For more information please refer to Model Optimizer FAQ, question #{0}. ' \ - '(https://docs.openvino.ai/2023.0/openvino_docs_MO_DG_prepare_model_Model_Optimizer_FAQ.html' \ - '?question={0}#question-{0})'.format(question_num) +from openvino.tools.ovc.utils import refer_to_faq_msg, check_values_equal # pylint: disable=no-name-in-module,import-error class NamedAttrsClass: @@ -145,14 +128,3 @@ def unique_by(xs: list, predicate: Callable) -> list: """ groups = group_by_with_binary_predicate(xs, predicate) return [group[0] for group in groups] - - -def check_values_equal(val1, val2): - # This method is needed to check equality of values where some values can be None - if val1 is None and val2 is None: - return True - if val1 is None: - return False - if val2 is None: - return False - return val1 == val2 diff --git a/tools/mo/openvino/tools/mo/utils/version.py b/tools/mo/openvino/tools/mo/utils/version.py index f877fdd3963..cd8bbcb9626 100644 --- a/tools/mo/openvino/tools/mo/utils/version.py +++ b/tools/mo/openvino/tools/mo/utils/version.py @@ -11,6 +11,8 @@ from openvino.runtime import get_version as get_ie_version from openvino.tools.mo.utils.error import Error from openvino.tools.mo.utils.find_ie_version import find_ie_version from openvino.tools.mo.utils.utils import get_mo_root_dir +from openvino.tools.ovc.version import extract_release_version, simplify_version, extract_hash_from_version, \ + SingletonMetaClass # pylint: disable=no-name-in-module,import-error def get_version_file_path(): @@ -39,28 +41,6 @@ def get_version(): return f.readline().replace('\n', '') -def extract_release_version(version: str): - patterns = [ - # captures release version set by CI for example: '2021.1.0-1028-55e4d5673a8' - r"^([0-9]+).([0-9]+)*", - # captures release version generated by MO from release branch, for example: 'custom_releases/2021/1_55e4d567' - r"_releases/([0-9]+)/([0-9]+)_*" - ] - - for pattern in patterns: - m = re.search(pattern, version) - if m and len(m.groups()) == 2: - return m.group(1), m.group(2) - return None, None - - -def simplify_version(version: str): - release_version = extract_release_version(version) - if release_version == (None, None): - return "custom" - return "{}.{}".format(*release_version) - - def get_simplified_mo_version(): return simplify_version(get_version()) @@ -79,25 +59,6 @@ def get_simplified_ie_version(env=dict(), version=None): return simplify_version(version) -def extract_hash_from_version(full_version: str): - res = re.findall(r'[-_]([a-f0-9]{7,40})', full_version) - if len(res) > 0: - return res[0] - else: - return None - - -class SingletonMetaClass(type): - def __init__(self, cls_name, super_classes, dic): - self.__single_instance = None - super().__init__(cls_name, super_classes, dic) - - def __call__(cls, *args, **kwargs): - if cls.__single_instance is None: - cls.__single_instance = super(SingletonMetaClass, cls).__call__(*args, **kwargs) - return cls.__single_instance - - class VersionChecker(metaclass=SingletonMetaClass): def __init__(self): self.runtime_checked = False diff --git a/tools/mo/unit_tests/mo/back/moc_preprocessing_test_actual.py b/tools/mo/unit_tests/mo/back/moc_preprocessing_test_actual.py index 7c850478199..99f7a5827ee 100644 --- a/tools/mo/unit_tests/mo/back/moc_preprocessing_test_actual.py +++ b/tools/mo/unit_tests/mo/back/moc_preprocessing_test_actual.py @@ -9,7 +9,7 @@ from unit_tests.mo.unit_test_with_mocked_telemetry import UnitTestWithMockedTele try: # pylint: disable=no-name-in-module,import-error - from openvino.tools.mo.back.preprocessing import apply_preprocessing + from openvino.tools.ovc.moc_frontend.preprocessing import apply_preprocessing # pylint: disable=no-name-in-module,import-error import openvino.runtime.opset8 as ops diff --git a/tools/mo/unit_tests/mo/moc_frontend/moc_extractor_test_actual.py b/tools/mo/unit_tests/mo/moc_frontend/moc_extractor_test_actual.py index 1534c962963..e201baf6833 100644 --- a/tools/mo/unit_tests/mo/moc_frontend/moc_extractor_test_actual.py +++ b/tools/mo/unit_tests/mo/moc_frontend/moc_extractor_test_actual.py @@ -3,7 +3,7 @@ import unittest -from openvino.tools.mo.moc_frontend.extractor import decode_name_with_port +from openvino.tools.ovc.moc_frontend.extractor import decode_name_with_port from openvino.tools.mo.utils.error import Error import pytest diff --git a/tools/mo/unit_tests/mo/utils/convert_impl_tmp_irs_cleanup_test_actual.py b/tools/mo/unit_tests/mo/utils/convert_impl_tmp_irs_cleanup_test_actual.py index aec3e6d7fb3..f083cfa0ead 100644 --- a/tools/mo/unit_tests/mo/utils/convert_impl_tmp_irs_cleanup_test_actual.py +++ b/tools/mo/unit_tests/mo/utils/convert_impl_tmp_irs_cleanup_test_actual.py @@ -22,7 +22,7 @@ class TestConvertImplTmpIrsCleanup(unittest.TestCase): return False def test_tmp_irs_cleanup_convert_impl_1(self): - with patch("openvino.tools.mo.back.offline_transformations.apply_offline_transformations") as emit_ir_func: + with patch("openvino.tools.ovc.moc_frontend.offline_transformations.apply_offline_transformations") as emit_ir_func: emit_ir_func.side_effect = Error('offline transformations step has failed') params = {'input_model': self.test_model_file, 'input_model_is_text': True, 'input': 'x[3],y[1 3]', diff --git a/tools/mo/unit_tests/mo/utils/ir_reader/ops_test.py b/tools/mo/unit_tests/mo/utils/ir_reader/ops_test.py index aa1f690f4a0..c01a815b42c 100644 --- a/tools/mo/unit_tests/mo/utils/ir_reader/ops_test.py +++ b/tools/mo/unit_tests/mo/utils/ir_reader/ops_test.py @@ -11,7 +11,7 @@ import openvino.runtime.opset10 as opset10 from openvino.runtime import Model, serialize, Core, PartialShape, Dimension from openvino.tools.mo.utils.ir_reader.restore_graph import restore_graph_from_ir, save_restored_graph -from openvino.tools.mo.utils.logger import init_logger +from openvino.tools.ovc.logger import init_logger # required to be in global area to run MO IR Reader init_logger('ERROR', False) diff --git a/tools/mo/unit_tests/mo/utils/test_mo_model_analysis_actual.py b/tools/mo/unit_tests/mo/utils/test_mo_model_analysis_actual.py index 0837d0c8637..9878aa5a588 100644 --- a/tools/mo/unit_tests/mo/utils/test_mo_model_analysis_actual.py +++ b/tools/mo/unit_tests/mo/utils/test_mo_model_analysis_actual.py @@ -11,7 +11,7 @@ import json import argparse from openvino.tools.mo.convert_impl import prepare_ir from openvino.frontend import FrontEndManager # pylint: disable=no-name-in-module,import-error -from openvino.tools.mo.moc_frontend.analysis import json_model_analysis_dump + try: import openvino_telemetry as tm @@ -112,7 +112,7 @@ class TestMoFallback(unittest.TestCase): os.remove(name) - @patch('openvino.tools.mo.moc_frontend.analysis.json_model_analysis_print') + @patch('openvino.tools.ovc.moc_frontend.analysis.json_model_analysis_print') def test_model(self, json_print): args = base_args_config() args.input_model = "test_model.onnx" @@ -132,7 +132,7 @@ class TestMoFallback(unittest.TestCase): "add_out": {"shape": "None", "data_type": "None", "value": "None"}}') - @patch('openvino.tools.mo.moc_frontend.analysis.json_model_analysis_print') + @patch('openvino.tools.ovc.moc_frontend.analysis.json_model_analysis_print') def test_model_with_dyn_shapes(self, json_print): args = base_args_config() args.input_model = "test_model_2.onnx" @@ -156,7 +156,7 @@ class TestMoFallback(unittest.TestCase): "add_out": {"shape": "None", "data_type": "None", "value": "None"}}') - @patch('openvino.tools.mo.moc_frontend.analysis.json_model_analysis_print') + @patch('openvino.tools.ovc.moc_frontend.analysis.json_model_analysis_print') def test_multi_outputs_model(self, json_print): args = base_args_config() args.input_model = "test_model_3.onnx" diff --git a/tools/mo/unit_tests/moc_tf_fe/check_info_messages_test.py b/tools/mo/unit_tests/moc_tf_fe/check_info_messages_test.py index 554740094d0..cf93a78e20f 100644 --- a/tools/mo/unit_tests/moc_tf_fe/check_info_messages_test.py +++ b/tools/mo/unit_tests/moc_tf_fe/check_info_messages_test.py @@ -9,8 +9,7 @@ from contextlib import redirect_stdout from unittest.mock import patch from openvino.tools.mo.main import main -from openvino.tools.mo.utils.get_ov_update_message import get_tf_fe_message, get_compression_message, \ - get_try_legacy_fe_message +from openvino.tools.ovc.get_ov_update_message import get_tf_fe_message def arg_parse_helper(input_model, @@ -56,36 +55,6 @@ def arg_parse_helper(input_model, ) -class TestInfoMessagesTFFE(unittest.TestCase): - @patch('argparse.ArgumentParser.parse_args', - return_value=arg_parse_helper(input_model="model_int32.pbtxt", - use_legacy_frontend=False, use_new_frontend=True, - framework=None, input_model_is_text=True)) - def test_api20_only(self, mock_argparse): - f = io.StringIO() - with redirect_stdout(f): - main(argparse.ArgumentParser()) - std_out = f.getvalue() - tf_fe_message_found = get_tf_fe_message() in std_out - assert tf_fe_message_found - - @patch('openvino.tools.mo.convert_impl.driver', side_effect=Exception('MESSAGE')) - def run_fail_tf_fe(self, mock_driver): - from openvino.tools.mo import convert_model - path = os.path.dirname(__file__) - convert_model(os.path.join(path, "test_models", "model_int32.pbtxt"), silent=False) - - def test_suggest_legacy_fe(self): - f = io.StringIO() - with redirect_stdout(f): - try: - self.run_fail_tf_fe() - except: - pass - std_out = f.getvalue() - assert get_try_legacy_fe_message() in std_out - - class TestInfoMessagesTFFEWithFallback(unittest.TestCase): @patch('argparse.ArgumentParser.parse_args', return_value=arg_parse_helper(input_model="model_switch_merge.pbtxt", @@ -100,17 +69,3 @@ class TestInfoMessagesTFFEWithFallback(unittest.TestCase): tf_fe_message_found = get_tf_fe_message() in std_out assert not tf_fe_message_found, 'TF FE Info message is found for the fallback case' - -class TestInfoMessagesCompressFP16(unittest.TestCase): - @patch('argparse.ArgumentParser.parse_args', - return_value=arg_parse_helper(input_model="model_int32.pbtxt", - use_legacy_frontend=False, use_new_frontend=True, - compress_to_fp16=True, - framework=None, input_model_is_text=True)) - def test_compress_to_fp16(self, mock_argparse): - f = io.StringIO() - with redirect_stdout(f): - main(argparse.ArgumentParser()) - std_out = f.getvalue() - fp16_compression_message_found = get_compression_message() in std_out - assert fp16_compression_message_found diff --git a/tools/mo/unit_tests/moc_tf_fe/conversion_basic_models_test.py b/tools/mo/unit_tests/moc_tf_fe/conversion_basic_models_test.py index bf49176e5d0..f697c9ffbc6 100644 --- a/tools/mo/unit_tests/moc_tf_fe/conversion_basic_models_test.py +++ b/tools/mo/unit_tests/moc_tf_fe/conversion_basic_models_test.py @@ -40,272 +40,10 @@ class TestMoFreezePlaceholderTFFE(unittest.TestCase): assert values.dtype == dtype assert np.allclose(values, expected) - @generate( - *[ - ( - "in1[1 4]->[1.0 2.0 3.0 4.0],in2[1 4]{f32}->[1.0 2.0 3.0 4.0]", - {}, - np.array([2.0, 4.0, 6.0, 8.0]), - np.float32, - ), - ( - "in2{f32}->[0.0 0.0 0.0 0.0]", - {"in1": np.array([[1.0, 2.0], [3.0, 4.0]])}, - np.array([[1.0, 2.0], [3.0, 4.0]]), - np.float32, - ), - ( - "in2->[1.0 15.0 15.5 1.0]", - {"in1": np.array([[2.0, 4.0], [12.0, 8.0]])}, - np.array([[3.0, 19.0], [27.5, 9.0]]), - np.float32, - ), - ( - "in1[1 4]{i32}->[1 2 3 4],in2[1 4]{i32}->[1 2 3 4]", - {}, - np.array([2.0, 4.0, 6.0, 8.0]), - np.int32, - ), - ], - ) - def test_fp32(self, input_freezing_value, inputs, expected, - dtype): - self.basic("model_fp32.pbtxt", input_freezing_value, inputs, dtype, expected) - - @generate( - *[ - ( - "in1[1 4]->[1 2 3 4],in2[1 4]{i32}->[1 2 3 4]", - {}, - np.array([1, 4, 9, 16]), - np.int32, - ), - ( - "in2->[2 5 6 7 3 2]", - {"in1": np.array([[2, 4, 1], [1, 2, 8]])}, - np.array([[4, 20, 6], [7, 6, 16]]), - np.int32, - ), - ], - ) - def test_int32(self, input_freezing_value, inputs, expected, - dtype=None): - self.basic("model_int32.pbtxt", input_freezing_value, inputs, dtype, expected) - - @generate( - *[ - ( - "in1[2]->[True False],in2[2]->[True True]", - {}, - np.array([True, False], dtype=bool), - bool, - ), - ( - "in2[2,3]->[True,True,False,True,True,False]", - {"in1": np.array([[False, True, True], [False, True, True]], dtype=bool)}, - np.array([[False, True, False], [False, True, False]], dtype=bool), - bool, - ), - ( - "in2[]->True", - {"in1": np.array([[False, True, True], [False, True, True]], dtype=bool)}, - np.array([[False, True, True], [False, True, True]], dtype=bool), - bool, - ), - ], - ) - def test_bool(self, input_freezing_value, inputs, expected, - dtype=None): - self.basic("model_bool.pbtxt", input_freezing_value, inputs, dtype, expected) - - @generate( - *[ - ( - "in1[3]->[1 2 3],in2[3]->[4 5 6],cond->False", - {}, - np.array([4, 5, 6], dtype=np.float32), - np.float32, - None - ), - ( - None, - {"in1": np.array([2.0, 4.0, 6.0], dtype=np.float32), - "in2": np.array([1.0, 3.0, 5.0], dtype=np.float32)}, - np.array([2, 4, 6], dtype=np.float32), - np.float32, - "cond->False", - None, - True # fill a bug to investigate why compilation of this model is hang on - ), - # case: input_shape + freeze_placeholder_with_value - ( - None, - {"in2": np.array([1.0, 3.0, 5.0], dtype=np.float32)}, - np.array([2, 4, 6], dtype=np.float32), - np.float32, - "in1->[2.0 4.0 6.0],cond->True", - "[3]", - False - ), - ], - ) - def test_bool2(self, input_freezing_value, inputs, expected, - dtype=None, freeze_placeholder_with_value=None, input_shape=None, only_conversion=False): - self.basic("model_bool2.pbtxt", input_freezing_value, inputs, dtype, expected, freeze_placeholder_with_value, - input_shape, only_conversion) - - @generate( - *[ - ( - "add:0[3],z", - {"add:0": np.array([4, 5, 6], dtype=np.float32), "z": np.array([1, 2, 3], dtype=np.float32)}, - np.array([4, 10, 18], dtype=np.float32), - np.float32, - None - ), - ( - "add:0{i32}[3],z{i32}", - {"add:0": np.array([4, 5, 6], dtype=np.int32), "z": np.array([1, 2, 3], dtype=np.int32)}, - np.array([4, 10, 18], dtype=np.int32), - np.int32, - None - ), - ], - ) - def test_cutting_fp32(self, input_freezing_value, inputs, expected, - dtype=None, freeze_placeholder_with_value=None, input_shape=None, only_conversion=False): - self.basic("model_three_inputs.pbtxt", input_freezing_value, inputs, dtype, expected, - freeze_placeholder_with_value, - input_shape, only_conversion, True) - - @generate( - *[ - ( - "x[1,4],y[4]", - {"x": np.array([[3, 2, 1, 5]], dtype=np.int32), "y": np.array([0, -1, -7, 8], dtype=np.int32)}, - np.array([[3, 1, -6, 13]], dtype=np.int32), - np.int32, - None - ), - ( - "x,y", - {"x": np.array([[-3, 20, 1]], dtype=np.int32), "y": np.array([[10, -11, -17]], dtype=np.int32)}, - np.array([[7, 9, -16]], dtype=np.int32), - np.int32, - None - ), - ( - "x", - {"x": np.array([[-3, 20, 1]], dtype=np.int32)}, - np.array([[-2, 22, 4], [1, 25, 7]], dtype=np.int32), - np.int32, - None - ), - ], - ) - def test_placeholder_with_default(self, inputs, inputs_data, expected, - dtype=None, freeze_placeholder_with_value=None, input_shape=None, - only_conversion=False): - self.basic("placeholder_with_default.pbtxt", inputs, inputs_data, dtype, expected, - freeze_placeholder_with_value, - input_shape, only_conversion, True) - - @generate( - *[ - ( - "x[4],y->2.0", - {"x": np.array([3, 2, 1, 5], dtype=np.float32)}, - np.array([6, 4, 2, 10], dtype=np.float32), - np.float32, - None - ), - ( - "x[1],y->[2.0,3.0]", - {"x": np.array([3], dtype=np.float32)}, - np.array([6, 9], dtype=np.float32), - np.float32, - None - ), - ], - ) - def test_freeze_placeholder_with_unknown_rank(self, inputs, inputs_data, expected, - dtype=None, freeze_placeholder_with_value=None, input_shape=None, - only_conversion=False): - self.basic("mul_with_unknown_rank_y.pbtxt", inputs, inputs_data, dtype, expected, - freeze_placeholder_with_value, - input_shape, only_conversion, True) - def test_conversion_failure_fallback_default(self): self.basic("ctc_model_based.pbtxt", None, None, None, None, None, None, True, True, False, False) - def test_conversion_failure_fallback_use_new_frontend(self): - with self.assertRaisesRegex(Exception, - "\[TensorFlow Frontend\] Internal error, no translator found for operation\(s\)\: " - "Enter\, Exit\, LoopCond\, Merge\, NextIteration\, Switch\, TensorArrayGatherV3\, " - "TensorArraySizeV3\, TensorArrayV3"): - self.basic("ctc_model_based.pbtxt", None, None, None, None, - None, None, True, True, True, False) - - @unittest.skip("88349: Fix auto-pruning in legacy FE") - def test_conversion_model_oneshot_iterator_use_legacy_frontend(self): - self.basic("model_oneshot_iterator.pbtxt", None, None, None, None, - None, None, True, True, False, True) - - def test_conversion_model_oneshot_iterator_default(self): - self.basic("model_oneshot_iterator.pbtxt", None, None, None, None, - None, None, True, True, False, False) - - @generate( - *[ - ( - "in2{f32}->[0.0 0.0 0.0 0.0]", - {"in1": np.array([[1.0, 2.0], [3.0, 4.0]])}, - np.array([[1.0, 2.0], [3.0, 4.0]]), - np.float32, - ), - ( - "in2->[1.0 15.0 15.5 1.0]", - {"in1": np.array([[2.0, 4.0], [12.0, 8.0]])}, - np.array([[3.0, 19.0], [27.5, 9.0]]), - np.float32, - ), - ], - ) - @unittest.skip("109220: Use generating script for this test model instead of Git LFS") - def test_conversion_model_with_non_standard_extension(self, input_freezing_value, inputs, expected, - dtype): - self.basic("model_fp32.frozen", input_freezing_value, inputs, dtype, expected, only_conversion=False, - input_model_is_text=False, use_new_frontend=True, - use_legacy_frontend=False) - - @unittest.skip("109220: Make TF FE to return the error") - def test_conversion_dir_model(self): - with self.assertRaisesRegex(Exception, - "Internal error or inconsistent input model: the frontend supports " - "only frozen binary protobuf format."): - self.basic(".", None, None, None, None, - only_conversion=True, input_model_is_text=False, use_new_frontend=True, - use_legacy_frontend=False) - - @generate( - *[ - ( - {"x": np.array([1, 2], dtype=np.int32), "y": np.array([4], dtype=np.int32)}, - np.array([-3, -2], dtype=np.int32), - np.int32, - ), - ( - {"x": np.array([20, 25], dtype=np.int32), "y": np.array([10], dtype=np.int32)}, - np.array([30, 35], dtype=np.int32), - np.int32, - ) - ], - ) - def test_conversion_pbtxt_model_with_inference(self, inputs, expected, dtype): - self.basic("model_with_if.pbtxt", None, inputs, dtype, expected, only_conversion=False, - input_model_is_text=False, use_new_frontend=True, use_legacy_frontend=False) - @generate( *[ # legacy frontend @@ -323,21 +61,6 @@ class TestMoFreezePlaceholderTFFE(unittest.TestCase): np.array([0, 0], dtype=np.int32), np.int32, False, True, ), - # new frontend - ( - "model_add_with_undefined_constant.pbtxt", - "x[2,3]", - {"x": np.array([[12, 13, 10], [11, 14, 16]], dtype=np.float32)}, - np.array([[12, 13, 10], [11, 14, 16]], dtype=np.float32), - np.float32, True, False, - ), - ( - "model_mul_with_undefined_constant.pbtxt", - "x[2]", - {"x": np.array([11, -12], dtype=np.int32)}, - np.array([0, 0], dtype=np.int32), - np.int32, True, False, - ), ], ) def test_conversion_model_with_undefined_constant(self, model_name, argv_input, inputs, expected, dtype, diff --git a/tools/mo/unit_tests/moc_tf_fe/conversion_incorrect_models_test.py b/tools/mo/unit_tests/moc_tf_fe/conversion_incorrect_models_test.py index a9f2a4a4c4f..e77b29eb87a 100644 --- a/tools/mo/unit_tests/moc_tf_fe/conversion_incorrect_models_test.py +++ b/tools/mo/unit_tests/moc_tf_fe/conversion_incorrect_models_test.py @@ -1,7 +1,6 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -import os import tempfile import unittest @@ -9,38 +8,8 @@ from generator import generator, generate from openvino.tools.mo.convert import convert_model - @generator class TestMoFreezePlaceholderTFFE(unittest.TestCase): - @generate( - *[ - # the default frontend - ( - False, False, None - ), - ( - False, False, "tf" - ), - # new frontend - ( - True, False, None - ), - ( - True, False, "tf" - ), - ], - ) - def test_conversion_fake_pb_model(self, use_new_frontend, use_legacy_frontend, framework): - with self.assertRaisesRegex(Exception, - "Internal error or inconsistent input model: the frontend supports frozen formats" - " \(.pb and .pbtxt\), SavedModel and MetaGraph \(.meta\), and v1 checkpoints."): - path = os.path.dirname(__file__) - input_model = os.path.join(path, "test_models", "fake.pb") - - convert_model(input_model, - use_new_frontend=use_new_frontend, use_legacy_frontend=use_legacy_frontend, - framework=framework) - @generate( *[ # the default frontend diff --git a/tools/ovc/CMakeLists.txt b/tools/ovc/CMakeLists.txt new file mode 100644 index 00000000000..0d7f396c0ba --- /dev/null +++ b/tools/ovc/CMakeLists.txt @@ -0,0 +1,36 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +cmake_minimum_required (VERSION 3.13) + +project(OpenVINOConverter) + +# +# Packages & settings +# + +if(NOT DEFINED OpenVINO_SOURCE_DIR) + get_filename_component(OpenVINO_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../.." REALPATH) +endif() + +if(NOT IEDevScripts_FOUND) + find_package(IEDevScripts REQUIRED + PATHS "${OpenVINO_SOURCE_DIR}/cmake/developer_package" + NO_CMAKE_FIND_ROOT_PATH + NO_DEFAULT_PATH) +endif() + +# +# Installation rules +# + +ov_get_pyversion(pyversion) +ov_cpack_add_component(${OV_CPACK_COMP_PYTHON_OPENVINO}_${pyversion} + HIDDEN) + +install(DIRECTORY ${OpenVINOConverter_SOURCE_DIR}/openvino + DESTINATION ${OV_CPACK_PYTHONDIR} + COMPONENT ${OV_CPACK_COMP_PYTHON_OPENVINO}_${pyversion} + ${OV_CPACK_COMP_PYTHON_OPENVINO_EXCLUDE_ALL} + USE_SOURCE_PERMISSIONS) diff --git a/tools/ovc/openvino/tools/ovc/__init__.py b/tools/ovc/openvino/tools/ovc/__init__.py new file mode 100644 index 00000000000..5d5f94ac686 --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/__init__.py @@ -0,0 +1,12 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from openvino.tools.ovc.convert import convert_model, InputCutInfo, LayoutMap + +try: + import openvino.runtime + openvino.runtime.convert_model = convert_model + openvino.runtime.InputCutInfo = InputCutInfo + openvino.runtime.LayoutMap = LayoutMap +except: + pass \ No newline at end of file diff --git a/tools/ovc/openvino/tools/ovc/__main__.py b/tools/ovc/openvino/tools/ovc/__main__.py new file mode 100644 index 00000000000..13bb809a6cf --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/__main__.py @@ -0,0 +1,10 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import sys + +from openvino.tools.ovc.telemetry_utils import init_mo_telemetry +from openvino.tools.ovc.main import main + +init_mo_telemetry() +sys.exit(main()) diff --git a/tools/ovc/openvino/tools/ovc/cli_parser.py b/tools/ovc/openvino/tools/ovc/cli_parser.py new file mode 100644 index 00000000000..a3d7790182a --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/cli_parser.py @@ -0,0 +1,2045 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + +import argparse +import ast +import logging as log +import os +import re +from collections import OrderedDict, namedtuple +from distutils.util import strtobool +from itertools import zip_longest +from pathlib import Path +from operator import xor +from typing import List, Union +import numbers +import inspect + +import numpy as np +from openvino.runtime import Layout, PartialShape, Dimension, Shape, Type + +import openvino +from openvino.tools.ovc.convert_data_type import destination_type_to_np_data_type +from openvino.tools.ovc.error import Error +from openvino.tools.ovc.utils import refer_to_faq_msg, get_mo_root_dir +from openvino.tools.ovc.help import get_convert_model_help_specifics, get_to_string_methods_for_params + + +def extension_path_to_str_or_extensions_class(extension): + if isinstance(extension, str): + return extension + elif isinstance(extension, Path): + return str(extension) + else: + # Return unknown object as is. + # The type of the object will be checked by frontend.add_extension() method + return extension + + +def transformations_config_to_str(value): + if value is None: + return value + return extension_path_to_str_or_extensions_class(value) + + +def extensions_to_str_or_extensions_class(extensions): + if extensions is None: + return None + extensions_list = [] + if isinstance(extensions, str): + extensions_list = extensions.split(',') + elif isinstance(extensions, list): + for ext in extensions: + ext = extension_path_to_str_or_extensions_class(ext) + extensions_list.append(ext) + else: + extensions_list = [extension_path_to_str_or_extensions_class(extensions)] + + for ext in extensions_list: + if isinstance(ext, str): + readable_file_or_dir(ext) + return extensions_list + + +def path_to_str(path): + if path is None: + return None + if isinstance(path, str): + return path + elif isinstance(path, Path): + return str(path) + else: + raise Exception("Incorrect type of {} expected str or Path, got {}".format(path, type(path))) + + +def path_to_str_or_object(value): + if value is None or isinstance(value, str): + return value + elif isinstance(value, Path): + return str(value) + else: + return value + + +def paths_to_str(paths): + if paths is None: + return None + if isinstance(paths, list): + paths_str = [] + for path in paths: + paths_str.append(path_to_str(path)) + return ','.join(paths_str) + else: + path_to_str(paths) + + +def str_list_to_str(values): + if values is None: + return None + if isinstance(values, str): + return values + elif isinstance(values, list): + for value in values: + if not isinstance(value, str): + raise Error("Incorrect argument. {} expected to string, got type {}.".format(value, type(value))) + return ','.join(values) + else: + raise Error("Incorrect argument. {} expected to string or list of strings, got type {}.".format(values, type(values))) + + +def is_shape_type(value): + if isinstance(value, PartialShape): + return True + if isinstance(value, Shape): + return True + if isinstance(value, list) or isinstance(value, tuple): + for dim in value: + if not (isinstance(dim, Dimension) or isinstance(dim, int)): + return False + return True + return False + + +def value_to_str(value, separator): + if isinstance(value, np.ndarray): + values = [] + for x in np.nditer(value): + values.append(str(x)) + return "[" + separator.join(values) + "]" + if isinstance(value, list): + values = [] + for x in value: + if not isinstance(x, numbers.Number): + raise Exception("Incorrect value type. Expected numeric value, got {}".format(type(x))) + values.append(str(x)) + return "[" + separator.join(values) + "]" + if isinstance(value, bool): + return "True" if value else "False" + raise Exception("Incorrect value type. Expected np.ndarray or list, got {}".format(type(value))) + + +def single_input_to_input_cut_info(input: [str, tuple, list, PartialShape, Type, type]): + """ + Parses parameters of single input to InputCutInfo. + :param input: input cut parameters of single input + :return: InputCutInfo + """ + if isinstance(input, str): + # Parse params from string + node_name, shape, value, data_type = parse_input_value(input) + return openvino.runtime.InputCutInfo(node_name, + PartialShape(shape) if shape is not None else None, + data_type, + value) + if isinstance(input, openvino.runtime.InputCutInfo): + # Wrap input.shape to PartialShape if possible and wrap to InputCutInfo + return openvino.runtime.InputCutInfo(input.name, + PartialShape(input.shape) if input.shape is not None else None, + input.type, + input.value) + if isinstance(input, (tuple, list, PartialShape)): + # If input represents list with shape, wrap it to list. Single PartialShape also goes to this condition. + # Check of all dimensions will be in is_shape_type(val) method below + if len(input) > 0 and isinstance(input[0], (int, Dimension)): + input = [input] + + # Check values of tuple or list and collect to InputCutInfo + name = None + inp_type = None + shape = None + for val in input: + if isinstance(val, str): + if name is not None: + raise Exception("More than one input name provided: {}".format(input)) + name = val + elif isinstance(val, (type, Type)): + if inp_type is not None: + raise Exception("More than one input type provided: {}".format(input)) + inp_type = val + elif is_shape_type(val): + if shape is not None: + raise Exception("More than one input shape provided: {}".format(input)) + shape = PartialShape(val) + else: + raise Exception("Incorrect input parameters provided. Expected tuple with input name, " + "input type or input shape. Got unknown object: {}".format(val)) + return openvino.runtime.InputCutInfo(name, + PartialShape(shape) if shape is not None else None, + inp_type, + None) + # Case when only type is set + if isinstance(input, (type, Type)): + return openvino.runtime.InputCutInfo(None, None, input, None) + + # We don't expect here single unnamed value. If list of int is set it is considered as shape. + # Setting of value is expected only using InputCutInfo or string analog. + + raise Exception("Unexpected object provided for input. Expected openvino.runtime.InputCutInfo " + "or tuple or str. Got {}".format(type(input))) + + +def input_to_input_cut_info(input: [str, tuple, list]): + """ + Parses 'input' to list of InputCutInfo. + :param input: input cut parameters passed by user + :return: list of InputCutInfo with input cut parameters + """ + if input is None: + return [] + if isinstance(input, str): + inputs = [] + # Split to list of string + for input_value in split_inputs(input): + + # Parse string with parameters for single input + node_name, shape, value, data_type = parse_input_value(input_value) + inputs.append(openvino.runtime.InputCutInfo(node_name, + PartialShape(shape) if shape is not None else None, + data_type, + value)) + return inputs + if isinstance(input, openvino.runtime.InputCutInfo): + # Wrap to list and return + return [input] + if isinstance(input, tuple): + # Case when input is single shape set in tuple + if len(input) > 0 and isinstance(input[0], (int, Dimension)): + input = [input] + # Case when input is set as tuple. Expected that it is always single input. + return [single_input_to_input_cut_info(input)] + if isinstance(input, list): + # Case when input is single shape set in list + if len(input) > 0 and isinstance(input[0], (int, Dimension)): + input = [input] + inputs = [] + # Case when input is set as list. Expected that it is list of params for different inputs. + for inp in input: + inputs.append(single_input_to_input_cut_info(inp)) + return inputs + # Case when single type or value is set, or unknown object + return [single_input_to_input_cut_info(input)] + + +def input_shape_to_input_cut_info(input_shape: [str, Shape, PartialShape, list, tuple], inputs: list): + """ + Parses 'input_shape' to list of PartialShape and updates 'inputs'. + :param input_shape: input shapes passed by user + :param inputs: list of InputCutInfo with information from 'input' parameter + """ + if input_shape is None: + return + if isinstance(input_shape, str): + # Split input_shape to list of string + input_shape = split_shapes(input_shape) + if isinstance(input_shape, (Shape, PartialShape)): + # Whap single shape to list + input_shape = [input_shape] + if isinstance(input_shape, (list, tuple)): + # Check case when single shape is passed as list or tuple + if len(input_shape) > 0 and isinstance(input_shape[0], (int, Dimension)): + input_shape = [input_shape] + + if len(inputs) > 0 and len(input_shape) > 0: + assert len(inputs) == len(input_shape), "Different numbers of inputs were specified in \"input\" parameter " \ + "and \"input_shapes\". \"input\" has {} items, \"input_shape\" has {} item.".format(len(inputs), len(input_shape)) + + # Update inputs with information from 'input_shape' + if len(inputs) > 0: + for idx, shape in enumerate(input_shape): + shape = PartialShape(shape) + assert inputs[idx].shape is None, "Shape was set in both \"input\" and in \"input_shape\" parameter." \ + "Please use either \"input\" or \"input_shape\" for shape setting." + inputs[idx] = openvino.runtime.InputCutInfo(inputs[idx].name, shape, inputs[idx].type, inputs[idx].value) + + else: + for shape in input_shape: + inputs.append(openvino.runtime.InputCutInfo(None, PartialShape(shape), None, None)) + return + + raise Exception("Unexpected object provided for input_shape. Expected PartialShape, Shape, tuple, list or str. " + "Got {}".format(type(input_shape))) + + +def freeze_placeholder_to_input_cut_info(argv_freeze_placeholder_with_value: str, inputs: list): + """ + Parses 'argv_freeze_placeholder_with_value' to dictionary and collects unnamed inputs from 'inputs' to list. + :param argv_freeze_placeholder_with_value: string set by user. + As it was planned to be deprecated no Python analogs were made. + :param inputs: list of InputCutInfo with information from 'input' parameter + :returns (placeholder_values, unnamed_placeholder_values), where + placeholder_values - dictionary where key is node name, value is node value, + unnamed_placeholder_values - list with unnamed node values + """ + # Parse argv_freeze_placeholder_with_value to dictionary with names and values + placeholder_values = parse_freeze_placeholder_values(argv_freeze_placeholder_with_value) + unnamed_placeholder_values = [] + + # Collect values for freezing from 'inputs' + if inputs is not None and len(inputs) > 0: + for input in inputs: + node_name = input.name + value = input.value + if value is None: + continue + # Check for value conflict + if node_name in placeholder_values and placeholder_values[node_name] != value: + raise Error("Overriding replacement value of the placeholder with name '{}': old value = {}, new value = {}" + ".".format(node_name, placeholder_values[node_name], value)) + if node_name is not None: + # Named input case, add to dictionary + placeholder_values[node_name] = value + else: + # Unnamed input case, add to list + unnamed_placeholder_values.append(value) + + return placeholder_values, unnamed_placeholder_values + + +def mean_scale_value_to_str(value): + # default empty value + if isinstance(value, tuple) and len(value) == 0: + return value + + if isinstance(value, str): + return value + if isinstance(value, dict): + values_str = [] + for op_name, val in value.items(): + if not isinstance(op_name, str): + raise Exception("Incorrect operation name type. Expected string, got {}".format(type(op_name))) + values_str.append(op_name + value_to_str(val, ",")) + return ",".join(values_str) + if isinstance(value, list) or isinstance(value, tuple): + list_of_lists = False + for val in value: + if isinstance(val, list) or isinstance(val, tuple): + list_of_lists = True + break + if list_of_lists: + values_str = [] + for val in value: + values_str.append(value_to_str(val, ",")) + return ",".join(values_str) + else: + return value_to_str(value, ",") + return value_to_str(value, ",") + + +def layout_to_str(layout): + if isinstance(layout, str): + return layout + if isinstance(layout, Layout): + return layout.to_string() + raise Exception("Incorrect layout type. Expected Layout or string or dictionary, " + "where key is operation name and value is layout or list of layouts, got {}".format(type(layout))) + + +def source_target_layout_to_str(value): + # default empty value + if isinstance(value, tuple) and len(value) == 0: + return value + + if isinstance(value, str): + return value + if isinstance(value, dict): + values_str = [] + for op_name, layout in value.items(): + if not isinstance(op_name, str): + raise Exception("Incorrect operation name type. Expected string, got {}".format(type(op_name))) + values_str.append(op_name + "(" + layout_to_str(layout) + ")") + return ",".join(values_str) + + return layout_to_str(value) + + +def layoutmap_to_str(value): + if isinstance(value, str): + return value + if isinstance(value, openvino.runtime.LayoutMap): + assert value.source_layout is not None, "Incorrect layout map. 'source_layout' should be set." + source_layout = layout_to_str(value.source_layout) + if value.target_layout is not None: + target_layout = layout_to_str(value.target_layout) + source_layout += "->" + target_layout + return source_layout + return layout_to_str(value) + + +def layout_param_to_str(value): + # default empty value + if isinstance(value, tuple) and len(value) == 0: + return value + + if isinstance(value, str): + return value + + if isinstance(value, dict): + values_str = [] + for op_name, layout in value.items(): + if not isinstance(op_name, str): + raise Exception("Incorrect operation name type. Expected string, got {}".format(type(op_name))) + values_str.append(op_name + "(" + layoutmap_to_str(layout) + ")") + return ",".join(values_str) + if isinstance(value, openvino.runtime.LayoutMap): + return layoutmap_to_str(value) + if isinstance(value, list) or isinstance(value, tuple): + values_str = [] + for layout in value: + values_str.append(layoutmap_to_str(layout)) + return ",".join(values_str) + + return layoutmap_to_str(value) + + +def batch_to_int(value): + if value is None or isinstance(value, int): + return value + if isinstance(value, Dimension): + if not value.is_static: + # TODO: Ticket 88676 + raise Exception("Dynamic batch for \"batch\" parameter is not supported.") + else: + return value.get_length() + raise Exception("Incorrect batch value. Expected int, got {}.".format(type(value))) + + +def transform_param_value_to_str(value): + # This function supports parsing of parameters of MakeStateful, LowLatency2, Pruning. + # If available transforms list is extended this method should be extended for new transforms. + if isinstance(value, str): + return value + if isinstance(value, bool): + return str(value) + if isinstance(value, dict): + # param_res_names dictionary for MakeStateful transform + values_str = [] + for input_name, output_name in value.items(): + assert isinstance(input_name, str), "Incorrect input name. " \ + "Expected string, got {}".format(type(input_name)) + assert isinstance(output_name, str), "Incorrect output name. " \ + "Expected string, got {}".format(type(output_name)) + values_str.append("\'{}\':\'{}\'".format(input_name, output_name)) + return "{" + ','.join(values_str) + "}" + raise Exception("Unknown parameter type.") + + +def transform_to_str(value): + from openvino.tools.ovc.moc_frontend.offline_transformations import get_available_transformations + + if isinstance(value, str): + return value + + if isinstance(value, tuple): + assert 1 <= len(value) <= 2, "Incorrect definition of transformation in transform argument: " \ + "expected two elements in tuple, provided {}. " \ + "Supported transforms are: {}".format( + len(value), + list(get_available_transformations().keys())) + transform_name = value[0] + assert isinstance(transform_name, str), "Incorrect transform name type. " \ + "Expected string, got {}".format(type(transform_name)) + if len(value) == 2: + params = value[1] + assert isinstance(params, dict), "Incorrect transform params type. " \ + "Expected dictionary, got {}".format(type(params)) + params_str_list = [] + for param_name, val in params.items(): + assert isinstance(param_name, str), "Incorrect transform parameter name type. " \ + "Expected string, got {}".format(type(param_name)) + val_str = transform_param_value_to_str(val) + params_str_list.append(param_name + "=" + val_str) + transform_name += '[' + ','.join(params_str_list) + ']' + return transform_name + raise Exception("Incorrect transform type. Expected tuple with transform name and " + "dictionary with transform parameters. Got object of type {}".format(type(value))) + + +def transform_param_to_str(value): + if value is None or isinstance(value, str): + return value + if isinstance(value, list): + transforms_str = [] + for transform in value: + transforms_str.append(transform_to_str(transform)) + return ','.join(transforms_str) + return transform_to_str(value) + + +ParamDescription = namedtuple("ParamData", + ["description", "cli_tool_description", "to_string"]) + + +def get_mo_convert_params(): + mo_convert_docs = openvino.runtime.convert_model.__doc__ + mo_convert_params = {} + group = "Optional parameters:" + mo_convert_params[group] = {} + + mo_convert_docs = mo_convert_docs[:mo_convert_docs.find('Returns:')] + + while len(mo_convert_docs) > 0: + param_idx1 = mo_convert_docs.find(":param") + if param_idx1 == -1: + break + param_idx2 = mo_convert_docs.find(":", param_idx1+1) + param_name = mo_convert_docs[param_idx1+len(':param '):param_idx2] + + param_description_idx = mo_convert_docs.find(":param", param_idx2+1) + param_description = mo_convert_docs[param_idx2+1: param_description_idx] + + group_name_idx = param_description.rfind('\n\n') + group_name = '' + if group_name_idx != -1: + group_name = param_description[group_name_idx:].strip() + + param_description = param_description[:group_name_idx] + param_description = param_description.strip() + + mo_convert_params[group][param_name] = ParamDescription(param_description, "", None) + + mo_convert_docs = mo_convert_docs[param_description_idx:] + + if group_name != '': + mo_convert_params[group_name] = {} + group = group_name + + # TODO: remove this when internal converting of params to string is removed + params_converted_to_string = get_to_string_methods_for_params() + + params_with_paths = get_params_with_paths_list() + cli_tool_specific_descriptions = get_convert_model_help_specifics() + + for group_name, param_group in mo_convert_params.items(): + for param_name, d in param_group.items(): + to_str_method = None + if param_name in params_converted_to_string: + to_str_method = params_converted_to_string[param_name] + elif param_name in params_with_paths: + to_str_method = path_to_str + + cli_tool_description = None + if param_name in cli_tool_specific_descriptions: + cli_tool_description = cli_tool_specific_descriptions[param_name] + + desc = ParamDescription(d.description, + cli_tool_description, + to_str_method) + mo_convert_params[group_name][param_name] = desc + + return mo_convert_params + + +class DeprecatedStoreTrue(argparse.Action): + def __init__(self, nargs=0, **kw): + super().__init__(nargs=nargs, **kw) + + def __call__(self, parser, namespace, values, option_string=None): + dep_msg = "Use of deprecated cli option {} detected. Option use in the following releases will be fatal. ".format(option_string) + if 'fusing' in option_string: + dep_msg += 'Please use --finegrain_fusing cli option instead' + log.error(dep_msg, extra={'is_warning': True}) + setattr(namespace, self.dest, True) + + +class DeprecatedOptionCommon(argparse.Action): + def __call__(self, parser, args, values, option_string): + dep_msg = "Use of deprecated cli option {} detected. Option use in the following releases will be fatal. ".format(option_string) + log.error(dep_msg, extra={'is_warning': True}) + setattr(args, self.dest, values) + + +class IgnoredAction(argparse.Action): + def __init__(self, nargs=0, **kw): + super().__init__(nargs=nargs, **kw) + + def __call__(self, parser, namespace, values, option_string=None): + dep_msg = "Use of removed cli option '{}' detected. The option is ignored. ".format(option_string) + log.error(dep_msg, extra={'is_warning': True}) + setattr(namespace, self.dest, True) + + +def canonicalize_and_check_paths(values: Union[str, List[str]], param_name, + try_mo_root=False, check_existence=True) -> List[str]: + if values is not None: + list_of_values = list() + if isinstance(values, str): + if values != "": + list_of_values = values.split(',') + elif isinstance(values, list): + list_of_values = values + else: + raise Error('Unsupported type of command line parameter "{}" value'.format(param_name)) + + if not check_existence: + return [get_absolute_path(path) for path in list_of_values] + + for idx, val in enumerate(list_of_values): + list_of_values[idx] = val + + error_msg = 'The value for command line parameter "{}" must be existing file/directory, ' \ + 'but "{}" does not exist.'.format(param_name, val) + if os.path.exists(val): + continue + elif not try_mo_root or val == '': + raise Error(error_msg) + elif try_mo_root: + path_from_mo_root = get_mo_root_dir() + '/ovc/' + val + list_of_values[idx] = path_from_mo_root + if not os.path.exists(path_from_mo_root): + raise Error(error_msg) + + return [get_absolute_path(path) for path in list_of_values] + + +class CanonicalizePathAction(argparse.Action): + """ + Expand user home directory paths and convert relative-paths to absolute. + """ + + def __call__(self, parser, namespace, values, option_string=None): + list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, + try_mo_root=False, check_existence=False) + setattr(namespace, self.dest, ','.join(list_of_paths)) + + +class CanonicalizeTransformationPathCheckExistenceAction(argparse.Action): + """ + Convert relative to the current and relative to mo root paths to absolute + and check specified file or directory existence. + """ + + def __call__(self, parser, namespace, values, option_string=None): + list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, + try_mo_root=True, check_existence=True) + setattr(namespace, self.dest, ','.join(list_of_paths)) + + +class CanonicalizePathCheckExistenceAction(argparse.Action): + """ + Expand user home directory paths and convert relative-paths to absolute and check specified file or directory + existence. + """ + + def __call__(self, parser, namespace, values, option_string=None): + list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, + try_mo_root=False, check_existence=True) + setattr(namespace, self.dest, ','.join(list_of_paths)) + + +class CanonicalizeExtensionsPathCheckExistenceAction(argparse.Action): + """ + Expand user home directory paths and convert relative-paths to absolute and check specified file or directory + existence. + """ + + def __call__(self, parser, namespace, values, option_string=None): + list_of_paths = canonicalize_and_check_paths(values, param_name=option_string, + try_mo_root=False, check_existence=True) + # Extensions paths are needed to be stored as list + setattr(namespace, self.dest, list_of_paths) + + +class CanonicalizePathCheckExistenceIfNeededAction(CanonicalizePathCheckExistenceAction): + + def __call__(self, parser, namespace, values, option_string=None): + if values is not None: + if isinstance(values, str): + if values != "": + super().__call__(parser, namespace, values, option_string) + else: + setattr(namespace, self.dest, values) + + +class DeprecatedCanonicalizePathCheckExistenceAction(CanonicalizePathCheckExistenceAction): + def __call__(self, parser, namespace, values, option_string=None): + dep_msg = "Use of deprecated cli option {} detected. Option use in the following releases will be fatal. ".format( + option_string) + log.error(dep_msg, extra={'is_warning': True}) + super().__call__(parser, namespace, values, option_string) + + +def readable_file(path: str): + """ + Check that specified path is a readable file. + :param path: path to check + :return: path if the file is readable + """ + if not os.path.isfile(path): + raise Error('The "{}" is not existing file'.format(path)) + elif not os.access(path, os.R_OK): + raise Error('The "{}" is not readable'.format(path)) + else: + return path + + +def readable_file_or_dir(path: str): + """ + Check that specified path is a readable file or directory. + :param path: path to check + :return: path if the file/directory is readable + """ + if not os.path.isfile(path) and not os.path.isdir(path): + raise Error('The "{}" is not existing file or directory'.format(path)) + elif not os.access(path, os.R_OK): + raise Error('The "{}" is not readable'.format(path)) + else: + return path + + +def readable_dirs(paths: str): + """ + Checks that comma separated list of paths are readable directories. + :param paths: comma separated list of paths. + :return: comma separated list of paths. + """ + paths_list = [readable_dir(path) for path in paths.split(',')] + return ','.join(paths_list) + + +def readable_dirs_or_empty(paths: str): + """ + Checks that comma separated list of paths are readable directories of if it is empty. + :param paths: comma separated list of paths. + :return: comma separated list of paths. + """ + if paths: + return readable_dirs(paths) + return paths + + +def readable_dirs_or_files_or_empty(paths: str): + """ + Checks that comma separated list of paths are readable directories, files or a provided path is empty. + :param paths: comma separated list of paths. + :return: comma separated list of paths. + """ + if paths: + paths_list = [readable_file_or_dir(path) for path in paths.split(',')] + return ','.join(paths_list) + return paths + + +def readable_dir(path: str): + """ + Check that specified path is a readable directory. + :param path: path to check + :return: path if the directory is readable + """ + if not os.path.isdir(path): + raise Error('The "{}" is not existing directory'.format(path)) + elif not os.access(path, os.R_OK): + raise Error('The "{}" is not readable'.format(path)) + else: + return path + + +def writable_dir(path: str): + """ + Checks that specified directory is writable. The directory may not exist but it's parent or grandparent must exist. + :param path: path to check that it is writable. + :return: path if it is writable + """ + if path is None: + raise Error('The directory parameter is None') + if os.path.exists(path): + if os.path.isdir(path): + if os.access(path, os.W_OK): + return path + else: + raise Error('The directory "{}" is not writable'.format(path)) + else: + raise Error('The "{}" is not a directory'.format(path)) + else: + cur_path = path + while os.path.dirname(cur_path) != cur_path: + if os.path.exists(cur_path): + break + cur_path = os.path.dirname(cur_path) + if cur_path == '': + cur_path = os.path.curdir + if os.access(cur_path, os.W_OK): + return path + else: + raise Error('The directory "{}" is not writable'.format(cur_path)) + + +def add_args_by_description(args_group, params_description): + signature = inspect.signature(openvino.runtime.convert_model) + filepath_args = get_params_with_paths_list() + cli_tool_specific_descriptions = get_convert_model_help_specifics() + for param_name, param_description in params_description.items(): + if param_name == 'help': + continue + cli_param_name = "--"+param_name + if cli_param_name not in args_group._option_string_actions: + # Get parameter specifics + param_specifics = cli_tool_specific_descriptions[param_name] if param_name in \ + cli_tool_specific_descriptions else {} + help_text = param_specifics['description'] if 'description' in param_specifics \ + else param_description.description + action = param_specifics['action'] if 'action' in param_specifics else None + param_type = param_specifics['type'] if 'type' in param_specifics else None + param_alias = param_specifics['aliases'] if 'aliases' in param_specifics else {} + param_version = param_specifics['version'] if 'version' in param_specifics else None + param_choices = param_specifics['choices'] if 'choices' in param_specifics else None + + # Bool params common setting + if signature.parameters[param_name].annotation == bool and param_name != 'version': + args_group.add_argument( + cli_param_name, *param_alias, + type=check_bool if param_type is None else param_type, + nargs="?", + const=True, + help=help_text, + default=signature.parameters[param_name].default) + # File paths common setting + elif param_name in filepath_args: + action = action if action is not None else CanonicalizePathCheckExistenceAction + args_group.add_argument( + cli_param_name, *param_alias, + type=str if param_type is None else param_type, + action=action, + help=help_text, + default=signature.parameters[param_name].default) + # Other params + else: + additional_params = {} + if param_version is not None: + additional_params['version'] = param_version + if param_type is not None: + additional_params['type'] = param_type + if param_choices is not None: + additional_params['choices'] = param_choices + args_group.add_argument( + cli_param_name, *param_alias, + help=help_text, + default=signature.parameters[param_name].default, + action=action, + **additional_params + ) + + +def get_common_cli_parser(parser: argparse.ArgumentParser = None): + if not parser: + parser = argparse.ArgumentParser() + common_group = parser.add_argument_group('Framework-agnostic parameters') + mo_convert_params = get_mo_convert_params() + mo_convert_params_common = mo_convert_params['Framework-agnostic parameters:'] + + # Command line tool specific params + common_group.add_argument('--model_name', '-n', + help='Model_name parameter passed to the final create_ir transform. ' + + 'This parameter is used to name ' + + 'a network in a generated IR and output .xml/.bin files.') + common_group.add_argument('--output_dir', '-o', + help='Directory that stores the generated IR. ' + + 'By default, it is the directory from where the Model Conversion is launched.', + default=get_absolute_path('.'), + action=CanonicalizePathAction, + type=writable_dir) + + # Deprecated params + common_group.add_argument('--freeze_placeholder_with_value', + help='Replaces input layer with constant node with ' + 'provided value, for example: "node_name->True". ' + 'It will be DEPRECATED in future releases. ' + 'Use "input" option to specify a value for freezing.', + default=None) + common_group.add_argument('--static_shape', + help='Enables IR generation for fixed input shape (folding `ShapeOf` operations and ' + 'shape-calculating sub-graphs to `Constant`). Changing model input shape using ' + 'the OpenVINO Runtime API in runtime may fail for such an IR.', + action='store_true', default=False) + common_group.add_argument("--use_new_frontend", + help='Force the usage of new Frontend for model conversion into IR. ' + 'The new Frontend is C++ based and is available for ONNX* and PaddlePaddle* models. ' + 'Model Conversion API uses new Frontend for ONNX* and PaddlePaddle* by default that means ' + '`use_new_frontend` and `use_legacy_frontend` options are not specified.', + action='store_true', default=False) + common_group.add_argument("--use_legacy_frontend", + help='Force the usage of legacy Frontend for model conversion into IR. ' + 'The legacy Frontend is Python based and is available for TensorFlow*, ONNX*, MXNet*, ' + 'Caffe*, and Kaldi* models.', + action='store_true', default=False) + add_args_by_description(common_group, mo_convert_params_common) + return parser + + +def get_common_cli_options(model_name): + d = OrderedDict() + d['input_model'] = '- Path to the Input Model' + d['output_dir'] = ['- Path for generated IR', lambda x: x if x != '.' else os.getcwd()] + d['model_name'] = ['- IR output name', lambda x: x if x else model_name] + d['log_level'] = '- Log level' + d['batch'] = ['- Batch', lambda x: x if x else 'Not specified, inherited from the model'] + d['input'] = ['- Input layers', lambda x: x if x else 'Not specified, inherited from the model'] + d['output'] = ['- Output layers', lambda x: x if x else 'Not specified, inherited from the model'] + d['input_shape'] = ['- Input shapes', lambda x: x if x else 'Not specified, inherited from the model'] + d['source_layout'] = ['- Source layout', lambda x: x if x else 'Not specified'] + d['target_layout'] = ['- Target layout', lambda x: x if x else 'Not specified'] + d['layout'] = ['- Layout', lambda x: x if x else 'Not specified'] + d['mean_values'] = ['- Mean values', lambda x: x if x else 'Not specified'] + d['scale_values'] = ['- Scale values', lambda x: x if x else 'Not specified'] + d['scale'] = ['- Scale factor', lambda x: x if x else 'Not specified'] + d['transform'] = ['- User transformations', lambda x: x if x else 'Not specified'] + d['reverse_input_channels'] = '- Reverse input channels' + d['static_shape'] = '- Enable IR generation for fixed input shape' + d['transformations_config'] = '- Use the transformations config file' + return d + + +def get_advanced_cli_options(): + d = OrderedDict() + d['use_legacy_frontend'] = '- Force the usage of legacy Frontend for model conversion into IR' + d['use_new_frontend'] = '- Force the usage of new Frontend for model conversion into IR' + return d + + +def get_caffe_cli_options(): + d = { + 'input_proto': ['- Path to the Input prototxt', lambda x: x], + 'caffe_parser_path': ['- Path to Python Caffe* parser generated from caffe.proto', lambda x: x], + 'k': '- Path to CustomLayersMapping.xml', + } + + return OrderedDict(sorted(d.items(), key=lambda t: t[0])) + + +def get_tf_cli_options(): + d = { + 'input_model_is_text': '- Input model in text protobuf format', + 'tensorflow_custom_operations_config_update': '- Update the configuration file with input/output node names', + 'tensorflow_object_detection_api_pipeline_config': '- Use configuration file used to generate the model with ' + 'Object Detection API', + 'tensorflow_custom_layer_libraries': '- List of shared libraries with TensorFlow custom layers implementation', + 'tensorboard_logdir': '- Path to model dump for TensorBoard' + } + + return OrderedDict(sorted(d.items(), key=lambda t: t[0])) + + +def get_mxnet_cli_options(): + d = { + 'input_symbol': '- Deploy-ready symbol file', + 'nd_prefix_name': '- Prefix name for args.nd and argx.nd files', + 'pretrained_model_name': '- Pretrained model to be merged with the .nd files', + 'save_params_from_nd': '- Enable saving built parameters file from .nd files', + 'legacy_mxnet_model': '- Enable MXNet loader for models trained with MXNet version lower than 1.0.0', + } + + return OrderedDict(sorted(d.items(), key=lambda t: t[0])) + + +def get_kaldi_cli_options(): + d = { + 'counts': '- A file name with full path to the counts file or empty string if you want to use counts from model', + 'remove_output_softmax': '- Removes the SoftMax layer that is the output layer', + 'remove_memory': '- Removes the Memory layer and use additional inputs and outputs instead' + } + + return OrderedDict(sorted(d.items(), key=lambda t: t[0])) + + +def get_onnx_cli_options(): + d = { + } + + return OrderedDict(sorted(d.items(), key=lambda t: t[0])) + + +def get_params_with_paths_list(): + return ['input_model', 'output_dir', 'caffe_parser_path', 'extensions', 'k', 'output_dir', + 'input_checkpoint', 'input_meta_graph', 'input_proto', 'input_symbol', + 'pretrained_model_name', 'saved_model_dir', 'tensorboard_logdir', + 'tensorflow_custom_layer_libraries', 'tensorflow_custom_operations_config_update', + 'tensorflow_object_detection_api_pipeline_config', + 'transformations_config'] + + +def get_caffe_cli_parser(parser: argparse.ArgumentParser = None): + """ + Specifies cli arguments for Model Conversion for Caffe* + + Returns + ------- + ArgumentParser instance + """ + if not parser: + parser = argparse.ArgumentParser(usage='%(prog)s [options]') + get_common_cli_parser(parser=parser) + + caffe_group = parser.add_argument_group('Caffe*-specific parameters') + mo_convert_params_caffe = get_mo_convert_params()['Caffe*-specific parameters:'] + add_args_by_description(caffe_group, mo_convert_params_caffe) + return parser + + +def get_tf_cli_parser(parser: argparse.ArgumentParser = None): + """ + Specifies cli arguments for Model Conversion for TF + + Returns + ------- + ArgumentParser instance + """ + if not parser: + parser = argparse.ArgumentParser(usage='%(prog)s [options]') + get_common_cli_parser(parser=parser) + mo_convert_params_tf = get_mo_convert_params()['TensorFlow*-specific parameters:'] + + tf_group = parser.add_argument_group('TensorFlow*-specific parameters') + add_args_by_description(tf_group, mo_convert_params_tf) + return parser + + +def get_mxnet_cli_parser(parser: argparse.ArgumentParser = None): + """ + Specifies cli arguments for Model Conversion for MXNet* + + Returns + ------- + ArgumentParser instance + """ + if not parser: + parser = argparse.ArgumentParser(usage='%(prog)s [options]') + get_common_cli_parser(parser=parser) + + mx_group = parser.add_argument_group('MXNet-specific parameters') + mo_convert_params_mxnet = get_mo_convert_params()['MXNet-specific parameters:'] + add_args_by_description(mx_group, mo_convert_params_mxnet) + + return parser + + +def get_kaldi_cli_parser(parser: argparse.ArgumentParser = None): + """ + Specifies cli arguments for Model Conversion for MXNet* + + Returns + ------- + ArgumentParser instance + """ + if not parser: + parser = argparse.ArgumentParser(usage='%(prog)s [options]') + get_common_cli_parser(parser=parser) + + kaldi_group = parser.add_argument_group('Kaldi-specific parameters') + mo_convert_params_kaldi = get_mo_convert_params()['Kaldi-specific parameters:'] + add_args_by_description(kaldi_group, mo_convert_params_kaldi) + return parser + + +def get_onnx_cli_parser(parser: argparse.ArgumentParser = None): + """ + Specifies cli arguments for Model Conversion for ONNX + + Returns + ------- + ArgumentParser instance + """ + if not parser: + parser = argparse.ArgumentParser(usage='%(prog)s [options]') + get_common_cli_parser(parser=parser) + + return parser + + +def get_all_cli_parser(): + """ + Specifies cli arguments for Model Conversion + + Returns + ------- + ArgumentParser instance + """ + parser = argparse.ArgumentParser(usage='%(prog)s [options]') + mo_convert_params_optional = get_mo_convert_params()['Optional parameters:'] + add_args_by_description(parser, mo_convert_params_optional) + + get_common_cli_parser(parser=parser) + get_tf_cli_parser(parser=parser) + get_caffe_cli_parser(parser=parser) + get_mxnet_cli_parser(parser=parser) + get_kaldi_cli_parser(parser=parser) + get_onnx_cli_parser(parser=parser) + + return parser + + +def remove_data_type_from_input_value(input_value: str): + """ + Removes the type specification from the input string. The type specification is a string enclosed with curly braces. + :param input_value: string passed as input to the "input" command line parameter + :return: string without type specification + """ + return re.sub(r'\{.*\}', '', input_value) + + +def get_data_type_from_input_value(input_value: str): + """ + Returns the numpy data type corresponding to the data type specified in the input value string + :param input_value: string passed as input to the "input" command line parameter + :return: the corresponding numpy data type and None if the data type is not specified in the input value + """ + data_type_match = re.match(r'.*\{(.*)\}.*', input_value) + return destination_type_to_np_data_type(data_type_match.group(1)) if data_type_match is not None else None + + +def remove_shape_from_input_value(input_value: str): + """ + Removes the shape specification from the input string. The shape specification is a string enclosed with square + brackets. + :param input_value: string passed as input to the "input" command line parameter + :return: string without shape specification + """ + assert '->' not in input_value, 'The function should not be called for input_value with constant value specified' + return re.sub(r'[(\[]([0-9\.?, -]*)[)\]]', '', input_value) + + +def get_shape_from_input_value(input_value: str): + """ + Returns PartialShape corresponding to the shape specified in the input value string + :param input_value: string passed as input to the "input" command line parameter + :return: the corresponding shape and None if the shape is not specified in the input value + """ + # remove the tensor value from the input_value first + input_value = input_value.split('->')[0] + + # parse shape + shape = re.findall(r'[(\[]([0-9\.\?, -]*)[)\]]', input_value) + if len(shape) == 0: + shape = None + elif len(shape) == 1 and shape[0] in ['', ' ']: + # this shape corresponds to scalar + shape = PartialShape([]) + elif len(shape) == 1: + dims = re.split(r', *| +', shape[0]) + dims = list(filter(None, dims)) + shape = PartialShape([Dimension(dim) for dim in dims]) + else: + raise Error("Wrong syntax to specify shape. Use \"input\" " + "\"node_name[shape]->value\"") + return shape + + +def get_node_name_with_port_from_input_value(input_value: str): + """ + Returns the node name (optionally with input/output port) from the input value + :param input_value: string passed as input to the "input" command line parameter + :return: the corresponding node name with input/output port + """ + return remove_shape_from_input_value(remove_data_type_from_input_value(input_value.split('->')[0])) + + +def get_value_from_input_value(input_value: str): + """ + Returns the value from the input value string + :param input_value: string passed as input to the "input" command line parameter + :return: the corresponding value or None if it is not specified + """ + parts = input_value.split('->') + value = None + if len(parts) == 2: + value = parts[1] + if value[0] == '[' and value[-1] != ']' or value[0] != '[' and value[-1] == ']': + raise Error("Wrong syntax to specify value. Use \"input\"=\"node_name[shape]->value\"") + if '[' in value.strip(' '): + value = value.replace('[', '').replace(']', '') + if ',' in value: + value = value.replace(' ', '') + value = value.split(',') + else: + value = value.split(' ') + if not isinstance(value, list): + value = ast.literal_eval(value) + elif len(parts) > 2: + raise Error("Wrong syntax to specify value. Use \"input\"=\"node_name[shape]->value\"") + return value + + +def partial_shape_prod(shape: [PartialShape, tuple]): + assert not (isinstance(shape, PartialShape) and shape.is_dynamic), \ + "Unable to calculate prod for dynamic shape {}.".format(shape) + + prod = 1 + for dim in shape: + prod *= dim.get_min_length() + return prod + + +def parse_input_value(input_value: str): + """ + Parses a value of the "input" command line parameter and gets a node name, shape and value. + The node name includes a port if it is specified. + Shape and value is equal to None if they are not specified. + Parameters + ---------- + input_value + string with a specified node name, shape, value and data_type. + E.g. 'node_name:0[4]{fp32}->[1.0 2.0 3.0 4.0]' + + Returns + ------- + Node name, shape, value, data type + E.g. 'node_name:0', '4', [1.0 2.0 3.0 4.0], np.float32 + """ + data_type = get_data_type_from_input_value(input_value) + node_name = get_node_name_with_port_from_input_value(input_value) + value = get_value_from_input_value(input_value) + shape = get_shape_from_input_value(input_value) + value_size = np.prod(len(value)) if isinstance(value, list) else 1 + + if value is not None and shape is not None: + for dim in shape: + if isinstance(dim, Dimension) and dim.is_dynamic: + raise Error("Cannot freeze input with dynamic shape: {}".format(shape)) + + if shape is not None and value is not None and partial_shape_prod(shape) != value_size: + raise Error("The shape '{}' of the input node '{}' does not correspond to the number of elements '{}' in the " + "value: {}".format(shape, node_name, value_size, value)) + return node_name, shape, value, data_type + + +def split_str_avoiding_square_brackets(s: str) -> list: + """ + Splits a string by comma, but skips commas inside square brackets. + :param s: string to split + :return: list of strings split by comma + """ + res = list() + skipping = 0 + last_idx = 0 + for i, c in enumerate(s): + if c == '[': + skipping += 1 + elif c == ']': + skipping -= 1 + elif c == ',' and skipping == 0: + res.append(s[last_idx:i]) + last_idx = i + 1 + res.append(s[last_idx:]) + return res + + +def split_layouts_by_arrow(s: str) -> tuple: + """ + Splits a layout string by first arrow (->). + :param s: string to split + :return: tuple containing source and target layouts + """ + arrow = s.find('->') + if arrow != -1: + source_layout = s[:arrow] + target_layout = s[arrow + 2:] + if source_layout == '': + source_layout = None + if target_layout == '': + target_layout = None + return source_layout, target_layout + else: + return s, None + + +def validate_layout(layout: str): + """ + Checks if layout is of valid format. + :param layout: string containing layout + :raises: if layout is incorrect + """ + error_msg = 'Invalid layout parsed: {}'.format(layout) + if layout: + incorrect_brackets = xor(layout[0] == '[', layout[-1] == ']') + if incorrect_brackets or layout[-1] == '-': + error_msg += ', did you forget quotes?' + else: + valid_layout_re = re.compile(r'\[?[^\[\]\(\)\-\s]*\]?') + if valid_layout_re.fullmatch(layout): + return + raise Error(error_msg) + + +def write_found_layout(name: str, found_layout: str, parsed: dict, dest: str = None): + """ + Writes found layout data to the 'parsed' dict. + :param name: name of the node to add layout + :param found_layout: string containing layout for the node + :param parsed: dict where result will be stored + :param dest: type of the command line: + * 'source' is "source_layout" + * 'target' is "target_layout" + * None is "layout" + """ + s_layout = None + t_layout = None + if name in parsed: + s_layout = parsed[name]['source_layout'] + t_layout = parsed[name]['target_layout'] + if dest == 'source': + s_layout = found_layout + elif dest == 'target': + t_layout = found_layout + else: + s_layout, t_layout = split_layouts_by_arrow(found_layout) + validate_layout(s_layout) + validate_layout(t_layout) + parsed[name] = {'source_layout': s_layout, 'target_layout': t_layout} + + +def write_found_layout_list(idx: int, found_layout: str, parsed: list, dest: str = None): + """ + Writes found layout data to the 'parsed' dict. + :param idx: idx of of the node to add layout + :param found_layout: string containing layout for the node + :param parsed: list where result will be stored + :param dest: type of the command line: + * 'source' is "source_layout" + * 'target' is "target_layout" + * None is "layout" + """ + s_layout = None + t_layout = None + if idx < len(parsed): + s_layout = parsed[idx]['source_layout'] + t_layout = parsed[idx]['target_layout'] + if dest == 'source': + s_layout = found_layout + elif dest == 'target': + t_layout = found_layout + else: + s_layout, t_layout = split_layouts_by_arrow(found_layout) + validate_layout(s_layout) + validate_layout(t_layout) + + if idx < len(parsed): + parsed[idx] = {'source_layout': s_layout, 'target_layout': t_layout} + else: + parsed.append({'source_layout': s_layout, 'target_layout': t_layout}) + + +def parse_layouts_by_destination(s: str, parsed: dict, parsed_list: list, dest: str = None) -> None: + """ + Parses layout command line to get all names and layouts from it. Adds all found data in the 'parsed' dict. + :param s: string to parse + :param parsed: dict where result will be stored + :param dest: type of the command line: + * 'source' is "source_layout" + * 'target' is "target_layout" + * None is "layout" + """ + list_s = split_str_avoiding_square_brackets(s) + if len(list_s) == 1 and (list_s[0][-1] not in ')]' or (list_s[0][0] == '[' and list_s[0][-1] == ']')): + # single layout case + write_found_layout('', list_s[0], parsed, dest) + else: + for idx, layout_str in enumerate(list_s): + # case for: "name1(nhwc->[n,c,h,w])" + p1 = re.compile(r'([^\[\]\(\)]*)\((\S+)\)') + m1 = p1.match(layout_str) + # case for: "name1[n,h,w,c]->[n,c,h,w]" + p2 = re.compile(r'([^\[\]\(\)]*)(\[\S*\])') + m2 = p2.match(layout_str) + if m1: + found_g = m1.groups() + elif m2: + found_g = m2.groups() + else: + # case for layout without name + write_found_layout_list(idx, layout_str, parsed_list, dest) + continue + if len(found_g[0]) > 0: + write_found_layout(found_g[0], found_g[1], parsed, dest) + else: + write_found_layout_list(idx, found_g[1], parsed_list, dest) + + +def get_layout_values(argv_layout: str = '', argv_source_layout: str = '', argv_target_layout: str = ''): + """ + Parses layout string. + :param argv_layout: string with a list of layouts passed as a "layout". + :param argv_source_layout: string with a list of layouts passed as a "source_layout". + :param argv_target_layout: string with a list of layouts passed as a "target_layout". + :return: dict with names and layouts associated + """ + if argv_layout and (argv_source_layout or argv_target_layout): + raise Error("\"layout\" is used as well as \"source_layout\" and/or \"target_layout\" which is not allowed, please " + "use one of them.") + res = {} + res_list = [] + if argv_layout: + parse_layouts_by_destination(argv_layout, res, res_list) + if argv_source_layout: + parse_layouts_by_destination(argv_source_layout, res, res_list, 'source') + if argv_target_layout: + parse_layouts_by_destination(argv_target_layout, res, res_list, 'target') + if len(res) > 0 and len(res_list) > 0: + raise Error("Some layout values are provided with names, and some without names. " + "Please provide ether all layouts with names or all layouts without names.") + if len(res) > 0: + return res + else: + return res_list + + +def parse_freeze_placeholder_values(argv_freeze_placeholder_with_value: str): + """ + Parses parse_freeze_placeholder_values string. + :param argv_freeze_placeholder_with_value: string information on freezing placeholders + :return: dictionary where key is node name, value is node value. + """ + placeholder_values = {} + if argv_freeze_placeholder_with_value is not None: + for plh_with_value in argv_freeze_placeholder_with_value.split(','): + plh_with_value = plh_with_value.split('->') + if len(plh_with_value) != 2: + raise Error("Wrong replacement syntax. Use \"freeze_placeholder_with_value\" " + "\"node1_name->value1,node2_name->value2\"") + node_name = plh_with_value[0] + value = plh_with_value[1] + if node_name in placeholder_values and placeholder_values[node_name] != value: + raise Error("Overriding replacement value of the placeholder with name '{}': old value = {}, new value = {}" + ".".format(node_name, placeholder_values[node_name], value)) + if '[' in value.strip(' '): + value = value.replace('[', '').replace(']', '').split(' ') + placeholder_values[node_name] = value + return placeholder_values + + +def get_freeze_placeholder_values(argv_input: str, argv_freeze_placeholder_with_value: str): + """ + Parses values for placeholder freezing and input node names + + Parameters + ---------- + argv_input + string with a list of input layers: either an empty string, or strings separated with comma. + 'node_name1[shape1]->value1,node_name2[shape2]->value2,...' + argv_freeze_placeholder_with_value + string with a list of input shapes: either an empty string, or tuples separated with comma. + 'placeholder_name1->value1, placeholder_name2->value2,...' + + Returns + ------- + parsed placeholders with values for freezing + input nodes cleaned from shape info + """ + placeholder_values = parse_freeze_placeholder_values(argv_freeze_placeholder_with_value) + input_node_names = None + + if argv_input is not None: + input_node_names = '' + # walkthrough all input values and save values for freezing + for input_value in split_inputs(argv_input): + node_name, _, value, _ = parse_input_value(input_value) + input_node_names = input_node_names + ',' + node_name if input_node_names != '' else node_name + if value is None: # no value is specified for freezing + continue + if node_name in placeholder_values and placeholder_values[node_name] != value: + raise Error("Overriding replacement value of the placeholder with name '{}': old value = {}, new value = {}" + ".".format(node_name, placeholder_values[node_name], value)) + placeholder_values[node_name] = value + + return placeholder_values, input_node_names + + +def split_inputs(input_str): + brakets_count = 0 + inputs = [] + while input_str: + idx = 0 + for c in input_str: + if c == '[': + brakets_count += 1 + if c == ']': + brakets_count -= 1 + if c == ',': + if brakets_count != 0: + idx += 1 + continue + else: + break + idx += 1 + if idx >= len(input_str)-1: + inputs.append(input_str) + break + inputs.append(input_str[:idx]) + input_str = input_str[idx+1:] + return inputs + + + +def split_shapes(argv_input_shape: str): + range_reg = r'([0-9]*\.\.[0-9]*)' + first_digit_reg = r'([0-9 ]+|-1|\?|{})'.format(range_reg) + next_digits_reg = r'(,{})*'.format(first_digit_reg) + tuple_reg = r'((\({}{}\))|(\[{}{}\]))'.format(first_digit_reg, next_digits_reg, + first_digit_reg, next_digits_reg) + + full_reg = r'^{}(\s*,\s*{})*$|^$'.format(tuple_reg, tuple_reg) + if not re.match(full_reg, argv_input_shape): + raise Error('Input shape "{}" cannot be parsed. ' + refer_to_faq_msg(57), argv_input_shape) + return re.findall(r'[(\[]([0-9,\.\? -]+)[)\]]', argv_input_shape) + +def get_placeholder_shapes(argv_input: str, argv_input_shape: str, argv_batch=None): + """ + Parses input layers names and input shapes from the cli and returns the parsed object. + All shapes are specified only through one command line option either "input" or "input_shape". + + Parameters + ---------- + argv_input + string with a list of input layers: either an empty string, or strings separated with comma. + E.g. 'inp1,inp2', 'node_name1[shape1]->value1,node_name2[shape2]->value2' + argv_input_shape + string with a list of input shapes: either an empty string, or tuples separated with comma. + E.g. '[1,2],[3,4]'. + Only positive integers are accepted. + '?' marks dynamic dimension. + Partial shape is specified with ellipsis. E.g. '[1..10,2,3]' + argv_batch + integer that overrides batch size in input shape + + Returns + ------- + parsed shapes in form of {'name of input':tuple} if names of inputs are provided with shapes + parsed shapes in form of {'name of input':None} if names of inputs are provided without shapes + tuple if only one shape is provided and no input name + None if neither shape nor input were provided + """ + if argv_input_shape and argv_batch: + raise Error("Both \"input_shape\" and \"batch\" were provided. Please provide only one of them. " + + refer_to_faq_msg(56)) + + # attempt to extract shapes from "input" parameters + placeholder_shapes = dict() + placeholder_data_types = dict() + are_shapes_specified_through_input = False + inputs_list = list() + if argv_input: + for input_value in split_inputs(argv_input): + node_name, shape, _, data_type = parse_input_value(input_value) + placeholder_shapes[node_name] = shape + inputs_list.append(node_name) + if data_type is not None: + placeholder_data_types[node_name] = data_type + if shape is not None: + are_shapes_specified_through_input = True + + if argv_input_shape and are_shapes_specified_through_input: + raise Error("Shapes are specified using both \"input\" and \"input_shape\" command-line parameters, but only one " + "parameter is allowed.") + + if argv_batch and are_shapes_specified_through_input: + raise Error("Shapes are specified using both \"input\" and \"batch\" command-line parameters, but only one " + "parameter is allowed.") + + if are_shapes_specified_through_input: + return inputs_list, placeholder_shapes, placeholder_data_types + + shapes = list() + inputs = list() + inputs_list = list() + placeholder_shapes = None + + + if argv_input_shape: + shapes = split_shapes(argv_input_shape) + + if argv_input: + inputs = split_inputs(argv_input) + inputs = [remove_data_type_from_input_value(inp) for inp in inputs] + + # check number of shapes with no input provided + if argv_input_shape and not argv_input: + placeholder_shapes = [PartialShape(shape) for shape in shapes] + if len(placeholder_shapes) == 1: + placeholder_shapes = PartialShape(placeholder_shapes[0]) + # check if number of shapes does not match number of passed inputs + elif argv_input and (len(shapes) == len(inputs) or len(shapes) == 0): + # clean inputs from values for freezing + inputs_without_value = list(map(lambda x: x.split('->')[0], inputs)) + placeholder_shapes = dict(zip_longest(inputs_without_value, + map(lambda x: PartialShape(x) if x else None, shapes))) + for inp in inputs: + if '->' not in inp: + inputs_list.append(inp) + continue + shape = placeholder_shapes[inp.split('->')[0]] + inputs_list.append(inp.split('->')[0]) + + if shape is None: + continue + for dim in shape: + if isinstance(dim, Dimension) and not dim.is_static: + raise Error("Cannot freeze input with dynamic shape: {}".format(shape)) + + elif argv_input: + raise Error('Please provide each input layers with an input layer shape. ' + refer_to_faq_msg(58)) + + return inputs_list, placeholder_shapes, placeholder_data_types + + +def parse_tuple_pairs(argv_values: str): + """ + Gets mean/scale values from the given string parameter + Parameters + ---------- + argv_values + string with a specified input name and list of mean values: either an empty string, or a tuple + in a form [] or (). + E.g. 'data(1,2,3)' means 1 for the RED channel, 2 for the GREEN channel, 3 for the BLUE channel for the data + input layer, or tuple of values in a form [] or () if input is specified separately, e.g. (1,2,3),[4,5,6]. + + Returns + ------- + dictionary with input name and tuple of values or list of values if mean/scale value is specified with input, + e.g.: + "data(10,20,30),info(11,22,33)" -> { 'data': [10,20,30], 'info': [11,22,33] } + "(10,20,30),(11,22,33)" -> [mo_array(10,20,30), mo_array(11,22,33)] + """ + res = {} + if not argv_values: + return res + + matches = [m for m in re.finditer(r'[(\[]([0-9., -]+)[)\]]', argv_values, re.IGNORECASE)] + + error_msg = 'Mean/scale values should consist of name and values specified in round or square brackets ' \ + 'separated by comma, e.g. data(1,2,3),info[2,3,4],egg[255] or data(1,2,3). Or just plain set of ' \ + 'values without names: (1,2,3),(2,3,4) or [1,2,3],[2,3,4].' + refer_to_faq_msg(101) + if not matches: + raise Error(error_msg, argv_values) + + name_start_idx = 0 + name_was_present = False + for idx, match in enumerate(matches): + input_name = argv_values[name_start_idx:match.start(0)] + name_start_idx = match.end(0) + 1 + tuple_value = np.fromstring(match.groups()[0], dtype=float, sep=',') + + if idx != 0 and (name_was_present ^ bool(input_name)): + # if node name firstly was specified and then subsequently not or vice versa + # e.g. (255),input[127] or input(255),[127] + raise Error(error_msg, argv_values) + + name_was_present = True if input_name != "" else False + if name_was_present: + res[input_name] = tuple_value + else: + res[idx] = tuple_value + + if not name_was_present: + # return a list instead of a dictionary + res = sorted(res.values(), key=lambda v: v[0]) + return res + + +def get_tuple_values(argv_values: str or tuple, num_exp_values: int = 3, t=float or int): + """ + Gets mean values from the given string parameter + Args: + argv_values: string with list of mean values: either an empty string, or a tuple in a form [] or (). + E.g. '(1,2,3)' means 1 for the RED channel, 2 for the GREEN channel, 4 for the BLUE channel. + t: either float or int + num_exp_values: number of values in tuple + + Returns: + tuple of values + """ + + digit_reg = r'(-?[0-9. ]+)' if t == float else r'(-?[0-9 ]+)' + + assert num_exp_values > 1, 'Can not parse tuple of size 1' + content = r'{0}\s*,{1}\s*{0}'.format(digit_reg, (digit_reg + ',') * (num_exp_values - 2)) + tuple_reg = r'((\({0}\))|(\[{0}\]))'.format(content) + + if isinstance(argv_values, tuple) and not len(argv_values): + return argv_values + + if not len(argv_values) or not re.match(tuple_reg, argv_values): + raise Error('Values "{}" cannot be parsed. ' + + refer_to_faq_msg(59), argv_values) + + mean_values_matches = re.findall(r'[(\[]([0-9., -]+)[)\]]', argv_values) + + for mean in mean_values_matches: + if len(mean.split(',')) != num_exp_values: + raise Error('{} channels are expected for given values. ' + + refer_to_faq_msg(60), num_exp_values) + + return mean_values_matches + + +def split_node_in_port(node_id: str): + """Split node_id in form port:node to separate node and port, where port is converted to int""" + if isinstance(node_id, str): + separator = ':' + parts = node_id.split(separator) + if len(parts) > 1: + if parts[0].isdigit(): + node_name = separator.join(parts[1:]) + try: + port = int(parts[0]) + return node_name, port + except ValueError as err: + log.warning('Didn\'t recognize port:node format for "{}" because port is not an integer.'.format( + node_id)) + else: + node_name = separator.join(parts[:-1]) + try: + port = int(parts[-1]) + return node_name, port + except ValueError as err: + log.warning('Didn\'t recognize node:port format for "{}" because port is not an integer.'.format( + node_id)) + + return node_id, None + + +def get_mean_scale_dictionary(mean_values, scale_values, argv_input: list): + """ + This function takes mean_values and scale_values, checks and processes them into convenient structure + + Parameters + ---------- + mean_values dictionary, contains input name and mean values passed py user (e.g. {data: np.array[102.4, 122.1, 113.9]}), + or list containing values (e.g. np.array[102.4, 122.1, 113.9]) + scale_values dictionary, contains input name and scale values passed py user (e.g. {data: np.array[102.4, 122.1, 113.9]}) + or list containing values (e.g. np.array[102.4, 122.1, 113.9]) + + Returns + ------- + The function returns a dictionary e.g. + mean = { 'data': np.array, 'info': np.array }, scale = { 'data': np.array, 'info': np.array }, input = "data, info" -> + { 'data': { 'mean': np.array, 'scale': np.array }, 'info': { 'mean': np.array, 'scale': np.array } } + + """ + res = {} + # collect input names + if argv_input: + inputs = [get_node_name_with_port_from_input_value(input_value) for input_value in split_inputs(argv_input)] + else: + inputs = [] + if type(mean_values) is dict: + inputs = list(mean_values.keys()) + if type(scale_values) is dict: + for name in scale_values.keys(): + if name not in inputs: + inputs.append(name) + + # create unified object containing both mean and scale for input + if type(mean_values) is dict and type(scale_values) is dict: + if not mean_values and not scale_values: + return res + + for inp_scale in scale_values.keys(): + if inp_scale not in inputs: + raise Error("Specified scale_values name '{}' do not match to any of inputs: {}. " + "Please set 'scale_values' that correspond to values from input.".format(inp_scale, inputs)) + + for inp_mean in mean_values.keys(): + if inp_mean not in inputs: + raise Error("Specified mean_values name '{}' do not match to any of inputs: {}. " + "Please set 'mean_values' that correspond to values from input.".format(inp_mean, inputs)) + + for inp in inputs: + inp, port = split_node_in_port(inp) + if inp in mean_values or inp in scale_values: + res.update( + { + inp: { + 'mean': + mean_values[inp] if inp in mean_values else None, + 'scale': + scale_values[inp] if inp in scale_values else None + } + } + ) + return res + + # user specified input and mean/scale separately - we should return dictionary + if inputs: + if mean_values and scale_values: + if len(inputs) != len(mean_values): + raise Error('Numbers of inputs and mean values do not match. ' + + refer_to_faq_msg(61)) + if len(inputs) != len(scale_values): + raise Error('Numbers of inputs and scale values do not match. ' + + refer_to_faq_msg(62)) + + data = list(zip(mean_values, scale_values)) + + for i in range(len(data)): + res.update( + { + inputs[i]: { + 'mean': + data[i][0], + 'scale': + data[i][1], + + } + } + ) + return res + # only mean value specified + if mean_values: + data = list(mean_values) + for i in range(len(data)): + res.update( + { + inputs[i]: { + 'mean': + data[i], + 'scale': + None + + } + } + ) + return res + + # only scale value specified + if scale_values: + data = list(scale_values) + for i in range(len(data)): + res.update( + { + inputs[i]: { + 'mean': + None, + 'scale': + data[i] + + } + } + ) + return res + # mean and/or scale are specified without inputs + return list(zip_longest(mean_values, scale_values)) + + +def get_model_name(path_input_model: str) -> str: + """ + Deduces model name by a given path to the input model + Args: + path_input_model: path to the input model + + Returns: + name of the output IR + """ + parsed_name, extension = os.path.splitext(os.path.basename(path_input_model)) + return 'model' if parsed_name.startswith('.') or len(parsed_name) == 0 else parsed_name + + +def get_model_name_from_args(argv: argparse.Namespace): + model_name = "" + if hasattr(argv, 'model_name'): + if argv.model_name: + model_name = argv.model_name + elif argv.input_model: + model_name = get_model_name(argv.input_model) + elif argv.saved_model_dir: + model_name = "saved_model" + elif argv.input_meta_graph: + model_name = get_model_name(argv.input_meta_graph) + elif argv.input_symbol: + model_name = get_model_name(argv.input_symbol) + argv.model_name = model_name + return model_name + + +def get_absolute_path(path_to_file: str) -> str: + """ + Deduces absolute path of the file by a given path to the file + Args: + path_to_file: path to the file + + Returns: + absolute path of the file + """ + file_path = os.path.expanduser(path_to_file) + if not os.path.isabs(file_path): + file_path = os.path.join(os.getcwd(), file_path) + return file_path + + +def isfloat(value): + try: + float(value) + return True + except ValueError: + return False + + +def isbool(value): + try: + strtobool(value) + return True + except ValueError: + return False + + +def isdict(value): + try: + evaluated = ast.literal_eval(value) + return isinstance(evaluated, dict) + except ValueError: + return False + + +def convert_string_to_real_type(value: str): + if isdict(value): + return ast.literal_eval(value) + + values = value.split(',') + for i in range(len(values)): + value = values[i] + if value.isdigit(): + values[i] = int(value) + elif isfloat(value): + values[i] = float(value) + elif isbool(value): + values[i] = strtobool(value) + + return values[0] if len(values) == 1 else values + + +def parse_transform(transform: str) -> list: + transforms = [] + + if len(transform) == 0: + return transforms + + all_transforms = re.findall(r"([a-zA-Z0-9]+)(\[([^\]]+)\])*(,|$)", transform) + + # Check that all characters were matched otherwise transform key value is invalid + key_len = len(transform) + for transform in all_transforms: + # In regexp we have 4 groups where 1st group - transformation_name, + # 2nd group - [args], + # 3rd group - args, <-- nested group + # 4th group - EOL + # And to check that regexp matched all string we decrease total length by the length of matched groups (1,2,4) + # In case if no arguments were given to transformation then 2nd and 3rd groups will be empty. + if len(transform) != 4: + raise Error("Unexpected transform key structure: {}".format(transform)) + key_len -= len(transform[0]) + len(transform[1]) + len(transform[3]) + + if key_len != 0: + raise Error("Unexpected transform key structure: {}".format(transform)) + + for transform in all_transforms: + name = transform[0] + args = transform[2] + + args_dict = {} + + if len(args) != 0: + for arg in args.split(';'): + m = re.match(r"^([_a-zA-Z]+)=(.+)$", arg) + if not m: + raise Error("Unrecognized attributes for transform key: {}".format(transform)) + + args_dict[m.group(1)] = convert_string_to_real_type(m.group(2)) + + transforms.append((name, args_dict)) + + return transforms + + +def check_available_transforms(transforms: list): + """ + This function check that transformations specified by user are available. + :param transforms: list of user specified transformations + :return: raises an Error if transformation is not available + """ + from openvino.tools.ovc.moc_frontend.offline_transformations import get_available_transformations + available_transforms = get_available_transformations() + + missing_transformations = [] + for name, _ in transforms: + if name not in available_transforms.keys(): + missing_transformations.append(name) + + if len(missing_transformations) != 0: + raise Error('Following transformations ({}) are not available. ' + 'List with available transformations ({})'.format(','.join(missing_transformations), + ','.join(available_transforms.keys()))) + return True + + +def check_positive(value): + try: + int_value = int(value) + if int_value <= 0: + raise ValueError + except ValueError: + raise argparse.ArgumentTypeError("expected a positive integer value") + + return int_value + + +def check_bool(value): + if isinstance(value, bool): + return value + elif isinstance(value, str): + if value.lower() not in ['true', 'false']: + raise argparse.ArgumentTypeError("expected a True/False value") + return value.lower() == 'true' + else: + raise argparse.ArgumentTypeError("expected a bool or str type") + + +def depersonalize(value: str, key: str): + dir_keys = [ + 'output_dir', 'extensions', 'saved_model_dir', 'tensorboard_logdir', 'caffe_parser_path' + ] + if isinstance(value, list): + updated_value = [] + for elem in value: + updated_value.append(depersonalize(elem, key)) + return updated_value + + if not isinstance(value, str): + return value + res = [] + for path in value.split(','): + if os.path.isdir(path) and key in dir_keys: + res.append('DIR') + elif os.path.isfile(path): + res.append(os.path.join('DIR', os.path.split(path)[1])) + else: + res.append(path) + return ','.join(res) + +def get_available_front_ends(fem=None): + # Use this function as workaround to avoid IR frontend usage by MO + if fem is None: + return [] + available_moc_front_ends = fem.get_available_front_ends() + if 'ir' in available_moc_front_ends: + available_moc_front_ends.remove('ir') + + return available_moc_front_ends diff --git a/tools/ovc/openvino/tools/ovc/convert.py b/tools/ovc/openvino/tools/ovc/convert.py new file mode 100644 index 00000000000..6d46d006e8a --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/convert.py @@ -0,0 +1,366 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + +import os +import pathlib +from collections import namedtuple +from typing import Any + +from openvino.runtime import PartialShape, Shape, Layout, Model + +from openvino.tools.ovc.convert_impl import _convert +from openvino.tools.ovc.logger import get_logger_state, restore_logger_state +from openvino.tools.ovc.cli_parser import get_all_cli_parser + +InputCutInfo = namedtuple("InputInfo", ["name", "shape", "type", "value"], defaults=[None, None, None, None]) +LayoutMap = namedtuple("LayoutMap", ["source_layout", "target_layout"], defaults=[None, None]) + + +def convert_model( + input_model: [str, pathlib.Path, Any] = None, + + # Optional parameters + help: bool = False, + framework: [str] = None, + + # Framework-agnostic parameters + input: [str, list, tuple, InputCutInfo] = None, + output: [str, list] = None, + input_shape: [str, PartialShape, Shape, list] = None, + example_input: Any = None, + batch: int = None, + mean_values: [str, dict, list] = (), + scale_values: [str, dict, list] = (), + scale: [str, float] = None, + reverse_input_channels: bool = False, + source_layout: [str, Layout, dict] = (), + target_layout: [str, Layout, dict] = (), + layout: [str, Layout, LayoutMap, list, dict] = (), + compress_to_fp16: bool = False, + extensions: [str, pathlib.Path, list, Any] = None, + transform: [str, list, tuple] = "", + transformations_config: [str, pathlib.Path] = None, + silent: bool = True, + log_level: str = 'ERROR', + version: bool = None, + progress: bool = False, + stream_output: bool = False, + + # PaddlePaddle-specific parameters: + example_output: Any = None, + + # TensorFlow*-specific parameters + input_model_is_text: bool = None, + input_checkpoint: [str, pathlib.Path] = None, + input_meta_graph: [str, pathlib.Path] = None, + saved_model_dir: [str, pathlib.Path] = None, + saved_model_tags: [str, list] = None, + tensorflow_custom_operations_config_update: [str, pathlib.Path] = None, + tensorflow_object_detection_api_pipeline_config: [str, pathlib.Path] = None, + tensorboard_logdir: [str, pathlib.Path] = None, + tensorflow_custom_layer_libraries: [str, pathlib.Path] = None, + + # MXNet-specific parameters: + input_symbol: [str, pathlib.Path] = None, + nd_prefix_name: str = None, + pretrained_model_name: str = None, + save_params_from_nd: bool = None, + legacy_mxnet_model: bool = None, + enable_ssd_gluoncv: bool = False, + + # Caffe*-specific parameters: + input_proto: [str, pathlib.Path] = None, + caffe_parser_path: [str, pathlib.Path] = None, + k: [str, pathlib.Path] = None, + disable_omitting_optional: bool = False, + enable_flattening_nested_params: bool = False, + + # Kaldi-specific parameters: + counts: [str, pathlib.Path] = None, + remove_output_softmax: bool = False, + remove_memory: bool = False, + + **args +) -> Model: + """ + Converts the model from original framework to OpenVino Model. + + Args: + :param help: + Print available parameters. + :param framework: + Name of the framework used to train the input model. + + Framework-agnostic parameters: + :param input_model: + Model object in original framework (PyTorch, Tensorflow) or path to model file. + Tensorflow*: a file with a pre-trained model (binary or text .pb file after freezing). + Caffe*: a model proto file with model weights + + Supported formats of input model: + + PaddlePaddle + paddle.hapi.model.Model + paddle.fluid.dygraph.layers.Layer + paddle.fluid.executor.Executor + + PyTorch + torch.nn.Module + torch.jit.ScriptModule + torch.jit.ScriptFunction + + TF + tf.compat.v1.Graph + tf.compat.v1.GraphDef + tf.compat.v1.wrap_function + tf.compat.v1.session + + TF2 / Keras + tf.keras.Model + tf.keras.layers.Layer + tf.function + tf.Module + tf.train.checkpoint + + :param input: + Input can be set by passing a list of InputCutInfo objects or by a list + of tuples. Each tuple can contain optionally input name, input + type or input shape. Example: input=("op_name", PartialShape([-1, + 3, 100, 100]), Type(np.float32)). Alternatively input can be set by + a string or list of strings of the following format. Quoted list of comma-separated + input nodes names with shapes, data types, and values for freezing. + If operation names are specified, the order of inputs in converted + model will be the same as order of specified operation names (applicable for TF2, ONNX, MxNet). + The shape and value are specified as comma-separated lists. The data type of input node is specified + in braces and can have one of the values: f64 (float64), f32 (float32), f16 (float16), i64 + (int64), i32 (int32), u8 (uint8), boolean (bool). Data type is optional. + If it's not specified explicitly then there are two options: if input + node is a parameter, data type is taken from the original node dtype, + if input node is not a parameter, data type is set to f32. Example, to set + `input_1` with shape [1,100], and Parameter node `sequence_len` with + scalar input with value `150`, and boolean input `is_training` with + `False` value use the following format: "input_1[1,100],sequence_len->150,is_training->False". + Another example, use the following format to set input port 0 of the node + `node_name1` with the shape [3,4] as an input node and freeze output + port 1 of the node `node_name2` with the value [20,15] of the int32 type + and shape [2]: "0:node_name1[3,4],node_name2:1[2]{i32}->[20,15]". + :param output: + The name of the output operation of the model or list of names. For TensorFlow*, + do not add :0 to this name.The order of outputs in converted model is the + same as order of specified operation names. + :param input_shape: + Input shape(s) that should be fed to an input node(s) of the model. Input + shapes can be defined by passing a list of objects of type PartialShape, + Shape, [Dimension, ...] or [int, ...] or by a string of the following + format. Shape is defined as a comma-separated list of integer numbers + enclosed in parentheses or square brackets, for example [1,3,227,227] + or (1,227,227,3), where the order of dimensions depends on the framework + input layout of the model. For example, [N,C,H,W] is used for ONNX* models + and [N,H,W,C] for TensorFlow* models. The shape can contain undefined + dimensions (? or -1) and should fit the dimensions defined in the input + operation of the graph. Boundaries of undefined dimension can be specified + with ellipsis, for example [1,1..10,128,128]. One boundary can be + undefined, for example [1,..100] or [1,3,1..,1..]. If there are multiple + inputs in the model, "input_shape" should contain definition of shape + for each input separated by a comma, for example: [1,3,227,227],[2,4] + for a model with two inputs with 4D and 2D shapes. Alternatively, specify + shapes with the "input" option. + :param example_input: + Sample of model input in original framework. + For PyTorch it can be torch.Tensor. + For Tensorflow it can be tf.Tensor or numpy.ndarray. + For PaddlePaddle it can be Paddle Variable. + :param batch: + Set batch size. It applies to 1D or higher dimension inputs. + The default dimension index for the batch is zero. + Use a label 'n' in "layout" or "source_layout" option to set the batch dimension. + For example, "x(hwnc)" defines the third dimension to be the batch. + :param mean_values: + Mean values to be used for the input image per channel. Mean values can + be set by passing a dictionary, where key is input name and value is mean + value. For example mean_values={'data':[255,255,255],'info':[255,255,255]}. + Or mean values can be set by a string of the following format. Values to + be provided in the (R,G,B) or [R,G,B] format. Can be defined for desired + input of the model, for example: mean_values="data[255,255,255],info[255,255,255]". + The exact meaning and order of channels depend on how the original model + was trained. + :param scale_values: + Scale values to be used for the input image per channel. Scale values + can be set by passing a dictionary, where key is input name and value is + scale value. For example scale_values={'data':[255,255,255],'info':[255,255,255]}. + Or scale values can be set by a string of the following format. Values + are provided in the (R,G,B) or [R,G,B] format. Can be defined for desired + input of the model, for example: scale_values="data[255,255,255],info[255,255,255]". + The exact meaning and order of channels depend on how the original model + was trained. If both "mean_values" and "scale_values" are specified, + the mean is subtracted first and then scale is applied regardless of + the order of options in command line. + :param scale: + All input values coming from original network inputs will be divided + by this value. When a list of inputs is overridden by the "input" parameter, + this scale is not applied for any input that does not match with the original + input of the model. If both "mean_values" and "scale" are specified, + the mean is subtracted first and then scale is applied regardless of + the order of options in command line. + :param reverse_input_channels: + Switch the input channels order from RGB to BGR (or vice versa). Applied + to original inputs of the model if and only if a number of channels equals + 3. When "mean_values"/"scale_values" are also specified, reversing + of channels will be applied to user's input data first, so that numbers + in "mean_values" and "scale_values" go in the order of channels used + in the original model. In other words, if both options are specified, + then the data flow in the model looks as following: Parameter -> ReverseInputChannels + -> Mean apply-> Scale apply -> the original body of the model. + :param source_layout: + Layout of the input or output of the model in the framework. Layout can + be set by passing a dictionary, where key is input name and value is LayoutMap + object. Or layout can be set by string of the following format. Layout + can be specified in the short form, e.g. nhwc, or in complex form, e.g. + "[n,h,w,c]". Example for many names: "in_name1([n,h,w,c]),in_name2(nc),out_name1(n),out_name2(nc)". + Layout can be partially defined, "?" can be used to specify undefined + layout for one dimension, "..." can be used to specify undefined layout + for multiple dimensions, for example "?c??", "nc...", "n...c", etc. + :param target_layout: + Same as "source_layout", but specifies target layout that will be in + the model after processing by ModelOptimizer. + :param layout: + Combination of "source_layout" and "target_layout". Can't be used + with either of them. If model has one input it is sufficient to specify + layout of this input, for example "layout" nhwc. To specify layouts + of many tensors, names must be provided, for example: layout="name1(nchw),name2(nc)". + It is possible to instruct ModelOptimizer to change layout, for example: + layout="name1(nhwc->nchw),name2(cn->nc)". + Also "*" in long layout form can be used to fuse dimensions, for example "[n,c,...]->[n*c,...]". + :param compress_to_fp16: + If the original model has FP32 weights or biases, they are compressed + to FP16. All intermediate data is kept in original precision. Option + can be specified alone as "compress_to_fp16", or explicit True/False + values can be set, for example: "compress_to_fp16=False", or "compress_to_fp16=True" + :param extensions: + Paths to libraries (.so or .dll) with extensions, comma-separated + list of paths, objects derived from BaseExtension class or lists of + objects. For the legacy MO path (if "use_legacy_frontend" is used), + a directory or a comma-separated list of directories with extensions + are supported. To disable all extensions including those that are placed + at the default location, pass an empty string. + :param transform: + Apply additional transformations. 'transform' can be set by a list + of tuples, where the first element is transform name and the second element + is transform parameters. For example: [('LowLatency2', {{'use_const_initializer': + False}}), ...] transform="transformation_name1[args],transformation_name2..." + where [args] is key=value pairs separated by semicolon. Examples: + transform="LowLatency2" or + transform="Pruning" or + transform="LowLatency2[use_const_initializer=False]" or + transform="MakeStateful[param_res_names= + {'input_name_1':'output_name_1','input_name_2':'output_name_2'}]" + Available transformations: "LowLatency2", "MakeStateful", "Pruning" + :param transformations_config: + Use the configuration file with transformations description or pass + object derived from BaseExtension class. Transformations file can + be specified as relative path from the current directory, as absolute + path or as relative path from the mo root directory. + :param silent: + Prevent any output messages except those that correspond to log level + equals ERROR, that can be set with the following option: "log_level". + By default, log level is already ERROR. + :param log_level: + Logger level of logging massages from MO. + Expected one of ['CRITICAL', 'ERROR', 'WARN', 'WARNING', 'INFO', 'DEBUG', 'NOTSET']. + :param version: + Version of Model Conversion API + :param progress: + Enable model conversion progress display. + :param stream_output: + Switch model conversion progress display to a multiline mode. + + PaddlePaddle-specific parameters: + :param example_output: + Sample of model output in original framework. For PaddlePaddle it can be Paddle Variable. + + TensorFlow*-specific parameters: + :param input_model_is_text: + TensorFlow*: treat the input model file as a text protobuf format. If + not specified, the convert_model() treats it as a binary file by default. + :param input_checkpoint: + TensorFlow*: variables file to load. + :param input_meta_graph: + Tensorflow*: a file with a meta-graph of the model before freezing + :param saved_model_dir: + TensorFlow*: directory with a model in SavedModel format of TensorFlow + 1.x or 2.x version. + :param saved_model_tags: + Group of tag(s) of the MetaGraphDef to load, in string format, separated + by ','. For tag-set contains multiple tags, all tags must be passed in. + :param tensorflow_custom_operations_config_update: + TensorFlow*: update the configuration file with node name patterns + with input/output nodes information. + :param tensorflow_object_detection_api_pipeline_config: + TensorFlow*: path to the pipeline configuration file used to generate + model created with help of Object Detection API. + :param tensorboard_logdir: + TensorFlow*: dump the input graph to a given directory that should be + used with TensorBoard. + :param tensorflow_custom_layer_libraries: + TensorFlow*: comma separated list of shared libraries with TensorFlow* + custom operations implementation. + + MXNet-specific parameters: + :param input_symbol: + Symbol file (for example, model-symbol.json) that contains a topology + structure and layer attributes + :param nd_prefix_name: + Prefix name for args.nd and argx.nd files. + :param pretrained_model_name: + Name of a pretrained MXNet model without extension and epoch number. + This model will be merged with args.nd and argx.nd files + :param save_params_from_nd: + Enable saving built parameters file from .nd files + :param legacy_mxnet_model: + Enable MXNet loader to make a model compatible with the latest MXNet + version. Use only if your model was trained with MXNet version lower + than 1.0.0 + :param enable_ssd_gluoncv: + Enable pattern matchers replacers for converting gluoncv ssd topologies. + + Caffe*-specific parameters: + :param input_proto: + Deploy-ready prototxt file that contains a topology structure and + layer attributes + :param caffe_parser_path: + Path to Python Caffe* parser generated from caffe.proto + :param k: + Path to CustomLayersMapping.xml to register custom layers + :param disable_omitting_optional: + Disable omitting optional attributes to be used for custom layers. + Use this option if you want to transfer all attributes of a custom layer + to IR. Default behavior is to transfer the attributes with default values + and the attributes defined by the user to IR. + :param enable_flattening_nested_params: + Enable flattening optional params to be used for custom layers. Use + this option if you want to transfer attributes of a custom layer to IR + with flattened nested parameters. Default behavior is to transfer + the attributes without flattening nested parameters. + + Kaldi-specific parameters: + :param counts: + Path to the counts file + :param remove_output_softmax: + Removes the SoftMax layer that is the output layer + :param remove_memory: + Removes the Memory layer and use additional inputs outputs instead + + Returns: + openvino.runtime.Model + """ + params = locals() + logger_state = get_logger_state() + del params['args'] + params.update(args) + cli_parser = get_all_cli_parser() + ov_model, _ = _convert(cli_parser, params, True) + restore_logger_state(logger_state) + return ov_model diff --git a/tools/ovc/openvino/tools/ovc/convert_data_type.py b/tools/ovc/openvino/tools/ovc/convert_data_type.py new file mode 100644 index 00000000000..d34787c115b --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/convert_data_type.py @@ -0,0 +1,92 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + +import numpy as np + +from openvino.tools.ovc.error import Error + +""" +Packed data of custom types are stored in numpy uint8 data type. +To distinguish true uint8 and custom data we introduce this class not to store, +but to have unique data type in SUPPORTED_DATA_TYPES map +""" + + +class packed_U1(np.generic): + pass + + +class packed_U4(np.generic): + pass + + +class packed_I4(np.generic): + pass + + +SUPPORTED_DATA_TYPES = { + 'float': (np.float32, 'FP32', 'f32'), + 'half': (np.float16, 'FP16', 'f16'), + 'FP32': (np.float32, 'FP32', 'f32'), + 'FP64': (np.float64, 'FP64', 'f64'), + 'FP16': (np.float16, 'FP16', 'f16'), + 'I32': (np.int32, 'I32', 'i32'), + 'I64': (np.int64, 'I64', 'i64'), + 'int8': (np.int8, 'I8', 'i8'), + 'int32': (np.int32, 'I32', 'i32'), + 'int64': (np.int64, 'I64', 'i64'), + 'bool': (bool, 'BOOL', 'boolean'), + 'uint8': (np.uint8, 'U8', 'u8'), + 'uint32': (np.uint32, 'U32', 'u32'), + 'uint64': (np.uint64, 'U64', 'u64'), + + # custom types + 'U1': (packed_U1, 'U1', 'u1'), + 'int4': (packed_I4, 'I4', 'i4'), + 'uint4': (packed_U4, 'U4', 'u4'), + 'I4': (packed_I4, 'I4', 'i4'), + 'U4': (packed_U4, 'U4', 'u4'), +} + + +def data_type_str_to_np(data_type_str: str): + return SUPPORTED_DATA_TYPES[data_type_str][0] if data_type_str in SUPPORTED_DATA_TYPES else None + + +def data_type_str_to_precision(data_type_str: str): + return SUPPORTED_DATA_TYPES[data_type_str][1] if data_type_str in SUPPORTED_DATA_TYPES else None + + +def data_type_str_to_destination_type(data_type_str: str): + return SUPPORTED_DATA_TYPES[data_type_str][2] if data_type_str in SUPPORTED_DATA_TYPES else None + + +def np_data_type_to_precision(np_data_type): + for np_t, precision, _ in SUPPORTED_DATA_TYPES.values(): + if np_t == np_data_type: + return precision + raise Error('Data type "{}" is not supported'.format(np_data_type)) + + +def np_data_type_to_destination_type(np_data_type): + for np_t, _, destination_type in SUPPORTED_DATA_TYPES.values(): + if np_t == np_data_type: + return destination_type + raise Error('Data type "{}" is not supported'.format(np_data_type)) + + +def destination_type_to_np_data_type(dst_type): + for np_t, _, destination_type in SUPPORTED_DATA_TYPES.values(): + if destination_type == dst_type: + return np_t + raise Error('Destination type "{}" is not supported'.format(dst_type)) + + +def precision_to_destination_type(data_type_str): + for _, precision, destination_type in SUPPORTED_DATA_TYPES.values(): + if precision == data_type_str: + return destination_type + raise Error('Data type "{}" is not supported'.format(data_type_str)) diff --git a/tools/ovc/openvino/tools/ovc/convert_impl.py b/tools/ovc/openvino/tools/ovc/convert_impl.py new file mode 100644 index 00000000000..2f8a63a2d53 --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/convert_impl.py @@ -0,0 +1,831 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + +import argparse +import datetime +import logging as log +import os +import sys +import traceback +from collections import OrderedDict +from pathlib import Path + +try: + import openvino_telemetry as tm +except ImportError: + import openvino.tools.ovc.telemetry_stub as tm + +from openvino.tools.ovc.moc_frontend.check_config import legacy_transformations_config_used, \ + tensorflow_custom_operations_config_update_used, new_extensions_used +from openvino.tools.ovc.moc_frontend.pipeline import moc_pipeline +from openvino.tools.ovc.moc_frontend.moc_emit_ir import moc_emit_ir +from openvino.tools.ovc.convert_data_type import destination_type_to_np_data_type +from openvino.tools.ovc.cli_parser import check_available_transforms, \ + get_advanced_cli_options, get_available_front_ends, get_caffe_cli_options, \ + get_common_cli_options, get_kaldi_cli_options, get_layout_values, get_freeze_placeholder_values, \ + get_mean_scale_dictionary, get_mxnet_cli_options, get_onnx_cli_options, \ + get_placeholder_shapes, get_tf_cli_options, parse_transform, parse_tuple_pairs, \ + get_model_name_from_args, depersonalize, get_mo_convert_params, input_to_input_cut_info, \ + input_shape_to_input_cut_info, freeze_placeholder_to_input_cut_info + +from openvino.tools.ovc.error import Error, FrameworkError, legacy_path_error +from openvino.tools.ovc.get_ov_update_message import get_ov_update_message, get_ov_api20_message, \ + get_tf_fe_message, get_try_legacy_fe_message, get_compression_message +from openvino.tools.ovc.version import VersionChecker +from openvino.tools.ovc.utils import deduce_legacy_frontend_by_namespace, refer_to_faq_msg, check_values_equal +from openvino.tools.ovc.logger import init_logger, progress_printer +from openvino.tools.ovc.telemetry_utils import send_params_info, send_conversion_result, \ + get_tid +from openvino.tools.ovc.moc_frontend.check_config import legacy_extensions_used +from openvino.tools.ovc.moc_frontend.check_config import default_path as extensions_default_path +from openvino.tools.ovc.moc_frontend.pytorch_frontend_utils import get_pytorch_decoder, extract_input_info_from_example +from openvino.tools.ovc.moc_frontend.paddle_frontend_utils import paddle_frontend_converter +from openvino.tools.ovc.moc_frontend.shape_utils import parse_input_shapes + +# pylint: disable=no-name-in-module,import-error +from openvino.frontend import FrontEndManager, OpConversionFailure, ProgressReporterExtension, TelemetryExtension +from openvino.runtime import get_version as get_rt_version +from openvino.runtime import Type, PartialShape + +try: + from openvino.frontend.tensorflow.utils import type_supported_by_tf_fe, create_tf_graph_iterator, \ + extract_model_graph # pylint: disable=no-name-in-module,import-error + + tf_frontend_with_python_bindings_installed = True +except (ModuleNotFoundError, ImportError): + tf_frontend_with_python_bindings_installed = False + + +def replace_ext(name: str, old: str, new: str): + base, ext = os.path.splitext(name) + log.debug("base: {}, ext: {}".format(base, ext)) + if ext == old: + return base + new + + +def print_argv(argv: argparse.Namespace, is_caffe: bool, is_tf: bool, is_mxnet: bool, is_kaldi: bool, is_onnx: bool, + model_name: str): + print('Model Conversion arguments:') + props = OrderedDict() + props['common_args'] = get_common_cli_options(model_name) + props['advanced_args'] = get_advanced_cli_options() + if is_caffe: + props['caffe_args'] = get_caffe_cli_options() + if is_tf: + props['tf_args'] = get_tf_cli_options() + if is_mxnet: + props['mxnet_args'] = get_mxnet_cli_options() + if is_kaldi: + props['kaldi_args'] = get_kaldi_cli_options() + if is_onnx: + props['onnx_args'] = get_onnx_cli_options() + + framework_specifics_map = { + 'common_args': 'Common parameters:', + 'advanced_args': 'Advanced parameters:', + 'caffe_args': 'Caffe specific parameters:', + 'tf_args': 'TensorFlow specific parameters:', + 'mxnet_args': 'MXNet specific parameters:', + 'kaldi_args': 'Kaldi specific parameters:', + 'onnx_args': 'ONNX specific parameters:', + } + + lines = [] + for key in props: + lines.append(framework_specifics_map[key]) + for (op, desc) in props[key].items(): + if isinstance(desc, list): + lines.append('\t{}: \t{}'.format(desc[0], desc[1](getattr(argv, op, 'NONE')))) + else: + if op == 'k': + default_path = os.path.join(os.path.dirname(sys.argv[0]), + 'openvino/tools/mo/front/caffe/CustomLayersMapping.xml') + if getattr(argv, op, 'NONE') == default_path: + lines.append('\t{}: \t{}'.format(desc, 'Default')) + continue + lines.append('\t{}: \t{}'.format(desc, getattr(argv, op, 'NONE'))) + print('\n'.join(lines), flush=True) + + +def legacy_framework_check(is_caffe, is_mxnet, is_kaldi): + if is_caffe: + legacy_path_error("The provided model is from Caffe framework. This is legacy functionality. ") + if is_mxnet: + legacy_path_error("The provided model is from MxNet framework. This is legacy functionality. ") + if is_kaldi: + legacy_path_error("The provided model is from Kaldi framework. This is legacy functionality. ") + + +def check_legacy_args(non_default_params, python_api_used): + ignored_cli_options = ["output_dir", "model_name"] + legacy_groups = ['Kaldi-specific parameters:', 'Caffe*-specific parameters:', 'MXNet-specific parameters:'] + tf_legacy_args = ['tensorflow_custom_operations_config_update', 'tensorflow_object_detection_api_pipeline_config', + 'tensorboard_logdir', 'tensorflow_custom_layer_libraries', 'saved_model_tags'] + mo_convert_params = get_mo_convert_params() + + for key, value in non_default_params.items(): + if key in ignored_cli_options: + if python_api_used: + print("The provided option \"{}\" is applicable in command line tool only. The option will be ignored.".format(key)) + for group in legacy_groups: + if key in mo_convert_params[group]: + legacy_path_error("The provided option \"{}\" refers to legacy functionality. ".format(key)) + if key in tf_legacy_args: + legacy_path_error("The provided option \"{}\" refers to legacy functionality. ".format(key)) + + + +def arguments_post_parsing(argv: argparse.Namespace): + use_legacy_frontend = argv.use_legacy_frontend + use_new_frontend = argv.use_new_frontend + if argv.extensions is None: + argv.extensions = [extensions_default_path()] + + if use_new_frontend and use_legacy_frontend: + raise Error('Options "use_new_frontend" and "use_legacy_frontend" must not be used simultaneously.') + + if use_legacy_frontend: + legacy_path_error('Option "use_legacy_frontend" was used, but legacy frontends are not available. ') + + moc_front_end, available_moc_front_ends = get_moc_frontends(argv) + + if not moc_front_end and use_new_frontend: + raise Error('Option "use_new_frontend" is specified but the Model Conversion API is unable to find new frontend. ' + 'Please ensure that your environment contains new frontend for the input model format or ' + 'try to install openvino-dev and convert the model using convert_model() from openvino.tools.mo.') + + is_tf, is_caffe, is_mxnet, is_kaldi, is_onnx = \ + deduce_legacy_frontend_by_namespace(argv) if not moc_front_end else [False, False, False, False, False] + + legacy_framework_check(is_caffe, is_mxnet, is_kaldi) + + is_legacy_frontend = any([is_tf, is_caffe, is_mxnet, is_kaldi, is_onnx]) + + # handle a default case, i.e. use_new_frontend and use_legacy_frontend are not specified, when no frontend is found + if not is_legacy_frontend and not moc_front_end: + legacy_frameworks = ['tf', 'caffe', 'mxnet', 'kaldi', 'onnx'] + frameworks = list(set(legacy_frameworks + available_moc_front_ends)) + if not argv.framework: + raise Error('Framework name can not be deduced from the given options: {}={}. ' + 'Please use "framework" with one from the list: {}.', + '"input_model="', argv.input_model, frameworks) + elif argv.framework not in frameworks: + if argv.framework == 'ir': + raise Error('OpenVINO IR is passed as input_model in convert_model/mo, the IR doesn\'t need ' + 'conversion, please use it in runtime for inference with read_model/compile_model.') + raise Error('Framework {} is not a valid target. Please use "framework" with one from the list: {}. ' + + refer_to_faq_msg(15), argv.framework, frameworks) + + if is_tf and not argv.input_model and not argv.saved_model_dir and not argv.input_meta_graph: + raise Error('Path to input model or saved model dir is required: use "input_model", "saved_model_dir" or ' + '"input_meta_graph"') + elif is_onnx and not argv.input_model: + raise Error('Path to input model is required: use "input_model".') + + log.debug("Model Conversion API started") + + log.debug('Output model name would be {}{{.xml, .bin}}'.format(argv.model_name)) + + if not argv.silent: + print_argv(argv, is_caffe, is_tf, is_mxnet, is_kaldi, is_onnx, argv.model_name) + + argv.data_type = 'FP32' # if compression was enabled will be restored back to 'FP16' after apply_offline_transformations + + # This is just to check that transform key is valid and transformations are available + check_available_transforms(parse_transform(argv.transform)) + + if argv.scale and argv.scale_values: + raise Error( + 'Both "scale" and "scale_values" are defined. Specify either scale factor or scale values per input ' + + 'channels. ' + refer_to_faq_msg(19)) + + if argv.scale and argv.scale < 1.0: + log.error("The scale value is less than 1.0. This is most probably an issue because the scale value specifies " + "floating point value which all input values will be *divided*.", extra={'is_warning': True}) + + if argv.input_model and (is_tf and argv.saved_model_dir): + raise Error('Both "input_model" and "saved_model_dir" are defined. ' + 'Specify either input model or saved model directory.') + if is_tf: + if argv.saved_model_tags is not None: + if ' ' in argv.saved_model_tags: + raise Error('Incorrect saved model tag was provided. Specify "saved_model_tags" with no spaces in it') + argv.saved_model_tags = argv.saved_model_tags.split(',') + + if hasattr(argv, 'is_python_api_used') and argv.is_python_api_used: + python_api_params_parsing(argv) + else: + argv.inputs_list, argv.placeholder_shapes, argv.placeholder_data_types = get_placeholder_shapes( + argv.input, argv.input_shape, argv.batch) + argv.freeze_placeholder_with_value, argv.input = get_freeze_placeholder_values( + argv.input, + argv.freeze_placeholder_with_value) + argv.unnamed_freeze_placeholder_with_value = {} + argv.output = argv.output.split(',') if argv.output else None + argv.layout_values = get_layout_values(argv.layout, argv.source_layout, argv.target_layout) + mean_values = parse_tuple_pairs(argv.mean_values) + scale_values = parse_tuple_pairs(argv.scale_values) + mean_scale = get_mean_scale_dictionary(mean_values, scale_values, argv.input) + argv.mean_scale_values = mean_scale + + log.debug("Placeholder shapes : {}".format(argv.placeholder_shapes)) + + return argv + + +def check_fallback(argv: argparse.Namespace): + fallback_reasons = {} + + # Some frontend such as PDPD does not have legacy path so it has no reasons to fallback + if not any(deduce_legacy_frontend_by_namespace(argv)): + return fallback_reasons + + if argv.use_new_frontend: + return fallback_reasons + + fallback_reasons['extensions'] = legacy_extensions_used + fallback_reasons['transformations_config'] = legacy_transformations_config_used + fallback_reasons['tensorflow_custom_operations_config_update'] = tensorflow_custom_operations_config_update_used + + reasons = [reason for reason, is_applicable in fallback_reasons.items() if is_applicable(argv)] + return reasons + + +def update_fallback_with_conversion_error(use_new_frontend: bool, is_tf: bool, ex_msg: str, fallback_reasons: list): + import re + if not is_tf: + # this sort of fallback is only used by TensorFlow Frontend + return False + + if use_new_frontend: + # this option forces to use new TensorFlow Frontend + # so it is not possible for the fallback + return False + + # for TensorFlow FE we have a set of operations that should lead to the fallback to the legacy + conversion_error_re = r"^(\[TensorFlow\ Frontend\]\ Internal\ error\,\ no\ translator\ found\ for\ operation\(s\)\:\ )((\w+)(\,\ \w+)*)$" + conversion_error_match = re.findall(conversion_error_re, ex_msg, re.MULTILINE) + all_fallback_operations = [ + # corresponds to TF1 While operation + "TensorArrayScatterV3", "TensorArrayV3", "TensorArraySizeV3", "TensorArrayGatherV3", + "LoopCond", "Enter", "NextIteration", "Exit", + # corresponds to TF1 If and TF1 While operations + "Switch", "Merge", + # corresponds to operations with complex tensors + "FFT", "FFT2D", "FFT3D", "IFFT", "IFFT2D", "IFFT3D", + "RFFT", "RFFT2D", "RFFT3D", "IRFFT", "IRFFT2D", "IRFFT3D", + "Complex", "ComplexAbs", "Real", "Imag", + ] + if len(conversion_error_match) < 1 or len(conversion_error_match[0]) != 4: + # no match for the fallback by unsupported operation + return False + + unsupported_operations = conversion_error_match[0][1].replace(" ", "").split(",") + fallback_operations = [operation for operation in unsupported_operations if operation in all_fallback_operations] + + if len(fallback_operations) == 0: + return False + + fallback_reasons.append("Fallback to the legacy TF FE due to operation(s): " + ', '.join(fallback_operations)) + return True + + +def get_default_frontends(): + # Set which frontend to use by default, values should be 'new' or 'legacy' + default_frontends = { + 'onnx': 'new', + 'tf': 'new' + } + return default_frontends + + +def get_moc_frontends(argv: argparse.Namespace): + fem = argv.feManager + + # Read user flags: + use_legacy_frontend = argv.use_legacy_frontend + use_new_frontend = argv.use_new_frontend + + if not fem or use_legacy_frontend: + return None, [] + + available_moc_front_ends = get_available_front_ends(fem) + + if not argv.framework and argv.input_model: + moc_front_end = fem.load_by_model(argv.input_model) + if not moc_front_end: + return None, available_moc_front_ends + argv.framework = moc_front_end.get_name() + elif argv.framework in available_moc_front_ends: + moc_front_end = fem.load_by_framework(argv.framework) + else: + return None, [] + + default_frontends = get_default_frontends() + # Disable MOC frontend if default is set to legacy and no user override + if default_frontends.get(moc_front_end.get_name()) == 'legacy' and not use_new_frontend: + return None, available_moc_front_ends + + # This check as a workaround to skip IR frontend + if not moc_front_end.get_name() in available_moc_front_ends: + return None, available_moc_front_ends + + return moc_front_end, available_moc_front_ends + + +def prepare_ir(argv: argparse.Namespace): + # TODO: remove this workaround once new TensorFlow frontend supports non-frozen formats: checkpoint, MetaGraph, and SavedModel + # Now it converts all TensorFlow formats to the frozen .pb format in case new TensorFlow frontend + is_tf, _, _, _, _ = deduce_legacy_frontend_by_namespace(argv) + argv = arguments_post_parsing(argv) + t = tm.Telemetry() + + graph = None + fallback_reasons = [] + moc_front_end, available_moc_front_ends = get_moc_frontends(argv) + if moc_front_end: + fallback_reasons = check_fallback(argv) + if len(fallback_reasons) == 0: + if is_tf and tf_frontend_with_python_bindings_installed and \ + type_supported_by_tf_fe(argv.input_model): + argv.input_model = create_tf_graph_iterator(argv.input_model, + argv.placeholder_shapes, + argv.placeholder_data_types, + getattr(argv, "example_input", None)) + try: + t.send_event("mo", "conversion_method", moc_front_end.get_name() + "_frontend") + moc_front_end.add_extension(TelemetryExtension("mo", t.send_event, t.send_error, t.send_stack_trace)) + moc_front_end.add_extension(ProgressReporterExtension(progress_printer(argv))) + if legacy_transformations_config_used(argv): + raise Error('Legacy extensions are not supported for the new frontend') + if legacy_extensions_used(argv): + raise Error('Legacy transformations configuration is not supported for the new frontend') + if tensorflow_custom_operations_config_update_used(argv) and is_tf: + raise Error('TensorFlow custom operation config is not supported for the new frontend') + if new_extensions_used(argv): + for extension in argv.extensions: + moc_front_end.add_extension(extension) + ngraph_function = moc_pipeline(argv, moc_front_end) + return graph, ngraph_function + except OpConversionFailure as ex: + # in some set of operations (TF1 While), we have to fallback to the Legacy TensorFlow Frontend + # this is the second attempt for the fallback + if not update_fallback_with_conversion_error(argv.use_new_frontend, is_tf, str(ex), fallback_reasons): + # re-throw exception for all frontends except TensorFlow FE + # and in case unexpected conversion failures + raise + + if len(fallback_reasons) > 0: + reasons_message = ", ".join(fallback_reasons) + t.send_event("mo", "fallback_reason", reasons_message) + log.warning("The IR preparation cannot be executed with new frontend. " + f"The detailed reason why fallback to legacy is needed: not supported {reasons_message} were used. " + + refer_to_faq_msg(105)) + assert not hasattr(argv, 'is_fallback'), '`is_fallback` argument must not exist.' + argv.is_fallback = True + + t.send_event("mo", "conversion_method", "mo_legacy") + legacy_path_error("The provided model cannot be converted with new frontend, as fallback to legacy is needed. ") + return None, None + + +def check_model_object(argv): + model = argv['input_model'] + if 'tensorflow' in sys.modules: + if tf_frontend_with_python_bindings_installed and extract_model_graph(argv): + return "tf" + if 'torch' in sys.modules: + import torch + if isinstance(model, (torch.nn.Module, torch.jit.ScriptFunction)): + return "pytorch" + try: + from openvino.frontend.pytorch.decoder import TorchScriptPythonDecoder + + if isinstance(model, TorchScriptPythonDecoder): + return "pytorch" + except Exception as e: + pass + + import io + if isinstance(model, io.BytesIO): + return 'onnx' + + if 'paddle' in sys.modules: + import paddle + if isinstance(model, paddle.hapi.model.Model) or isinstance(model, + paddle.fluid.dygraph.layers.Layer) or isinstance( + model, paddle.fluid.executor.Executor): + return "paddle" + + raise Error('Unknown model type: {}'.format(type(model))) + + +def driver(argv: argparse.Namespace, non_default_params: dict): + init_logger(argv.log_level.upper(), argv.silent) + + # Log dictionary with non-default cli parameters where complex classes are excluded. + log.debug(str(non_default_params)) + + start_time = datetime.datetime.now() + + graph, ngraph_function = prepare_ir(argv) + legacy_path = False + if graph is not None: + legacy_path_error() + else: + res_ngraph_function = moc_emit_ir(ngraph_function, argv) + + if res_ngraph_function is None: + return res_ngraph_function + + if not argv.silent: + elapsed_time = datetime.datetime.now() - start_time + print('[ SUCCESS ] Total execution time: {:.2f} seconds. '.format(elapsed_time.total_seconds())) + try: + import resource + mem_usage = round(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1024) + if sys.platform == 'darwin': + mem_usage = round(mem_usage / 1024) + print('[ SUCCESS ] Memory consumed: {} MB. '.format(mem_usage)) + except ImportError: + pass + + return res_ngraph_function, legacy_path + + +def args_dict_to_list(cli_parser, **kwargs): + # This method is needed to prepare args from convert_model() for args_parse(). + # The method will not be needed when cli_parser checks are moved from cli_parser to a separate pass. + import inspect + from openvino.tools.ovc import convert_model + signature = inspect.signature(convert_model) + result = [] + for key, value in kwargs.items(): + if value is None: + continue + if key in signature.parameters and check_values_equal(signature.parameters[key].default, value): + continue + if check_values_equal(cli_parser.get_default(key), value): + continue + # skip parser checking for non str objects + if not isinstance(value, (str, bool)): + continue + result.append('--{}'.format(key)) + if not isinstance(value, bool): + result.append(value) + + return result + + +def get_non_default_params(argv, cli_parser): + import numbers + import inspect + from openvino.tools.ovc import convert_model + + signature = inspect.signature(convert_model) + # make dictionary with parameters which have non-default values to be serialized in IR in rt_info + non_default_params = {} + for arg, arg_value in vars(argv).items(): + if arg in signature.parameters and check_values_equal(arg_value, signature.parameters[arg].default): + continue + if check_values_equal(arg_value, cli_parser.get_default(arg)): + continue + value = depersonalize(arg_value, arg) + # Skip complex classes in params to prevent + # serializing it to rt_info + if isinstance(value, (str, bool, numbers.Number)): + non_default_params[arg] = value + return non_default_params + + +def params_to_string(**kwargs): + all_params = {} + for key, value in get_mo_convert_params().items(): + all_params.update(value) + + for key, value in kwargs.items(): + if key in all_params: + param_data = all_params[key] + if param_data.to_string is not None: + kwargs[key] = param_data.to_string(value) + return kwargs + + +def add_line_breaks(text: str, char_num: int, line_break: str): + words = text.replace('\n', "\n ").split(" ") + cnt = 0 + for i, w in enumerate(words): + cnt += len(w) + if '\n' in w: + cnt = len(w) - w.find('\n') - 1 + if cnt > char_num: + if words[i][-1] not in ['\n', '\t']: + words[i] = w + '\n' + cnt = 0 + text = ' '.join(words).replace("\n ", "\n") + return line_break + text.replace("\n", line_break) + + +def show_mo_convert_help(): + mo_convert_params = get_mo_convert_params() + for group_name, group in mo_convert_params.items(): + print(group_name) + for param_name in group: + param_data = group[param_name] + text = param_data.description.replace(" ", '') + text = add_line_breaks(text, 56, "\n\t\t\t") + print(" :param {} {}".format(param_name, text)) + print() + + +def input_model_is_object(argv): + # Input model can be set as object only for "input_model" parameter. + # "saved_model_dir" or meta specific options are only used to store paths to the input model. + if 'input_model' not in argv: + return False + if isinstance(argv['input_model'], (str, Path)): + return False + if argv['input_model'] is None: + return False + return True + + +def python_api_params_parsing(argv: argparse.Namespace): + """ + Parses params passed to convert_model and wraps resulting values into dictionaries or lists. + After working of this method following values are set in argv: + + argv.input, argv.inputs_list - list of input names. Both values are used in some parts of MO. + Could be good to refactor it and use only one of these values. + + argv.placeholder_shapes - dictionary where key is node name, value is PartialShape, + or list of PartialShape if node names were not set. + + argv.placeholder_data_types - dictionary where key is node name, value is node np.type, + or list of np.types if node names were not set. + + argv.freeze_placeholder_with_value - dictionary where key is node name, value is np.ndarray + + argv.unnamed_freeze_placeholder_with_value - list with np.ndarray + + :param argv: MO arguments + """ + # Parse input to list of InputCutInfo + inputs = input_to_input_cut_info(argv.input) + + # Make list of input names + input_names_list = [] + for inp in inputs: + if inp.name is not None: + input_names_list.append(inp.name) + if len(input_names_list) > 0: + assert len(input_names_list) == len(inputs), "\"input\" parameter has unnamed inputs and named inputs. " \ + "Please either set names for all inputs, " \ + "or do not set names for all inputs." + argv.inputs_list = input_names_list + argv.input = ','.join(input_names_list) + + # Parse input_shape param and update InputCutInfo list + input_shape_to_input_cut_info(argv.input_shape, inputs) + + # Parse freeze_placeholder_with_value. + # values for freezing can be set both by named and unnamed approach if + # 'input' was used without names and 'freeze_placeholder_with_value' was used with names. + # So named and unnamed values are stored separately. + argv.freeze_placeholder_with_value, argv.unnamed_freeze_placeholder_with_value = \ + freeze_placeholder_to_input_cut_info(argv.freeze_placeholder_with_value, inputs) + + if len(input_names_list) > 0: + # Named inputs case + shape_dict = {} + data_type_dict = {} + for inp in inputs: + if inp.shape is not None: + # Wrap shape to PartialShape for uniformity of stored values + shape_dict[inp.name] = PartialShape(inp.shape) + else: + shape_dict[inp.name] = None + if inp.type is not None: + # Convert type to numpy type for uniformity of stored values + if isinstance(inp.type, str): + data_type_dict[inp.name] = destination_type_to_np_data_type(inp.type) + elif isinstance(inp.type, Type): + data_type_dict[inp.name] = inp.type.to_dtype().type + else: + data_type_dict[inp.name] = inp.type + argv.placeholder_shapes = shape_dict if shape_dict else None + argv.placeholder_data_types = data_type_dict if data_type_dict else {} + else: + # Unnamed inputs case + shape_list = [] + data_type_list = [] + for inp in inputs: + if inp.shape is not None: + # Wrap shape to PartialShape for uniformity of stored values + shape_list.append(PartialShape(inp.shape)) + if inp.type is not None: + # Convert type to numpy type for uniformity of stored values + if isinstance(inp.type, str): + data_type_list.append(destination_type_to_np_data_type(inp.type)) + elif isinstance(inp.type, Type): + data_type_list.append(inp.type.to_dtype().type) + else: + data_type_list.append(inp.type) + argv.placeholder_shapes = shape_list if shape_list else None + argv.placeholder_data_types = data_type_list if data_type_list else {} + if argv.framework == "pytorch" and getattr(argv, "example_input", None) is not None: + extract_input_info_from_example(argv, inputs) + + +def pack_params_to_args_namespace(args: dict, cli_parser: argparse.ArgumentParser): + if len(args) > 0: + args_string = params_to_string(**args) + argv, _ = cli_parser.parse_known_args(args_dict_to_list(cli_parser, **args_string)) + + # get list of all available params for convert_model() + all_params = {} + for key, value in get_mo_convert_params().items(): + all_params.update(value) + + # check that there are no unknown params provided + for key, value in args_string.items(): + if key not in argv and key not in all_params.keys(): + raise Error("Unrecognized argument: {}".format(key)) + + # Non string params like input_model or extensions are ignored by parse_args() + # so we need to set them in argv separately + if value is not None and not check_values_equal(getattr(argv, key, None), value): + setattr(argv, key, value) + else: + argv = cli_parser.parse_args() + return argv + + +def update_args_for_saved_model_dir(args: dict): + """ + If directory is set in 'input_model' argument, the directory is considered as TF saved model. + In this case this method updates args and moves saved model directory to 'saved_model_dir' param. + :param args: dictionary with arguments from user + """ + if 'saved_model_dir' in args and args['saved_model_dir'] is not None and \ + 'input_model' in args and args['input_model'] is not None: + raise Error("Both \"input_model\" and \"saved_model_dir\" are defined. " + "Please specify either \"input_model\" or \"saved_model_dir\" directory.") + + if 'input_model' in args and isinstance(args['input_model'], (str, Path)) and os.path.isdir(args['input_model']): + args['saved_model_dir'] = args['input_model'] + args['input_model'] = None + + +def silent_is_false(argv: argparse.Namespace): + return argv is not None and hasattr(argv, 'silent') and argv.silent is False + + +def framework_is_tf(args, argv): + if input_model_is_object(args) and check_model_object(args) == "tf": + return True + if argv is not None: + is_tf, _, _, _, _ = deduce_legacy_frontend_by_namespace(argv) + return is_tf + return False + + +def _convert(cli_parser: argparse.ArgumentParser, args, python_api_used): + if 'help' in args and args['help']: + show_mo_convert_help() + return None, None + framework = None + simplified_ie_version = VersionChecker().get_ie_simplified_version() + telemetry = tm.Telemetry(tid=get_tid(), app_name='Model Conversion API', app_version=simplified_ie_version) + telemetry.start_session('mo') + telemetry.send_event('mo', 'version', simplified_ie_version) + # Initialize logger with 'ERROR' as default level to be able to form nice messages + # before arg parser deliver log_level requested by user + init_logger('ERROR', False) + argv = None + try: + model_framework = None + inp_model_is_object = input_model_is_object(args) + if inp_model_is_object: + model_framework = check_model_object(args) + if model_framework == "pytorch": + example_inputs = None + if 'example_input' in args and args['example_input'] is not None: + example_inputs = args['example_input'] + elif 'example_inputs' in args: + raise AssertionError( + "'example_inputs' argument is not recognized, maybe you meant to provide 'example_input'?") + + decoder = get_pytorch_decoder(args['input_model'], parse_input_shapes(args), example_inputs, args) + if model_framework == "paddle": + example_inputs = None + if 'example_input' in args and args['example_input'] is not None: + example_inputs = args['example_input'] + + example_outputs = None + if 'example_output' in args and args['example_output'] is not None: + example_outputs = args['example_output'] + paddle_runtime_converter = paddle_frontend_converter(args['input_model'], example_inputs, + example_outputs) + pdmodel = paddle_runtime_converter.convert_paddle_to_pdmodel() + args['input_model'] = pdmodel + args['framework'] = model_framework + + update_args_for_saved_model_dir(args) + + argv = pack_params_to_args_namespace(args, cli_parser) + + argv.feManager = FrontEndManager() + frameworks = list(set(['tf', 'caffe', 'mxnet', 'kaldi', 'onnx'] + (get_available_front_ends(argv.feManager) + if argv.feManager else []))) + framework = argv.framework if hasattr(argv, 'framework') and argv.framework is not None else framework + if framework is not None: + assert framework in frameworks, "error: argument \"framework\": invalid choice: '{}'. " \ + "Expected one of {}.".format(framework, frameworks) + setattr(argv, 'framework', framework) + + # send telemetry with params info + send_params_info(argv, cli_parser) + + non_default_params = get_non_default_params(argv, cli_parser) + check_legacy_args(non_default_params, python_api_used) + argv.is_python_api_used = python_api_used + + if inp_model_is_object: + argv.model_name = "model" + if not hasattr(argv, "model_name") or argv.model_name is None: + argv.model_name = get_model_name_from_args(argv) + + if model_framework is not None: + if argv.framework is not None: + if argv.framework != model_framework: + raise Error("Provided model does not correspond to provided framework. The provided " + "framework is {}, the model type is {} which is expected to be {} framework.".format( + argv.framework, + type(argv.input_model), + model_framework)) + else: + argv.framework = model_framework + + ov_model, legacy_path = driver(argv, {"conversion_parameters": non_default_params}) + + if inp_model_is_object and model_framework == "paddle": + if paddle_runtime_converter: + paddle_runtime_converter.destroy() + + # add MO meta data to model + ov_model.set_rt_info(get_rt_version(), "Runtime_version") + ov_model.set_rt_info(str(legacy_path), "legacy_frontend") + for key, value in non_default_params.items(): + ov_model.set_rt_info(str(value), ["conversion_parameters", str(key)]) + + if silent_is_false(argv) or not python_api_used: + if 'compress_to_fp16' in argv and argv.compress_to_fp16: + print(get_compression_message()) + + ov_update_message = get_ov_update_message() + ov_api20_message = get_ov_api20_message() + if ov_update_message is not None: + print(ov_update_message) + if ov_api20_message is not None and ov_model is not None: + print(ov_api20_message) + is_fallback = getattr(argv, 'is_fallback', False) + if not argv.use_legacy_frontend and framework_is_tf(args, argv) and not is_fallback: + # now TF FE is default frontend for TensorFlow models conversion + print(get_tf_fe_message()) + + send_conversion_result('success') + return ov_model, argv + + except Exception as e: + if silent_is_false(argv) or not python_api_used: + if isinstance(e, (FileNotFoundError, NotADirectoryError)): + log.error('File {} was not found'.format(str(e).split('No such file or directory:')[1])) + log.debug(traceback.format_exc()) + elif isinstance(e, Error): + log.error(e) + log.debug(traceback.format_exc()) + elif isinstance(e, FrameworkError): + log.error(e, extra={'framework_error': True}) + log.debug(traceback.format_exc()) + else: + log.error("-------------------------------------------------") + log.error("----------------- INTERNAL ERROR ----------------") + log.error("Unexpected exception happened.") + log.error("Please contact Model Conversion API developers and forward the following information:") + log.error(str(e)) + log.error(traceback.format_exc()) + log.error("---------------- END OF BUG REPORT --------------") + log.error("-------------------------------------------------") + is_fallback = getattr(argv, 'is_fallback', False) if argv is not None else False + if not argv.use_legacy_frontend and framework_is_tf(args, argv) and not is_fallback: + print(get_try_legacy_fe_message()) + + send_conversion_result('fail') + if python_api_used: + raise e.with_traceback(None) + else: + return None, argv diff --git a/tools/mo/openvino/tools/mo/utils/versions_checker.py b/tools/ovc/openvino/tools/ovc/environment_setup_utils.py similarity index 96% rename from tools/mo/openvino/tools/mo/utils/versions_checker.py rename to tools/ovc/openvino/tools/ovc/environment_setup_utils.py index df7b21534e9..0406341587e 100644 --- a/tools/mo/openvino/tools/mo/utils/versions_checker.py +++ b/tools/ovc/openvino/tools/ovc/environment_setup_utils.py @@ -1,6 +1,9 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import os import sys @@ -19,7 +22,7 @@ def get_imported_module_version(imported_module): installed_version = getattr(imported_module, attr, None) if isinstance(installed_version, str): return installed_version - else: + else: installed_version = None if installed_version is None: diff --git a/tools/ovc/openvino/tools/ovc/error.py b/tools/ovc/openvino/tools/ovc/error.py new file mode 100644 index 00000000000..f0af0545333 --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/error.py @@ -0,0 +1,56 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + +import re + +class BasicError(Exception): + """ Base class for all exceptions in Model Conversion API + + It operates like Exception but when it is converted to str, + it formats string as args[0].format(*args[1:]), where + args are arguments provided when an exception instance is + created. + """ + + def __str__(self): + if len(self.args) <= 1: + return Exception.__str__(self) + return self.args[0].format(*self.args[1:]) # pylint: disable=unsubscriptable-object + + +class FrameworkError(BasicError): + """ User-friendly error: raised when the error on the framework side. """ + pass + + +class Error(BasicError): + """ User-friendly error: raised when the error on the user side. """ + pass + + +class InternalError(BasicError): + """ Not user-friendly error: user cannot fix it and it points to the bug inside MO. """ + pass + + +def classify_error_type(e): + patterns = [ + # Example: No module named 'openvino._offline_transformations.offline_transformations_api' + r"No module named \'\S+\'", + # Example: cannot import name 'IECore' from 'openvino.inference_engine' (unknown location) + r"cannot import name \'\S+\'", + ] + error_message = str(e) + for pattern in patterns: + m = re.search(pattern, error_message) + if m: + return m.group(0) + return "undefined" + + +def legacy_path_error(functionality_description): + raise Exception("{}Please try to install openvino-dev and use convert_model() " + "from openvino.tools.mo.".format(functionality_description)) diff --git a/tools/ovc/openvino/tools/ovc/get_ov_update_message.py b/tools/ovc/openvino/tools/ovc/get_ov_update_message.py new file mode 100644 index 00000000000..899e93d3a0f --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/get_ov_update_message.py @@ -0,0 +1,51 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + +import datetime + +msg_fmt = 'Check for a new version of Intel(R) Distribution of OpenVINO(TM) toolkit here {0} ' \ + 'or on https://github.com/openvinotoolkit/openvino' + + +def get_ov_update_message(): + expected_update_date = datetime.date(year=2023, month=12, day=1) + current_date = datetime.date.today() + + link = 'https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit/download.html?cid=other&source=prod&campid=ww_2023_bu_IOTG_OpenVINO-2023-0&content=upg_all&medium=organic' + + return msg_fmt.format(link) if current_date >= expected_update_date else None + + +def get_ov_api20_message(): + link = "https://docs.openvino.ai/2023.0/openvino_2_0_transition_guide.html" + message = '[ INFO ] The model was converted to IR v11, the latest model format that corresponds to the source DL framework ' \ + 'input/output format. While IR v11 is backwards compatible with OpenVINO Inference Engine API v1.0, ' \ + 'please use API v2.0 (as of 2022.1) to take advantage of the latest improvements in IR v11.\n' \ + 'Find more information about API v2.0 and IR v11 at {}'.format(link) + + return message + + +def get_tf_fe_message(): + link = "https://docs.openvino.ai/2023.0/openvino_docs_MO_DG_TensorFlow_Frontend.html" + message = '[ INFO ] IR generated by new TensorFlow Frontend is compatible only with API v2.0. Please make sure to use API v2.0.\n' \ + 'Find more information about new TensorFlow Frontend at {}'.format(link) + + return message + + +def get_compression_message(): + link = "https://docs.openvino.ai/2023.0/openvino_docs_MO_DG_FP16_Compression.html" + message = '[ INFO ] Generated IR will be compressed to FP16. ' \ + 'If you get lower accuracy, please consider disabling compression ' \ + 'by removing argument "compress_to_fp16" or set it to false "compress_to_fp16=False".\n' \ + 'Find more information about compression to FP16 at {}'.format(link) + return message + + +def get_try_legacy_fe_message(): + message = '[ INFO ] You can also try to install openvino-dev and use convert_model from openvino.tools.mo.\n' + return message diff --git a/tools/mo/openvino/tools/mo/utils/help.py b/tools/ovc/openvino/tools/ovc/help.py similarity index 96% rename from tools/mo/openvino/tools/mo/utils/help.py rename to tools/ovc/openvino/tools/ovc/help.py index 9e6ebde120f..06b7b4aa264 100644 --- a/tools/mo/openvino/tools/mo/utils/help.py +++ b/tools/ovc/openvino/tools/ovc/help.py @@ -1,13 +1,15 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors def get_convert_model_help_specifics(): - from openvino.tools.mo.utils.cli_parser import CanonicalizeTransformationPathCheckExistenceAction, \ + from openvino.tools.ovc.cli_parser import CanonicalizeTransformationPathCheckExistenceAction, \ CanonicalizePathCheckExistenceAction, CanonicalizeExtensionsPathCheckExistenceAction, \ CanonicalizePathCheckExistenceIfNeededAction, readable_file_or_dir, readable_dirs_or_files_or_empty, \ check_positive - from openvino.tools.mo.utils.version import VersionChecker + from openvino.tools.ovc.version import VersionChecker return { 'input_model': {'description': @@ -127,7 +129,7 @@ def get_convert_model_help_specifics(): {'action': CanonicalizePathCheckExistenceIfNeededAction}, 'version': {'action': 'version', - 'version': 'Version of Model Optimizer is: {}'.format(VersionChecker().get_mo_version())}, + 'version': 'Version of Model Optimizer is: {}'.format(VersionChecker().get_ie_version())}, 'scale': {'type': float, 'aliases': {'-s'}}, @@ -143,7 +145,7 @@ def get_convert_model_help_specifics(): # TODO: remove this when internal converting of params to string is removed def get_to_string_methods_for_params(): - from openvino.tools.mo.utils.cli_parser import path_to_str_or_object, str_list_to_str, \ + from openvino.tools.ovc.cli_parser import path_to_str_or_object, str_list_to_str, \ mean_scale_value_to_str, source_target_layout_to_str, layout_param_to_str, transform_param_to_str, \ extensions_to_str_or_extensions_class, batch_to_int, transformations_config_to_str return { diff --git a/tools/ovc/openvino/tools/ovc/logger.py b/tools/ovc/openvino/tools/ovc/logger.py new file mode 100644 index 00000000000..8f914f1e32d --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/logger.py @@ -0,0 +1,163 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + +import importlib.util +import logging as log +import os +import re +import sys +from argparse import Namespace +from copy import copy + +# WA for abseil bug that affects logging while importing TF starting 1.14 version +# Link to original issue: https://github.com/abseil/abseil-py/issues/99 +if importlib.util.find_spec('absl') is not None: + import absl.logging + + log.root.removeHandler(absl.logging._absl_handler) + +handler_num = 0 + + +class LvlFormatter(log.Formatter): + format_dict = { + log.DEBUG: "[ %(asctime)s ] [ %(levelname)s ] [ %(module)s:%(lineno)d ] %(msg)s", + log.INFO: "[ %(levelname)s ] %(msg)s", + log.WARNING: "[ WARNING ] %(msg)s", + log.ERROR: "[ %(levelname)s ] %(msg)s", + log.CRITICAL: "[ %(levelname)s ] %(msg)s", + 'framework_error': "[ FRAMEWORK ERROR ] %(msg)s", + 'analysis_info': "[ ANALYSIS INFO ] %(msg)s" + } + + def __init__(self, lvl, fmt=None): + log.Formatter.__init__(self, fmt) + self.lvl = lvl + + def format(self, record: log.LogRecord): + if self.lvl == 'DEBUG': + self._style._fmt = self.format_dict[log.DEBUG] + else: + self._style._fmt = self.format_dict[record.levelno] + if 'is_warning' in record.__dict__.keys(): + self._style._fmt = self.format_dict[log.WARNING] + if 'framework_error' in record.__dict__.keys(): + self._style._fmt = self.format_dict['framework_error'] + if 'analysis_info' in record.__dict__.keys(): + self._style._fmt = self.format_dict['analysis_info'] + return log.Formatter.format(self, record) + + +class TagFilter(log.Filter): + def __init__(self, regex: str): + self.regex = regex + + def filter(self, record: log.LogRecord): + if record.__dict__['funcName'] == 'load_grammar': # for nx not to log into our logs + return False + if self.regex: + if 'tag' in record.__dict__.keys(): + tag = record.__dict__['tag'] + return re.findall(self.regex, tag) + else: + return False + return True # if regex wasn't set print all logs + + +def init_logger(lvl: str, silent: bool): + global handler_num + log_exp = os.environ.get('MO_LOG_PATTERN') + if silent: + lvl = 'ERROR' + fmt = LvlFormatter(lvl=lvl) + handler = log.StreamHandler() + handler.setFormatter(fmt) + logger = log.getLogger() + logger.setLevel(lvl) + logger.addFilter(TagFilter(regex=log_exp)) + if handler_num == 0 and len(logger.handlers) == 0: + logger.addHandler(handler) + handler_num += 1 + +def get_logger_state(): + logger = log.getLogger() + return logger.level, copy(logger.filters), copy(logger.handlers) + +def restore_logger_state(state: tuple): + level, filters, handlers = state + logger = log.getLogger() + logger.setLevel(level) + logger.filters = filters + logger.handlers = handlers + + +def progress_bar(function: callable): + """ + Decorator for model conversion pipeline progress display + Works in combination with function: mo.utils.class_registration.apply_transform + """ + + def wrapper(*args, **kwargs): + for arg in ['graph', 'curr_transform_num', 'num_transforms']: + msg = 'Progress bar decorator is enabled for Model Conversion API transformation applying cycle only. ' \ + 'Argument `{}` {}' + + assert arg in kwargs, msg.format(arg, 'is missing') + assert kwargs[arg] is not None, msg.format(arg, 'should not be None') + + if 'progress' in kwargs['graph'].graph['cmd_params'] and kwargs['graph'].graph['cmd_params'].progress: + bar_len = 20 + total_replacers_count = kwargs['num_transforms'] + + def progress(i): + return int((i + 1) / total_replacers_count * bar_len) + + def percent(i): + return (i + 1) / total_replacers_count * 100 + + end = '' if not kwargs['graph'].graph['cmd_params'].stream_output else '\n' + curr_i = kwargs['curr_transform_num'] + print('\rProgress: [{:{}}]{:>7.2f}% done'.format('.' * progress(curr_i), bar_len, percent(curr_i)), end=end) + + sys.stdout.flush() + + function(*args, **kwargs) + + return wrapper + +def progress_printer(argv: Namespace): + """ + A higher-order factory function returning a configurable callback displaying a progress bar + Depending on the configuration stored in 'argv' the progress bar can be one-line, multi-line, or silent. + """ + def _progress_bar(progress, total, completed, endline): + bar_len = 20 + + def dots(): + return '.' * int(progress * bar_len) + + print('\rProgress: [{:{}}]{:>7.2f}% done'.format(dots(), bar_len, progress*100), end=endline) + sys.stdout.flush() + + def no_progress_bar(progress, total, completed): + """ A 'dummy' progressbar which doesn't print anything """ + pass + + def oneline_progress_bar(progress, total, completed): + """ A callback that always prints the progress in the same line (mimics real GUI progress bar)""" + _progress_bar(progress, total, completed, '') + + def newline_progress_bar(progress, total, completed): + """ A callback that prints an updated progress bar in separate lines """ + _progress_bar(progress, total, completed, '\n') + + if "progress" in argv and argv.progress: + if "stream_output" in argv and argv.stream_output: + return newline_progress_bar + else: + return oneline_progress_bar + else: + return no_progress_bar diff --git a/tools/ovc/openvino/tools/ovc/main.py b/tools/ovc/openvino/tools/ovc/main.py new file mode 100644 index 00000000000..c61f8b3b419 --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/main.py @@ -0,0 +1,38 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import argparse +import os +import sys + +try: + import openvino_telemetry as tm +except ImportError: + import openvino.tools.ovc.telemetry_stub as tm +from openvino.tools.ovc.convert_impl import _convert +from openvino.tools.ovc.version import VersionChecker + +# pylint: disable=no-name-in-module,import-error +from openvino.runtime import serialize + + +def main(): + from openvino.tools.ovc.cli_parser import get_all_cli_parser + ngraph_function, argv = _convert(get_all_cli_parser(), {}, False) + if ngraph_function is None: + return 1 + + output_dir = argv.output_dir if argv.output_dir != '.' else os.getcwd() + model_path_no_ext = os.path.normpath(os.path.join(output_dir, argv.model_name)) + model_path = model_path_no_ext + '.xml' + + serialize(ngraph_function, model_path.encode('utf-8'), model_path.replace('.xml', '.bin').encode('utf-8')) + + print('[ SUCCESS ] Generated IR version {} model.'.format(VersionChecker().get_ie_simplified_version())) + print('[ SUCCESS ] XML file: {}'.format(model_path)) + print('[ SUCCESS ] BIN file: {}'.format(model_path.replace('.xml', '.bin'))) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/mo/openvino/tools/mo/moc_frontend/__init__.py b/tools/ovc/openvino/tools/ovc/moc_frontend/__init__.py similarity index 68% rename from tools/mo/openvino/tools/mo/moc_frontend/__init__.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/__init__.py index cddd115d397..f66616f1411 100644 --- a/tools/mo/openvino/tools/mo/moc_frontend/__init__.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/__init__.py @@ -1,2 +1,5 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors diff --git a/tools/mo/openvino/tools/mo/moc_frontend/analysis.py b/tools/ovc/openvino/tools/ovc/moc_frontend/analysis.py similarity index 95% rename from tools/mo/openvino/tools/mo/moc_frontend/analysis.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/analysis.py index cc4d99ed794..eed0d9a73b1 100644 --- a/tools/mo/openvino/tools/mo/moc_frontend/analysis.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/analysis.py @@ -1,9 +1,12 @@ # Copyright (C) 2022 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import json from openvino.runtime import PartialShape, Model, Type # pylint: disable=no-name-in-module,import-error -from openvino.runtime.utils.types import get_dtype +from openvino.tools.ovc.types import get_dtype def json_model_analysis_dump(framework_model: Model): diff --git a/tools/mo/openvino/tools/mo/moc_frontend/check_config.py b/tools/ovc/openvino/tools/ovc/moc_frontend/check_config.py similarity index 92% rename from tools/mo/openvino/tools/mo/moc_frontend/check_config.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/check_config.py index 3b51480d16a..23b67ef815f 100644 --- a/tools/mo/openvino/tools/mo/moc_frontend/check_config.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/check_config.py @@ -1,11 +1,19 @@ # Copyright (C) 2022-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import argparse from pathlib import Path -from openvino.tools.mo.utils import import_extensions -from openvino.tools.mo.utils.error import Error +from openvino.tools.ovc.error import Error +import os + + +def default_path(): + EXT_DIR_NAME = '.' + return os.path.abspath(os.getcwd().join(EXT_DIR_NAME)) def any_extensions_used(argv: argparse.Namespace): @@ -22,7 +30,7 @@ def any_extensions_used(argv: argparse.Namespace): if not isinstance(ext, str): has_non_str_objects = True continue - if len(ext) == 0 or ext == import_extensions.default_path(): + if len(ext) == 0 or ext == default_path(): continue has_non_default_path = True @@ -38,7 +46,7 @@ def legacy_extensions_used(argv: argparse.Namespace): for extension in extensions: if not isinstance(extension, str): continue - if extension == import_extensions.default_path(): + if extension == default_path(): continue if not Path(extension).is_file(): legacy_ext_counter += 1 diff --git a/tools/mo/openvino/tools/mo/moc_frontend/extractor.py b/tools/ovc/openvino/tools/ovc/moc_frontend/extractor.py similarity index 94% rename from tools/mo/openvino/tools/mo/moc_frontend/extractor.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/extractor.py index 97effaeaa7a..9c2ff255b9c 100644 --- a/tools/mo/openvino/tools/mo/moc_frontend/extractor.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/extractor.py @@ -1,6 +1,9 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import re from enum import Enum @@ -8,8 +11,18 @@ import numpy as np from openvino._pyopenvino import Place, PartialShape from openvino.frontend import InputModel # pylint: disable=no-name-in-module,import-error -from openvino.tools.mo.front.extractor import raise_no_node, raise_node_name_collision -from openvino.tools.mo.utils.error import Error +from openvino.tools.ovc.error import Error + + +def raise_no_node(node_name: str): + raise Error('No node with name {}'.format(node_name)) + + +def raise_node_name_collision(node_name: str, found_nodes: list): + raise Error('Name collision was found, there are several nodes for mask "{}": {}. ' + 'If your intention was to specify port for node, please instead specify node names connected to ' + 'this port. If your intention was to specify the node name, please add port to the node ' + 'name'.format(node_name, found_nodes)) class IOType(Enum): @@ -91,7 +104,7 @@ def decode_name_with_port( else: return node.get_input_port(input_port_index=int(port_index)) else: - None + return None regexp_post = r"(.+):(\d+)" match = re.search(regexp_post, node_name) @@ -153,12 +166,12 @@ def fe_input_user_data_repack( Transforms node names to node ids. :param input_model: current input model :param input_user_shapes: data structure representing user input cutting request. It may be: - # None value if user did not provide neither --input nor --input_shape keys + # None value if user did not provide neither "input" nor "input_shape" keys # list instance which contains input layer names with or without ports if user provided - only --input key + only "input" key # dict instance which contains input layer names with or without ports as keys and shapes as - values if user provided both --input and --input_shape - # np.ndarray if user provided only --input_shape key + values if user provided both "input" and "input_shape" + # np.ndarray if user provided only "input_shape" key :param freeze_placeholder: dictionary with placeholder names as keys and freezing value as values :param input_user_data_types: dictionary with input nodes and its data types :return: restructured input shapes and freeze placeholder shapes information @@ -188,7 +201,7 @@ def fe_input_user_data_repack( _input_shapes = [] _input_names = [] model_inputs = input_model.get_inputs() - + if isinstance(input_user_shapes, list) and len(input_user_shapes) > 1 and isinstance(input_user_shapes[0], PartialShape): for shape in input_user_shapes: @@ -232,7 +245,7 @@ def fe_input_user_data_repack( elif isinstance(input_user_shapes, PartialShape): # this branch covers the single use of `input_shape` without `input` option # but it can be used along with `freeze_placeholder_with_value` option - # for example, --input_shape [3] --freeze_placeholder_with_value "is_training->False" + # for example, input_shape [3] freeze_placeholder_with_value "is_training->False" # means the model has two inputs: one is is_training to be frozen, the other to re-write the shape # NOTE: the logic relies on parameters with the single name frozen_names = freeze_placeholder.keys() @@ -415,8 +428,8 @@ def convert_params_lists_to_dicts(input_model, # unnamed_freeze_placeholders is always list, it is not empty only if unnamed inputs were used. for value in unnamed_freeze_placeholders: assert isinstance(value, list), "Got incorrect format of input values. " \ - "Expected list, " \ - "got {}.".format(type(value)) + "Expected list, " \ + "got {}.".format(type(value)) inp_name = find_first_unused_input(model_inputs, freeze_placeholder, {}, "input value") freeze_placeholder[inp_name] = value diff --git a/tools/mo/openvino/tools/mo/moc_frontend/layout_utils.py b/tools/ovc/openvino/tools/ovc/moc_frontend/layout_utils.py similarity index 94% rename from tools/mo/openvino/tools/mo/moc_frontend/layout_utils.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/layout_utils.py index ab06282e633..eb75ba02333 100644 --- a/tools/mo/openvino/tools/mo/moc_frontend/layout_utils.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/layout_utils.py @@ -1,11 +1,14 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + from typing import Callable from openvino.runtime import PartialShape # pylint: disable=no-name-in-module,import-error -from openvino.tools.mo.utils.error import Error -from openvino.tools.mo.utils.utils import refer_to_faq_msg +from openvino.tools.ovc.error import Error +from openvino.tools.ovc.utils import refer_to_faq_msg def update_layout_to_dict(inputs: list, layout: [list, dict], get_names_func: Callable): @@ -19,7 +22,7 @@ def update_layout_to_dict(inputs: list, layout: [list, dict], get_names_func: Ca if len(input_names) > 1: raise Error('Layout without name can be specified for models with only one input, ' 'but provided model has {} inputs: \'{}\'. ' - 'Please specify explicitly input/output name for --layout option' + 'Please specify explicitly input/output name for "layout" option' .format(len(input_names), input_names)) layout = { input_names[0]: { diff --git a/tools/mo/openvino/tools/mo/moc_frontend/serialize.py b/tools/ovc/openvino/tools/ovc/moc_frontend/moc_emit_ir.py similarity index 75% rename from tools/mo/openvino/tools/mo/moc_frontend/serialize.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/moc_emit_ir.py index 90b87f750fe..8c00e758754 100644 --- a/tools/mo/openvino/tools/mo/moc_frontend/serialize.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/moc_emit_ir.py @@ -1,23 +1,23 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import argparse -import os from openvino.runtime import Model # pylint: disable=no-name-in-module,import-error - -from openvino.tools.mo.back.preprocessing import apply_preprocessing -from openvino.tools.mo.utils.cli_parser import parse_transform +from openvino.tools.ovc.cli_parser import parse_transform +from openvino.tools.ovc.moc_frontend.preprocessing import apply_preprocessing def moc_emit_ir(ngraph_function: Model, argv: argparse.Namespace): - output_dir = argv.output_dir if argv.output_dir != '.' else os.getcwd() # Apply preprocessing (mean/scale/reverse_channels/convert_layout/etc) apply_preprocessing(ov_function=ngraph_function, argv=argv) # Apply transformations - from openvino.tools.mo.back.offline_transformations import apply_user_transformations, apply_moc_transformations, \ + from openvino.tools.ovc.moc_frontend.offline_transformations import apply_user_transformations, apply_moc_transformations, \ apply_moc_legacy_transformations, apply_fused_names_cleanup apply_moc_transformations(ngraph_function) @@ -33,7 +33,7 @@ def moc_emit_ir(ngraph_function: Model, argv: argparse.Namespace): apply_user_transformations(ngraph_function, parse_transform(argv.transform)) if argv.compress_to_fp16: - from openvino.tools.mo.back.offline_transformations import compress_model + from openvino.tools.ovc.moc_frontend.offline_transformations import compress_model compress_model(ngraph_function) apply_fused_names_cleanup(ngraph_function) diff --git a/tools/mo/openvino/tools/mo/back/offline_transformations.py b/tools/ovc/openvino/tools/ovc/moc_frontend/offline_transformations.py similarity index 53% rename from tools/mo/openvino/tools/mo/back/offline_transformations.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/offline_transformations.py index 9d270c32311..366e01d4290 100644 --- a/tools/mo/openvino/tools/mo/back/offline_transformations.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/offline_transformations.py @@ -1,14 +1,71 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import argparse from typing import List -from openvino.tools.mo.front.extractor import create_params_with_custom_types -from openvino.tools.mo.utils.cli_parser import parse_transform -from openvino.tools.mo.utils.error import Error +from openvino.tools.ovc.cli_parser import parse_transform +from openvino.tools.ovc.error import Error from openvino.runtime import Model + +def get_new_placeholder_name(node_id: str, is_out_port: bool = False, port: int = 0): + """ + Forms a name of new placeholder created by cutting a graph + :param node_id: a node name that is cut + :param is_out_port: it is True iff output port is cut + :param port: a port number + :return: a name of new placeholder created by cutting a graph + """ + port_type = '_out' if is_out_port else '' + return '{}/placeholder{}_port_{}'.format(node_id, port_type, port) + + +def create_params_with_custom_types(packed_user_shapes: [None, dict]): + """ + Compute a list of placeholder names for which an user specifies custom type + :param packed_user_shapes: packed data that contains input node names, + their port numbers, shapes and data types + :return: a list of placeholder names for which an user specifies custom type + Example of packed_user_shapes dictionary: + packed_user_shapes = + { + 'node_ID': + [ + {'shape': None, 'in': 0}, + {'shape': None, 'in': 1}, + ], + 'node_1_ID': + [ + {'shape': [1, 227, 227, 3], 'port': None, 'data_type': np.int32} + ], + 'node_2_ID': + [ + {'shape': None, 'out': 3} + ] + } + For which the function returns a list ['node_1_ID'] because this node only has custom data type + """ + if packed_user_shapes is None: + return [] + + params_with_custom_types = [] + for input_name in packed_user_shapes: + for desc in packed_user_shapes[input_name]: + p_name = input_name + if 'port' in desc and desc['port'] is None: # neither input nor output port specified + user_defined_type = desc.get('data_type', None) + else: # need to check the particular port the Parameter was created for + p_name = get_new_placeholder_name(input_name, 'out' in desc, + desc['out'] if 'out' in desc else desc['in']) + user_defined_type = desc.get('data_type', None) + if user_defined_type is not None: + params_with_custom_types.append(p_name) + return params_with_custom_types + def get_available_transformations(): try: from openvino._offline_transformations import apply_low_latency_transformation # pylint: disable=import-error,no-name-in-module @@ -54,7 +111,7 @@ def apply_fused_names_cleanup(func: object): def apply_offline_transformations(func: Model, argv: argparse.Namespace): - from openvino.tools.mo.back.preprocessing import apply_preprocessing # pylint: disable=no-name-in-module,import-error + from openvino.tools.ovc.moc_frontend.preprocessing import apply_preprocessing # pylint: disable=no-name-in-module,import-error # Apply preprocessing (mean/scale/reverse_channels/convert_layout/etc) apply_preprocessing(ov_function=func, argv=argv) diff --git a/tools/mo/openvino/tools/mo/moc_frontend/paddle_frontend_utils.py b/tools/ovc/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py similarity index 97% rename from tools/mo/openvino/tools/mo/moc_frontend/paddle_frontend_utils.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py index 58cd913740c..c87d924e308 100644 --- a/tools/mo/openvino/tools/mo/moc_frontend/paddle_frontend_utils.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py @@ -1,10 +1,14 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import os import sys import tempfile + class paddle_frontend_converter: def __init__(self, model, inputs=None, outputs=None): self.model = model diff --git a/tools/mo/openvino/tools/mo/moc_frontend/pipeline.py b/tools/ovc/openvino/tools/ovc/moc_frontend/pipeline.py similarity index 92% rename from tools/mo/openvino/tools/mo/moc_frontend/pipeline.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/pipeline.py index f41fff6aa31..54871c0f8c3 100644 --- a/tools/mo/openvino/tools/mo/moc_frontend/pipeline.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/pipeline.py @@ -1,6 +1,9 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import argparse import io import logging as log @@ -9,18 +12,34 @@ from copy import copy from typing import List import numpy as np +import os from openvino.frontend import FrontEnd, InputModel, NotImplementedFailure, \ Place # pylint: disable=no-name-in-module,import-error from openvino.runtime import PartialShape, Type # pylint: disable=no-name-in-module,import-error -from openvino.runtime.utils.types import get_element_type, \ +from openvino.tools.ovc.types import get_element_type, \ get_numpy_ctype # pylint: disable=no-name-in-module,import-error -from openvino.tools.mo.middle.passes.infer import validate_batch_in_shape -from openvino.tools.mo.moc_frontend.analysis import json_model_analysis_dump -from openvino.tools.mo.moc_frontend.extractor import fe_user_data_repack, convert_params_lists_to_dicts, fe_output_user_data_repack -from openvino.tools.mo.moc_frontend.layout_utils import update_layout_to_dict, get_dimension_index_by_label -from openvino.tools.mo.utils.class_registration import get_enabled_and_disabled_transforms -from openvino.tools.mo.utils.error import Error +from openvino.tools.ovc.moc_frontend.analysis import json_model_analysis_dump +from openvino.tools.ovc.moc_frontend.extractor import fe_user_data_repack, convert_params_lists_to_dicts, fe_output_user_data_repack +from openvino.tools.ovc.moc_frontend.layout_utils import update_layout_to_dict, get_dimension_index_by_label +from openvino.tools.ovc.error import Error +from openvino.tools.ovc.utils import np_map_cast, mo_array, validate_batch_in_shape + + +def get_enabled_and_disabled_transforms(): + """ + :return: tuple of lists with force enabled and disabled id of transformations. + """ + disabled_transforms = os.environ['MO_DISABLED_TRANSFORMS'] if 'MO_DISABLED_TRANSFORMS' in os.environ else '' + enabled_transforms = os.environ['MO_ENABLED_TRANSFORMS'] if 'MO_ENABLED_TRANSFORMS' in os.environ else '' + + assert isinstance(enabled_transforms, str) + assert isinstance(disabled_transforms, str) + + disabled_transforms = disabled_transforms.split(',') + enabled_transforms = enabled_transforms.split(',') + + return enabled_transforms, disabled_transforms def moc_pipeline(argv: argparse.Namespace, moc_front_end: FrontEnd): @@ -194,8 +213,6 @@ def moc_pipeline(argv: argparse.Namespace, moc_front_end: FrontEnd): input_model.set_element_type(place, ov_type) # prepare and cast value to dtype - from openvino.tools.mo.utils.type_utils import np_map_cast - from openvino.tools.mo.front.common.partial_infer.utils import mo_array if isinstance(value, list): casted_list = list() for v in mo_array(value): diff --git a/tools/mo/openvino/tools/mo/back/preprocessing.py b/tools/ovc/openvino/tools/ovc/moc_frontend/preprocessing.py similarity index 98% rename from tools/mo/openvino/tools/mo/back/preprocessing.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/preprocessing.py index c84ba887362..03eb97c28f3 100644 --- a/tools/mo/openvino/tools/mo/back/preprocessing.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/preprocessing.py @@ -1,6 +1,9 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import argparse import logging as log from copy import copy @@ -9,9 +12,9 @@ from openvino.preprocess import PrePostProcessor # pylint: disable=no-name-in-m # pylint: disable=no-name-in-module,import-error from openvino.runtime import Model, Layout, PartialShape, layout_helpers -from openvino.tools.mo.moc_frontend.layout_utils import update_layout_to_dict -from openvino.tools.mo.utils.error import Error -from openvino.tools.mo.utils.utils import refer_to_faq_msg +from openvino.tools.ovc.moc_frontend.layout_utils import update_layout_to_dict +from openvino.tools.ovc.error import Error +from openvino.tools.ovc.utils import refer_to_faq_msg def update_mean_scale_to_dict(input_nodes: list, mean_scale_val, scale): @@ -19,7 +22,7 @@ def update_mean_scale_to_dict(input_nodes: list, mean_scale_val, scale): Internal function. Updates mean/scale values from array to dictionary :param: input_nodes Inputs of model :param: mean_scale_val Parsed 'mean_scale_val' object from command line arguments - :param: scale Global scale factor for all inputs from --scale command line arguments + :param: scale Global scale factor for all inputs from scale command line arguments """ if not isinstance(mean_scale_val, dict): if len(mean_scale_val) != len(input_nodes): diff --git a/tools/mo/openvino/tools/mo/moc_frontend/pytorch_frontend_utils.py b/tools/ovc/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py similarity index 96% rename from tools/mo/openvino/tools/mo/moc_frontend/pytorch_frontend_utils.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py index f8419ae4edb..ae9973ebab8 100644 --- a/tools/mo/openvino/tools/mo/moc_frontend/pytorch_frontend_utils.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py @@ -1,13 +1,17 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import logging as log import numpy as np -from openvino.tools.mo.moc_frontend.shape_utils import get_static_shape -from openvino.tools.mo.utils.error import Error +from openvino.tools.ovc.moc_frontend.shape_utils import get_static_shape +from openvino.tools.ovc.error import Error from openvino.runtime import Tensor, Type, PartialShape -from openvino.runtime.utils.types import get_element_type_str -from openvino.tools.mo.utils.cli_parser import input_to_input_cut_info, input_shape_to_input_cut_info +from openvino.tools.ovc.types import get_element_type_str +from openvino.tools.ovc.cli_parser import input_to_input_cut_info, input_shape_to_input_cut_info + def get_pytorch_decoder(model, input_shape, example_inputs, args): diff --git a/tools/mo/openvino/tools/mo/moc_frontend/shape_utils.py b/tools/ovc/openvino/tools/ovc/moc_frontend/shape_utils.py similarity index 95% rename from tools/mo/openvino/tools/mo/moc_frontend/shape_utils.py rename to tools/ovc/openvino/tools/ovc/moc_frontend/shape_utils.py index 2b2d336a1da..9a7bb8db067 100644 --- a/tools/mo/openvino/tools/mo/moc_frontend/shape_utils.py +++ b/tools/ovc/openvino/tools/ovc/moc_frontend/shape_utils.py @@ -1,10 +1,13 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + import numpy as np from openvino.runtime import PartialShape, Dimension -from openvino.tools.mo.utils.error import Error -from openvino.tools.mo.utils.cli_parser import get_placeholder_shapes, split_shapes +from openvino.tools.ovc.error import Error +from openvino.tools.ovc.cli_parser import get_placeholder_shapes, split_shapes def get_static_shape(shape: [PartialShape, list, tuple], dynamic_value=None): diff --git a/tools/ovc/openvino/tools/ovc/ovc.py b/tools/ovc/openvino/tools/ovc/ovc.py new file mode 100755 index 00000000000..87b32da80e3 --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/ovc.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import sys + +if __name__ == "__main__": + from openvino.tools.ovc.telemetry_utils import init_mo_telemetry + from openvino.tools.ovc.main import main + + init_mo_telemetry() + sys.exit(main()) diff --git a/tools/mo/openvino/tools/mo/utils/telemetry_params.py b/tools/ovc/openvino/tools/ovc/telemetry_params.py similarity index 77% rename from tools/mo/openvino/tools/mo/utils/telemetry_params.py rename to tools/ovc/openvino/tools/ovc/telemetry_params.py index 7894a63b9f7..09eee1491ba 100644 --- a/tools/mo/openvino/tools/mo/utils/telemetry_params.py +++ b/tools/ovc/openvino/tools/ovc/telemetry_params.py @@ -1,6 +1,9 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# flake8: noqa +# mypy: ignore-errors + telemetry_params = { 'TID': "UA-17808594-29" } diff --git a/tools/ovc/openvino/tools/ovc/telemetry_stub.py b/tools/ovc/openvino/tools/ovc/telemetry_stub.py new file mode 100644 index 00000000000..0fccfa3beda --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/telemetry_stub.py @@ -0,0 +1,31 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + +class Telemetry(object): + """ + Stab file for the Telemetry class which is used when Telemetry class is not available. + """ + + def __init__(self, *arg, **kwargs): + pass + + def send_event(self, *arg, **kwargs): + pass + + def send_error(self, *arg, **kwargs): + pass + + def start_session(self, *arg, **kwargs): + pass + + def end_session(self, *arg, **kwargs): + pass + + def force_shutdown(self, *arg, **kwargs): + pass + + def send_stack_trace(self, *arg, **kwargs): + pass diff --git a/tools/ovc/openvino/tools/ovc/telemetry_utils.py b/tools/ovc/openvino/tools/ovc/telemetry_utils.py new file mode 100644 index 00000000000..b88685c4c8a --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/telemetry_utils.py @@ -0,0 +1,77 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + +import argparse +import numbers + +from openvino.runtime import get_version as get_rt_version +from openvino.tools.ovc.cli_parser import get_params_with_paths_list +from openvino.tools.ovc.telemetry_params import telemetry_params +from openvino.tools.ovc.utils import check_values_equal + +try: + import openvino_telemetry as tm +except ImportError: + import openvino.tools.ovc.telemetry_stub as tm + + +def init_mo_telemetry(): + _ = tm.Telemetry(tid=get_tid(), app_name='Model Conversion API', app_version=get_rt_version()) + + +def send_framework_info(framework: str): + """ + This function sends information about used framework. + :param framework: framework name. + """ + t = tm.Telemetry() + t.send_event('mo', 'framework', framework) + + +def get_tid(): + """ + This function returns the ID of the database to send telemetry. + """ + return telemetry_params['TID'] + + +def send_conversion_result(conversion_result: str, need_shutdown=False): + t = tm.Telemetry() + t.send_event('mo', 'conversion_result', conversion_result) + t.end_session('mo') + if need_shutdown: + t.force_shutdown(1.0) + + +def arg_to_str(arg): + # This method converts to string only known types, otherwise returns string with name of the type + from openvino.runtime import PartialShape, Shape, Type, Layout + if isinstance(arg, (PartialShape, Shape, Type, Layout)): + return str(arg) + if isinstance(arg, (str, numbers.Number, bool)): + return str(arg) + return str(type(arg)) + + +def send_params_info(argv: argparse.Namespace, cli_parser: argparse.ArgumentParser): + """ + This function sends information about used command line parameters. + :param argv: command line parameters. + :param cli_parser: command line parameters parser. + """ + t = tm.Telemetry() + params_with_paths = get_params_with_paths_list() + for arg in vars(argv): + arg_value = getattr(argv, arg) + if not check_values_equal(arg_value, cli_parser.get_default(arg)): + if arg in params_with_paths: + # If command line argument value is a directory or a path to file it is not sent + # as it may contain confidential information. "1" value is used instead. + param_str = arg + ":" + str(1) + else: + param_str = arg + ":" + arg_to_str(arg_value) + + t.send_event('mo', 'cli_parameters', param_str) diff --git a/tools/ovc/openvino/tools/ovc/types.py b/tools/ovc/openvino/tools/ovc/types.py new file mode 100644 index 00000000000..ec3e3436339 --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/types.py @@ -0,0 +1,159 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +"""Functions related to converting between Python and numpy types and openvino types.""" + +import logging +from typing import List, Union + +import numpy as np + +from openvino.runtime.exceptions import OVTypeError +from openvino.runtime import Node, Shape, Output, Type +from openvino.runtime.op import Constant + +log = logging.getLogger(__name__) + +TensorShape = List[int] +NumericData = Union[int, float, np.ndarray] +NumericType = Union[type, np.dtype] +ScalarData = Union[int, float] +NodeInput = Union[Node, NumericData] + +openvino_to_numpy_types_map = [ + (Type.boolean, bool), + (Type.f16, np.float16), + (Type.f32, np.float32), + (Type.f64, np.float64), + (Type.i8, np.int8), + (Type.i16, np.int16), + (Type.i32, np.int32), + (Type.i64, np.int64), + (Type.u8, np.uint8), + (Type.u16, np.uint16), + (Type.u32, np.uint32), + (Type.u64, np.uint64), + (Type.bf16, np.uint16), +] + +openvino_to_numpy_types_str_map = [ + ("boolean", bool), + ("f16", np.float16), + ("f32", np.float32), + ("f64", np.float64), + ("i8", np.int8), + ("i16", np.int16), + ("i32", np.int32), + ("i64", np.int64), + ("u8", np.uint8), + ("u16", np.uint16), + ("u32", np.uint32), + ("u64", np.uint64), +] + + +def get_element_type(data_type: NumericType) -> Type: + """Return an ngraph element type for a Python type or numpy.dtype.""" + if data_type is int: + log.warning("Converting int type of undefined bitwidth to 32-bit ngraph integer.") + return Type.i32 + + if data_type is float: + log.warning("Converting float type of undefined bitwidth to 32-bit ngraph float.") + return Type.f32 + + ov_type = next( + (ov_type for (ov_type, np_type) in openvino_to_numpy_types_map if np_type == data_type), + None, + ) + if ov_type: + return ov_type + + raise OVTypeError("Unidentified data type %s", data_type) + + +def get_element_type_str(data_type: NumericType) -> str: + """Return an ngraph element type string representation for a Python type or numpy dtype.""" + if data_type is int: + log.warning("Converting int type of undefined bitwidth to 32-bit ngraph integer.") + return "i32" + + if data_type is float: + log.warning("Converting float type of undefined bitwidth to 32-bit ngraph float.") + return "f32" + + ov_type = next( + (ov_type for (ov_type, np_type) in openvino_to_numpy_types_str_map if np_type == data_type), + None, + ) + if ov_type: + return ov_type + + raise OVTypeError("Unidentified data type %s", data_type) + + +def get_dtype(openvino_type: Type) -> np.dtype: + """Return a numpy.dtype for an openvino element type.""" + np_type = next( + (np_type for (ov_type, np_type) in openvino_to_numpy_types_map if ov_type == openvino_type), + None, + ) + + if np_type: + return np.dtype(np_type) + + raise OVTypeError("Unidentified data type %s", openvino_type) + + +def get_numpy_ctype(openvino_type: Type) -> type: + """Return numpy ctype for an openvino element type.""" + np_type = next( + (np_type for (ov_type, np_type) in openvino_to_numpy_types_map if ov_type == openvino_type), + None, + ) + + if np_type: + return np_type + + raise OVTypeError("Unidentified data type %s", openvino_type) + + +def get_ndarray(data: NumericData) -> np.ndarray: + """Wrap data into a numpy ndarray.""" + if type(data) == np.ndarray: + return data # type: ignore + return np.array(data) + + +def get_shape(data: NumericData) -> TensorShape: + """Return a shape of NumericData.""" + if type(data) == np.ndarray: + return data.shape # type: ignore + elif type(data) == list: + return [len(data)] # type: ignore + return [] + + +def make_constant_node(value: NumericData, dtype: Union[NumericType, Type] = None) -> Constant: + """Return an openvino Constant node with the specified value.""" + ndarray = get_ndarray(value) + if dtype is not None: + element_type = get_element_type(dtype) if isinstance(dtype, (type, np.dtype)) else dtype + else: + element_type = get_element_type(ndarray.dtype) + + return Constant(element_type, Shape(ndarray.shape), ndarray.flatten().tolist()) + + +def as_node(input_value: NodeInput) -> Node: + """Return input values as nodes. Scalars will be converted to Constant nodes.""" + if issubclass(type(input_value), Node): + return input_value + if issubclass(type(input_value), Output): + return input_value + return make_constant_node(input_value) + + +def as_nodes(*input_values: NodeInput) -> List[Node]: + """Return input values as nodes. Scalars will be converted to Constant nodes.""" + return [as_node(input_value) for input_value in input_values] diff --git a/tools/ovc/openvino/tools/ovc/utils.py b/tools/ovc/openvino/tools/ovc/utils.py new file mode 100644 index 00000000000..c2b23c78691 --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/utils.py @@ -0,0 +1,139 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + + +import os +import re +from typing import Iterable, Union + +import numpy as np +from openvino.tools.ovc.error import Error + +try: + import openvino_telemetry as tm +except ImportError: + import openvino.tools.ovc.telemetry_stub as tm + + +dynamic_dimension = np.ma.masked + + +def refer_to_faq_msg(question_num: int): + try: + t = tm.Telemetry() + t.send_event('mo', 'error_info', "faq:" + str(question_num)) + except Exception: + # Telemetry can be not initialized if it is used in MO IR Reader + pass + + return '\n For more information please refer to Model Conversion API FAQ, question #{0}. ' \ + '(https://docs.openvino.ai/2023.0/openvino_docs_MO_DG_prepare_model_Model_Optimizer_FAQ.html' \ + '?question={0}#question-{0})'.format(question_num) + + +def get_mo_root_dir(): + """ + Return the absolute path to the Model Conversion API root directory (where mo folder is located) + :return: path to the MO root directory + """ + return os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(os.path.realpath(__file__))), os.pardir)) + + +def check_values_equal(val1, val2): + # This method is needed to check equality of values where some values can be None + if val1 is None and val2 is None: + return True + if val1 is None: + return False + if val2 is None: + return False + return val1 == val2 + + +np_map_cast = {bool: lambda x: bool_cast(x), + np.int8: lambda x: np.int8(x), + np.int16: lambda x: np.int16(x), + np.int32: lambda x: np.int32(x), + np.int64: lambda x: np.int64(x), + np.uint8: lambda x: np.uint8(x), + np.uint16: lambda x: np.uint16(x), + np.uint32: lambda x: np.uint32(x), + np.uint64: lambda x: np.uint64(x), + np.float16: lambda x: np.float16(x), + np.float32: lambda x: np.float32(x), + np.double: lambda x: np.double(x), + str: lambda x: str(x)} + + +def bool_cast(x): + if isinstance(x, str): + return False if x.lower() in ['false', '0'] else True if x.lower() in ['true', '1'] else 'unknown_boolean_cast' + else: + return bool(x) + + +def mo_array(value: Union[Iterable[Union[float, int]], float, int], dtype=None) -> np.ndarray: + """ + This function acts in a same way as np.array except for the case when dtype is not provided + and np.array return fp64 array this function returns fp32 array + """ + x = np.array(value, dtype=dtype) + if not isinstance(value, np.ndarray) and x.dtype == np.float64 and dtype != np.float64: + x = x.astype(np.float32) + return x + + +def validate_batch_in_shape(shape, layer_name: str): + """ + Raises Error #39 if shape is not valid for setting batch size + Parameters + ---------- + shape: current shape of layer under validation + layer_name: name of layer under validation + """ + if len(shape) == 0 or (shape[0] is not dynamic_dimension and shape[0] not in (-1, 0, 1)): + raise Error(('The input layer {} has a shape {} defined in the model. \n\n' + + 'When you use "batch" option, Model Conversion API applies its value to the first ' + + 'element of the shape if it is equal to -1, 0 or 1. Otherwise, this is the ambiguous ' + + 'situation - it is not known in advance whether the layer has the batch ' + + 'dimension or not.\n\n For example, you want to set batch dimension equals 100 ' + + 'for the input layer "data" with shape (10,34). Although you can not use "batch", ' + + 'you should pass "input_shape=[100,34]" instead of "batch=100". \n\n' + + 'You can also specify batch dimension by setting "layout". \n\n') + .format(layer_name, shape)) + + +def deduce_legacy_frontend_by_namespace(argv): + if not hasattr(argv, 'framework') or not argv.framework: + if getattr(argv, 'saved_model_dir', None) or getattr(argv, 'input_meta_graph', None): + argv.framework = 'tf' + elif getattr(argv, 'input_symbol', None) or getattr(argv, 'pretrained_model_name', None): + argv.framework = 'mxnet' + elif getattr(argv, 'input_proto', None): + argv.framework = 'caffe' + elif argv.input_model is None: + raise Error('Path to input model is required: use "input_model".') + else: + argv.framework = guess_framework_by_ext(argv.input_model) + + return map(lambda x: argv.framework == x, ['tf', 'caffe', 'mxnet', 'kaldi', 'onnx']) + + +def guess_framework_by_ext(input_model_path: str) -> int: + if re.match(r'^.*\.caffemodel$', input_model_path): + return 'caffe' + elif re.match(r'^.*\.pb$', input_model_path): + return 'tf' + elif re.match(r'^.*\.pbtxt$', input_model_path): + return 'tf' + elif re.match(r'^.*\.params$', input_model_path): + return 'mxnet' + elif re.match(r'^.*\.nnet$', input_model_path): + return 'kaldi' + elif re.match(r'^.*\.mdl', input_model_path): + return 'kaldi' + elif re.match(r'^.*\.onnx$', input_model_path): + return 'onnx' diff --git a/tools/ovc/openvino/tools/ovc/version.py b/tools/ovc/openvino/tools/ovc/version.py new file mode 100644 index 00000000000..67fc31b82ec --- /dev/null +++ b/tools/ovc/openvino/tools/ovc/version.py @@ -0,0 +1,83 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# flake8: noqa +# mypy: ignore-errors + +import re + +from openvino.runtime import get_version as get_ie_version + + +def extract_release_version(version: str): + patterns = [ + # captures release version set by CI for example: '2021.1.0-1028-55e4d5673a8' + r"^([0-9]+).([0-9]+)*", + # captures release version generated by MO from release branch, for example: 'custom_releases/2021/1_55e4d567' + r"_releases/([0-9]+)/([0-9]+)_*" + ] + + for pattern in patterns: + m = re.search(pattern, version) + if m and len(m.groups()) == 2: + return m.group(1), m.group(2) + return None, None + + +def simplify_version(version: str): + release_version = extract_release_version(version) + if release_version == (None, None): + return "custom" + return "{}.{}".format(*release_version) + + +def get_simplified_ie_version(version=None): + from openvino.runtime import get_version + if version is None: + version = get_version() + + # To support legacy IE versions + m = re.match(r"^([0-9]+).([0-9]+).(.*)", version) + if m and len(m.groups()) == 3: + return simplify_version(m.group(3)) + return simplify_version(version) + + +def extract_hash_from_version(full_version: str): + res = re.findall(r'[-_]([a-f0-9]{7,40})', full_version) + if len(res) > 0: + return res[0] + else: + return None + + +class SingletonMetaClass(type): + def __init__(self, cls_name, super_classes, dic): + self.__single_instance = None + super().__init__(cls_name, super_classes, dic) + + def __call__(cls, *args, **kwargs): + if cls.__single_instance is None: + cls.__single_instance = super(SingletonMetaClass, cls).__call__(*args, **kwargs) + return cls.__single_instance + + +class VersionChecker(metaclass=SingletonMetaClass): + def __init__(self): + self.runtime_checked = False + self.mo_version = None + self.ie_version = None + self.mo_simplified_version = None + self.ie_simplified_version = None + + def get_ie_version(self): + if self.ie_version: + return self.ie_version + self.ie_version = get_ie_version() + return self.ie_version + + def get_ie_simplified_version(self): + if self.ie_simplified_version: + return self.ie_simplified_version + self.ie_simplified_version = get_simplified_ie_version() + return self.ie_simplified_version diff --git a/tools/ovc/unit_tests/__init__.py b/tools/ovc/unit_tests/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tools/ovc/unit_tests/moc_tf_fe/__init__.py b/tools/ovc/unit_tests/moc_tf_fe/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tools/ovc/unit_tests/moc_tf_fe/check_info_messages_test.py b/tools/ovc/unit_tests/moc_tf_fe/check_info_messages_test.py new file mode 100644 index 00000000000..9b08d9d35ef --- /dev/null +++ b/tools/ovc/unit_tests/moc_tf_fe/check_info_messages_test.py @@ -0,0 +1,134 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import argparse +import io +import os +import unittest +from contextlib import redirect_stdout +from unittest.mock import patch + +from openvino.tools.ovc.main import main +from openvino.tools.ovc.get_ov_update_message import get_tf_fe_message, get_compression_message +from openvino.tools.ovc.get_ov_update_message import get_try_legacy_fe_message + + +def arg_parse_helper(input_model, + use_legacy_frontend, + use_new_frontend, + input_model_is_text, + framework, + compress_to_fp16=False, + freeze_placeholder_with_value=None, + tensorflow_object_detection_api_pipeline_config=None): + path = os.path.dirname(__file__) + input_model = os.path.join(path, "test_models", input_model) + + return argparse.Namespace( + input_model=input_model, + use_legacy_frontend=use_legacy_frontend, + use_new_frontend=use_new_frontend, + framework=framework, + input_model_is_text=input_model_is_text, + log_level='INFO', + silent=True, + model_name=None, + transform=[], + scale=None, + output=None, + input=None, + input_shape=None, + batch=None, + input_checkpoint=None, + saved_model_dir=None, + input_meta_graph=None, + saved_model_tags=None, + output_dir='.', + mean_values=(), + scale_values=(), + layout={}, + source_layout={}, + target_layout={}, + freeze_placeholder_with_value=freeze_placeholder_with_value, + data_type=None, + tensorflow_custom_operations_config_update=None, + tensorflow_object_detection_api_pipeline_config=tensorflow_object_detection_api_pipeline_config, + compress_to_fp16=compress_to_fp16, + extensions=None + ) + + +class TestInfoMessagesTFFE(unittest.TestCase): + @patch('argparse.ArgumentParser.parse_args', + return_value=arg_parse_helper(input_model="model_int32.pbtxt", + use_legacy_frontend=False, use_new_frontend=True, + framework=None, input_model_is_text=True)) + def test_api20_only(self, mock_argparse): + f = io.StringIO() + with redirect_stdout(f): + main() + std_out = f.getvalue() + tf_fe_message_found = get_tf_fe_message() in std_out + assert tf_fe_message_found + + @patch('openvino.tools.ovc.convert_impl.driver', side_effect=Exception('MESSAGE')) + def run_fail_tf_fe(self, mock_driver): + from openvino.tools.ovc import convert_model + path = os.path.dirname(__file__) + convert_model(os.path.join(path, "test_models", "model_int32.pbtxt"), silent=False) + + def test_suggest_legacy_fe(self): + f = io.StringIO() + with redirect_stdout(f): + try: + self.run_fail_tf_fe() + except: + pass + std_out = f.getvalue() + assert get_try_legacy_fe_message() in std_out + + +class TestInfoMessagesTFFEWithFallback(unittest.TestCase): + @patch('argparse.ArgumentParser.parse_args', + return_value=arg_parse_helper(input_model="model_switch_merge.pbtxt", + use_legacy_frontend=False, use_new_frontend=False, + framework=None, input_model_is_text=True, + freeze_placeholder_with_value="is_training->False")) + def test_tf_fe_message_fallback(self, mock_argparse): + f = io.StringIO() + with redirect_stdout(f): + main() + std_out = f.getvalue() + tf_fe_message_found = get_try_legacy_fe_message() in std_out + assert not tf_fe_message_found, 'TF FE Info message is found for the fallback case' + + @patch('argparse.ArgumentParser.parse_args', + return_value=arg_parse_helper(input_model="model_int32.pbtxt", + use_legacy_frontend=False, use_new_frontend=True, + compress_to_fp16=True, + framework=None, input_model_is_text=True, + tensorflow_object_detection_api_pipeline_config="config.yml")) + def test_tf_fe_message_fallback(self, mock_argparse): + f = io.StringIO() + with redirect_stdout(f): + main() + std_out = f.getvalue() + tf_fe_message_found = "The provided option \"tensorflow_object_detection_api_pipeline_config\" " \ + "refers to legacy functionality. Please try to install openvino-dev and " \ + "use convert_model() from openvino.tools.mo." in std_out + assert not tf_fe_message_found, 'TF FE Info message is found for the fallback case' + + +class TestInfoMessagesCompressFP16(unittest.TestCase): + @patch('argparse.ArgumentParser.parse_args', + return_value=arg_parse_helper(input_model="model_int32.pbtxt", + use_legacy_frontend=False, use_new_frontend=True, + compress_to_fp16=True, + framework=None, input_model_is_text=True)) + def test_compress_to_fp16(self, mock_argparse): + f = io.StringIO() + with redirect_stdout(f): + main() + std_out = f.getvalue() + fp16_compression_message_found = get_compression_message() in std_out + assert fp16_compression_message_found diff --git a/tools/ovc/unit_tests/moc_tf_fe/conversion_basic_models_test.py b/tools/ovc/unit_tests/moc_tf_fe/conversion_basic_models_test.py new file mode 100644 index 00000000000..047b05d842f --- /dev/null +++ b/tools/ovc/unit_tests/moc_tf_fe/conversion_basic_models_test.py @@ -0,0 +1,328 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import unittest + +import numpy as np +from generator import generator, generate + +from openvino.runtime import Core +from openvino.tools.ovc.convert import convert_model + + +@generator +class TestMoFreezePlaceholderTFFE(unittest.TestCase): + def basic(self, input_model, argv_input, inputs, dtype, expected, freeze_placeholder_with_value=None, + input_shape=None, only_conversion=False, input_model_is_text=True, use_new_frontend=True, + use_legacy_frontend=False): + path = os.path.dirname(__file__) + input_model = os.path.join(path, "test_models", input_model) + + try: + model = convert_model(input_model, input=argv_input, + freeze_placeholder_with_value=freeze_placeholder_with_value, + input_shape=input_shape, input_model_is_text=input_model_is_text, + use_new_frontend=use_new_frontend, use_legacy_frontend=use_legacy_frontend, + framework="tf") + except Exception as ex: + self.fail("Model conversion failed due to error: {}".format(ex)) + + if only_conversion: + return + + ie = Core() + exec_net = ie.compile_model(model, "CPU") + req = exec_net.create_infer_request() + results = req.infer(inputs) + values = list(results.values())[0] + if dtype is not None: + assert values.dtype == dtype + assert np.allclose(values, expected) + + @generate( + *[ + ( + "in1[1 4]->[1.0 2.0 3.0 4.0],in2[1 4]{f32}->[1.0 2.0 3.0 4.0]", + {}, + np.array([2.0, 4.0, 6.0, 8.0]), + np.float32, + ), + ( + "in2{f32}->[0.0 0.0 0.0 0.0]", + {"in1": np.array([[1.0, 2.0], [3.0, 4.0]])}, + np.array([[1.0, 2.0], [3.0, 4.0]]), + np.float32, + ), + ( + "in2->[1.0 15.0 15.5 1.0]", + {"in1": np.array([[2.0, 4.0], [12.0, 8.0]])}, + np.array([[3.0, 19.0], [27.5, 9.0]]), + np.float32, + ), + ( + "in1[1 4]{i32}->[1 2 3 4],in2[1 4]{i32}->[1 2 3 4]", + {}, + np.array([2.0, 4.0, 6.0, 8.0]), + np.int32, + ), + ], + ) + def test_fp32(self, input_freezing_value, inputs, expected, + dtype): + self.basic("model_fp32.pbtxt", input_freezing_value, inputs, dtype, expected) + + @generate( + *[ + ( + "in1[1 4]->[1 2 3 4],in2[1 4]{i32}->[1 2 3 4]", + {}, + np.array([1, 4, 9, 16]), + np.int32, + ), + ( + "in2->[2 5 6 7 3 2]", + {"in1": np.array([[2, 4, 1], [1, 2, 8]])}, + np.array([[4, 20, 6], [7, 6, 16]]), + np.int32, + ), + ], + ) + def test_int32(self, input_freezing_value, inputs, expected, + dtype=None): + self.basic("model_int32.pbtxt", input_freezing_value, inputs, dtype, expected) + + @generate( + *[ + ( + "in1[2]->[True False],in2[2]->[True True]", + {}, + np.array([True, False], dtype=bool), + bool, + ), + ( + "in2[2,3]->[True,True,False,True,True,False]", + {"in1": np.array([[False, True, True], [False, True, True]], dtype=bool)}, + np.array([[False, True, False], [False, True, False]], dtype=bool), + bool, + ), + ( + "in2[]->True", + {"in1": np.array([[False, True, True], [False, True, True]], dtype=bool)}, + np.array([[False, True, True], [False, True, True]], dtype=bool), + bool, + ), + ], + ) + def test_bool(self, input_freezing_value, inputs, expected, + dtype=None): + self.basic("model_bool.pbtxt", input_freezing_value, inputs, dtype, expected) + + @generate( + *[ + ( + "in1[3]->[1 2 3],in2[3]->[4 5 6],cond->False", + {}, + np.array([4, 5, 6], dtype=np.float32), + np.float32, + None + ), + ( + None, + {"in1": np.array([2.0, 4.0, 6.0], dtype=np.float32), + "in2": np.array([1.0, 3.0, 5.0], dtype=np.float32)}, + np.array([2, 4, 6], dtype=np.float32), + np.float32, + "cond->False", + None, + True # fill a bug to investigate why compilation of this model is hang on + ), + # case: input_shape + freeze_placeholder_with_value + ( + None, + {"in2": np.array([1.0, 3.0, 5.0], dtype=np.float32)}, + np.array([2, 4, 6], dtype=np.float32), + np.float32, + "in1->[2.0 4.0 6.0],cond->True", + "[3]", + False + ), + ], + ) + def test_bool2(self, input_freezing_value, inputs, expected, + dtype=None, freeze_placeholder_with_value=None, input_shape=None, only_conversion=False): + self.basic("model_bool2.pbtxt", input_freezing_value, inputs, dtype, expected, freeze_placeholder_with_value, + input_shape, only_conversion) + + @generate( + *[ + ( + "add:0[3],z", + {"add:0": np.array([4, 5, 6], dtype=np.float32), "z": np.array([1, 2, 3], dtype=np.float32)}, + np.array([4, 10, 18], dtype=np.float32), + np.float32, + None + ), + ( + "add:0{i32}[3],z{i32}", + {"add:0": np.array([4, 5, 6], dtype=np.int32), "z": np.array([1, 2, 3], dtype=np.int32)}, + np.array([4, 10, 18], dtype=np.int32), + np.int32, + None + ), + ], + ) + def test_cutting_fp32(self, input_freezing_value, inputs, expected, + dtype=None, freeze_placeholder_with_value=None, input_shape=None, only_conversion=False): + self.basic("model_three_inputs.pbtxt", input_freezing_value, inputs, dtype, expected, + freeze_placeholder_with_value, + input_shape, only_conversion, True) + + @generate( + *[ + ( + "x[1,4],y[4]", + {"x": np.array([[3, 2, 1, 5]], dtype=np.int32), "y": np.array([0, -1, -7, 8], dtype=np.int32)}, + np.array([[3, 1, -6, 13]], dtype=np.int32), + np.int32, + None + ), + ( + "x,y", + {"x": np.array([[-3, 20, 1]], dtype=np.int32), "y": np.array([[10, -11, -17]], dtype=np.int32)}, + np.array([[7, 9, -16]], dtype=np.int32), + np.int32, + None + ), + ( + "x", + {"x": np.array([[-3, 20, 1]], dtype=np.int32)}, + np.array([[-2, 22, 4], [1, 25, 7]], dtype=np.int32), + np.int32, + None + ), + ], + ) + def test_placeholder_with_default(self, inputs, inputs_data, expected, + dtype=None, freeze_placeholder_with_value=None, input_shape=None, + only_conversion=False): + self.basic("placeholder_with_default.pbtxt", inputs, inputs_data, dtype, expected, + freeze_placeholder_with_value, + input_shape, only_conversion, True) + + @generate( + *[ + ( + "x[4],y->2.0", + {"x": np.array([3, 2, 1, 5], dtype=np.float32)}, + np.array([6, 4, 2, 10], dtype=np.float32), + np.float32, + None + ), + ( + "x[1],y->[2.0,3.0]", + {"x": np.array([3], dtype=np.float32)}, + np.array([6, 9], dtype=np.float32), + np.float32, + None + ), + ], + ) + def test_freeze_placeholder_with_unknown_rank(self, inputs, inputs_data, expected, + dtype=None, freeze_placeholder_with_value=None, input_shape=None, + only_conversion=False): + self.basic("mul_with_unknown_rank_y.pbtxt", inputs, inputs_data, dtype, expected, + freeze_placeholder_with_value, + input_shape, only_conversion, True) + + + def test_conversion_failure_fallback_use_new_frontend(self): + with self.assertRaisesRegex(Exception, + "\[TensorFlow Frontend\] Internal error, no translator found for operation\(s\)\: " + "Enter\, Exit\, LoopCond\, Merge\, NextIteration\, Switch\, TensorArrayGatherV3\, " + "TensorArraySizeV3\, TensorArrayV3"): + self.basic("ctc_model_based.pbtxt", None, None, None, None, + None, None, True, True, True, False) + + @unittest.skip("88349: Fix auto-pruning in legacy FE") + def test_conversion_model_oneshot_iterator_use_legacy_frontend(self): + self.basic("model_oneshot_iterator.pbtxt", None, None, None, None, + None, None, True, True, False, True) + + def test_conversion_model_oneshot_iterator_default(self): + self.basic("model_oneshot_iterator.pbtxt", None, None, None, None, + None, None, True, True, False, False) + + @generate( + *[ + ( + "in2{f32}->[0.0 0.0 0.0 0.0]", + {"in1": np.array([[1.0, 2.0], [3.0, 4.0]])}, + np.array([[1.0, 2.0], [3.0, 4.0]]), + np.float32, + ), + ( + "in2->[1.0 15.0 15.5 1.0]", + {"in1": np.array([[2.0, 4.0], [12.0, 8.0]])}, + np.array([[3.0, 19.0], [27.5, 9.0]]), + np.float32, + ), + ], + ) + @unittest.skip("109220: Use generating script for this test model instead of Git LFS") + def test_conversion_model_with_non_standard_extension(self, input_freezing_value, inputs, expected, + dtype): + self.basic("model_fp32.frozen", input_freezing_value, inputs, dtype, expected, only_conversion=False, + input_model_is_text=False, use_new_frontend=True, + use_legacy_frontend=False) + + @unittest.skip("109220: Make TF FE to return the error") + def test_conversion_dir_model(self): + with self.assertRaisesRegex(Exception, + "Internal error or inconsistent input model: the frontend supports " + "only frozen binary protobuf format."): + self.basic(".", None, None, None, None, + only_conversion=True, input_model_is_text=False, use_new_frontend=True, + use_legacy_frontend=False) + + @generate( + *[ + ( + {"x": np.array([1, 2], dtype=np.int32), "y": np.array([4], dtype=np.int32)}, + np.array([-3, -2], dtype=np.int32), + np.int32, + ), + ( + {"x": np.array([20, 25], dtype=np.int32), "y": np.array([10], dtype=np.int32)}, + np.array([30, 35], dtype=np.int32), + np.int32, + ) + ], + ) + def test_conversion_pbtxt_model_with_inference(self, inputs, expected, dtype): + self.basic("model_with_if.pbtxt", None, inputs, dtype, expected, only_conversion=False, + input_model_is_text=False, use_new_frontend=True, use_legacy_frontend=False) + + @generate( + *[ + # new frontend + ( + "model_add_with_undefined_constant.pbtxt", + "x[2,3]", + {"x": np.array([[12, 13, 10], [11, 14, 16]], dtype=np.float32)}, + np.array([[12, 13, 10], [11, 14, 16]], dtype=np.float32), + np.float32, True, False, + ), + ( + "model_mul_with_undefined_constant.pbtxt", + "x[2]", + {"x": np.array([11, -12], dtype=np.int32)}, + np.array([0, 0], dtype=np.int32), + np.int32, True, False, + ), + ], + ) + def test_conversion_model_with_undefined_constant(self, model_name, argv_input, inputs, expected, dtype, + use_new_frontend, use_legacy_frontend): + self.basic(model_name, argv_input, inputs, dtype, expected, only_conversion=False, + input_model_is_text=True, use_new_frontend=use_new_frontend, use_legacy_frontend=use_legacy_frontend) diff --git a/tools/ovc/unit_tests/moc_tf_fe/conversion_incorrect_models_test.py b/tools/ovc/unit_tests/moc_tf_fe/conversion_incorrect_models_test.py new file mode 100644 index 00000000000..b702c7153b6 --- /dev/null +++ b/tools/ovc/unit_tests/moc_tf_fe/conversion_incorrect_models_test.py @@ -0,0 +1,42 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import tempfile +import unittest + +from generator import generator, generate + +from openvino.tools.ovc.convert import convert_model + + +@generator +class TestMoFreezePlaceholderTFFE(unittest.TestCase): + @generate( + *[ + # the default frontend + ( + False, False, None + ), + ( + False, False, "tf" + ), + # new frontend + ( + True, False, None + ), + ( + True, False, "tf" + ), + ], + ) + def test_conversion_fake_pb_model(self, use_new_frontend, use_legacy_frontend, framework): + with self.assertRaisesRegex(Exception, + "Internal error or inconsistent input model: the frontend supports frozen formats" + " \(.pb and .pbtxt\), SavedModel and MetaGraph \(.meta\), and v1 checkpoints."): + path = os.path.dirname(__file__) + input_model = os.path.join(path, "test_models", "fake.pb") + + convert_model(input_model, + use_new_frontend=use_new_frontend, use_legacy_frontend=use_legacy_frontend, + framework=framework) \ No newline at end of file diff --git a/tools/mo/unit_tests/moc_tf_fe/conversion_with_checkpoint_v1_test.py b/tools/ovc/unit_tests/moc_tf_fe/conversion_with_checkpoint_v1_test.py similarity index 100% rename from tools/mo/unit_tests/moc_tf_fe/conversion_with_checkpoint_v1_test.py rename to tools/ovc/unit_tests/moc_tf_fe/conversion_with_checkpoint_v1_test.py diff --git a/tools/mo/unit_tests/moc_tf_fe/conversion_with_layout_test.py b/tools/ovc/unit_tests/moc_tf_fe/conversion_with_layout_test.py similarity index 94% rename from tools/mo/unit_tests/moc_tf_fe/conversion_with_layout_test.py rename to tools/ovc/unit_tests/moc_tf_fe/conversion_with_layout_test.py index 0a3264e7fcf..07e3ec1717e 100644 --- a/tools/mo/unit_tests/moc_tf_fe/conversion_with_layout_test.py +++ b/tools/ovc/unit_tests/moc_tf_fe/conversion_with_layout_test.py @@ -10,8 +10,8 @@ from generator import generator, generate import openvino.runtime.opset11 as opset11 from openvino.runtime import Model from openvino.runtime import PartialShape, Dimension -from openvino.tools.mo.convert import convert_model -from openvino.tools.mo.utils.error import Error +from openvino.tools.ovc.convert import convert_model +from openvino.tools.ovc.error import Error @generator @@ -92,6 +92,6 @@ class TestConversionWithBatchAndLayout(unittest.TestCase): def test_model_expected_failure(self, model_name: str, batch: int, layout: str, refs_shapes: dict): # try to override batch size by default index (without specifying layout) with self.assertRaisesRegex(Error, - "When you use -b \(--batch\) option, Model Optimizer applies its value to the first " + "When you use \"batch\" option, Model Conversion API applies its value to the first " "element of the shape if it is equal to -1, 0 or 1\."): self.basic_check(model_name, batch, layout, refs_shapes) diff --git a/tools/ovc/unit_tests/moc_tf_fe/test_models/ctc_model_based.pbtxt b/tools/ovc/unit_tests/moc_tf_fe/test_models/ctc_model_based.pbtxt new file mode 100644 index 00000000000..935cb9190c3 --- /dev/null +++ b/tools/ovc/unit_tests/moc_tf_fe/test_models/ctc_model_based.pbtxt @@ -0,0 +1,5245 @@ +node { + name: "inputs" + op: "Placeholder" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "shape" + value { + shape { + dim { + size: 1 + } + dim { + size: 28 + } + dim { + size: 1 + } + dim { + size: 96 + } + } + } + } +} +node { + name: "reshape_to_rnn/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 3 + } + } + tensor_content: "\377\377\377\377\034\000\000\000`\000\000\000" + } + } + } +} +node { + name: "reshape_to_rnn" + op: "Reshape" + input: "inputs" + input: "reshape_to_rnn/shape" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range/start" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range/delta" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range" + op: "Range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range/start" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Rank" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range/delta" + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat/values_0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\001\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat/values_0" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/transpose" + op: "Transpose" + input: "reshape_to_rnn" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/concat" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "Tperm" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Shape" + op: "Shape" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/transpose" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice" + op: "StridedSlice" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Shape" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice/stack" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice/stack_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/ExpandDims/dim" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/ExpandDims" + op: "ExpandDims" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/ExpandDims/dim" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tdim" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/Const" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 96 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/concat" + op: "ConcatV2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/ExpandDims" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/Const" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/zeros/Const" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + } + float_val: 0.0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/zeros" + op: "Fill" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/concat" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/zeros/Const" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "index_type" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Shape_1" + op: "Shape" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/transpose" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1" + op: "StridedSlice" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Shape_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1/stack" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1/stack_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/time" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray" + op: "TensorArrayV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1" + attr { + key: "clear_after_read" + value { + b: true + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "dynamic_size" + value { + b: false + } + } + attr { + key: "element_shape" + value { + shape { + dim { + size: -1 + } + dim { + size: 96 + } + } + } + } + attr { + key: "identical_element_shapes" + value { + b: true + } + } + attr { + key: "tensor_array_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/dynamic_rnn/output_0" + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray_1" + op: "TensorArrayV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1" + attr { + key: "clear_after_read" + value { + b: true + } + } + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "dynamic_size" + value { + b: false + } + } + attr { + key: "element_shape" + value { + shape { + dim { + size: -1 + } + dim { + size: 96 + } + } + } + } + attr { + key: "identical_element_shapes" + value { + b: true + } + } + attr { + key: "tensor_array_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/dynamic_rnn/input_0" + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/Shape" + op: "Shape" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/transpose" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/strided_slice/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/strided_slice/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/strided_slice/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/strided_slice" + op: "StridedSlice" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/Shape" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/strided_slice/stack" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/strided_slice/stack_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/strided_slice/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/range/start" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/range/delta" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/range" + op: "Range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/range/start" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/strided_slice" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/range/delta" + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3" + op: "TensorArrayScatterV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/range" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/transpose" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray_1:1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/transpose" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Maximum/x" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Maximum" + op: "Maximum" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Maximum/x" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Minimum" + op: "Minimum" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Maximum" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/iteration_counter" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/iteration_counter" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: false + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Enter_1" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/time" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: false + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Enter_2" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray:1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: false + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Enter_3" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/GRUCellZeroState/zeros" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: false + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge" + op: "Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/NextIteration" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge_1" + op: "Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Enter_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/NextIteration_1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge_2" + op: "Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Enter_2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/NextIteration_2" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge_3" + op: "Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Enter_3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/NextIteration_3" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Less/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/strided_slice_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Less" + op: "Less" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Less/Enter" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Less_1/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/Minimum" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Less_1" + op: "Less" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Less_1/Enter" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/LogicalAnd" + op: "LogicalAnd" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Less" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Less_1" +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/LoopCond" + op: "LoopCond" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/LogicalAnd" +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Switch" + op: "Switch" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/LoopCond" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Switch_1" + op: "Switch" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/LoopCond" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge_1" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Switch_2" + op: "Switch" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge_2" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/LoopCond" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge_2" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Switch_3" + op: "Switch" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge_3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/LoopCond" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "_class" + value { + list { + s: "loc:@rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Merge_3" + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Switch:1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity_1" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Switch_1:1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity_2" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Switch_2:1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity_3" + op: "Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Switch_3:1" + attr { + key: "T" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/add/y" + op: "Const" + input: "^rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/add" + op: "Add" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/add/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayReadV3/Enter" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArray_1" + attr { + key: "T" + value { + type: DT_RESOURCE + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayReadV3/Enter_1" + op: "Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3" + attr { + key: "T" + value { + type: DT_FLOAT + } + } + attr { + key: "frame_name" + value { + s: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/while_context" + } + } + attr { + key: "is_constant" + value { + b: true + } + } + attr { + key: "parallel_iterations" + value { + i: 32 + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayReadV3" + op: "TensorArrayReadV3" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayReadV3/Enter" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/Identity_1" + input: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/fw/while/TensorArrayReadV3/Enter_1" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } +} +node { + name: "rnn/stack_bidirectional_rnn/cell_0/bidirectional_rnn/fw/gru_cell/gates/kernel" + op: "Const" + attr { + key: "dtype" + value { + type: DT_FLOAT + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_FLOAT + tensor_shape { + dim { + size: 192 + } + dim { + size: 192 + } + } + tensor_content: "\036,\342>\277h\337\275\'\200\226\276@r\036>Cv\367>\374\026|\277\244S\346\276\2604\240=\250\277\310\275\312\234\007?\264Ac\276\317Q\024>\337\242\361\276\326\265J=\311\243\312>;\303\037?\321\007\265>O;\236\276q\313\245=\230\272^=\211(\r\277\225Zi\276I\242\370=7\024\302\276\004\315X>]\217\013\277\332\035\203\274}\351@\275\314a{\276\270\264\000=\235\010\346\275\277\226\244<\234r\214\275\271\346\025<-d\361\276\275\277\r\277\346c\014\277\214\202\341\275\231\242\022?\253\376&\275\301Z\004\277\335\355R\276E\017\252>\034\234\314\274v\034\274=\255\212\200\275\022\030\271\2767D!\2760P\204>\316\037\312\275\310\007[>\212\201\337\276\206\\\331\276\340\361\200\275:\344\250\276Tz\r\276\t\306v>\016E@=\241\356\002\277V\322\222>>Jg\276\200\337\225\276t\210\006\277Q!$\276 \026\365\274\311,\335<\374c\225<\243\307Q=f\2624>V\216E\276\367v\001>\233\342\327\276 \2660\277\245S:\277\256\2537\276\n\375\">L\t\276\275\274\346i>>\355=\2777\026\363\275\275%\317=H2w\276G\336`\275\300(8\275\246\322\027?\3568\353>\305D\263\276\315AJ\276\024\202\023?\016\033!\277\213_\224\275\237\204p\276\212\200{\277\333\2314\276\343\203\\\275\252A\177>\026\333\253>\202m\001\276RsS\277\255\205\201\276\301\206\257>Q&\212\276jm\000\276AZ\034>\367W\224>\031\226\264>\014\326]>\306\003\014\276\275\255\343=\263\341\252>\344v%\276\300\026\227?\271\n\351\276?\234\260>\341\352\316\275 \345\314\276\023\345\303>B\014\315\276\021\245\241>\362u\001=X7m><\367\354\276\250z6=\260\206\333=\\\320\275>\304t\227>\024\3674\2765\210.?)\001\314\276\026\315[\276\204\355\037>ni\243\276\215*\230=\016\251\026<\371_\t>>\302\023\275-w\202\276\027R\023>\021\236\305>\024c\320\275\254\"\322>\355\"[\276\023]\304\276\224e\357\276\001\014\310\275\344M}>\321\021\266=\262M\277>\373\264\204>\245\311\000\277\251\342\357\2769\246\034?a\235@<\266\006\344\276\2616\217=\177\335>?;\351p\276\271\014\026>%\026g=\316/\255>\345\004\246\275\310\200\003\275\206-Z\276\264\302:>\351K\246\275Y$@=\377p\352>_\353#\275\006\320,\276\225\377\323\275T\242\034<#\r\322=\312s1\276\336\021\356\274\202\r6?gR\262\2765\275\030\275\212\317\266\276\321\r\205>g\"v\276}\\\301\275Z(\210\2764x\205\263{:>^Q\t>o\016\356\275\376\230\\\277{\226\375\2752+\006\276\\\367\033\275@\214\314\276\362\370\204>f\201\004>\250\217\t\277\"\202\200=#\204x=>\341\034>\276\251u\274\001\024\272\276\r\225\321\276\330\227\310\274H\334\242>\243%\314\276iP\303\275<\357\313\276\227\014\016\277\024\376]\276\363y\250\276\322\006V>\346{\220\276f\274#\277\014\014\214\276\343\275\312\276\312\357\034\277\351\237{\276\322|A\273\374!\274\276\362\367\232>^\305C>,3)>A\200\023?0\354b\276\315\354\332<\211#J\276\024\365\227\276b\337\017>a\254\223>\235\336\303=\327\323\'\273\243G\311>\277\327V\276\313\030\323>\0057\262\276)\231\322\275b\342y\275\202\361\266<|g\010\276\205D\277=\231\247W\277\225\321\t?\300\240\312\275\326\016\201>9)\025\277\002J\207\276M\267\376\276by\016\277\367\222\356\276Y\212(>x\342:>BA=\277\206\321\213>]L\307\274`R\001>.\001\325\275\332\242\323>\272o5\276/\006\231>wb\"\276y\306\200>\3534\240=\320\226\277\276&$j>d\2365\274\024\342\345\275\232\321d\276$]\226>\230\177\367>\200\332\204\2763\336D\276\004N\335>\311\006@>\3325k?\264\3109>]rU\276\275L\366>\300\352\036\274\276}\323\276|\341\355= \274!>\277\032\265>\321\255\337\275#\363\037\276F+\002\277\302\254\226=\346\2664\277B\021\231\276..\200\275ow\224>\374\312\000?\327@m>\'\230$>\364\214\243\274\354\354\331<\207\266\"\277\201\230\301>\306E2\276\017\017s=\352&\255\276\225$\n\277K\033\022?fU\256=w\036\302=n\227\245\276\337\202\000\277\302\002|\276\356\024\274=RT\211=\341)\014>\314\211\263\275leA=\262\355K\276\274\214\374\274s\316i\277\024\356;\276&\263\336\276\035H6=\350\"C>\034d\202\276\275n@=:i\243<\210\372\024>5\000\354\276\313\357\026>\301\010\007?^\220\372=\366\332\277=\323\352\002>\007L\207>\251\377\240>\353\200q\276\307\276\331>\256\370\247=\321\211\003>[\r\013\2771g\273>\242\016O>\232\365\301\276E\212\212\275x\321m>@\352\366\276\266\023\215>nP\336\275\247\032:\277K~4>\346\010\311\275\026\236\334>\277\261\3747?\357\rX\276si\253=\230\203\324>\245$\255>\022x\277=\345)\233\274;i\214<\227V\362\276\250Q4>\023\240a\276\2114\017?9\315\261\275\364*\222\276L\300\333>ix\332\275\243\360\335\275\333\321d>\'\253\022<\014r\177>\2463\026>\352\256=>\307\370\203=\354\327\223>u\304\231\274\273\"\"\277\252q\320>\017\247\222>\367b\353=\223\026\262=3\177\217\2763\353\270\276\332\263\331\275\004Z\231>\310\347 \276J\210.>\365?\260\276#\250\223\276Q\251\275>\001\n\372\275\237\331k\276\370$\227>\243\311\232\275\273\260\347\275\351K\006\277(\275\241\276\223\'\325\276\262.s\276\220Sc=W*\204\276\214<\260>4\302i=\335\224\222\275\265F\347\276\342\2214>\233<\350>\270\205\377>\275\223\351>jS\363\2751\273\221>\214n!\276\016\206\276>\030\246\234>Iu7=\2509\220>\374\036\364>\003\206\204>\304|:>G$\333>\2378\016>\375\334\006?p\277V=T~\002>{\310F>\360\245\r?\265\303(=9\r\037\277\335\265\007\276\237t\260>r\340\275\276\311\271(?#,\225>\367\224Y>\005\275\003>q\020]?*\254\316y\264\000\275\\w(\377\206\010\277=-\347>%c\202\276M\032J\276\305\005\026?I\336j\276\242W2\275\\f\270=N&e?\363\347\265=0\203\t?:\307n?s\247r>\245\233%> \337\252>\004t\211\276\207\340^\276\305\365\'\277j\263N\276\035\227\002\2777W<\276\240\310\224\231\020Q\2778C$?\020k;?\207\324\256\275\226\223\240>\225\273\337>v\002\242\276\313\035\270=S\375\202\276\203\374\313\276\251\025\346\276\342]\245=_\333\030>|\004x\275\315\267X>(\314\313>u\252\014>XH\206>\342\005\021>w\036\305=\n\337\267\275\220\031\200\276\262\350a>,\227>?\"a\002\276\313\314\231=s\263\027>R\236\271\275\030$Y=\027\357b>\030\217\245\276\0228\222\274\370\323\027?\232\035\301>t\212w>\367\032\022\277\325\242a\276#xV>\212C\241\274T\2511?,\315\347>\270RA=}\313\262>\342AA?-\223\224f\255\000=$VU\273\367\367;\276S\024%\276\034P\n>\352\206\231\275\024\014\201\276\347\261x\276\333\245\213=\340M\216\276&dw\276W\324)\275\220;\365=Xql\275\340\t!>\233\217\350\275\347:\246>\331\010\242\276x+\307>\331\221\223>?\2775\276\177\3115>\335\236\027?z\231L\276e-\252\276\004\244\256>\227\361F\276\022\350\200>\377\266\036\277VA&?\255u\265\276EX\n?X\013\203\276\366\315\252>V#\320>\366\222-\276\335\202\355\276\314\363Q=pd;>w\243N\276f\366\243\275\321\251\260\276&\314\007\274\311\335\321\274\305$!>n\270\230=\035\345\373\276a%\214=\317M\375\275_\277\370\273t(\270>\250\360\302\275\245X\312>YT\002?TE\021\277y\1773>T\016\221>`*)\277\252j\362\276\314\037Z\276:\225\246=L\324->i\367\361\275\307!\270>n\221\000?\267\246\024\276;\356@\277*I\'?\243\201\026\275FC\255>\247\265\371>\263\215\314=\034\262E>\r-\225\276\247L\311>\216\362J?\271D\300>\362\351\\\273\377\0027\276#\254\202>~*f=_.\204\273\3252\303=8\203h\276\322\314\322\275`E\245\276\365\344\025?\226P\017?\036\202\230\276h\271\344\277c\023x\276{\267\037>\261;\317\274\310\215\n\276f\024\370>K\347[\276\324\353~>\231\022G\276\360\336\252>q\t\321>9\327r\276X\305\331=\327E\215>\351x\037\277\301\3319\276)\201G\274\365a\340=Z\251\375\274\231\314:?\314\213\270\276\350(\300=\374\202\277>T\017\014\276c[\273\276\245\026%\277#\200o\275\353\347\3624\334\372>\302d\256\275 \276\203\275\221\327\336\276\323\004\'<4\204\241\276\237\304\026\277\306\230$>rg\206>\270\324#\2766\376\331>?\024#?\033\206\305\276FJ\035\275\036\014L\275S\367\264<\260\002S\2760\350\251>\367\306I\274\266\366\337>6\373H>0\027\312\276*\305\031\276s\325\260>\367\240r=\337\346\275>\201rI\276\006iO\277V\001\013?$\014n><\221&?\337?\233\275\266\323r\277q\366>\277\344\241\376\275\177\0376\276\032\013\333>\375\212w\275$-\352>H\221\014=-S\005>\313s\221=\354\206\250\276\024\306\361=\345g\305>g\216\342\276\"iU>\305\275\025=\260(\214>\224\222\312>\r\230\365>\241\250z\276\363\333\\\276 \033\243\276\271]&>\343y\300>\364\335\272>\210s\233>X\212\354<-c\016\277\373\017\236\274\345\\\r\277Li$\275\276\242\203>\000\344\002>Uo\223<\327\264\233>{t\025>\213&\273=\235\313\032\275:f\236>[\254_\276nWW>\226\376=<\231\235\230\275v\006+?\027\262t>\365\301\274=\252\217\266=,\201\022\277\035\017\207>\232L\240\276F(\313\276\274\3208?W^\002\277\272\334@>\247\276\254\275\242\270\327\275\367c\302=\331\037g\2762\004e\276G\245\267>\024\250\r=\267$\252\276\273\250m>q6B\276\363G\314\276\034!\016?y\321\311=\323j\r?!Q\326\274\260\271!\277P\325\302\276\304z\021>\352\256\035?\256h\212\276\2349\031\277\033vs>\315\316\357>\036\2274\276TSd>K\322\274>x\216\006\277D\r\330<\0005C>\210nQ\275\014\237\211\275\372A\004\277al8\275=\353k>\350\337\365\275\376\346\330;\004\372\217\2763h\367=\353+\303=@,n>K m=wy\002?\023=\217<#\203<>\257TM\277\031\211h\275\305\002.=y)(?\350\326:\276\316\212\342\275\305\362\220?\345\263\206\276\352?W>\257\362\030>\355tq\2765\\\300>9\245\010?\277\257\321=\r\262\032?\362\002\250\276\241\003\334\276\364\324\n\277N\261\2549\366\247\276)\340\214\276j\002\342\276\324h\237>A,\236\273R5\303=\371\256\306> \213\313>\207\370\360>\326\264\220\276Y\026\\>@Zx\276-\314\207>\325\224j?\310\322\252>C\235\203\2762:9\275\207\230a\275\332\307\010>1\333\"<\236\350\312\276\361\256y\275\036\226\355\276ZN#=\305[q>\014\247\223\277\261\002G\275\t\260v=\310S\273\276]\207c\276\214p;?\304{\314\276\312\260o>\276\376\'?S\237\355<\037f\005\276\2268 ? U\016\275\367}3>9\032h\276\235{\031=\236\277\020\276\246\250\003\277_$-?z:]=x\007u>\313\314G\2739\024#?\270\200s<\224\342\013?1_\366\2756\031E?)\033\037?\001X;?/\315\236>.\200\261>\333\"\206?`\206\300<\357:s?K\321B>Z\214\'>\232\356\317>)\341\200\276\205\361\271=\027K;\276\274X\260\276Z\335m\275\322;`?\312[\002?G\217l\276kC\370>\352\303\367>\016\351\325>kj\000\277]\031\373>\214\263U\276}\3575?S\262\264\275a\332\226=\307\215u\274\265b\213=6\331\335\274\1770n>\023\241\302\275kO\332>\222\036\244\276\367\205\237\276\'\306\375\275\214j\271>\301\n_>\014\353\371\275(\244\320\276\303J\022>\260\r\217\276\224*\007?<\277\226=\275R\345\276W\304\223\276y;\370>\006t]\276\210Zg>J\316\020?\211\214/>\301S\246>\325\326\366>+\373\214\277z\356\353>\007#\360\275\375c\253\271+\301>\230\035\214\276\325\261\006\276\317\262|\276\2237}?\206\002X\276*\213\264>\332\361L?]\354z\276\251uM?\265\326\002\277\256\266\272;H\321<>\0379\243\276\270P\310=\032\'\037\277\024\014\200>\344\371T>\037}\214>\201~\332;y\375\321>:w\306\276\221$\271\276\360\320\250>\223\t\333\276\314\000P\276\351\\\037>4\302]?\257\211\360\276MO\335\276\273\276.\277Ql\344<\343m\214>J\321a=\002\300\275>\206\243P?^\236M\276E\233`=\007?\377>S7\310\274{@\275\276!\245\010\277\205\354G?\21672>Q\007\307\276~\345\345>;k\234>\362\347\271\276\317\215(>\322\223H\276e\266\037\205\207\014?\r5\242=z?z>3\005)>+\337=\276\265\231<<\202VE\276%\207\023?*\271s\276\242\013\364>\363\243p\276\230\240\243><\357\307>\363\233(>\325]\031\277:0\036>\316\0051=\270(\203\276\243B\236=RB?\277;7\344\276\213\010b\276\365\033\000\277\006\202\017?\344\243\331\360\224\306\276\024G\263\274\367o\236\276\271\263H<\025\347\356\276\250\252A\276\253\203\261=\311\336(=\336Q!?\211\305\314=M\353*?\314\207\332>\303m\246>F\377\250>1\007}>\0132\322\276\006>\021?b\375\217>\001]\314=\224\020x\275\\\333\037\276?\246\367>\372\363\013\277\000s\036>~\254\340\275\231\266\235>Bj\212\2762/\244\275\262\242\r\276)(\006?M\250\337\275\265\276\240>e\033\204\276f\007\036?\330\252\010?\177\230\216>\031\302F>\013\273H\276\3567\r\277,\013\201\276\237\320A\276=a[\276\004\214W>\207!\366\274\303\337J>\331\t\375=\355H(=\035K\031>2\236\252=:\2316>\322N\314>\000.\346\275\206\216f?Q \327\274pq\230>\014lO\274t\300\256\275\247\020\201>\236H~>S\247\323>\225\346W>:l\267\276\211\354\n\277\327\025\210>x\337\022\276\322P\"?$L\244\276\261\316\231>\"\026Q>\373\234\361\274\352\316\245=\305\276\336>\377\323\024=y\217\036?wsG>\343\257\013\277\331\013:>\273\335]\276\264AP\276E\2138\276\201%\236=\\\205\245\276x\210\233=\206a\034\276&\306?\277\333X\355\276\3655\357>\013\216w\276\307\330\023\235\202\276\230\253\354\275\235\0104>\204\232\275>G\322\024\277\373/\301\276\267\2170\277\230,\306\276\275\237\327>e\245\355\276\331\324\001?P\207y>\032x\304\276\010\267\271>\024$\274\276\0106?\276\n\355\227=\315%\207=\306\016\305<3\204\260=\221E\333\276\347\267H\275\236F\210>t\375\214>\361\315\200\276d\370\035?\305\367\210>U\345\214>\203=J\276\021\327\330\274g]\016?\357\311-\276\243\310\255\275$C\374\274\357\235\257\275\014a\342\274\260\332z\277!\347\235>[\206\003>\300e\230>\221\267\266\276N\326\010\277\213\204#\277\261\275\"?\275\353\"?-^\376n\0269>\266\033\312>\326\347\332\275\376E\231>\013\003\207>}\033O>U\206\230>\2451\250>[\372\036\277\213\336\332>R\2237\276\344\207\n\277\263Od\276u\001\316i\253\321\275j\000W>\0101\036>&\225\321\276\373J\204=)\017\335\276\353\324\223>6\347\016>\023F\247>\370\343\357\274\0227=\276\245\023\242>4\340\256=\305U\315\276\336I\033\276\031\r\'\277D\246U?\375\253p?\014\031\000=\361@I\276\004\030\311>\271\340\014>\360\275\211\276\357\346V>,\006\322\276\333\317\247\276\265Xw>\260\357H>lj\335\276\034\334\010?\223\347\267\276\254:\341\275\246]\256\276\353T\272\276\2159\231\276d\023\246>t\261$\275\244\037\026?\\\273S>|} \276\245\353\025\277\266\276t\276R\022\033\276\372l\234>\010\267\006?s5,\277\323\253\250=ZUE>c]D\276(@\034<1\216\207>A\351\300\275\343\023B>ff\006?}\363\236>\342\256\342=\274\323\232\276\327u\014?\355\355^\276\353\027\222\276E\226h\276\320V\274>\376b\244>>\311\330\276K\3619\276\"\002\255\275yZ\222\276F\352\223\276\376Z\216\275\332\220D;\366\0149\277m\305\275\276`\226\205=*\261\254;\345d2\276si\321\276gl\304\275U\352\316>\352\316->\316@\322\276\266\321\277>H\266l\277%O\275>?\216\270>q\303\316\276\362\305\253>vv\217\2763\201 \276y0\353=\244t|\276\275\316\333\276o\342>\276\346\231\t\276\300\034\240\276K\023(>\242\2362\277\253\305-\276\363&&?\364RN\277\\W\317\276\376\022\014\277\364\221?>\237\332m\2759\034\021\273\316\246E\277\201\r\020\274O+\363=\271D\t\277\263\247\215\274\252}\037\277\353?\352\274\\\020\222\276\031v\224\276\'\224\251>\321\275+\276\243M2>\0171\244\275`p\026\276\232\371\350\275\r.\323\276\344o4>\206\301]\276\337\2635\276u\277\216=\311\024=\276\351\016Z=g\343\r\277\001#T\275w\212\230>o\326+\274\332\206w=\356A\001>\\I\010\277.\325D\276\327U#\276\214+\261>\001\345I\276\334\372\202;\227\032\315\2763\331\336\2750\224S\277U\360\026\276\275\004G=\320\261\030\277\037\254O>\244 \306\276\\\314\376\202*\232>#\255\225\275\275\177\335=\244-\357\2760S?\277\tZB\276\204\360\003\277\324#\005\277\257.\253\2761\243\n\275o\367\230\276\375\333\221>\316d\016\276!\302\203\276c\325\252=\372\355+\2768\017\217\276o\362\264=\021>!>k\323\202>\022\266\034>\256\'\235\276\224\007\003?{\005{\276\025W\220=u\237\346\276\303d\311\275\303v\261<\312Q\335\274\240\352\034=9\301\035\275\253\234\271=V\030F\275\r\352\315<\201\312\312\274I\343\231>eIl\276m\336\037>=\203\321\276\345(\324\275\334#\235\275\364|Y\274\364US\275M\232j\276\013\243\314>\200\324\220\276\t\263\255>\206\244\365\275\'\031\365\276\233\364I\276\347\023\262>W\245\316>\266MW\276,hY>z\214\341>\017\336\032>\364\n2\276;rV\277\354\377\244>\314\257B=,\330\334>\022\260\033?\207Or\276F\235\013?l~\r?\252)y\275\037/\340=\311J\250=F\367N>$\220t\276\344\002\273?\371\003\342\276\311\250\300\276|\177\"\276\231\365c=\237\373\266>K\350r\276\221\n\373\275\267\257{\275\217\256\221\275\267\374\315>\276\010 \277m\310\313>t\331\250>%\226B\275\2246#\277\0259i=\314\000\255\276\343\316?>\316\231\234\276\267\t[\275g\217\303>$\374\252=j0\033?#\030e?\335+;?\361\334\262>eqX?\357\002\262\276\277l\321\274\"I\376>\213\344F\277\302\235R\276&*-\276\2313\222>\314\035\232\276P\361\216\275\205lJ<\253\177F\276-\244\027\275\025\274*\275\226\\\337>Z\204\037\277\001\336m\276\250\222[\276\375Dk>Q\226\243\275\271\356\031\275WXI\276\034\214\273\276I\022 \276r\213\347\276\362\353\277>\013\3131?e\254&?\032\332z>f\364\246\275\224\365\221>e\355f>\246\3003>\272\216\210\276\251\231\216\275^\312\021>\265FR\277\334VL\276\002\350V\277O?\250>\302!\247>\017\217\351\276\327\201\255={\242\036\276\270Tn\277\323a\313>\327\236\356\276t\353\303\276\215\233,\277I\376?\276x\203\200\276\316\215\324>\272\366\207>h-\225\274T\335S\275K\264\216>\365\004d\275`\333\202\276[\234\232\276\276\235s>\275\004\305\274d\336\026\275Y\236\343>`\367*\276\\\364k>\3252I\276`\202\240\276:\211@>\266\235\201\274\027\327\032=?\341t\276\244z\335\274+\034\316\2767lN>\275\371e\275\263\031\306\276_\022\305\276jk6>\344\032\204\276\nJ\025\277\231;\376\274\310\3432>\035\277\323\2731\006\207\276dp\215\276\026t\n\277sz\217\276\007$\024\277\340\014\263\275Z\315\024\275\317Py>\2505\000\275<:\201>\025\036_\276\371\207\266\276\224)\204>\245\331\334>\205 \254>\326\221\227>\264\356\351>\371\013\221\275\244\276\033>\237j\026\277\016\373\250>\223l\351\276\202a\005\277[j}=\215F\360\276i\361\247\275\232{\220\276\325\262\227=1\273R\276 /\250>\343\267m>lj\025>\322\334\354=\205\031\004\276\232=\005\276\242\213\254=\344\226B>\035\212\261>\035\2772>\364I3<\\8$\277IiO>\307\366\273\276\253\306\016\277\207\311\334>#\3469?\336j\n\277\036%\321\275\'_i;\242\256i\276\307m\262>\306\250&\277\350\204\257\276n\356\250=\224,.\277 \370\370\275\037\367\312\276\327\022)\276\240\231>\276\320I]\276\351\353\305\276\177{H\276\307\006\246>L\001\224>\3209+\277\355\277J\275\t\377\261<\037\276e>\360G\354>\214\000S=\\\307\221=\340\230\035\277\354\364\337=\217\021\237\276\371\350\276\276\270\376q>\342\235\005>\325\313\200>\211\310\203\276\225\263b\275%B\374\276\202\3337\276\356^\251\276\354\263\214\276\240\320\374\276\353\226\242>\274`^\275\212\272\332>5\027\247\277wO\343\275\026\324\003?j\321g=G\035\364\273\033\230<\266T\020\276\206\273K=\255;;>\034@>\277\362A\221\275\375\243@\277^N\221?8\000\277\217\021\034=v\304\335=\322\354\304\276\276\3743>\366Xn\277CV;\277\177{\207?\212\353\357>j\263\355\276\310\030D\276G\254\230>\371=\001?\364\340\">\333I\343\276R\265\241\275%\213]>E\255\267\276h*\000>z\243\000>@AF>2\256\203\275\025?\322=\307\214\037>\025D\265\276\306\224\212\277s\031+\276\273\262\026?\361\376\271>u\361H\276A,\352>K\031}\276\220\230B\276\240\t\t\277\244\375\347\274<\224\255\276\026\'1>\024\360\004?\324\2008>\005~\370>\r&\315\276\374=K\276\270\314Z\275U\351h>~\213\223=um3\277q\031b\276\031{\214>\373\3638\276\375\202K\276_\304\272>\222\255\242=5\347\324=\265\237\307\275\303%\r\277B\034\346\275,\023\250>B{\n\277\233\021A>\026\200*\276\016\345\311=\375\004\316< r\022>\271\006\313=\251\014\035\2760)\301>i\322&\276%\021\276>\2719\n\277p,\n>\347\005\276\276\305H\365\247\363\201>8\026\321\276\302*\335=\363S\324\274\033\251\202\276\365\033 \277\341\270^>\304\315\314\275\335{2\275\224z\356\276\200\315\r\276\337\334\344\2759\020\261=|\250\365\276H\272q\275\225\315\347\276%\241\233>\315\262\024\275R\255,\277-\346\262\276\212)@\276-\256U\276n\245\205\275\323\301\251\275\031T\033>\210\t\002>O\207\223\276\321\356\225\275$\210\253>\302\262\030\276X\305\276>u\323\030>\365a\016\277\036Z\216\276\2077;>\253\231\375=\274V\244=S\303\360>\276\224\303>\030v\332;\207Q\267>\037\346\216\276\010\262L<\220z\230>(\375D>)\261t\275\032\305?>^\262U>:\261\215>`k\263>J\220[\276\017\220e>\374\024\264\276\300\316\250>\"\005\246\276\030f\t>i\366L\275^)\247\275Wf\'\275Z9\205>}5\346>\363\376\220\276\302\316b>\270\222;=\347\010\265>sF\375\274\333\032\372>\226\200\035>)\274\237=\317*\"\276\230\0233\276\3656\035=bX\316\276|\365\341\276q[\024\277\324\313+\277\367\031\037\276\256+\230=j\026K?W\235\002>d\225.\277F8\220?\227\017\024\276\203\324\267>\3234I\277G\232\223>2S^\276\376Lj\276\025\206\357\275\031%=\276U\235\213>\302\360W\277\001\234\303\276\017u\205>.o\020>~.{\275%\351\236\276,\376\340\275\321t4? \227\201>q\241\221\276T$\366:\356\362\237\276\245$N\276\226\221\376=\021\356V=\264V*\277\267\222\303\016\236\275\276)\261\221\275\\<\313<|r\331\275\271.\225\276\006\334G\277\037\270\202\276\324\3632\276,B\273\275\177\021D\276\253=\017>\340\215\023>3\210\234\275\220$b\276\341T\016\277x\242\267\275\271\236\207\276\262R_>\003\231\007\276@\340\032<\177\032\031\276uA\215>\301\202(>i=\354\276\240Mu>\371\323\256\276?S\246\2762\003\014>i\361\021>\024Z\217>\262 \n\275\215o\314=|+\230\276\270r\275\276\361\034\261<\257\200\227\276,\0003\276W\260\200\276\201er>\304\357[>\022\333\010?\372\016\000>V\0323\277\2122\003;5\337efhZ\2772\273Z?)x\376>=F\000>>1#\277|\203\331\273E\276\331\274#\315\006\277>\234\t\277\237\030X\276\201q\214\276\311O1\277\033\025N>U\266\301\276(8\225=\373T\252>~M8\276\226\220\203>\366\006\235>SL/\277\234\330\263\275Xi\n>\323\262\'>\213\345M\275\260\243U>\257\334\205=i\320\326\275\256\324\266\276\373\006`>e\227%\277\261F\t\277]\274&\276\000\265A>\223\257\277=\275K*\252\322\213\276\236w&=\177\365\271\275\351yy>\227\306\206\276%<-\276\204\026E>9\010\203\276\031!4\277!\324\036>SEA=\237\341\327\276U\020W\277\326\003\243\274\204\241*\275\365\274<\276$a\375\276<\204\371>\211\345J>$\026`=\371GC>\234\221\242\276O\224\206>\373\225\320\2768)\026\276\262f\325<\314\"\252>\351\243A\275\t\206\326\275\001o\227\276!K\313\276\362\207.>w?4\276\0312b\276\356\364\005?\301W\206\277C\234O\276\001\230\243>@\222\254>\371\037\034\277\206\334a>\217\344\377>\305f,\276\013\373\207>\246,\360=(+\306>\210\361\036\276\316\372\314=\331A\024\276t\037\273\275\255^\273>L\300\207\276\302)\017\276\357\036J\276\351\006\251\276\323o\010=8F\207=\247\223\317\276\332_b\273\233o\\\276y\377\210\276e\3728\276\230L\321\276\010\347/\277\352\235 \277\023JY=\317w\252\276\302\377\032\277\024\251\026>\225#\r\277*\305\370=bg\027>bP\313\275P\245\347\276\362r\236\276\023\224\307\275$\255\373=C\035\204\275\013\242\r\276\353(z\277\023Mm=\035\010z\276;\343\004=\013\020C\276\371Rx=\307b\274\276\244\206\"\277\312M\325\275^\022\264\276\262\243\t\275(\2534\277\331/6\276\334\372\362\2745\010\264\276\241\247\277\274\335\275\345=\266d\026>\001\204\232\275\267\305\322\276+\210\250\2765y\277=y;\037\277\031\240\027\274\352>\356>R\323o\277\345\322K\276\332.V\276\2227T\276\356CS>W{\213>_\230\373>\035\245\270>\2712,>G\241\000\277l)z?B\263\276\274t\346,\276\376\364\237\276\221uI\276\361y1>\327M\322\276\022\273\240\276\273\216\300>O\266\021>w\363\000?\241\310\216>\327\247>?`\0021\276M\303\276\276\275\023\272\275`\016\374\276(\032\007\277\205[\226\276\335{\355=\201\202\377\274#\316\375<\007n<\274\035W\370\276\035\220\321\274\265\373\234\276T\003\370\276<#\214\276\244\322k>\021E\225>\211[\212>\365L\334\276\277L\335>h\266\244\276\205g\225\276A\373#\276^@\226\275m$\246\276\307J<>\024\331\300\275\006\021\360>\356.\336=\200,u>\377L\356\275\222\216\021\277\377\213\272=HS\317=\327\026\231>.EC>\302\022f\276\301hB>\252u\213>!\007\230>\351\320\021\276\222\2607\27682\375=x\356\240>\001oH\274\034\352\220\276\317\211\033\276P\305d\276\236\354q>s\216\025\277\034\342\300>)R\n=\224\001`\275^\261\024\276\020\214?6G=A\276\367iS<\177h\310\276\035\262@=\357=\002\277\336\342\020:R\007\346=U\244/>\206\374B\276C.N>r\301\234>c\244>>\3761*>\351&\344\276f\373\212\276K{\003\276u\222\321\276\245\373$\276\'|i\2769,\220>2\365P\275<\310u>=\004\222\276\035\030\007?\374\001\325=\335\337 \275\262\355%\276\216I]\276\373\033\370>\267m\225=ll\014>\316\020\333>\314\0214\277\006\337\227>Y\251\002?\200\r\307\276\227\334Q\275\223\240;=OD\237>\235\246\006\277j\242\223=\303\313\216\276u\344\353>\303\324\226\276\005:\320\276\340\266\333\276\354\266\270\275gH\262\274\210\026*>-R\365>\244\267>>*o0\276p\332 >\373\2365>\000\362\316\276\247\377\235>~\351d>\211\256\250\276\254\333%\277\257\335\303\275.|\241\276\302\030\376\276\224\014\337\276b\006\375>%\002\212=\3225/>\307Z\256\276$@\006>\324O\017\277\315{\273=\r\250\217>\036c\241>Ph\263\276\027\377\002?\003|\375\276@\'5?k.0\274\030\213\223>\004\332\261>\327\210M?\354\202\022?\023g\373\275L\017X\277c\177\001?a4\215>\243\001\200=!\244\345<[\n\224=U[\234\275H5\372\2747\326\240>\240\313\203>m\241\241=\311\255\237\276g1\271\275H&&?R\220\271=\300\340\006\276\014Z\226\276\005\224\001\277\313\027\305>:\014\370\276P\215G>\241l\313\276\251\004\225=.\213)>\272\232\345\276@\2671?\376\215\305=i#\301=\351\353\002=\355\342\265=W4\316\275\374\216\205\276\361t\005\276\360\322a\276 %$\27674\363\276\311pS?\355\347-\276\356ws\276x\271\201=\323?\004\276\376\320\007>\266\363\241\275\335\201\310>\267h\013?\332\007l=\300\017\245>|B\305\276B\2620?L\231`=\2119V\276\337\372\227>\246\311\374> ?\373\276\263\031@\276\311,\232\276\207\t\313>\362\207\022?g{\251<\321\024\373\275\334\271\005?\344\271\234\276>&\202>\300\020\007\277\346\003\"\277\260\to\276s$\347<\005\000\362>\356s\027?2\017\354>\220\016\300\275\361\010\252=\260E\032\2779\211\'\277QZ]\277\232:\211>\025\223L\241\r\030\273\t\336f\276\312V\230>i\362\227>Lvf\276\027\361\036>\242\340M\277\270-\022?\242\302\246\273\3216E\275\340AZ\276\007\360\331=\363\335\003?\324dl=\227R\220\276#\201\325>\306K\254=^\203K>& \304\276\271\276\235\276\351\227\203\276wA\250\275\200D4\276\343v\217\276i\327Q>\3549\264\276\365\302%\277\232h9>\204;\262\274\2001\231>\307\305\230\276\031@]\276\266\021\030>|\246\322=\374\314\263\276d\303\035?\270\217\302\276\324\\!\276c\270L>;\315\367>d\232r>[\247\301=8\227J\2767\010\370\2741\314W\275\"\354\262>na;>\373}\250>\317\306\343=t\226\243>\325/\223\2763IV>\216\211\335=)\350 ?c\353\010;T\030\320\275EA:>>\274\274\276\221E_=.n\031>\247\245c>\340\'\304>\352t*\277\250\332\262>8\244\352\276\0016N;\323g\027\276\003\302\275\276\353\\\337=C@\212\275j\246\231>\306\261\326=D\270\031?\364\214)\277\325\203\230\275\334\206\023\277\036\337\340\276\236\372K\277\201\r\317<\233AF\277\235I\311\276\217\350\207>m\276N\277\\r\220\276\215I\020=\3049X\275vV\302=+#\217>^M\352\276\030\003\233\276\347\002\221\276\256-\230\275\300\\\242\276\316\003\206\276e\335->n\333\n\277\341\200U=F\002\366\276\247\331\335\275\374\"5\276\320\346M>\230\206\250\275\002\231?=\221b\265\274\'\310\212\277ba\227\276<,\001\276\366\307\026?k\035\301>pq\244>\222:\315>f\204\306>\027\275\230\276f\033+>Pe\324>\230\337\212=-;\336>\377\302\177\276\201\307\226\276r\356_=\022F4\272\331\203\214\277|\230\362\274\234\336\204\276P\035\274\275\302\n\372\276a\220p>\307\361\321\275\201\000\024\275\340\033N=\255\247s>\r\0219?\242L\235>\370\037\224\276FN\242<\350\2056\275\331>L\277\3004\017\277\370\300\023\276\241ug\273\326%\326\275\205/\302\276\017K\364=R\357\363>tT\361\275\017AG\275I\210m\276K\263[\276\374@\207\275\375\016\207\276qc\246\275Wt\227\275l\201\004>Eh\031\277\334\376N>\r\010\257\276~\302a\276\266X|\275\234\267\377\275\033\354\231\276~\2145\276<\340j\276\224\324\325=\201\322\032?\2606\360\274\033u\307\276\340\371\210\276`T\330>\221\355c\276\352\355V>[\220\013>\222l\213\276\314|B\276\300\3139>\252\317\260\275\242\215\275\275K\001 ?\330%\204\275\315\352\301\275\373\343:\276C\263\236>\024=\205\276\t\2411\276\203\3359\2760\3552\277p\375\270\276Z\347\372\275\275&\275\275C\252P=j\265\240>\333\206\355\276\275\234\270>R\252\207=~{\236=4\230\260\276;.\n\276\037\205\307\276\033\227\220=\004\241\330\275\373(7>\334\0163>\262_<\276\200y\373\275\242HZ\276\252~\212>\235\225q=`\217\263>cq(\276\277\237\207\276\271S\377\276\266\"p>Au\212\275>\000\316\275\316\212\177>\212uT;Z\026\250>\000\305\264\276\246\302\223\276\306\027\353>\255\020\001\277\273T\013\277:2H>(\257B\276\006\017\350=\334\340\247>l\337\021\276Z\232\237>\342\006\031?\365p\227\276P\227\261>)\3165\275\331\"\316=P\343%>Z\365\'>t\321\226\276Hz(\276\225\001\351>f\243 \277\332\320\371\276\372\265\230=\271\344\266\275`\356\222>%\331W\276\337\215\234>m\257\211>\222\254\025=W!\210\275c\022\216\276\335\023\336\276(\3102\276i\301\022\277:qI\275\301.\350>^\255\241>\032N,\276I\022\244\275t\266L\276\336h6\276\tI\350\276\200\037\316>v\307\202>v:\335\276\330M\002\276\234\202\303\275%7!?\247Wm\277\353E\244>\021*\027\275W\324\010\2768\350j>~Y\311>\302\255X>\177_\216>:\023\272>CG\010\276!\024\211\276W\267\216\276A\024\000\276sl\n>\320\363\206<\260\025\301>I\n\204>\235\250\263>\256\244\r>\220\223\274<[D\332\276G.\027?m\202\204>\036\025K\276Ub\235\2754\376\t\274Lk\366=\275\322J\275\275\371d\274&j4\276u/6\276\241\301\360>6\334\376\274\220W\336>3\334\200\274G\353\354\275\376\nC\277\352\224\212=V\002\222\276\3569\017\276\2147\354=\023\341n\276\236\346\026>\210\220\224\276yCb?\177-\024\276\273\200\217\276\021w\210<\240\224\027\277E\251\203\276\3171\"\277+X\037?E(\211<$k\\\276\037B\346\275\256\n\343=\207\227\345\276\220D\253\2757\030\023\277\177\332\334=u\352A\276z\010\325=\"[\276;\234\014\340=3A\007?\3109\037\276\357y\037?\004\246\340>+\242\021\2750\206\216\276\256}\367=\3427\024\276\375\222\001\276\342\036\214\276\233%(?\211\247;\274c\016n=<\270\271\274\'\211\000\276.Dp<\310i\216>\025*\333\274\272\202\250=\364\003\372=s\342\214>@\200\203\276\234\267\352\276\211\340\304>O\345\346>\304\211w\276\024j1\277\300\t\221;\275\211S\277\3414\014?\276=\274\275\207\007\310=\272\214\010\277b\276\010\277!\311\312>\201s\343\276\372\001\347>\236\360\275>\357}\273>\235\201\304\274t\330\030\276\267|\326\276\"_v=\305M\\;^!d>r9q>/y\000?\245\222\274>N\035R=\215\211>\276\332\034\253=\247/\326\275\251w\367>\376D\"\277\307O\352><^\255>Fc\276<\336\313\275=[\356w\276T\265\226\276\341\017\201>oe\026\277\205o\035<\304\371\250\275\006M\031>\271\013Hv\234\013=\355\271\325>\016\300\013?\250\204\310\276\037\374@>\\r\245<\331(\004?m\031\010\276\025\032(\276\023\217\276\276\025N\345>\314\035 \275W\221\255>\252A\023\276Ux\230\276i\351\274\346\332\243>\032\343s>\360\237\324>\254\212M\275<\253\243=?)\337\275\254+\357=\r\323\036\275\362\305\214<\323\317\231>\2713\255=\1772t\276#N\036>t+\200d\333\363\276\240\373\">\347\362\310\274\315c<\276\301\273\202>[\267\257\275e\326a\276\0069\300\275\237G\'>4\224\010>T8\274\276\336P}>+\344B>\206\361z>\367\333\346\2757<\242\276+\212\312\276\033PG=\234\302}\276l`\316>\241R}>\206\325\r>#m\n=\207.\020\275\256\361h=\205\264\211\276-9\335>:\244\003\277o\0270\277\003\314V\276\356I\323\275b\337\031\277\017\300\201>\203\374\302=\272\031\014\277R-\217>Q\205:?p\245o\274}\366\226>\231\003u\276T\320\014\277EF\271\276R\306\264\276J~\230>\304WL>v&\204\275\032\340\304=\365\005\353\276\366L\346=\305\371\264>\025\207\013\276|G\301=\341-B>\361a\370\2766V\t\277H\257/\353\253x>\253\346\361=U\254I\277\265&\276\276\230A\201\2767\t\031>nv\320\274\234q\346<\373\2737>G\331\023\277~\332-\275\304Z\\\276\231N\357\276\344P+>\0250\313=K\210\005?zK+\277\001O?\277\205\305\353\275+y;>\342z\375\276\271h\251\27502\356\275\265s\022\275`4\344>\376\331\225\277Eg\327\276\235]\204=\240pD\271=\224??\374\265;>I\311\202>\273\213q\276\000C\233=\365\220\010\277\221\216n=\234\375\337\276\204I\t\276\235\006o>n\034\037>\276A\010?#\237\246\276\325S\323\275.\234\034>\274\267\003?\232\322\233\377\n\203>\002\267\366\276lO\217>T\237\227\276\362\311\244>\347\275\235\277\250\204Z\277$\231p\276\235w\344=+\222z=CL4>\224\037g>\221\007\206?)\333\276\276D\027$\276\237x\001\277\235JP\277N5\341\275\241\362\222\276\3378\227>P \254\276as\000\276\207\236&\277\217\226\n\277\037\243\232\2764\272\321;\344!t\276:l\217>%\324\216\276\212S\366\276\200+\365>\021\272\334=y\004\236\275e\032\375>\267\374\237>p\274\005>\003:\244\276\360\215`\276\005p\274\275\207\326\024?\236X\244>\240\340\312=\272`V=f\260\013<\315\260/>\263\026\336>\242v\202>\331eX?\210@4>Dj\244\275M9q\275[\227\221>ShB\276\221\034-?=\333H\276\207\345\335>\3315P>\203F4?M\375\324=\242\2638>\223\216p=\323\016\250=\225\317\366=b\320\356=&\023J?\360\251\326>ge\362<=}\310>\342~\332=\275_\273\274\340.\354\273\020\207\r\276u~\211\276\305\253\236>Qd\240\276\374\202\002>\334,1?\2616\302\275\021R\020>\312\035 >ns\017\277B\200\035?H\031\332\276\252*\206\2765\0354>\303\362\217\276\370!>\276\367\207\260\275C\225\242=Xq\226\275\326Dd>\377Eg?\215\310\215=\377\274\312>C(n>S.\243\276\332\227<>Z\346\322>\320\272\274>\320\227\032>\365\034\200>\326x\213\276W%\006?\\]\360=\202\324\372\275\001\353\252>z\304\244>_\204\221=\356A]\272p!\351>I\313E\276y\353\021\276\0043\266\275\336\355;>\335\270\307>\305M\227\276s\216$\276=\024-?\343F\364\276\001\204!?\267\330\230>d\352\363>\317\247\020\274\305c\375<5\256\217\276X\002\232\276\021\\J\276\302\231\260\276\013\237\256>27\203=\323\317\024\277\301<\327=\0066\252\275A\374\244\276gH\000?2\203b\276\375\332r>}\273\202>\017\340\230>\274\263\'\276q\305A\276\250\033\212\276\254\337\250>\377\016\342=(W\225=&\332}=a\307\360>t\006\314>6\252\205\276G%\202\276\370\223\213\276Z\003&?\364\023\236\276\254\366\300\275\210\303\375<\251?\371>7\365@>F\222Z\277\226\024g=\220\252\006?\227\037u>q\227i\276o\202T>\"\327\345\276y*\007\277\016N\003?g+ >\027i\220\275\327\\\376>)\242\341=\345]\327\276\211U\305\276\323\313p\276\305qh\276\265\324\216>\317\225\023\275\334\014T\276\254\240\345\275Y\344\365:\327H\334\274\330\274\003\2762\306\007?hT\344>\367\350\001\276\254\357\007?P]\372>H(\302\276\203\330\031?\257b\306>\3609+?\030\232\246\276\233\2548?M\036\332=c\237\257>p\001\327\276\250&\006\276\372\177D?\230\324x>X\365\212>\266#\305>\nb\253>\372\215x\277~\030\327\276\312\275\003\276\023\226{<\216\030 \276\315o\313>zv=\276ol2\276N\213\010?(\262\036\277;o\010\2774\033f>8\315\264=\377vS\276\251,\266>\362\034\322>\213\224\035\277\t^\203>\336\205\233\274\252\322\022>&f\257\275\006\030\220\276^Q\315\276\323\347u=\332\374\364>l\332\313>\227p\005?\346$N\276\234\302+>\004\013T>\307\200\365>fIh=-\030\377\275\206$p>\033\034\203>\217?\217\276\241At\276\371TN<\010\227x\2766\344\271=\226M`\276\341{\334\275\363\343%?\006\232S\274rE)>\225A\027\276\206\326\003?7\213\274>\317\331\364\276|&\331=p\366\373\275\253k\323=w\355\203>\345\335\t\275\262%\177>\263\361k\277\311K\265\237\222/\276\027\230&>\356m\231>\346\260\275\276\352\251o>\241@\270\275K\235\227=\375\2742\275\002\224\032\276\202!\323>#\240O>A\205\307>2\025\326>\367\241{\276\257\323\037\277\237\265\355<\366DD>\330\265\004\276-9\027?\001\2171?\026J\356\276o\215O\276~\002\353=\0203\256\276\202\264<>\316\"\326=\266BJ?\377\326\312=-\205\322\276\306\261#<\347 \315>c~\305>\252\003\370>\033\375\266=\3630\'>Z7\277>\237\333\335=\242\332\006>\344\350\201\277\026v\346\276V\231(>\362N\252\276\372\'\376\276e\202\240>\370O =|F\004\276\364\0071\276\004\007\321>s\362\"=\222\"\007?\346\021=\275\037\262\240\276\2504\340>\244\372\'>^\276\371>\245\242\226>5l\236\276\034\010\246\276,\357\304>\t\304\306>\032\245\336\276\244f\270\275\236\2769\277`\345A\276\226V\360=\336\257\354\276\344I\371\276\311Y\271\220\037\330>z\010\250>9F\262\2769\357\236=\322\021\222>\250\370\245>\241\340\265\276\000\\\200>\366\315\202<\035\003[>\327Y\003?\362\255j>\224$\222>\252\365\300>\204sB\276\0072\005\277\376\013\211>\235\362X\276\031q\031=\034\310\232>\245\3037?\245\227\357\275!g>>\234\351\267\276+\265z\274\373a7\276\230]t\276>\262\331\2768\213\226\276\222b\365\276-}\320>\256\034\242\276L\"\003>b+\253>\262\272\273>\273\243\023?<\223\010>\311Z\255>\000FL<\250:\025?\336\030\306\275\370\357\262?~\240`;\247#\264>\364