diff --git a/avm-transpiler/src/transpile.rs b/avm-transpiler/src/transpile.rs index df6ac3105c48..5e3c81eaa2e9 100644 --- a/avm-transpiler/src/transpile.rs +++ b/avm-transpiler/src/transpile.rs @@ -157,6 +157,24 @@ pub fn brillig_to_avm(brillig: &Brillig) -> Vec { } => { avm_instrs.push(generate_mov_instruction(Some(ALL_DIRECT), source.to_usize() as u32, destination.to_usize() as u32)); } + BrilligOpcode::ConditionalMov { + source_a, + source_b, + condition, + destination, + } => { + avm_instrs.push(AvmInstruction { + opcode: AvmOpcode::CMOV, + indirect: Some(ALL_DIRECT), + operands: vec![ + AvmOperand::U32 { value: source_a.to_usize() as u32 }, + AvmOperand::U32 { value: source_b.to_usize() as u32 }, + AvmOperand::U32 { value: condition.to_usize() as u32 }, + AvmOperand::U32 { value: destination.to_usize() as u32 }, + ], + ..Default::default() + }); + } BrilligOpcode::Load { destination, source_pointer, diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp index e662002ee8c4..22d8b4f21f99 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp @@ -591,6 +591,17 @@ struct BrilligOpcode { static Mov bincodeDeserialize(std::vector); }; + struct ConditionalMov { + Program::MemoryAddress destination; + Program::MemoryAddress source_a; + Program::MemoryAddress source_b; + Program::MemoryAddress condition; + + friend bool operator==(const ConditionalMov&, const ConditionalMov&); + std::vector bincodeSerialize() const; + static ConditionalMov bincodeDeserialize(std::vector); + }; + struct Load { Program::MemoryAddress destination; Program::MemoryAddress source_pointer; @@ -644,6 +655,7 @@ struct BrilligOpcode { Return, ForeignCall, Mov, + ConditionalMov, Load, Store, BlackBox, @@ -5832,6 +5844,68 @@ Program::BrilligOpcode::Mov serde::Deserializable:: namespace Program { +inline bool operator==(const BrilligOpcode::ConditionalMov& lhs, const BrilligOpcode::ConditionalMov& rhs) +{ + if (!(lhs.destination == rhs.destination)) { + return false; + } + if (!(lhs.source_a == rhs.source_a)) { + return false; + } + if (!(lhs.source_b == rhs.source_b)) { + return false; + } + if (!(lhs.condition == rhs.condition)) { + return false; + } + return true; +} + +inline std::vector BrilligOpcode::ConditionalMov::bincodeSerialize() const +{ + auto serializer = serde::BincodeSerializer(); + serde::Serializable::serialize(*this, serializer); + return std::move(serializer).bytes(); +} + +inline BrilligOpcode::ConditionalMov BrilligOpcode::ConditionalMov::bincodeDeserialize(std::vector input) +{ + auto deserializer = serde::BincodeDeserializer(input); + auto value = serde::Deserializable::deserialize(deserializer); + if (deserializer.get_buffer_offset() < input.size()) { + throw_or_abort("Some input bytes were not read"); + } + return value; +} + +} // end of namespace Program + +template <> +template +void serde::Serializable::serialize( + const Program::BrilligOpcode::ConditionalMov& obj, Serializer& serializer) +{ + serde::Serializable::serialize(obj.destination, serializer); + serde::Serializable::serialize(obj.source_a, serializer); + serde::Serializable::serialize(obj.source_b, serializer); + serde::Serializable::serialize(obj.condition, serializer); +} + +template <> +template +Program::BrilligOpcode::ConditionalMov serde::Deserializable::deserialize( + Deserializer& deserializer) +{ + Program::BrilligOpcode::ConditionalMov obj; + obj.destination = serde::Deserializable::deserialize(deserializer); + obj.source_a = serde::Deserializable::deserialize(deserializer); + obj.source_b = serde::Deserializable::deserialize(deserializer); + obj.condition = serde::Deserializable::deserialize(deserializer); + return obj; +} + +namespace Program { + inline bool operator==(const BrilligOpcode::Load& lhs, const BrilligOpcode::Load& rhs) { if (!(lhs.destination == rhs.destination)) { diff --git a/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp b/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp index 32525007e2ad..ca281d89637e 100644 --- a/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp +++ b/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp @@ -571,6 +571,17 @@ namespace Program { static Mov bincodeDeserialize(std::vector); }; + struct ConditionalMov { + Program::MemoryAddress destination; + Program::MemoryAddress source_a; + Program::MemoryAddress source_b; + Program::MemoryAddress condition; + + friend bool operator==(const ConditionalMov&, const ConditionalMov&); + std::vector bincodeSerialize() const; + static ConditionalMov bincodeDeserialize(std::vector); + }; + struct Load { Program::MemoryAddress destination; Program::MemoryAddress source_pointer; @@ -612,7 +623,7 @@ namespace Program { static Stop bincodeDeserialize(std::vector); }; - std::variant value; + std::variant value; friend bool operator==(const BrilligOpcode&, const BrilligOpcode&); std::vector bincodeSerialize() const; @@ -4826,6 +4837,53 @@ Program::BrilligOpcode::Mov serde::Deserializable:: return obj; } +namespace Program { + + inline bool operator==(const BrilligOpcode::ConditionalMov &lhs, const BrilligOpcode::ConditionalMov &rhs) { + if (!(lhs.destination == rhs.destination)) { return false; } + if (!(lhs.source_a == rhs.source_a)) { return false; } + if (!(lhs.source_b == rhs.source_b)) { return false; } + if (!(lhs.condition == rhs.condition)) { return false; } + return true; + } + + inline std::vector BrilligOpcode::ConditionalMov::bincodeSerialize() const { + auto serializer = serde::BincodeSerializer(); + serde::Serializable::serialize(*this, serializer); + return std::move(serializer).bytes(); + } + + inline BrilligOpcode::ConditionalMov BrilligOpcode::ConditionalMov::bincodeDeserialize(std::vector input) { + auto deserializer = serde::BincodeDeserializer(input); + auto value = serde::Deserializable::deserialize(deserializer); + if (deserializer.get_buffer_offset() < input.size()) { + throw serde::deserialization_error("Some input bytes were not read"); + } + return value; + } + +} // end of namespace Program + +template <> +template +void serde::Serializable::serialize(const Program::BrilligOpcode::ConditionalMov &obj, Serializer &serializer) { + serde::Serializable::serialize(obj.destination, serializer); + serde::Serializable::serialize(obj.source_a, serializer); + serde::Serializable::serialize(obj.source_b, serializer); + serde::Serializable::serialize(obj.condition, serializer); +} + +template <> +template +Program::BrilligOpcode::ConditionalMov serde::Deserializable::deserialize(Deserializer &deserializer) { + Program::BrilligOpcode::ConditionalMov obj; + obj.destination = serde::Deserializable::deserialize(deserializer); + obj.source_a = serde::Deserializable::deserialize(deserializer); + obj.source_b = serde::Deserializable::deserialize(deserializer); + obj.condition = serde::Deserializable::deserialize(deserializer); + return obj; +} + namespace Program { inline bool operator==(const BrilligOpcode::Load &lhs, const BrilligOpcode::Load &rhs) { diff --git a/noir/noir-repo/acvm-repo/acir/src/lib.rs b/noir/noir-repo/acvm-repo/acir/src/lib.rs index 29e588744781..d14159f34a16 100644 --- a/noir/noir-repo/acvm-repo/acir/src/lib.rs +++ b/noir/noir-repo/acvm-repo/acir/src/lib.rs @@ -85,10 +85,10 @@ mod reflection { generator.output(&mut source, ®istry).unwrap(); // Comment this out to write updated C++ code to file. - // if let Some(old_hash) = old_hash { - // let new_hash = fxhash::hash64(&source); - // assert_eq!(new_hash, old_hash, "Serialization format has changed"); - // } + if let Some(old_hash) = old_hash { + let new_hash = fxhash::hash64(&source); + assert_eq!(new_hash, old_hash, "Serialization format has changed"); + } write_to_file(&source, &path); } diff --git a/noir/noir-repo/acvm-repo/acir/tests/test_program_serialization.rs b/noir/noir-repo/acvm-repo/acir/tests/test_program_serialization.rs index 238f51b1e280..64385a375822 100644 --- a/noir/noir-repo/acvm-repo/acir/tests/test_program_serialization.rs +++ b/noir/noir-repo/acvm-repo/acir/tests/test_program_serialization.rs @@ -211,11 +211,11 @@ fn simple_brillig_foreign_call() { let bytes = Program::serialize_program(&program); let expected_serialization: Vec = vec![ - 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 173, 143, 65, 10, 192, 32, 12, 4, 77, 10, 165, 244, 212, - 167, 216, 31, 244, 51, 61, 120, 241, 32, 226, 251, 85, 140, 176, 136, 122, 209, 129, 144, + 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 173, 143, 65, 10, 192, 32, 12, 4, 77, 10, 165, 244, 214, + 159, 216, 31, 244, 51, 61, 120, 241, 32, 226, 251, 85, 140, 176, 136, 122, 209, 129, 144, 176, 9, 97, 151, 84, 225, 74, 69, 50, 31, 48, 35, 85, 251, 164, 235, 53, 94, 218, 247, 75, 163, 95, 150, 12, 153, 179, 227, 191, 114, 195, 222, 216, 240, 59, 63, 75, 221, 251, 208, - 106, 207, 232, 150, 65, 100, 53, 33, 2, 9, 69, 91, 82, 144, 1, 0, 0, + 106, 207, 232, 150, 65, 100, 53, 33, 2, 22, 232, 178, 27, 144, 1, 0, 0, ]; assert_eq!(bytes, expected_serialization) @@ -311,15 +311,15 @@ fn complex_brillig_foreign_call() { let bytes = Program::serialize_program(&program); let expected_serialization: Vec = vec![ - 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 213, 84, 65, 14, 132, 32, 12, 108, 101, 117, 205, 158, - 246, 9, 38, 187, 15, 96, 247, 5, 254, 197, 120, 211, 232, 209, 231, 139, 113, 136, 181, 65, + 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 213, 84, 65, 14, 132, 32, 12, 108, 101, 117, 205, 222, + 246, 7, 38, 187, 15, 96, 247, 5, 254, 197, 120, 211, 232, 209, 231, 139, 113, 136, 181, 65, 47, 98, 162, 147, 52, 20, 24, 202, 164, 45, 48, 205, 200, 157, 49, 124, 227, 44, 129, 207, 152, 75, 120, 94, 137, 209, 30, 195, 143, 227, 197, 178, 103, 105, 76, 110, 160, 209, 156, 160, 209, 247, 195, 69, 235, 29, 179, 46, 81, 243, 103, 2, 239, 231, 225, 44, 117, 150, 97, 254, 196, 152, 99, 157, 176, 87, 168, 188, 147, 224, 121, 20, 209, 180, 254, 109, 70, 75, 47, 178, 186, 251, 37, 116, 86, 93, 219, 55, 245, 96, 20, 85, 75, 253, 8, 255, 171, 246, 121, 231, 220, 4, 249, 237, 132, 56, 28, 224, 109, 113, 223, 180, 164, 50, 165, 0, 137, 17, - 72, 139, 88, 97, 4, 198, 90, 226, 196, 33, 5, 0, 0, + 72, 139, 88, 97, 4, 173, 98, 132, 157, 33, 5, 0, 0, ]; assert_eq!(bytes, expected_serialization) diff --git a/noir/noir-repo/acvm-repo/acvm_js/test/shared/complex_foreign_call.ts b/noir/noir-repo/acvm-repo/acvm_js/test/shared/complex_foreign_call.ts index c75a59643473..fba8470585f9 100644 --- a/noir/noir-repo/acvm-repo/acvm_js/test/shared/complex_foreign_call.ts +++ b/noir/noir-repo/acvm-repo/acvm_js/test/shared/complex_foreign_call.ts @@ -2,15 +2,13 @@ import { WitnessMap } from '@noir-lang/acvm_js'; // See `complex_brillig_foreign_call` integration test in `acir/tests/test_program_serialization.rs`. export const bytecode = Uint8Array.from([ - 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 213, 84, 65, 14, 132, 32, 12, 108, 101, 117, 205, 158, - 246, 9, 38, 187, 15, 96, 247, 5, 254, 197, 120, 211, 232, 209, 231, 139, 113, 136, 181, 65, - 47, 98, 162, 147, 52, 20, 24, 202, 164, 45, 48, 205, 200, 157, 49, 124, 227, 44, 129, 207, - 152, 75, 120, 94, 137, 209, 30, 195, 143, 227, 197, 178, 103, 105, 76, 110, 160, 209, 156, - 160, 209, 247, 195, 69, 235, 29, 179, 46, 81, 243, 103, 2, 239, 231, 225, 44, 117, 150, 97, - 254, 196, 152, 99, 157, 176, 87, 168, 188, 147, 224, 121, 20, 209, 180, 254, 109, 70, 75, - 47, 178, 186, 251, 37, 116, 86, 93, 219, 55, 245, 96, 20, 85, 75, 253, 8, 255, 171, 246, - 121, 231, 220, 4, 249, 237, 132, 56, 28, 224, 109, 113, 223, 180, 164, 50, 165, 0, 137, 17, - 72, 139, 88, 97, 4, 198, 90, 226, 196, 33, 5, 0, 0, + 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 213, 84, 65, 14, 132, 32, 12, 108, 101, 117, 205, 222, 246, 7, 38, 187, 15, 96, + 247, 5, 254, 197, 120, 211, 232, 209, 231, 139, 113, 136, 181, 65, 47, 98, 162, 147, 52, 20, 24, 202, 164, 45, 48, + 205, 200, 157, 49, 124, 227, 44, 129, 207, 152, 75, 120, 94, 137, 209, 30, 195, 143, 227, 197, 178, 103, 105, 76, 110, + 160, 209, 156, 160, 209, 247, 195, 69, 235, 29, 179, 46, 81, 243, 103, 2, 239, 231, 225, 44, 117, 150, 97, 254, 196, + 152, 99, 157, 176, 87, 168, 188, 147, 224, 121, 20, 209, 180, 254, 109, 70, 75, 47, 178, 186, 251, 37, 116, 86, 93, + 219, 55, 245, 96, 20, 85, 75, 253, 8, 255, 171, 246, 121, 231, 220, 4, 249, 237, 132, 56, 28, 224, 109, 113, 223, 180, + 164, 50, 165, 0, 137, 17, 72, 139, 88, 97, 4, 173, 98, 132, 157, 33, 5, 0, 0, ]); export const initialWitnessMap: WitnessMap = new Map([ [1, '0x0000000000000000000000000000000000000000000000000000000000000001'], diff --git a/noir/noir-repo/acvm-repo/acvm_js/test/shared/foreign_call.ts b/noir/noir-repo/acvm-repo/acvm_js/test/shared/foreign_call.ts index 527f26b4ae39..dd010f0c5e52 100644 --- a/noir/noir-repo/acvm-repo/acvm_js/test/shared/foreign_call.ts +++ b/noir/noir-repo/acvm-repo/acvm_js/test/shared/foreign_call.ts @@ -2,11 +2,10 @@ import { WitnessMap } from '@noir-lang/acvm_js'; // See `simple_brillig_foreign_call` integration test in `acir/tests/test_program_serialization.rs`. export const bytecode = Uint8Array.from([ - 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 173, 143, 65, 10, 192, 32, 12, 4, 77, 10, 165, 244, 212, - 167, 216, 31, 244, 51, 61, 120, 241, 32, 226, 251, 85, 140, 176, 136, 122, 209, 129, 144, - 176, 9, 97, 151, 84, 225, 74, 69, 50, 31, 48, 35, 85, 251, 164, 235, 53, 94, 218, 247, 75, - 163, 95, 150, 12, 153, 179, 227, 191, 114, 195, 222, 216, 240, 59, 63, 75, 221, 251, 208, - 106, 207, 232, 150, 65, 100, 53, 33, 2, 9, 69, 91, 82, 144, 1, 0, 0, + 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 173, 143, 65, 10, 192, 32, 12, 4, 77, 10, 165, 244, 214, 159, 216, 31, 244, 51, 61, + 120, 241, 32, 226, 251, 85, 140, 176, 136, 122, 209, 129, 144, 176, 9, 97, 151, 84, 225, 74, 69, 50, 31, 48, 35, 85, + 251, 164, 235, 53, 94, 218, 247, 75, 163, 95, 150, 12, 153, 179, 227, 191, 114, 195, 222, 216, 240, 59, 63, 75, 221, + 251, 208, 106, 207, 232, 150, 65, 100, 53, 33, 2, 22, 232, 178, 27, 144, 1, 0, 0, ]); export const initialWitnessMap: WitnessMap = new Map([ [1, '0x0000000000000000000000000000000000000000000000000000000000000005'], diff --git a/noir/noir-repo/acvm-repo/brillig/src/opcodes.rs b/noir/noir-repo/acvm-repo/brillig/src/opcodes.rs index 03a8e53e510b..22a0ebe11704 100644 --- a/noir/noir-repo/acvm-repo/brillig/src/opcodes.rs +++ b/noir/noir-repo/acvm-repo/brillig/src/opcodes.rs @@ -156,6 +156,13 @@ pub enum BrilligOpcode { destination: MemoryAddress, source: MemoryAddress, }, + /// destination = condition > 0 ? source_a : source_b + ConditionalMov { + destination: MemoryAddress, + source_a: MemoryAddress, + source_b: MemoryAddress, + condition: MemoryAddress, + }, Load { destination: MemoryAddress, source_pointer: MemoryAddress, diff --git a/noir/noir-repo/acvm-repo/brillig_vm/src/lib.rs b/noir/noir-repo/acvm-repo/brillig_vm/src/lib.rs index c7bf014f068e..e2a037618a49 100644 --- a/noir/noir-repo/acvm-repo/brillig_vm/src/lib.rs +++ b/noir/noir-repo/acvm-repo/brillig_vm/src/lib.rs @@ -339,6 +339,15 @@ impl<'a, B: BlackBoxFunctionSolver> VM<'a, B> { self.memory.write(*destination_address, source_value); self.increment_program_counter() } + Opcode::ConditionalMov { destination, source_a, source_b, condition } => { + let condition_value = self.memory.read(*condition); + if condition_value.is_zero() { + self.memory.write(*destination, self.memory.read(*source_b)); + } else { + self.memory.write(*destination, self.memory.read(*source_a)); + } + self.increment_program_counter() + } Opcode::Trap => self.fail("explicit trap hit in brillig".to_string()), Opcode::Stop { return_data_offset, return_data_size } => { self.finish(*return_data_offset, *return_data_size) @@ -793,6 +802,52 @@ mod tests { assert_eq!(source_value, Value::from(1u128)); } + #[test] + fn cmov_opcode() { + let calldata = + vec![Value::from(0u128), Value::from(1u128), Value::from(2u128), Value::from(3u128)]; + + let calldata_copy = Opcode::CalldataCopy { + destination_address: MemoryAddress::from(0), + size: 4, + offset: 0, + }; + + let opcodes = &[ + calldata_copy, + Opcode::ConditionalMov { + destination: MemoryAddress(4), // Sets 3_u128 to memory address 4 + source_a: MemoryAddress(2), + source_b: MemoryAddress(3), + condition: MemoryAddress(0), + }, + Opcode::ConditionalMov { + destination: MemoryAddress(5), // Sets 2_u128 to memory address 5 + source_a: MemoryAddress(2), + source_b: MemoryAddress(3), + condition: MemoryAddress(1), + }, + ]; + let mut vm = VM::new(calldata, opcodes, vec![], &DummyBlackBoxSolver); + + let status = vm.process_opcode(); + assert_eq!(status, VMStatus::InProgress); + + let status = vm.process_opcode(); + assert_eq!(status, VMStatus::InProgress); + + let status = vm.process_opcode(); + assert_eq!(status, VMStatus::Finished { return_data_offset: 0, return_data_size: 0 }); + + let VM { memory, .. } = vm; + + let destination_value = memory.read(MemoryAddress::from(4)); + assert_eq!(destination_value, Value::from(3_u128)); + + let source_value = memory.read(MemoryAddress::from(5)); + assert_eq!(source_value, Value::from(2_u128)); + } + #[test] fn cmp_binary_ops() { let bit_size = 32; diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs index f808bfac43b2..0c8df6222df6 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs @@ -1339,18 +1339,23 @@ impl<'block> BrilligBlock<'block> { BrilligBinaryOp::LessThan, ); - self.brillig_context.codegen_branch(result_is_negative.address, |ctx, is_negative| { - if is_negative { - // Two's complement of num - let zero = ctx.make_constant_instruction(0_usize.into(), num.bit_size); - ctx.binary_instruction(zero, num, absolute_value, BrilligBinaryOp::Sub); - ctx.deallocate_single_addr(zero); - } else { - // Simply move the original num - ctx.mov_instruction(absolute_value.address, num.address); - } - }); + // Two's complement of num + let zero = self.brillig_context.make_constant_instruction(0_usize.into(), num.bit_size); + let twos_complement = + SingleAddrVariable::new(self.brillig_context.allocate_register(), num.bit_size); + self.brillig_context.binary_instruction(zero, num, twos_complement, BrilligBinaryOp::Sub); + + // absolute_value = result_is_negative ? twos_complement : num + self.brillig_context.conditional_mov_instruction( + absolute_value.address, + result_is_negative.address, + twos_complement.address, + num.address, + ); + + self.brillig_context.deallocate_single_addr(zero); self.brillig_context.deallocate_single_addr(max_positive); + self.brillig_context.deallocate_single_addr(twos_complement); } fn convert_signed_division( diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/debug_show.rs b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/debug_show.rs index fa99e968a315..5611905697cf 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/debug_show.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/debug_show.rs @@ -121,6 +121,24 @@ impl DebugShow { debug_println!(self.enable_debug_trace, " MOV {}, {}", destination, source); } + /// Emits a conditional `mov` instruction. + pub(crate) fn conditional_mov_instruction( + &self, + destination: MemoryAddress, + condition: MemoryAddress, + source_a: MemoryAddress, + source_b: MemoryAddress, + ) { + debug_println!( + self.enable_debug_trace, + " CMOV {} = {}? {} : {}", + destination, + condition, + source_a, + source_b + ); + } + /// Emits a `cast` instruction. pub(crate) fn cast_instruction( &self, diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/instructions.rs b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/instructions.rs index 5c2a6bfaccae..99fb4c89f641 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/instructions.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/instructions.rs @@ -359,6 +359,25 @@ impl BrilligContext { self.push_opcode(BrilligOpcode::Mov { destination, source }); } + /// Emits a conditional `mov` instruction. + /// + /// Copies the value at `source` into `destination` + pub(crate) fn conditional_mov_instruction( + &mut self, + destination: MemoryAddress, + condition: MemoryAddress, + source_a: MemoryAddress, + source_b: MemoryAddress, + ) { + self.debug_show.conditional_mov_instruction(destination, condition, source_a, source_b); + self.push_opcode(BrilligOpcode::ConditionalMov { + destination, + source_a, + source_b, + condition, + }); + } + /// Cast truncates the value to the given bit size and converts the type of the value in memory to that bit size. pub(crate) fn cast_instruction( &mut self, diff --git a/yarn-project/circuits.js/src/contract/__snapshots__/contract_class.test.ts.snap b/yarn-project/circuits.js/src/contract/__snapshots__/contract_class.test.ts.snap index 52635a4e1eaf..8cfb5bcac13e 100644 --- a/yarn-project/circuits.js/src/contract/__snapshots__/contract_class.test.ts.snap +++ b/yarn-project/circuits.js/src/contract/__snapshots__/contract_class.test.ts.snap @@ -9,18 +9,18 @@ exports[`ContractClass creates a contract class from a contract compilation arti "selector": { "value": 2381782501 }, - "bytecode": "0x1f8b08000000000000ffed9d779815c5b6f67b604064cf8898b3830915c56118e20cb03127cc2822220cc3080a0c51cc98250773468292b380802020a227e7e4497a3c9e74ef3de73cf78ffbddfb05bfdbb577ad3bef14d5c3ecb16bf3eed9d5cf53b3abd754f7fad5dbabab53755741909efe19a6029d6f19a6b3820327f97f52ff967eb3a94b8ceb2a75c95990239c2d7284b3658e7016e60867ab1ce16c9d239c87e508679b1ce13c3c464ec5d622a83fc5cddbd681ae713326724cd3a21cd0b438c7343d2207346d17e4461b75648e70b6cf11cea37284f3e81ce13c2647388fcd11cee37284f3f81ce13c2147384fcc11ce937284f3e41ce13c2547384fcd11ced37284f3f41ce12cc911ce0e39c279468e709e99239c67e508e7d939c2794e8c9c9d80b3a3fe3d57ff9ea77fcfd7bf52f602fd7ba1feedaceb58a8e72f525c61520f69ca8cff750d537998ba85a9bbf1bf1e61ea19a65e61eaadff57a2ff5711a6ca30f50953df30f5d31af40fd3c561ba244c9786e9b2305d1ea62bc2746598ae0ad3d561ba264cd786694098ae0bd3f561ba214c3786e9a630dd1ca65bc234304cb786e9b6300d0ad3ed611a6cb0dc11a62161ba334c43c37457988685697898aac234224cd5611a19a69a30dd1da651611a1da67bc2746f98c684696c98c685a9364ce3c334214c13c334294c93c334254cf785696a98ee0fd303617ad0d0eca1303d1ca647c2f4a8c1392d4c8f85e9f1303d11a627c3f454989e0ed333617a364cd3c334234c33c3342b4cb3c334274c73c3342f4cf3c3b4204ccf85e9f930bd10a617c3f452985e0ed32b617a354caf85e9f530bd11a637c3f49666911d616198de0ed3a2302d0ed392302d0dd33b617a374ccbc2b43c4c2bc2b4324cabc2b43a4c6bc2b4364cebc2b43e4c1bc2b4314c9bc2f45e983687694b98b686e9fd306d0bd3f630ed08d30761da19a65d61fa304cbbc3b4274c7bc3f45198f685e9e330ed0fd32761fa344cdf0ad3b7c3f49d307d374cdf0bd3f70dcd7f10a61f86e94761fab1b6fd44fffe549795fb773f0bd3cf75fe17faf797faf757faf73363995f87e93786edb761fa9d61fb7d983ed7f92ff4ef1ff4ef97faf78ffaf72bfdfb27fdfb67fdfb17fdfb57fdfb37fdfb2ffaf75ff5efbfe9dfbfebdf7fe8df7f8669538774be4d5037258398daa8f29ad4b31f11bf63507f525ab4d4ff93df126d2fd4f3f22bdab5d2f3ad0c7b6b3ddfda584f1b3ddfc6b0b7d7f3ed0dfbd17afe68c37eac9e3fd6b01fafe78f37ec67e9f9b3c09e08e0deb0b62b5b4b6d2a009bc46b0bb0b5d2b696606b2dab03db61dad60a6cb27d5b83ed706d3b0c6c6db5ad0dd812da76b86819a6226d4b0671c54ae970b5dee2b8d7ab9f971d113fef08b5de768e788f8c9f77a45a6f7b07bc2a3e8ed2eb3a12e2e6686d6b0fb663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ed346d3b056ca76bdba9602bd1b6d3c0a69bdce074b09da16d25603b53db3a80ed2c6d3b036c676bdb99603b47dbce029bb4bf67834dce17cfd136d5761c5e00cb68bbb45ba965a4cd06db79d25e83ed7c69abc1d649da69b05d00bec57621b43562ebac6dd26ea9fff5d6f96410d77e5256a3d65b11f77ac335abf5f6897fbda9678e7d833aad93e0a702b4eaa7f331f66bea82be0b74123f622f84fcd55056ca891e72ec1176758ca9d4f97e0d2cd7db58ae18ca545aea9f0ce2ad7f1f83a78fc1dc0af26e62b66b571fb38d9e328ed94150d68c3d390f6a8e313b00381cc46c0f1fb38d9e328ed91a286bc69e9c0b37c798bd03381cc46c959b982d2bf5319bbe6f1604f6d893eba1e618b3a38123fe98ede663b6f153c631fb049435634fae899b63cc4e058ef863b647953f3768f49471ccce87b266ecc9fd99e618b34f03878398adf1ed6ca3a78c63f62d286bc69edc2b6c8e31fb3c70c41fb3bd1cc56c571fb341fa196810d8634fee5b37c7985d041cf1c7ec087f7fb6f153c631bb1dca9ab127cf509a63ccaed379f59ce127fa39c32960fba9b69d0abcf1c776753747b15de6633bdd372408ec312acff39a636c7fa8f32a8e7f01fd11c4f64b6deb00b65f69db1960fb4cdbce847a39d807aafc3ed0e829e37de03750d68c6579b6dc1cf7811f01878398adf631dbe829e398fd1b9435634ffa3934c798fd3d703888d91a1fb38d9e328ed9ff84b266ec9dabf3cd3166a5afa93a5ff8429f2f9c0fb63f685b27b07da96d1780ed8fda7621d8bed2b6ce60fb93b65d04b63f6b5b29d8fea26d5dc0f6576d2b03dbdfb4ad2bd8fe45dbcac1f6afdad60d6cffa66dddc1f6776deb01b67f685b4fb0fd53db7a699b7ade257dafe4bcb50df0278378b7adf4bb9475cb7c972cf86e67f86e9745dfed0ddfed2dbecb1cf84e800f990a8cf924e4cbdcf29416030ffa2a8fdf575755f7ae41e3eb5e0e3cdd1cd43d013e1ac3d30d78bac7cf93eaffdb23fef5a6b6715743d304f8ea0af5eae9a05e05e04bd62df3e2af186cd8b6f6b430f68a9fb1ac007cc9ba65be17308a0ddb7a79e74af61f753cec5850c7eb605f4a9d13893ff96e997094835dca5cd5a18ead93662b82ffe371afbb61731497a9b8105fb26e99177f45509feed9672c6b2c633783d1551b5100be64ddde77dd76903c1ec71d5ceb58db34f15d9105dfbd0cdfe5866f6c3b656ae8d8d60b9863bfe6d4c7b6caf8d75b8ad727726d287ef0fc01afe1e2aa13fa966b43f123f642c85f57505756ca891ed20e0bbb8a65d996c86e2ed7d358ae18ca5458ea9f0ce2ad7fa5c1536930ab6d72091c0b1dec0fa918a8303864be1cb4ab8cd0ae02b49332e78276aedab3de068fcc77071e69c77a008fab6ba2289e6c5c8f1dcc379ec3e2f5b3fc1fcf035c6daf2e06a3ccdbb6572f60b49dab38b89e69f05ca51b308aad37f07475a459d476ed4ae2db41aca4da23f121e7e6b2ff7607bb94e9a55fa8536de53dd056ba88118c47991a7bcd1bff762a4b5d8377cb8007b79d83ebaa2e8ee2b114efdf7c1dc41b6b66bbd4cdd02aea1e8fabb6bcabc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae3b09a3d9ffcdd57dfed4f70ff5ba64fdeab9ceff71da1facac14fbc7483f88f38d3a174299e2167565ff3ff407339f53611fc9ee6eb54b6d4bec8f998479f1877dad705b32f4772a89cd77d90857cfdbd437c0d47734cdbe9fdd2d9abae8ff8c9a16189a627ffc0b0c1e15a7952debd85c3cfbcbf459246a25f9389fed1507f6588f7fbb94d57b66dd22a8df7ee071c655ff1d69abe5797985e1bb10ca9cdca26edb48df2a1963b8abb11cf6fb9175cb32e783bdd258773bbdac70b432d6df03969532a7419bbaa7459d660edacab24cfbaee373f3f88fc3e9e7f85d33e0e9023c2eda1947e71ba5b80fc4fd1cdfec9f663b8f9132d8b7cf41bfca06fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd796933066a9ef43ea79867cab4cd69ffa5e708b3abfae9fc3c933a74e469df1ddd17fb6a82bbb49e78b8203fb3b446d4b57dfa788da96e20fbf3d83cf825c3cd72d005fb2ee328b16922f89cd77fa39be8bb121e4397e5743d7728ba6aef6577cc68a9ae2fedacde0c167a351dff629336c2efb0e45c585f8c37da90c6c92c7f7a35d6c673c9698fd7ac41f3ebffe8ed6b65de06adb9795ba6c37f0bb29c9e0c0f8c6efa9fc10dabe1feb3cf6e1c0be235f58fe2f5343cfa9453f556707dfd72c2d8075c9f6b57ddbb33fb0c6e4bb0baeab40a7fe86068590ffbc455d59292765456b6157fb887c0306d9cde5ba19cb154399be96fa278378eb6f7e6bb59fc1acb6c9cf20cebe80e3bfab36a96f8446e7834652c6f1371badfd2bcd7e85d88eb636cac8b2f82dbabf421b15d57fd4760c707d1c9375db8e63e671a131fd3cf3bd9fd67f417b11773fadff8218c27e5a81b1fe4eb07ee16a1d441f5ba4ccff33d66f9e93cb32d80fec7ff613f89e4b99ce67724e7ea8aeaf6ce7e4b85c54dd15337e072d192333c604b2e079829469abb5966d5619c1ddcbb26c71c4b2a295f9adb0a2e040fddc7c672dbdcff733ea22718ddf20973247435ddc9cb7a4cf015d7d532e097552f9324b5da5cc09b0af9da4f309d84eb8df9e67f9bf4c0d9d03e218ee17c75fe7d4f6bd043893e0077d5f0aac31f9ee82bee51c50fc88bd10f2e7b6ac2b2be5440fd15ad8d53e22e751c86e2e57612c570c65fa5bea9f0ce2adffc506cfc506b3da26a7429c9d07fdd05db5d5fd2334ea041a4919bca768fb0ea8ed5e87abf737a2cea5f0fd25f3fc0a8f936ece9bece7b1e67d35db394227831fcf117a403b9bb09435ef17caf132ce7ec3f8ae440ff08bef4ab8fa76736fd02d09f3785e70287dbbf88eadf217356642ef2cf88e1a33211bbedb1bbedb67d1b7d7dc6bcea4b983310852ef9fe1374bd5d4d079298e4b20cbb500461763392482fadf1e3f18238eef20cbb5044617c7874cbf7dde031865b9426074f16e298ebfd11846fcc6301ee785d1c1b762bb34f55bb1784faf353032bdb389cfa60e034617e7c54d7d570fcfe7dbc0afab7189ba66c058068cb2dce1c0e8e2de385ecb348611af8b64b9b6c0e8e21956a6e33be1b7e7f1deb24bc6868eed8efba294657aefa5d22d4f83e71ae8dbc1b886292df03ee3c1b4e8e396a7c1731ff4ede0be5f4a0b1c67f0605ae0b34117e31e2682facfe10ec683cf2f65b9a38031e988b15f068c4960fc9f7bc5c0d8df11633203c6fec028f66380d1c1fdd71463ff0c18f13ea52c772c305ee288f1e20c182f014659ee386074712f35017e1bc3782930ca72c703e3658e182fcd80f1326094e54e00c6cb1d315e9601e3e5c028cb9d088c573862bc3c03c62b8051963b0918af74c47845068c5702a32c7732305ee588f1ca0c18af024659ee1460bcda11e35519305e0d8cb2dca9c0788d23c6ab3360bc061865b9d380f15a478cd764c0782d30ca72a703e300478cd766c038001865b91260bcce11e3800c18af034659ae03305eef88f1ba0c18af074659ee0c60bcc111e3f51930de008cb2dc99c078a323c61b3260bc111865b9b380f126478c3766c0781330ca726703e3cd8e186fca80f1666094e5ce01c65b1c31de9c01e32dc078b38571a023c65b32601c088cb2dc05c0786bfc8ca96be9811930de0a3cb7c5cf93d2ecd60c786e73cb93faaedead165fb7c7ef2bb52d06058daffbedc033387e9ed4b6b83d031e612886e550b33be2674c69363803c63b806748fc3c29cdeec880670868768745b33be3674c69362403c63b816768fc3c29cdeecc8067286876a745b3bbe2674c69363403c6bb806758fc3c29cdeeca80675850a7d95d16cd86c7cf98d26c58068cc381a72a7e9e9466c333e0a902cd865b341b113f634ab3aa0c1847004f75fc3c29cd4664c0530d9a8db06836327ec69466d519308e049e9af879529a8dcc80a706341b69d1eceef819539ad564c07837f08c8a9f27a5d9dd19f08c02cdeeb668363a7ec69466a332601c0d3cf7c4cf93d26c74063cf78066a32d9addeb88f19e0c18efb5f0c4fd9dec7b2cbec63aaafb98a0f175178662580efb498c73c4383603c671c028cb613f895a478ce33260ac0546592ee198b1a17e12b5e07b7cfcbe53ed526dd0787dc6bbe569b09f04fa9ee0488bf141e3b598e096a7c17e12e87ba2232d26048dd76222f04c72a045027c348647188a6139ec2731d911e3a40c182703a32c87fd24a638629c9c01e3146094e5b09fc47d8e18a764c0781f30ca72d84f62aa23c6fb32609c0a8cb21cf693b8df11e3d40c18ef0746590efb493ce088f1fe0c181f0046590efb493ce888f1810c181f0446590efb493ce488f1c10c181f0246590efb493cec88f1a10c181f0646590efb493ce288f1e10c181f0146590efb493cea88f1910c181f0546590efb494c73c4f868068cd3805196c37e128f39629c9601e363c028cb613f89c71d313e9601e3e3c028cbddeb98b1a1eb97c79bb9efa86b95e6ee3beabaa4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98f7326df4f38f09d001f321518f349c80b43312c77af676cd68cc853121f4f29d61d7d3d4950f7272d3c058eea8ebe9e22a8bb30e41ae31339c0786f0e307a1dd37d109bc2a8789e76c4f354063c4f03cf338e789ece80e719e079367e9e544c3d93018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193da3673c148cb9d0867bc69c88c7b2a6322a9ee9f1f3a4347b36039ee9a0992c779b5bc6b2a6322a9e19f1f3a4349b9e01cf0cd06cba4533078c654d65543c33e3e749693623039e99a0d90c8b660e18cb9acaa87866c5cf93d26c66063cb340b39916cd1c3096359551f1cc8e9f27a5d9ac0c78668366b32c9a39602c6b2aa3e299133f4f4ab3d919f0cc01cd665b3473c058d65446c533377e9e94667332e0990b9acdb168e680b1aca98c8a675efc3c29cde666c0330f349b6bd1cc016359531915cffcf879529acdcb80673e6836cfa2192be3bd39c0f8440e303ad6b1aca98c8a6781239ef919f02c009ee71cf12cc880e739e0793e7e9e544c3d97018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193d63668c4fe600a3dfd69e9195d1c1f55583efd03cd7cc7d47bd43d3dc7d47bd43d3dc7dfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993ef17e2f75d96e937665e001e17dfbc7154cf52b5de17f5babe8e513fa5d54b8656cf195a1543991741bf971ce857007e65dd322ffe3265ee48c0ecc877d911e13a0e87fa8b8f270c3d94ff971dd53daaad7fb999fb8e6aeb9bbbefa8b6beb9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f18df95641dd79bb7cff54ade3159d2fd4f352fe49b04b994987a57fdb057e1f72e1dbef43fe58910fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671ce17e7180f9559e0090c9ea0019ef9643c53c8786691f18c22e31942c6733d19cf25643c0f93f19493f18c27e31941c6732b19cfd5643c1791f1f425e3994ac6d38b8c673619cf3d643ccf90f10c25e3b9918ce732329e47c978cac8782692f18c24e3b99d8ce75a329e2419cf03643c3dc878ce23e3194bc633878ce75c329e61643ccf92f1dc4cc67304194f3b329e2bc8789e22e3b9908ca7828ce731329e79643c93c978ee26e3b9838ca7948ce73a329ece643c1793f13c44c6d38d8c672e194f2d19cf74329e2a329e81643ce793f15c45c6d3928ca70f19cf02329efbc8787a93f18c26e3e944c6732719cf0d643c9792f13c42c6d3958c670219cf0c329e6a329e41643cd790f1f423e3b99f8ca72719cf18329e8e643c7791f1dc44c6938def9966c25344c6534cc6733919cfe3643cd3c878ba90f14c22e39949c65343c633988c6700194f7f329e07c978ba93f18c23e3194ec6730b19cfd3643c4792f1b427e3b9928ca7808027111c38864902feff02d85a18cbaacfbeceee50f7ff57b5bd052cf39aceb7b4acfb55b0c9b7645fb32c8b3abd0a7549ea7ce9379b523aa1af24cc8bbf22e0788d84e74a329ef6643c4792f13c4dc6730b19cf70329e71643cddc9781e24e3e94fc633808c6730194f0d19cf4c329e49643c5dc878a691f13c4ec67339194f31194f1119cf0b643c3791f1dc45c6d3918c670c194f4f329efbc978fa91f15c43c633888ca79a8c670619cf04329eae643c8f90f15c4ac6730319cf9d643c9dc8784693f1f426e3b98f8c6701194f1f329e96643c5791f19c4fc633908ca78a8c673a194f2d19cf5c329e6e643c0f91f15c4cc6d3998ce73a329e52329e3bc878ee26e3994cc6338f8ce731329e0a329e0bc9789e22e3b9828ca71d19cf11643c3793f13c4bc6338c8ce75c329e39643c63c978ce23e3e941c6f300194f928ce75a329edbc9784692f14c24e32923e379948ce732329e1bc9788692f13c43c6730f19cf6c329e5e643c53c978fa92f15c44c6733519cfad643c23c878c693f19493f13c4cc6730919cff5643c43c8784691f1cc22e39942c6339f8ca7d2c2f382231e79df5dd62df32f90f876b01d4ad57a5f7754a737f4ba5ae9f50abff82b8432d3daa67fd5f30f5c56b8ccef13e0bb396f80466f38aa8b6c8f0263fba0ef571cf936c7e793f9579ab9ef7686ef7679e2bbbde1bb7d9ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2ede0daa00cbf93265381319f843c5e2fb8f8be9ca37ad6bb4efc3a46fd94566f1a5a99d756c550e675d0ef4d07fad9ae3d655efc65cadc918019e3a22488372ede8abf4e65aadfe1e1a0eb5b86be58af858e348d3a862c6ce6bea38e21cddd77d431a4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fdb6cec778dd588a3ed4f345b91e781bfc2ed6f98218fdaa752dd2eb2ad4eb168ec5609732ff1b9e6bfa7ddeeff371f9f6c7361fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe99e3dccc4b7ff17381cd557ffea858ccc6bb0487d277542c3677df51b1d8dc7dfb38f771cee47b8903df09f02153437dfc9600cf22073c8eea997ab6b1d4a8d30b469d8aa10c1ee3973aa86701f89575cbfc52e091a912785cc44163b639f2cc27e39942c6338b8c671419cf10329eebc9782e21e379988ca79c8c673c19cf08329e5bc978ae26e3b9888ca72f19cf54329e5e643cb3c978ee21e379868c672819cf8d643c9791f13c4ac65346c633918c672419cfed643cd792f124c9781e20e3e941c6731e19cf58329e39643cc3c8789e25e3b9998ce708329e76643c5790f13c45c67321194f0519cf63643cf3c8782693f1dc4dc67307194f2919cf42329eebc8783a93f15c4cc6f310194f37329eb9643cb5643cd3c978aac8780692f19c4fc67315194f4b329e3e643c0bc878ee23e3e94dc6339a8ca71319cf9d643c3790f15c4ac6f308194f57329e09643c33c878aac9780691f1bc49c6730d194f3f329efbc9787a92f18c21e3e948c6731719cf4d643c45643cc5643c9793f13c4ec6338d8ca70b19cf24329e99643c35643c83c9780690f1f427e379908ca73b19cf38329ee1643cb790f13c4dc67324194f7b329e2bc9780a087812c181effe27e0ff6f824dde517f016cefe8fc22b0b5b0f868a9f34bc156a8f3b28ec3c2f4728703d78d3ab97a2f1f7d25615efc1501c73b243c5792f1b427e339928ce769329e5bc8788693f18c23e3e94ec6f320194f7f329e01643c83c9786ac8786692f14c22e3e942c6338d8ce771329ecbc9788ac9788ac8786e22e3b98b8ca72319cf18329e9e643cf793f1f423e3b9868ce74d329e41643cd5643c33c8782690f17425e379848ce752329e1bc878ee24e3e944c6339a8ca73719cf7d643c0bc878fa90f1b424e3b98a8ce77c329e81643c55643cd3c9786ac978e692f17423e379888ce762329ece643cd791f12c24e32925e3b9838ce76e329ec9643cf3c8781e23e3a920e3b9908ce729329e2bc878da91f11c41c6733319cfb3643cc3c878e690f18c25e3398f8ca70719cf03643c49329e6bc9786e27e31949c633918ca78c8ce751329ecbc8786e24e3194ac6f30c19cf3d643cb3c9787a91f14c25e3e94bc6731119cfd5643cb792f18c20e3194fc6534ec6f33019cf25643cd793f10c21e31945c6338b8c670a19cf7c329ecaecf094a977dba5af75005c382521bf1478163ad0c7513d4bf1bb065fc7b85ea5d5bb86566f1a5a15439925a0dfbb0ef42b00bfb26e99177fb9c8ac781ed779db77201e276114db42b73ca9fdf6f1a0fed4d07efb2ef0b868d71cd533b57f2d33eaf4b845772983b1bacc413d6dfb8ecc2f83ed906bcc8ae7299d17d604947b8a84516c4bddf2a4f6afa782fa5343fbd732e071d1fe38aa676aff5a6ed4e9298bee52066375b9837adaf61d995f0edb21d79815cfd33a2fac0928f73409a3d8de75cb539e803acbd4d0feb51c785cb43f8eea99dabf5618757adaa2bb94c1585de1a09eb67d47e657c076f0cc9ed9c6ac78e4d98eb026a0dc33248c625be694a7bc34017596a9a1766c05f0b868e71de99e6ac7561a757ac6a2bb94c1585de9a09eb67d47e6575a7c9704f16ab1aa115aacb2f0accab216e22f53e62539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9ebac26afb3d7d9ebec758e83d9ebec758e62f63a7b9da3981974563cf2ed4a614d40b9674918c5b6dc2d4feabda06783fa5381319f84fc2ae059e1401f47f54cf5215f6dd4e9598bee5206f7afd50eea69db77647e356c874c9857e620b3d7b969cc8a67bace0b6b02ca4d276114db0ab73ca9766c7a507f6aa81d5b0d3c2eda7947f54cb5636b8c3a4db7e82e6570ff5ae3a09eb67d47e6d7c076f0cc9ed9c6ac7866e8bcb026a0dc0c1246b1ad72ca53967abf7146507f6aa81d5b033c2eda7947baa7dab1b5469d665874973218ab6b1dd4d3b6efc8fc5ad80e9930afcc4166afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9eb9c3f3a2b9e993a2fac0928379384516cab9df2744d3d779819d49f1a7aeeb01678d6c4ce937eeee040f7d4738775469d665a749732b87fad73504fdbbe23f3eb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8a6796ce0b6b02cacd226114db1ab73ca9ef1ecc0aea4f0df5db59073c6b1de8e3a89ea97e3beb8d3acdb2e82e6570ff5aefa09eb67d47e6d7c376f0cc9ed9c6ac7866ebbcb026a0dc6c1246b1ad75cb936ac76607f5a786dab1f5c0e3a29d7754cf543bb6c1a8d36c8bee5206637583837adaf61d99df00dbc1337b661bb3e299a3f3c29a8072734818c5b6ce2d4faa1d9b13d49f1a6ac736008f8b76de513d53edd846a34e732cba4b198cd58d0eea69db77647e236c07cfec996dcc8a67aece0b6b02cacd256114db7ab73c6509a8b34c0db5631b81c7453befa89ea9766c9351a7b916dda50cc6ea2607f5b4ed3b32bf09b643ae312b9e793a2fac0928378f84516c1bdcf2a4f6af7941fda9a1fd6b13f0b8687f1cd533b57fbd67d4699e45772983b1fa9e837adaf61d997f0fb643ae312b9ef93a2fac0928379f84516c1bddf2a4f6aff941fda9a1fdeb3de071d1fe38aa676affda6cd469be45772983b1bad9413d6dfb8ecc6f86ed906bcc8a6781ce0b6b02ca2d2061141b1e2f1638e22936788a2d5a1c2adf6abe42e78bf46f02fe5f018caedac30506a3cc638c23af6bcdda193ced0ccd0ea56f55ff4a9d3f42ffe2f6aa044686edd52e0b9ab53778da1b9a1d4adf4a8b3e3a7fa4fec5edd5071819b6577be071d03e97270c1e353574beb1d9b13e8eea993adfd812d875c7e39094c163f71607f5b49d4bc8fc16d80e9ed933db9815cf409d17d604941b48c22836bc4ed91a3f4f79c2e0515343edd856c7fa38aa67aa1d7b3fb0ebbe1574973218abef3ba86701f89575cbfcfbb01d32615e9983cc5ee7a6312b9e413a2fac0928378884516c5b80675bfc3ce50983474d0db563db1cebe3a89ea9766c7b60d77d1be82e6570ffdaeea09e05e057d62df3db613b64c2bc320799bdce4d63563c83755e5813506e3009a3d8de079e1db1f3a4c703421e3535d48eed70ac8f9b7aa6dbb10f02bbee3b40772983fbd7070eea59007e65dd32ff016c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a6788ce0b6b02ca0d216114db76e0d9193b4ffab903f2a8a9a1e70e3b1debe3a69ee9e70ebb02bbee3b41772983b1bacb413d0bc0afac5be677c176f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7886eabcb026a0dc501246b17d003c1fc6cf539e3078d4d4d073870f1debe3a89ea9e70ebb03bbee1f82ee52066375b7837a16805f59b7ccef86edb0db337b660bb3e219a6f3c29a8072c34818c5b60b78f6c4ce937e7e8a3c6a6aa81ddbe3581f37f54cb7637b03bbee7b40772983b1bad7413d0bc0afac5be6f7c276c88479650e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d87603cf47b1f3742d4d183c6a2a30e69390ffc8b13e6eea997eeeb02fb0ebfe11e82e6570ffdae7a09e05e057d62df3fb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8aa75ae7853501e5aa4918c5b617783e8e9fa73c61f0a8a9c0984f42fe63c7fa38aa67aadfcefec0aefbc7a0bb94c1fd6bbf837a16805f59b7ccef87ede0993db38d59f1d4e8bcb026a05c0d09a3d8f601cf27f1f394250c1e3535d48e7de2581f47f54cb5639f0676dd3f01dda50cc6eaa70eea59007e65dd32ff296c875c63563ca3745e5813506e1409a3d8f6038f83b84bf1141b3c32ff09816f355fabf345fa17b7572d30326cafe22c68d6cee069676876287dabfa8fd7f923f42f6eaff1c0c8b0bdda6541b3f6064f7b43b343e95b693141e78fd4bfb8bd260023c3f66a9f05cd0e657b7828f7ed4319a75ef343a779c121d4bce0106a5ee035a7d2dcc1f1a50c8f650130e09484fca7c0f3edf87952f7e53ecd80e7dbc0f3adf879ba38aa67a95aef77803daef52aadbe6b68f5a9a15531944186ef3ad0af00fccaba655efc7966cf1cc58ce7b6c29a80729f90308aed5bc0e3a2dd5075bf50af4bd6df2a4c9f1d53e7d7c5f312bc57dc4aaf5738c45f219499505257f6779aad08fe2fdb4dd5679f6173f40e7317db733b99177f4541d6eedd36782f19b570f1bc29d3e3fe3e0bcfd7f1f194e27e8ebef63aaa7b26cffef65a7862ac7b97a8e79e7be2af7baafde8acd725eb57fbe8bf1fe354f372dcf7a4fde86cd4b910ca0c28a92bfb1fd07ed8da0ad7fba69c939bfb668ba0ae3d13ae126d379f097daded52ee63288f6d4e85fec5fdb302eaeaaa5d8cbac784eda2d976bbd4de7c2e69fa2e065d3e26d5ccf69c0275acb470571270633c66733f9375db9e91551a3ab26986dbfa638b8e7d2cdc7d08b819f7eb3e868e6c9a1d6cbf1e68e11e48c0cdb85f0f347464d3ec60fbf5200bf720026ec6fd7a90a1239b6607dbaf075bb807137033eed7830d1dd9343bd87e3dc4c23d84809b71bf1e62e8c8a6d9c1f6eba116eea104dc8cfbf550434736cd0eb65f0fb3700f23e066dcaf8705f57564d3ec60fb759585bb8a809b71bfae327464d3ec60fb75b585bb9a809b71bfae367464d3ec60fb758d85bb86809b71bfae317464d3ec60fbf5280bf728026ec6fdbab1fdf659f7eb5a0b772d0137e37e5d6be8c8a6d9c1f6ebf116eef104dc8cfbf578434736cd0eb65f4fb0704f20e066dcaf27183ab26966dbaf1dbd4b98f1bb8dfb9dea931e637a7f063c1f018f8b98721407a58efab9a4faa6ee31b4da6f68856377ec05fd1cf48569f09b04e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f337e97119faf48b98f4918c586cfa45cdce75775bf48af4bd6df2a4c038eabf3bb3776bf65a50586bf247088bf422873d2e975656fd46c45c181db0dc7e2c66db93bf63aa4b7a519ff322ffe8aa03e7b80c7c1fbf9299ebd06cf5e8b16f8de693cbecb46b8d1b8ac547d1feff0a06e3bef36ea839a7e18bbfffa9a16189a7ee8d87722a8bf3d8501a724e491c7c5b36147f54cb505bb8c3a991a1743998e50cf5d0eea59007e65dd32bf0b78646a013cae62303078028b3e325592f14c21e31945c6731619cf10329e13c878ae27e3399c8ce712329e87c978cac978c693f18c20e3399d8ce756329ea3c978ae26e3b9888ca7908ca72f19cf54329e5e643cf790f19c43c633948ce702329e93c8786e24e34990f15c46c6f328194f1919cf44329e91643c1dc8786e27e339968ce75a329ed6643c49329e07c8787a90f19c47c633968ce75c329e61643ca790f1dc4cc67304194f3b329e2bc8781e23e3a920e3b9908c673219cfdd643c6792f1dc41c6534ac6733c19cf75643c9dc9782e26e36943c6f310194f37329e5a329e2a329ed3c8780692f19c4fc6731419cf55643c2dc978fa90f1dc47c6d39b8c6734194f27329eb3c978ee24e339918ce706329eb6643c9792f1ec21e379848ca72b19cf04329e6a329e7d643c25643c83c8788e21e3b9868ca715194f3f329efbc9787a92f18c21e3e948c6731719cfc9643c3791f11491f11493f15c4ec6338d8ca70b19cf24329e1a329e33c8780693f11c47c633808ce730329efe643c0f92f17427e31947c6339c8ce754329e5bc8788e24e3694fc67325194f01014f2238f05b4c09f8ff5eb0c937833e025b0bcbfae439b59457c7c5451d0e5c770bcbba3fb430a04e3ba12e499d2ffd66534a27f4958479f157041c1f92f05c49c6d39e8ce748329e5bc8784e25e3194ec6338e8ca73b19cf83643cfdc9780e23e31940c6731c19cf60329e33c8786ac8782691f17421e39946c67339194f31194f1119cf4d643c2793f1dc45c6d3918c670c194f4f329efbc978fa91f1b422e3b9868ce718329e41643c25643cfbc878aac9782690f17425e379848c670f19cfa5643c6dc9786e20e339918ce74e329eb3c9783a91f18c26e3e94dc6731f194f1f329e96643c5791f11c45c6733e19cf40329ed3c878aac8786ac978ba91f13c44c6d3868ce762329ece643cd791f11c4fc6534ac6730719cf99643c7793f14c26e3b9908ca7828ce731329e2bc878da91f11c41c6733319cf29643cc3c878ce25e3194bc6731e194f0f329e07c87892643cadc978ae25e339968ce776329e0e643c23c9782692f19491f13c4ac67319194f828ce746329e93c8782e20e3194ac6730e19cf3d643cbdc878a692f1f425e32924e3b9888ce76a329ea3c9786e25e3399d8c670419cf78329e72329e87c9782e21e3399c8ce77a329e13c8788690f19c45c6338a8c670a194f25194f0b8307ffafde0ddba3f3f2eda042f8ff44ddb9bc9d5e97949167c4ea5ec507864dd57787a3fa7e10d44d4998df01f515f60f80e703473c3b0d1ed37711e42b41b3ed864d316e73c4b8dd6094f96dc028fa6d079eed8e7876183ca6ef22c8f701cdde376c8a71ab23c6f70d4699df0a8ca2dffbc0f3be239e6d068fe9bb08f20341b32d864d316e76c4b8c56094f9cdc028fa6d019e2d8e78b61a3ca6ef22c80f02cdde336c8a719323c6f70c4699df048ca2df7bc0f39e239ecd068fe9bb08f28341b38d864d316e70c4b8d16094f90dc028fa6d049e8d8e7836193ca6ef22c80f01cdd61b36c5b8ce11e37a8351e6d701a3e8b71e78d63be2d960f098be8b203f14345b6bd814e31a478c6b0d46995f038ca2df5ae059eb88679dc163fa2e82fc30d06cb561538cab1c31ae3618657e15308a7eab8167b5239e35068fe9bb08f255a0d94ac3a6185738625c6930cafc0a6014fd5602cf4a473cab0c1ed37711e4ab41b3e5864d312e73c4b8dc6094f965c028fa2d079ee58e7856183ca6ef22c8d78066ef1a36c5f88e23c6770d46997f071845bf7781e75d473ccb0c1ed37711e44781664b0d9b625ce28871a9c128f34b8051f45b0a3c4b1df1bc63f098be8b205f0b9a2d366c8a719123c6c506a3cc2f0246d16f31f02c76c4b3c4e0317d17417e3c68f6b661538c0b1d31be6d30cafc426014fdde069eb71df12c32784cdf45909f009abd65d814e39b8e18df321865fe4d6014fdde029eb71cf12c34784cdf4590bf196cc2db1b6c6fe87c2fb0bdaef33dc1f69acef700dbab3adf1d6cafe87c37b0bdacf3e5607b49e7bb82ed459d2f03db0b3adf056ccfeb7c5fb03da7f3fdc0b640e793609baff3fdc1364fe72f06db5c9dbf046c7374fe52b0cdd6f9cbc0364be72f07db4c9dbf026c3374fe4ab04dd7f9abc0f6acce5f0db66774fe1ab03dadf3d782ed299d1f00b62775fe3ab03da1f3d783ed719dbf016cf7eafc8d60bb4de76f02db7e9dbf056c9fe8fcad60fb54e76f07dbb774fe0eb07d5be7ef04db7774fe2eb07d57e78783ed7b3a3f026cdfd7f99160fb81cedf0db61feafc68b0fd48e7ef01db8f757e0cd87ea2f363c1f6539d1f07b69fe9fc44b0fd5ce72781ed173a3f196cbfd4f92960fb95cedf07b6cf747e2ad87eadf3f783ed373aff00d87eabf30f82ed773aff10d87eaff30f83ed739d7f046c5fe8fca360fb83ce4f03db973aff18d8fea8f3d2aea976f64f3a5f12c4dbce7e15d44d25e05bfca9327fd6f9d6461959b610ca9ca33b14aa671cea5ba6d20e4bbbac6cd20ebf013669875f079bb4c3af814ddae157c126edf02b609376f865b0493bfc12d8a41d7e116cd20ebf003669879f079bb4c3cf812da9f30bc026edf07cb0493b3c0f6cd20ecf059bb4c373c026edf06cb0493b3c0b6cd20ecf049bb4c333c026edf074b0493bfc2cd8a41d7e066cd20e3f0d3669879f029bb4c34f824ddae127c026edf0e3609376f85eb0493b7c1bd8647ff90a6cd236ef079bb4cd9f804ddae64fc1266df3b7c0266df3b7c1266df377c0266df377c1266df3f7c0266df3f7c1266df30fc0266df30fc1266df38fc0266df38fc13656e77f0236699b7f0a36699b7f0636699b7f0e36699b7f0136699b7f0936699b7f0536699b3f039bb4cdbf069bb4cdbf019bb4cdbf059bb4cdbf039bb4cdbf079bb4cd9f834ddae62fc0266df31fc0f698ce4b5bdd066cf2ac584da5df70c271785a802f614906f1b6fd3825218f7597a9928c673619cf28329e57c878ce22e31942c6730219cfe1643c6f91f18c27e35940c6b3948c670919cf9b643ca793f1ac27e35947c6733419cf07643c3bc8782e22e32924e39949c6f31219cf39643c43c9782e20e339898c2741c6338f8c673119cf22329ed7c9783a90f1ac25e35943c6732c19cf76329e6d643cadc978be22e3994ec6731e19cf0b643ce792f10c23e339858ce708329e76643c15643c1792f1cc21e3799b8c672119cfab643c6792f1ac26e35945c6534ac6733c19cffb643c5bc9783a93f1b421e379868ca7968ce739329e2a329ed3c8780692f19c4fc67314194f4b329e3e643cb791f1cc22e379998ca71319cfd9643c2bc9785690f17c49c6732219cf16329ecd643c6dc978f690f14c20e3994fc6534dc6f30619cf3e329e12329e41643cc790f1b422e3d94fc633838ce745329ee5643ccbc8784e26e3798f8c6713194f11194f3119cf5c329e1a329ed7c878ce20e3194cc6731c19cf61643ccf92f13c4fc6f32e19cf3b643ca792f16c24e3d940c67324194f7b329e5d643c3bc9780a087812c011804dfedf126cf21d9e7d60fb42e7f7804dbee1f316d83ed7f9c7c0f688c5d6c2c2270cd3c026efca7e0136b93ff328d8e49d89cfc126e70de25fcdafe870207f0b5846fcb4b4f0a3bfcf2d5c92c7ed2dcb248378b737fa4a06f66fde15188c879a672719cf2e329ef6643c4792f16c20e3d948c6732a19cf3b643cef92f13c4fc6f32c19cf61643cc791f10c26e339838ce735329e1a329eb9643cc5643c45643c9bc878de23e339998c671919cf72329e17c9786690f1ec27e36945c6730c19cf20329e12329e7d643c6f90f15493f1cc27e39940c6b3878ca72d19cf66329e2d643c2792f17c49c6b3828c672519cfd9643c9dc8785e26e39945c6731b194f1f329e96643c4791f19c4fc633908ce734329e2a329ee7c8786ac9789e21e36943c6d3998c672b19cffb643cc793f19492f1ac22e3594dc6732619cfab643c0bc978de26e39943c67321194f05194f3b329e23c8784e21e31946c6732e19cf0b643ce791f14c27e3f98a8ca73519cf36329eed643cc792f1ac21e3594bc6d3818ce775329e45643c8bc978e691f124c8784e22e3b9808c672819cf39643c2f91f1cc24e32924e3b9888c670719cf07643c4793f1ac23e3594fc6733a19cf9b643c4bc8789692f12c20e3194fc6f31619cfe1643c2790f10c21e3398b8ce715329e51643cb3c9782ac9785a5878f639e2916fc5c8ba657e5f33f7bdc3f0bd234f7c6f337c6fcb13df5b0ddf5bf3c4f766c3f7e63cf1bdc9f0bd294f7c6f307c6fc813dfeb0cdfebf2c4f71ac3f79a3cf1bdcaf0bd2a4f7caf307cafc813dfcb0cdfcbf2c4f73b86ef77f2c4f712c3f7923cf1bdc8f0bd284f7c2f347c2fcc13dfccd7dfea3b61d2577997fe4dc0ff2b80f12d478cfb0c46997f0b18c586dfa3ae70c41375ed5e41e05b6921f7b2e4996702fe5f098cae62aac26094795b4ced009e4a473c51f71c2a097c2b2de45d6ce9539980ffe3f8cbae62aad26094795b4c6d039e3e8e78a2ee95f421f0adb490779fe59dbf04fc1fc75b7715537d0c4699b7c5d456e019e88827ea1ecf4002df4a0bf956987c932601ffc7f1195dc5d4408351e66d3185e3e70e72c413756f6a10816fa5857c6b57be799980ffe3f84dae626a90c128f3b698c2f1e3063be289baa73698c0b7d2429e05cb37da13f0ff21c0e82aa6061b8c326f8b291cef6688239ea87b8143087c2b2d86eabcf4b14ac0ff8702a3ab981a6230cabc2da6d601cf50473c51f7308712f8565a0cd37979872301ff1f068cae626aa8c128f3b6985a033cc31cf144dd7b1d46e05b6951a5f3abf56f02fe5f058cae626a98c128f3b6985a053c558e78a2ee195711f8565a54ebbc7c732e01ffc7f1df873962ac3218657e18308a6d05f0543be289bad75d4de05b6921dff65fae7f13f07f1c8fd5554c551b8c326f8b291c0fbac6114fd43dfa1a02df4a8b513a2f63c224e0ffa380d1554cd5188c326f8b291cbf7294239ea8670ba3087c2b2de4db5c4bf56f02fe5f0b8cae626a94c128f3b6985a023cb58e7816193c8b2c5a1c2adf4a0be9cbbd58ff26e0ffe381d1554cd51a8c326f8ba945c033de114fd4b39cf104be9516f26dedb7f56f02fe3f01185dc5d4788351e66d31b510782638e2897a0635210bbea39ea764c377d4b3816cf88ebacf9d0ddf51f76cb3e13beafe63367c47dd4bcb86efa8fb42d9f01d758f231bbea3aed7b3e13beada331bbea3aea3b2e13bea9a201bbea3ce6fb3e13bea5c2d1bbea3ce3b7c7beedbf3b87d1fca73877c6dcf0fe531f4501e4bfcb581bf36c8966f7f2cf1d706d9f29dafd706be3dcf7e7b2ed75f0541f4f5d83b8e7c2f317ccb3c3e6759e2c8f722c3b7cce33383458e7c2f347ccb3cdeff5ee8c877b1e15be61766c1773bc377bb2cfa6e6ff86e6ff1ed607b972582fad7dfc2805312f218036f3bd0c2513d4bd57a17eb757d1de37a6df76dccfda518ca2c06fd5cb71db26eb3edc845668c8b82f87c9726c0877c974cd9e4f9f11b609376ff75b049bf80d7c026c7a657c126cfa45e019b3cb37a196ca3747e3fd8e4d931f6d997e7ff5bc156a5f3d8577c98ce6f069bf4a5c23ecad21f6e13d8a44f23f68d957ea91bc0267d8bb14fa6f40f5f0736e9e38f7d01e53d8d356093776db00f9abc2fb50a6c7b741efb3ec9776856806d9ace2f07db1f747e19d81ed6f9dbc0f67b9dff0a6cbfd3f985607b48e7df06db6f757e31d81ed4f997c0f61b9d7f116c0fe8fc0b60bb5fe7f15db65febfc4eb07da6f3f80ed5549ddf01b65fe93cbebb739fce6f03db2f75fe79b04dd1f9e7c03659e71780ed173a3f1f6c3fd7f979609ba4f373c1f6339d9f03b6893a3f1b6c3fd5f959601ba7f333c1f6139d9f01b6b13a3f1d6c6374fe59b0fd58e79f01db8f74fe4bb0dda3f38bc0d642e797804dc68cc47e2a853aff0ed85ae93cf63f92effb4f00db613a3f1e6c6d74be166cf26db8516093f1a06bc096d0f96ab015e97c15d8e4fc6c18d864fc93a1609373a921603b52e707834dce7b06814dc6b31c0836f906691fb01da3f39560936feb5780ed389ddf07361973ec2db0c977ebf6804dc6627e146cf2bdea69603b59e7ff00361987e561b09daaf3bf07db693aff3bb0c9373c1f025b89ceff166c1d74fe41b09da1f3bf019b8c91f500d8ced2f9fbc1266307ff1a6cf2bde7cfc0d651e7a782ed5c9dff15d8642c91fbc026e383fe126c9d747e0ad8e43bdc93c176a1ceff026c32dedfcfc126df189e043619d7ed6760eba2f313c156a6f33f055b579d1f07b6729dff09d8bae9fc58b075d7f93160eba1f33f065b4f9dff11d87ae9bcb4336a7f56fbf95e3d9f0ce23b2f53fe3e0aea4f0d5d1b0803f2c479ae5d0c3ce86b77ec752f4b9dd7cb7edf42af57626837f8de15bbeff435c5877a5d857abdbb0cdf8550e65cdd38a8e5e498df522fb7c7580eef63c9ba65998bc0bed358773b5ddf0f1dd57797c124dca88394b94033a963e30f74be0d2c13235beafa58622d000d714a425e18dc6855568ae7bd8de1f9107876c7ce93be5e771113b86fc57dbd6edec73563ad18caec02fd763ad00ff77559b7cc8b3fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8a67afcee3736529b79784516cbb81c7c57d7e7c0e2beb57cf75769e5ee77777ec7eeb3fdf6ba5d75b6ad4b910ca7c0dcf9cf6e87c11fc5fb65bd4b674f09cb0c16d29fe8aa03ef82c68af239edd06cf6e8b16922f89cd77d908371a9795aabe2cea19fb1e43d7bd164d5dedafbbf5ba0a0c4d717ffdc8e0c167a345c0fbb1fe4dc07a3e863a38d8c71b8c0bf187fbd26eb049fe236074b19df15822ed813c0fc767d352e657c673f1f8b77d59a9cb76e303a853323830be0ba1ccefa0edfb5ce7b16fc85ed0ed1f96ffcbd4d0736ad14fd5797bfc754e6ddf6dc099043fe8fb7d608dc977bd77680a74123f622f84fcdfa13f8794133d446b61c7f1ca91dd5cee2363b96228b3c352ff64106ffdb71b3cdb0d66b54dbe8438fb071cff5db5493b2234ba08349232bb41a33d8e78761b3cc221fe5419d9fead8d32b26c2194f95fd046a9ba483b2ff5c4be2d780c70751c135fb26e99b79d1b7f088c661d557c0c38ae8e7777ecbcb9d5ffebb092f42fb6eb71f5ff9275b7d3cb0a4760acbf14d62f5cad83e863cbff6cdf92baf5bbec5fb6c7a8b3b0a0ce52a65d49fa57c5d9e53a9fc9b9fea1ba6e8b3ad7dfe1802711d4bff6565343c7773cc67ce080c7513d4b6dc7ae9d469d8aa14c47a8a783f39806df05de0ebe5d6c73d442cea176195a1442990e25e95f693ba274c46bd50fb3529732ebf960a9a52e52a663495d5dda803d4e2697dbed7da8935aef6e4b5da5cc052575ba74d6f9046c27bc6fd2c7f27f991a6a0f702c9e2df1d739b57d37036712fca0eff7803526dff5be0522e7fbe247ec8590af2ca92b2be5440fd15ad8d53e22effc21bbb9dc2e63b96228b3d552ff64106ffdb7183c5b0c66b54dba94d4e5258e5cb69b5b23342a058da40cde3f96633bbe77673beeef76c41d75dcdf0d8c66bb89e72e2ed9f6186ce63d54dbf9a094c1733229734d49fa57b5b3094b59f3deb08bfb98f80e6a00f5088cbaca8431e0e0dab01caf9da49d123f9dc1be5be745e7ce86768550666049fad7e179b7f5dea5797d87d714c26dee5bf8eec7e0923a6e1c3b71b7fe2d02db27fad7d1755ab9ed9ea170d8ee190e2ba963c765856bbfa52ee635728be0c07bea5f1b65f1be5b43cb9979731c4aa5ef2746399b1fbce689ed5d8d2ea5a5c8d422b0df2ff8c8602f080e1c7353f6038c39f33e4a67633d781fa5b624fd2b6d9259566dfb7f3fa64e1fd98ea21db62718931f016352e74bbfd9d4c5567f99177f8af163a30e6edaaef4fb4a99dc07de033c2eda76476d74291e63dbc4b6de5e55b6e3ff478656597c5e6b3de69bcfdcdb18f9787c9755dbee3fd9b4d865e171f51c254a8b5d16dff169d17d84edf861d362a785676796b5d869f11da3163578dfb3212d3eb0f0b8b817d590161f587cc7a7458fd2869e6ba0163b2c3caeee3d446921fe3265de49c0dcc6c8c7e3bbbcca769fcca6c5760b8fabebe6282db65b7cc7a74597ee788fae212db65978e2bf3fd7b016db2cbee3d3a2672fbc87d79016ef5b785c3dd38dd2e27d8bef18e362a4ed5e8e4d8bad169ead59d662abc5778ce787dd6df7da6c5a6cb1f038b8efdaa0165b2cbe63d46238de776d488bcd169ecd59d662b3c5777c5a5475b3dd13b669f19e85c7d53de1282ddeb3f88e4f8be13d95ef4d8dd0629385675396b5d864f11de335542a2e3636428b8d169e8d59d662a3c5777c5a54a7ceb53634428b0d169e0d59d66283c5777c5a94a68ea9eb1ba1c57a0bcffa2c6bb1dee23bc6b8485d4fae6b8416eb2c3cebb2acc53a8bef188f23a9b858db082dd65a78d666598bb516dff1695193baffb4a6115aacb1f0acc9b2166b2cbe63bce7928a8bd58dd062b585677596b5586df11d9f165d53c7d4558dd0629585675596b55865f11d9f162353cfc45636428b95169e9559d662a5c5778ce79da9f6624523b45861e15991652d56587cc778de99ba7fb1bc115a2cb7f02ccfb216cb2dbe636c3b53e79dcb1aa1c5320bcfb22c6bb1cce23bc6f3ce9416ef36428b772d3cef66598b772dbe633cef4c1d47de698416ef58785c8d8112a5c53b16df31c645aaed5cda082d965a789666598ba516df31ded74ab59d4b1aa1c5120b8fabf11aa2b45862f11de3f548ea1edfe24668b1d8c2b338cb5a2cb6f88ef15951ea1c7c5123b45864e15994652d1681ef3db1fb4ef7e7161fd217eb42438b4228735a87f4aff4c58ad251d681fdcab02e6fc75e9774bfb2851175791bea2265ce82bab4099c8c5154eea8aea998790beaa4d6fbb1a5ae52e6bc0e75ba74d2f9046c93fda05b6fcbff652a30e6939017fd549ddf88bfcea9587d1d3893e0077dbf06ac31f9ee82be0b74123f622f847caf0e7565a59ce8215a0bbbda47ded4796437975b642c570c65deb4d43f19c45bff370c9e370ce6d47b0f106712476edaae34d39b111a5d081a4919ecb3f7b1231eb30fa170883f5546b67f6ba30cf6a1943217431b85fd4aa59e89e0c07e938edab22ec82eeb9679f1570cb63dc068d651c5c767d0f753c68a907124944dc685e80aebe961d8545d7b3aaaabf89275cb7c4f6094712a7a649fb1acb18cdd0d46c5d3db816638f6864c0d1d2f7a034f2f073c8eea993a0e551875ea69d4a918cae0bb8d150eea59007e65dd325f01be5d6c73d4428ec9e7195a14429961c6f963948eb20e15bf3d2c75e9ebb82eb26e6997fa66c177a5e1bb9be13b11d4dfce41d0f0fe5509cc7d1c30abf5f68b7fbda578de2631257eba419dfa830671d509d725e779fd0d6d0b213f05cef3a49c9495e397b0ab58966d89ece672bd8de58aa14c5f4bfd9341bcf5ef67f0f43398d536b907ceed1cec0fa918e86b70c87c37d0ae5f84767d413b2983c7bfee8eb4eb63f0c87c77e091739c0ab0c9b982f027e0ff5db3c06db67b15166eb1e13871dd2d8cdde2674c9deb74371865be1b308aad0ff0543ad2ccdcd6e719fae071b9b55146962d843233e1d898b09455fb5dc782ba7ab5d4f6d8de1dd36d7a6b077ae1388d01e813181a06a097d4b395039eb641dd588d9326d74e1c7ef7c89b46a61f3d0a5aa18189bf05966ab4001be65b5a6c41507f48ca42b0c99094adc0d6c2900587c294f232a49d0bb9500f5977a1c1d90658e2f48dc379cad450e81c063c2e4259858e0ce9a943e7b689a3278fc4f8686570362576d4ff5a36502e6a5daeb683b94f2461de8cc14247fe5b427d93302ffed4b629d6f9f1c347dcdb7fe2dd53c68e1c3779120a65eed8982f08ea6f00f3374a70573b1d060056181b875646bdb0c190ffc986691b3f67398e996b6a13803f99da826e873bd04dad5fc6be1d317ccc981ba6548d193de2f229e3464c1e5d3b0eb7661b43b9a82d2dff6f0d365b138f65d584cd162e7b98c5669b7094e136609323d7e160139eb6606b0979296f6e1927e1da11d62fbb94fa9f12a795aef861415d08c8e158b5ab6aff559f8f55a7416aa86335b4b1da9c6ae86275c7500d4dacbe62a7861e56430daba1854f0ad24307aba1824f0dd24301abaf5d9404e9a17dcf08d243f79e15a487e63d07f8be0dcce706e9d32e35b46ea7203d74aeba75a95e5d579f7953efd6abd377755b409df2aa4b3c75faa94e3bd5e585ba7da16e65a9533a75baac4e05d5e99bba1ce9a7b5ee1fa68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc3744d98ae0dd380305d17a6ebc37443986e0cd34d61ba394cb704e9e19d6f0dd2c3afabe19f6f0fd24343df11a4878dbe33480f297d57901e6e7a78901e8a7a44901ea67a64901ec2faee203dbcf5e8203d4ceebd417aa8ddb1417ab85e351cb61a265b0d9fad86f9554302ab2185d550c36a58623584b11a02590d8dfc60901e72590dd9fc48901ef6795a981e0bd3e3617a224c4f86e9a9303d1da4870757c3864f0fd2c38cabe1c76705e9e1cae704e9e1cdd5b0e76a3874354cba1a3e5d0dabae867957c3bfab61e15f0ed32b617a35483f92508f62d4230a75fb5f3d0653b7a8df0ed2b7ce1707e947dcea91bfea02a1ba84a82e32cb8374172ad5a54c75b1535d0e55174cd5255575d1555d9655176ed5a55d75f157af3ca85740d42b31ea1521f5ca947a854cbd52a75e3154af89aad72ed56bc4eab5eadd41fab6f8de20fda854dd0e578f06d42d7375fbfed3307d2b48c7e477c2f4dd307d2f4cdf0fd30fc2f4c3203dacb11aee580d97ac865656c330ab219bd550ce6a2868356cf467417ae8693574f56f83f490d8bf0fd3e761fa22480faffd6598fe18a6afc2f4a730fd394c7f09d35fc3f4b730fd4b98fe354cff16a6bf87e91f61fa675037cc36362427e9d6475fc104c3274f1e3976fce492c9b52563a78c993c7afc98074aa68e9e3caaa4f6be91136bc6d44ec585bfad179631c2fb4f9c38fc8192d1e3aa47de5f523b6572496d4d4955ed9471d5f50ee27fd10b9d72a0c7e1d5d5d1cefef39b90fedf263a3d5cb78b32fafa550dd7ada865130439aa290b756fd9b40a4dd44730b9d4bd397d1e5c32694cede492d29271e1dff0c05b3b756475e712fcdfa450e449934b264d1e3e717249cdc4dab1255d3ae37a1f6ddb844afc575b3730679fd434713aeaef2c3529c47e797a1314f88fd39b46dabae41b90b62d699ad3929226d4f09ca62c747513096f29899465d294aac913878f981cbdf0eddf64e1bb9a52cd714dace6a91d9ae0eccca62cd4bf43d308ef6a8ab31919380bfe1bc78b38aa8c550600", + "bytecode": "0x1f8b08000000000000ffed9d779815c5b6f67b6040643b0398b3830915c56118e20cb03127cc2822220cc3080a0c51cc98250773468292b380802020869373f2243d1e4fbaf79e739efbc7fdeefd82dfeddabbd69d778aea61f6d8b579f7eceae7a9d9d56baa7bfdeaedd5d5a9baab20484fff0c5381ceb70cd399c18193fc3fa97f4bbfd9d435c67595bae42cc811ce1639c2d93247380b7384b3558e70b6ce11cec37284b34d8e701e1e23a7626b11d49fe2e66deb40d7b8191339a6e91139a069518e695a9c039ab60b72a38d6a9f239c1d7284f3c81ce13c2a47388fce11ce637284f3d81ce13c2e47388fcf11ce137284f3c41ce13c2947384fce11ce537284f3d41ce13c2d47384b7284b3638e709e9e239c67e408e79939c279568e709e1d236767e0eca47fcfd1bfe7eadff3f4af943d5fff5ea07fbbe83a16eaf90b155798d4439a32e37fddc2541ea6ee61ea61fcaf67987a85a97798fae8ff95e8ff5584a9324c7dc3d42f4cfdb50603c27451982e0ed32561ba344c9785e9f2305d11a62bc3745598ae0ed335611a18a66bc3745d98ae0fd30d61ba314c3785e9e6300d0ad32d61ba354c83c3745b9886182cb787696898ee08d3b030dd19a6e1611a11a6aa308d0c5375984685a9264c7785697498c684e9ee30dd13a6b1611a17a6f161aa0dd384304d0cd3a4304d0ed394304d0dd3bd619a16a6fbc2747f981e30347b304c0f85e9e1303d62704e0fd3a3617a2c4c8f87e989303d19a6a7c2f474989e09d38c30cd0cd3ac30cd0ed39c30cd0dd3bc30cd0fd382302d0cd3b3617a2e4ccf87e98530bd18a697c2f472985e09d3ab617a2d4caf87e98d30bda95964475814a6b7c2b4384c4bc2b4344ccbc2f47698de09d3f230ad08d3ca30ad0ad3ea30ad09d3da30ad0bd3fa306d08d3c6306d0ad3e630bd1ba62d61da1aa66d617a2f4cdbc3b4234c3bc3f47e9876856977983e08d39e30ed0dd3be307d18a6fd61fa284c1f87e993307d1aa66f85e9db61fa4e98be1ba6ef85e9fb86e63f08d30fc3f4a330fd58db7ea27f7faacbcafdbb9f85e9e73aff0bfdfb4bfdfb2bfdfb99b1ccafc3f41bc3f6db30fdceb0fd3e4c9febfc17faf70ffaf74bfdfb47fdfb95fefd93fefdb3fefd8bfefdabfefd9bfefd17fdfbaffaf7dff4efdff5ef3ff4ef3fc3b4b9633adf26a89b92414c6d54794dead98f88df29a83f292d5aeaffc96f89b617ea79f915ed5ae9f95686bdb59e6f6daca78d9e6f63d83be8f90e86fd283d7f94613f46cf1f63d88fd3f3c719f633f5fc99604f04706f58db95ada53615804de2b505d85a695b4bb0b596d581ed306d6b0536d9beadc176b8b61d06b6b6dad6066c096d3b5cb40cd311da960ce28a95d2116abd4571af573f2f2b8e9f77a45a6f3b47bcede3e71da5d6dbc101af8a8f23f5bada43dc1ca56d1dc076b4b61d09b663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ed346d3b056c25da762ad874931b9c06b6d3b5ad046c67685b47b09da96da783ed2c6d3b036c676bdb996093f6f72cb0c9f9e2d9daa6da8ec30b60196d97762bb58cb4d9603b57da6bb09d276d35d83a4b3b0db6f3c1b7d82e80b6466c5db44dda2df5bf3e3a9f0ce2da4fca6ad47a2be25e6fb866b5debef1af37f5ccb15f50a77512fc548056fd753ec67e4d5dd177814ee247ec8590bf0aca4a39d1438e3dc2ae8e05953adfbf81e5fa18cb1543994a4bfd9341bcf5ef6bf0f435985b41de4dcc76ebe663b6d153c6313b18ca9ab127e741cd31660702878398ede963b6d153c6315b0365cdd89373e1e618b3b703878398ad7213b365a53e66d3f7cd82c01e7b723dd41c63760c70c41fb3dd7dcc367eca38661f87b266ecc93571738cd969c0117fccf6acf2e7068d9e328ed90550d68c3db93fd31c63f629e07010b335be9d6df49471ccbe0965cdd8937b85cd31669f038ef863b6b7a398ede66336483f030d027becc97debe618b38b8123fe981de9efcf367eca386677405933f6e4194a738cd9f53aaf9e33fc443f6738196c3fd5b6538037fed8aeeeee28b6cb7c6ca7fb8604813d46e5795e738ced0f745ec5f12fa03f82d87ea96d1dc1f62b6d3b1d6c9f69db19502f07fb4095df071a3d65bc0ffc06ca9ab12ccf969be33ef023e07010b3d53e661b3d651cb37f83b266ec493f87e618b3bf070e07315be363b6d153c631fb9f50d68cbd7374be39c6acf43555e70b5fe8f385f3c0f6076deb0cb62fb5ed7cb0fd51db2e00db57dad6056c7fd2b60bc1f6676d2b05db5fb4ad2bd8feaa6d6560fb9bb67503dbbf685b39d8fe55dbba83eddfb4ad07d8feae6d3dc1f60f6deb05b67f6a5b6f6d53fdf4a4ef959cb7b601fe6410efb6957e97b26e99ef9a05dfed0cdfedb2e8bb83e1bb83c5779903df09f0215381319f847c995b9ed262e0415fe5f1fbeaa6eade2d687cddcb81a7bb83ba27c0476378ba034f8ff87952fd7f7bc6bfded436ee66689a005fdda05ebd1cd4ab007cc9ba655efc15830ddbd65e16c6def1339615802f59b7ccf70646b1615b2fef5cc9fea38e879d0aea781dec4ba97322f127df2d138e72b04b992b3bd6b175d66c45f07f3ceef5306c8ee2321517e24bd62df3e2af08ead323fb8c658d65ec6e30ba6a230ac097acdbfbaedb0e92c7e3b8836b1d6b9b26be2bb2e0bbb7e1bbdcf08d6da74c0d1ddb7a0373ecd79cfad85619ff7a4bf1fa44ae0dc50f9e3fe0355c5c7542df726d287ec45e08f96b0beaca4a39d143da616157b12cdb12d9cde57a19cb1543990a4bfd9341bcf5af34782a0d66b54d2e8663a183fd211503150687cc9783769511da55807652e61cd0ce557bd6c7e091f91ec023ed584fe071754d14c5938debb183f9c67358bc7e96ffe37980abedd5d5609479dbf6ea0d8cb6731507d7330d9eab740746b1f5019e6e8e348bdaaedd487c3b8895547b243ee4dc5cf6df1e609732bdf50b75aaadbc1bda4a173182f1285363af79e3df4e65a96bf0ee19f0e0b673705dd5d5513c96e2fd9baf837863cd6c97ba1b5a45dde371d596773378645efc7966cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367e667c6e749d86f4bcaf5206134fbbfb9bacf9ffafea15e97ac5f3dd7f93f4efb83959562ff18e907719e51e7422853d4a2aeecff87fe60e6732aec23d9c3ad76a96d89fd3193302ffeb0af156e4b86fe4e25b1f92e1be9ea799bea63adbea369f6fdec61d1d445ff67d4b4c0d014fbe39f6ff0a838ad6c59c7e6e2d95fa6cf22512bc9c7f96caf38b0c77afcdba5acde33eb1641fdf6038f33aefaef485b2dcfcb2b0cdf8550e6a41675db46fa56c918c3dd8ce5b0df8fac5b96390fec95c6badbeb6585a395b1fe9eb0ac943915dad4bd2dea3473d0569665da771d9f9bc77f1c4e3fc7ef96014f57e071d1ce383adf28c57d20eee7f866ff34db798c94c1be7d0efa5536d8df49fc7966cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367e667563ce6b3567cbfb69c84314b7d1f52cf33e45b65b2fed4f7825bd4f975fd1c4e9e397536ea8cef8efeb3455dd9cd3a5f141cd8df216a5bbafa3e45d4b6147ff8ed197c16e4e2b96e01f892759759b4907c496cbed3cff15d8c0d21cff1bb19ba965b3475b5bfe23356d414f7d7ee060f3e1b8dfab64f996173d977282a2ec41fee4b6560933cbe1fed623be3b1c4ecd723fef0f9f577b4b6ed0357dbbeacd465bb81df4d490607c6377e4fe587d0f6fd58e7b10f07f61df9c2f27f991a7a4e2dfaa93a3bf8be666901ac4bb6afeddb9e03803526df5d715d053a0d30342884fce72deaca4a39292b5a0bbbda47e41b30c86e2ed7dd58ae18caf4b3d43f19c45b7ff35babfd0d66b54d7e0671f6051cff5db549fd22343a0f3492328ebfd968ed5f69f62bc476b4b5514696c56fd1fd15daa8a8fea3b66380ebe398acdb761c338f0b8de9e799effdb4fe0bda8bb8fb69fd17c410f6d30a8cf57786f50b57eb20fad82265fe9fb17ef39c5c96c17e60ffb39fc0f75cca743e9373f243757d653b27c7e5a2eaae98f13b68c9189931269005cf13a44c5badb56cb3ca08eede96658b229615adcc6f85150507eae7e63b6be97dbebf5117896bfc06b994390aeae2e6bc257d0ee8ea9b7249a893ca9759ea2a658e877ded449d4fc076c2fdf65ccbff656ae81c10c770bf28fe3aa7b6efc5c099043fe8fb12608dc97757f42de780e247ec85903fa7655d5929277a88d6c2aef611398f427673b90a63b9622833c052ff64106ffd2f32782e3298d5363905e2ec5ce887eeaaad1e10a15167d048cae03d45db77406df73a5cbdbf11752e85ef2f99e757789c7473de643f8f35efabd9ce113a1bfc788ed013dad984a5ac79bf508e9771f61bc677257a825f7c57c2d5b79bfb806e4998c7f38243e9dbc5776c95bfa83113fa64c177d49809d9f0ddc1f0dd218bbebde65e7326cd1d8c41907aff0cbf59aaa686ce4b715c0259ae0530ba18cb2111d4fff6f8c118717c0759ae2530ba383e64faedf39ec028cb1502a38b774b71fc8dc630e23786f1382f8c0ebe15dbb5a9df8ac57b7aad8191e99d4d7c36751830ba382f6eeabb7a783edf067e5d8d4bd42d03c6326094e50e074617f7c6f15aa6318c785d24cbb5054617cfb0321ddf09bf3d8ff7965d3236746c77dc17a52cd37b2f956e791a3cd740df0ec6354c6981f7190fa6455fb73c0d9efba06f07f7fd525ae0388307d3029f0dba18f73011d47f0e77301e7c7e29cb1d098c49478cfd33604c02e3ffdc2b06c6018e189319300e0046b11f0d8c0eeebfa6180764c088f72965b96380f162478c1765c0783130ca72c702a38b7ba909f0db18c64b8051963b0e182f75c47849068c9702a32c773c305ee688f1d20c182f034659ee0460bcdc11e36519305e0e8cb2dc89c0788523c6cb3360bc021865b99380f14a478c5764c0782530ca722703e3558e18afcc80f12a6094e54e01c6ab1d315e9501e3d5c028cb9d0a8cd73862bc3a03c66b8051963b0d18073a62bc2603c681c028cb9500e3b58e180766c0782d30ca721d81f13a478cd766c0781d30ca72a703e3f58e18afcb80f17a6094e5ce00c61b1c315e9f01e30dc028cb9d098c373a62bc2103c61b8151963b0b186f72c47863068c3701a32c773630deec88f1a60c186f06c69b2c8c831c31de9c01e3206094e5ce07c65be2674c5d4b0fca80f116e0b9357e9e9466b764c073ab5b9ed477f56eb1f8ba2d7e5fa96d3138687cdd6f039e21f1f3a4b6c56d19f00843312c879add1e3f634ab3211930de0e3c43e3e74969767b063c4341b3db2d9add113f634ab3a11930de013cc3e2e749697647063cc340b33b2c9add193f634ab3611930de093cc3e3e749697667063cc3833acdeeb46836227ec69466c333601c013c55f1f3a4341b91014f156836c2a2d9c8f819539a5565c0381278aae3e749693632039e6ad06ca445b351f133a634abce807114f0d4c4cf93d26c54063c35a0d9288b6677c5cf98d2ac2603c6bb806774fc3c29cdeeca80673468769745b331f133a6341b9d01e318e0b93b7e9e94666332e0b91b341b63d1ec1e478c7767c0788f8527eeef64df6df135ce51ddc7068dafbb3014c372d84f62bc23c67119308e0746590efb49d43a621c9f01632d30ca7209c78c0df593a805df13e2f79d6a976a83c6eb33c12d4f83fd24d0f744475a4c081aafc544b73c0df69340df931c69313168bc16938067b2032d12e0a3313cc2500ccb613f89298e182767c03805186539ec2731d511e3940c18a702a32c87fd24ee75c4383503c67b815196c37e12d31c31de9b01e3346094e5b09fc47d8e18a765c0781f30ca72d84fe27e478cf765c0783f30ca72d84fe201478cf767c0f80030ca72d84fe241478c0f64c0f82030ca72d84fe221478c0f66c0f81030ca72d84fe261478c0f65c0f83030ca72d84fe211478c0f67c0f80830ca72d84f62ba23c64732609c0e8cb21cf69378d411e3f40c181f0546590efb493ce688f1d10c181f034659ee1ec78c0d5dbf3cd6cc7d475dab3477df51d725cdddb78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9c33f97edc81ef04f890a9c0984f425e188a61b97b3c63b366449e92f8784ab1eee8eb0982ba3f61e129705477f4f52441dd8521d7181fcf01c67b7280d1eb98ee83d81446c5f394239e2733e0790a789e76c4f354063c4f03cf33f1f3a462eae90c7884a11896bb2707181fcf0146afa3d79189d1eb983f3a7a46cfe8193de3a160cc8536dc33e6443c96359551f1cc889f27a5d93319f0cc00cd64b95bdd3296359551f1cc8c9f27a5d98c0c78668266332c9a39602c6b2aa3e299153f4f4ab39919f0cc02cd665a3473c058d65446c5333b7e9e9466b332e0990d9acdb268e680b1aca98c8a674efc3c29cd6667c03307349b6dd1cc016359531915cfdcf879529acdc980672e6836c7a29903c6b2a6322a9e79f1f3a4349b9b01cf3cd06cae4533078c654d65543cf3e3e74969362f039ef9a0d93c8b660e18cb9acaa87816c4cf93d26c7e063c0b40b3f916cd5819efc901c6c77380d1b18e654d65543c0b1df12cc8806721f03ceb886761063ccf02cf73f1f3a462ead90c7884a11896bb2707181fcf0146afa3d79189d1eb983f3a7a46cfe81933637c220718fdb6f68cac8c0eaeaf1a7c87e6d966ee3bea1d9ae6ee3bea1d9ae6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997c3f1fbfefb24cbf31f33cf0b8f8e68da37a96aaf5bea0d7f5758cfa29ad5e34b47ad6d0aa18cabc00fabde840bf02f02beb9679f197297327026647becb54fb7238d45f7c3c6ee8a1fcbfe4a8ee516dfd4bcddc77545bdfdc7d47b5f5cdddb78f731fe7f9e0dbc7b98ff37cf0ede3dcc7398b6fccb70aeacedbe5fba76a1d2feb7ca19e97f24f805dca4c3e2cfddb3ef0fb900bdf7e1ff2c78a7cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f73be382f86ff5766812730788206781690f14c25e3994dc6339a8c672819cf75643c1793f13c44c6534ec633818c672419cf2d643c5791f15c48c6d38f8c671a194f6f329e39643c7793f13c4dc6338c8ce706329e4bc9781e21e32923e39944c6338a8ce736329e6bc87892643cf793f1f424e339978c671c19cf5c329e73c8788693f13c43c67313194f31194f3b329ecbc9789e24e3b9808ca7828ce751329ef9643c53c878ee22e3b99d8ca7948ce75a329e2e643c1791f13c48c6d39d8c671e194f2d19cf0c329e2a329e41643ce791f15c49c6d3928ca72f19cf42329e7bc978fa90f18c21e3e94cc6730719cff5643c9790f13c4cc6d38d8c672219cf4c329e6a329ec1643c5793f1f427e3b98f8ca71719cf58329e4e643c7792f1dc48c6938def9966c27304194f1119cf65643c8f91f14c27e3e94ac633998c6716194f0d19cf10329e81643c03c8781e20e3e941c6339e8c670419cfcd643c4f91f1b427e3e940c67305194f01014f2238700c9304fcff79b0b53096559f7d9dd3b1eeffaf687b0b58e6559d6f6959f72b60936fc9be6a5916757a05ea92d4f9d26f36a574425f4998177f45c0f12a09cf15643c1dc878da93f13c45c6733319cf08329ef1643c3dc8781e20e31940c633908c6708194f0d19cf2c329ec9643c5dc978a693f13c46c67319194f1119cf11643ccf93f1dc48c67327194f27329eb1643cbdc878ee23e3e94fc6733519cf60329e6a329e99643c13c978ba91f13c4cc6730919cff5643c7790f17426e31943c6d3878ce75e329e85643c7dc9785a92f15c49c6731e19cf20329e2a329e19643cb5643cf3c878ba93f13c48c67311194f17329e6bc9784ac9786e27e3b98b8c670a19cf7c329e47c9782ac8782e20e379928ce772329e76643cc5643c3791f13c43c6339c8ce71c329eb9643ce3c878ce25e3e949c6733f194f928ce71a329edbc8784691f14c22e32923e379848ce752329e1bc8788691f13c4dc6733719cf1c329ede643cd3c878fa91f15c48c6731519cf2d643c23c9782690f19493f13c44c6733119cf75643c43c9784693f1cc26e3994ac6b3808ca7d2c2f3bc231e79df5dd62df3cf93f876b01d4ad57a5f7354a7d7f5ba5ae9f50abff82b8432d3dba67fd5fbe1b8ac7099df27c077735e078d5e775417d91e05c6f641df2f3bf22def68c9ba65fee566eebb9de1bb5d9ef8ee60f8ee9027be7d9cfb38cf07df3ece7d9ce7836f1fe73ece997c3bb83628c3efa4c95460cc27218fd70b2ebe2fe7a89ef5ae13bf8e513fa5d51b8656e6b5553194790df47bc3817eb66b4f99177f9932772260c6b82809e28d8b37e3af53996ab70e075ddf34f4c57a2d72a469d431645133f71d750c69eebea38e21cdddb78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993efb7743ec6ebc652f4a19e2fcaf5c05be07789ce17c4e857ad6bb15e57a15eb7702c01bb94f9dff05cd3eff37e9f8fcbb73fb6f938cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0cd1ce7665efa8b9f036caefaf347c56236de253894bea362b1b9fb8e8ac5e6eedbc7b98f7326df4b1df84e800f991aeae3b71478163be07154cfd4b38d65469d9e37ea540c65f018bfcc413d0bc0afac5be697018f4c95c0e3220e1ab3cd91670119cf54329ed9643ca3c9788692f15c47c6733119cf43643ce5643c13c8784692f1dc42c6731519cf85643cfdc878a691f1f426e39943c6733719cfd3643cc3c8786e20e3b9948ce711329e32329e49643ca3c8786e23e3b9868c2749c6733f194f4f329e73c978c691f1cc25e3194ec6f30c19cf4d643cc5643cedc8782e27e379928ce702329e0a329e47c978e693f14c21e3b98b8ce776329e52329e45643cd792f17421e3b9888ce741329eee643cf3c8786ac9786690f15491f10c22e3398f8ce74a329e96643c7dc9781692f1dc4bc6d3878c670c194f67329e3bc878ae27e3b9848ce761329e6e643c13c9786692f15493f10c26e379838ce76a329efe643cf791f1f422e3194bc6d3898ce74e329e1bc9788e20e32922e3b98c8ce731329ee9643c5dc9782693f1cc22e3a921e31942c633908c670019cf03643c3dc878c693f18c20e3b9998ce729329ef6643c1dc878ae20e32920e0490407befb9f80ffbf01367947fd79b0bdadf38bc1d6c2e2a3a5ce2f035ba1cecb3a0e0bd34b1d0f5c37eae4eabd7cf4958479f157041c6f93f05c41c6d3818ca73d19cf53643c3793f18c20e3194fc6d3838ce701329e01643c03c9788690f1d490f1cc22e3994cc6d3958c673a19cf63643c9791f11491f11c41c6732319cf9d643c9dc878c692f1f422e3b98f8ca73f19cfd5643c6f90f10c26e3a926e39949c633918ca71b19cfc3643c9790f15c4fc67307194f67329e31643c7dc878ee25e35948c6d3978ca72519cf95643ce791f10c22e3a922e39941c6534bc6338f8ca73b19cf83643c1791f17421e3b9968c6711194f2919cfed643c7791f14c21e3994fc6f328194f0519cf05643c4f92f15c4ec6d38e8ca7988ce726329e67c8788693f1cc25e31947c6732e194f4f329efbc97892643cd790f1dc46c6338a8c6712194f1919cf23643c9792f1dc40c6338c8ce769329ebbc978e690f1f426e39946c6d38f8ce742329eabc8786e21e31949c633818ca79c8ce721329e8bc978ae23e3194ac6339a8c673619cf54329e05643c95d9e12953efb64b5feb00b8704a427e19f02c72a08fa37a96e2770dbe8e71bd4aab770cadde30b42a86324b41bf771ce857007e65dd322ffe729159f13ca6f3b6ef403c46c228b6456e7952fbed6341fda9a1fdf61de071d1ae39aa676aff5a6ed4e9318bee52066375b9837adaf61d995f0edb21d79815cf933a2fac0928f72409a3d896b9e549ed5f4f06f5a786f6afe5c0e3a2fd7154cfd4feb5c2a8d39316dda50cc6ea0a07f5b4ed3b32bf02b643ae312b9ea7745e581350ee291246b1bde396a73c017596a9a1fd6b05f0b8687f1cd533b57fad34eaf49445772983b1bad2413d6dfb8eccaf84ede0993db38d59f1c8b31d614d40b9a74918c5b6dc294f796902ea2c5343edd84ae071d1ce3bd23dd58ead32eaf4b445772983b1baca413d6dfb8eccafb2f82e09e2d5627523b4586de1599d652dc45fa6cc4b7390d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7594d5e67afb3d7d9eb1c07b3d7d9eb1cc5ec75f63a473133e8ac78e4db95c29a8072cf90308a6d855b9ed47b41cf04f5a702633e09f9d5c0b3d2813e8eea99ea43bec6a8d33316dda50cee5f6b1cd4d3b6efc8fc1ad80e9930afca4166af73d39815cf0c9d17d604949b41c228b6956e7952edd88ca0fed4503bb606785cb4f38eea996ac7d61a759a61d15dcae0feb5d6413d6dfb8eccaf85ede0993db38d59f1ccd479614d40b999248c625bed94a72cf57ee3cca0fed4503bb616785cb4f38e744fb563eb8c3acdb4e82e653056d739a8a76ddf91f975b01d32615e9583cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7397f74563cb3745e5813506e1609a3d8d638e5e9967aee302ba83f35f4dc611df0b8782ee348f7d47387f5469d6659749732b87fad77504fdbbe23f3eb613b3477e65539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8a67b6ce0b6b02cacd266114db5ab73ca9ef1ecc0eea4f0df5db590f3ceb1ce8e3a89ea97e3b1b8c3acdb6e82e6570ffdae0a09eb67d47e637c076f0cc9ed9c6ac78e6e8bcb026a0dc1c1246b1ad73cb936ac7e604f5a786dab10dc0e3a29d7754cf543bb6d1a8d31c8bee52066375a3837adaf61d99df08dbc1337b661bb3e299abf3c29a8072734918c5b6de2d4faa1d9b1bd49f1a6ac736028f8b76de513d53edd826a34e732dba4b198cd54d0eea69db77647e136c07cfec996dcc8a679ece0b6b02cacd236114db06b73c6509a8b34c0db5639b80c7453befa89ea9766cb351a77916dda50cc6ea6607f5b4ed3b32bf19b643ae312b9ef93a2fac0928379f84516c1bddf2a4f6aff941fda9a1fd6b33f0b8687f1cd533b57fbd6bd469be45772983b1faae837adaf61d997f17b643ae312b9e053a2fac0928b78084516c9bdcf2a4f6af0541fda9a1fdeb5de071d1fe38aa676affda62d4698145772983b1bac5413d6dfb8ecc6f81ed906bcc8a67a1ce0b6b02ca2d2461141b1e2f163ae22932788a2c5a1c2adf4a8b0a9d3f42ff26e0ff15c0e8aa3d5c6830ca3cc6b8d88ab2a0593b83a79da1d9a1f4adb4a884bc9a707b550223c3f66a9705cd3a183c1d0ccd0ea56fa5455f9d6faf7f717bf5054686edd501781cb4cfe50983474d0d9d6f6c71ac8fa37aa6ce37b60676ddf1382465f0d8bdd5413d6de71232bf15b68367f6cc3666c53348e7853501e50691308a0daf53b6c5cf539e3078d4d4503bb6cdb13e8eea996ac7de0becba6f03dda50cc6ea7b0eea59007e65dd32ff1e6c874c9857e520b3d7b969cc8a67b0ce0b6b02ca0d266114db56e0d91e3f4f79c2e0515343edd876c7fa38aa67aa1ddb11d875df0eba4b19dcbf7638a86701f89575cbfc0ed80e9930afca4166af73d39815cf109d17d604941b42c228b6f7806767ec3ce9f18090474d0db5633b1debe3a69ee976ecfdc0aefb4ed05dcae0fef5be837a16805f59b7ccbf0fdbc1337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d3337b3e219aaf3c29a8072434918c5b6037876c5ce937eee803c6a6ae8b9c32ec7fab8a967fab9c3eec0aefb2ed05dca60acee7650cf02f02beb96f9ddb01d3cb367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed93373332b9e613a2fac0928378c84516cef03cf07f1f394270c1e3535f4dce103c7fa38aa67eab9c39ec0aefb07a0bb94c158dde3a09e05e057d62df37b603becf1cc9ed9c2ac7886ebbcb026a0dc701246b1ed069ebdb1f3a49f9f228f9a1a6ac7f63ad6c74d3dd3edd8bec0aefb5ed05dca60acee7350cf02f02beb96f97db01d32615e9583cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7397f74563c553a2fac09285745c228b63dc0f361ec3cdd4a13068f9a0a8cf924e43f74ac8f9b7aa69f3bec0fecba7f08ba4b19dcbff63ba86701f89575cbfc7ed80ecd9d79550e32fbd8c80eb38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c333473133c486e2a9d679614d40b96a1246b1ed039e8fe2e7294f183c6a2a30e69390ffc8b13e8eea99eab7f37160d7fd23d05dcae0fef5b1837a16805f59b7cc7f0cdbc1337b661bb3e2a9d179614d40b91a1246b1ed079e4fe2e7294b183c6a6aa81dfbc4b13e8eea996ac73e0decba7f02ba4b198cd54f1dd4b300fccaba65fe53d80eb9c6ac7846ebbcb026a0dc681246b17d0c3c0ee22ec55364f0c8fc2704be9516b53a7f84fec5ed550b8c0cdbab280b9ab53378da199a1d4adf4a8b099057136eaf09c0c8b0bdda6541b30e064f0743b343e95b693151e7dbeb5fdc5e138191617b75c8826687b23d3c94fbf6a18c53aff9a1d3bce0106a5e7008352ff09a5369eee0f85286c7b20018704a42fe53e0f976fc3ca9fb729f66c0f36de0f956fc3c5d1dd5b354adf73bc01ed77a9556df35b4fad4d0aa18ca20c3771de857007e65dd322ffe3cb3678e62c6735b614d40b94f4818c5f62de071d16ea8ba5fa0d725eb6f15a6cf8eaef3ebe27909de2b6ea5d72b1ce2af10ca4c2ca92bfb3bcd5604ff97eda6eab3dfb0397a87b9abedb99dcc8bbfa2206bf76e1bbc978c5ab878de94e9717fbf85e7ebf8784a713f475ffb1cd53d93677ffb2c3c31d6bd6bd473cfbdf1d73dd57e74d1eb92f5ab7df4df8f76aa7939ee7bd27e7431ea5c08650696d495fd0f683f6c6d85eb7d53cec9cd7db34550d79e095789b69bcf84bed67629f71194c736a742ffe2fe59017575d52e46dd63c276d16cbb5d6a6f3e97347d17832e1f916a667b4e813a565ab82b09b8311eb3b99fc9ba6dcfc82a0d1dd934c36dfd9145c7be16eebe04dc8cfb755f434736cd0eb65f0fb2700f22e066dcaf07193ab26976b0fd7ab0857b300137e37e3dd8d0914db383edd7432cdc4308b819f7eb21868e6c9a1d6cbf1e6ae11e4ac0cdb85f0f357464d3ec60fbf5300bf730026ec6fd7a98a1239b6607dbaf875bb887137033eed7c383fa3ab26976b0fdbacac25d45c0cdb85f57193ab26976b0fdbadac25d4dc0cdb85f571b3ab26976b0fdbac6c25d43c0cdb85fd7183ab26976b0fd7ab4857b340137e37eddd87efbacfb75ad85bb96809b71bfae357464d3ec60fbf5040bf704026ec6fd7a82a1239b6607dbaf275ab827127033eed7130d1dd934b3edd78ede25ccf8ddc68f9dea931e63fae30c783e041e1731e5280e4a1df57349f54ddd6b68f5b1a1158eddb10ff473d017a6c16f12883fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfcccf85d467cbe22e53e2261141b3e9372719f5fd5fd42bd2e597fab300d3cb6ceefbed8fd96951618fe92c021fe0aa1cc89a7d595bd41b31505076e371c8b1bb7e59ed8eb90de9666fccbbcf82b82faec051e07efe7a778f6193cfb2c5ae07ba7f1f82e1be946e3b252f5fd9dc383baedbcc7a80f6afa41ecfeeb6b5a6068fa8163df89a0fef614069c9290471e17cf861dd533d516ec36ea646a5c0c653a413d773ba86701f89575cbfc6ee091a905f0b88ac1c0e0092cfac85449c633958c673419cf99643c43c9788e27e3b98e8ce770329e8bc9781e22e32927e39940c633928ce734329e5bc8788e22e3b98a8ce742329e42329e7e643cd3c8787a93f1dc4dc6733619cf30329ef3c9784e24e3b9818c2741c6732919cf23643c65643c93c8784691f17424e3b98d8ce718329e6bc8785a93f124c978ee27e3e949c6732e19cf38329e73c8788693f19c4cc67313194f31194f3b329ecbc9781e25e3a920e3b9808c670a19cf5d643c6790f1dc4ec6534ac6731c19cfb5643c5dc8782e22e36943c6f320194f77329e5a329e2a329e53c9780691f19c47c6732419cf95643c2dc978fa92f1dc4bc6d3878c670c194f67329eb3c878ee20e339818ce77a329eb6643c9790f1ec25e379988ca71b19cf44329e6a329efd643c25643c83c9788e26e3b99a8ca715194f7f329efbc8787a91f18c25e3e944c6732719cf49643c3792f11c41c65344c6731919cf74329eae643c93c9786ac8784e27e31942c6732c19cf40329ec3c8780690f13c40c6d3838c673c19cf08329e53c8786e26e3694fc6d3818ce70a329e02029e4470e0b79812f0ff7d60936f067d08b61696f5c9736a29af8e8b8b3b1eb8ee1696757f6061409d76415d923a5ffacda6944ee82b09f3e2af08383e20e1b9828ca703194f7b329e9bc9784e21e31941c6339e8ca70719cf03643c03c8780e23e31948c6732c19cf10329ed3c9786ac8782693f17425e3994ec67319194f1119cf11643c3792f19c44c67327194f27329eb1643cbdc878ee23e3e94fc6d38a8ce76a329ea3c9780693f19490f1ec27e3a926e39948c6d38d8ce761329ebd643c9790f1b425e3b99e8ce704329e3bc878ce22e3e94cc633868ca70f19cfbd643c7dc9785a92f15c49c6732419cf79643c83c8784e25e3a922e3a925e3e94ec6f320194f1b329e8bc878ba90f15c4bc6731c194f2919cfed643c6790f1dc45c633858ce702329e0a329e47c9782e27e36947c6534cc6731319cfc9643cc3c978ce21e31947c6732e194f4f329efbc97892643cadc978ae21e339868ce736329e8e643ca3c8782691f19491f13c42c67329194f828ce706329e13c978ce27e31946c6733619cfdd643cbdc978a691f1f423e32924e3b9908ce72a329ea3c8786e21e3398d8c672419cf04329e72329e87c8782e26e3399c8ce73a329ee3c9788692f19c49c6339a8c672a194f25194f0b8307ffafde0ddbabf3f2eda042f8ff24ddb9bcbd5e97949167c4ea5ec5fb864dd577a7a3fabe1fd44d4998df09f515f6f781e77d473cbb0c1ed37711e42b41b31d864d316e77c4b8c36094f9edc028faed009e1d8e78761a3ca6ef22c8f705cdde336c8a719b23c6f70c4699df068ca2df7bc0f39e239eed068fe9bb08f28340b3ad864d316e71c4b8d56094f92dc028fa6d059ead8e78b6193ca6ef22c80f06cdde356c8a71b323c6770d4699df0c8ca2dfbbc0f3ae239e2d068fe9bb08f24340b34d864d316e74c4b8c96094f98dc028fa6d029e4d8e78361b3ca6ef22c80f05cd361836c5b8de11e3068351e6d703a3e8b701783638e2d968f098be8b203f0c345b67d814e35a478ceb0c46995f0b8ca2df3ae059e78867bdc163fa2e82fc70d06c8d61538cab1d31ae3118657e35308a7e6b80678d239eb5068fe9bb08f255a0d92ac3a618573a625c6530cafc4a6014fd5601cf2a473cab0d1ed37711e4ab41b315864d312e77c4b8c26094f9e5c028faad009e158e78561a3ca6ef22c8d78066ef1836c5f8b623c6770c46997f1b1845bf7780e71d473ccb0d1ed37711e4478366cb0c9b625cea887199c128f34b8151f45b063ccb1cf1bc6df098be8b205f0b9a2d316c8a71b123c62506a3cc2f0646d16f09f02c71c4b3d4e0317d17417e0268f69661538c8b1c31be6530cafc226014fdde029eb71cf12c36784cdf45909f089abd69d814e31b8e18df341865fe0d6014fdde049e371df12c32784cdf4590bf096cc2db076cafeb7c6fb0bda6f3bdc0f6aacef704db2b3adf036c2feb7c77b0bda4f3e5607b51e7bb81ed059d2f03dbf33adf156ccfe97c3fb03dabf3fdc1b650e793605ba0f303c0365fe72f02db3c9dbf186c7375fe12b0cdd1f94bc1365be72f03db2c9dbf1c6c3375fe0ab0cdd0f92bc1f68cce5f05b6a775fe6ab03da5f3d780ed499d1f08b62774fe5ab03daef3d781ed319dbf1e6cf7e8fc0d60bb55e76f04dbc73a7f33d83ed1f95bc0f6a9cedf06b66fe9fced60fbb6cedf01b6efe8fc9d60fbaece8f00dbf7747e24d8beaff3a3c0f6039dbf0b6c3fd4f93160fb91cedf0db61febfc58b0fd44e7c781eda73a3f1e6c3fd3f94960fbb9ce4f06db2f747e0ad87ea9f353c1f62b9dbf176c9fe9fc34b0fd5ae7ef03db6f74fe7eb0fd56e71f00dbef74fe41b0fd5ee71f02dbe73aff30d8bed0f947c0f6079d9f0eb62f75fe51b0fd51e7a55d53edec9f74be2488b79dfd2aa89b4ac0b7f85365feacf3ad8d32b26c2194395b772854cf38d4bb4bd20e4bbbac6cd20ebf0e3669875f039bb4c3af824ddae157c026edf0cb609376f825b0493bfc22d8a41d7e016cd20e3f0f3669879f039bb4c3cf822da9f30bc126edf002b0493b3c1f6cd20ecf039bb4c373c126edf01cb0493b3c1b6cd20ecf029bb4c333c126edf00cb0493bfc0cd8a41d7e1a6cd20e3f053669879f049bb4c34f804ddae1c7c126edf063609376f81eb0493b7c2bd8647ff90a6cd2367f0c36699b3f019bb4cd9f824ddae66f814ddae66f834ddae6ef804ddae6ef824ddae6ef814ddae6ef834ddae61f804ddae61f824ddae61f814ddae61f834ddae69f806dbcceff146cd236ff0c6cd236ff1c6cd236ff026cd236ff126cd236ff0a6cd2367f0636699b7f0d36699b7f0336699b7f0b36699b7f0736699b7f0f36699b3f079bb4cd5f804ddae63f80ed519d97b6ba0dd8e459b19a4abfe184e3f0b4005fc2920ce26dfb714a421eeb2e532519cf1c329ed1643c2f93f19c49c633948ce778329ec3c978de24e39940c6b3908c671919cf52329e37c8784e23e3d940c6b39e8ce728329ef7c9787692f15c48c65348c6338b8ce745329eb3c9788691f19c4fc67322194f828c673e19cf12329ec5643caf91f17424e35947c6b3968ce718329e1d643cdbc9785a93f17c45c633838ce75c329ee7c978ce21e3194ec67332194f31194f3b329e0a329e0bc878e692f1bc45c6b3888ce715329e33c878d690f1ac26e32925e3398e8ce73d329e6d643c5dc878da90f13c4dc6534bc6f32c194f1519cfa9643c83c878ce23e339928ca725194f5f329e5bc9786693f1bc44c6d3998ce72c329e55643c2bc978be24e339818c672b19cf16329eb6643c7bc9782692f12c20e3a926e3799d8c673f194f0919cf60329ea3c9785a91f17c4cc633938ce705329e15643ccbc9784e22e379978c673319cf11643c45643cf3c8786ac8785e25e3399d8c670819cfb1643c8791f13c43c6f31c19cf3b643c6f93f19c42c6b3898c6723194f7b329e0e643cbbc9787691f11410f0248023009bfcbf25d8e43b3cfbc1f685ceef059b7cc3e74db07daef38f82ed618bad85854f18a6834dde95fd026c727fe611b0c93b139f834dce1bc4bf9a5fd9f140fe16b08cf86969e1477f9f5bb8248fdb5b964906f16e6ff4950cecdfbc2b30180f35cf2e329edd643c1dc878da93f16c24e3d944c6730a19cfdb643cef90f13c47c6f30c19cf61643cc792f10c21e3399d8ce755329e1a329e79643c45643c4790f16c26e379978ce724329ee5643c2bc8785e20e39949c6f331194f2b329ea3c9780693f19490f1ec27e3799d8ca79a8c670119cf44329ebd643c6dc978b690f16c25e339818ce74b329e95643cabc878ce22e3e94cc6f31219cf6c329e5bc978fa92f1b424e339928ce73c329e41643ca792f15491f13c4bc6534bc6f334194f1b329e2e643cdbc878de23e3398e8ca7948c673519cf1a329e33c8785e21e35944c6f31619cf5c329e0bc8782ac878da91f11493f19c4cc6339c8ce71c329ee7c978ce25e39941c6f315194f6b329eed643c3bc8788e21e3594bc6b38e8ca72319cf6b643c8bc9789690f1cc27e34990f19c48c6733e19cf30329eb3c9785e24e39945c65348c6732119cf4e329ef7c9788e22e3594fc6b3818ce734329e37c8789692f12c23e35948c633818ce74d329ec3c9788e27e3194ac6732619cfcb643ca3c978e690f15492f1b4b0f0ec77c423df8a9175cbfcfe66ee7ba7e17b679ef8de6ef8de9e27beb719beb7e589ef2d86ef2d79e27bb3e17b739ef8de68f8de9827bed71bbed7e789efb586efb579e27bb5e17b759ef85e69f85e9927be971bbe97e789efb70ddf6fe789efa586efa579e27bb1e17b719ef85e64f85e9427be99afbf553f5ce9abbc5bff26e0ff15c0f8a623c6fd06a3ccbf098c62c3ef515738e289ba76af20f0adb4907b59f2cc3301ffaf04465731556130cabc2da676024fa5239ea87b0e9504be9516f22eb6f4a94cc0ff71fc655731556930cabc2da6b6034f5f473c51f74afa12f8565ac8bbcff2ce5f02fe8fe3adbb8aa9be06a3ccdb626a1bf00c72c413758f6710816fa5857c2b4cbe499380ffe3f88cae626a90c128f3b698c2f173073be289ba373598c0b7d242beb52bdfbc4cc0ff71fc26573135d86094795b4ce1f871431cf144dd531b42e05b6921cf82e51bed09f8ff5060741553430c4699b7c5148e7733d4114fd4bdc0a104be9516c3745efa5825e0ffc380d1554c0d351865de1653eb816798239ea87b98c3087c2b2d86ebbcbcc39180ff0f0746573135cc6094795b4cad059ee18e78a2eebd0e27f0adb4a8d27979a73f01ffaf0246573135dc6094795b4cad069e2a473c51f78cab087c2b2daa755ebe399780ffe3f8efc31d3156198c323f1c18c5b61278aa1df144ddebae26f0adb4906ffbafd0bf09f83f8ec7ea2aa6aa0d4699b7c5148e075de38827ea1e7d0d816fa5c5689d97316112f0ffd1c0e82aa66a0c4699b7c5148e5f39da114fd4b385d104be9516f26dae65fa3701ffaf0546573135da6094795b4c2d059e5a473c8b0d9ec5162d0e956fa585f4e55ea27f13f0ff09c0e82aa66a0d4699b7c5d462e099e08827ea59ce0402df4a0bf9b6f65bfa3701ff9f088cae626a82c128f3b6985a043c131df1443d839a9805df51cf53b2e13bead940367c47dde7ce86efa87bb6d9f01d75ff311bbea3eea565c377d47da16cf88ebac7910ddf51d7ebd9f01d75ed990ddf51d751d9f01d754d900ddf51e7b7d9f01d75ae960ddf51e71dbe3df7ed79dcbe0fe5b943beb6e787f2187a288f25fedac05f1b64cbb73f96f86b836cf9ced76b03df9e67bf3d97ebaf8220fa7aec6d47be971abe651e9fb32c75e47bb1e15be6f199c16247be1719be651eef7f2f72e4bbc8f02df38bb2e0bb9de1bb5d167d77307c77b0f876b0bdcb1241fdeb6f61c02909798c81b71c68e1a89ea56abd4bf4babe8e71bdb6fb36e6fe520c6596807eaedb0e59b7d976e42233c645417cbe4b13e043be4ba66cf2fcf875b049bbff1ad8a45fc0ab609363d32b609367522f834d9e59bd04b6d13aff31d8e4d931f6d997e7ffdbc056a5f3d8577cb8ce6f019bf4a5c23ecad21f6e33d8a44f23f68d957ea91bc1267d8bb14fa6f40f5f0f36e9e38f7d01e53d8db56093776db00f9abc2fb51a6c7b751efb3ec9776856826dbaceaf00db1f747e39d81ed2f95bc1f67b9dff0a6cbfd3f945607b50e7df02db6f757e09d81ed0f917c1f61b9d7f016cf7ebfcf360bb4fe7f15db65febfc2eb07da6f3f80ed5349ddf09b65fe93cbebb73afce6f07db2f75fe39b04dd5f967c13645e71782ed173abf006c3fd7f9f9609bacf3f3c0f6339d9f0bb6493a3f076c3fd5f9d9601baff3b3c0f6139d9f09b6713a3f036c6375fe19b0fd58e79f06db8f74fe4bb0ddadf38bc1d642e797824dc68cc47e2a853aff36d85ae93cf63f92effb4f04db613a3f016c6d74be166cf26db8d16093f1a06bc096d0f96ab01da1f3556093f3b3e16093f14f86814dcea58682adbdce0f019b9cf70c069b8c6739086cf20dd2be603b5ae72bc126dfd6af00dbb13abf1f6c32e6d89b6093efd6ed059b8cc5fc08d8e47bd5d3c17692ceff016c320ecb43603b45e77f0fb65375fe7760936f783e08b6129dff2dd83aeafc03603b5de77f03361923eb7eb09da9f3f7814dc60efe35d8e47bcf9f81ad93ce4f03db393aff2bb0c95822f7824dc607fd25d83aebfc54b0c977b8a780ed029dff05d864bcbf9f834dbe313c196c32aedbcfc0d655e72781ad4ce77f0ab66e3a3f1e6ce53aff13b075d7f97160eba1f363c1d653e77f0cb65e3aff23b0f5d6796967d4feacf6f37d7a3e19c4775ea6fc7d18d49f1aba361006e489f35cbb1878d0d79ed8eb5e963aaf97fdbe855eafc4d01ef0bd3b76dfe96b8a0ff4ba0af57a771bbe0ba1cc39ba7150cbc931bfa55e6eafb11cdec79275cb3217827d97b1eef6babe1f38aaef6e8349b851072973be6652c7c61fe87c1b582646b6d4f5b1c45a001ae29484bc30b8d1aaac14cf7b1bc3f301f0ec899d277dbdee222670df8afb7addbc8f6bc65a3194d90dfaed72a01feeebb26e99177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f99915cf3e9dc7e7ca526e1f09a3d8f6008f8bfbfcf81c56d6af9eebec3aadceef9ed8fdd67fbed74aafb7d4a8732194f91a9e39edd5f922f8bf6cb7a86de9e0396183db52fc15417df059d03e473c7b0c9e3d162d245f129befb2916e342e2b55fd56d433f6bd86aefb2c9abada5ff7e87515189ae2fefaa1c183cf468b80f723fd9b80f57c047570b08f371817e20ff7a53d6093fc87c0e8623be3b144da03791e8ecfa6a5ccaf8ce7e2f16ffbb25297edc6fb50a76470607c174299df41dbf7b9ce63df907da0db3f2cff97a9a1e7d4a29faaf38ef8eb9cdabedb8133097ed0f77bc01a93ef7aefd014e8247ec45e08f9bf437f0e29277a88d6c28ee39523bbb9dc87c672c55066a7a5fec920defaef30787618cc6a9b7c0971f60f38febb6a937646687421682465f680467b1df1ec31788443fca932b2fd5b1b6564d94228f3bfa08d527591765eea897d5bf018e0ea3826be64dd326f3b37fe0018cd3aaaf818786c1def9ed87973abffd76125e95f6cd7e3eaff25eb6eaf97158ec0587f29ac5fb85a07d1c796ffd9be2575eb77d9bf6caf516761419da54cbb92f4af8ab3cb743e9373fd4375dd1675aebfd3014f22a87fedada6868eef788c79df018fa37a96da8e5dbb8c3a1543994e504f07e7310dbe0bbc037cbbd8e6a8859c43ed36b42884321d4bd2bfd27644e988d7aa1f64a52e65d6f3c1524b5da44ca792babab4017b9c4c2eb7db7b5027b5de3d96ba4a99f34bea74e9a2f309d84e78dfa4afe5ff3235d41ee0583c5be3af736afb6e01ce24f841dfef026b4cbeeb7d0b44cef7c58fd80b215f59525756ca891ea2b5b0ab7d44def9437673b9ddc672c550669ba5fec920defa6f3578b61acc6a9b742da9cb4b1cb96c37b74568540a1a4919bc7f2cc7767cefce76dcdfe3883beab8bf0718cd7613cf5d5cb2ed35d8cc7ba8b6f3412983e76452e6ea92f4af6a671396b2e6bd6117f731f11dd400ea111875950963c0c1b561395e3b493b257eba807d8fce8bce5d0ced0aa1cca092f4afc3f36eebbd4bf3fa0eaf2984dbdcb7f0dd8f212575dc3876e21efd5b04b64ff4afa3ebb472db3d43e1b0dd331c5e52c78ecb0ad7c796ba98d7c82d8203efa97f6d94c5fb6e0d2d67e6cd712895be9f18e56c7ef09a27b67735ba969622538bc07ebfe04383bd203870cc4dd90f30e6ccfb285d8cf5e07d94da92f4afb4496659b5edfffde83a7d643b8a76d89e604c7e088c499d2ffd6653575bfd655efc29c68f8c3ab869bbd2ef2b65721f782ff0b868db1db5d1a5788c6d13db7a7b57d98eff1f1a5a65f179adf5986f3e736f63e4e3f15d566dbbff64d362b785c7d57394282d765b7cc7a7458f91b6e3874d8b5d169e5d59d66297c5778c5ad4e07dcf86b478dfc2e3e25e54435abc6ff11d9f163d4b1b7aae815aecb4f0b8baf710a585f8cb94791701731b231f8feff22adb7d329b163b2c3caeae9ba3b4d861f11d9f165d7be03dba86b4d86ee189fffe5cc35a6cb7f88e4f8b5ebdf11e5e435abc67e171f54c374a8bf72cbe638c8b51b67b39362db65978b665598b6d16df319e1ff6b0dd6bb369b1d5c2e3e0be6b835a6cb5f88e518b1178dfb5212db65878b664598b2d16dff16951d5dd764fd8a6c5bb161e57f784a3b478d7e23b3e2d46f452be3737428bcd169ecd59d662b3c5778cd750a9b8d8d4082d3659783665598b4d16dff169519d3ad7dad8082d365a783666598b8d16dff169519a3aa66e6884161b2c3c1bb2acc5068bef18e322753db9be115aacb7f0accfb216eb2dbe633c8ea4e2625d23b45867e15997652dd6597cc7a7454deafed3da4668b1d6c2b336cb5aacb5f88ef19e4b2a2ed634428b35169e3559d6628dc5777c5a744b1d535737428bd5169ed559d662b5c5777c5a8c4a3d135bd5082d5659785665598b5516df319e77a6da8b958dd062a585676596b55869f11de37967eafec58a4668b1c2c2b322cb5aacb0f88eb1ed4c9d772e6f8416cb2d3ccbb3acc5728bef18cf3b535abcd3082ddeb1f0bc93652ddeb1f88ef1bc33751c79bb115abc6de17135064a94166f5b7cc71817a9b6735923b45866e15996652d96597cc7785f2bd5762e6d84164b2d3caec66b88d262a9c5778cd723a97b7c4b1aa1c5120bcf922c6bb1c4e23bc66745a973f0c58dd062b185677196b5580cbef7c6ee3bdd9f5b7c485fac0b0c2d0aa1cca91dd3bfd2172b4a475907f62bc3babc157b5dd2fdca1645d4e52da88b943913ead22670324651b9a3baa662e64da8935aef4796ba4a99733bd6e9d259e713b04d3e06ddfa58fe2f5381319f84bce8a7eafc7afc754ec5ea6bc099043fe8fb55608dc97757f45da093f8117b21e47b77ac2b2be5440fd15ad8d53ef286ce23bbb9dc6263b96228f386a5fec920defabf6ef0bc6e30a7de7b8038933872d376a599de88d0e802d048ca609fbd8f1cf1987d088543fca932b2fd5b1b65b00fa594b908da28ec572af54c0407f69b74d49675457659b7cc8bbf62b0ed0546b38e2a3e3e83be9f3256848c23a16c322e4437584f4fc3a6eadacb515dc597ac5be67b01a38c53d133fb8c658d65ec61302a9e3e0e34c3b137646ae878d107787a3be07154cfd471a8c2a8532fa34ec55006df6dac7050cf02f02beb96f90af0ed629ba316724c3ed7d0a210ca0c37ce1fa3749475a8f8ed69a94b3fc77591754bbbd42f0bbe2b0ddfdd0ddf89a0fe760e8286f7af4a60eeeb8059adb77ffceb2dc5f3368929f1d31dea34003488ab4eb82e39cf1b60685b08f9a9709e27e5a4ac1cbf845dc5b26c4b643797eb632c570c65fa59ea9f0ce2ad7f7f83a7bfc1acb6c9dd706ee7607f48c5403f8343e6bb8376fd23b4eb07da49193cfef570a45d5f8347e67b008f9ce354804dce15843f01ffef96056eb3ddabb0708b0dc789eb6161ec1e3f63ea5ca787c128f3dd81516c7d81a7d29166e6b63ed7d0078fcbad8d32b26c21949905c7c684a5acdaef3a15d4d5aba5b6c7f6ee986ed35b3bd00bc7690c409fc0d03000bda49ead1cf0b40deac66a9c3ca576d288bb46dd382afde851d00a0d4cfc2db054a305d830dfd2620b82fa435216824d86a46c05b616862c3814a6949721ed5cc8857ac8ba0b0dce36c012a76f1cce53a68642e730e07111ca2a7464484f1d3ab74e1a336514c6472b83b329b1a3fed7b2817251eb72b51dcc7d2209f3660c163af2df12ea9b8479f1a7b68d0cad3a61c4c87b064cba6beab851e3a74c46a1cc1d1bf30541fd0d60fe4609ee6aa7c300c00a63e3d0caa8173618f23fd9306de3e72cc731734d6d02f027535bd0ed7007baa9f5cbd8b723478c1d7bfdd4aab163465e3675fcc829636ac7e3d66c632817b5a5e5ffadc1666be2b1ac9ab0d9c2650fb3d86c138e32dc066c72e43a1c6cc2d3166c2d212fe5cd2de3245c3bc1fa659752ff53e2b4d2153f2ca80b01391cab7655edbfea544e7d42569d0aa9a18dd5e6544317ab3b866a6862f5153b35f4b01a6a580d2d7c62901e3a580d157c4a901e0a587deda224480fed7b7a901ebaf7cc203d34efd9c0f76d603e27489f76a9a1753b07e9a173d5adcb2e41fa336feadd7a75faae6e0ba8535e7589a74e3fd569a7babc50b72fd4ad2c754aa74e97d5a9a03a7d539723fdb5d603c27451982e0ed32561ba344c9785e9f2305d11a62bc3745598ae0ed335611a18a66bc3745d98ae0fd30d61ba314c3785e9e6203dbcf32d417af87535fcf36d417a68e8db83f4b0d17704e921a5ef0cd2c34d8f08d243518f0cd2c3548f0ad24358df15a487b71e13a487c9bd27480fb5ab86e01d1fa487c356c364abe1b3d530bf6a486035a4b01a6a580d4bac8630564320aba1911f08d2432eab219b1f0ed2c33e4f0fd3a3617a2c4c8f87e989303d19a6a782f4f0e06ad8f019417a987135fcf8ec203d5cf9dc203dbcb91af65c0d87ae864957c3a7ab61d5d530ef6af877352cfc4b617a394caf04e94712ea518c7a44a16effabc760ea16f55b41fad6f99220fd885b3df2575d20549710d545664590ee42a5ba94a92e76aacba1ea82a9baa4aa2ebaaacbb2eac2adbab4ab2efeea9507f50a887a2546bd22a45e9952af90a957ead42b86ea3551f5daa57a8d58bd56bd2748df16df17a41f95aadbe1ead180ba65ae6edf7f1aa66f05e998fc4e98be1ba6ef85e9fb61fa41987e18a4873556c31dabe192d5d0ca6a18663564b31aca590d05ad868dfe2c480f3dad86aefe6d901e12fbf761fa3c4c5f04e9e1b5bf0cd31fc3f45598fe14a63f87e92f61fa6b98fe16a67f09d3bf86e9dfc2f4f730fd234cff0cea86d9c686e444ddfae82b9860c49429a3c64d985232a5b664dcd4b153c64c187b7fc9b431534697d4de3b6a52cdd8da69b8f0b7f5c23246f880499346dc5f32667cf5a8fb4a6aa74e29a9ad29a9aa9d3abebade41fc2f7aa1930ff438a2ba3adad97f7e13d2ffdb44a787eb7651465fbfb2e1ba1dd1b209821cd994857ab46c5a8526e923985ceade943e0f2e993cb6764a4969c9f8f06f78e0ad9d36aaba4b09fe6f7228f2e4292593a78c9834a5a46652edb892ae5d70bd8fb46d4225feabad1b98b34e6c9a389df477969a1462bf3cad090afcc7694d236d5df20d48db9634cd694949136a78765316baaa8984379744ca32796ad5944923464e895ef8b66fb2f09d4da9e6f82656f3948e4d70764653161ad0b169847736c5d9cc0c9c05ff0d9c7a335e8c550600", "isInternal": false }, { "selector": { "value": 2603445359 }, - "bytecode": "0x1f8b08000000000000ffed9d77741cc791c6679118164b1024c11ca04433015c2c12012630674a9464e5409004455a24419150b22c4bb224e79cb3e5749673ce675db4efce77bef339c83947c9e9feb9e77b77eff95df76c97f1a139b3c64253600db6e6bde2f6147aa77efd4d75ef6cf7ec301314b73f18cbb872b5b18b827337fa7b9f7bcd3fb5ad2dc163e539393329e1ac4a0967754a386b52c2599b12ceba94704e4a09e7e494704e4990d3b2550523b7a479a732e89a346336659ad6a740d35cca349d96024d1b82748c51d353c2d99812ce1929e19c9912ce5929e16c4a09e7ec9470ce4909e7dc9470ce4b09e7fc94702e4809e7c294702e4a09e7e294702e490967734a382f4809e78529e1bc28259c17a784f39204395702e752f7fa34f7baccbd2e77af2bdc2bbd67957b6d716dac71fbadc6565b36636ddedf0ac6da8d7518ebf4fed665acdbd81a633dee6fcdee6fbdc6d61a5b676cbdb10dc6363a1d3619db6c6c8bb1adc6b619db6e6c87b19dc67619db6d6c8fb1bdc6f619db6fec526397193b60ec72635718bbd2d8d38d5d65ec6a63d718bbd663b9ced8f5c66e3076a3b19b8cdd6ceca0b17e63878c1d3676c4d880b1a3c66e3176ccd87163cf3076abb113c64e1a3b656cd0d86963b7193b63ecacb12163b71bbbc3d89dc6ee3276b7a7d9338ddd63ec59c6eef5389f6dec3e63f71b7bc0d8738c3d68ec21630f1b7baeb1e7197bbeb117187ba1b117197bb1b197187ba9b197197bb9b157187ba5b157197bb5b1d7187badb1d7197bbdb137187ba3b137197bb3b1b73816ea086f35f636638f187bbbb177187ba7b177197bb7b1bf32f61e638f1a7bafb1f7197bbfb10f18fba0b10f19fbb0b18f18fba8b18f19fbb8b14f18fba4b14f19fbb4b1cf18fbacb1cf19fbbcb1bf36f605638f19fb1b637f6becef8cfdbdb17f30f68fc6be68ec4bc6fec9d83f1bfb17635f36f6afc6fecdd8573ccdffddd87f18fbaab1ff74beafb9d7afbbba342ff60d63df74e5c7ddebb7dcebb7ddeb77bcf77cd7d8f73cdff78dfdc0f3fdd0d88f5cf9c7eef527eef5a7eef567eef5e7eef517eef597eef557eef5d7eef509f7faa47bfd8d7bfdad7bfd9d7bfdbd7bb56baa973515cb9383e1ad2f48688cea389ab76b2a24fed260e466b5a8767fa3d766e7af71fbf44adad5bafd5acf5fe7f6ebbce34c76fb933d7fa3db6ff4fc33ddfe4ccfdfe4f69b3cff1cb73fc7f35fecf62f067f36803957e7b7be6ae7ca808ff2b50a7cb5ce570dbe3a3a1cf826395f2df8e8fcd6816f8af34d02df54e79b0cbeacf34d212d8dd53b5f5f9054aee4fbed7173491fd7ad434d4b9ef7b03d6e0313eff4e47907ec711b19786d7ecc70c79a0e7933d3f91ac137cbf96680cf0d417fee73d637dbf966816f8ef335816faef3cd06df3ce79b03bef9ce37177c0b9c6f1ef8163adf7cf02d72be05e05bec7c0bc1b7c4f91681afd9f91683ef02e75b02be0b9daf197c748fcb05e0bbd8f92e04df25ce7711f868acbd187c746d7889f3d971627206dee3fc344685efa1f1197ccb686c06df721a97c1b782c664f0ad84d8e45b05e30af95a9c8fc628fbb75e57ee0b92ea1385b04fac4dfab8e6c8f6b8eb933f6eb86eb72118d6ba0fe2ac05ad36ba7282f706b561ec8c338a43fe1a28ef82ba548ff4a0cf1962b79f27eb5c796389f7f57aefcb419d7511edef0b926dff7a8f67bdc75c0bede7c9d9f682e6eca8b7b273f66aa8ebe71e5df34cc49cdd0b1c0c39dba5393beaadec9c1d80ba7eeed175ef44ccd9eb80832167fb7972b690d79c2dce91054174eed1779f8998b3c78023f99cedd49c1dfd5676ce3e0075fddca3efbf133167ef008ee473b6bb5faf0d46bd959db32f83ba7eeed15ccc44ccd9878083216707749c1df55676cebe05eafab947f3821331675f091cc9e76c0f53ceb66bce06c5f5ce2088ce3d9aa39e8839fb0870249fb387757e76f45bd939fb59a8ebe71ead974cc49cfd902bdb7586afb9758685e0fbbaf32d02dee473fb4807536e1734b78bf7810441748ed2dadd44ccedc75cd9e6f1e370ef01f9bee57c1780efdbce7721f8bee37c1741bb18fa40bff681516f65f781ef415d3f97691d7922f681af020743ce1ed69c1df55676ce3e0175fddca37b1a2662cefe1038187276407376d45bd939fb47a8ebe7de32579e88394bf795daeb851fbbeb8515e0fb89f3ad04df4f9d6f15f87ee67c2de0fbb9f3b582ef17ceb71a7cbf74be3cf87ee57c6de0fbb5f315c0f784f3b583ef49e7eb00df6f9caf137cbf75be2ef0fdcef9bac1f77be75b03be3f385f8ff3d9f52ebaf7eacbce67cf2d69d417247b6ee91e4b3a36edaf1a87d80d5eec86718cdde8c56e8c88ddc2103b0b3168cb78fb7d506ee1e5c9e78291bfffa058ab938fd56edbde1a8cbeedab8127cfd0f62cc4180d4f1e78da92e709eff52d247fdcf01cb77a9a6621562bb4ab9da15d198845c7a67d8a97031f8edfed118c1dc9331632108b8e4dfb1dc0483efc3ca1cf75ea3ff6f37069669897a12f85d744148f9efd451cabc14f757e3f6b986d8563ab87bfe3676b9be763cacb302f28161d9bf6295e3db4a76dfc190ba365cc7b8c5c63440662d1b1fdd8d8df5bc65fb3519dd71cf8cec3985418eb98540f6ce3719d1277aea5c4e6f8bcca400c1adb48f302f8a9ce6cf783043bb6ed807197a1ff15cabd7ec3f120f93c2ee4b15f8f86a71d7838fa3e537fcde3e7fe9f826473add3d3aacdd32a07753a40bf4e06fd4a5d87503c6556666556666556666556666556666556666556666556666556666556666596cf8cf75fe0fa26d55b2584917c05e0e198e70f9f1fe58e45c7b7eb3adf86759de4d72d0a795cb3a47b0c977b6dae813a4f6686eb7e1fd6d3fdb5415cd35cc5abdda8eeb3a80fce5d8be55c438c5b078e5abf6c4e2c76e130d77a9b7d868a7d0e59aba7ebaa084d19ee5319a169c6d314ef535ce9f1d83c9d573dccc6b1f657ee5a246a45e524d7f6f01e03def3521c3f2817aa8291e3077ece74251e7be41a26ad977779b16ba0ceff6486cf0ddd8b4affcfa17fcf93add3ed1d9bdeb31cfcdddeb11bdc7b89a3d63b7e2bbc97eafc1f8ca96fad0afeac19c7fd1f382e07d056dcfaa08cebe6c97f0e17d7f1dbcbe0e9041e8e7186e97a238f7d20e975fc6e4faba8eb18aad305fa7533e817752d4afb144f99955999955999955999955999955999955999955999955999955999955999e533e36f4589350bf50a4218c7e9de87703d839eff42c7b7eb3a2fae1a8ecbbd0e476b4e2bbc36d7409daf540dd77db92bd707e7deef10772e19d6f34a9e4b8a570fedc1b520aedf7377783c1d115a50b939b1d8c575fce4351e5ec76ff7742d4468cad55f718d1535c5fedae6f1e0da687d70eebd255938ce78dc3b149717140ffb5207f8a88cbf8fe638cff859e2dfd743f170fdfa51a76d43c075ee0b79ce71630db4a92f3837bf6ba0ce0761ecfbb02be33d1c78efc863117fa7add43a35e9c7f22cbb7c71dd772d70f6411c8cbd0e58138add86b133ce280ef96ba0fc85aae1ba548ff420ad89ddf6117a2618b2fbef6bf3de97833a3d11edef0b926d7fafc7d3eb31db73f231c8b3c7e0f39f6b4cea89d16839684475f03a88eb9e3c7f8cf4ef6fc4fbf6eabc3a78cd4275be046354dcfda351f71c727d8ec5dd7318756ddc098c7e1bfdfb3c2bfd3eadc761bc48fa3eadc72187f03eadc03bfe0a383e71d505f19f2d54e7bbdef1fd6b727a0fde0746757e00e34583bb67b13e38f7fa1bef991a8fef5771f749533cbcaec1befd97da6e99d740fdbe049931279005af13a8ceafbc73d61dc3bd3ae2bd4fc6bc97b46a7165fcfee2eb6775e881f7f425a243b1cff77a6da1bcee81b6509dfff2ae0193bf6e295e0326dfd691d724340e7444b495eafc37f4b53fc2351e9d27fcde51577deedf692b750d48fad9368ff7f38131b684e703d7560fd7f59ff34b5a97fb7ce02eef7d129f0ffcbf906775701f3ad758bd2e46a315a011d5c1df06d1e7083ecb37ea3386ebdefeb8cf98a86750e2f8dc503dfe6cfebc5ad43502d5a1f7e235c22cc7dce074f6ebfaf385f47999e47dc3f85b8956888bbf956865d2330fbaf5c13e5e179ccfd879a6d871cf9cce8f43ecb8674e8f47ec462f76e338c656cd5573499a333c1339fcfd193eb3d46ea5ae4b892107efab4a0163750a186b52c0589b02c6ba14304e4a01e3e414304e4901e3d414306681f17c7eb633e85318ab3e5ce7abd4b506c66e61d2a29cffbf83f9ff522979ed83b119bed3855ab404a3d702bfe7713cfba1dcffeb8518f0ff2e989102c69929609c9502c6a61430ce4e01e39c1430ce4d01e3bc1430ce4f01e38214302e4c01e3a214302e4e01e392143036a780f18214305e9802c68b52c078710a182f4901e352654c8471252f6361ac8c9687e3fffc7b2affe718034f3eea9e53a6df9e94fdffad313f9fb46daccf8dc37b4b78ff4fb8a7f66c3b8e7b47ca7db65da9ff6f9589b1305646aefbd8f1773ca3e1c1df4546fdb68681b1305646aedfbfe06ff446c3d3059a754668c6c058182b23d7bd72e5decb89f7f4774568c6c058182b23de579d204fa85977193c6b40b3ee08cd18180b6365e4ba2f390b3146c3d3039aad89d08c81b1305646a6dfb6859af594c183bf01eb89d08c81b1305646cbb39649b3de3278d68266bd119a4962449ea49f93dd1b118be33783e5b69d1890714a0a18a7a68011ef93e018bf4add27d1cbab4f61acfa709daf52f749606c86dfc7845ae0ef21fe9216eb79794ade2781b137306981bf57f94b5a6c001e8edfcf6421c66878882107ef9b9102c69929609c9502c6a61430ce4e01e39c1430ce4d01e3bc1430ce4f01e38214302e4c01e3a214302e4e01e3921430e27755866bc592df5f364cf0d871df55267aecb8ef25133db6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae792e29761ae6f89571e231224f73723c796c3bc6ea13d0f6be089e0c53db31d626016d2786b4316e4c01e3da1430aa8ec57b10c7c268793633f16c2a836733f06c61e2d95c06cf16e0d99a3c4f98535bcae021861cbc6f6d0a1837a6805175541dadd92dffd436d55110631a745446655446653c1f8c6918c3953115f958182ba3e5d9963c4fa8d9d63278b68166f4be365ec6c258192dcff6e47942cdb695c1b31d34db16a119036361ac8c966747f23ca166dbcbe0d9019a6d8fd08c81b1305646cbb333799e50b31d65f0ec04cd764468c6c058182ba3e5d9953c4fa8d9ce32787681663b233463602c8c95d1f2ec4e9e27d46c57193cbb41b35d119a313016c6ca6879f624cf136ab6bb0c9e3da0d9ee08cd18180b6365b43c7b93e70935db5306cf5ed06c4f84660c8c85b1325a9e7dc9f3849aed2d83671f68b6374233a98c6b53c0b831058ccc3a16c6ca6879f633f1ec2b83673ff05ccac4b3bf0c9e4b81e7b2e479c29cbab40c1e62c8c1fbd6a68071630a185547d55112a3ea58393a2aa3322a63798c7d2960d473ad8c521919be5f95fc0dcda5133c768317bba14262c7fd8666a2c7d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf25c53e907cec42b9cf9839003c1ccfbc616a67de1ef77277ac3f25a89fd5ea0a4fab4b3dad7250e772d0ef0a06fd3210978e4dfb14af5ce6a70960668a5d98668e3105da4f31367a7ad8f85732b53d6eacbf7282c78e1beb277aecb8b17ea2c7d63cd73caf84d89ae79ae795105bf35cf35c4a6c2cd706c3d7edf4fc537b8ca7bb728ddb4756f2539dcb26155f1b02ed431cb1b50fe9674525c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cfe5e539e643d538f0041e4f50826783309eddc2787608e359238c67b1309e4e613c7385f11484f1cc10c6b35518cf14613ccb85f1540be3d9248c272f8c67af309e25c2785608e399278c67a6309ea9c2786a84f16c16c6b35a18cf3e613c7b84f1f40ae3592a8ca74718cf36613c5dc278e60be36917c6334b18cf4a613c59613cadc2786a85f1ec14c6d3228c6799309efdc278d609e359208ca749184fbd309e9c309e3a613ceb85f1ec12c6b35d184fb7309e85c2783a84f1cc16c6b34a18cf34613c0dc278b608e399248c6791309e39c278a60be36914c6335918cf783c6fa81c9e8c009e6c70ee33c9b2f0f703e0abf2de6bc7abb6a6e1bf5fe5fc55f09eab5db93ae2d857818f7e1b7e75c47b51a7aba02d7dae9c7f6a5ba813c6ea837d8a570f1c570be139208c67b2309e46613cd385f1cc11c6b34818cf24613c5b84f13408e399268c6795309ed9c2783a84f12c14c6d32d8c67bb309e5dc278d60be3a913c69313c6532f8ca74918cf02613ceb84f1ec17c6b34c184f8b309e9dc2786a85f1b40ae3c90ae359298c6796309e76613cf385f17409e3d9268ca74718cf52613cbdc278f608e3d9278c67b5309ecdc2786a84f14c15c6335318cf3c613c2b84f12c11c6b357184f5e18cf26613cd5c278960be399228c67ab309e19c2780ac278e60ae3e914c6b35818cf1a613c3b84f1ec16c6b341184f55040fc3ff7f19f2d0fd6b746cda3f202436c37908ffdfcf6b98da74ad3b56ad3b2ef153bc1aa8739dbb30b0f7a3e07b89cbbfdf10ef9dbb1634ba96a92d743e32def9618e5dc0fb2a0360083c7d82081e8efb5199da39220f13fcff67f356abeb3cadfc7397833ad7807ed731e81795db7fee03ee358dcc96873e3b88350bf536086124df95bc3c61bfdd108cdc4af5dbeb8087630c636a67d8bfaef7dab4214277aa83b97a3d433ba3fa0eed5f0fe7216dcc9667932b136b16ea6d12c248be6b7979c2feb52918b995ea5fd7030fc7f8c3d4ceb07fdde0b5695384ee540773f506867646f51ddabf01ce43da982dcf665726d62cd4db2c84917cd7f1f27464a1cdb495ea5f37000fc7f8c3d4ceb07fdde8b5697384ee540773f546867646f51ddabf11ce83322b7314b3e5a1df98106b16ea6d11c248beeb59793af25968336da5c6b11b8187639c67d23d1cc76ef2dab4254277aa83b97a13433ba3fa0eeddf1411bb3948568b9b47a1c5cd113c378fb31614af5ce66b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea6c37d55975569d55e724985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39825e86c79e81931c49a857a5b853092ef065e9ef077415b83915bc6dbef83f2cdc07323833e4ced0cef213fe8b5696b84ee5407fbd741867646f51dda3f08e7e16019cc37a59059751e1bb3e5a167c5126b16ea6d13c248be1b7979c2716c5b30722b358e1d041e8e719ea99de138d6efb5695b84ee5407fb573f433ba3fa0eed533c6556e63866cb43ff870db166a1de76218ce4bb9995a710febe717b30722b358ef503cfc1c4798ae31883eee13876c86bd3f608dda90ee6ea21867646f51dda3f04e7a11ce69b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaa73e5e86c79e8ff0e21d62cd4db2184917c075979dac375871dc1c82de3edf741f910f0f427ce535c7760d03d5c7738ecb5694784ee5407fbd761867646f51dda3f0ce761a233df944266cd8df161d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e6396901b9667a72b136b16eaed14c248be7e5e9ef0b9073b83915ba9fb760e03cf21067d98da19deb773c46bd3ce08dda90ef6af230ced8cea3bb47f04ce83322b7314b3e5d9e5cac49a857abb843092ef102f4f388eed0a466ea5c6b123c0c331ce33b5331cc706bc36ed8ad09dea60ae0e30b433aaefd0fe009c076556e62866cbb3db9589350bf5760b6124df615e9e701cdb1d8cdc4a8d6303c0c331ce33b5331cc78e7a6dda1da13bd5c15c3dcad0cea8be43fb47e13c28b33247315b9e3dae4cac59a8b7470823f98ef0f214b2d066da4a8d63478187639c676a67388edde2b5694f84ee540773f516867646f51ddabf05ce43da982dcf5e5726d62cd4db2b84917c03bc3c61ffda1b8cdc4af5af5b808763fc616a67d8bf8e796dda1ba13bd5c15c3dc6d0cea8be43fbc7e03ca48dd9f2ec736562cd42bd7d4218c977949727ec5ffb82915ba9fe750c7838c61fa67686fdebb8d7a67d11ba531dccd5e30ced8cea3bb47f1cce43da982dcf7e5726d62cd4db2f84917cf879b19f8927e7f1e422b49888b11bbcd80d1512bbd18bdd5821b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d8959a6baa79656a9e398f9a67cea3e619d55ca4e67f4a2e76278e2b5510eb18533b71eb8332cecfd1b64618cf62613c9dc278e60ae32908e399218c678a309ee5c278aa85f1e485f12c11c6b34218cf3c613c3385f14c15c653238c67b5309e5e613c4b85f1f408e3e912c6335f184fbb309e59c278560ae3c90ae36915c6532b8ca74518cf32613ceb84f12c10c6d3248ca75e184f4e18cf01613c75c278d60be3e916c6b350184f87309ed9c2785609e399268ca74118cf24613c8b84f1cc11c6335d184fa3309ec9c278320278b2c1b9bf47c1df1354838feeefdf0fbe67b8f201f05545c4a0e31c071fcd9fd231ec78b3aee95c862a78cfad115ccf888847716e8d78ef78e88eb1fa609fe2d503c7ad4278260be36914c6335d18cf1c613c8b84f14c12c6d3208c679a309e55c278660be3e910c6b350184fb7309ef5c278ea84f11c10c69313c6532f8ca74918cf02613ceb84f12c13c6d3228ca756184fab309eac309e95c2786609e36917c6335f184f97309e1e613c4b85f1f40ae3592d8ca74618cf54613c3385f1cc13c6b34218cf12613c79613cd5c278960be399228c6786309e82309eb9c2783a85f12c16c6b346184f5504cf01269eb8e7291c1010dbeee74117bb65e1efe3f13bc0031e23ed1f0346e4259e3c134fdc3328f20262dbf6d377095a83cbc2dff1775c5c3995f718693f2aa7f0beb4d54c3c71cfed582d20b6d582e62ee91e802cfc1d7fb7c09553ab3d46da8fcaa9465e9ef0ff966809466ea5ee35c23ec7710e99da99c7fe97e03334229f45dde26985cf501d8ffbe4e3c6038aa7ccca1cc76c7968ed8258f1f36c3c7ef7361ac6a8cf57069e707c6c0d466ea5c6c763c0c3f1f9c1d4ce701c3be1b5a9354277aa83b97a82a19d517d87f64f44c46e0e92d5e2e428b43819c173729cb5a078e5321f4821b3049d2dcf2a5726d62cd45b2584917c795e9e707c5c158cdc4a8d8f278187e3f383a99de19870ca6bd3aa08dda90ef6af530ced8cea3bb47f0ace4339cc2752c8ac3a8f8dd9f2d01c32b166a15e410823f98eb1f214f25968336da5c6b153c0c331ce33e91e8e63835e9b0a11ba531dec5f830ced8cea3bb43f08e7419995599995599995599995599995599995599995599995599995599995599965335b1efa6d23b166a15ebb1046f29d64e529ae3bb40723b752eb0e83c0c3b12ec3a47bb8ee70da6b537b84ee540773f534433ba3fa0eed9f86f3a0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2992d0f3d739b58b350af430823f94ef1f284bfdbea08466ea5d61d4e030fc7ba0c533bc37587dbbc367544e84e7530576f63686754dfa1fddbe03c28b33247315b1e7ab615b166a15ea71046f20db2f214d74f3b83915ba971ec36e0e118e799740fc7b1335e9b3a2374a73a98ab6718da19d57768ff0c9c8772984fa4905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7cad1d9f2d0ffb946ac59a8d72584917ca75979dac37587ae60e4566adde10cf070accb30e91eae3b9cf5dad415a13bd5c1fe7596a19d517d87f6cfc27998e8cc2752c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f274bb32b166a15eb71046f2ddc6cb133ef7a03b18b995ba6fe72cf09c61d087a99de17d3b435e9bba2374a73ad8bf8618da19d577687f08ce83322b7314b3e559e3cac49a857a6b843092ef0c2f4f210b6da6add43836043c1ce33c533bc371ec76af4d6b2274a73a98abb733b433aaefd0feed701ed2c66c797a5c9958b350af470823f9f073b9878927e7f1e422b4385fb1ed7eaf2bd7bbd72cfcbd1718b9c6c31e8f91f631c79197787a99781a3c9e86082dce576cdbfe75ae3ccdbd66e1efeb80912ba77a3d46da8fcaa906e059c7c4d3e8f134466871be625b2dd6bbf274f79a85bfaf0746ae9c5ae731d27e544e3502cf7a269eb83169fd38c48eeb5fe3113b2e57c623b66aae9aabe6aa39a7e699f3a879e63c6a9e51cd4569ce701d15cef7528c001870eb83327e57e0b8f6646a673eeafbd87aaf4df87d0ce71cced7f70d6556e63866a6798b8eac179bf4093c1eda8698b518cf79d35eaf4d6998372dc57c2285ccaaf3d8986dec3b928fdd91f562933e81c743db1dcc5a30b5331c0fee0ca235a67839a883797a27433b3310978e4dfb77c2792887f9440a9955e7b131dbd877251ebbf83c798c4dfa041e0f6d77316bc1d3cee278707710ad31c5cb411dccd3bb19da9981b8746cdabf1bce83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b6b19f9978ece2fc3dc6267d028f87b667326bc1d3cee2fcfd3d41b4c6142f0775f09cdfc3d0ce0cc4a563d3fe3d701e945999955999955999955999955999955999955999955999955999955999955936b38dfdace46387bfc7c1d8a44fe0f1d0f62c662d98da19cedfdf1b446b4cf1725007cff9bd0cedcc405c3a36eddf0be7419995398ad9c67e76e2b18beb79189bf4093c1eda9ecdac054f3b8be3c17d41b4c6142f0775f09cdfc7d0ce0cc4a563d3fe7d701eca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d2b47671bfbfec463b787f3f7189bf4093c1edaee67d682a79dc5f9fb0782688d295e0eea609e3ec0d0ce0cc4a563d33ec5ab04e6132964d6dc181f66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b961633f27f9d8e1efd93136e913783cb43d87590ba67686f7bf3c18446b4cf1725007f3f441867666202e1d9bf61f84f3a0ccca1cc56c633f947cec42d68b4dfa041e0f6d0f316bc1d4ce703c783888d698e2e5a00e9ef38719da9981b8746cda7f18ce43da98f1fc65928b1ddeb74931aadcabf53dd795abc1f73c57ae01dff35db9167c2f70e53af0bdd0952781ef45d036f2bdd8955782ef25aebc1e7c2f75e575e07b992bf782efe5aedc03be57b8f210f85ee9cab783ef55ae7c07f85eedca7782ef35ae7c17f85eebca7783ef75aefc4cf0bdde95ef01df1b5cf959e07ba32bdf0bbe37b9f2b3c1f76657be0f7c6f71e5fbc1f756577e007c6f73e5a5e07b24c2f776577e0ef8dee1ca0f82ef9dae7c007cef72e529e07bb72b4f05df5f41995edfe3caf5e07bd49573e07baf2b4f03dffb5cb9017cef77e5e9e0fb802b3782ef83ae3c037c1f72e599e0fbb02bcf02df475cb9097c1f75e5d9e0fb982bcf01dfc75d792ef83ee1caf3c0f749579e0fbe4fb9f202f07dda951782ef33aebc087c9f75e5c5e0fb9c2b2f01dfe75d19cfef5fbbf243e0a371e561f0d1b8f25cf0d1b8f23cf0d1b8f27cf0d1b8f202f0d1b8f242f0d1b8f222f051debd187c94772f011fe5dd4bc14779f732f051debd1c7c9477af001fe5dd2bc14779f72af051debd1a7c9477af011fe5dd6bc14779f73af051debd1e7c94776f001fe5dd1bc14779f726f051debd197c94776f011fe5dd5bc14779f736f051de3d023ecabbb7838ff2ee1de06b76e57782ef02577e17f82e74e57783ef2257c671e662577e0ff82e71e547c14763e17bc1f734577e1ff896b9f2fbc1b7dc953f00be15aefc41f0ad74e50f816f952b7f187c2daefc11f0b5baf247c1b7da953f06bebc2b7f1c7c6daefc09f0155cf993e06b77e54f81afc3953f0dbe4e57fe0cf8ba5cf9b3e0eb76e5cf816f8d2b7f1e7cf4394ee38cedcfb65f920ea491f5519b5b23da42bec9d096be20d96b3a8a45c7a6fd7660a47350187fc6c26819db3c46cbd3c9a019e6156da5be3375024f07030f533bc3ef4c5d5e9bdabd36e5a0ced3a09d5d0cedcc405c3a36ed77416c8e738e5ad4bae32ef3b4a8c13aee03cd7e9e96d2918e61f3b710d1961ee6b6d0b1695cea1987d8dd5eecbc171bc763da4af5af6e605ec3c06c8fdb9bfc71c3feb5d61d8b728ae2e4a14deb4083a4da84b133ce280ef96ba03cbf69b82ed5233de8f38bd86d2ed3b94476ff7d9ddefb7250a727a2fd7d41b2edeff5787a3d667b4e1a9a863918fa4398033d1e07ede741bbde18ed7a403baa839f7f2d4cdaadf17868bf0578e81aa70b7c74ad40fc789dd53a0edcfeb8d715c14dbe6e606c89602c24cf185eebb4788cb45f0046f2ad019e6e26cdfc73bdccd3073f97ebbc3af4de1aa8b31a3e1bb311756dbf5b9a196e177d07ff5390ec985ec7a017ce0f04a04fe06918805ed4ce5a069ea9c1f01cc1d9a1c133fdb70c5c3ed07f240368351e26be66229a51053e2c5747f88260e454084ec9d254084ec95679b2e0140cd5b75fa56cb368ba61e0e4f1a1a79f1a3875f8ccdda787068eec1dbc05a96b3d7a248d6b0192a28fb6c9c1f0a44d5f90ec624c9d17ab54f24c86d749c9f3b431b533fcd09be2b5a9ce6b530eead4c2dfa630b4330371e9d8b43f252276820351a8c5d4516831358267ea386b8113dfe4c39e4a7fc7c5932aaf2dd8a3b14d7e9e27da200ab8148e9f7170f66fb6b3d7bac64c0a864f368d9ef68ad69e043b636a3fb5ec8ca89d01b543909de1b4339af643cdce58da194a3b23696720ed8ca39d61b4338a7606d1ce18da19c2e6a038036867fcec0c9f9dd1bb04d8be0cbcf65bb5fd84b433727606ceceb8d92b2b7b0560af46ecd5b7bd52b4b31ff60ac17eb3b4b30cf6d3d65ec9d84f69fbc96aaf14ed15a2bda2b757b876956a83b18d4eeb4dc6361bdb626cabb16dc6b61bdb616ca7b15dc6761bdb636cafb17dc6f61bbbd4d865417176fd72635718bbd2d8d38d5d65ec6a63d718bbd6d875c6ae377683b11b8ddd64ec6663078df51b3b64ecb0b123c6068c1d35768bb163c68e1b7b86b15b83e21d3a278d9d323668ecb4b1db8c9d31763628ae98d91532bb226657c0ec8a975de1b22b5a7605cbae58d9152abb226557a0ee0f8a2b4c76a5c8ae0cd95501bb0a6067fded2cfff383e22cbe9db57f51509c95b7b3f076d6ddceb2db59753b8b6e67cded2cb99d15b7b3e076d6dbce72db596d3b8b6d67aded2cb59d95b6b3d076d6d9ce323f12146791edacb19d25b6b3c27616d8cefada59de4783e22cae9db5b5b3b47656d6cec2da59573bcb6a6755ed2caa9d35b5b3a47656d4ce82da594f3bcb696735ed2ca69db5b4b3947656f20bc61e33f637c6fed6d8df19fb7b63ff60ec1f8d7dd1d8978cfd93b17f36f62f41312fffd5d8bf19fb8ab17f37f61fc6be6aec3f8d7dcdd8d78d7dc3d8378d3d6eec5bc6be6dec3bc6be6bec7bc6be6fec07c67e68ec47c67e6cec27c67e6aec67c67e6eec17c67e69ec57c67e6dec09634f1afb8db1df1afb9db1df1bfb4330bcba8183c81fdd0ecdb4f70f0d0d9c3c3dd43c34d87cf2f61343c74f9fb8bbf9cee343c79a07ef183873f4c4e09df8e6f7b8618b9611369d39d37f77f3f1534706ee6a1ebc7da879f068f3a1c1db4f1d398b6ffaa27bd3c27323f61f39121fec9b554f81f43b630cfa4bf73e5aa0d955ba6d4f8c45903f8ce54d33abc7d6a04bdda70e7d7bbfa278b5db7cf6c4e05073bef994f9b7ff8479cfc091d666fcdb5923f2d9a1e6b343fd67869a8f9e193cd9dcd68ac7bd76ca181a51d3348637b5368dbee5c1ff03d8e2fb122d0a0400", + "bytecode": "0x1f8b08000000000000ffed9d77741cc795ee7b901846000892600e50a299000e06194c60ce9428c9ca8120098ab4488222a16459966449ce3967cb692de79cd7da68efae77bdebb5d772f63adb92d3fbe71dbff3f61c9fadeaa96b7c28768f31a3bee06dcced732ea6fa4e4ddf5f7d7dbbbaa7aaa791090acb1f8c655cb9dad8c5c1b90bbd3fe05e734f6f694f705b394ece4c4a38ab52c2599d12ce9a9470d6a684b32e259c5352c23935259cd312e4b46c55c1d82569dee90cba26cd984d99a617a440d3fa9469da90024d1b8374f4513352c2d99412ce9929e19c9512ced929e16c4e09e79c9470ce4d09e7bc9470ce4f09e78294702e4c09e7a294702e4e09e79294702e4d09674b4a382f4c09e74529e1bc38259c97a484f3d204395701e732f7fa0cf7badcbdae70af2bdd2b7d66b57b6d756dac71eb6dc6d6583663edde7b79631dc63a8d7579ef751beb31d66baccfbdd7e2deeb37b6d6d83a63eb8d6d30b6d1e9b0c9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd87e639719bbdcd801635718bbd2d855c69e69ec6a63d718bbd6d8751ecbf5c66e3076a3b19b8cdd6cec1663078d0d1a3b64ecb0b123c6868c1d3576abb163c68e1b7b96b1db8c9d3076d2d82963c3c64e1bbbddd81963678d8d18bbc3d89dc6ee3276b7b17b3ccd9e6dec5e63cf31769fc7f95c63f71b7bc0d883c69e67ec21630f1b7bc4d8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab8dbdc6d86b8dbdced8eb8dbdc1d81b8dbdc9d89b8dbdc5d85b8dbdcdb1d081f07663ef30f6a8b1771a7b97b1771b7b8fb1f71afb2b63ef33f698b1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb94b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f1afb6b635f32f6b8b1bf31f6b7c6feced8df1bfb0763ff68eccbc6be62ec9f8cfdb3b17f31f65563ff6aecdf8c7dcdd3fcdf8dfd87b1af1bfb4fe7fb867bfda6ab4be362ff65ec5baefc847bfdb67bfd8e7bfdaef799ef19fbbee7fb81b11f7abe1f19fb6f57feb17bfd897bfda97bfd997bfdb97bfd857bfda57bfd957bfdb57b7dd2bd3ee55e7fe35e7feb5e7fe75e7fef5eed9ceae5cd85f2d46074190812eaa33a8fe6ec9c0a89bf2c18bb582daadd7bf4dae2fc356e9d5e49bb5ab75eebf9ebdc7a9db79da96e7daae76f72eb4d9e7f965b9fe5f99bdd7ab3e79febd6e77afe4bdcfa25e0cf0630e6eafcd657ed5c19f051be5681afd6f9aac157479b03df14e7ab051feddf3af04d73be29e09bee7c53c19775be69a4a5b10b9c6f20482a57728376bbf5496fd7cd433524cf7bd86eb791897746f2bc4376bb4d0cbc363f66ba6dcd80bc99e57c4de09bed7c33c1e7baa03f1f73d637c7f966836faef335836f9ef3cd01df7ce79b0bbe05ce370f7c0b9d6f3ef81639df02f02d76be85e05be27c8bc0b7d4f91683afc5f99680ef42e75b0abe8b9caf057c748fcb85e0bbc4f92e02dfa5ce7731f8a8afbd047c746d78a9f3d97e626a063ee3fcd447859fa1fe197ccba96f06df0aea97c1b792fa64f0ad82d8e45b0dfd0af95a9d8ffa28fb5ebf2b0f04491d13f9f098589bf476cd96ed76d727bfdd70de6e4330aaf500c4590b5a6d74e504ef0d6ac7d819671487fc3550de0575a91ee941e71962b7fdfe3a57de58e473fddee71aa0ceba88f60f04c9b67fbdc7b3de63ae85f6f3e46c475e7376dc4bc9397b0dd4f5738fae792663ceee050e869cedd69c1df75272ce0e415d3ff7e8ba7732e6ecf5c0c190b3833c399bcf69ce16c6c882203af7e8bbcf64ccd963c0917cce7669ce8e7f2939671f84ba7eeed1f7dfc998b3770247f239db33a8d706e35e4aced957405d3ff7682c6632e6ecc3c0c190b343dacf8e7b293967df0675fddca371c1c998b3af068ee473b68f29673b346783c27c671044e71e8d514fc69c7d143892cfd9c33a3e3bfea5e49cfd3cd4f5738fe64b2663ce7ec495ed3cc337dc3cc322f07dd3f916036ff2b97da49329b7f39adb85fb4082203a4769ee6e32e6f6e3ae6cf3f809b8f7807cdf76be0bc1f71de7bb087cdf75be8ba15d0cc7c0a01e03e35e4a3e06be0f75fd5ca679e4c9780c7c1d381872f6b0e6ecb8979273f649a8ebe71eddd3301973f647c0c190b3439ab3e35e4aced93f425d3ff796bbf264cc59baafd45e2ffcd85d2fac04df4f9c6f15f87eea7cabc1f733e76b05dfcf9daf0d7cbf70be35e0fba5f3e5c0f72be76b07dfaf9d2f0fbe279daf037c4f395f27f87ee37c5de0fbadf37583ef77ced703bedf3b5f2ff8fee07c7dce67efc9a37bafbeea7c76df92460341b2fb96eeb1a46dd3faea0988dde8c56e9cc0d84d5eeca688d8ad0cb1b31083968cb73e00e5565e9e5c4330f6f71f146b4df2b13a6cdbdb82f1b77d0df0e418da9e8518e3e1c9014f7bf23ce1bdbef9e4b71beee3364fd32cc46a83767530b42b03b168dbb44ef11ac087fd7747046367f28cf90cc4a26dd37a2730920fcf27745ea7e3c79e0f97654679198ea5f09a88e2d1b3bf88630df8a9ceef678fb2ad746cf5f03e9e5bdb3d1f535e867941b168dbb44ef1eaa13ded13cf981f2f63ce63e4ea2332108bb6edc7c6e3bd75e2351bd77e6d00df79e893f2e5f649f5c03611d72971fb5a4a6c8ef355066250df469ae7c14f75e6b81f24d8be6d07f4bb0cc75fbed4eb37ec0f92cfe37c0e8febf1f074000fc7b1cf74bce6f0bcffa720d95cebf2b46af7b46a803a9da05f17837ec5ae43289e322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb67c6fb2f707e93eaad16c248be3cf0708cf387cf8f72dba2eddb799defc0bc4ef2f316f91cce59d23d862bbc36d7409da732a3757f00f3e9fedc20ce69aee6d56e5cf759d407e7cec572ce21c6cd0347cd5fb624163b7f986bbecddea3669f43d6e6e9ba3a425386fb54c6689af134c5fb1457793c364fe7578fb271ccfd953a17895a5139c9b93dbcc78077bf14fa0fca85aa606cff81e799eec4638f9dc3a4f9f26e2f760dd4f97f99d17d43f7a2d2ff39f4ef79b2757abc6dd3675680bfc7dbf60cf759e2a8f5b6df069fa53aff037deadbab823f6bc671ff07f6cb01b415970128e3bc79f2e7e1c23c7e47093c5dc0c3d1cf305d6fe4f018487a1ebfc7d32aea3a86ea74837e3d0cfa455d8bd23ac55366655666655666655666655666655666655666655666655666655666655666f9ccf85b5162cd42bdbc10c609baf7219ccfa0e7bfd0f6edbcce4bab46e372cfc3d19cd34aafcd3550e76b55a3755fe9caf5c1b9f73bc4ed4b86f9bca2fb92e2d5437b702e88ebf7dc9d1e4f678416546e492c76611e3f798d47e7f13b3c5df3119a721daf38c78a9ae2f1daeef1e0dc687d70eebd2559d8ce44dc3b149717140f8fa54ef051197f1fcdb19ff15ce2dfd743f170fefa31a7ed8c806bdfe7739cfd462fb469203837bf6ba0ce87a1effba82be33d1c78efc8e311efd3526c9e9af46379965dae30efbb163807200ec65e07ac09c56ec7d819671487fc3550fe52d5685daa477a90d6c46e8f117a2618b2fb9f6bf73ed70075fa22da3f1024dbfe7e8fa7df63b6fbe41390678fc3f99fab4fea8bd16805684475f03a88eb9e3cbf8ff4ef6fc4fbf6eabc3a78cd4275be027d54dcfda351f71c729dc7e2ee398cba36ee0246bf8dfe7d9e957e9fd613d05f247d9fd6139043789f56e06d7f256c9fb8ea82f8730bd5f99eb77dff9a9c3e83f781519d1f427fd1e8ee59ac0fcebdfec67ba626e2fb55dc7dd2140faf6bf0d8fe4b6db7ccbd507f204166cc0964c1eb04aaf32b6f9ff5c470af89f8ec53319f25ade83954f8fdc5d7cfead0079f19484487c231dfefb585f2ba0fda4275fe8f770d98fc754be11a30f9b68ebd26a17ea033a2ad54e7ffc2b1f647b8c6a3fd84df3beaaacf7d9f9662d780a49f6df3443f1f18634b783e706df5685dff39bfa475a9cf07eef63e27f1f9c0ff1ff2ac0eee43e7eaabd7c568b41234a23af8db203a8fe0b37ca3ce315cf7f6c79d63a29e4189fd7363f5c4b3f9e36a51d70854873e8bd708b31df30ca7b35fd71f2fa4f36592f70de36f25da202efe56a28d49cf1ce83600eb785d703e63e79862c73d733a3701b1e39e393d11b19bbcd84d13185b3557cd2569cef04ce4f0f767f8cc52bb14bb2e258606f85c550a18ab53c0589302c6da1430d6a580714a0a18a7a680715a0a18a7a780310b8ce7f3dccea04fbe5c7db8f657b16b0d8ccdf0bf4bf2a5feff0ee6ffa552f4da0763337ca70bb5680dc6af057ecfe378f643a9ffeb8518f07f17cc4c01e3ac1430ce4e0163730a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a1897a48071690a185b52c078610a182f4a01e3c52960bc24058c97a68071993226c2b88a97315f2ea3e5e1f89f7f4fe77f8e31f0e4a2ee3965faed49c9ff6f8df9f9a4ede53e370eef2de1fd9f704fefd9761cf78e94fa6cbb62ff6f9589315f2e23d77decf83b9ef1f0e0ef22a37e5bc3c0982f9791ebf72ff81bbdf1f07483665d119a3130e6cb65e4ba57aed47b39f19efeee08cd1818f3e532e27dd509f2849af594c0d30b9af54468c6c0982f9791ebbee42cc4180f4f1f68d61ba1190363be5c46a6dfb6859af595c083bf01eb8bd08c81315f2ea3e559cba4597f093c6b41b3fe08cd2431224fd2cfc9ee8f88c5f19bc152db4e0cc8382d058cd353c088f74970f45fc5ee93e8e7d5275fae3e5cfbabd87d12189be1f731a116f87b88bfa4c57a5e9ea2f74960ec0d4c5ae0ef55fe92161b8087e3f7335988311e1e626880cfcd4c01e3ac1430ce4e0163730a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a1897a48071690a18f1bb2ac3b562d1ef2f1b2679ecb8ef2a933d76dcf792c91e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d63fcca38f91891a725399e1cb61d630d0868fb40044f86a9ed186b9380b61343da1837a680716d0a1855c7c23d88e5305a9ecd4c3c9b4ae0d90c3c5b98783697c0b30578b626cf13e6d496127888a1013eb736058c1b53c0a83aaa8ed6ec927b7a8bea2888310d3a2aa3322aa3329e0fc634f4e1ca988a7ccc97cb6879b625cf136ab6b5049e6da0197dae9d97315f2ea3e5d99e3c4fa8d9b61278b68366db22346360cc97cb68797624cf136ab6bd049e1da0d9f608cd1818f3e5325a9e9dc9f3849aed2881672768b623423306c67cb98c966757f23ca1663b4be0d9059aed8cd08c81315f2ea3e5d99d3c4fa8d9ae1278768366bb22346360cc97cb6879f624cf136ab6bb049e3da0d9ee08cd1818f3e5325a9ebdc9f3849aed2981672f68b627423306c67cb98c96675ff23ca1667b4be0d9079aed8dd04c2ae3da14306e4c0123b38ef972192dcf7e269e7d25f0ec079ecb9878f697c07319f05c9e3c4f98539795c0430c0df0b9b52960dc980246d5517594c4a83a568e8ecaa88cca581ae3400a18755f2ba3544686ef57457f4373d9248fdde8c56eac90d871bfa199ecb135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cd7349b10f241f3b5fea33660e000fc7336f98da99b3dbbdc26deb4f09ea67b5bad2d3ea324fab06a87305e87725837e19884bdba6758a572af333043033c5cedbfe651ab49f626cf4f4b0f1af626a7b5c5f7fd5248f1dd7d74ff6d8717dfd648fad79ae795e09b135cf35cf2b21b6e6b9e6b994d858ae0d46afdbe9f9a7761bcf74e51ab78eace4a73a974f29bcce08f418e288adc7909e2b2a21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad792e2fcf1be0fdaa09e0093c9ea008cf06613cbb85f1ec10c6d32b8c6789309e2e613cf384f1e485f1cc14c6b35518cf34613c2b84f1540be3d9248c27278c67af309ea5c278560ae3992f8c6796309ee9c2786a84f16c16c6b34618cf3e613c7b84f1f40be359268ca74f18cf36613cddc2781608e3e910c6335b18cf2a613c59613c6dc2786a85f1ec14c6d32a8c67b9309efdc278d609e359288ca75918cf05c278ea85f1d409e3592f8c6797309eedc2787a84f12c12c6d3298c678e309ed5c2781a84f1340ae3d9228c678a309ec5c278e60ae399218ca74918cf54613c13f1bca15278320278b2c1b9cf24cbc2fb07c057e57dd6f657edcda3ef5fedfc55f0996b5cb93a62db57838f7e1b7e4dc46751a7aba12d03ae9c7b7a4ba813c61a80758a570f1cd708e139208c67aa309e26613c3384f1cc15c6b35818cf14613c5b84f1340ae36910c6b35a18cf1c613c9dc2781609e3e911c6b35d18cf2e613ceb85f1d409e3a917c67381309e66613c0b85f1ac13c6b35f18cf72613cadc278760ae3a915c6d3268c272b8c6795309ed9c2783a84f12c10c6d32d8c679b309e3e613ccb84f1f40be3d9238c679f309e35c278360be3a911c6335d18cf2c613cf385f1ac14c6b35418cf5e613c39613c9b84f1540be359218c679a309eadc278660ae3c90be399278ca74b18cf12613cbdc2787608e3d92d8c6783309eaa081e86ff7f19f2d0fd6bb46d5a3f202436c37e08ffefe7b54c6dbace6dabd66d97f8295e0dd4b9de5d18d8fbabf0b3c4e5df6f88f7ce5d071a5dc7d416da1f196fff30c7cee37d950130049e3e41040fc7fda84ced1c938709feffd99cd5ea7a4f2b7fdf35409d6b41bfeb19f48bcaed3f1f03ee358dcc9687ce1dc49a857a1b843092ef2a5e9ef0b8dd108c5d8a1db7d7030f471fc6d4cef0f8bac16bd38608dda90ee6ea0d0ced8c3a7668fd06d80f6963b63c9b5c9958b3506f931046f25dc7cb131e5f9b82b14bb1e3eb06e0e1e87f98da191e5f377a6dda14a13bd5c15cbd91a19d51c70eaddf08fb216dcc9667b32b136b16ea6d16c248beeb79793ab3d0665a8a1d5f37020f47ffc3d4cef0f8bac96bd3e608dda90ee6ea4d0ced8c3a7668fd26d80fcaaccc51cc96877e6342ac59a8b7450823f96e60e5e9cc65a1cdb414ebc76e021e8e7e9e49f7b01fbbd96bd39608dda90ee6eacd0ced8c3a7668fde688d82d41b25adc320e2d6e89e0b96582b5a078a5325f9b4266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d5567bba8ceaab3eaac3a27c1ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc72c4167cb43cf8821d62cd4db2a84917c37f2f284bf0bda1a8c5d32defa00946f019e9b18f4616a67780ff941af4d5b2374a73a787c1d646867d4b143eb07613f1c2c81f9e61432abcee5315b1e7a562cb166a1de36218ce4bb899727ecc7b605639762fdd841e0e1e8e799da19f663835e9bb645e84e75f0f81a646867d4b143eb144f9995398ed9f2d0ffb021d62cd4db2e84917cb7b0f2e4c3df376e0fc62ec5fab141e03998384fa11f63d03decc70e796dda1ea13bd5c15c3dc4d0cea86387d60fc17e2885f9e61432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efadf21c49a857a3b843092ef202b4f4738efb02318bb64bcf501281f029ec1c4790af30e0cba87f30e87bd36ed88d09deae0f17598a19d51c70ead1f86fd30d9996f4e21b3e6c6c4306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbb3d39589350bf5760a6124df202f4ff8dc839dc1d8a5d87d3b8781e710833e4ced0cefdb39e2b5696784ee54078faf230ced8c3a7668fd08ec076556e62866cbb3cb9589350bf576096124df215e9eb01fdb158c5d8af563478087a39f676a67d88f0d796dda15a13bd5c15c1d626867d4b143eb43b01f945999a3982dcf6e5726d62cd4db2d84917c877979c27e6c77307629d68f0d010f473fcfd4ceb01f3beab5697784ee540773f528433ba38e1d5a3f0afb419995398ad9f2ec716562cd42bd3d4218c9778497279f8536d352ac1f3b0a3c1cfd3c533bc37eec56af4d7b2274a73a98abb732b433ead8a1f55b613fa48dd9f2ec756562cd42bdbd4218c937c4cb131e5f7b83b14bb1e3eb56e0e1e87f98da191e5fc7bc36ed8dd09dea60ae1e636867d4b143ebc7603fa48dd9f2ec736562cd42bd7d4218c9779497273cbef605639762c7d731e0e1e87f98da191e5fc7bd36ed8bd09dea60ae1e676867d4b143ebc7613fa48dd9f2ec776562cd42bdfd4218c987e78bfd4c3cf51e4f7d8416933176a317bbb142623779b19b2a24b6e6b9e67925c4d63cd73caf84d89ae79ae79510bb52734d35af4ccd33e751f3cc79d43ca39a8bd4fc4fc9c5ee6a0846972a88758ca99db80c4019c7e768e915c6b344184f97309e79c278f2c278660ae399268c6785309e6a613c39613c4b85f1ac14c6335f18cf2c613cd385f1d408e359238ca75f18cf32613c7dc278ba85f12c10c6d3218c67b6309e55c278b2c278da84f1d40ae36915c6b35c18cf3a613c0b85f1340be3b940184fbd309e03c278ea84f1ac17c6d3238c6791309e4e613c7384f1ac16c6d3208ca75118cf14613c8b85f1cc15c63343184f93309ea9c278320278b2c1b9bf47c1df1354838feeefdf0fbe67b9f201f05545c4a0ed1c071f8d9fd2366c7fb3aef95c862af8cc6d115ccf8a8847716e8bf8ec44e88eb106609de2d503c76d4278a60ae36912c6334318cf5c613c8b85f14c11c6d3288ca74118cf6a613c7384f1740ae359248ca74718cf7a613c75c2780e08e3a917c67381309e66613c0b85f1ac13c6b35c184fab309e5a613c6dc278b2c2785609e3992d8ca74318cf02613cddc278fa84f12c13c6d32f8c678d309e1a613cd385f1cc12c6335f18cf4a613c4b85f1e484f1540be359218c679a309e99c278f2c278e609e3e912c6b344184faf309eaa089e034c3c71cf53382020b69dc7a173158d1966e1fd89f81de0018f91d68f0123f9f03ed41c134fdc33287202625b2dd640d92e59781f7fc7c59553398f91d6a3720aef4b5bc3c413f7dc8e3502625b2d68ec92ee01c8c2fbf8bb05ae9c5ae331d27a544e35f1f284ff5ba23518bb14bbd7088f398e7dc8d4ce1c1e7f093e4323f259d4ad9e560d506722ee938feb0f289e322b731cb3e5a1b90b62c5f3d944fcee6d3c8c51e757069eb07f6c0bc62ec5fac763c0c371fe606a67d88f9df0dad416a13bd5c15c3dc1d0cea86387d64f44c46e0992d5e2e438b43819c1737282b5a078a5321f4821b3049d2d0fdddb46ac59a8b75a0823f972bc3c61ffb83a18bb14eb1f4f020fc7f983a99d619f70ca6bd3ea08dda90e1e5fa718da1975ecd0fa29d80fa5309f4821b3ea5c1eb3e5a1316462cd42bdbc1046f21d63e5c9e7b2d0665a8af563a78087a39f67d23decc786bd36e52374a73a787c0d33b433ead8a1f561d80fcaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccca2c9bd9f2d06f1b89350bf53a843092ef242b4f61dea12318bb149b7718069e5389f314e61d18740fe71d4e7b6dea88d09dea60ae9e666867d4b143eba7613f28b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb36c66cb43cfdc26d62cd4eb14c248be53bc3ce1efb63a83b14bb17987d3c0c3312fc3d4ce70dee176af4d9d11ba531dccd5db19da1975ecd0faedb01f945999a3982d0f3ddb8a58b350af4b0823f98659790af3a75dc1d8a5583f763bf070f4f34cba87fdd819af4d5d11ba531dccd5330ced8c3a7668fd0cec8752984fa4905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7cad1d9f2d0ff5c23d62cd4eb16c248bed3ac3c1de1bc437730762936ef70067838e66598740fe71dce7a6dea8ed09deae0f17596a19d51c70ead9f85fd30d9994fa4905973636298353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e39825e486e5e9716562cd42bd1e218ce4bb9d97277cee414f30762976dfce59e039c3a00f533bc3fb7646bc36f544e84e75f0f81a616867d4b143eb23b01f945999a3982d4faf2b136b16eaf50a6124df195e9e7c16da4c4bb17e6c047838fa79a67686fdd81d5e9b7a2374a73a98ab7730b433ead8a1f53b603fa48dd9f2f4b932b166a15e9f1046f2e179b98f89a7dee3a98fd0e27cc5b65af4bbf205ee350beff70323577fd8e731d23ae638f9ea81a79f89a7d1e3698cd0e27cc5b65aac83b25db2f0fe3a60e4caa97e8f91d6a372aa1178d631f134793c4d115a9cafd8568bf5ae3cc3bd66e1fdf5c0c89553eb3c465a8fcaa926e059cfc413d727ad9f80d871c7d744c48ecb958988ad9aabe6aab96acea979e63c6a9e398f9a675473519a335c4785e3bd142300065c06a08cdf1538ae3d99da998bfa3eb6de6b137e1fc33187f3f57d439995398e9969dca233ebc5267d028f879611662d2672dcb4df6b531ac64d8b319f4821b3ea5c1eb38d7d67f2b13bb35e6cd227f07868b993590ba67686fdc15d41b4c614af01ea609edec5d0ce0cc4a56dd3fa5db01f4a613e914266d5b93c661bfbeec463179e278fb1499fc0e3a1e56e662d78da59e80fee09a235a6780d5007f3f41e867666202e6d9bd6ef81fda0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2996dec67271ebb307e8fb1499fc0e3a1e5d9cc5af0b4b3307e7f6f10ad31c56b803ab8cfef65686706e2d2b669fd5ed80fcaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccca2c9bd9c67e4ef2b1c3dfe3606cd227f07868790eb3164ced0cc7efef0ba235a6780d5007f7f97d0cedcc405cda36addf07fb419995398ad9c67e6ee2b10bf379189bf4093c1e5a9ecbac054f3b0bfdc1fd41b4c614af01eae03ebf9fa19d19884bdba6f5fb613f94c27c2285ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece36f60389c7ee08c7ef3136e913783cb43cc0ac054f3b0be3f70f06d11a53bc06a88379fa20433b331097b64deb14af12984fa4905973636298353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e39825e4868dfdbce46387bf67c7d8a44fe0f1d0f23c662d98da19defff25010ad31c56b803a98a70f31b433037169dbb4fe10ec076556e628661bfbe1e463e7b35e6cd227f078687998590ba67686fdc12341b4c614af01eae03e7f84a19d19884bdba6f547603fa48d19f75f26b9d8e17d9b14a3cabd5adff35db91a7c2f70e51af0bdd0956bc1f72257ae03df8b5d790af85e026d23df4b5d7915f85ee6caebc1f772575e07be57b8723ff85ee9ca7de07b952b8f80efd5ae7c07f85ee3ca7782efb5ae7c17f85ee7ca7783eff5ae7c0ff8dee0cacf06df1b5df95ef0bdc9959f03be37bbf27de07b8b2b3f177c6f75e5fbc1f736577e007c6f77e507c1f70e575e06be47237cef74e5e781ef5daefc10f8deedca07c0f71e579e06bef7baf274f0fd1594e9f57dae7c01f81e73e57af0bddf951bc0f701576e04df075d7906f83ee4ca4de0fbb02bcf04df475c7916f83eeacab3c1f731576e06dfc75d790ef83ee1ca73c1f749579e07be4fb9f27cf07dda951780ef33aebc107c9f75e545e0fb9c2b2f06dfe75d7909f8bee0ca4bc1f74557c6fdfbd7aefc30f8a85f79047cd4af3c1f7cd4afbc007cd4afbc107cd4afbc087cd4afbc187cd4afbc047c94772f051fe5ddcbc04779f772f051debd027c9477af041fe5ddabc04779f76af051debd067c9477af051fe5ddebc04779f77af051debd017c94776f041fe5dd9bc04779f766f051debd057c94776f051fe5dddbc04779f776f051debd037c94778f828ff2ee9de0a3bc7b17f85a5cf9dde0bbd095df03be8b5cf9bde0bbd895b19fb9c495df07be4b5df931f0515ff87ef03dc3953f00bee5aefc41f0ad70e50f816fa52b7f187cab5cf923e05bedca1f055fab2b7f0c7c6daefc71f0ad71e54f802fe7ca9f045fbb2b7f0a7c7957fe34f83a5cf933e0eb74e5cf82afcb953f07be6e57fe3cf87a5cf90be0eb75e52f828fcee3d4cfd8e3d91e83a40369647dd4e6b688b6906f2ab4652048f69a8e62d1b669bd0318691fe4279e313f5ec6768fd1f27431688679454bb1ef4c5dc0d3c9c0c3d4cef03b53b7d7a60eaf4d0d50e719d0ce6e867666202e6d9bd6bb2136c73e472d6add76977b5ad4601d7742b3e7ce623ad2366cfee623dad2c7dc16da36f54b7d1310bbc78b9df362637f4c4bb1e3ab07987b1998ed76fb93df6e787cad75dba29ca2383968d33ad020a93661ec8c338a43fe1a282f681ead4bf5480f3a7f11bbcd65da97c8ee7faecbfb5c03d4e98b68ff40906cfbfb3d9e7e8fd9ee93c6e6510e86e321cc813e8f83d673a05d7f8c767da01dd5c1f35f2b9376bd1e0fadb7020f5de374838fae15881fafb3da2680dbeff7ba23b8c9d7038cad118cf9e419c36b9d568f91d6f3c048be5ee0e961d2ccdfd7cb3d7df0bc5ce7d5a1cfd6409d35706ecc46d4b5c7ddb2cc68bbe83bf89f8264fbf43a06bd707c20007d024fc300f4a276d632f04c0f46c708ce8e0c9f19bc75e88aa1c1231940abf130f13513d18c2af061b93ac2170463874270489686427048b6ca93058760a8befd2a659b45c30d43278f8f3cf3d4d0a9c367ee393d327464eff0ad485debd123695c0b90147db44c0d46076d0682642763eabc58c592672abc4e499ea79da99de1496f9ad7a63aaf4d0d50a716de9bc6d0ce0cc4a56dd3fab488d8097644a116d3c7a1c5f4089ee913ac050e7c930f8f547a1f274faabcb6e0118d6df2f33cd10651c065b0fd8c83b3efd983bdd635664a30bab3a9f7b423aaf6aad6ee083b426acf5c7604d476417684d38e68da939a1db1b423947644d28e40da11473bc2684714ed08a21d31b423842d416104d08ef8d9113e3ba27729b07d1578edb76a7b86b423727604ce8eb8d92b2b7b0560af46ecd5b7bd52b4a31ff60ac17eb3b4a30cf66c6baf64ec59da9e59ed95a2bd42b457f4f60ad7ce526d30b6d169bdc9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd87e639719bb3c288cae5f61ec4a6357197ba6b1ab8d5d63ec5a63d719bbded80dc66e347693b19b8ddd62eca0b14163878c1d3676c4d890b1a3c66e3576ccd87163cf32765b50b843e7a4b153c6868d9d3676bbb133c6ce068519333b436667c4ec0c989df1b2335c7646cbce60d9192b3b436567a4ec0cd403416186c9ce14d999213b2b606701eca8bf1de57f615018c5b7a3f62f090aa3f27614de8ebadb51763baa6e47d1eda8b91d25b7a3e27614dc8e7adb516e3baa6d47b1eda8b51da5b6a3d27614da8e3adb51e64783c228b21d35b6a3c47654d88e02db515f3bcafb585018c5b5a3b67694d68ecada51583bea6a4759eda8aa1d45b5a3a67694d48e8ada51503bea694739eda8a61dc5b4a3967694d28e4a7ec9d8e3c6fec6d8df1afb3b637f6fec1f8cfda3b12f1bfb8ab17f32f6cfc6fe2528e4e5bf1afb37635f33f6efc6fec3d8d78dfda7b16f18fba6b1ff32f62d634f18fbb6b1ef18fbaeb1ef19fbbeb11f18fba1b11f19fb6f633f36f613633f35f633633f37f60b63bf34f62b63bf36f6a4b1a78cfdc6d86f8dfdced8ef8dfd21189dddc04ee48f6e8546da074746864e9e1e6919196e3979c78991e3a74fdcd372d7f191632dc3770e9d397a62f82efcf0fb5cb745d3089bce9c19bca7e5f8a9234377b70cdf31d2327cb4e5d0f01da78e9cc50f7dd97d68d1b911078f1c890ff6adaaa741fadd3283fed27d8e266876156fdb93e508f287723e34abbabc065de6ce3af4edfdcac2d56ecbd913c3232db99653e6efe009f399a1236d2df8de5923f2d99196b3238367465a8e9e193ed9d2de86dbbd6e5a198da8692ee3436dcde36f79f0bfd4e28b812d0a0400", "isInternal": false } ], - "packedBytecode": "0x000000028df71de500000047d21f8b08000000000000ffed9d779815c5b6f67b604064cf8898b3830915c56118e20cb03127cc2822220cc3080a0c51cc98250773468292b380802020a227e7e4497a3c9e74ef3de73cf78ffbddfb05bfdbb577ad3bef14d5c3ecb16bf3eed9d5cf53b3abd754f7fad5dbabab53755741909efe19a6029d6f19a6b3820327f97f52ff967eb3a94b8ceb2a75c95990239c2d7284b3658e7016e60867ab1ce16c9d239c87e508679b1ce13c3c464ec5d622a83fc5cddbd681ae713326724cd3a21cd0b438c7343d2207346d17e4461b75648e70b6cf11cea37284f3e81ce13c2647388fcd11cee37284f3f81ce13c2147384fcc11ce937284f3e41ce13c2547384fcd11ced37284f3f41ce12cc911ce0e39c279468e709e99239c67e508e7d939c2794e8c9c9d80b3a3fe3d57ff9ea77fcfd7bf52f602fd7ba1feedaceb58a8e72f525c61520f69ca8cff750d537998ba85a9bbf1bf1e61ea19a65e61eaadff57a2ff5711a6ca30f50953df30f5d31af40fd3c561ba244c9786e9b2305d1ea62bc2746598ae0ad3d561ba264cd786694098ae0bd3f561ba214c3786e9a630dd1ca65bc234304cb786e9b6300d0ad3ed611a6cb0dc11a62161ba334c43c37457988685697898aac234224cd5611a19a69a30dd1da651611a1da67bc2746f98c684696c98c685a9364ce3c334214c13c334294c93c334254cf785696a98ee0fd303617ad0d0eca1303d1ca647c2f4a8c1392d4c8f85e9f1303d11a627c3f454989e0ed333617a364cd3c334234c33c3342b4cb3c334274c73c3342f4cf3c3b4204ccf85e9f930bd10a617c3f452985e0ed32b617a354caf85e9f530bd11a637c3f49666911d616198de0ed3a2302d0ed392302d0dd33b617a374ccbc2b43c4c2bc2b4324cabc2b43a4c6bc2b4364cebc2b43e4c1bc2b4314c9bc2f45e983687694b98b686e9fd306d0bd3f630ed08d30761da19a65d61fa304cbbc3b4274c7bc3f45198f685e9e330ed0fd32761fa344cdf0ad3b7c3f49d307d374cdf0bd3f70dcd7f10a61f86e94761fab1b6fd44fffe549795fb773f0bd3cf75fe17faf797faf757faf73363995f87e93786edb761fa9d61fb7d983ed7f92ff4ef1ff4ef97faf78ffaf72bfdfb27fdfb67fdfb17fdfb57fdfb37fdfb2ffaf75ff5efbfe9dfbfebdf7fe8df7f8669538774be4d5037258398daa8f29ad4b31f11bf63507f525ab4d4ff93df126d2fd4f3f22bdab5d2f3ad0c7b6b3ddfda584f1b3ddfc6b0b7d7f3ed0dfbd17afe68c37eac9e3fd6b01fafe78f37ec67e9f9b3c09e08e0deb0b62b5b4b6d2a009bc46b0bb0b5d2b696606b2dab03db61dad60a6cb27d5b83ed706d3b0c6c6db5ad0dd812da76b86819a6226d4b0671c54ae970b5dee2b8d7ab9f971d113fef08b5de768e788f8c9f77a45a6f7b07bc2a3e8ed2eb3a12e2e6686d6b0fb663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ed346d3b056ca76bdba9602bd1b6d3c0a69bdce074b09da16d25603b53db3a80ed2c6d3b036c676bdb99603b47dbce029bb4bf67834dce17cfd136d5761c5e00cb68bbb45ba965a4cd06db79d25e83ed7c69abc1d649da69b05d00bec57621b43562ebac6dd26ea9fff5d6f96410d77e5256a3d65b11f77ac335abf5f6897fbda9678e7d833aad93e0a702b4eaa7f331f66bea82be0b74123f622f84fcd55056ca891e72ec1176758ca9d4f97e0d2cd7db58ae18ca545aea9f0ce2ad7f1f83a78fc1dc0af26e62b66b571fb38d9e328ed94150d68c3d390f6a8e313b00381cc46c0f1fb38d9e328ed91a286bc69e9c0b37c798bd03381cc46c959b982d2bf5319bbe6f1604f6d893eba1e618b3a38123fe98ede663b6f153c631fb049435634fae899b63cc4e058ef863b647953f3768f49471ccce87b266ecc9fd99e618b34f03878398adf1ed6ca3a78c63f62d286bc69edc2b6c8e31fb3c70c41fb3bd1cc56c571fb341fa196810d8634fee5b37c7985d041cf1c7ec087f7fb6f153c631bb1dca9ab127cf509a63ccaed379f59ce127fa39c32960fba9b69d0abcf1c776753747b15de6633bdd372408ec312acff39a636c7fa8f32a8e7f01fd11c4f64b6deb00b65f69db1960fb4cdbce847a39d807aafc3ed0e829e37de03750d68c6579b6dc1cf7811f01878398adf631dbe829e398fd1b9435634ffa3934c798fd3d703888d91a1fb38d9e328ed9ff84b266ec9dabf3cd3166a5afa93a5ff8429f2f9c0fb63f685b27b07da96d1780ed8fda7621d8bed2b6ce60fb93b65d04b63f6b5b29d8fea26d5dc0f6576d2b03dbdfb4ad2bd8fe45dbcac1f6afdad60d6cffa66dddc1f6776deb01b67f685b4fb0fd53db7a699b7ade257dafe4bcb50df0278378b7adf4bb9475cb7c972cf86e67f86e9745dfed0ddfed2dbecb1cf84e800f990a8cf924e4cbdcf29416030ffa2a8fdf575755f7ae41e3eb5e0e3cdd1cd43d013e1ac3d30d78bac7cf93eaffdb23fef5a6b6715743d304f8ea0af5eae9a05e05e04bd62df3e2af186cd8b6f6b430f68a9fb1ac007cc9ba65be17308a0ddb7a79e74af61f753cec5850c7eb605f4a9d13893ff96e997094835dca5cd5a18ead93662b82ffe371afbb61731497a9b8105fb26e99177f45509feed9672c6b2c633783d1551b5100be64ddde77dd76903c1ec71d5ceb58db34f15d9105dfbd0cdfe5866f6c3b656ae8d8d60b9863bfe6d4c7b6caf8d75b8ad727726d287ef0fc01afe1e2aa13fa966b43f123f642c85f57505756ca891ed20e0bbb8a65d996c86e2ed7d358ae18ca5458ea9f0ce2ad7fa5c1536930ab6d72091c0b1dec0fa918a8303864be1cb4ab8cd0ae02b49332e78276aedab3de068fcc77071e69c77a008fab6ba2289e6c5c8f1dcc379ec3e2f5b3fc1fcf035c6daf2e06a3ccdbb6572f60b49dab38b89e69f05ca51b308aad37f07475a459d476ed4ae2db41aca4da23f121e7e6b2ff7607bb94e9a55fa8536de53dd056ba88118c47991a7bcd1bff762a4b5d8377cb8007b79d83ebaa2e8ee2b114efdf7c1dc41b6b66bbd4cdd02aea1e8fabb6bcabc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae3b09a3d9ffcdd57dfed4f70ff5ba64fdeab9ceff71da1facac14fbc7483f88f38d3a174299e2167565ff3ff407339f53611fc9ee6eb54b6d4bec8f998479f1877dad705b32f4772a89cd77d90857cfdbd437c0d47734cdbe9fdd2d9abae8ff8c9a16189a627ffc0b0c1e15a7952debd85c3cfbcbf459246a25f9389fed1507f6588f7fbb94d57b66dd22a8df7ee071c655ff1d69abe5797985e1bb10ca9cdca26edb48df2a1963b8abb11cf6fb9175cb32e783bdd258773bbdac70b432d6df03969532a7419bbaa7459d660edacab24cfbaee373f3f88fc3e9e7f85d33e0e9023c2eda1947e71ba5b80fc4fd1cdfec9f663b8f9132d8b7cf41bfca06fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd796933066a9ef43ea79867cab4cd69ffa5e708b3abfae9fc3c933a74e469df1ddd17fb6a82bbb49e78b8203fb3b446d4b57dfa788da96e20fbf3d83cf825c3cd72d005fb2ee328b16922f89cd77fa39be8bb121e4397e5743d7728ba6aef6577cc68a9ae2fedacde0c167a351dff629336c2efb0e45c585f8c37da90c6c92c7f7a35d6c673c9698fd7ac41f3ebffe8ed6b65de06adb9795ba6c37f0bb29c9e0c0f8c6efa9fc10dabe1feb3cf6e1c0be235f58fe2f5343cfa9453f556707dfd72c2d8075c9f6b57ddbb33fb0c6e4bb0baeab40a7fe86068590ffbc455d59292765456b6157fb887c0306d9cde5ba19cb154399be96fa278378eb6f7e6bb59fc1acb6c9cf20cebe80e3bfab36a96f8446e7834652c6f1371badfd2bcd7e85d88eb636cac8b2f82dbabf421b15d57fd4760c707d1c9375db8e63e671a131fd3cf3bd9fd67f417b11773fadff8218c27e5a81b1fe4eb07ee16a1d441f5ba4ccff33d66f9e93cb32d80fec7ff613f89e4b99ce67724e7ea8aeaf6ce7e4b85c54dd15337e072d192333c604b2e079829469abb5966d5619c1ddcbb26c71c4b2a295f9adb0a2e040fddc7c672dbdcff733ea22718ddf20973247435ddc9cb7a4cf015d7d532e097552f9324b5da5cc09b0af9da4f309d84eb8df9e67f9bf4c0d9d03e218ee17c75fe7d4f6bd043893e0077d5f0aac31f9ee82bee51c50fc88bd10f2e7b6ac2b2be5440fd15ad8d53e22e751c86e2e57612c570c65fa5bea9f0ce2adffc506cfc506b3da26a7429c9d07fdd05db5d5fd2334ea041a4919bca768fb0ea8ed5e87abf737a2cea5f0fd25f3fc0a8f936ece9bece7b1e67d35db394227831fcf117a403b9bb09435ef17caf132ce7ec3f8ae440ff08bef4ab8fa76736fd02d09f3785e70287dbbf88eadf217356642ef2cf88e1a33211bbedb1bbedb67d1b7d7dc6bcea4b983310852ef9fe1374bd5d4d079298e4b20cbb500461763392482fadf1e3f18238eef20cbb5044617c7874cbf7dde031865b9426074f16e298ebfd11846fcc6301ee785d1c1b762bb34f55bb1784faf353032bdb389cfa60e034617e7c54d7d570fcfe7dbc0afab7189ba66c058068cb2dce1c0e8e2de385ecb348611af8b64b9b6c0e8e21956a6e33be1b7e7f1deb24bc6868eed8efba294657aefa5d22d4f83e71ae8dbc1b886292df03ee3c1b4e8e396a7c1731ff4ede0be5f4a0b1c67f0605ae0b34117e31e2682facfe10ec683cf2f65b9a38031e988b15f068c4960fc9f7bc5c0d8df11633203c6fec028f66380d1c1fdd71463ff0c18f13ea52c772c305ee288f1e20c182f014659ee386074712f35017e1bc3782930ca72c703e3658e182fcd80f1326094e54e00c6cb1d315e9601e3e5c028cb9d088c573862bc3c03c62b8051963b0918af74c47845068c5702a32c7732305ee588f1ca0c18af024659ee1460bcda11e35519305e0d8cb2dca9c0788d23c6ab3360bc061865b9d380f15a478cd764c0782d30ca72a703e300478cd766c038001865b91260bcce11e3800c18af034659ae03305eef88f1ba0c18af074659ee0c60bcc111e3f51930de008cb2dc99c078a323c61b3260bc111865b9b380f126478c3766c0781330ca726703e3cd8e186fca80f1666094e5ce01c65b1c31de9c01e32dc078b38571a023c65b32601c088cb2dc05c0786bfc8ca96be9811930de0a3cb7c5cf93d2ecd60c786e73cb93faaedead165fb7c7ef2bb52d06058daffbedc033387e9ed4b6b83d031e612886e550b33be2674c69363803c63b806748fc3c29cdeec880670868768745b33be3674c69362403c63b816768fc3c29cdeecc8067286876a745b3bbe2674c69363403c6bb806758fc3c29cdeeca80675850a7d95d16cd86c7cf98d26c58068cc381a72a7e9e9466c333e0a902cd865b341b113f634ab3aa0c1847004f75fc3c29cd4664c0530d9a8db06836327ec69466d519308e049e9af879529a8dcc80a706341b69d1eceef819539ad564c07837f08c8a9f27a5d9dd19f08c02cdeeb668363a7ec69466a332601c0d3cf7c4cf93d26c74063cf78066a32d9addeb88f19e0c18efb5f0c4fd9dec7b2cbec63aaafb98a0f175178662580efb498c73c4383603c671c028cb613f895a478ce33260ac0546592ee198b1a17e12b5e07b7cfcbe53ed526dd0787dc6bbe569b09f04fa9ee0488bf141e3b598e096a7c17e12e87ba2232d26048dd76222f04c72a045027c348647188a6139ec2731d911e3a40c182703a32c87fd24a638629c9c01e3146094e5b09fc47d8e18a764c0781f30ca72d84f62aa23c6fb32609c0a8cb21cf693b8df11e3d40c18ef0746590efb493ce088f1fe0c181f0046590efb493ce888f1810c181f0446590efb493ce488f1c10c181f0246590efb493cec88f1a10c181f0646590efb493ce288f1e10c181f0146590efb493cea88f1910c181f0546590efb494c73c4f868068cd3805196c37e128f39629c9601e363c028cb613f89c71d313e9601e3e3c028cbddeb98b1a1eb97c79bb9efa86b95e6ee3beabaa4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98f7326df4f38f09d001f321518f349c80b43312c77af676cd68cc853121f4f29d61d7d3d4950f7272d3c058eea8ebe9e22a8bb30e41ae31339c0786f0e307a1dd37d109bc2a8789e76c4f354063c4f03cf338e789ece80e719e079367e9e544c3d93018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193da3673c148cb9d0867bc69c88c7b2a6322a9ee9f1f3a4347b36039ee9a0992c779b5bc6b2a6322a9e19f1f3a4349b9e01cf0cd06cba4533078c654d65543c33e3e749693623039e99a0d90c8b660e18cb9acaa87866c5cf93d26c66063cb340b39916cd1c3096359551f1cc8e9f27a5d9ac0c78668366b32c9a39602c6b2aa3e299133f4f4ab3d919f0cc01cd665b3473c058d65446c533377e9e94667332e0990b9acdb168e680b1aca98c8a675efc3c29cde666c0330f349b6bd1cc016359531915cffcf879529acdcb80673e6836cfa2192be3bd39c0f8440e303ad6b1aca98c8a6781239ef919f02c009ee71cf12cc880e739e0793e7e9e544c3d97018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193d63668c4fe600a3dfd69e9195d1c1f55583efd03cd7cc7d47bd43d3dc7d47bd43d3dc7dfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993ef17e2f75d96e937665e001e17dfbc7154cf52b5de17f5babe8e513fa5d54b8656cf195a1543991741bf971ce857007e65dd322ffe3265ee48c0ecc877d911e13a0e87fa8b8f270c3d94ff971dd53daaad7fb999fb8e6aeb9bbbefa8b6beb9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f18df95641dd79bb7cff54ade3159d2fd4f352fe49b04b994987a57fdb057e1f72e1dbef43fe58910fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671ce17e7180f9559e0090c9ea0019ef9643c53c8786691f18c22e31942c6733d19cf25643c0f93f19493f18c27e31941c6732b19cfd5643c1791f1f425e3994ac6d38b8c673619cf3d643ccf90f10c25e3b9918ce732329e47c978cac8782692f18c24e3b99d8ce75a329e2419cf03643c3dc878ce23e3194bc633878ce75c329e61643ccf92f1dc4cc67304194f3b329e2bc8789e22e3b9908ca7828ce731329e79643c93c978ee26e3b9838ca7948ce73a329ece643c1793f13c44c6d38d8c672e194f2d19cf74329e2a329e81643ce793f15c45c6d3928ca70f19cf02329efbc8787a93f18c26e3e944c6732719cf0d643c9792f13c42c6d3958c670219cf0c329e6a329e41643cd790f1f423e3b99f8ca72719cf18329e8e643c7791f1dc44c6938def9966c25344c6534cc6733919cfe3643cd3c878ba90f14c22e39949c65343c633988c6700194f7f329e07c978ba93f18c23e3194ec6730b19cfd3643c4792f1b427e3b9928ca7808027111c38864902feff02d85a18cbaacfbeceee50f7ff57b5bd052cf39aceb7b4acfb55b0c9b7645fb32c8b3abd0a7549ea7ce9379b523aa1af24cc8bbf22e0788d84e74a329ef6643c4792f13c4dc6730b19cf70329e71643cddc9781e24e3e94fc633808c6730194f0d19cf4c329e49643c5dc878a691f13c4ec67339194f31194f1119cf0b643c3791f1dc45c6d3918c670c194f4f329efbc978fa91f15c43c633888ca79a8c670619cf04329eae643c8f90f15c4ac6730319cf9d643c9dc8784693f1f426e3b98f8c6701194f1f329e96643c5791f19c4fc633908ca78a8c673a194f2d19cf5c329e6e643c0f91f15c4cc6d3998ce73a329e52329e3bc878ee26e3994cc6338f8ce731329e0a329e0bc9789e22e3b9828ca71d19cf11643c3793f13c4bc6338c8ce75c329e39643c63c978ce23e3e941c6f300194f928ce75a329edbc9784692f14c24e32923e379948ce732329e1bc9788692f13c43c6730f19cf6c329e5e643c53c978fa92f15c44c6733519cfad643c23c878c693f19493f13c4cc6730919cff5643c43c8784691f1cc22e39942c6339f8ca7d2c2f382231e79df5dd62df32f90f876b01d4ad57a5f7754a737f4ba5ae9f50abff82b8432d3daa67fd5f30f5c56b8ccef13e0bb396f80466f38aa8b6c8f0263fba0ef571cf936c7e793f9579ab9ef7686ef7679e2bbbde1bb7d9ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2ede0daa00cbf93265381319f843c5e2fb8f8be9ca37ad6bb4efc3a46fd94566f1a5a99d756c550e675d0ef4d07fad9ae3d655efc65cadc918019e3a22488372ede8abf4e65aadfe1e1a0eb5b86be58af858e348d3a862c6ce6bea38e21cddd77d431a4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fdb6cec778dd588a3ed4f345b91e781bfc2ed6f98218fdaa752dd2eb2ad4eb168ec5609732ff1b9e6bfa7ddeeff371f9f6c7361fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe99e3dccc4b7ff17381cd557ffea858ccc6bb0487d277542c3677df51b1d8dc7dfb38f771cee47b8903df09f02153437dfc9600cf22073c8eea997ab6b1d4a8d30b469d8aa10c1ee3973aa86701f89575cbfc52e091a912785cc44163b639f2cc27e39942c6338b8c671419cf10329eebc9782e21e379988ca79c8c673c19cf08329e5bc978ae26e3b9888ca72f19cf54329e5e643cb3c978ee21e379868c672819cf8d643c9791f13c4ac65346c633918c672419cfed643cd792f124c9781e20e3e941c6731e19cf58329e39643cc3c8789e25e3b9998ce708329e76643c5790f13c45c67321194f0519cf63643cf3c8782693f1dc4dc67307194f2919cf42329eebc8783a93f15c4cc6f310194f37329eb9643cb5643cd3c978aac8780692f19c4fc67315194f4b329e3e643c0bc878ee23e3e94dc6339a8ca71319cf9d643c3790f15c4ac6f308194f57329e09643c33c878aac9780691f1bc49c6730d194f3f329efbc9787a92f18c21e3e948c6731719cf4d643c45643cc5643c9793f13c4ec6338d8ca70b19cf24329e99643c35643c83c9780690f1f427e379908ca73b19cf38329ee1643cb790f13c4dc67324194f7b329e2bc9780a087812c181effe27e0ff6f824dde517f016cefe8fc22b0b5b0f868a9f34bc156a8f3b28ec3c2f4728703d78d3ab97a2f1f7d25615efc1501c73b243c5792f1b427e339928ce769329e5bc8788693f18c23e3e94ec6f320194f7f329e01643c83c9786ac8786692f14c22e3e942c6338d8ce771329ecbc9788ac9788ac8786e22e3b98b8ca72319cf18329e9e643cf793f1f423e3b9868ce74d329e41643cd5643c33c8782690f17425e379848ce752329e1bc878ee24e3e944c6339a8ca73719cf7d643c0bc878fa90f1b424e3b98a8ce77c329e81643c55643cd3c9786ac978e692f17423e379888ce762329ece643cd791f12c24e32925e3b9838ce76e329ec9643cf3c8781e23e3a920e3b9908ce729329e2bc878da91f11c41c6733319cfb3643cc3c878e690f18c25e3398f8ca70719cf03643c49329e6bc9786e27e31949c633918ca78c8ce751329ecbc8786e24e3194ac6f30c19cf3d643cb3c9787a91f14c25e3e94bc6731119cfd5643cb792f18c20e3194fc6534ec6f33019cf25643cd793f10c21e31945c6338b8c670a19cf7c329ecaecf094a977dba5af75005c382521bf1478163ad0c7513d4bf1bb065fc7b85ea5d5bb86566f1a5a15439925a0dfbb0ef42b00bfb26e99177fb9c8ac781ed779db77201e276114db42b73ca9fdf6f1a0fed4d07efb2ef0b868d71cd533b57f2d33eaf4b845772983b1bacc413d6dfb8ecc2f83ed906bcc8ae7299d17d604947b8a84516c4bddf2a4f6afa782fa5343fbd732e071d1fe38aa676aff5a6ed4e9298bee52066375b9837adaf61d995f0edb21d79815cfd33a2fac0928f73409a3d8de75cb539e803acbd4d0feb51c785cb43f8eea99dabf5618757adaa2bb94c1585de1a09eb67d47e657c076f0cc9ed9c6ac78e4d98eb026a0dc33248c625be694a7bc34017596a9a1766c05f0b868e71de99e6ac7561a757ac6a2bb94c1585de9a09eb67d47e6575a7c9704f16ab1aa115aacb2f0accab216e22f53e62539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9ebac26afb3d7d9ebec758e83d9ebec758e62f63a7b9da3981974563cf2ed4a614d40b9674918c5b6dc2d4feabda06783fa5381319f84fc2ae059e1401f47f54cf5215f6dd4e9598bee5206f7afd50eea69db77647e356c874c9857e620b3d7b969cc8a67bace0b6b02ca4d276114db0ab73ca9766c7a507f6aa81d5b0d3c2eda7947f54cb5636b8c3a4db7e82e6570ff5ae3a09eb67d47e6d7c076f0cc9ed9c6ac7866e8bcb026a0dc0c1246b1ad72ca53967abf7146507f6aa81d5b033c2eda7947baa7dab1b5469d665874973218ab6b1dd4d3b6efc8fc5ad80e9930afcc4166afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9eb9c3f3a2b9e993a2fac0928379384516cab9df2744d3d779819d49f1a7aeeb01678d6c4ce937eeee040f7d4738775469d665a749732b87fad73504fdbbe23f3eb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8a6796ce0b6b02cacd226114db1ab73ca9ef1ecc0aea4f0df5db59073c6b1de8e3a89ea97e3beb8d3acdb2e82e6570ff5aefa09eb67d47e6d7c376f0cc9ed9c6ac7866ebbcb026a0dc6c1246b1ad75cb936ac76607f5a786dab1f5c0e3a29d7754cf543bb6c1a8d36c8bee5206637583837adaf61d99df00dbc1337b661bb3e299a3f3c29a8072734818c5b6ce2d4faa1d9b13d49f1a6ac736008f8b76de513d53edd846a34e732cba4b198cd58d0eea69db77647e236c07cfec996dcc8a67aece0b6b02cacd256114db7ab73c6509a8b34c0db5631b81c7453befa89ea9766c9351a7b916dda50cc6ea2607f5b4ed3b32bf09b643ae312b9e793a2fac0928378f84516c1bdcf2a4f6af7941fda9a1fd6b13f0b8687f1cd533b57fbd67d4699e45772983b1fa9e837adaf61d997f0fb643ae312b9ef93a2fac0928379f84516c1bddf2a4f6aff941fda9a1fdeb3de071d1fe38aa676affda6cd469be45772983b1bad9413d6dfb8ecc6f86ed906bcc8a6781ce0b6b02ca2d2061141b1e2f1638e22936788a2d5a1c2adf6abe42e78bf46f02fe5f018caedac30506a3cc638c23af6bcdda193ced0ccd0ea56f55ff4a9d3f42ffe2f6aa044686edd52e0b9ab53778da1b9a1d4adf4a8b3e3a7fa4fec5edd5071819b6577be071d03e97270c1e353574beb1d9b13e8eea993adfd812d875c7e39094c163f71607f5b49d4bc8fc16d80e9ed933db9815cf409d17d604941b48c22836bc4ed91a3f4f79c2e0515343edd856c7fa38aa67aa1d7b3fb0ebbe1574973218abef3ba86701f89575cbfcfbb01d32615e9983cc5ee7a6312b9e413a2fac0928378884516c5b80675bfc3ce50983474d0db563db1cebe3a89ea9766c7b60d77d1be82e6570ffdaeea09e05e057d62df3db613b64c2bc320799bdce4d63563c83755e5813506e3009a3d8de079e1db1f3a4c703421e3535d48eed70ac8f9b7aa6dbb10f02bbee3b40772983fbd7070eea59007e65dd32ff016c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a6788ce0b6b02ca0d216114db76e0d9193b4ffab903f2a8a9a1e70e3b1debe3a69ee9e70ebb02bbee3b41772983b1bacb413d0bc0afac5be677c176f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7886eabcb026a0dc501246b17d003c1fc6cf539e3078d4d4d073870f1debe3a89ea9e70ebb03bbee1f82ee52066375b7837a16805f59b7ccef86edb0db337b660bb3e219a6f3c29a8072c34818c5b60b78f6c4ce937e7e8a3c6a6aa81ddbe3581f37f54cb7637b03bbee7b40772983b1bad7413d0bc0afac5be6f7c276c88479650e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d87603cf47b1f3742d4d183c6a2a30e69390ffc8b13e6eea997eeeb02fb0ebfe11e82e6570ffdae7a09e05e057d62df3fb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8aa75ae7853501e5aa4918c5b617783e8e9fa73c61f0a8a9c0984f42fe63c7fa38aa67aadfcefec0aefbc7a0bb94c1fd6bbf837a16805f59b7ccef87ede0993db38d59f1d4e8bcb026a05c0d09a3d8f601cf27f1f394250c1e3535d48e7de2581f47f54cb5639f0676dd3f01dda50cc6eaa70eea59007e65dd32ff296c875c63563ca3745e5813506e1409a3d8f6038f83b84bf1141b3c32ff09816f355fabf345fa17b7572d30326cafe22c68d6cee069676876287dabfa8fd7f923f42f6eaff1c0c8b0bdda6541b3f6064f7b43b343e95b693141e78fd4bfb8bd260023c3f66a9f05cd0e657b7828f7ed4319a75ef343a779c121d4bce0106a5ee035a7d2dcc1f1a50c8f650130e09484fca7c0f3edf87952f7e53ecd80e7dbc0f3adf879ba38aa67a95aef77803daef52aadbe6b68f5a9a15531944186ef3ad0af00fccaba655efc7966cf1cc58ce7b6c29a80729f90308aed5bc0e3a2dd5075bf50af4bd6df2a4c9f1d53e7d7c5f312bc57dc4aaf5738c45f219499505257f6779aad08fe2fdb4dd5679f6173f40e7317db733b99177f4541d6eedd36782f19b570f1bc29d3e3fe3e0bcfd7f1f194e27e8ebef63aaa7b26cffef65a7862ac7b97a8e79e7be2af7baafde8acd725eb57fbe8bf1fe354f372dcf7a4fde86cd4b910ca0c28a92bfb1fd07ed8da0ad7fba69c939bfb668ba0ae3d13ae126d379f097daded52ee63288f6d4e85fec5fdb302eaeaaa5d8cbac784eda2d976bbd4de7c2e69fa2e065d3e26d5ccf69c0275acb470571270633c66733f9375db9e91551a3ab26986dbfa638b8e7d2cdc7d08b819f7eb3e868e6c9a1d6cbf1e68e11e48c0cdb85f0f347464d3ec60fbf5200bf720026ec6fd7a90a1239b6607dbaf075bb807137033eed7830d1dd9343bd87e3dc4c23d84809b71bf1e62e8c8a6d9c1f6eba116eea104dc8cfbf550434736cd0eb65f0fb3700f23e066dcaf8705f57564d3ec60fb759585bb8a809b71bfae327464d3ec60fb75b585bb9a809b71bfae367464d3ec60fb758d85bb86809b71bfae317464d3ec60fbf5280bf728026ec6fdbab1fdf659f7eb5a0b772d0137e37e5d6be8c8a6d9c1f6ebf116eef104dc8cfbf578434736cd0eb65f4fb0704f20e066dcaf27183ab26966dbaf1dbd4b98f1bb8dfb9dea931e637a7f063c1f018f8b98721407a58efab9a4faa6ee31b4da6f68856377ec05fd1cf48569f09b04e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f337e97119faf48b98f4918c586cfa45cdce75775bf48af4bd6df2a4c038eabf3bb3776bf65a50586bf247088bf422873d2e975656fd46c45c181db0dc7e2c66db93bf63aa4b7a519ff322ffe8aa03e7b80c7c1fbf9299ebd06cf5e8b16f8de693cbecb46b8d1b8ac547d1feff0a06e3bef36ea839a7e18bbfffa9a16189a7ee8d87722a8bf3d8501a724e491c7c5b36147f54cb505bb8c3a991a1743998e50cf5d0eea59007e65dd32bf0b78646a013cae62303078028b3e325592f14c21e31945c6731619cf10329e13c878ae27e3399c8ce712329e87c978cac978c693f18c20e3399d8ce756329ea3c978ae26e3b9888ca7908ca72f19cf54329e5e643cf790f19c43c633948ce702329e93c8786e24e34990f15c46c6f328194f1919cf44329e91643c1dc8786e27e339968ce75a329ed6643c49329e07c8787a90f19c47c633968ce75c329e61643ca790f1dc4cc67304194f3b329e2bc8781e23e3a920e3b9908c673219cfdd643c6792f1dc41c6534ac6733c19cf75643c9dc9782e26e36943c6f310194f37329e5a329e2a329ed3c8780692f19c4fc6731419cf55643c2dc978fa90f1dc47c6d39b8c6734194f27329eb3c978ee24e339918ce706329eb6643c9792f1ec21e379848ca72b19cf04329e6a329e7d643c25643c83c8788e21e3b9868ca715194f3f329efbc9787a92f18c21e3e948c6731719cfc9643c3791f11491f11493f15c4ec6338d8ca70b19cf24329e1a329e33c8780693f11c47c633808ce730329efe643c0f92f17427e31947c6339c8ce754329e5bc8788e24e3694fc67325194f01014f2238f05b4c09f8ff5eb0c937833e025b0bcbfae439b59457c7c5451d0e5c770bcbba3fb430a04e3ba12e499d2ffd66534a27f4958479f157041c1f92f05c49c6d39e8ce748329e5bc8784e25e3194ec6338e8ca73b19cf83643cfdc9780e23e31940c6731c19cf60329e33c8786ac8782691f17421e39946c67339194f31194f1119cf4d643c2793f1dc45c6d3918c670c194f4f329efbc978fa91f1b422e3b9868ce718329e41643c25643cfbc878aac9782690f17425e379848c670f19cfa5643c6dc9786e20e339918ce74e329eb3c9783a91f18c26e3e94dc6731f194f1f329e96643c5791f11c45c6733e19cf40329ed3c878aac8786ac978ba91f13c44c6d3868ce762329ece643cd791f11c4fc6534ac6730719cf99643c7793f14c26e3b9908ca7828ce731329e2bc878da91f11c41c6733319cf29643cc3c878ce25e3194bc6731e194f0f329e07c87892643cadc978ae25e339968ce776329e0e643c23c9782692f19491f13c4ac67319194f828ce746329e93c8782e20e3194ac6730e19cf3d643cbdc878a692f1f425e32924e3b9888ce76a329ea3c9786e25e3399d8c670419cf78329e72329e87c9782e21e3399c8ce77a329e13c8788690f19c45c6338a8c670a194f25194f0b8307ffafde0ddba3f3f2eda042f8ff44ddb9bc9d5e97949167c4ea5ec507864dd57787a3fa7e10d44d4998df01f515f60f80e703473c3b0d1ed37711e42b41b3ed864d316e73c4b8dd6094f96dc028fa6d079eed8e7876183ca6ef22c8f701cdde376c8a71ab23c6f70d4699df0a8ca2dffbc0f3be239e6d068fe9bb08f20341b32d864d316e76c4b8c56094f9cdc028fa6d019e2d8e78b61a3ca6ef22c80f02cdde336c8a719323c6f70c4699df048ca2df7bc0f39e239ecd068fe9bb08f28341b38d864d316e70c4b8d16094f90dc028fa6d049e8d8e7836193ca6ef22c80f01cdd61b36c5b8ce11e37a8351e6d701a3e8b71e78d63be2d960f098be8b203f14345b6bd814e31a478c6b0d46995f038ca2df5ae059eb88679dc163fa2e82fc30d06cb561538cab1c31ae3618657e15308a7eab8167b5239e35068fe9bb08f255a0d94ac3a6185738625c6930cafc0a6014fd5602cf4a473cab0c1ed37711e4ab41b3e5864d312e73c4b8dc6094f965c028fa2d079ee58e7856183ca6ef22c8d78066ef1a36c5f88e23c6770d46997f071845bf7781e75d473ccb0c1ed37711e44781664b0d9b625ce28871a9c128f34b8051f45b0a3c4b1df1bc63f098be8b205f0b9a2d366c8a719123c6c506a3cc2f0246d16f31f02c76c4b3c4e0317d17417e3c68f6b661538c0b1d31be6d30cafc426014fdde069eb71df12c32784cdf45909f009abd65d814e39b8e18df321865fe4d6014fdde029eb71cf12c34784cdf4590bf196cc2db1b6c6fe87c2fb0bdaef33dc1f69acef700dbab3adf1d6cafe87c37b0bdacf3e5607b49e7bb82ed459d2f03db0b3adf056ccfeb7c5fb03da7f3fdc0b640e793609baff3fdc1364fe72f06db5c9dbf046c7374fe52b0cdd6f9cbc0364be72f07db4c9dbf026c3374fe4ab04dd7f9abc0f6acce5f0db66774fe1ab03dadf3d782ed299d1f00b62775fe3ab03da1f3d783ed719dbf016cf7eafc8d60bb4de76f02db7e9dbf056c9fe8fcad60fb54e76f07dbb774fe0eb07d5be7ef04db7774fe2eb07d57e78783ed7b3a3f026cdfd7f99160fb81cedf0db61feafc68b0fd48e7ef01db8f757e0cd87ea2f363c1f6539d1f07b69fe9fc44b0fd5ce72781ed173a3f196cbfd4f92960fb95cedf07b6cf747e2ad87eadf3f783ed373aff00d87eabf30f82ed773aff10d87eaff30f83ed739d7f046c5fe8fca360fb83ce4f03db973aff18d8fea8f3d2aea976f64f3a5f12c4dbce7e15d44d25e05bfca9327fd6f9d6461959b610ca9ca33b14aa671cea5ba6d20e4bbbac6cd20ebf013669875f079bb4c3af814ddae157c126edf02b609376f865b0493bfc12d8a41d7e116cd20ebf003669879f079bb4c3cf812da9f30bc026edf07cb0493b3c0f6cd20ecf059bb4c373c026edf06cb0493b3c0b6cd20ecf049bb4c333c026edf074b0493bfc2cd8a41d7e066cd20e3f0d3669879f029bb4c34f824ddae127c026edf0e3609376f85eb0493b7c1bd8647ff90a6cd236ef079bb4cd9f804ddae64fc1266df3b7c0266df3b7c1266df377c0266df377c1266df3f7c0266df3f7c1266df30fc0266df30fc1266df38fc0266df38fc13656e77f0236699b7f0a36699b7f0636699b7f0e36699b7f0136699b7f0936699b7f0536699b3f039bb4cdbf069bb4cdbf019bb4cdbf059bb4cdbf039bb4cdbf079bb4cd9f834ddae62fc0266df31fc0f698ce4b5bdd066cf2ac584da5df70c271785a802f614906f1b6fd3825218f7597a9928c673619cf28329e57c878ce22e31942c6730219cfe1643c6f91f18c27e35940c6b3948c670919cf9b643ca793f1ac27e35947c6733419cf07643c3bc8782e22e32924e39949c6f31219cf39643c43c9782e20e339898c2741c6338f8c673119cf22329ed7c9783a90f1ac25e35943c6732c19cf76329e6d643cadc978be22e3994ec6731e19cf0b643ce792f10c23e339858ce708329e76643c15643c1792f1cc21e3799b8c672119cfab643c6792f1ac26e35945c6534ac6733c19cffb643c5bc9783a93f1b421e379868ca7968ce739329e2a329ed3c8780692f19c4fc67314194f4b329e3e643cb791f1cc22e379998ca71319cfd9643c2bc9785690f17c49c6732219cf16329ecd643c6dc978f690f14c20e3994fc6534dc6f30619cf3e329e12329e41643cc790f1b422e3d94fc633838ce745329ee5643ccbc8784e26e3798f8c6713194f11194f3119cf5c329e1a329ed7c878ce20e3194cc6731c19cf61643ccf92f13c4fc6f32e19cf3b643ca792f16c24e3d940c67324194f7b329e5d643c3bc9780a087812c011804dfedf126cf21d9e7d60fb42e7f7804dbee1f316d83ed7f9c7c0f688c5d6c2c2270cd3c026efca7e0136b93ff328d8e49d89cfc126e70de25fcdafe870207f0b5846fcb4b4f0a3bfcf2d5c92c7ed2dcb248378b737fa4a06f66fde15188c879a672719cf2e329ef6643c4792f16c20e3d948c6732a19cf3b643cef92f13c4fc6f32c19cf61643cc791f10c26e339838ce735329e1a329eb9643cc5643c45643c9bc878de23e339998c671919cf72329e17c9786690f1ec27e36945c6730c19cf20329e12329e7d643c6f90f15493f1cc27e39940c6b3878ca72d19cf66329e2d643c2792f17c49c6b3828c672519cfd9643c9dc8785e26e39945c6731b194f1f329e96643c4791f19c4fc633908ce734329e2a329ee7c8786ac9789e21e36943c6d3998c672b19cffb643cc793f19492f1ac22e3594dc6732619cfab643c0bc978de26e39943c67321194f05194f3b329e23c8784e21e31946c6732e19cf0b643ce791f14c27e3f98a8ca73519cf36329eed643cc792f1ac21e3594bc6d3818ce775329e45643c8bc978e691f124c8784e22e3b9808c672819cf39643c2f91f1cc24e32924e3b9888c670719cf07643c4793f1ac23e3594fc6733a19cf9b643c4bc8789692f12c20e3194fc6f31619cfe1643c2790f10c21e3398b8ce715329e51643cb3c9782ac9785a5878f639e2916fc5c8ba657e5f33f7bdc3f0bd234f7c6f337c6fcb13df5b0ddf5bf3c4f766c3f7e63cf1bdc9f0bd294f7c6f307c6fc813dfeb0cdfebf2c4f71ac3f79a3cf1bdcaf0bd2a4f7caf307cafc813dfcb0cdfcbf2c4f73b86ef77f2c4f712c3f7923cf1bdc8f0bd284f7c2f347c2fcc13dfccd7dfea3b61d2577997fe4dc0ff2b80f12d478cfb0c46997f0b18c586dfa3ae70c41375ed5e41e05b6921f7b2e4996702fe5f098cae62aac26094795b4ced009e4a473c51f71c2a097c2b2de45d6ce9539980ffe3f8cbae62aad26094795b4c6d039e3e8e78a2ee95f421f0adb490779fe59dbf04fc1fc75b7715537d0c4699b7c5d456e019e88827ea1ecf4002df4a0bf956987c932601ffc7f1195dc5d4408351e66d3185e3e70e72c413756f6a10816fa5857c6b57be799980ffe3f84dae626a90c128f3b698c2f1e3063be289baa73698c0b7d2429e05cb37da13f0ff21c0e82aa6061b8c326f8b291cef6688239ea87b8143087c2b2d86eabcf4b14ac0ff8702a3ab981a6230cabc2da6d601cf50473c51f7308712f8565a0cd37979872301ff1f068cae626aa8c128f3b6985a033cc31cf144dd7b1d46e05b6951a5f3abf56f02fe5f058cae626a98c128f3b6985a053c558e78a2ee195711f8565a54ebbc7c732e01ffc7f1df873962ac3218657e18308a6d05f0543be289bad75d4de05b6921dff65fae7f13f07f1c8fd5554c551b8c326f8b291c0fbac6114fd43dfa1a02df4a8b513a2f63c224e0ffa380d1554cd5188c326f8b291cbf7294239ea8670ba3087c2b2de4db5c4bf56f02fe5f0b8cae626a94c128f3b6985a023cb58e7816193c8b2c5a1c2adf4a0be9cbbd58ff26e0ffe381d1554cd51a8c326f8ba945c033de114fd4b39cf104be9516f26dedb7f56f02fe3f01185dc5d4788351e66d31b510782638e2897a0635210bbea39ea764c377d4b3816cf88ebacf9d0ddf51f76cb3e13beafe63367c47dd4bcb86efa8fb42d9f01d758f231bbea3aed7b3e13beada331bbea3aea3b2e13bea9a201bbea3ce6fb3e13bea5c2d1bbea3ce3b7c7beedbf3b87d1fca73877c6dcf0fe531f4501e4bfcb581bf36c8966f7f2cf1d706d9f29dafd706be3dcf7e7b2ed75f0541f4f5d83b8e7c2f317ccb3c3e6759e2c8f722c3b7cce33383458e7c2f347ccb3cdeff5ee8c877b1e15be61766c1773bc377bb2cfa6e6ff86e6ff1ed607b972582fad7dfc2805312f218036f3bd0c2513d4bd57a17eb757d1de37a6df76dccfda518ca2c06fd5cb71db26eb3edc845668c8b82f87c9726c0877c974cd9e4f9f11b609376ff75b049bf80d7c026c7a657c126cfa45e019b3cb37a196ca3747e3fd8e4d931f6d997e7ff5bc156a5f3d8577c98ce6f069bf4a5c23ecad21f6e13d8a44f23f68d957ea91bc0267d8bb14fa6f40f5f0736e9e38f7d01e53d8d356093776db00f9abc2fb50a6c7b741efb3ec9776856806d9ace2f07db1f747e19d81ed6f9dbc0f67b9dff0a6cbfd3f985607b48e7df06db6f757e31d81ed4f997c0f61b9d7f116c0fe8fc0b60bb5fe7f15db65febfc4eb07da6f3f80ed5549ddf01b65fe93cbebb739fce6f03db2f75fe79b04dd1f9e7c03659e71780ed173a3f1f6c3fd7f979609ba4f373c1f6339d9f03b6893a3f1b6c3fd5f959601ba7f333c1f6139d9f01b6b13a3f1d6c6374fe59b0fd58e79f01db8f74fe4bb0dda3f38bc0d642e797804dc68cc47e2a853aff0ed85ae93cf63f92effb4f00db613a3f1e6c6d74be166cf26db8516093f1a06bc096d0f96ab015e97c15d8e4fc6c18d864fc93a1609373a921603b52e707834dce7b06814dc6b31c0836f906691fb01da3f39560936feb5780ed389ddf07361973ec2db0c977ebf6804dc6627e146cf2bdea69603b59e7ff00361987e561b09daaf3bf07db693aff3bb0c9373c1f025b89ceff166c1d74fe41b09da1f3bf019b8c91f500d8ced2f9fbc1266307ff1a6cf2bde7cfc0d651e7a782ed5c9dff15d8642c91fbc026e383fe126c9d747e0ad8e43bdc93c176a1ceff026c32dedfcfc126df189e043619d7ed6760eba2f313c156a6f33f055b579d1f07b6729dff09d8bae9fc58b075d7f93160eba1f33f065b4f9dff11d87ae9bcb4336a7f56fbf95e3d9f0ce23b2f53fe3e0aea4f0d5d1b0803f2c479ae5d0c3ce86b77ec752f4b9dd7cb7edf42af57626837f8de15bbeff435c5877a5d857abdbb0cdf8550e65cdd38a8e5e498df522fb7c7580eef63c9ba65998bc0bed358773b5ddf0f1dd57797c124dca88394b94033a963e30f74be0d2c13235beafa58622d000d714a425e18dc6855568ae7bd8de1f9107876c7ce93be5e771113b86fc57dbd6edec73563ad18caec02fd763ad00ff77559b7cc8b3fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8a67afcee3736529b79784516cbb81c7c57d7e7c0e2beb57cf75769e5ee77777ec7eeb3fdf6ba5d75b6ad4b910ca7c0dcf9cf6e87c11fc5fb65bd4b674f09cb0c16d29fe8aa03ef82c68af239edd06cf6e8b16922f89cd77d908371a9795aabe2cea19fb1e43d7bd164d5dedafbbf5ba0a0c4d717ffdc8e0c167a345c0fbb1fe4dc07a3e863a38d8c71b8c0bf187fbd26eb049fe236074b19df15822ed813c0fc767d352e657c673f1f8b77d59a9cb76e303a853323830be0ba1ccefa0edfb5ce7b16fc85ed0ed1f96ffcbd4d0736ad14fd5797bfc754e6ddf6dc099043fe8fb7d608dc977bd77680a74123f622f84fcdfa13f8794133d446b61c7f1ca91dd5cee2363b96228b3c352ff64106ffdb71b3cdb0d66b54dbe8438fb071cff5db5493b2234ba08349232bb41a33d8e78761b3cc221fe5419d9fead8d32b26c2194f95fd046a9ba483b2ff5c4be2d780c70751c135fb26e99b79d1b7f088c661d557c0c38ae8e7777ecbcb9d5ffebb092f42fb6eb71f5ff9275b7d3cb0a4760acbf14d62f5cad83e863cbff6cdf92baf5bbec5fb6c7a8b3b0a0ce52a65d49fa57c5d9e53a9fc9b9fea1ba6e8b3ad7dfe1802711d4bff6565343c7773cc67ce080c7513d4b6dc7ae9d469d8aa14c47a8a783f39806df05de0ebe5d6c73d442cea176195a1442990e25e95f693ba274c46bd50fb3529732ebf960a9a52e52a663495d5dda803d4e2697dbed7da8935aef6e4b5da5cc052575ba74d6f9046c27bc6fd2c7f27f991a6a0f702c9e2df1d739b57d37036712fca0eff7803526dff5be0522e7fbe247ec8590af2ca92b2be5440fd15ad8d53e22effc21bbb9dc2e63b96228b3d552ff64106ffdb7183c5b0c66b54dba94d4e5258e5cb69b5b23342a058da40cde3f96633bbe77673beeef76c41d75dcdf0d8c66bb89e72e2ed9f6186ce63d54dbf9a094c1733229734d49fa57b5b3094b59f3deb08bfb98f80e6a00f5088cbaca8431e0e0dab01caf9da49d123f9dc1be5be745e7ce86768550666049fad7e179b7f5dea5797d87d714c26dee5bf8eec7e0923a6e1c3b71b7fe2d02db27fad7d1755ab9ed9ea170d8ee190e2ba963c765856bbfa52ee635728be0c07bea5f1b65f1be5b43cb9979731c4aa5ef2746399b1fbce689ed5d8d2ea5a5c8d422b0df2ff8c8602f080e1c7353f6038c39f33e4a67633d781fa5b624fd2b6d9259566dfb7f3fa64e1fd98ea21db62718931f016352e74bbfd9d4c5567f99177f8af163a30e6edaaef4fb4a99dc07de033c2eda76476d74291e63dbc4b6de5e55b6e3ff478656597c5e6b3de69bcfdcdb18f9787c9755dbee3fd9b4d865e171f51c254a8b5d16dff169d17d84edf861d362a785676796b5d869f11da3163578dfb3212d3eb0f0b8b817d590161f587cc7a7458fd2869e6ba0163b2c3caeee3d446921fe3265de49c0dcc6c8c7e3bbbcca769fcca6c5760b8fabebe6282db65b7cc7a74597ee788fae212db65978e2bf3fd7b016db2cbee3d3a2672fbc87d79016ef5b785c3dd38dd2e27d8bef18e362a4ed5e8e4d8bad169ead59d662abc5778ce787dd6df7da6c5a6cb1f038b8efdaa0165b2cbe63d46238de776d488bcd169ecd59d662b3c5777c5a5475b3dd13b669f19e85c7d53de1282ddeb3f88e4f8be13d95ef4d8dd0629385675396b5d864f11de335542a2e3636428b8d169e8d59d662a3c5777c5a54a7ceb53634428b0d169e0d59d66283c5777c5a94a68ea9eb1ba1c57a0bcffa2c6bb1dee23bc6b8485d4fae6b8416eb2c3cebb2acc53a8bef188f23a9b858db082dd65a78d666598bb516dff1695193baffb4a6115aacb1f0acc9b2166b2cbe63bce7928a8bd58dd062b585677596b5586df11d9f165d53c7d4558dd0629585675596b55865f11d9f162353cfc45636428b95169e9559d662a5c5778ce79da9f6624523b45861e15991652d56587cc778de99ba7fb1bc115a2cb7f02ccfb216cb2dbe636c3b53e79dcb1aa1c5320bcfb22c6bb1cce23bc6f3ce9416ef36428b772d3cef66598b772dbe633cef4c1d47de698416ef58785c8d8112a5c53b16df31c645aaed5cda082d965a789666598ba516df31ded74ab59d4b1aa1c5120b8fabf11aa2b45862f11de3f548ea1edfe24668b1d8c2b338cb5a2cb6f88ef15951ea1c7c5123b45864e15994652d1681ef3db1fb4ef7e7161fd217eb42438b4228735a87f4aff4c58ad251d681fdcab02e6fc75e9774bfb2851175791bea2265ce82bab4099c8c5154eea8aea998790beaa4d6fbb1a5ae52e6bc0e75ba74d2f9046c93fda05b6fcbff652a30e6939017fd549ddf88bfcea9587d1d3893e0077dbf06ac31f9ee82be0b74123f622f847caf0e7565a59ce8215a0bbbda47ded4796437975b642c570c65deb4d43f19c45bff370c9e370ce6d47b0f106712476edaae34d39b111a5d081a4919ecb3f7b1231eb30fa170883f5546b67f6ba30cf6a1943217431b85fd4aa59e89e0c07e938edab22ec82eeb9679f1570cb63dc068d651c5c767d0f753c68a907124944dc685e80aebe961d8545d7b3aaaabf89275cb7c4f6094712a7a649fb1acb18cdd0d46c5d3db816638f6864c0d1d2f7a034f2f073c8eea993a0e551875ea69d4a918cae0bb8d150eea59007e65dd325f01be5d6c73d4428ec9e7195a14429961c6f963948eb20e15bf3d2c75e9ebb82eb26e6997fa66c177a5e1bb9be13b11d4dfce41d0f0fe5509cc7d1c30abf5f68b7fbda578de2631257eba419dfa830671d509d725e779fd0d6d0b213f05cef3a49c9495e397b0ab58966d89ece672bd8de58aa14c5f4bfd9341bcf5ef67f0f43398d536b907ceed1cec0fa918e86b70c87c37d0ae5f84767d413b2983c7bfee8eb4eb63f0c87c77e091739c0ab0c9b982f027e0ff5db3c06db67b15166eb1e13871dd2d8cdde2674c9deb74371865be1b308aad0ff0543ad2ccdcd6e719fae071b9b55146962d843233e1d898b09455fb5dc782ba7ab5d4f6d8de1dd36d7a6b077ae1388d01e813181a06a097d4b395039eb641dd588d9326d74e1c7ef7c89b46a61f3d0a5aa18189bf05966ab4001be65b5a6c41507f48ca42b0c99094adc0d6c2900587c294f232a49d0bb9500f5977a1c1d90658e2f48dc379cad450e81c063c2e4259858e0ce9a943e7b689a3278fc4f8686570362576d4ff5a36502e6a5daeb683b94f2461de8cc14247fe5b427d93302ffed4b629d6f9f1c347dcdb7fe2dd53c68e1c3779120a65eed8982f08ea6f00f3374a70573b1d060056181b875646bdb0c190ffc986691b3f67398e996b6a13803f99da826e873bd04dad5fc6be1d317ccc981ba6548d193de2f229e3464c1e5d3b0eb7661b43b9a82d2dff6f0d365b138f65d584cd162e7b98c5669b7094e136609323d7e160139eb6606b0979296f6e1927e1da11d62fbb94fa9f12a795aef861415d08c8e158b5ab6aff559f8f55a7416aa86335b4b1da9c6ae86275c7500d4dacbe62a7861e56430daba1854f0ad24307aba1824f0dd24301abaf5d9404e9a17dcf08d243f79e15a487e63d07f8be0dcce706e9d32e35b46ea7203d74aeba75a95e5d579f7953efd6abd377755b409df2aa4b3c75faa94e3bd5e585ba7da16e65a9533a75baac4e05d5e99bba1ce9a7b5ee1fa68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc3744d98ae0dd380305d17a6ebc37443986e0cd34d61ba394cb704e9e19d6f0dd2c3afabe19f6f0fd24343df11a4878dbe33480f297d57901e6e7a78901e8a7a44901ea67a64901ec2faee203dbcf5e8203d4ceebd417aa8ddb1417ab85e351cb61a265b0d9fad86f9554302ab2185d550c36a58623584b11a02590d8dfc60901e72590dd9fc48901ef6795a981e0bd3e3617a224c4f86e9a9303d1da4870757c3864f0fd2c38cabe1c76705e9e1cae704e9e1cdd5b0e76a3874354cba1a3e5d0dabae867957c3bfab61e15f0ed32b617a35483f92508f62d4230a75fb5f3d0653b7a8df0ed2b7ce1707e947dcea91bfea02a1ba84a82e32cb8374172ad5a54c75b1535d0e55174cd5255575d1555d9655176ed5a55d75f157af3ca85740d42b31ea1521f5ca947a854cbd52a75e3154af89aad72ed56bc4eab5eadd41fab6f8de20fda854dd0e578f06d42d7375fbfed3307d2b48c7e477c2f4dd307d2f4cdf0fd30fc2f4c3203dacb11aee580d97ac865656c330ab219bd550ce6a2868356cf467417ae8693574f56f83f490d8bf0fd3e761fa22480faffd6598fe18a6afc2f4a730fd394c7f09d35fc3f4b730fd4b98fe354cff16a6bf87e91f61fa675037cc36362427e9d6475fc104c3274f1e3976fce492c9b52563a78c993c7afc98074aa68e9e3caaa4f6be91136bc6d44ec585bfad179631c2fb4f9c38fc8192d1e3aa47de5f523b6572496d4d4955ed9471d5f50ee27fd10b9d72a0c7e1d5d5d1cefef39b90fedf263a3d5cb78b32fafa550dd7ada865130439aa290b756fd9b40a4dd44730b9d4bd397d1e5c32694cede492d29271e1dff0c05b3b756475e712fcdfa450e449934b264d1e3e717249cdc4dab1255d3ae37a1f6ddb844afc575b3730679fd434713aeaef2c3529c47e797a1314f88fd39b46dabae41b90b62d699ad3929226d4f09ca62c747513096f29899465d294aac913878f981cbdf0eddf64e1bb9a52cd714dace6a91d9ae0eccca62cd4bf43d308ef6a8ab31919380bfe1bc78b38aa8c5506009b2d6c6f00000028471f8b08000000000000ffed9d77741cc791c6679118164b1024c11ca04433015c2c12012630674a9464e5409004455a24419150b22c4bb224e79cb3e5749673ce675db4efce77bef339c83947c9e9feb9e77b77eff95df76c97f1a139b3c64253600db6e6bde2f6147aa77efd4d75ef6cf7ec301314b73f18cbb872b5b18b827337fa7b9f7bcd3fb5ad2dc163e539393329e1ac4a0967754a386b52c2599b12ceba94704e4a09e7e494704e4990d3b2550523b7a479a732e89a346336659ad6a740d35cca349d96024d1b82748c51d353c2d99812ce1929e19c9912ce5929e16c4a09e7ec9470ce4909e7dc9470ce4b09e7fc94702e4809e7c294702e4a09e7e294702e490967734a382f4809e78529e1bc28259c17a784f39204395702e752f7fa34f7baccbd2e77af2bdc2bbd67957b6d716dac71fbadc6565b36636ddedf0ac6da8d7518ebf4fed665acdbd81a633dee6fcdee6fbdc6d61a5b676cbdb10dc6363a1d3619db6c6c8bb1adc6b619db6e6c87b19dc67619db6d6c8fb1bdc6f619db6fec526397193b60ec72635718bbd2d8d38d5d65ec6a63d718bbd663b9ced8f5c66e3076a3b19b8cdd6ceca0b17e63878c1d3676c4d880b1a3c66e3176ccd87163cf3076abb113c64e1a3b656cd0d86963b7193b63ecacb12163b71bbbc3d89dc6ee3276b7a7d9338ddd63ec59c6eef5389f6dec3e63f71b7bc0d8738c3d68ec21630f1b7baeb1e7197bbeb117187ba1b117197bb1b197187ba9b197197bb9b157187ba5b157197bb5b1d7187badb1d7197bbdb137187ba3b137197bb3b1b73816ea086f35f636638f187bbbb177187ba7b177197bb7b1bf32f61e638f1a7bafb1f7197bbfb10f18fba0b10f19fbb0b18f18fba8b18f19fbb8b14f18fba4b14f19fbb4b1cf18fbacb1cf19fbbcb1bf36f605638f19fb1b637f6becef8cfdbdb17f30f68fc6be68ec4bc6fec9d83f1bfb17635f36f6afc6fecdd8573ccdffddd87f18fbaab1ff74beafb9d7afbbba342ff60d63df74e5c7ddebb7dcebb7ddeb77bcf77cd7d8f73cdff78dfdc0f3fdd0d88f5cf9c7eef527eef5a7eef567eef5e7eef517eef597eef557eef5d7eef509f7faa47bfd8d7bfdad7bfd9d7bfdbd7bb56baa973515cb9383e1ad2f48688cea389ab76b2a24fed260e466b5a8767fa3d766e7af71fbf44adad5bafd5acf5fe7f6ebbce34c76fb933d7fa3db6ff4fc33ddfe4ccfdfe4f69b3cff1cb73fc7f35fecf62f067f36803957e7b7be6ae7ca808ff2b50a7cb5ce570dbe3a3a1cf826395f2df8e8fcd6816f8af34d02df54e79b0cbeacf34d212d8dd53b5f5f9054aee4fbed7173491fd7ad434d4b9ef7b03d6e0313eff4e47907ec711b19786d7ecc70c79a0e7933d3f91ac137cbf96680cf0d417fee73d637dbf966816f8ef335816faef3cd06df3ce79b03bef9ce37177c0b9c6f1ef8163adf7cf02d72be05e05bec7c0bc1b7c4f91681afd9f91683ef02e75b02be0b9daf197c748fcb05e0bbd8f92e04df25ce7711f868acbd187c746d7889f3d971627206dee3fc344685efa1f1197ccb686c06df721a97c1b782c664f0ad84d8e45b05e30af95a9c8fc628fbb75e57ee0b92ea1385b04fac4dfab8e6c8f6b8eb933f6eb86eb72118d6ba0fe2ac05ad36ba7282f706b561ec8c338a43fe1a28ef82ba548ff4a0cf1962b79f27eb5c796389f7f57aefcb419d7511edef0b926dff7a8f67bdc75c0bede7c9d9f682e6eca8b7b273f66aa8ebe71e5df34cc49cdd0b1c0c39dba5393beaadec9c1d80ba7eeed175ef44ccd9eb80832167fb7972b690d79c2dce91054174eed1779f8998b3c78023f99cedd49c1dfd5676ce3e0075fddca3efbf133167ef008ee473b6bb5faf0d46bd959db32f83ba7eeed15ccc44ccd9878083216707749c1df55676cebe05eafab947f3821331675f091cc9e76c0f53ceb66bce06c5f5ce2088ce3d9aa39e8839fb0870249fb387757e76f45bd939fb59a8ebe71ead974cc49cfd902bdb7586afb9758685e0fbbaf32d02dee473fb4807536e1734b78bf7810441748ed2dadd44ccedc75cd9e6f1e370ef01f9bee57c1780efdbce7721f8bee37c1741bb18fa40bff681516f65f781ef415d3f97691d7922f681af020743ce1ed69c1df55676ce3e0175fddca37b1a2662cefe1038187276407376d45bd939fb47a8ebe7de32579e88394bf795daeb851fbbeb8515e0fb89f3ad04df4f9d6f15f87ee67c2de0fbb9f3b582ef17ceb71a7cbf74be3cf87ee57c6de0fbb5f315c0f784f3b583ef49e7eb00df6f9caf137cbf75be2ef0fdcef9bac1f77be75b03be3f385f8ff3d9f52ebaf7eacbce67cf2d69d417247b6ee91e4b3a36edaf1a87d80d5eec86718cdde8c56e8c88ddc2103b0b3168cb78fb7d506ee1e5c9e78291bfffa058ab938fd56edbde1a8cbeedab8127cfd0f62cc4180d4f1e78da92e709eff52d247fdcf01cb77a9a6621562bb4ab9da15d198845c7a67d8a97031f8edfed118c1dc9331632108b8e4dfb1dc0483efc3ca1cf75ea3ff6f37069669897a12f85d744148f9efd451cabc14f757e3f6b986d8563ab87bfe3676b9be763cacb302f28161d9bf6295e3db4a76dfc190ba365cc7b8c5c63440662d1b1fdd8d8df5bc65fb3519dd71cf8cec3985418eb98540f6ce3719d1277aea5c4e6f8bcca400c1adb48f302f8a9ce6cf783043bb6ed807197a1ff15cabd7ec3f120f93c2ee4b15f8f86a71d7838fa3e537fcde3e7fe9f826473add3d3aacdd32a07753a40bf4e06fd4a5d87503c6556666556666556666556666556666556666556666556666556666556666596cf8cf75fe0fa26d55b2584917c05e0e198e70f9f1fe58e45c7b7eb3adf86759de4d72d0a795cb3a47b0c977b6dae813a4f6686eb7e1fd6d3fdb5415cd35cc5abdda8eeb3a80fce5d8be55c438c5b078e5abf6c4e2c76e130d77a9b7d868a7d0e59aba7ebaa084d19ee5319a169c6d314ef535ce9f1d83c9d573dccc6b1f657ee5a246a45e524d7f6f01e03def3521c3f2817aa8291e3077ece74251e7be41a26ad977779b16ba0ceff6486cf0ddd8b4affcfa17fcf93add3ed1d9bdeb31cfcdddeb11bdc7b89a3d63b7e2bbc97eafc1f8ca96fad0afeac19c7fd1f382e07d056dcfaa08cebe6c97f0e17d7f1dbcbe0e9041e8e7186e97a238f7d20e975fc6e4faba8eb18aad305fa7533e817752d4afb144f99955999955999955999955999955999955999955999955999955999955999e533e36f4589350bf50a4218c7e9de87703d839eff42c7b7eb3a2fae1a8ecbbd0e476b4e2bbc36d7409daf540dd77db92bd707e7deef10772e19d6f34a9e4b8a570fedc1b520aedf7377783c1d115a50b939b1d8c575fce4351e5ec76ff7742d4468cad55f718d1535c5fedae6f1e0da687d70eebd255938ce78dc3b149717140ffb5207f8a88cbf8fe638cff859e2dfd743f170fdfa51a76d43c075ee0b79ce71630db4a92f3837bf6ba0ce0761ecfbb02be33d1c78efc863117fa7add43a35e9c7f22cbb7c71dd772d70f6411c8cbd0e58138add86b133ce280ef96ba0fc85aae1ba548ff420ad89ddf6117a2618b2fbef6bf3de97833a3d11edef0b926d7fafc7d3eb31db73f231c8b3c7e0f39f6b4cea89d16839684475f03a88eb9e3c7f8cf4ef6fc4fbf6eabc3a78cd4275be046354dcfda351f71c727d8ec5dd7318756ddc098c7e1bfdfb3c2bfd3eadc761bc48fa3eadc72187f03eadc03bfe0a383e71d505f19f2d54e7bbdef1fd6b727a0fde0746757e00e34583bb67b13e38f7fa1bef991a8fef5771f749533cbcaec1befd97da6e99d740fdbe049931279005af13a8ceafbc73d61dc3bd3ae2bd4fc6bc97b46a7165fcfee2eb6775e881f7f425a243b1cff77a6da1bcee81b6509dfff2ae0193bf6e295e0326dfd691d724340e7444b495eafc37f4b53fc2351e9d27fcde51577deedf692b750d48fad9368ff7f38131b684e703d7560fd7f59ff34b5a97fb7ce02eef7d129f0ffcbf906775701f3ad758bd2e46a315a011d5c1df06d1e7083ecb37ea3386ebdefeb8cf98a86750e2f8dc503dfe6cfebc5ad43502d5a1f7e235c22cc7dce074f6ebfaf385f47999e47dc3f85b8956888bbf956865d2330fbaf5c13e5e179ccfd879a6d871cf9cce8f43ecb8674e8f47ec462f76e338c656cd5573499a333c1339fcfd193eb3d46ea5ae4b892107efab4a0163750a186b52c0589b02c6ba14304e4a01e3e414304e4901e3d414306681f17c7eb633e85318ab3e5ce7abd4b506c66e61d2a29cffbf83f9ff522979ed83b119bed3855ab404a3d702bfe7713cfba1dcffeb8518f0ff2e989102c69929609c9502c6a61430ce4e01e39c1430ce4d01e3bc1430ce4f01e38214302e4c01e3a214302e4e01e392143036a780f18214305e9802c68b52c078710a182f4901e352654c8471252f6361ac8c9687e3fffc7b2affe718034f3eea9e53a6df9e94fdffad313f9fb46daccf8dc37b4b78ff4fb8a7f66c3b8e7b47ca7db65da9ff6f9589b1305646aefbd8f1773ca3e1c1df4546fdb68681b1305646aedfbfe06ff446c3d3059a754668c6c058182b23d7bd72e5decb89f7f4774568c6c058182b23de579d204fa85977193c6b40b3ee08cd18180b6365e4ba2f390b3146c3d3039aad89d08c81b1305646a6dfb6859af594c183bf01eb89d08c81b1305646cbb39649b3de3278d68266bd119a4962449ea49f93dd1b118be33783e5b69d1890714a0a18a7a68011ef93e018bf4add27d1cbab4f61acfa709daf52f749606c86dfc7845ae0ef21fe9216eb79794ade2781b137306981bf57f94b5a6c001e8edfcf6421c66878882107ef9b9102c69929609c9502c6a61430ce4e01e39c1430ce4d01e3bc1430ce4f01e38214302e4c01e3a214302e4e01e3921430e27755866bc592df5f364cf0d871df55267aecb8ef25133db6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae792e29761ae6f89571e231224f73723c796c3bc6ea13d0f6be089e0c53db31d626016d2786b4316e4c01e3da1430aa8ec57b10c7c268793633f16c2a836733f06c61e2d95c06cf16e0d99a3c4f98535bcae021861cbc6f6d0a1837a6805175541dadd92dffd436d55110631a745446655446653c1f8c6918c3953115f958182ba3e5d9963c4fa8d9d63278b68166f4be365ec6c258192dcff6e47942cdb695c1b31d34db16a119036361ac8c966747f23ca166dbcbe0d9019a6d8fd08c81b1305646cbb333799e50b31d65f0ec04cd764468c6c058182ba3e5d9953c4fa8d9ce32787681663b233463602c8c95d1f2ec4e9e27d46c57193cbb41b35d119a313016c6ca6879f624cf136ab6bb0c9e3da0d9ee08cd18180b6365b43c7b93e70935db5306cf5ed06c4f84660c8c85b1325a9e7dc9f3849aed2d83671f68b6374233a98c6b53c0b831058ccc3a16c6ca6879f633f1ec2b83673ff05ccac4b3bf0c9e4b81e7b2e479c29cbab40c1e62c8c1fbd6a68071630a185547d55112a3ea58393a2aa3322a63798c7d2960d473ad8c521919be5f95fc0dcda5133c768317bba14262c7fd8666a2c7d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf25c53e907cec42b9cf9839003c1ccfbc616a67de1ef77277ac3f25a89fd5ea0a4fab4b3dad7250e772d0ef0a06fd3210978e4dfb14af5ce6a70960668a5d98668e3105da4f31367a7ad8f85732b53d6eacbf7282c78e1beb277aecb8b17ea2c7d63cd73caf84d89ae79ae795105bf35cf35c4a6c2cd706c3d7edf4fc537b8ca7bb728ddb4756f2539dcb26155f1b02ed431cb1b50fe9674525c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cfe5e539e643d538f0041e4f50826783309eddc2787608e359238c67b1309e4e613c7385f11484f1cc10c6b35518cf14613ccb85f1540be3d9248c272f8c67af309e25c2785608e399278c67a6309ea9c2786a84f16c16c6b35a18cf3e613c7b84f1f40ae3592a8ca74718cf36613c5dc278e60be36917c6334b18cf4a613c59613cadc2786a85f1ec14c6d3228c6799309efdc278d609e359208ca749184fbd309e9c309e3a613ceb85f1ec12c6b35d184fb7309e85c2783a84f1cc16c6b34a18cf34613c0dc278b608e399248c6791309e39c278a60be36914c6335918cf783c6fa81c9e8c009e6c70ee33c9b2f0f703e0abf2de6bc7abb6a6e1bf5fe5fc55f09eab5db93ae2d857818f7e1b7e75c47b51a7aba02d7dae9c7f6a5ba813c6ea837d8a570f1c570be139208c67b2309e46613cd385f1cc11c6b34818cf24613c5b84f13408e399268c6795309ed9c2783a84f12c14c6d32d8c67bb309e5dc278d60be3a913c69313c6532f8ca74918cf02613ceb84f1ec17c6b34c184f8b309e9dc2786a85f1b40ae3c90ae359298c6796309e76613cf385f17409e3d9268ca74718cf52613cbdc278f608e3d9278c67b5309ecdc2786a84f14c15c6335318cf3c613c2b84f12c11c6b357184f5e18cf26613cd5c278960be399228c67ab309e19c2780ac278e60ae3e914c6b35818cf1a613c3b84f1ec16c6b341184f55040fc3ff7f19f2d0fd6b746cda3f202436c37908ffdfcf6b98da74ad3b56ad3b2ef153bc1aa8739dbb30b0f7a3e07b89cbbfdf10ef9dbb1634ba96a92d743e32def9618e5dc0fb2a0360083c7d82081e8efb5199da39220f13fcff67f356abeb3cadfc7397833ad7807ed731e81795db7fee03ee358dcc96873e3b88350bf536086124df95bc3c61bfdd108cdc4af5dbeb8087630c636a67d8bfaef7dab4214277aa83b97a3d433ba3fa0eed5f0fe7216dcc9667932b136b16ea6d12c248be6b7979c2feb52918b995ea5fd7030fc7f8c3d4ceb07fdde0b5695384ee540773f506867646f51ddabf01ce43da982dcf665726d62cd4db2c84917cd7f1f27464a1cdb495ea5f37000fc7f8c3d4ceb07fdde8b5697384ee540773f546867646f51ddabf11ce83322b7314b3e5a1df98106b16ea6d11c248beeb59793af25968336da5c6b11b8187639c67d23d1cc76ef2dab4254277aa83b97a13433ba3fa0eeddf1411bb3948568b9b47a1c5cd113c378fb31614af5ce66b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea6c37d55975569d55e724985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39825e86c79e81931c49a857a5b853092ef065e9ef077415b83915bc6dbef83f2cdc07323833e4ced0cef213fe8b5696b84ee5407fbd741867646f51dda3f08e7e16019cc37a59059751e1bb3e5a167c5126b16ea6d13c248be1b7979c2716c5b30722b358e1d041e8e719ea99de138d6efb5695b84ee5407fb573f433ba3fa0eed533c6556e63866cb43ff870db166a1de76218ce4bb9995a710febe717b30722b358ef503cfc1c4798ae31883eee13876c86bd3f608dda90ee6ea21867646f51dda3f04e7a11ce69b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaa73e5e86c79e8ff0e21d62cd4db2184917c075979dac375871dc1c82de3edf741f910f0f427ce535c7760d03d5c7738ecb5694784ee5407fbd761867646f51dda3f0ce761a233df944266cd8df161d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e6396901b9667a72b136b16eaed14c248be7e5e9ef0b9073b83915ba9fb760e03cf21067d98da19deb773c46bd3ce08dda90ef6af230ced8cea3bb47f04ce83322b7314b3e5d9e5cac49a857abb843092ef102f4f388eed0a466ea5c6b123c0c331ce33b5331cc706bc36ed8ad09dea60ae0e30b433aaefd0fe009c076556e62866cbb3db9589350bf5760b6124df615e9e701cdb1d8cdc4a8d6303c0c331ce33b5331cc78e7a6dda1da13bd5c15c3dcad0cea8be43fb47e13c28b33247315b9e3dae4cac59a8b7470823f98ef0f214b2d066da4a8d63478187639c676a67388edde2b5694f84ee540773f516867646f51ddabf05ce43da982dcf5e5726d62cd4db2b84917c03bc3c61ffda1b8cdc4af5af5b808763fc616a67d8bf8e796dda1ba13bd5c15c3dc6d0cea8be43fbc7e03ca48dd9f2ec736562cd42bd7d4218c977949727ec5ffb82915ba9fe750c7838c61fa67686fdebb8d7a67d11ba531dccd5e30ced8cea3bb47f1cce43da982dcf7e5726d62cd4db2f84917cf879b19f8927e7f1e422b49888b11bbcd80d1512bbd18bdd5821b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d8959a6baa79656a9e398f9a67cea3e619d55ca4e67f4a2e76278e2b5510eb18533b71eb8332cecfd1b64618cf62613c9dc278e60ae32908e399218c678a309ee5c278aa85f1e485f12c11c6b34218cf3c613c3385f14c15c653238c67b5309e5e613c4b85f1f408e3e912c6335f184fbb309e59c278560ae3c90ae36915c6532b8ca74518cf32613ceb84f12c10c6d3248ca75e184f4e18cf01613c75c278d60be3e916c6b350184f87309ed9c2785609e399268ca74118cf24613c8b84f1cc11c6335d184fa3309ec9c278320278b2c1b9bf47c1df1354838feeefdf0fbe67b8f201f05545c4a0e31c071fcd9fd231ec78b3aee95c862a78cfad115ccf888847716e8d78ef78e88eb1fa609fe2d503c7ad4278260be36914c6335d18cf1c613c8b84f14c12c6d3208c679a309e55c278660be3e910c6b350184fb7309ef5c278ea84f11c10c69313c6532f8ca74918cf02613ceb84f12c13c6d3228ca756184fab309eac309e95c2786609e36917c6335f184f97309e1e613c4b85f1f40ae3592d8ca74618cf54613c3385f1cc13c6b34218cf12613c79613cd5c278960be399228c6786309e82309eb9c2783a85f12c16c6b346184f5504cf01269eb8e7291c1010dbeee74117bb65e1efe3f13bc0031e23ed1f0346e4259e3c134fdc3328f20262dbf6d377095a83cbc2dff1775c5c3995f718693f2aa7f0beb4d54c3c71cfed582d20b6d582e62ee91e802cfc1d7fb7c09553ab3d46da8fcaa9465e9ef0ff966809466ea5ee35c23ec7710e99da99c7fe97e03334229f45dde26985cf501d8ffbe4e3c6038aa7ccca1cc76c7968ed8258f1f36c3c7ef7361ac6a8cf57069e707c6c0d466ea5c6c763c0c3f1f9c1d4ce701c3be1b5a9354277aa83b97a82a19d517d87f64f44c46e0e92d5e2e428b43819c173729cb5a078e5321f4821b3049d2dcf2a5726d62cd45b2584917c795e9e707c5c158cdc4a8d8f278187e3f383a99de19870ca6bd3aa08dda90ef6af530ced8cea3bb47f0ace4339cc2752c8ac3a8f8dd9f2d01c32b166a15e410823f98eb1f214f25968336da5c6b153c0c331ce33e91e8e63835e9b0a11ba531dec5f830ced8cea3bb43f08e7419995599995599995599995599995599995599995599995599995599995599965335b1efa6d23b166a15ebb1046f29d64e529ae3bb40723b752eb0e83c0c3b12ec3a47bb8ee70da6b537b84ee540773f534433ba3fa0eed9f86f3a0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2992d0f3d739b58b350af430823f94ef1f284bfdbea08466ea5d61d4e030fc7ba0c533bc37587dbbc367544e84e7530576f63686754dfa1fddbe03c28b33247315b1e7ab615b166a15ea71046f20db2f214d74f3b83915ba971ec36e0e118e799740fc7b1335e9b3a2374a73a98ab6718da19d57768ff0c9c8772984fa4905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7cad1d9f2d0ffb946ac59a8d72584917ca75979dac37587ae60e4566adde10cf070accb30e91eae3b9cf5dad415a13bd5c1fe7596a19d517d87f6cfc27998e8cc2752c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f274bb32b166a15eb71046f2ddc6cb133ef7a03b18b995ba6fe72cf09c61d087a99de17d3b435e9bba2374a73ad8bf8618da19d577687f08ce83322b7314b3e559e3cac49a857a6b843092ef0c2f4f210b6da6add43836043c1ce33c533bc371ec76af4d6b2274a73a98abb733b433aaefd0feed701ed2c66c797a5c9958b350af470823f9f073b9878927e7f1e422b4385fb1ed7eaf2bd7bbd72cfcbd1718b9c6c31e8f91f631c79197787a99781a3c9e86082dce576cdbfe75ae3ccdbd66e1efeb80912ba77a3d46da8fcaa906e059c7c4d3e8f134466871be625b2dd6bbf274f79a85bfaf0746ae9c5ae731d27e544e3502cf7a269eb83169fd38c48eeb5fe3113b2e57c623b66aae9aabe6aa39a7e699f3a879e63c6a9e51cd4569ce701d15cef7528c001870eb83327e57e0b8f6646a673eeafbd87aaf4df87d0ce71cced7f70d6556e63866a6798b8eac179bf4093c1eda8698b518cf79d35eaf4d6998372dc57c2285ccaaf3d8986dec3b928fdd91f562933e81c743db1dcc5a30b5331c0fee0ca235a67839a883797a27433b3310978e4dfb77c2792887f9440a9955e7b131dbd877251ebbf83c798c4dfa041e0f6d77316bc1d3cee278707710ad31c5cb411dccd3bb19da9981b8746cdabf1bce83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b6b19f9978ece2fc3dc6267d028f87b667326bc1d3cee2fcfd3d41b4c6142f0775f09cdfc3d0ce0cc4a563d3fe3d701e945999955999955999955999955999955999955999955999955999955999955936b38dfdace46387bfc7c1d8a44fe0f1d0f62c662d98da19cedfdf1b446b4cf1725007cff9bd0cedcc405c3a36eddf0be7419995398ad9c67e76e2b18beb79189bf4093c1eda9ecdac054f3b8be3c17d41b4c6142f0775f09cdfc7d0ce0cc4a563d3fe7d701eca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d2b47671bfbfec463b787f3f7189bf4093c1edaee67d682a79dc5f9fb0782688d295e0eea609e3ec0d0ce0cc4a563d33ec5ab04e6132964d6dc181f66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b961633f27f9d8e1efd93136e913783cb43d87590ba67686f7bf3c18446b4cf1725007f3f441867666202e1d9bf61f84f3a0ccca1cc56c633f947cec42d68b4dfa041e0f6d0f316bc1d4ce703c783888d698e2e5a00e9ef38719da9981b8746cda7f18ce43da98f1fc65928b1ddeb74931aadcabf53dd795abc1f73c57ae01dff35db9167c2f70e53af0bdd0952781ef45d036f2bdd8955782ef25aebc1e7c2f75e575e07b992bf782efe5aedc03be57b8f210f85ee9cab783ef55ae7c07f85eedca7782ef35ae7c17f85eebca7783ef75aefc4cf0bdde95ef01df1b5cf959e07ba32bdf0bbe37b9f2b3c1f76657be0f7c6f71e5fbc1f756577e007c6f73e5a5e07b24c2f776577e0ef8dee1ca0f82ef9dae7c007cef72e529e07bb72b4f05df5f41995edfe3caf5e07bd49573e07baf2b4f03dffb5cb9017cef77e5e9e0fb802b3782ef83ae3c037c1f72e599e0fbb02bcf02df475cb9097c1f75e5d9e0fb982bcf01dfc75d792ef83ee1caf3c0f749579e0fbe4fb9f202f07dda951782ef33aebc087c9f75e5c5e0fb9c2b2f01dfe75d19cfef5fbbf243e0a371e561f0d1b8f25cf0d1b8f23cf0d1b8f27cf0d1b8f202f0d1b8f242f0d1b8f222f051debd187c94772f011fe5dd4bc14779f732f051debd1c7c9477af001fe5dd2bc14779f72af051debd1a7c9477af011fe5dd6bc14779f73af051debd1e7c94776f001fe5dd1bc14779f726f051debd197c94776f011fe5dd5bc14779f736f051de3d023ecabbb7838ff2ee1de06b76e57782ef02577e17f82e74e57783ef2257c671e662577e0ff82e71e547c14763e17bc1f734577e1ff896b9f2fbc1b7dc953f00be15aefc41f0ad74e50f816f952b7f187c2daefc11f0b5baf247c1b7da953f06bebc2b7f1c7c6daefc09f0155cf993e06b77e54f81afc3953f0dbe4e57fe0cf8ba5cf9b3e0eb76e5cf816f8d2b7f1e7cf4394ee38cedcfb65f920ea491f5519b5b23da42bec9d096be20d96b3a8a45c7a6fd7660a47350187fc6c26819db3c46cbd3c9a019e6156da5be3375024f07030f533bc3ef4c5d5e9bdabd36e5a0ced3a09d5d0cedcc405c3a36ed77416c8e738e5ad4bae32ef3b4a8c13aee03cd7e9e96d2918e61f3b710d1961ee6b6d0b1695cea1987d8dd5eecbc171bc763da4af5af6e605ec3c06c8fdb9bfc71c3feb5d61d8b728ae2e4a14deb4083a4da84b133ce280ef96ba03cbf69b82ed5233de8f38bd86d2ed3b94476ff7d9ddefb7250a727a2fd7d41b2edeff5787a3d667b4e1a9a863918fa4398033d1e07ede741bbde18ed7a403baa839f7f2d4cdaadf17868bf0578e81aa70b7c74ad40fc789dd53a0edcfeb8d715c14dbe6e606c89602c24cf185eebb4788cb45f0046f2ad019e6e26cdfc73bdccd3073f97ebbc3af4de1aa8b31a3e1bb311756dbf5b9a196e177d07ff5390ec985ec7a017ce0f04a04fe06918805ed4ce5a069ea9c1f01cc1d9a1c133fdb70c5c3ed07f240368351e26be66229a51053e2c5747f88260e454084ec9d254084ec95679b2e0140cd5b75fa56cb368ba61e0e4f1a1a79f1a3875f8ccdda787068eec1dbc05a96b3d7a248d6b0192a28fb6c9c1f0a44d5f90ec624c9d17ab54f24c86d749c9f3b431b533fcd09be2b5a9ce6b530eead4c2dfa630b4330371e9d8b43f252276820351a8c5d4516831358267ea386b8113dfe4c39e4a7fc7c5932aaf2dd8a3b14d7e9e27da200ab8148e9f7170f66fb6b3d7bac64c0a864f368d9ef68ad69e043b636a3fb5ec8ca89d01b543909de1b4339af643cdce58da194a3b23696720ed8ca39d61b4338a7606d1ce18da19c2e6a038036867fcec0c9f9dd1bb04d8be0cbcf65bb5fd84b433727606ceceb8d92b2b7b0560af46ecd5b7bd52b4b31ff60ac17eb3b4b30cf6d3d65ec9d84f69fbc96aaf14ed15a2bda2b757b876956a83b18d4eeb4dc6361bdb626cabb16dc6b61bdb616ca7b15dc6761bdb636cafb17dc6f61bbbd4d865417176fd72635718bbd2d8d38d5d65ec6a63d718bbd6d875c6ae377683b11b8ddd64ec6663078df51b3b64ecb0b123c6068c1d35768bb163c68e1b7b86b15b83e21d3a278d9d323668ecb4b1db8c9d31763628ae98d91532bb226657c0ec8a975de1b22b5a7605cbae58d9152abb226557a0ee0f8a2b4c76a5c8ae0cd95501bb0a6067fded2cfff383e22cbe9db57f51509c95b7b3f076d6ddceb2db59753b8b6e67cded2cb99d15b7b3e076d6dbce72db596d3b8b6d67aded2cb59d95b6b3d076d6d9ce323f12146791edacb19d25b6b3c27616d8cefada59de4783e22cae9db5b5b3b47656d6cec2da59573bcb6a6755ed2caa9d35b5b3a47656d4ce82da594f3bcb696735ed2ca69db5b4b3947656f20bc61e33f637c6fed6d8df19fb7b63ff60ec1f8d7dd1d8978cfd93b17f36f62f41312fffd5d8bf19fb8ab17f37f61fc6be6aec3f8d7dcdd8d78d7dc3d8378d3d6eec5bc6be6dec3bc6be6bec7bc6be6fec07c67e68ec47c67e6cec27c67e6aec67c67e6eec17c67e69ec57c67e6dec09634f1afb8db1df1afb9db1df1bfb4330bcba8183c81fdd0ecdb4f70f0d0d9c3c3dd43c34d87cf2f61343c74f9fb8bbf9cee343c79a07ef183873f4c4e09df8e6f7b8618b9611369d39d37f77f3f1534706ee6a1ebc7da879f068f3a1c1db4f1d398b6ffaa27bd3c27323f61f39121fec9b554f81f43b630cfa4bf73e5aa0d955ba6d4f8c45903f8ce54d33abc7d6a04bdda70e7d7bbfa278b5db7cf6c4e05073bef994f9b7ff8479cfc091d666fcdb5923f2d9a1e6b343fd67869a8f9e193cd9dcd68ac7bd76ca181a51d3348637b5368dbee5c1ff03d8e2fb122d0a0400", + "packedBytecode": "0x000000028df71de500000047ce1f8b08000000000000ffed9d779815c5b6f67b6040643b0398b3830915c56118e20cb03127cc2822220cc3080a0c51cc98250773468292b380802020869373f2243d1e4fbaf79e739efbc7fdeefd82dfeddabbd69d778aea61f6d8b579f7eceae7a9d9d56baa7bfdeaedd5d5a9baab20484fff0c5381ceb70cd399c18193fc3fa97f4bbfd9d435c67595bae42cc811ce1639c2d93247380b7384b3558e70b6ce11cec37284b34d8e701e1e23a7626b11d49fe2e66deb40d7b8191339a6e91139a069518e695a9c039ab60b72a38d6a9f239c1d7284f3c81ce13c2a47388fce11ce637284f3d81ce13c2e47388fcf11ce137284f3c41ce13c2947384fce11ce537284f3d41ce13c2d47384b7284b3638e709e9e239c67e408e79939c279568e709e1d236767e0eca47fcfd1bfe7eadff3f4af943d5fff5ea07fbbe83a16eaf90b155798d4439a32e37fddc2541ea6ee61ea61fcaf67987a85a97798fae8ff95e8ff5584a9324c7dc3d42f4cfdb50603c27451982e0ed32561ba344c9785e9f2305d11a62bc3745598ae0ed335611a18a66bc3745d98ae0fd30d61ba314c3785e9e6300d0ad32d61ba354c83c3745b9886182cb787696898ee08d3b030dd19a6e1611a11a6aa308d0c5375984685a9264c7785697498c684e9ee30dd13a6b1611a17a6f161aa0dd384304d0cd3a4304d0ed394304d0dd3bd619a16a6fbc2747f981e30347b304c0f85e9e1303d62704e0fd3a3617a2c4c8f87e989303d19a6a7c2f474989e09d38c30cd0cd3ac30cd0ed39c30cd0dd3bc30cd0fd382302d0cd3b3617a2e4ccf87e98530bd18a697c2f472985e09d3ab617a2d4caf87e98d30bda95964475814a6b7c2b4384c4bc2b4344ccbc2f47698de09d3f230ad08d3ca30ad0ad3ea30ad09d3da30ad0bd3fa306d08d3c6306d0ad3e630bd1ba62d61da1aa66d617a2f4cdbc3b4234c3bc3f47e9876856977983e08d39e30ed0dd3be307d18a6fd61fa284c1f87e993307d1aa66f85e9db61fa4e98be1ba6ef85e9fb86e63f08d30fc3f4a330fd58db7ea27f7faacbcafdbb9f85e9e73aff0bfdfb4bfdfb2bfdfb99b1ccafc3f41bc3f6db30fdceb0fd3e4c9febfc17faf70ffaf74bfdfb47fdfb95fefd93fefdb3fefd8bfefdabfefd9bfefd17fdfbaffaf7dff4efdff5ef3ff4ef3fc3b4b9633adf26a89b92414c6d54794dead98f88df29a83f292d5aeaffc96f89b617ea79f915ed5ae9f95686bdb59e6f6daca78d9e6f63d83be8f90e86fd283d7f94613f46cf1f63d88fd3f3c719f633f5fc99604f04706f58db95ada53615804de2b505d85a695b4bb0b596d581ed306d6b0536d9beadc176b8b61d06b6b6dad6066c096d3b5cb40cd311da960ce28a95d2116abd4571af573f2f2b8e9f77a45a6f3b47bcede3e71da5d6dbc101af8a8f23f5bada43dc1ca56d1dc076b4b61d09b663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ed346d3b056c25da762ad874931b9c06b6d3b5ad046c67685b47b09da96da783ed2c6d3b036c676bdb996093f6f72cb0c9f9e2d9daa6da8ec30b60196d97762bb58cb4d9603b57da6bb09d276d35d83a4b3b0db6f3c1b7d82e80b6466c5db44dda2df5bf3e3a9f0ce2da4fca6ad47a2be25e6fb866b5debef1af37f5ccb15f50a77512fc548056fd753ec67e4d5dd177814ee247ec8590bf0aca4a39d1438e3dc2ae8e05953adfbf81e5fa18cb1543994a4bfd9341bcf5ef6bf0f435985b41de4dcc76ebe663b6d153c6313b18ca9ab127e741cd31660702878398ede963b6d153c6315b0365cdd89373e1e618b3b703878398ad7213b365a53e66d3f7cd82c01e7b723dd41c63760c70c41fb3dd7dcc367eca38661f87b266ecc93571738cd969c0117fccf6acf2e7068d9e328ed90550d68c3db93fd31c63f629e07010b335be9d6df49471ccbe0965cdd8937b85cd31669f038ef863b6b7a398ede66336483f030d027becc97debe618b38b8123fe981de9efcf367eca386677405933f6e4194a738cd9f53aaf9e33fc443f6738196c3fd5b6538037fed8aeeeee28b6cb7c6ca7fb8604813d46e5795e738ced0f745ec5f12fa03f82d87ea96d1dc1f62b6d3b1d6c9f69db19502f07fb4095df071a3d65bc0ffc06ca9ab12ccf969be33ef023e07010b3d53e661b3d651cb37f83b266ec493f87e618b3bf070e07315be363b6d153c631fb9f50d68cbd7374be39c6acf43555e70b5fe8f385f3c0f6076deb0cb62fb5ed7cb0fd51db2e00db57dad6056c7fd2b60bc1f6676d2b05db5fb4ad2bd8feaa6d6560fb9bb67503dbbf685b39d8fe55dbba83eddfb4ad07d8feae6d3dc1f60f6deb05b67f6a5b6f6d53fdf4a4ef959cb7b601fe6410efb6957e97b26e99ef9a05dfed0cdfedb2e8bb83e1bb83c5779903df09f0215381319f847c995b9ed262e0415fe5f1fbeaa6eade2d687cddcb81a7bb83ba27c0476378ba034f8ff87952fd7f7bc6bfded436ee66689a005fdda05ebd1cd4ab007cc9ba655efc15830ddbd65e16c6def1339615802f59b7ccf70646b1615b2fef5cc9fea38e879d0aea781dec4ba97322f127df2d138e72b04b992b3bd6b175d66c45f07f3ceef5306c8ee2321517e24bd62df3e2af08ead323fb8c658d65ec6e30ba6a230ac097acdbfbaedb0e92c7e3b8836b1d6b9b26be2bb2e0bbb7e1bbdcf08d6da74c0d1ddb7a0373ecd79cfad85619ff7a4bf1fa44ae0dc50f9e3fe0355c5c7542df726d287ec45e08f96b0beaca4a39d143da616157b12cdb12d9cde57a19cb1543990a4bfd9341bcf5af34782a0d66b54d2e8663a183fd211503150687cc9783769511da55807652e61cd0ce557bd6c7e091f91ec023ed584fe071754d14c5938debb183f9c67358bc7e96ffe37980abedd5d5609479dbf6ea0d8cb6731507d7330d9eab740746b1f5019e6e8e348bdaaedd487c3b8895547b243ee4dc5cf6df1e609732bdf50b75aaadbc1bda4a173182f1285363af79e3df4e65a96bf0ee19f0e0b673705dd5d5513c96e2fd9baf837863cd6c97ba1b5a45dde371d596773378645efc7966cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367e667c6e749d86f4bcaf5206134fbbfb9bacf9ffafea15e97ac5f3dd7f93f4efb83959562ff18e907719e51e7422853d4a2aeecff87fe60e6732aec23d9c3ad76a96d89fd3193302ffeb0af156e4b86fe4e25b1f92e1be9ea799bea63adbea369f6fdec61d1d445ff67d4b4c0d014fbe39f6ff0a838ad6c59c7e6e2d95fa6cf22512bc9c7f96caf38b0c77afcdba5acde33eb1641fdf6038f33aefaef485b2dcfcb2b0cdf8550e6a41675db46fa56c918c3dd8ce5b0df8fac5b96390fec95c6badbeb6585a395b1fe9eb0ac943915dad4bd2dea3473d0569665da771d9f9bc77f1c4e3fc7ef96014f57e071d1ce383adf28c57d20eee7f866ff34db798c94c1be7d0efa5536d8df49fc7966cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367e667563ce6b3567cbfb69c84314b7d1f52cf33e45b65b2fed4f7825bd4f975fd1c4e9e397536ea8cef8efeb3455dd9cd3a5f141cd8df216a5bbafa3e45d4b6147ff8ed197c16e4e2b96e01f892759759b4907c496cbed3cff15d8c0d21cff1bb19ba965b3475b5bfe23356d414f7d7ee060f3e1b8dfab64f996173d977282a2ec41fee4b6560933cbe1fed623be3b1c4ecd723fef0f9f577b4b6ed0357dbbeacd465bb81df4d490607c6377e4fe587d0f6fd58e7b10f07f61df9c2f27f991a7a4e2dfaa93a3bf8be666901ac4bb6afeddb9e03803526df5d715d053a0d30342884fce72deaca4a39292b5a0bbbda47e41b30c86e2ed7dd58ae18caf4b3d43f19c45b7ff35babfd0d66b54d7e0671f6051cff5db549fd22343a0f3492328ebfd968ed5f69f62bc476b4b5514696c56fd1fd15daa8a8fea3b66380ebe398acdb761c338f0b8de9e799effdb4fe0bda8bb8fb69fd17c410f6d30a8cf57786f50b57eb20fad82265fe9fb17ef39c5c96c17e60ffb39fc0f75cca743e9373f243757d653b27c7e5a2eaae98f13b68c9189931269005cf13a44c5badb56cb3ca08eede96658b229615adcc6f85150507eae7e63b6be97dbebf5117896bfc06b994390aeae2e6bc257d0ee8ea9b7249a893ca9759ea2a658e877ded449d4fc076c2fdf65ccbff656ae81c10c770bf28fe3aa7b6efc5c099043fe8fb12608dc97757f42de780e247ec85903fa7655d5929277a88d6c2aef611398f427673b90a63b9622833c052ff64106ffd2f32782e3298d5363905e2ec5ce887eeaaad1e10a15167d048cae03d45db77406df73a5cbdbf11752e85ef2f99e757789c7473de643f8f35efabd9ce113a1bfc788ed013dad984a5ac79bf508e9771f61bc677257a825f7c57c2d5b79bfb806e4998c7f38243e9dbc5776c95bfa83113fa64c177d49809d9f0ddc1f0dd218bbebde65e7326cd1d8c41907aff0cbf59aaa686ce4b715c0259ae0530ba18cb2111d4fff6f8c118717c0759ae2530ba383e64faedf39ec028cb1502a38b774b71fc8dc630e23786f1382f8c0ebe15dbb5a9df8ac57b7aad8191e99d4d7c36751830ba382f6eeabb7a783edf067e5d8d4bd42d03c6326094e50e074617f7c6f15aa6318c785d24cbb5054617cfb0321ddf09bf3d8ff7965d3236746c77dc17a52cd37b2f956e791a3cd740df0ec6354c6981f7190fa6455fb73c0d9efba06f07f7fd525ae0388307d3029f0dba18f73011d47f0e77301e7c7e29cb1d098c49478cfd33604c02e3ffdc2b06c6018e189319300e0046b11f0d8c0eeebfa6180764c088f72965b96380f162478c1765c0783130ca72c702a38b7ba909f0db18c64b8051963b0e182f75c47849068c9702a32c773c305ee688f1d20c182f034659ee0460bcdc11e36519305e0e8cb2dc89c0788523c6cb3360bc021865b99380f14a478c5764c0782530ca722703e3558e18afcc80f12a6094e54e01c6ab1d315e9501e3d5c028cb9d0a8cd73862bc3a03c66b8051963b0d18073a62bc2603c681c028cb9500e3b58e180766c0782d30ca721d81f13a478cd766c0781d30ca72a703e3f58e18afcb80f17a6094e5ce00c61b1c315e9f01e30dc028cb9d098c373a62bc2103c61b8151963b0b186f72c47863068c3701a32c773630deec88f1a60c186f06c69b2c8c831c31de9c01e3206094e5ce07c65be2674c5d4b0fca80f116e0b9357e9e9466b764c073ab5b9ed477f56eb1f8ba2d7e5fa96d3138687cdd6f039e21f1f3a4b6c56d19f00843312c879add1e3f634ab3211930de0e3c43e3e74969767b063c4341b3db2d9add113f634ab3a11930de013cc3e2e749697647063cc340b33b2c9add193f634ab3611930de093cc3e3e749697667063cc3833acdeeb46836227ec69466c333601c013c55f1f3a4341b91014f156836c2a2d9c8f819539a5565c0381278aae3e749693632039e6ad06ca445b351f133a634abce807114f0d4c4cf93d26c54063c35a0d9288b6677c5cf98d2ac2603c6bb806774fc3c29cdeeca80673468769745b331f133a6341b9d01e318e0b93b7e9e94666332e0b91b341b63d1ec1e478c7767c0788f8527eeef64df6df135ce51ddc7068dafbb3014c372d84f62bc23c67119308e0746590efb49d43a621c9f01632d30ca7209c78c0df593a805df13e2f79d6a976a83c6eb33c12d4f83fd24d0f744475a4c081aafc544b73c0df69340df931c69313168bc16938067b2032d12e0a3313cc2500ccb613f89298e182767c03805186539ec2731d511e3940c18a702a32c87fd24ee75c4383503c67b815196c37e12d31c31de9b01e3346094e5b09fc47d8e18a765c0781f30ca72d84fe27e478cf765c0783f30ca72d84fe201478cf767c0f80030ca72d84fe241478c0f64c0f82030ca72d84fe221478c0f66c0f81030ca72d84fe261478c0f65c0f83030ca72d84fe211478c0f67c0f80830ca72d84f62ba23c64732609c0e8cb21cf69378d411e3f40c181f0546590efb493ce688f1d10c181f034659ee1ec78c0d5dbf3cd6cc7d475dab3477df51d725cdddb78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9c33f97edc81ef04f890a9c0984f425e188a61b97b3c63b366449e92f8784ab1eee8eb0982ba3f61e129705477f4f52441dd8521d7181fcf01c67b7280d1eb98ee83d81446c5f394239e2733e0790a789e76c4f354063c4f03cf33f1f3a462eae90c7884a11896bb2707181fcf0146afa3d79189d1eb983f3a7a46cfe8193de3a160cc8536dc33e6443c96359551f1cc889f27a5d93319f0cc00cd64b95bdd3296359551f1cc8c9f27a5d98c0c78668266332c9a39602c6b2aa3e299153f4f4ab39919f0cc02cd665a3473c058d65446c5333b7e9e9466b332e0990d9acdb268e680b1aca98c8a674efc3c29cd6667c03307349b6dd1cc016359531915cfdcf879529acdc980672e6836c7a29903c6b2a6322a9e79f1f3a4349b9b01cf3cd06cae4533078c654d65543cf3e3e74969362f039ef9a0d93c8b660e18cb9acaa87816c4cf93d26c7e063c0b40b3f916cd5819efc901c6c77380d1b18e654d65543c0b1df12cc8806721f03ceb886761063ccf02cf73f1f3a462ead90c7884a11896bb2707181fcf0146afa3d79189d1eb983f3a7a46cfe81933637c220718fdb6f68cac8c0eaeaf1a7c87e6d966ee3bea1d9ae6ee3bea1d9ae6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997c3f1fbfefb24cbf31f33cf0b8f8e68da37a96aaf5bea0d7f5758cfa29ad5e34b47ad6d0aa18cabc00fabde840bf02f02beb9679f197297327026647becb54fb7238d45f7c3c6ee8a1fcbfe4a8ee516dfd4bcddc77545bdfdc7d47b5f5cdddb78f731fe7f9e0dbc7b98ff37cf0ede3dcc7398b6fccb70aeacedbe5fba76a1d2feb7ca19e97f24f805dca4c3e2cfddb3ef0fb900bdf7e1ff2c78a7cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f73be382f86ff5766812730788206781690f14c25e3994dc6339a8c672819cf75643c1793f13c44c6534ec633818c672419cf2d643c5791f15c48c6d38f8c671a194f6f329e39643c7793f13c4dc6338c8ce706329e4bc9781e21e32923e39944c6338a8ce736329e6bc87892643cf793f1f424e339978c671c19cf5c329e73c8788693f13c43c67313194f31194f3b329ecbc9789e24e3b9808ca7828ce751329ef9643c53c878ee22e3b99d8ca7948ce75a329e2e643c1791f13c48c6d39d8c671e194f2d19cf0c329e2a329e41643ce791f15c49c6d3928ca72f19cf42329e7bc978fa90f18c21e3e94cc6730719cff5643c9790f13c4cc6d38d8c672219cf4c329e6a329ec1643c5793f1f427e3b98f8ca71719cf58329e4e643c7792f1dc48c6938def9966c27304194f1119cf65643c8f91f14c27e3e94ac633998c6716194f0d19cf10329e81643c03c8781e20e3e941c6339e8c670419cfcd643c4f91f1b427e3e940c67305194f01014f2238700c9304fcff79b0b53096559f7d9dd3b1eeffaf687b0b58e6559d6f6959f72b60936fc9be6a5916757a05ea92d4f9d26f36a574425f4998177f45c0f12a09cf15643c1dc878da93f13c45c6733319cf08329ef1643c3dc8781e20e31940c633908c6708194f0d19cf2c329ec9643c5dc978a693f13c46c67319194f1119cf11643ccf93f1dc48c67327194f27329eb1643cbdc878ee23e3e94fc6733519cf60329e6a329e99643c13c978ba91f13c4cc6730919cff5643c7790f17426e31943c6d3878ce75e329e85643c7dc9785a92f15c49c6731e19cf20329e2a329e19643cb5643cf3c878ba93f13c48c67311194f17329e6bc9784ac9786e27e3b98b8c670a19cf7c329e47c9782ac8782e20e379928ce772329e76643cc5643c3791f13c43c6339c8ce71c329eb9643ce3c878ce25e3e949c6733f194f928ce71a329edbc8784691f14c22e32923e379848ce752329e1bc8788691f13c4dc6733719cf1c329ede643cd3c878fa91f15c48c6731519cf2d643c23c9782690f19493f13c44c6733119cf75643c43c9784693f1cc26e3994ac6b3808ca7d2c2f3bc231e79df5dd62df3cf93f876b01d4ad57a5f7354a7d7f5ba5ae9f50abff82b8432d3dba67fd5fbe1b8ac7099df27c077735e078d5e775417d91e05c6f641df2f3bf22def68c9ba65fee566eebb9de1bb5d9ef8ee60f8ee9027be7d9cfb38cf07df3ece7d9ce7836f1fe73ece997c3bb83628c3efa4c95460cc27218fd70b2ebe2fe7a89ef5ae13bf8e513fa5d51b8656e6b5553194790df47bc3817eb66b4f99177f9932772260c6b82809e28d8b37e3af53996ab70e075ddf34f4c57a2d72a469d431645133f71d750c69eebea38e21cdddb78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993efb7743ec6ebc652f4a19e2fcaf5c05be07789ce17c4e857ad6bb15e57a15eb7702c01bb94f9dff05cd3eff37e9f8fcbb73fb6f938cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0cd1ce7665efa8b9f036caefaf347c56236de253894bea362b1b9fb8e8ac5e6eedbc7b98f7326df4b1df84e800f991aeae3b71478163be07154cfd4b38d65469d9e37ea540c65f018bfcc413d0bc0afac5be697018f4c95c0e3220e1ab3cd91670119cf54329ed9643ca3c9788692f15c47c6733119cf43643ce5643c13c8784692f1dc42c6731519cf85643cfdc878a691f1f426e39943c6733719cfd3643cc3c8786e20e3b9948ce711329e32329e49643ca3c8786e23e3b9868c2749c6733f194f4f329e73c978c691f1cc25e3194ec6f30c19cf4d643cc5643cedc8782e27e379928ce702329e0a329e47c978e693f14c21e3b98b8ce776329e52329e45643cd792f17421e3b9888ce741329eee643cf3c8786ac9786690f15491f10c22e3398f8ce74a329e96643c7dc9781692f1dc4bc6d3878c670c194f67329e3bc878ae27e3b9848ce761329e6e643c13c9786692f15493f10c26e379838ce76a329efe643cf791f1f422e3194bc6d3898ce74e329e1bc9788e20e32922e3b98c8ce731329ee9643c5dc9782693f1cc22e3a921e31942c633908c670019cf03643c3dc878c693f18c20e3b9998ce729329ef6643c1dc878ae20e32920e0490407befb9f80ffbf01367947fd79b0bdadf38bc1d6c2e2a3a5ce2f035ba1cecb3a0e0bd34b1d0f5c37eae4eabd7cf4958479f157041c6f93f05c41c6d3818ca73d19cf53643c3793f18c20e3194fc6d3838ce701329e01643c03c9788690f1d490f1cc22e3994cc6d3958c673a19cf63643c9791f11491f11c41c6732319cf9d643c9dc878c692f1f422e3b98f8ca73f19cfd5643c6f90f10c26e3a926e39949c633918ca71b19cfc3643c9790f15c4fc67307194f67329e31643c7dc878ee25e35948c6d3978ca72519cf95643ce791f10c22e3a922e39941c6534bc6338f8ca73b19cf83643c1791f17421e3b9968c6711194f2919cfed643c7791f14c21e3994fc6f328194f0519cf05643c4f92f15c4ec6d38e8ca7988ce726329e67c8788693f1cc25e31947c6732e194f4f329efbc97892643cd790f1dc46c6338a8c6712194f1919cf23643c9792f1dc40c6338c8ce769329ebbc978e690f1f426e39946c6d38f8ce742329eabc8786e21e31949c633818ca79c8ce721329e8bc978ae23e3194ac6339a8c673619cf54329e05643c95d9e12953efb64b5feb00b8704a427e19f02c72a08fa37a96e2770dbe8e71bd4aab770cadde30b42a86324b41bf771ce857007e65dd322ffe729159f13ca6f3b6ef403c46c228b6456e7952fbed6341fda9a1fdf61de071d1ae39aa676aff5a6ed4e9318bee52066375b9837adaf61d995f0edb21d79815cf933a2fac0928f72409a3d896b9e549ed5f4f06f5a786f6afe5c0e3a2fd7154cfd4feb5c2a8d39316dda50cc6ea0a07f5b4ed3b32bf02b643ae312b9ea7745e581350ee291246b1bde396a73c017596a9a1fd6b05f0b8687f1cd533b57fad34eaf49445772983b1bad2413d6dfb8eccaf84ede0993db38d59f1c8b31d614d40b9a74918c5b6dc294f796902ea2c5343edd84ae071d1ce3bd23dd58ead32eaf4b445772983b1baca413d6dfb8eccafb2f82e09e2d5627523b4586de1599d652dc45fa6cc4b7390d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7594d5e67afb3d7d9eb1c07b3d7d9eb1cc5ec75f63a473133e8ac78e4db95c29a8072cf90308a6d855b9ed47b41cf04f5a702633e09f9d5c0b3d2813e8eea99ea43bec6a8d33316dda50cee5f6b1cd4d3b6efc8fc1ad80e9930afca4166af73d39815cf0c9d17d604949b41c228b6956e7952edd88ca0fed4503bb606785cb4f38eea996ac7d61a759a61d15dcae0feb5d6413d6dfb8eccaf85ede0993db38d59f1ccd479614d40b999248c625bed94a72cf57ee3cca0fed4503bb616785cb4f38e744fb563eb8c3acdb4e82e653056d739a8a76ddf91f975b01d32615e9583cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7397f74563cb3745e5813506e1609a3d8d638e5e9967aee302ba83f35f4dc611df0b8782ee348f7d47387f5469d6659749732b87fad77504fdbbe23f3eb613b3477e65539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8a67b6ce0b6b02cacd266114db5ab73ca9ef1ecc0eea4f0df5db590f3ceb1ce8e3a89ea97e3b1b8c3acdb6e82e6570ffdae0a09eb67d47e637c076f0cc9ed9c6ac78e6e8bcb026a0dc1c1246b1ad73cb936ac7e604f5a786dab10dc0e3a29d7754cf543bb6d1a8d31c8bee52066375a3837adaf61d99df08dbc1337b661bb3e299abf3c29a8072734918c5b6de2d4faa1d9b1bd49f1a6ac736028f8b76de513d53edd826a34e732dba4b198cd54d0eea69db77647e136c07cfec996dcc8a679ece0b6b02cacd236114db06b73c6509a8b34c0db5639b80c7453befa89ea9766cb351a77916dda50cc6ea6607f5b4ed3b32bf19b643ae312b9ef93a2fac0928379f84516c1bddf2a4f6aff941fda9a1fd6b33f0b8687f1cd533b57fbd6bd469be45772983b1faae837adaf61d997f17b643ae312b9e053a2fac0928b78084516c9bdcf2a4f6af0541fda9a1fdeb5de071d1fe38aa676affda62d4698145772983b1bac5413d6dfb8ecc6f81ed906bcc8a67a1ce0b6b02ca2d2461141b1e2f163ae22932788a2c5a1c2adf4a8b0a9d3f42ff26e0ff15c0e8aa3d5c6830ca3cc6b8d88ab2a0593b83a79da1d9a1f4adb4a884bc9a707b550223c3f66a9705cd3a183c1d0ccd0ea56fa5455f9d6faf7f717bf5054686edd501781cb4cfe50983474d0d9d6f6c71ac8fa37aa6ce37b60676ddf1382465f0d8bdd5413d6de71232bf15b68367f6cc3666c53348e7853501e50691308a0daf53b6c5cf539e3078d4d4503bb6cdb13e8eea996ac7de0becba6f03dda50cc6ea7b0eea59007e65dd32ff1e6c874c9857e520b3d7b969cc8a67b0ce0b6b02ca0d266114db56e0d91e3f4f79c2e0515343edd876c7fa38aa67aa1ddb11d875df0eba4b19dcbf7638a86701f89575cbfc0ed80e9930afca4166af73d39815cf109d17d604941b42c228b6f7806767ec3ce9f18090474d0db5633b1debe3a69ee976ecfdc0aefb4ed05dcae0fef5be837a16805f59b7ccbf0fdbc1337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d3337b3e219aaf3c29a8072434918c5b6037876c5ce937eee803c6a6ae8b9c32ec7fab8a967fab9c3eec0aefb2ed05dca60acee7650cf02f02beb96f9ddb01d3cb367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed93373332b9e613a2fac0928378c84516cef03cf07f1f394270c1e3535f4dce103c7fa38aa67eab9c39ec0aefb07a0bb94c158dde3a09e05e057d62df37b603becf1cc9ed9c2ac7886ebbcb026a0dc701246b1ed069ebdb1f3a49f9f228f9a1a6ac7f63ad6c74d3dd3edd8bec0aefb5ed05dca60acee7350cf02f02beb96f97db01d32615e9583cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7397f74563c553a2fac09285745c228b63dc0f361ec3cdd4a13068f9a0a8cf924e43f74ac8f9b7aa69f3bec0fecba7f08ba4b19dcbff63ba86701f89575cbfc7ed80ecd9d79550e32fbd8c80eb38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c333473133c486e2a9d679614d40b96a1246b1ed039e8fe2e7294f183c6a2a30e69390ffc8b13e8eea99eab7f37160d7fd23d05dcae0fef5b1837a16805f59b7cc7f0cdbc1337b661bb3e2a9d179614d40b91a1246b1ed079e4fe2e7294b183c6a6aa81dfbc4b13e8eea996ac73e0decba7f02ba4b198cd54f1dd4b300fccaba65fe53d80eb9c6ac7846ebbcb026a0dc681246b17d0c3c0ee22ec55364f0c8fc2704be9516b53a7f84fec5ed550b8c0cdbab280b9ab53378da199a1d4adf4a8b099057136eaf09c0c8b0bdda6541b30e064f0743b343e95b693151e7dbeb5fdc5e138191617b75c8826687b23d3c94fbf6a18c53aff9a1d3bce0106a5e7008352ff09a5369eee0f85286c7b20018704a42fe53e0f976fc3ca9fb729f66c0f36de0f956fc3c5d1dd5b354adf73bc01ed77a9556df35b4fad4d0aa18ca20c3771de857007e65dd322ffe3cb3678e62c6735b614d40b94f4818c5f62de071d16ea8ba5fa0d725eb6f15a6cf8eaef3ebe27909de2b6ea5d72b1ce2af10ca4c2ca92bfb3bcd5604ff97eda6eab3dfb0397a87b9abedb99dcc8bbfa2206bf76e1bbc978c5ab878de94e9717fbf85e7ebf8784a713f475ffb1cd53d93677ffb2c3c31d6bd6bd473cfbdf1d73dd57e74d1eb92f5ab7df4df8f76aa7939ee7bd27e7431ea5c08650696d495fd0f683f6c6d85eb7d53cec9cd7db34550d79e095789b69bcf84bed67629f71194c736a742ffe2fe59017575d52e46dd63c276d16cbb5d6a6f3e97347d17832e1f916a667b4e813a565ab82b09b8311eb3b99fc9ba6dcfc82a0d1dd934c36dfd9145c7be16eebe04dc8cfb755f434736cd0eb65f0fb2700f22e066dcaf07193ab26976b0fd7ab0857b300137e37e3dd8d0914db383edd7432cdc4308b819f7eb21868e6c9a1d6cbf1e6ae11e4ac0cdb85f0f357464d3ec60fbf5300bf730026ec6fd7a98a1239b6607dbaf875bb887137033eed7c383fa3ab26976b0fdbacac25d45c0cdb85f57193ab26976b0fdbadac25d4dc0cdb85f571b3ab26976b0fdbac6c25d43c0cdb85fd7183ab26976b0fd7ab4857b340137e37eddd87efbacfb75ad85bb96809b71bfae357464d3ec60fbf5040bf704026ec6fd7a82a1239b6607dbaf275ab827127033eed7130d1dd934b3edd78ede25ccf8ddc68f9dea931e63fae30c783e041e1731e5280e4a1df57349f54ddd6b68f5b1a1158eddb10ff473d017a6c16f12883fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfcccf85d467cbe22e53e2261141b3e9372719f5fd5fd42bd2e597fab300d3cb6ceefbed8fd96951618fe92c021fe0aa1cc89a7d595bd41b31505076e371c8b1bb7e59ed8eb90de9666fccbbcf82b82faec051e07efe7a778f6193cfb2c5ae07ba7f1f82e1be946e3b252f5fd9dc383baedbcc7a80f6afa41ecfeeb6b5a6068fa8163df89a0fef614069c9290471e17cf861dd533d516ec36ea646a5c0c653a413d773ba86701f89575cbfc6ee091a905f0b88ac1c0e0092cfac85449c633958c673419cf99643c43c9788e27e3b98e8ce770329e8bc9781e22e32927e39940c633928ce734329e5bc8788e22e3b98a8ce742329e42329e7e643cd3c8787a93f1dc4dc6733619cf30329ef3c9784e24e3b9818c2741c6732919cf23643c65643c93c8784691f17424e3b98d8ce718329e6bc8785a93f124c978ee27e3e949c6732e19cf38329e73c8788693f19c4cc67313194f31194f3b329ecbc9781e25e3a920e3b9808c670a19cf5d643c6790f1dc4ec6534ac6731c19cfb5643c5dc8782e22e36943c6f320194f77329e5a329e2a329e53c9780691f19c47c6732419cf95643c2dc978fa92f1dc4bc6d3878c670c194f67329eb3c878ee20e339818ce77a329eb6643c9790f1ec25e379988ca71b19cf44329e6a329efd643c25643c83c9788e26e3b99a8ca715194f7f329efbc8787a91f18c25e3e944c6732719cf49643c3792f11c41c65344c6731919cf74329eae643c93c9786ac8784e27e31942c6732c19cf40329ec3c8780690f13c40c6d3838c673c19cf08329e53c8786e26e3694fc6d3818ce70a329e02029e4470e0b79812f0ff7d60936f067d08b61696f5c9736a29af8e8b8b3b1eb8ee1696757f6061409d76415d923a5ffacda6944ee82b09f3e2af08383e20e1b9828ca703194f7b329e9bc9784e21e31941c6339e8ca70719cf03643c03c8780e23e31948c6732c19cf10329ed3c9786ac8782693f17425e3994ec67319194f1119cf11643c3792f19c44c67327194f27329eb1643cbdc878ee23e3e94fc6d38a8ce76a329ea3c9780693f19490f1ec27e3a926e39948c6d38d8ce761329ebd643c9790f1b425e3b99e8ce704329e3bc878ce22e3e94cc633868ca70f19cfbd643c7dc9785a92f15c49c6732419cf79643c83c8784e25e3a922e3a925e3e94ec6f320194f1b329e8bc878ba90f15c4bc6731c194f2919cfed643c6790f1dc45c633858ce702329e0a329e47c9782e27e36947c6534cc6731319cfc9643cc3c978ce21e31947c6732e194f4f329efbc97892643cadc978ae21e339868ce736329e8e643ca3c8782691f19491f13c42c67329194f828ce706329e13c978ce27e31946c6733619cfdd643cbdc978a691f1f423e32924e3b9908ce72a329ea3c8786e21e3398d8c672419cf04329e72329e87c8782e26e3399c8ce73a329ee3c9788692f19c49c6339a8c672a194f25194f0b8307ffafde0ddbabf3f2eda042f8ff24ddb9bcbd5e97949167c4ea5ec5fb864dd577a7a3fabe1fd44d4998df09f515f6f781e77d473cbb0c1ed37711e42b41b31d864d316e77c4b8c36094f9edc028faed009e1d8e78761a3ca6ef22c8f705cdde336c8a719b23c6f70c4699df068ca2df7bc0f39e239eed068fe9bb08f28340b3ad864d316e71c4b8d56094f92dc028fa6d059ead8e78b6193ca6ef22c80f06cdde356c8a71b323c6770d4699df0c8ca2dfbbc0f3ae239e2d068fe9bb08f24340b34d864d316e74c4b8c96094f98dc028fa6d029e4d8e78361b3ca6ef22c80f05cd361836c5b8de11e3068351e6d703a3e8b701783638e2d968f098be8b203f0c345b67d814e35a478ceb0c46995f0b8ca2df3ae059e78867bdc163fa2e82fc70d06c8d61538cab1d31ae3118657e35308a7e6b80678d239eb5068fe9bb08f255a0d92ac3a618573a625c6530cafc4a6014fd5601cf2a473cab0d1ed37711e4ab41b315864d312e77c4b8c26094f9e5c028faad009e158e78561a3ca6ef22c8d78066ef1836c5f8b623c6770c46997f1b1845bf7780e71d473ccb0d1ed37711e4478366cb0c9b625cea887199c128f34b8151f45b063ccb1cf1bc6df098be8b205f0b9a2d316c8a71b123c62506a3cc2f0646d16f09f02c71c4b3d4e0317d17417e0268f69661538c8b1c31be6530cafc226014fdde029eb71cf12c36784cdf45909f089abd69d814e31b8e18df341865fe0d6014fdde049e371df12c32784cdf4590bf096cc2db076cafeb7c6fb0bda6f3bdc0f6aacef704db2b3adf036c2feb7c77b0bda4f3e5607b51e7bb81ed059d2f03dbf33adf156ccfe97c3fb03dabf3fdc1b650e793605ba0f303c0365fe72f02db3c9dbf186c7375fe12b0cdd1f94bc1365be72f03db2c9dbf1c6c3375fe0ab0cdd0f92bc1f68cce5f05b6a775fe6ab03da5f3d780ed499d1f08b62774fe5ab03daef3d781ed319dbf1e6cf7e8fc0d60bb55e76f04dbc73a7f33d83ed1f95bc0f6a9cedf06b66fe9fced60fbb6cedf01b6efe8fc9d60fbaece8f00dbf7747e24d8beaff3a3c0f6039dbf0b6c3fd4f93160fb91cedf0db61febfc58b0fd44e7c781eda73a3f1e6c3fd3f94960fbb9ce4f06db2f747e0ad87ea9f353c1f62b9dbf176c9fe9fc34b0fd5ae7ef03db6f74fe7eb0fd56e71f00dbef74fe41b0fd5ee71f02dbe73aff30d8bed0f947c0f6079d9f0eb62f75fe51b0fd51e7a55d53edec9f74be2488b79dfd2aa89b4ac0b7f85365feacf3ad8d32b26c2194395b772854cf38d4bb4bd20e4bbbac6cd20ebf0e3669875f039bb4c3af824ddae157c026edf0cb609376f825b0493bfc22d8a41d7e016cd20e3f0f3669879f039bb4c3cf822da9f30bc126edf002b0493b3c1f6cd20ecf039bb4c373c126edf01cb0493b3c1b6cd20ecf029bb4c333c126edf00cb0493bfc0cd8a41d7e1a6cd20e3f053669879f049bb4c34f804ddae1c7c126edf063609376f81eb0493b7c2bd8647ff90a6cd2367f0c36699b3f019bb4cd9f824ddae66f814ddae66f834ddae6ef804ddae6ef824ddae6ef814ddae6ef834ddae61f804ddae61f824ddae61f814ddae61f834ddae69f806dbcceff146cd236ff0c6cd236ff1c6cd236ff026cd236ff126cd236ff0a6cd2367f0636699b7f0d36699b7f0336699b7f0b36699b7f0736699b7f0f36699b3f079bb4cd5f804ddae63f80ed519d97b6ba0dd8e459b19a4abfe184e3f0b4005fc2920ce26dfb714a421eeb2e532519cf1c329ed1643c2f93f19c49c633948ce778329ec3c978de24e39940c6b3908c671919cf52329e37c8784e23e3d940c6b39e8ce728329ef7c9787692f15c48c65348c6338b8ce745329eb3c9788691f19c4fc67322194f828c673e19cf12329ec5643caf91f17424e35947c6b3968ce718329e1d643cdbc9785a93f17c45c633838ce75c329ee7c978ce21e3194ec67332194f31194f3b329e0a329e0bc878e692f1bc45c6b3888ce715329e33c878d690f1ac26e32925e3398e8ce73d329e6d643c5dc878da90f13c4dc6534bc6f32c194f1519cfa9643c83c878ce23e339928ca725194f5f329e5bc9786693f1bc44c6d3998ce72c329e55643c2bc978be24e339818c672b19cf16329eb6643c7bc9782692f12c20e3a926e3799d8c673f194f0919cf60329ea3c9785a91f17c4cc633938ce705329e15643ccbc9784e22e379978c673319cf11643c45643cf3c8786ac8785e25e3399d8c670819cfb1643c8791f13c43c6f31c19cf3b643c6f93f19c42c6b3898c6723194f7b329e0e643cbbc9787691f11410f0248023009bfcbf25d8e43b3cfbc1f685ceef059b7cc3e74db07daef38f82ed618bad85854f18a6834dde95fd026c727fe611b0c93b139f834dce1bc4bf9a5fd9f140fe16b08cf86969e1477f9f5bb8248fdb5b964906f16e6ff4950cecdfbc2b30180f35cf2e329edd643c1dc878da93f16c24e3d944c6730a19cfdb643cef90f13c47c6f30c19cf61643cc792f10c21e3399d8ce755329e1a329e79643c45643c4790f16c26e379978ce724329ee5643c2bc8785e20e39949c6f331194f2b329ea3c9780693f19490f1ec27e3799d8ca79a8c670119cf44329ebd643c6dc978b690f16c25e339818ce74b329e95643cabc878ce22e3e94cc6f31219cf6c329e5bc978fa92f1b424e339928ce73c329e41643ca792f15491f13c4bc6534bc6f334194f1b329e2e643cdbc878de23e3398e8ca7948c673519cf1a329e33c8785e21e35944c6f31619cf5c329e0bc8782ac878da91f11493f19c4cc6339c8ce71c329ee7c978ce25e39941c6f315194f6b329eed643c3bc8788e21e3594bc6b38e8ca72319cf6b643c8bc9789690f1cc27e34990f19c48c6733e19cf30329eb3c9785e24e39945c65348c6732119cf4e329ef7c9788e22e3594fc6b3818ce734329e37c8789692f12c23e35948c633818ce74d329ec3c9788e27e3194ac6732619cfcb643ca3c978e690f15492f1b4b0f0ec77c423df8a9175cbfcfe66ee7ba7e17b679ef8de6ef8de9e27beb719beb7e589ef2d86ef2d79e27bb3e17b739ef8de68f8de9827bed71bbed7e789efb586efb579e27bb5e17b759ef85e69f85e9927be971bbe97e789efb70ddf6fe789efa586efa579e27bb1e17b719ef85e64f85e9427be99afbf553f5ce9abbc5bff26e0ff15c0f8a623c6fd06a3ccbf098c62c3ef515738e289ba76af20f0adb4907b59f2cc3301ffaf04465731556130cabc2da676024fa5239ea87b0e9504be9516f22eb6f4a94cc0ff71fc655731556930cabc2da6b6034f5f473c51f74afa12f8565ac8bbcff2ce5f02fe8fe3adbb8aa9be06a3ccdb626a1bf00c72c413758f6710816fa5857c2b4cbe499380ffe3f88cae626a90c128f3b698c2f173073be289ba373598c0b7d242beb52bdfbc4cc0ff71fc26573135d86094795b4ce1f871431cf144dd531b42e05b6921cf82e51bed09f8ff5060741553430c4699b7c5148e7733d4114fd4bdc0a104be9516c3745efa5825e0ffc380d1554c0d351865de1653eb816798239ea87b98c3087c2b2d86ebbcbcc39180ff0f0746573135cc6094795b4cad059ee18e78a2eebd0e27f0adb4a8d27979a73f01ffaf0246573135dc6094795b4cad069e2a473c51f78cab087c2b2daa755ebe399780ffe3f8efc31d3156198c323f1c18c5b61278aa1df144ddebae26f0adb4906ffbafd0bf09f83f8ec7ea2aa6aa0d4699b7c5148e075de38827ea1e7d0d816fa5c5689d97316112f0ffd1c0e82aa66a0c4699b7c5148e5f39da114fd4b385d104be9516f26dae65fa3701ffaf0546573135da6094795b4c2d059e5a473c8b0d9ec5162d0e956fa585f4e55ea27f13f0ff09c0e82aa66a0d4699b7c5d462e099e08827ea59ce0402df4a0bf9b6f65bfa3701ff9f088cae626a82c128f3b6985a043c131df1443d839a9805df51cf53b2e13bead940367c47dde7ce86efa87bb6d9f01d75ff311bbea3eea565c377d47da16cf88ebac7910ddf51d7ebd9f01d75ed990ddf51d751d9f01d754d900ddf51e7b7d9f01d75ae960ddf51e71dbe3df7ed79dcbe0fe5b943beb6e787f2187a288f25fedac05f1b64cbb73f96f86b836cf9ced76b03df9e67bf3d97ebaf8220fa7aec6d47be971abe651e9fb32c75e47bb1e15be6f199c16247be1719be651eef7f2f72e4bbc8f02df38bb2e0bb9de1bb5d167d77307c77b0f876b0bdcb1241fdeb6f61c02909798c81b71c68e1a89ea56abd4bf4babe8e71bdb6fb36e6fe520c6596807eaedb0e59b7d976e42233c645417cbe4b13e043be4ba66cf2fcf875b049bbff1ad8a45fc0ab609363d32b609367522f834d9e59bd04b6d13aff31d8e4d931f6d997e7ffdbc056a5f3d8577cb8ce6f019bf4a5c23ecad21f6e33d8a44f23f68d957ea91bc1267d8bb14fa6f40f5f0f36e9e38f7d01e53d8db56093776db00f9abc2fb51a6c7b751efb3ec9776856826dbaceaf00db1f747e39d81ed2f95bc1f67b9dff0a6cbfd3f945607b50e7df02db6f757e09d81ed0f917c1f61b9d7f016cf7ebfcf360bb4fe7f15db65febfc2eb07da6f3f80ed5349ddf09b65fe93cbebb73afce6f07db2f75fe39b04dd5f967c13645e71782ed173abf006c3fd7f9f9609bacf3f3c0f6339d9f0bb6493a3f076c3fd5f9d9601baff3b3c0f6139d9f09b6713a3f036c6375fe19b0fd58e79f06db8f74fe4bb0ddadf38bc1d642e797824dc68cc47e2a853aff36d85ae93cf63f92effb4f04db613a3f016c6d74be166cf26db8d16093f1a06bc096d0f96ab01da1f3556093f3b3e16093f14f86814dcea58682adbdce0f019b9cf70c069b8c6739086cf20dd2be603b5ae72bc126dfd6af00dbb13abf1f6c32e6d89b6093efd6ed059b8cc5fc08d8e47bd5d3c17692ceff016c320ecb43603b45e77f0fb65375fe7760936f783e08b6129dff2dd83aeafc03603b5de77f03361923eb7eb09da9f3f7814dc60efe35d8e47bcf9f81ad93ce4f03db393aff2bb0c95822f7824dc607fd25d83aebfc54b0c977b8a780ed029dff05d864bcbf9f834dbe313c196c32aedbcfc0d655e72781ad4ce77f0ab66e3a3f1e6ce53aff13b075d7f97160eba1f363c1d653e77f0cb65e3aff23b0f5d6796967d4feacf6f37d7a3e19c4775ea6fc7d18d49f1aba361006e489f35cbb1878d0d79ed8eb5e963aaf97fdbe855eafc4d01ef0bd3b76dfe96b8a0ff4ba0af57a771bbe0ba1cc39ba7150cbc931bfa55e6eafb11cdec79275cb3217827d97b1eef6babe1f38aaef6e8349b851072973be6652c7c61fe87c1b582646b6d4f5b1c45a001ae29484bc30b8d1aaac14cf7b1bc3f301f0ec899d277dbdee222670df8afb7addbc8f6bc65a3194d90dfaed72a01feeebb26e99177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f99915cf3e9dc7e7ca526e1f09a3d8f6008f8bfbfcf81c56d6af9eebec3aadceef9ed8fdd67fbed74aafb7d4a8732194f91a9e39edd5f922f8bf6cb7a86de9e0396183db52fc15417df059d03e473c7b0c9e3d162d245f129befb2916e342e2b55fd56d433f6bd86aefb2c9abada5ff7e87515189ae2fefaa1c183cf468b80f723fd9b80f57c047570b08f371817e20ff7a53d6093fc87c0e8623be3b144da03791e8ecfa6a5ccaf8ce7e2f16ffbb25297edc6fb50a76470607c174299df41dbf7b9ce63df907da0db3f2cff97a9a1e7d4a29faaf38ef8eb9cdabedb8133097ed0f77bc01a93ef7aefd014e8247ec45e08f9bf437f0e29277a88d6c28ee39523bbb9dc87c672c55066a7a5fec920defaef30787618cc6a9b7c0971f60f38febb6a937646687421682465f680467b1df1ec31788443fca932b2fd5b1b6564d94228f3bfa08d527591765eea897d5bf018e0ea3826be64dd326f3b37fe0018cd3aaaf818786c1def9ed87973abffd76125e95f6cd7e3eaff25eb6eaf97158ec0587f29ac5fb85a07d1c796ffd9be2575eb77d9bf6caf516761419da54cbb92f4af8ab3cb743e9373fd4375dd1675aebfd3014f22a87fedada6868eef788c79df018fa37a96da8e5dbb8c3a1543994e504f07e7310dbe0bbc037cbbd8e6a8859c43ed36b42884321d4bd2bfd27644e988d7aa1f64a52e65d6f3c1524b5da44ca792babab4017b9c4c2eb7db7b5027b5de3d96ba4a99f34bea74e9a2f309d84e78dfa4afe5ff3235d41ee0583c5be3af736afb6e01ce24f841dfef026b4cbeeb7d0b44cef7c58fd80b215f59525756ca891ea2b5b0ab7d44def9437673b9ddc672c550669ba5fec920defa6f3578b61acc6a9b742da9cb4b1cb96c37b74568540a1a4919bc7f2cc7767cefce76dcdfe3883beab8bf0718cd7613cf5d5cb2ed35d8cc7ba8b6f3412983e76452e6ea92f4af6a671396b2e6bd6117f731f11dd400ea111875950963c0c1b561395e3b493b257eba807d8fce8bce5d0ced0aa1cca092f4afc3f36eebbd4bf3fa0eaf2984dbdcb7f0dd8f212575dc3876e21efd5b04b64ff4afa3ebb472db3d43e1b0dd331c5e52c78ecb0ad7c796ba98d7c82d8203efa97f6d94c5fb6e0d2d67e6cd712895be9f18e56c7ef09a27b67735ba969622538bc07ebfe04383bd203870cc4dd90f30e6ccfb285d8cf5e07d94da92f4afb4496659b5edfffde83a7d643b8a76d89e604c7e088c499d2ffd6653575bfd655efc29c68f8c3ab869bbd2ef2b65721f782ff0b868db1db5d1a5788c6d13db7a7b57d98eff1f1a5a65f179adf5986f3e736f63e4e3f15d566dbbff64d362b785c7d57394282d765b7cc7a7458f91b6e3874d8b5d169e5d59d66297c5778c5ad4e07dcf86b478dfc2e3e25e54435abc6ff11d9f163d4b1b7aae815aecb4f0b8baf710a585f8cb94791701731b231f8feff22adb7d329b163b2c3caeae9ba3b4d861f11d9f165d7be03dba86b4d86ee189fffe5cc35a6cb7f88e4f8b5ebdf11e5e435abc67e171f54c374a8bf72cbe638c8b51b67b39362db65978b665598b6d16df319e1ff6b0dd6bb369b1d5c2e3e0be6b835a6cb5f88e518b1178dfb5212db65878b664598b2d16dff16951d5dd764fd8a6c5bb161e57f784a3b478d7e23b3e2d46f452be3737428bcd169ecd59d662b3c5778cd750a9b8d8d4082d3659783665598b4d16dff169519d3ad7dad8082d365a783666598b8d16dff169519a3aa66e6884161b2c3c1bb2acc5068bef18e322753db9be115aacb7f0accfb216eb2dbe633c8ea4e2625d23b45867e15997652dd6597cc7a7454deafed3da4668b1d6c2b336cb5aacb5f88ef19e4b2a2ed634428b35169e3559d6628dc5777c5a744b1d535737428bd5169ed559d662b5c5777c5a8c4a3d135bd5082d5659785665598b5516df319e77a6da8b958dd062a585676596b55869f11de37967eafec58a4668b1c2c2b322cb5aacb0f88eb1ed4c9d772e6f8416cb2d3ccbb3acc5728bef18cf3b535abcd3082ddeb1f0bc93652ddeb1f88ef1bc33751c79bb115abc6de17135064a94166f5b7cc71817a9b6735923b45866e15996652d96597cc7785f2bd5762e6d84164b2d3caec66b88d262a9c5778cd723a97b7c4b1aa1c5120bcf922c6bb1c4e23bc66745a973f0c58dd062b185677196b5580cbef7c6ee3bdd9f5b7c485fac0b0c2d0aa1cca91dd3bfd2172b4a475907f62bc3babc157b5dd2fdca1645d4e52da88b943913ead22670324651b9a3baa662e64da8935aef4796ba4a99733bd6e9d259e713b04d3e06ddfa58fe2f5381319f84bce8a7eafc7afc754ec5ea6bc099043fe8fb55608dc97757f45da093f8117b21e47b77ac2b2be5440fd15ad8d53ef286ce23bbb9dc6263b96228f386a5fec920defabf6ef0bc6e30a7de7b8038933872d376a599de88d0e802d048ca609fbd8f1cf1987d088543fca932b2fd5b1b65b00fa594b908da28ec572af54c0407f69b74d49675457659b7cc8bbf62b0ed0546b38e2a3e3e83be9f3256848c23a16c322e4437584f4fc3a6eadacb515dc597ac5be67b01a38c53d133fb8c658d65ec61302a9e3e0e34c3b137646ae878d107787a3be07154cfd471a8c2a8532fa34ec55006df6dac7050cf02f02beb96f90af0ed629ba316724c3ed7d0a210ca0c37ce1fa3749475a8f8ed69a94b3fc77591754bbbd42f0bbe2b0ddfdd0ddf89a0fe760e8286f7af4a60eeeb8059adb77ffceb2dc5f3368929f1d31dea34003488ab4eb82e39cf1b60685b08f9a9709e27e5a4ac1cbf845dc5b26c4b643797eb632c570c65fa59ea9f0ce2ad7f7f83a7bfc1acb6c9dd706ee7607f48c5403f8343e6bb8376fd23b4eb07da49193cfef570a45d5f8347e67b008f9ce354804dce15843f01ffef96056eb3ddabb0708b0dc789eb6161ec1e3f63ea5ca787c128f3dd81516c7d81a7d29166e6b63ed7d0078fcbad8d32b26c21949905c7c684a5acdaef3a15d4d5aba5b6c7f6ee986ed35b3bd00bc7690c409fc0d03000bda49ead1cf0b40deac66a9c3ca576d288bb46dd382afde851d00a0d4cfc2db054a305d830dfd2620b82fa435216824d86a46c05b616862c3814a6949721ed5cc8857ac8ba0b0dce36c012a76f1cce53a68642e730e07111ca2a7464484f1d3ab74e1a336514c6472b83b329b1a3fed7b2817251eb72b51dcc7d2209f3660c163af2df12ea9b8479f1a7b68d0cad3a61c4c87b064cba6beab851e3a74c46a1cc1d1bf30541fd0d60fe4609ee6aa7c300c00a63e3d0caa8173618f23fd9306de3e72cc731734d6d02f027535bd0ed7007baa9f5cbd8b723478c1d7bfdd4aab163465e3675fcc829636ac7e3d66c632817b5a5e5ffadc1666be2b1ac9ab0d9c2650fb3d86c138e32dc066c72e43a1c6cc2d3166c2d212fe5cd2de3245c3bc1fa659752ff53e2b4d2153f2ca80b01391cab7655edbfea544e7d42569d0aa9a18dd5e6544317ab3b866a6862f5153b35f4b01a6a580d2d7c62901e3a580d157c4a901e0a587deda224480fed7b7a901ebaf7cc203d34efd9c0f76d603e27489f76a9a1753b07e9a173d5adcb2e41fa336feadd7a75faae6e0ba8535e7589a74e3fd569a7babc50b72fd4ad2c754aa74e97d5a9a03a7d539723fdb5d603c27451982e0ed32561ba344c9785e9f2305d11a62bc3745598ae0ed335611a18a66bc3745d98ae0fd30d61ba314c3785e9e6203dbcf32d417af87535fcf36d417a68e8db83f4b0d17704e921a5ef0cd2c34d8f08d243518f0cd2c3548f0ad24358df15a487b71e13a487c9bd27480fb5ab86e01d1fa487c356c364abe1b3d530bf6a486035a4b01a6a580d4bac8630564320aba1911f08d2432eab219b1f0ed2c33e4f0fd3a3617a2c4c8f87e989303d19a6a782f4f0e06ad8f019417a987135fcf8ec203d5cf9dc203dbcb91af65c0d87ae864957c3a7ab61d5d530ef6af877352cfc4b617a394caf04e94712ea518c7a44a16effabc760ea16f55b41fad6f99220fd885b3df2575d20549710d545664590ee42a5ba94a92e76aacba1ea82a9baa4aa2ebaaacbb2eac2adbab4ab2efeea9507f50a887a2546bd22a45e9952af90a957ead42b86ea3551f5daa57a8d58bd56bd2748df16df17a41f95aadbe1ead180ba65ae6edf7f1aa66f05e998fc4e98be1ba6ef85e9fb61fa41987e18a4873556c31dabe192d5d0ca6a18663564b31aca590d05ad868dfe2c480f3dad86aefe6d901e12fbf761fa3c4c5f04e9e1b5bf0cd31fc3f45598fe14a63f87e92f61fa6b98fe16a67f09d3bf86e9dfc2f4f730fd234cff0cea86d9c686e444ddfae82b9860c49429a3c64d985232a5b664dcd4b153c64c187b7fc9b431534697d4de3b6a52cdd8da69b8f0b7f5c23246f880499346dc5f32667cf5a8fb4a6aa74e29a9ad29a9aa9d3abebade41fc2f7aa1930ff438a2ba3adad97f7e13d2ffdb44a787eb7651465fbfb2e1ba1dd1b209821cd994857ab46c5a8526e923985ceade943e0f2e993cb6764a4969c9f8f06f78e0ad9d36aaba4b09fe6f7228f2e4292593a78c9834a5a46652edb892ae5d70bd8fb46d4225feabad1b98b34e6c9a389df477969a1462bf3cad090afcc7694d236d5df20d48db9634cd694949136a78765316baaa8984379744ca32796ad5944923464e895ef8b66fb2f09d4da9e6f82656f3948e4d70764653161ad0b169847736c5d9cc0c9c05ff0d9c7a335e8c5506009b2d6c6f00000028511f8b08000000000000ffed9d77741cc795ee7b901846000892600e50a299000e06194c60ce9428c9ca8120098ab4488222a16459966449ce3967cb692de79cd7da68efae77bdebb5d772f63adb92d3fbe71dbff3f61c9fadeaa96b7c28768f31a3bee06dcced732ea6fa4e4ddf5f7d7dbbbaa7aaa791090acb1f8c655cb9dad8c5c1b90bbd3fe05e734f6f694f705b394ece4c4a38ab52c2599d12ce9a9470d6a684b32e259c5352c23935259cd312e4b46c55c1d82569dee90cba26cd984d99a617a440d3fa9469da90024d1b8374f4513352c2d99412ce9929e19c9512ced929e16c4e09e79c9470ce4d09e7bc9470ce4f09e78294702e4c09e7a294702e4e09e79294702e4d09674b4a382f4c09e74529e1bc38259c97a484f3d204395701e732f7fa0cf7badcbdae70af2bdd2b7d66b57b6d756dac71eb6dc6d6583663edde7b79631dc63a8d7579ef751beb31d66baccfbdd7e2deeb37b6d6d83a63eb8d6d30b6d1e9b0c9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd87e639719bbdcd801635718bbd2d855c69e69ec6a63d718bbd6d8751ecbf5c66e3076a3b19b8cdd6cec1663078d0d1a3b64ecb0b123c6868c1d3576abb163c68e1b7b96b1db8c9d3076d2d82963c3c64e1bbbddd81963678d8d18bbc3d89dc6ee3276b7b17b3ccd9e6dec5e63cf31769fc7f95c63f71b7bc0d883c69e67ec21630f1b7bc4d8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab8dbdc6d86b8dbdced8eb8dbdc1d81b8dbdc9d89b8dbdc5d85b8dbdcdb1d081f07663ef30f6a8b1771a7b97b1771b7b8fb1f71afb2b63ef33f698b1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb94b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f1afb6b635f32f6b8b1bf31f6b7c6feced8df1bfb0763ff68eccbc6be62ec9f8cfdb3b17f31f65563ff6aecdf8c7dcdd3fcdf8dfd87b1af1bfb4fe7fb867bfda6ab4be362ff65ec5baefc847bfdb67bfd8e7bfdaef799ef19fbbee7fb81b11f7abe1f19fb6f57feb17bfd897bfda97bfd997bfdb97bfd857bfda57bfd957bfdb57b7dd2bd3ee55e7fe35e7feb5e7fe75e7fef5eed9ceae5cd85f2d46074190812eaa33a8fe6ec9c0a89bf2c18bb582daadd7bf4dae2fc356e9d5e49bb5ab75eebf9ebdc7a9db79da96e7daae76f72eb4d9e7f965b9fe5f99bdd7ab3e79febd6e77afe4bdcfa25e0cf0630e6eafcd657ed5c19f051be5681afd6f9aac157479b03df14e7ab051feddf3af04d73be29e09bee7c53c19775be69a4a5b10b9c6f20482a57728376bbf5496fd7cd433524cf7bd86eb791897746f2bc4376bb4d0cbc363f66ba6dcd80bc99e57c4de09bed7c33c1e7baa03f1f73d637c7f966836faef335836f9ef3cd01df7ce79b0bbe05ce370f7c0b9d6f3ef81639df02f02d76be85e05be27c8bc0b7d4f91683afc5f99680ef42e75b0abe8b9caf057c748fcb85e0bbc4f92e02dfa5ce7731f8a8afbd047c746d78a9f3d97e626a063ee3fcd447859fa1fe197ccba96f06df0aea97c1b792fa64f0ad82d8e45b0dfd0af95a9d8ffa28fb5ebf2b0f04491d13f9f098589bf476cd96ed76d727bfdd70de6e4330aaf500c4590b5a6d74e504ef0d6ac7d819671487fc3550de0575a91ee941e71962b7fdfe3a57de58e473fddee71aa0ceba88f60f04c9b67fbdc7b3de63ae85f6f3e46c475e7376dc4bc9397b0dd4f5738fae792663ceee050e869cedd69c1df75272ce0e415d3ff7e8ba7732e6ecf5c0c190b3833c399bcf69ce16c6c882203af7e8bbcf64ccd963c0917cce7669ce8e7f2939671f84ba7eeed1f7dfc998b3770247f239db33a8d706e35e4aced957405d3ff7682c6632e6ecc3c0c190b343dacf8e7b293967df0675fddca371c1c998b3af068ee473b68f29673b346783c27c671044e71e8d514fc69c7d143892cfd9c33a3e3bfea5e49cfd3cd4f5738fe64b2663ce7ec495ed3cc337dc3cc322f07dd3f916036ff2b97da49329b7f39adb85fb4082203a4769ee6e32e6f6e3ae6cf3f809b8f7807cdf76be0bc1f71de7bb087cdf75be8ba15d0cc7c0a01e03e35e4a3e06be0f75fd5ca679e4c9780c7c1d381872f6b0e6ecb8979273f649a8ebe71eddd3301973f647c0c190b3439ab3e35e4aced93f425d3ff796bbf264cc59baafd45e2ffcd85d2fac04df4f9c6f15f87eea7cabc1f733e76b05dfcf9daf0d7cbf70be35e0fba5f3e5c0f72be76b07dfaf9d2f0fbe279daf037c4f395f27f87ee37c5de0fbadf37583ef77ced703bedf3b5f2ff8fee07c7dce67efc9a37bafbeea7c76df92460341b2fb96eeb1a46dd3faea0988dde8c56e9cc0d84d5eeca688d8ad0cb1b31083968cb73e00e5565e9e5c4330f6f71f146b4df2b13a6cdbdb82f1b77d0df0e418da9e8518e3e1c9014f7bf23ce1bdbef9e4b71beee3364fd32cc46a83767530b42b03b168dbb44ef11ac087fd7747046367f28cf90cc4a26dd37a2730920fcf27745ea7e3c79e0f97654679198ea5f09a88e2d1b3bf88630df8a9ceef678fb2ad746cf5f03e9e5bdb3d1f535e867941b168dbb44ef1eaa13ded13cf981f2f63ce63e4ea2332108bb6edc7c6e3bd75e2351bd77e6d00df79e893f2e5f649f5c03611d72971fb5a4a6c8ef355066250df469ae7c14f75e6b81f24d8be6d07f4bb0cc75fbed4eb37ec0f92cfe37c0e8febf1f074000fc7b1cf74bce6f0bcffa720d95cebf2b46af7b46a803a9da05f17837ec5ae43289e322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb67c6fb2f707e93eaad16c248be3cf0708cf387cf8f72dba2eddb799defc0bc4ef2f316f91cce59d23d862bbc36d7409da732a3757f00f3e9fedc20ce69aee6d56e5cf759d407e7cec572ce21c6cd0347cd5fb624163b7f986bbecddea3669f43d6e6e9ba3a425386fb54c6689af134c5fb1457793c364fe7578fb271ccfd953a17895a5139c9b93dbcc78077bf14fa0fca85aa606cff81e799eec4638f9dc3a4f9f26e2f760dd4f97f99d17d43f7a2d2ff39f4ef79b2757abc6dd3675680bfc7dbf60cf759e2a8f5b6df069fa53aff037deadbab823f6bc671ff07f6cb01b415970128e3bc79f2e7e1c23c7e47093c5dc0c3d1cf305d6fe4f018487a1ebfc7d32aea3a86ea74837e3d0cfa455d8bd23ac55366655666655666655666655666655666655666655666655666655666655666f9ccf85b5162cd42bdbc10c609baf7219ccfa0e7bfd0f6edbcce4bab46e372cfc3d19cd34aafcd3550e76b55a3755fe9caf5c1b9f73bc4ed4b86f9bca2fb92e2d5437b702e88ebf7dc9d1e4f678416546e492c76611e3f798d47e7f13b3c5df3119a721daf38c78a9ae2f1daeef1e0dc687d70eebd2559d8ce44dc3b149717140f8fa54ef051197f1fcdb19ff15ce2dfd743f170fefa31a7ed8c806bdfe7739cfd462fb469203837bf6ba0ce87a1effba82be33d1c78efc8e311efd3526c9e9af46379965dae30efbb163807200ec65e07ac09c56ec7d819671487fc3550fe52d5685daa477a90d6c46e8f117a2618b2fb9f6bf73ed70075fa22da3f1024dbfe7e8fa7df63b6fbe41390678fc3f99fab4fea8bd16805684475f03a88eb9e3cbf8ff4ef6fc4fbf6eabc3a78cd4275be027d54dcfda351f71c729dc7e2ee398cba36ee0246bf8dfe7d9e957e9fd613d05f247d9fd6139043789f56e06d7f256c9fb8ea82f8730bd5f99eb77dff9a9c3e83f781519d1f427fd1e8ee59ac0fcebdfec67ba626e2fb55dc7dd2140faf6bf0d8fe4b6db7ccbd507f204166cc0964c1eb04aaf32b6f9ff5c470af89f8ec53319f25ade83954f8fdc5d7cfead0079f19484487c231dfefb585f2ba0fda4275fe8f770d98fc754be11a30f9b68ebd26a17ea033a2ad54e7ffc2b1f647b8c6a3fd84df3beaaacf7d9f9662d780a49f6df3443f1f18634b783e706df5685dff39bfa475a9cf07eef63e27f1f9c0ff1ff2ac0eee43e7eaabd7c568b41234a23af8db203a8fe0b37ca3ce315cf7f6c79d63a29e4189fd7363f5c4b3f9e36a51d70854873e8bd708b31df30ca7b35fd71f2fa4f36592f70de36f25da202efe56a28d49cf1ce83600eb785d703e63e79862c73d733a3701b1e39e393d11b19bbcd84d13185b3557cd2569cef04ce4f0f767f8cc52bb14bb2e258606f85c550a18ab53c0589302c6da1430d6a580714a0a18a7a680715a0a18a7a780310b8ce7f3dccea04fbe5c7db8f657b16b0d8ccdf0bf4bf2a5feff0ee6ffa552f4da0763337ca70bb5680dc6af057ecfe378f643a9ffeb8518f07f17cc4c01e3ac1430ce4e0163730a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a1897a48071690a185b52c078610a182f4a01e3c52960bc24058c97a68071993226c2b88a97315f2ea3e5e1f89f7f4fe77f8e31f0e4a2ee3965faed49c9ff6f8df9f9a4ede53e370eef2de1fd9f704fefd9761cf78e94fa6cbb62ff6f9589315f2e23d77decf83b9ef1f0e0ef22a37e5bc3c0982f9791ebf72ff81bbdf1f07483665d119a3130e6cb65e4ba57aed47b39f19efeee08cd1818f3e532e27dd509f2849af594c0d30b9af54468c6c0982f9791ebbee42cc4180f4f1f68d61ba1190363be5c46a6dfb6859af595c083bf01eb8bd08c81315f2ea3e559cba4597f093c6b41b3fe08cd2431224fd2cfc9ee8f88c5f19bc152db4e0cc8382d058cd353c088f74970f45fc5ee93e8e7d5275fae3e5cfbabd87d12189be1f731a116f87b88bfa4c57a5e9ea2f74960ec0d4c5ae0ef55fe92161b8087e3f7335988311e1e626880cfcd4c01e3ac1430ce4e0163730a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a1897a48071690a18f1bb2ac3b562d1ef2f1b2679ecb8ef2a933d76dcf792c91e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d63fcca38f91891a725399e1cb61d630d0868fb40044f86a9ed186b9380b61343da1837a680716d0a1855c7c23d88e5305a9ecd4c3c9b4ae0d90c3c5b98783697c0b30578b626cf13e6d496127888a1013eb736058c1b53c0a83aaa8ed6ec927b7a8bea2888310d3a2aa3322aa3329e0fc634f4e1ca988a7ccc97cb6879b625cf136ab6b5049e6da0197dae9d97315f2ea3e5d99e3c4fa8d9b61278b68366db22346360cc97cb68797624cf136ab6bd049e1da0d9f608cd1818f3e5325a9e9dc9f3849aed2881672768b623423306c67cb98c966757f23ca1663b4be0d9059aed8cd08c81315f2ea3e5d99d3c4fa8d9ae1278768366bb22346360cc97cb6879f624cf136ab6bb049e3da0d9ee08cd1818f3e5325a9ebdc9f3849aed2981672f68b627423306c67cb98c96675ff23ca1667b4be0d9079aed8dd04c2ae3da14306e4c0123b38ef972192dcf7e269e7d25f0ec079ecb9878f697c07319f05c9e3c4f98539795c0430c0df0b9b52960dc980246d5517594c4a83a568e8ecaa88cca581ae3400a18755f2ba3544686ef57457f4373d9248fdde8c56eac90d871bfa199ecb135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cd7349b10f241f3b5fea33660e000fc7336f98da99b3dbbdc26deb4f09ea67b5bad2d3ea324fab06a87305e87725837e19884bdba6758a572af333043033c5cedbfe651ab49f626cf4f4b0f1af626a7b5c5f7fd5248f1dd7d74ff6d8717dfd648fad79ae795e09b135cf35cf2b21b6e6b9e6b994d858ae0d46afdbe9f9a7761bcf74e51ab78eace4a73a974f29bcce08f418e288adc7909e2b2a21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad792e2fcf1be0fdaa09e0093c9ea008cf06613cbb85f1ec10c6d32b8c6789309e2e613cf384f1e485f1cc14c6b35518cf34613c2b84f1540be3d9248c27278c67af309ea5c278560ae3992f8c6796309ee9c2786a84f16c16c6b34618cf3e613c7b84f1f40be359268ca74f18cf36613cddc2781608e3e910c6335b18cf2a613c59613c6dc2786a85f1ec14c6d32a8c67b9309efdc278d609e359288ca75918cf05c278ea85f1d409e3592f8c6797309eedc2787a84f12c12c6d3298c678e309ed5c2781a84f1340ae3d9228c678a309ec5c278e60ae399218ca74918cf54613c13f1bca15278320278b2c1b9cf24cbc2fb07c057e57dd6f657edcda3ef5fedfc55f0996b5cb93a62db57838f7e1b7e4dc46751a7aba12d03ae9c7b7a4ba813c61a80758a570f1cd708e139208c67aa309e26613c3384f1cc15c6b35818cf14613c5b84f1340ae36910c6b35a18cf1c613c9dc2781609e3e911c6b35d18cf2e613ceb85f1d409e3a917c67381309e66613c0b85f1ac13c6b35f18cf72613cadc278760ae3a915c6d3268c272b8c6795309ed9c2783a84f12c10c6d32d8c679b309e3e613ccb84f1f40be3d9238c679f309e35c278360be3a911c6335d18cf2c613cf385f1ac14c6b35418cf5e613c39613c9b84f1540be359218c679a309eadc278660ae3c90be399278ca74b18cf12613cbdc2787608e3d92d8c6783309eaa081e86ff7f19f2d0fd6bb46d5a3f202436c37e08ffefe7b54c6dbace6dabd66d97f8295e0dd4b9de5d18d8fbabf0b3c4e5df6f88f7ce5d071a5dc7d416da1f196fff30c7cee37d950130049e3e41040fc7fda84ced1c938709feffd99cd5ea7a4f2b7fdf35409d6b41bfeb19f48bcaed3f1f03ee358dcc9687ce1dc49a857a1b843092ef2a5e9ef0b8dd108c5d8a1db7d7030f471fc6d4cef0f8bac16bd38608dda90ee6ea0d0ced8c3a7668fd06d80f6963b63c9b5c9958b3506f931046f25dc7cb131e5f9b82b14bb1e3eb06e0e1e87f98da191e5f377a6dda14a13bd5c15cbd91a19d51c70eaddf08fb216dcc9667b32b136b16ea6d16c248beeb79793ab3d0665a8a1d5f37020f47ffc3d4cef0f8bac96bd3e608dda90ee6ea4d0ced8c3a7668fd26d80fcaaccc51cc96877e6342ac59a8b7450823f96e60e5e9cc65a1cdb414ebc76e021e8e7e9e49f7b01fbbd96bd39608dda90ee6eacd0ced8c3a7668fde688d82d41b25adc320e2d6e89e0b96582b5a078a5325f9b4266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d5567bba8ceaab3eaac3a27c1ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc72c4167cb43cf8821d62cd4db2a84917c37f2f284bf0bda1a8c5d32defa00946f019e9b18f4616a67780ff941af4d5b2374a73a787c1d646867d4b143eb07613f1c2c81f9e61432abcee5315b1e7a562cb166a1de36218ce4bb899727ecc7b605639762fdd841e0e1e8e799da19f663835e9bb645e84e75f0f81a646867d4b143eb144f9995398ed9f2d0ffb021d62cd4db2e84917cb7b0f2e4c3df376e0fc62ec5fab141e03998384fa11f63d03decc70e796dda1ea13bd5c15c3dc4d0cea86387d60fc17e2885f9e61432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efadf21c49a857a3b843092ef202b4f4738efb02318bb64bcf501281f029ec1c4790af30e0cba87f30e87bd36ed88d09deae0f17598a19d51c70ead1f86fd30d9996f4e21b3e6c6c4306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbb3d39589350bf5760a6124df202f4ff8dc839dc1d8a5d87d3b8781e710833e4ced0cefdb39e2b5696784ee54078faf230ced8c3a7668fd08ec076556e62866cbb3cb9589350bf576096124df215e9eb01fdb158c5d8af563478087a39f676a67d88f0d796dda15a13bd5c15c1d626867d4b143eb43b01f945999a3982dcf6e5726d62cd4db2d84917c877979c27e6c77307629d68f0d010f473fcfd4ceb01f3beab5697784ee540773f528433ba38e1d5a3f0afb419995398ad9f2ec716562cd42bd3d4218c9778497279f8536d352ac1f3b0a3c1cfd3c533bc37eec56af4d7b2274a73a98abb732b433ead8a1f55b613fa48dd9f2ec756562cd42bdbd4218c937c4cb131e5f7b83b14bb1e3eb56e0e1e87f98da191e5fc7bc36ed8dd09dea60ae1e636867d4b143ebc7603fa48dd9f2ec736562cd42bd7d4218c9779497273cbef605639762c7d731e0e1e87f98da191e5fc7bd36ed8bd09dea60ae1e676867d4b143ebc7613fa48dd9f2ec776562cd42bdfd4218c987e78bfd4c3cf51e4f7d8416933176a317bbb142623779b19b2a24b6e6b9e67925c4d63cd73caf84d89ae79ae79510bb52734d35af4ccd33e751f3cc79d43ca39a8bd4fc4fc9c5ee6a0846972a88758ca99db80c4019c7e768e915c6b344184f97309e79c278f2c278660ae399268c6785309e6a613c39613c4b85f1ac14c6335f18cf2c613cd385f1d408e359238ca75f18cf32613c7dc278ba85f12c10c6d3218c67b6309e55c278b2c278da84f1d40ae36915c6b35c18cf3a613c0b85f1340be3b940184fbd309e03c278ea84f1ac17c6d3238c6791309e4e613c7384f1ac16c6d3208ca75118cf14613c8b85f1cc15c63343184f93309ea9c278320278b2c1b9bf47c1df1354838feeefdf0fbe67b9f201f05545c4a0ed1c071f8d9fd2366c7fb3aef95c862af8cc6d115ccf8a8847716e8bf8ec44e88eb106609de2d503c76d4278a60ae36912c6334318cf5c613c8b85f14c11c6d3288ca74118cf6a613c7384f1740ae359248ca74718cf7a613c75c2780e08e3a917c67381309e66613c0b85f1ac13c6b35c184fab309e5a613c6dc278b2c2785609e3992d8ca74318cf02613cddc278fa84f12c13c6d32f8c678d309e1a613cd385f1cc12c6335f18cf4a613c4b85f1e484f1540be359218c679a309e99c278f2c278e609e3e912c6b344184faf309eaa089e034c3c71cf53382020b69dc7a173158d1966e1fd89f81de0018f91d68f0123f9f03ed41c134fdc33287202625b2dd640d92e59781f7fc7c59553398f91d6a3720aef4b5bc3c413f7dc8e3502625b2d68ec92ee01c8c2fbf8bb05ae9c5ae331d27a544e35f1f284ff5ba23518bb14bbd7088f398e7dc8d4ce1c1e7f093e4323f259d4ad9e560d506722ee938feb0f289e322b731cb3e5a1b90b62c5f3d944fcee6d3c8c51e757069eb07f6c0bc62ec5fac763c0c371fe606a67d88f9df0dad416a13bd5c15c3dc1d0cea86387d64f44c46e0992d5e2e438b43819c1737282b5a078a5321f4821b3049d2d0fdddb46ac59a8b75a0823f972bc3c61ffb83a18bb14eb1f4f020fc7f983a99d619f70ca6bd3ea08dda90e1e5fa718da1975ecd0fa29d80fa5309f4821b3ea5c1eb3e5a1316462cd42bdbc1046f21d63e5c9e7b2d0665a8af563a78087a39f67d23decc786bd36e52374a73a787c0d33b433ead8a1f561d80fcaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccca2c9bd9f2d06f1b89350bf53a843092ef242b4f61dea12318bb149b7718069e5389f314e61d18740fe71d4e7b6dea88d09dea60ae9e666867d4b143eba7613f28b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb36c66cb43cfdc26d62cd4eb14c248be53bc3ce1efb63a83b14bb17987d3c0c3312fc3d4ce70dee176af4d9d11ba531dccd5db19da1975ecd0faedb01f945999a3982d0f3ddb8a58b350af4b0823f98659790af3a75dc1d8a5583f763bf070f4f34cba87fdd819af4d5d11ba531dccd5330ced8c3a7668fd0cec8752984fa4905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7cad1d9f2d0ff5c23d62cd4eb16c248bed3ac3c1de1bc437730762936ef70067838e66598740fe71dce7a6dea8ed09deae0f17596a19d51c70ead9f85fd30d9994fa4905973636298353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e39825e486e5e9716562cd42bd1e218ce4bb9d97277cee414f30762976dfce59e039c3a00f533bc3fb7646bc36f544e84e75f0f81a616867d4b143eb23b01f945999a3982d4faf2b136b16eaf50a6124df195e9e7c16da4c4bb17e6c047838fa79a67686fdd81d5e9b7a2374a73a98ab7730b433ead8a1f53b603fa48dd9f2f4b932b166a15e9f1046f2e179b98f89a7dee3a98fd0e27cc5b65af4bbf205ee350beff70323577fd8e731d23ae638f9ea81a79f89a7d1e3698cd0e27cc5b65aac83b25db2f0fe3a60e4caa97e8f91d6a372aa1178d631f134793c4d115a9cafd8568bf5ae3cc3bd66e1fdf5c0c89553eb3c465a8fcaa926e059cfc413d727ad9f80d871c7d744c48ecb958988ad9aabe6aab96acea979e63c6a9e398f9a675473519a335c4785e3bd142300065c06a08cdf1538ae3d99da998bfa3eb6de6b137e1fc33187f3f57d439995398e9969dca233ebc5267d028f879611662d2672dcb4df6b531ac64d8b319f4821b3ea5c1eb38d7d67f2b13bb35e6cd227f07868b993590ba67686fdc15d41b4c614af01ea609edec5d0ce0cc4a56dd3fa5db01f4a613e914266d5b93c661bfbeec463179e278fb1499fc0e3a1e56e662d78da59e80fee09a235a6780d5007f3f41e867666202e6d9bd6ef81fda0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2996dec67271ebb307e8fb1499fc0e3a1e5d9cc5af0b4b3307e7f6f10ad31c56b803ab8cfef65686706e2d2b669fd5ed80fcaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccca2c9bd9c67e4ef2b1c3dfe3606cd227f07868790eb3164ced0cc7efef0ba235a6780d5007f7f97d0cedcc405cda36addf07fb419995398ad9c67e6ee2b10bf379189bf4093c1e5a9ecbac054f3b0bfdc1fd41b4c614af01eae03ebf9fa19d19884bdba6f5fb613f94c27c2285ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece36f60389c7ee08c7ef3136e913783cb43cc0ac054f3b0be3f70f06d11a53bc06a88379fa20433b331097b64deb14af12984fa4905973636298353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e39825e4868dfdbce46387bf67c7d8a44fe0f1d0f23c662d98da19defff25010ad31c56b803a98a70f31b433037169dbb4fe10ec076556e628661bfbe1e463e7b35e6cd227f078687998590ba67686fdc12341b4c614af01eae03e7f84a19d19884bdba6f547603fa48d19f75f26b9d8e17d9b14a3cabd5adff35db91a7c2f70e51af0bdd0956bc1f72257ae03df8b5d790af85e026d23df4b5d7915f85ee6caebc1f772575e07be57b8723ff85ee9ca7de07b952b8f80efd5ae7c07f85ee3ca7782efb5ae7c17f85ee7ca7783eff5ae7c0ff8dee0cacf06df1b5df95ef0bdc9959f03be37bbf27de07b8b2b3f177c6f75e5fbc1f736577e007c6f77e507c1f70e575e06be47237cef74e5e781ef5daefc10f8deedca07c0f71e579e06bef7baf274f0fd1594e9f57dae7c01f81e73e57af0bddf951bc0f701576e04df075d7906f83ee4ca4de0fbb02bcf04df475c7916f83eeacab3c1f731576e06dfc75d790ef83ee1ca73c1f749579e07be4fb9f27cf07dda951780ef33aebc107c9f75e545e0fb9c2b2f06dfe75d7909f8bee0ca4bc1f74557c6fdfbd7aefc30f8a85f79047cd4af3c1f7cd4afbc007cd4afbc107cd4afbc087cd4afbc187cd4afbc047c94772f051fe5ddcbc04779f772f051debd027c9477af041fe5ddabc04779f76af051debd067c9477af051fe5ddebc04779f77af051debd017c94776f041fe5dd9bc04779f766f051debd057c94776f051fe5dddbc04779f776f051debd037c94778f828ff2ee9de0a3bc7b17f85a5cf9dde0bbd095df03be8b5cf9bde0bbd895b19fb9c495df07be4b5df931f0515ff87ef03dc3953f00bee5aefc41f0ad70e50f816fa52b7f187cab5cf923e05bedca1f055fab2b7f0c7c6daefc71f0ad71e54f802fe7ca9f045fbb2b7f0a7c7957fe34f83a5cf933e0eb74e5cf82afcb953f07be6e57fe3cf87a5cf90be0eb75e52f828fcee3d4cfd8e3d91e83a40369647dd4e6b688b6906f2ab4652048f69a8e62d1b669bd0318691fe4279e313f5ec6768fd1f27431688679454bb1ef4c5dc0d3c9c0c3d4cef03b53b7d7a60eaf4d0d50e719d0ce6e867666202e6d9bd6bb2136c73e472d6add76977b5ad4601d7742b3e7ce623ad2366cfee623dad2c7dc16da36f54b7d1310bbc78b9df362637f4c4bb1e3ab07987b1998ed76fb93df6e787cad75dba29ca2383968d33ad020a93661ec8c338a43fe1a282f681ead4bf5480f3a7f11bbcd65da97c8ee7faecbfb5c03d4e98b68ff40906cfbfb3d9e7e8fd9ee93c6e6510e86e321cc813e8f83d673a05d7f8c767da01dd5c1f35f2b9376bd1e0fadb7020f5de374838fae15881fafb3da2680dbeff7ba23b8c9d7038cad118cf9e419c36b9d568f91d6f3c048be5ee0e961d2ccdfd7cb3d7df0bc5ce7d5a1cfd6409d35706ecc46d4b5c7ddb2cc68bbe83bf89f8264fbf43a06bd707c20007d024fc300f4a276d632f04c0f46c708ce8e0c9f19bc75e88aa1c1231940abf130f13513d18c2af061b93ac2170463874270489686427048b6ca93058760a8befd2a659b45c30d43278f8f3cf3d4d0a9c367ee393d327464eff0ad485debd123695c0b90147db44c0d46076d0682642763eabc58c592672abc4e499ea79da99de1496f9ad7a63aaf4d0d50a716de9bc6d0ce0cc4a56dd3fab488d8097644a116d3c7a1c5f4089ee913ac050e7c930f8f547a1f274faabcb6e0118d6df2f33cd10651c065b0fd8c83b3efd983bdd635664a30bab3a9f7b423aaf6aad6ee083b426acf5c7604d476417684d38e68da939a1db1b423947644d28e40da11473bc2684714ed08a21d31b423842d416104d08ef8d9113e3ba27729b07d1578edb76a7b86b423727604ce8eb8d92b2b7b0560af46ecd5b7bd52b4a31ff60ac17eb3b4a30cf66c6baf64ec59da9e59ed95a2bd42b457f4f60ad7ce526d30b6d169bdc9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd87e639719bb3c288cae5f61ec4a6357197ba6b1ab8d5d63ec5a63d719bbded80dc66e347693b19b8ddd62eca0b14163878c1d3676c4d890b1a3c66e3576ccd87163cf32765b50b843e7a4b153c6868d9d3676bbb133c6ce068519333b436667c4ec0c989df1b2335c7646cbce60d9192b3b436567a4ec0cd403416186c9ce14d999213b2b606701eca8bf1de57f615018c5b7a3f62f090aa3f27614de8ebadb51763baa6e47d1eda8b91d25b7a3e27614dc8e7adb516e3baa6d47b1eda8b51da5b6a3d27614da8e3adb51e64783c228b21d35b6a3c47654d88e02db515f3bcafb585018c5b5a3b67694d68ecada51583bea6a4759eda8aa1d45b5a3a67694d48e8ada51503bea694739eda8a61dc5b4a3967694d28e4a7ec9d8e3c6fec6d8df1afb3b637f6fec1f8cfda3b12f1bfb8ab17f32f6cfc6fe2528e4e5bf1afb37635f33f6efc6fec3d8d78dfda7b16f18fba6b1ff32f62d634f18fbb6b1ef18fbaeb1ef19fbbeb11f18fba1b11f19fb6f633f36f613633f35f633633f37f60b63bf34f62b63bf36f6a4b1a78cfdc6d86f8dfdced8ef8dfd21189dddc04ee48f6e8546da074746864e9e1e6919196e3979c78991e3a74fdcd372d7f191632dc3770e9d397a62f82efcf0fb5cb745d3089bce9c19bca7e5f8a9234377b70cdf31d2327cb4e5d0f01da78e9cc50f7dd97d68d1b911078f1c890ff6adaaa741fadd3283fed27d8e266876156fdb93e508f287723e34abbabc065de6ce3af4edfdcac2d56ecbd913c3232db99653e6efe009f399a1236d2df8de5923f2d99196b3238367465a8e9e193ed9d2de86dbbd6e5a198da8692ee3436dcde36f79f0bfd4e28b812d0a0400", "privateFunctions": [ { "selector": { @@ -37,8 +37,8 @@ exports[`ContractClass creates a contract class from a contract compilation arti "isInternal": false } ], - "id": "0x03b7c43dab6f954bfa4fbc60d65dedb4135c2a1646d5fafa63542d54d3dc8f69", + "id": "0x0d5471508a654520290ccddd230e9932f649fcd6a848e33437e91fa5d7b1c8a1", "privateFunctionsRoot": "0x2dc1f38d7be98a8e72227d6f8aec393c60db813a1819c9c86b02a00cc18f6687", - "publicBytecodeCommitment": "0x049a5136226b013414c491bb452f8edffae98b96b6d4e95d56824303bf23f6cd" + "publicBytecodeCommitment": "0x25588413d594c7c368a2c7b5f1b6141f4d40d6e1ea912e59182f89982e0734e5" }" `; diff --git a/yarn-project/protocol-contracts/src/gas-token/__snapshots__/index.test.ts.snap b/yarn-project/protocol-contracts/src/gas-token/__snapshots__/index.test.ts.snap index 7209a27a977b..5c351a8e56a1 100644 --- a/yarn-project/protocol-contracts/src/gas-token/__snapshots__/index.test.ts.snap +++ b/yarn-project/protocol-contracts/src/gas-token/__snapshots__/index.test.ts.snap @@ -2,10 +2,10 @@ exports[`GasToken returns canonical protocol contract 1`] = ` { - "address": AztecAddress<0x1193c2d1b6ade061bb48cc31f1e74e036139347138b10490e3d2c66ea4a682c3>, + "address": AztecAddress<0x1fc44c2d7ba8a41eceda17b28f1f6e07c92b2998c04070d29f42c5e2b62d57c1>, "instance": { - "address": AztecAddress<0x1193c2d1b6ade061bb48cc31f1e74e036139347138b10490e3d2c66ea4a682c3>, - "contractClassId": Fr<0x2785d55720db7d683c7ac34166a205943ed2e9551d7e85505a3da87f01d9a8d8>, + "address": AztecAddress<0x1fc44c2d7ba8a41eceda17b28f1f6e07c92b2998c04070d29f42c5e2b62d57c1>, + "contractClassId": Fr<0x2de5b9f575648d9c59866db2d6433498be5977ec509f0cc4a22beee66e9969ca>, "deployer": AztecAddress<0x0000000000000000000000000000000000000000000000000000000000000000>, "initializationHash": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, "portalContractAddress": EthAddress<0x0000000000000000000000000000000000000000>, @@ -19,10 +19,10 @@ exports[`GasToken returns canonical protocol contract 1`] = ` exports[`GasToken returns canonical protocol contract 2`] = ` { "artifactHash": Fr<0x18af4bb0ca6fe07d0ae6da493b2c7b1af038ee904721dbba9b6e571e6d495726>, - "id": Fr<0x2785d55720db7d683c7ac34166a205943ed2e9551d7e85505a3da87f01d9a8d8>, + "id": Fr<0x2de5b9f575648d9c59866db2d6433498be5977ec509f0cc4a22beee66e9969ca>, "privateFunctions": [], "privateFunctionsRoot": Fr<0x15d28cad4c0736decea8997cb324cf0a0e0602f4d74472cd977bce2c8dd9923f>, - "publicBytecodeCommitment": Fr<0x23fec2b6523dd709bcd24045e212ef3a6bf2a8140b1fc294eb50d185cf1e38a2>, + "publicBytecodeCommitment": Fr<0x098dabd738e3d4e0d3eb369ec05f14d94974dec87919679d0234c44210daf6db>, "version": 1, } `;